基于改进UNet(PyTorch)图像语义分割记录:训练自己的数据集
实验数据集为下载的公开数据集。U-Net网络包含编码和解码两部分,编码器进行下采样,提取原始图像空间特征,解码器进行上采样,根据编码器所提取的空间特征构造出图像。为了防止对应特征丢失,对应编码器和解码器之间有跳跃连接。U-Net的编码器采用两层3x3卷积、ReLU激活函数和2×2最大池化,来提取图像特征,共进行4次下采样,该过程降低特征图尺寸,增加通道数。解码器部分使用2×2反卷积进行上采样,减少
UNet是一种基于深度学习的图像语义分割方法,尤其在医学图像分割中表现优异
由于数据集是下载的,所以没有自己标注,这里简单说明一下,如何自己制作自己的数据集和标签
一、制作数据集
标注工具:labelme.exe
标注完成保存后的格式为: json
1.2 json转Unet标签
使用脚本json2mask.py 设置原图保存路径, 标签(mask)保存路径,以及图片和json的共同目录(图片和json放在同一目录下)
1.3 查看转换的标签是否正确
使用 pltshowmask.py脚本,修改标签路径。用鼠标在图片对应位置滑动,右下角显示 label的值为[1.000] , 说明这个图片不是全黑,是有label值的
关于标签的碎碎念
- 标签即mask为单通道
- 标签的类别像素值从1开始,依次为2、3…, 例如你要做一个二分类的任务,那么标签中背景的像素值为0,标签中具体类别的像素值为1;如果要做三分类的任务,那么标签中背景的像素值为0,标签中具体类别一的像素值为1,标签中具体类别二的像素值为2,以此类推…
- 原图和其标签的尺寸要一致,并且图片名称也一致。
1.4 划分训练集和验证集
使用dataSplit.py,设置原图所在路径, 标签mask所在路径,则会按9:1 比例划分训练集和验证集,修改 p 值可以换成其他比例划分
得到的train.txt和val.txt 的分隔符为空格,可以修改脚本为其他分隔符。格式为:
原图路径 标签路径
二、开始实验
2.1 数据集介绍
实验数据集为下载的公开数据集。训练集188张,验证集27张,均带有标签,图像格式均为tif,如下图所示:
图片目录CT_image
train文件夹
train_label文件夹
val文件夹
val_label文件夹
训练集和验证集目录CT_txt
train.txt示例
val.txt示例
注意:图片和标签的分隔符为制表符\t
2.2 模型结构介绍
U-Net网络简介
U-Net网络包含编码和解码两部分,编码器进行下采样,提取原始图像空间特征,解码器进行上采样,根据编码器所提取的空间特征构造出图像。为了防止对应特征丢失,对应编码器和解码器之间有跳跃连接。
U-Net的编码器采用两层3x3卷积、ReLU激活函数和2×2最大池化,来提取图像特征,共进行4次下采样,该过程降低特征图尺寸,增加通道数。解码器部分使用2×2反卷积进行上采样,减少通道数,逐渐恢复特征图尺寸
比方说一开始的图片是224x224的,那么就会变成112x112,56x56,28x28,14x14四个不同尺寸的特征。然后我们对14x14的特征图做上采样或者反卷积,得到28x28的特征图,这个28x28的特征图与之前的28x28的特征图进行通道上的拼接concat,然后再对拼接之后的特征图做卷积和上采样,得到56x56的特征图,再与之前的56x56的特征拼接,卷积,再上采样,经过四次上采样可以得到一个与输入图像尺寸相同的224x224的预测结果。
改进的MA-Unet结构
MA-Unet分为两个部分,分别为编码器与解码器。由于U-Net在跳跃连接时存在无效的语义信息,故在编码器中每一层的特征图在经过卷积层之后加入CBAM。在CBAM的通道注意力模块中,通过通道注意力机制来加强特征,抑制其他无效特征,从而提高网络精度;在CBAM的空间注意力模块中,空间注意力机制可从已进行上采样的特征图中恢复空间信息。针对U-Net对尺度信息提取不足的问题,在编码器最后一层通道数为1024的特征图后加入改进的ASPP模块。通过ASPP模块可以实现对不同尺度特征的提取,在低层阶段获得精细的目标像素分割定位,在高层阶段提取更为有效的特征,从而提高分割精度。在解码器中,为了解决图像存在的不同尺寸的物体的多尺度问题,对每一个尺度的特征图进行串联,在最后进行提取时,特征图包含了各个尺度的信息特征
改进后的网络流程
三、模型训练
下载训练代码,目录如下所示
修改train_config.json,设置自己数据集的路径,以及必要的参数,如图
注意:num_classes = 2 是算上了背景类
最后运行train.py即可开始训练
运行predict.py可以进行预测
=========================================================================
为了小伙伴们能够,更好的学习实践,本文已将训练代码和数据集打包上传,供小伙伴们学习。获取方式如下:
关注公众哈【小白深度学习之路】,发送【CT】即可。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)