SegNet,Unet,PspNet学习小结
一、 写在前面
首先,深度学习中的不同模型,实质是对不同层级(卷积层、池化层…)的不同组合方式。
就像是用积木(层级)搭房子(模型),积木有很多种类型,最后呈现出来同样是可以房子,但是房型各不相同。
二、一些小结
在看语义分割的内容的时候,学习了几个典型的模型:SegNet,Unet,PspNet。
根据宝藏博主的内容自己整合了一下它们的区别(欢迎补充指正)
宝藏博主专栏页面
SegNet:
只选一个hw压缩4次的特征层进行三次上采样得到输出层。
Encoder中提取了多次特征的f4进行处理,利用Decoder进行多次上采样Upsampling2D。最后得到一个具有一定hw的filter数量为n_classes的图层。
(参考来源:https://blog.csdn.net/weixin_44791964/article/details/102979289)
Unet:
利用到了压缩了2、3、4次的特征层,最后输出图像分割的结果。就每次上采样的时候,都拿出编码过程中对应压缩得到的特征层进行融合。
unet是一个语义分割模型,其主要执行过程与其它语义分割模型类似,首先利用卷积进行下采样,然后提取出一层又一层的特征,利用这一层又一层的特征,其再进行上采样,最后得出一个每个像素点对应其种类的图像。
看如下这幅图我们大概可以看出个所以然来:
在进行segnet的详解的时候我们知道,其只选了一个hw压缩了四次的特征层进行三次上采样得到最后的结果。
但是unet不一样,其利用到了压缩了二、三、四次的特征层,最后输出图像分割的结果(可以选择是否需要压缩了一次的特征层)。
(参考来源:https://blog.csdn.net/weixin_44791964/article/details/102983853)
Pspnet:
分区域进行平均池化,(对最后一个特征层分别分割成1x1的区域,2x2的区域,3x3的区域,6x6的区域,分别进行平均池化),再对结果 进行resize,最后带上编码过程最后的特征层组合输出。
主要采用了pspblock也就是psp模块。
psp模块的样式如下,其psp的核心重点是采用了步长不同,pool_size不同的平均池化层进行池化,然后将池化的结果重新resize到一个hw上后,再concatenate。
即:
红色:这是在每个特征map上执行全局平均池的最粗略层次,用于生成单个bin输出。
橙色:这是第二层,将特征map划分为2×2个子区域,然后对每个子区域进行平均池化。
蓝色:这是第三层,将特征 map划分为3×3个子区域,然后对每个子区域进行平均池化。
绿色:这是将特征map划分为6×6个子区域的最细层次,然后对每个子区域执行池化。
参考来源:https://blog.csdn.net/weixin_44791964/article/details/102985167