【语义分割实战(1)】U-Net语义分割:训练自己的数据集

一、U-Net图像语义分割原理

UNet最早发表在2015的MICCAI会议上,4年多的时间,论文引用量已经达到了9700多次。
UNet成为了大多做医疗影像语义分割任务的baseline,同时也启发了大量研究者对于U型网络结构的研究,发表了一批基于UNet网络结构的改进方法的论文。
UNet网络结构,最主要的两个特点是:U型网络结构和Skip Connection跳层连接。
在这里插入图片描述

二、U-Net代码及预训练权重下载

2.1 下载unet代码

这里使用的是B站大佬Bubbliiiing复现的unet代码

 仓库地址: https://github.com/bubbliiiing/unet-pytorch

2.2 下载模型预训练权重unet_resnet_medical.pth

链接:https://pan.baidu.com/s/1fVrPEgz1bgnUZl7k_1alYw
提取码:wzp2
将下载的权重文件放到model_data文件夹下。

三、labelme图像标注及格式转换

3.1 图像标注

项目代码中,Medical_Datasets文件夹下已经放好了标注并且格式转换好的数据,我这边不再标注,读者可以根据自己的需求自行标注。自己标注的数据的图像和标签文件需求都放在datasets\before文件夹下。

3.2 标签格式转换

运行json_to_dataset.py文件,转换后,会在datasets\JPEGImages文件夹下生成jpg格式图像,在datasets\SegmentationClass文件夹下生成png格式mask标签Medical_Datasets文件夹下已经放好了标注并且格式转换好的数据,我这边不再标注,
在这里插入图片描述
项目中Medical_Datasets文件夹下已经给出了转换好的标签,见下图。
在这里插入图片描述

3.3 数据集划分

将上一步的jpg格式图像放到VOCdevkit\VOC2007\JPEGImages文件夹下。
将上一步的png格式mask标签放到VOCdevkit\VOC2007\SegmentationClass文件夹下。
运行voc_annotation.py文件。
查看在VOCdevkit\VOC2007\ImageSets\Segmentation文件夹下生成的txt文件
Medical_Datasets文件夹下已经放好了划分好的的数据,我这边不再进行数据集划分。
在这里插入图片描述

四、U-Net网络训练和测试

4.1 训练

修改train_medical.py文件中,backbone = “resnet50”pretrained = False(看代码,其实只是没加载backbone权重,还是加载了model_data文件夹下的unet_resnet_medical.pth权重文件)以及model_path = “model_data/unet_resnet_medical.pth”,读者需要根据自己的情况修改文件中的num_classesinput_shapeFreeze_batch_sizeUnfreeze_batch_size以及其他训练参数。然后运行train_medical.py文件。
训练结果保存在logs文件夹下。
在这里插入图片描述

4.2 测试

修改unet.py中代码,“model_path” : ‘logs/best_epoch_weights.pth’,“num_classes”: 2,以及“backbone” : “resnet50”,
运行predict.py文件。
读者需要根据自己的情况修改模型权重和测试图片的地址。
读者可以通过修改mode参数,实现下面5种模式:

#   'predict'           表示单张图片预测,如果想对预测过程进行修改,如保存图片,截取对象等,可以先看下方详细的注释
#   'video'             表示视频检测,可调用摄像头或者视频进行检测,详情查看下方注释。
#   'fps'               表示测试fps,使用的图片是img里面的street.jpg,详情查看下方注释。
#   'dir_predict'       表示遍历文件夹进行检测并保存。默认遍历img文件夹,保存img_out文件夹,详情查看下方注释。
#   'export_onnx'       表示将模型导出为onnx,需要pytorch1.7.1以上。

设置mode = “predict”模式,测试一张自己手动输入路径的图像,结果如下
在这里插入图片描述

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
在使用YOLOv5进行数据集语义分割时,你可以按照以下步骤进行操作。 1. 首先,确保你的数据集中包含图像和相应的JSON文件,并将它们分别放入不同的文件夹中。 2. 创建一个seg.yaml文件,其中包含以下内容: - train: 指定训练图像的路径(相对于'path'),并设置图像数量。 - val: 指定验证图像的路径(相对于'path'),并设置图像数量。 - test: (可选)指定测试图像的路径(相对于'path')。 3. 设置训练参数: - task: 设置为segment,表示进行语义分割任务。 - mode: 设置为train,表示进行训练模式。 - model: 指定模型文件的路径,例如yolov8s-seg.yaml。 - data: 指定数据文件的路径,例如seg.yaml。 - epochs: 设置训练的轮数。 - patience: 设置早停的等待轮数,即训练没有明显改进时停止训练。 - batch: 设置每批次的图像数量。 4. 运行语义分割训练,使用以上设置开始训练你的YOLOv5模型。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [YOLOv8实例分割训练自己的数据集保姆级教程](https://blog.csdn.net/m0_51530640/article/details/129975257)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_51579041

你的奖励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值