点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
【导语】这篇文章主要针对于图像分割的算法的一些理解,主要是一个比较经典的UNet系列的网络的认识。最后希望看完这篇文章的读者可以有所收获,对于一些个人的理解欢迎大家批评指正,希望可以和大家一起交流进步。
一、引言
yolov4、v5发布之后,在卷积上改进感觉也快达到一个顶峰了,在卷积神经网络的设计,在很多大佬的眼里估计都是一样的了,每一个新的改进或者检测框架的提出,可能都会看到之前框架的影子,也有人把在图像检测上的改进称之为“搭积木”;
在这之后,可能在图像上的各大论文都将重心放在Transformer上了,Transformer在CV上的论文也是变得越来越多了,图像分割做为图像的一个领域当然也不能落下,SwinUnet可以说终于让Transformer在图像分割中也得到了露脸的机会。
不过,基于Transformer在图像方面上的应用,具体在实际落地的中,可能也会很快了。本文可能还是要从最经典的图像分割网络UNet开始说一说这个比较古老的图像分割系列了。
虽然现在算法越来越依靠在数据上“做手脚”,但是也不能忽视网络的设计的技巧和思想,掌握一个优秀的设计思想,就可以天马行空、设计出飘逸的算法。
二、图像分割的絮叨
图像分割作为像素级的精细分类,可以让算法做一些精细活,这种精细活体现在医学上的应用(个人觉得医学领域是一个神奇也很有价值的领域),UNet在医学图像上的分割在当时有着不俗的表现力,整个网络的设计也是非常精妙的,其网络的设计的核心的思想在当年与yolov3有着相似之处,随着后面UNet的几个系列乃至现在YOLO的v4和v5,它们最核心的设计思想都有着异曲同工之妙,那就是:信息融合、位置不偏移。
其实,在对网络的设计的过程中,始终保持着这两点,就可以设计出一个比较好的网络。(但是,这也只是开始的一步,网络的设计还有很多的因素要考虑,这里就不一一叙述了,相信每个人都会有着经验性的理解)。
1. UNet网络的技巧和思想
终于进入正题了,铺垫了好多文字了,就从UNet的设计开始说起吧,相信网上也有比较多的图像分割结构设计的一些套路
A、上采样+下采样作为整体的网络结构(Encoder-Decoder) B、多尺度的特征融合 C、信息流通的方式 D、获得像素级别的segment map
在这里插入图片描述
UNet最初的设计也是使用在医学影像的分割,通过经典的编解码结构、卷积、池化、ReLU激活函数,进行设计
UNet的技巧
不用Padding,防止位置发生偏移
上采样使用插值法+conv,而不使用转置卷积等上采样方法,让特征图保持着均匀的色差
使用skip connection更好的进行信息融合
2. UNet++
从UNet++开始,网络的设计就开始注意原始图像的位置信息,还有就是整个网络的信息融合的能力。
所以,UNet++通过一系列尝试,最终设计成稠密连接,同时有长连接和短连接,并且将UNet中间空心的位置填满;
可以抓取不同层次的特征/不同大小的感受野。UNet++横向看可以看做一个稠密结构的DenseNet。
![](https://i-blog.csdnimg.cn/blog_migrate/545d16e604310c1e334272fa4854bc6e.png)
3. UNet3+
UNet++只是针对于同一尺度的稠密连接,而UNet3+则是跨尺度的稠密连接
UNet3+横纵信息互相交融,像极了国内高铁的“八横八纵”的高铁网,可以获得更大范围的信息融合与流通。又一次感觉很多算法上的设计思想都有异曲同工之妙,亦或者说是源于生活。
当然,UNet3+效果在医疗图像上分割有着不俗的效果,还有一部分是来源于其精心设计的损失函数MS-SSIM,其作为UNet3+组合损失函数的一部分,也会在提点上有着一定的作用(算法除了模型设计,当然还逃脱不了损失的设计)。
![](https://i-blog.csdnimg.cn/blog_migrate/f57e746f37c7a8954c25b1ffa1a5f916.png)
4. U2Net
这个网络的设计,给我的一个感觉就是很飘逸了,这是UNet系列改进的另一条路(我个人觉得,作者对于卷积、池化的使用达到了一个很高的水平,这是在一些常规的设计中还是比较难看到的,用简单的组件设计出一个很优秀的算法)。
嵌套UNet的方式,不可谓不是一种天秀的方法;同时通过膨胀卷积的使用,在不增加计算量的情况下,获得了很大的感受野,整个网络看起来变得很深,但是在参数量上的控制,已经达到了一种炉火纯青的地步。
不过,这篇论文的实验的数据集不在是针对医疗图像,也没有去做实验去比较;但是,U2Net为了获得更大的感受野,个人觉得在位置信息上丢失的还是比较多的,在对于位置信息的表现力,可能是有所欠缺的。
![](https://i-blog.csdnimg.cn/blog_migrate/39d204676ff53592c7ba20280cf1cec7.png)
二、对于改进UNet的见解
上面说的内容没有说的特别繁琐,这些内容网上有着非常细致的解读(因为上面的技术也是2021年之前的知识点了,可能也算是相对来说比较古老的技术了,大家估计都听过或者看到过一些解读),本文就挑核心的点进行介绍,让大家在对上面的内容有了一个认识,并引出我下面的一些理解。
应该说很多人,其实都喜欢在UNet进行改进,换个优秀的编码器,然后自己在手动把解码器对应实现一下。至于为什么要选择UNet上进行改进,可能是因为UNet网络的结构比较简单,还是比较好进行改进的,而且UNet的效果,在很多场景下的表现力可能都是差强人意的。
但是,直接对UNet进行简单的替换编解码器,效果应该也是差强人意或者效果就是很差的;之前也有一些同事,在对UNet进行改进的时候,也会遇到效果不好的问题。直接对UNet改进,个人认为有两个本质的原因会影响网络的效果。
首先,原始的UNet在编码器的网路结构是很浅的,同时没有加padding,使得解码器获取编码器的信息时,位置信息丢失的不会很严重;但是一旦选择一个比较深的网络作为编码器(一般的特征提取的网络会加padding),使得位置信息丢失的相对来说是很严重的,在解码器获取到对应编码器的信息时,就已经产生了很大的偏移,再经过一个同样深的解码器,那么位置偏移就会变得更加严重,效果不好就可以解释的通了。
不过上面都是针对于直接用其他优秀的特征提取网络直接改进UNet的情况。
个人认为,UNet上的改进一定要认识到最原始的设计思路,以及它相对于后面系列的一个劣势,就是信息融合、位置不偏移。
其实,信息融合、位置偏移在yolov4、v5中也得到了体现,v4和v5对于网络的改进思路也是紧紧抓住了这两个点(当然也有其他非常重要或者新颖的点,但是这两点一定是核心的),后期对于UNet进行改进的网络都是在对信息融合上有着独到的理解,这也是后面改进的网络比较难以再进行优化的一个原因,要想对UNet有着非常独到的新颖的改进,还是比较有难度的(Swin-UNet是Transformer在图像上的表现,我也不太好评价)。
如果非要在UNet上通过替换编解码器的方式(用现有的优秀的特征提取器)进行改进时,可以借鉴UNet++和UNet3+的思想,横纵信息的流通,还有就是padding上的特殊处理、能不能更好的进行反向传播、位置偏移上的特殊处理、不要选择太深的网络、卷积核的大胆设计这几个方面出发;
最后,其实分割网络可以尝试其他的分割模型,Deeplab系列也是一个比较好的选择,对主干的修改也相对容易。
三、总结
个人的感觉对于这种网络的设计、代码的写法要有天马行空的想象力,代码写起来也像武侠小说中那种飘逸感;同时,算法设计思想是很重要的,如果单纯的替换主干这种事情,都可以当做算法的设计的话,那岂不是人人都可以做算法工程师了(这也是单纯的从模型的角度来说);不过优秀的算法设计的思想很往往是很困难的,因为不可能每个人都是“聪明绝顶”的高手,可能有时候需要像有机化学中苯环的结构图一样,需要做一个奇幻的美梦。
这篇文章,我的个人的理解比较多,可能也有不正确的理解,也欢迎大家批评指正,多多学习。
本文仅做学术分享,如有侵权,请联系删文。
下载1
在「3D视觉工坊」公众号后台回复:3D视觉,即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。
下载2
在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总,即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。
下载3
在「3D视觉工坊」公众号后台回复:相机标定,即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配,即可下载独家立体匹配学习课件与视频网址。
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~