点击上方“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。

在这里插入图片描述

3. UNet3+

UNet++只是针对于同一尺度的稠密连接,而UNet3+则是跨尺度的稠密连接

UNet3+横纵信息互相交融,像极了国内高铁的“八横八纵”的高铁网,可以获得更大范围的信息融合与流通。又一次感觉很多算法上的设计思想都有异曲同工之妙,亦或者说是源于生活。

当然,UNet3+效果在医疗图像上分割有着不俗的效果,还有一部分是来源于其精心设计的损失函数MS-SSIM,其作为UNet3+组合损失函数的一部分,也会在提点上有着一定的作用(算法除了模型设计,当然还逃脱不了损失的设计)。

在这里插入图片描述

4. U2Net

这个网络的设计,给我的一个感觉就是很飘逸了,这是UNet系列改进的另一条路(我个人觉得,作者对于卷积、池化的使用达到了一个很高的水平,这是在一些常规的设计中还是比较难看到的,用简单的组件设计出一个很优秀的算法)。

嵌套UNet的方式,不可谓不是一种天秀的方法;同时通过膨胀卷积的使用,在不增加计算量的情况下,获得了很大的感受野,整个网络看起来变得很深,但是在参数量上的控制,已经达到了一种炉火纯青的地步。

不过,这篇论文的实验的数据集不在是针对医疗图像,也没有去做实验去比较;但是,U2Net为了获得更大的感受野,个人觉得在位置信息上丢失的还是比较多的,在对于位置信息的表现力,可能是有所欠缺的。

在这里插入图片描述

二、对于改进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. 个人的感觉对于这种网络的设计、代码的写法要有天马行空的想象力,代码写起来也像武侠小说中那种飘逸感;同时,算法设计思想是很重要的,如果单纯的替换主干这种事情,都可以当做算法的设计的话,那岂不是人人都可以做算法工程师了(这也是单纯的从模型的角度来说);不过优秀的算法设计的思想很往往是很困难的,因为不可能每个人都是“聪明绝顶”的高手,可能有时候需要像有机化学中苯环的结构图一样,需要做一个奇幻的美梦。

  2. 这篇文章,我的个人的理解比较多,可能也有不正确的理解,也欢迎大家批评指正,多多学习。

本文仅做学术分享,如有侵权,请联系删文。

下载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天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

谈一谈UNet图像分割相关推荐

  1. 谈一谈浏览器解析CSS选择器的过程【前端每日一题-6】

    谈一谈浏览器解析CSS选择器的过程? 这是一道发散题,可以根据自己的理解自行解答. 在开始前,我们必须了解一个真相:为什么排版引擎解析 CSS 选择器时一定要从右往左解析? 简单的来说:浏览器从右到左 ...

  2. 有一群200w年薪的朋友是什么感觉?谈一谈入学中国科学院大学的几点感受吧

    我叫阿广,偶尔正经,偶尔逗比,97年生人,在求学期间当过鸡头鸡尾,当过凤尾没当过凤头.大家如果想深入了解我,可以查看本公众号的原创文章. 技术人光有技术走不长久,所以今天不更新技术文章了,也给大家谈一 ...

  3. 【建站系列教程】5、谈一谈网站的静态化

    [建站系列教程]5.谈一谈网站的静态化[进阶] 动态页面?静态页面?伪静态页面? 三个页面有何优缺点? 为什么要让网页静态化 如何网页伪静态化? 写在前面:大家好,我是热爱编程的小泽. [建站系列教程 ...

  4. 谈一谈周公所理解的面试

    因为公司最近招聘的力度很大,所以最近公司的面试很多,加之很多同事项目紧,所以让我参加了一些技术面试.不论是作为面试官还是应聘者,参加工作以来我参与的面试的次数我自己也记不清了,所以在此想从面试官和应聘 ...

  5. 我从阿里面试回来,想和Java程序猿谈一谈

    最近小编看了一篇关于面试的文章,题目是"我从阿里面试回来,想和Java程序员谈一谈",内容不是讲面试前刷题,而是更加聚焦在面试前如何准备,以及工作当中如何学习.感觉总结的很不错,今 ...

  6. 怎么学python-结合学习经历,谈一谈如何学习Python

    结合自己的学习经历,谈一谈如何学习Python吧. 入门阶段 Python其实语言本身已经很接近自然语言了,所以入门其实并不麻烦.如果你是从未接触过编程的萌新,给你推荐一门Udacity CS101, ...

  7. 先查询再插入的存储过程怎么写_谈一谈 InnoDB(1) - 底层存储文件结构

    看技术文章是不是很累呢, 这次来个轻松点的~来谈一谈MySQL最主流的数据库引擎 InnoDB 吧~ 序 老王走进一号会议室, 随手打开了灯, 小张紧随其后 "王哥, 找我来干啥啊" ...

  8. Java程序员谈一谈-----java程序员成长之路

    转载:http://www.banzg.com/archives/679.html?ref=myread 阿里面试回来,想和Java程序员谈一谈 引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力 ...

  9. 谈一谈并查集QAQ(上)

    最近几日理了理学过的很多oi知识...发现不知不觉就有很多的知识忘记了... 在聊聊并查集的时候顺便当作巩固吧.... 什么是并查集呢? ( Union Find Set ) 是一种用于处理分离集合的 ...

  10. 阿里面试回来,想和 Java 程序员谈一谈

    转载自 阿里面试回来,想和 Java 程序员谈一谈! 第一个问题:阿里面试都问什么? 这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题.说实话,LZ只能隐约想起并发.JVM.分布式.T ...

最新文章

  1. 微信公共平台消息回复类
  2. CGBitmapContextCreate参数详解
  3. 《麻省理工科技评论》发布2019年全球十大突破性技术!
  4. 策略模式原来这么简单!
  5. WordPress在Permalink取消index.php后nginx404的解决方案
  6. 一些常规形几何形状的绘制和效果填充(一)
  7. 【色彩管理】YUV色彩模式详解
  8. 概念验证_设置成功的UX概念验证
  9. SAGA-GIS软件下载
  10. oracle 数据库回闪,各种数据库闪回的总结
  11. 微软:SolarWinds 供应链攻击事件幕后黑手攻击全球24国政府
  12. python openpyxl合并单元格_用openpyxl分析xlsx文件的合并单元格
  13. 【数据结构】二叉搜索树的python实现
  14. mfc 服务器文件拷贝到本地,mfc服务器客户端间传输文件
  15. Java jsp 自定义标签
  16. Zotero入门——安装插件
  17. 微信小程序视频基本操作
  18. 戴尔笔记本电脑插入有线耳机后仍然外放的一种解决办法
  19. Godot着色器基础
  20. ccf csp寻宝!大冒险!(C语言)

热门文章

  1. Centos7-Mysql 5.6 多主一从 解决方案详细配置
  2. 话说TP框架里的Vendor这目录是干什么用的啊?类库扩展thinkphp3.1版本
  3. TOP10全球ICT技术发展趋势
  4. CodeMirror 5.26.0 发布,在线代码编辑器
  5. xtraback2.3版本安装以及简要操作
  6. 剑指offer-面试题20.顺时针打印矩阵
  7. Apache 架构师总结的 30 条架构原则
  8. 内存泄漏的定位与排查:Heap Profiling 原理解析
  9. 为什么 P8 程序员的代码你写不出来?零拷贝了解一下
  10. 腾讯信息流热点挖掘技术实践