YOLOv8-seg实现人体部位解析分割
数据集收集
人体部位解析任务是一项计算机视觉领域的重要研究课题,其目标是通过图像处理和机器学习算法来识别和定位人体图像中的各个部位。这项任务在医疗诊断、人体姿态估计、虚拟试衣、安防监控等多个领域具有广泛的应用前景。
在医疗领域,通过精确解析人体部位,医生可以更高效地进行诊断和治疗。例如,自动识别和标记X光片中的骨骼部位,有助于快速发现骨折或其他异常情况。在运动与康复中,人体部位解析可以用于监控运动员的姿态和动作,提供科学的训练建议,减少运动伤害的发生。
在技术实现方面,人体部位解析通常依赖于深度学习算法,特别是卷积神经网络(CNN)。这些算法通过大规模的训练数据进行学习,能够识别图像中的复杂特征。为了提高精度和鲁棒性,研究人员常结合多种技术手段,如多尺度特征提取、人体模型拟合以及姿态估计等。
此外,随着三维成像技术的发展,三维人体部位解析也成为一个研究热点。通过利用深度相机或多视角摄像头获取的三维数据,解析算法能够提供更加精确和全面的解析结果。
总的来说,人体部位解析任务的研究不仅推动了计算机视觉技术的发展,也为多个应用领域带来了新的可能性和解决方案。随着技术的不断进步和数据资源的丰富,相信这项技术将在未来发挥更加重要的作用。
1. LV-MHP-v1
单人人体解析。MHP v1.0包括4980张图片,平均每张图包括3人,训练集3000张,验证集1000张,测试集980张,共标注19个类别:“background”, “hat”, “hair”, “sunglasses”, “upper clothes”, “skirt”, “pants”, “dress”, “belt”, “left shoe”, “right shoe”, “face”, “left leg”, “right leg”, “left arm”, “right arm”, “bag”, “scarf” and “torso skin”,如下图所示:
下载地址:baidu drive (password: cmtp).
2. MHP v2.0
包括25403图片,训练集15403张,验证集5000张,测试集5000张,共标注59个类别: “background”, “cap/hat”, “helmet”, “face”, “hair”, “left-arm”, “right-arm”, “left-hand”, “right-hand”, “protector”, “bikini/bra”, “jacket/windbreaker/hoodie”, “t-shirt”, “polo-shirt”, “sweater”, “singlet”, “torso-skin”, “pants”, “shorts/swim-shorts”, “skirt”, “stockings”, “socks”, “left-boot”, “right-boot”, “left-shoe”, “right-shoe”, “left-highheel”, “right-highheel”, “left-sandal”, “right-sandal”, “left-leg”, “right-leg”, “left-foot”, “right-foot”, “coat”, “dress”, “robe”, “jumpsuit”, “other-full-body-clothes”, “headwear”, “backpack”, “ball”, “bats”, “belt”, “bottle”, “carrybag”, “cases”, “sunglasses”, “eyewear”, “glove”, “scarf”, “umbrella”, “wallet/purse”, “watch”, “wristband”, “tie”, “other-accessary”, “other-upper-body-clothes” and “other-lower-body-clothes”.如下图所示,
下载地址:google drive
github:https://github.com/ZhaoJ9014/Multi-Human-Parsing
3. LIP
LIP(Look into Person)数据集为单人场景人体解析数据集,共50462张,其中训练集30462张,验证集10000张,测试集10000张,共标注20个类别:‘Background’, ‘Hat’, ‘Hair’, ‘Glove’, ‘Sunglasses’, ‘Upper-clothes’, ‘Dress’, ‘Coat’, ‘Socks’, ‘Pants’, ‘Jumpsuits’, ‘Scarf’, ‘Skirt’, ‘Face’, ‘Left-arm’, ‘Right-arm’, ‘Left-leg’, ‘Right-leg’, ‘Left-shoe’, ‘Right-shoe’.如下图所示。
下载链接:https://lip.sysuhcp.com/overview.php
论文: 《Look into Person: Self-supervised Structure-sensitive Learning and A New Benchmark for Human Parsing》
4. PASCAL-Person-Part
PASCAL-Person-Part在PSACAL VOC2010数据集基础上增加分割标注,该数据集存在多人场景,其中训练集1716张,测试集1817张,共标注7个类别:‘Background’, ‘Head’, ‘Torso’, ‘Upper Arms’, ‘Lower Arms’, ‘Upper Legs’, ‘Lower Legs’。如下图所示。
http://liangchiehchen.com/projects/DeepLab.html 这里下载gt
对应的是voc2008-2009-2010http://host.robots.ox.ac.uk/pascal/VOC/index.html
5. DensePose
6. PASCAL-Person-Part
PASCAL-Person-Part在PSACAL VOC2010数据集基础上增加分割标注,该数据集存在多人场景,其中训练集1716张,测试集1817张,共标注7个类别:‘Background’, ‘Head’, ‘Torso’, ‘Upper Arms’, ‘Lower Arms’, ‘Upper Legs’, ‘Lower Legs’。如下图所示。
如何训练
大部分的数据集划分细节太多,但通常用不到那么多,在PASCAL-Person-Part中,类别较少,主要是头和四肢,因此使用这个数据进行处理
分割数据集
- 转化数据
原有的PASCAL-Person-Part数据集为语义分割数据,无法使用于yolo训练,因此进行处理,将其转化为yolo分割数据。
*一下代码实现将语义分割数据集按照像素标注转化为yolo的实列分割,输入png_dir ,vis_dir,yolo_dir *, 这里的png_dir 即为语义分割数据标签路径。
这里的标签分别对应voc2008、2009、2010中的,运行三次即可
import cv2
import numpy as np
import os
import tqdm
def save_yolo_format(yolo_path, class_id, contours, img_shape):
with open(yolo_path, 'a') as f:
for contour in contours:
contour = contour.squeeze() # Remove unnecessary dimensions
if contour.ndim == 1:
continue # Skip degenerate contours
# Normalize coordinates
normalized_contour = contour / [img_shape[1], img_shape[0]]
normalized_contour = normalized_contour.flatten()
# Format as YOLO: class_id followed by normalized coordinates
line = f"{
class_id} "