Supervisely 人像分割数据集

Supervisely 人像分割数据集包含 5711 张图片, 6884 个人像注释。

这是一个比 Coco 标注质量更高的人像分割数据集。

标注图像示例:

关于数据集的更多信息,参考这篇博客

获取数据集

数据集的下载地址:https://cloud.enterprise.deepsystems.io/s/NxqWAtEyCkCaCMY

如果无法下载,就需要注册登录了。

操作顺序如下:

  1. 访问 https://supervise.ly 注册并登录。
  2. 访问个人team页面,点击左上角的"Expore"。
  3. 翻到页面最下方,找到 "Supervisely/Library/Supervisely Person Dataset (demo sample)" 并点击。
  4. 点击 Info,在页面的最底部找到 "You can download full version of dataset here.",点击 here。
  5. 在弹出的页面中,点击 "Download Supervisely Person Dataset.tar (7.3 GB)" 下载。

数据集格式解析

参考:https://blog.youkuaiyun.com/SimleCat/article/details/107021698

数据集格式转换

参考:https://blog.youkuaiyun.com/SimleCat/article/details/107022348

在进行人像图像分割时,U-Net 是一个非常流行的深度学习模型,因其在医学图像分割中的出色表现而被广泛应用于各类图像语义分割任务中。U-Net 的核心结构包括一个编码器(下采样路径)和一个解码器(上采样路径),并通过跳跃连接(skip connections)将编码器和解码器之间的特征图进行融合,从而保留更多空间信息,提高分割精度[^1]。 ### U-Net 模型的实现步骤 以下是一个基于 PyTorch 实现的 U-Net 用于人像图像分割的基本流程: #### 1. 数据准备与预处理 在进行训练之前,需要准备好高质量的人像数据集。推荐的数据集包括: - **Supervisely Person Dataset**:包含 5711 张图像,6884 个标注人物实例。 - **Human-Segmentation-Dataset**:290 张图像,适合小规模测试。 - **Deep Automatic Portrait Matting Dataset**:包含 1700 张训练图像和 300 张测试图像,支持半透明抠图[^3]。 对于图像和标签的处理,通常包括以下步骤: - 图像归一化(如将像素值缩放到 [0, 1] 或 [-1, 1] 范围) - 随机裁剪、旋转等数据增强操作 - 将图像和掩码调整为统一尺寸(例如 256x256) #### 2. 构建 U-Net 网络结构 以下是一个简化的 U-Net 结构示例,使用 PyTorch 实现: ```python import torch import torch.nn as nn import torch.nn.functional as F class UNet(nn.Module): def __init__(self, in_channels=3, out_channels=1): super(UNet, self).__init__() def CBR(in_channels, out_channels): return nn.Sequential( nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1), nn.BatchNorm2d(out_channels), nn.ReLU(inplace=True), nn.Conv2d(out_channels, out_channels, kernel_size=3, padding=1), nn.BatchNorm2d(out_channels), nn.ReLU(inplace=True) ) self.enc1 = CBR(in_channels, 64) self.enc2 = CBR(64, 128) self.enc3 = CBR(128, 256) self.enc4 = CBR(256, 512) self.center = CBR(512, 1024) self.up4 = nn.ConvTranspose2d(1024, 512, kernel_size=2, stride=2) self.dec4 = CBR(1024, 512) self.up3 = nn.ConvTranspose2d(512, 256, kernel_size=2, stride=2) self.dec3 = CBR(512, 256) self.up2 = nn.ConvTranspose2d(256, 128, kernel_size=2, stride=2) self.dec2 = CBR(256, 128) self.up1 = nn.ConvTranspose2d(128, 64, kernel_size=2, stride=2) self.dec1 = CBR(128, 64) self.final_conv = nn.Conv2d(64, out_channels, kernel_size=1) def forward(self, x): enc1 = self.enc1(x) enc2 = self.enc2(F.max_pool2d(enc1, kernel_size=2, stride=2)) enc3 = self.enc3(F.max_pool2d(enc2, kernel_size=2, stride=2)) enc4 = self.enc4(F.max_pool2d(enc3, kernel_size=2, stride=2)) center = self.center(F.max_pool2d(enc4, kernel_size=2, stride=2)) dec4 = self.up4(center) dec4 = torch.cat([dec4, enc4], dim=1) dec4 = self.dec4(dec4) dec3 = self.up3(dec4) dec3 = torch.cat([dec3, enc3], dim=1) dec3 = self.dec3(dec3) dec2 = self.up2(dec3) dec2 = torch.cat([dec2, enc2], dim=1) dec2 = self.dec2(dec2) dec1 = self.up1(dec2) dec1 = torch.cat([dec1, enc1], dim=1) dec1 = self.dec1(dec1) return torch.sigmoid(self.final_conv(dec1)) ``` #### 3. 损失函数与优化器选择 在图像分割任务中,常用的损失函数包括: - **二元交叉熵损失(BCELoss)**:适用于二分类分割任务(前景 vs 背景) - **Dice Loss**:对类别不平衡问题更鲁棒,常用于医学图像分割 - **组合损失函数(如 BCE + Dice)** 优化器通常使用 Adam 或 SGD,并结合学习率调度策略(如 ReduceLROnPlateau)。 #### 4. 训练流程 训练过程中主要包括以下步骤: - 加载并预处理数据集 - 初始化模型、损失函数和优化器 - 进行多轮训练(epoch) - 在每个 batch 中前向传播、计算损失、反向传播并更新参数 - 每隔一定周期保存模型权重 #### 5. 推理与可视化 训练完成后,可以使用模型对新图像进行推理。输入一张图像后,模型输出对应的二值或概率图。通过阈值处理可以得到最终的分割结果。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值