正文字数:3004  阅读时长:4分钟

该文章由Derrick Mwiti发表在Neptune blog,在这篇文章中,我们将会探讨深度学习在图像分割领域的应用。

Posted by Jakub Czakon

url : https://towardsdatascience.com/image-segmentation-in-2020-756b77fa88fc

source来源:neptune.ai

在这篇文章中我们将讨论的话题有:

  • 什么是图像分割

  • 图像分割的架构

  • 图像分割中使用的损失函数

  • 在你的图像分割项目中可用的框架

就让我们一探究竟吧。

什么是图像分割

顾名思义,图像分割是将一幅图像转化成多个部分的过程。在这个过程中,图像中的每个像素都与一个具体的物体相关联在一起。图像分割主要有两种类型:语义分割和实例分割。

在语义分割中,所有物体都是同一类型的,所有相同类型的物体都使用一个类标签进行标记,而在实例分割中,相似的物体可以有自己独立的标签。

参考Anurag Arnab, Shuai Zheng 等作者的2018年的Paper:“Conditional Random Fields Meet Deep Neural Networks for Semantic Segmentation” http://www.robots.ox.ac.uk/~tvg/publications/2017/CRFMeetCNN4SemanticSegmentation.pdf

图像分割的架构

图像分割的基本结构由编码器和解码器组成。

来自Vijay Badrinarayanan等作者2017的Paper:“SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation” https://arxiv.org/abs/1511.00561

编码器通过过滤器从图像中提取特征。解码器负责生成最终输出,通常是包含对象轮廓的分割掩码(segmantation mask)。大多数架构都有这种体系结构或其变体。

让我们看一看一些例子。

U-Net

U-Net是一个最初用于开发生物影响分割的卷积神经网络。从视觉上看,它的架构看起来像字母U,因此而得名U-Net。它的架构由两部分组成,左边是收缩路径,右边是扩展路径。收缩路径的目的是捕获内容,而扩展路径的角色是帮助精确定位。

来自Olaf Ronneberger等作者2015年的Paper “U-net architecture image segmentation” https://arxiv.org/abs/1505.04597

U-Net由右侧的扩展路径和左侧的收缩路径组成。收缩路径由两个3×3的卷积层组成。卷积之后是一个校正的线性单元和和一个2×2的max-pooling池化层的计算来做下采样。

U-Net的完整实现可以在这里找到:https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/

FastFCN — 快速全连接网络

在这种结构中,一个使用联合金字塔上采样(JPU)模块来代替了扩展卷积网络,因为卷积网络消耗大量的内存和计算时间。它使用一个完全连接的网络作为核心,同时应用JPU进行上采样。JJPU将低分辨率的feature map上采样为高分辨率的feature map。

来自Huikai Wu等作者2019的Paper “FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation” https://arxiv.org/abs/1903.11816

如果你想把通过代码实现,查看这里:https://github.com/wuhuikai/FastFCN

Gated-SCNN

这个架构由一个双流CNN架构组成。在该模型中,使用一个单独的分支来处理图像的形状信息。形状流用于处理边界信息。

Towaki Takikawa等 al 2019年“Gated-SCNN:Gated Shape CNNs用于语义分割”  https://arxiv.org/abs/1907.05740

代码实现:https://github.com/nv-tlabs/gscnn

DeepLab(深度实验室)

在这种体系结构中,带有上采样滤波器的卷积用于涉及密集预测的任务。多个对象的分割是通过无空间金字塔空间池完成的。最后,利用DCNNs改进了目标边界的定位。通过插入零或输入特征图进行稀疏采样来对滤波器进行上采样,从而实现无用卷积。

陈良杰等人,2016年“ DeepLab:利用深度卷积网络,Atrous卷积和全连接的CRF进行语义图像分割” https://arxiv.org/abs/1606.00915

您可以在PyTorch(https://github.com/fregu856/deeplabv3)或TensorFlow(https://github.com/sthalles/deeplab_v3)上尝试它的实现。

Mask R-CNN

在这个体系结构中,使用一个边界框/包围盒和语义分割对对象进行分类和定位,该语义分割将每个像素分类为一组类别。每个感兴趣的区域都有一个分割蒙版。并且将产生一个类标签和一个边界框作为最终输出。实际上该体系结构是Faster R-CNN的扩展。Faster R-CNN由提出区域的深度卷积网络和利用区域的检测器组成。

Kaiming He et. al 2017 “Mask R-CNN” https://arxiv.org/abs/1703.06870

这是在COCO测试集上获得的结果的图像。

Kaiming He et. al 2017 “Mask R-CNN” https://arxiv.org/abs/1703.06870


图像分割损失函数

语义分割模型在训练过程中通常使用一个简单的跨类别熵损失函数。但是,如果您对获取图像的详细信息感兴趣的话,那么您必须恢复到稍微高级的损失函数。

我们来看看其中的几个。

焦点损失

这个损失是对标准互熵标准的改进。这是通过改变其形状来完成和实现的,以使分配给分类充分的示例的损失降低权重。最终,这确保了没有阶级不平衡的存在。在这个损失函数中,随着对正确类别的置信度增加,交叉熵损失会随着缩放因子以零衰减而缩放。比例因子在训练时自动降低权衡简单示例的贡献,并将重点放在难的示例上。

来源source:neptune.ai

骰子损失

这种损失是通过计算平滑骰子系数函数得到的。这种损失是最常用的损失,属于是分割问题。

来源source:neptune.ai

IoU 平衡损失交集

IoU平衡的分类损失的目的是提高IoU高的样本的梯度,降低低IoU样本的梯度。这样,通过这种方式,可以提高机器学习模型的定位精度。

来源source:neptune.ai

边界损失

边界损失的一种变体适用于分段高度不平衡的任务。这种损失的形式是空间轮廓\等高线而不是区域的距离度量。以这种方法,可以解决了由高度不平衡的分割任务中区域损失所带来的问题。

来源source:neptune.al

加权交叉熵

在交叉熵的一个变量中,所有的正例子都被某个一定系数加权。它用于涉及类不平衡的场景或方案。

来源source:neptune.ai

Lovász-Softmax损失

该损失基于子模损失的凸Lovasz扩展,对神经网络中的平均相交-大于联合损失进行直接优化。

来源source:neptune.ai

其他值得一提的损失是:

  • TopK损失,其目的是确保网络在训练过程中集中在硬样本上。

  • 距离损失的CE损耗将网络引导到难以分割的边界区域。

  • 敏感性\灵敏性-特异性(SS)损失,用于计算特异性和敏感性的均方差的加权和。

  • Hausdorff 距离(HD)损失,可从卷积神经网络估计Hausdorff距离。

这些只是图像分割中使用的几个损失函数。要了解更多,请点此链接查看:https://github.com/JunMa11/SegLoss

图像分割的数据集

如果你看到了这里的话,你会思考说从哪里可以获得相应的数据集来进行图像分割的学习呢。

现在我们来看下有哪些数据集我们拿来用。

Common Objects in COntext — Coco数据集

COCO是一个大规模的物体检测、图像分割和五项描述生成的大规模数据集。这个数据集中一共包含91个物品类别。包含着250000带有关键点标注的人。它的下载大小是37.57GIB。它包含80个对象类别。它在Apache2.0许可下可用,可以从这里下载(https://cocodataset.org/#download)。

PASCAL可视化对象类(PASCAL VOC)

PASCAL有9963张图片,有20个不同的类别。训练/验证集是一个2GB的tar文件。数据集可以从官方网站下载:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/

Cityscapes 数据集

此数据集包含城市场景的图像。它可以用来评价视觉算法在城市场景中的性能。数据集可以从这里下载:https://www.cityscapes-dataset.com/。

Cambridge驾驶标注视频数据库 — CamVid

这是一个基于运动的分割和识别数据集。它包含32个语义类别。此链接包含进一步的解释和指向数据集的下载链接:http://mi.eng.cam.ac.uk/research/projects/VideoRec/CamVid/。

图像分割框架

现在您已经准备好了可使用的数据集,下面让我来介绍一些可以用来入门的工具/框架。

  • FastAI库——给定一个图像,这个库可以创建图像中对象的掩码/遮罩。

  • Sefexa图像分割工具-——Sefexa是一个免费的工具,可用于半自动图像分割、图像分析和地面真实性的创建。

  • Deepmask——Facebook Research的Deepmask是Deepmask和SharpMask的Torch实现。

  • MultiPath——这是“用于对象检测的MultiPath网络 ”中对象检测网络的Torch实现。

  • OpenCV——这是一个开源的计算机视觉库,有超过2500个优化算法。

  • MIScnn——是一个医学图像分割开源库。它允许在几行代码中使用最先进的卷积神经网络和深度学习模型来建立管道。

  • Fritz——Fritz提供了几种计算机视觉工具,包括用于移动设备的图像分割工具。

总结

希望本文能为您提供一些图像分割的背景知识,并为您提供一些工具和框架,以便您在工作中使用。

有关更多信息,请查看附加到每个架构和框架的链接。

LiveVideoStackCon 2020 北京

2020年10月31日-11月1日

点击【阅读原文】了解更多详细信息

图像分割 2020 最新进展相关推荐

  1. TensorFlow 2.0 发布以来,又有哪些最新进展?| AI ProCon 2020

    [导读]7 月 3-4 日,由 CSDN 主办的第三届 AI 开发者大会(AI ProCon 2020)在线上举行.本次大会有超万人报名参与,参与人群覆盖 50+ 领域.4000 家企业.其中有来自行 ...

  2. 特别策划 | 5G最新进展深度解析2020版-技术应用篇(68页附下载)

    文章版权所有,未经授权请勿转载或使用 笔者在2019年发布了<5G最新进展深度解析>系列之<全球市场篇>.<国内市场篇>.<技术应用篇>.2020年,尽 ...

  3. 特别策划 | 5G最新进展深度解析2020版-国内市场篇(56页附下载)

    文章版权所有,未经授权请勿转载或使用 笔者在2019年发布了<5G最新进展深度解析>系列之<全球市场篇>.<国内市场篇>.<技术应用篇>.2020年,尽 ...

  4. 特别策划 | 5G最新进展深度解析2020版-全球市场篇(P66页附下载)

    文章版权所有,未经授权请勿转载或使用 笔者在2019年发布了<5G最新进展深度解析>系列之<全球市场篇>.<国内市场篇>.<技术应用篇>.2020年,尽 ...

  5. 2020人脸识别最新进展综述,参考文献近400篇 | 附下载

    点击上方"AI算法与图像处理",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 作者单位:上海大学, 京东AI研究院 本文全面介绍了 ...

  6. 【MIT港科大】最新《贝叶斯深度学习》2020综述论文,35页pdf全面阐述最新进展...

    来源:专知 来自MIT和香港科技大学的学者最新<贝叶斯深度学习>综述论文,值得关注! 地址: https://www.zhuanzhi.ai/paper/9b781282204cb581a ...

  7. 2019最新进展 | Transformer在深度推荐系统中的应用

    作者 | Alex-zhai 来源 | 深度传送门(ID:deep_deliver) [导读]最近基于Transformer的一些NLP模型很火(比如BERT,GPT-2等),因此将Transform ...

  8. Survey | 生物医学文本挖掘最新进展

    今天给大家介绍2020年5月康奈尔大学Fei Wang教授团队发表在Briefings in Bioinformatics的综述"Recent advances in biomedical ...

  9. 《神经架构搜索NAS》最新进展综述,25页pdf

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要5分钟 Follow小博主,每天更新前沿干货 来源于:专知 [导读]本文为大家整理了神经架构搜索NAS的最新进展综述,神经架构搜索(NAS)自 ...

最新文章

  1. Elasticsearch 在互联网公司大量真实的应用案例
  2. 工程师忽略的隐形成本
  3. 山西财经大学计算机考试题及答案,2018年山西财经大学计算机应用技术408计算机学科专业基础综合之计算机操作系统考研基础五套测试题...
  4. 思科防火墙nat-control的作用
  5. ubuntu21.04下终端路径显示优化
  6. 十二、十三天总结笔记
  7. 使用Context和Hooks来管理状态
  8. 一个简易版的T4代码生成框架
  9. python课程-天津Python编程课程
  10. 深入浅出设计模式---1、设计模式原则和分类
  11. VB2015编写的九宫格拼图游戏及暴力求解解法(主要使用datagridview和listbox控件)
  12. 【WinHex篇】WinHex制作特定区域镜像教程
  13. 阿里云 EMAS Serverless 重磅发布
  14. 安卓手机玩游戏卡顿怎么解决_安卓手机卡顿如何解决?教你四招,流畅度立刻飙升!...
  15. 思科设备三层交换配置路由实现互通
  16. 【基金量化研究系列】大类资产配置研究(一)——股债二八配置策略与股债风险平价策略
  17. SpringSecurity原理:探究SpringSecurity运作流程
  18. eclipse的正确使用方式
  19. EasyAR_实现扫描识别图播放视频
  20. 星野摄影入门(全流程)

热门文章

  1. 请问在allegro中如何在铜箔上单独放置过孔?
  2. Workbooks 对象的 Open 方法参数说明
  3. 面试官问你“有什么问题问我吗?”,你该如何回答?
  4. nagios nrpe
  5. == 捕获对象时的模式切换 ==
  6. Cisco SSL ×××
  7. Visual Media Server – 2 - 下载模块草图
  8. 洛谷 - P1361 小M的作物(最大流最小割)
  9. CH - 4901 关押罪犯(二分图判定+二分/并查集)
  10. POJ - 3417 Network(树上差分)