Pytorch 搭建自己的Unet语义分割平台
unet模型
1.主干特征提取
Unet是一个优秀的语义分割模型,其主要执行过程与其它语义分割模型类似。
Unet可以分为三个部分,如下图所示:
第一部分是主干特征提取部分,我们可以利用主干部分获得一个又一个的特征层,Unet的主干特征提取部分与VGG相似,为卷积和最大池化的堆叠。利用主干特征提取部分我们可以获得五个初步有效特征层,在第二步中,我们会利用这五个有效特征层可以进行特征融合。
第二部分是加强特征提取部分,我们可以利用主干部分获取到的五个初步有效特征层进行上采样,并且进行特征融合,获得一个最终的,融合了所有特征的有效特征层。
第三部分是预测部分,我们会利用最终获得的最后一个有效特征层对每一个特征点进行分类,相当于对每一个像素点进行分类。
2.加强特征提取
Unet所使用的加强特征提取网络是一个U的形状。
利用第一步我们可以获得五个初步的有效特征层,在加强特征提取网络这里,我们会利用这五个初步的有效特征层进行特征融合,特征融合的方式就是对特征层进行上采样并且进行堆叠。
为了方便网络的构建与更好的通用性,我们的Unet和上图的Unet结构有些许不同,在上采样时直接进行两倍上采样再进行特征融合,最终获得的特征层和输入图片的高宽相同。
3.特征预测
利用1、2步,我们可以获取输入进来的图片的特征,此时,我们需要利用特征获得预测结果。
利用特征获得预测结果的过程为:
利用一个1x1卷积进行通道调整,将最终特征层的通道数调整成num_classes。
4.各层卷积输出
主干特征提取部分:
521x512x3 -> 512x512x64 -> 256x256x64 -> 256x256x128 -> 128x128X128 -> 128x128x256 -> 64x64x256 -> 64x64x512 ->32x32x512 -> 32x32x512
加强特征提取部分:
64x64x512 -> 128x128x256 ->256x256x128 ->512x512x64
特征检测:
最后一层是1x1卷积 通道数是根据类别数而定
5.总结
一般网络的输入input是512x512x3,输入想改变输入尺寸大小,则输入图片的大小需是32 的倍数;