【CV】图像分割2020,架构,损失函数,数据集,框架的整理和总结

机器学习初学者

共 3792字,需浏览 8分钟

 · 2020-11-21



作者:Derrick Mwiti

编译:ronghuaiyang

正文共:3651 字 18 图

预计阅读时间:11 分钟

导读

包括架构,损失函数,数据集,框架的整理和总结。


在这篇文章中,我们将深入探讨使用深度学习进行图像分割。我们将讨论:

  • 什么是图像分割,以及两种主要类型的图像分割
  • 图像分割的结构
  • 用于图像分割的损失函数
  • 你可以用到你的图像分割项目中的框架

就让我们一探究竟吧。

什么是图像分割?

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

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

图像分割结构

图像分割的基本结构包括编码器和解码器。

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

让我们看几个例子。

U-Net

U-Net是最初为分割生物医学图像而开发的卷积神经网络。当它的结构可视化时,它看起来像字母U,因此取名为U-Net。它的结构由两部分组成,左边的部分是收缩路径,右边的部分是扩展路径。收缩路径的目的是捕获上下文,而扩展路径的作用是帮助精确定位。

U-Net由右边的扩展路径和左边的收缩路径组成。收缩路径由两个3×3的卷积组成。卷积之后是一个ReLU和一个用于下采样的2×2最大池化。

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

FastFCN — Fast Fully-connected network

在这个架构中,使用联合金字塔上采样(JPU)模块来代替膨胀卷积,因为它们消耗大量内存和时间。它的核心是一个全连接网络,同时使用JPU进行上采样。JPU将低分辨率的特征图上采样到高分辨率的特征图。

如果你想亲自动手做一些代码实现:https://github.com/wuhuikai/FastFCN。

Gated-SCNN

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

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

DeepLab

在这种结构中,卷积与上采样滤波器用于密集预测的任务。多尺度物体的分割是通过空间金字塔汇聚来完成的。最后,使用DCNNs来改进物体边界的定位。通过插入零或对输入特征图进行稀疏采样来对滤波器进行上采样,从而实现Atrous卷积。

代码:https://github.com/fregu856/deeplabv3(PyTorch),https://github.com/sthalles/deeplab_v3(TensorFlow)

Mask R-CNN

在这个结构中,使用一个边界框和语义分割对物体进行分类和局部化,该边界框和语义分割将每个像素划分为一组类别。每个感兴趣的区域都有一个分割掩码。最终的输出是一个类标签和一个包围框。该架构是Faster R-CNN的扩展。

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

图像风格的损失函数

语义分割模型在训练过程中通常使用一个简单的交叉熵损失函数。但是,如果你对获取图像的粒度信息感兴趣,则必须使用到稍微高级一些的损失函数。

我们来看几个例子。

Focal Loss

这种损失是对标准交叉熵的一种改进。这是通过改变其形状来实现的,这样分配给分类良好的样本的损失的权重就会降低。最终,这确保了不存在类别不平衡。在这个损失函数中,随着对预测正确的类别的信心增加,交叉熵损失的比例因子在0处衰减。比例因子自动降低了训练时简单样本的权重,并将重点放在困难的样本上。

Dice loss

这个损失是通过计算smooth dice coefficient函数得到的。这种损失是分割问题中最常用的损失。

Intersection over Union (IoU)-balanced Loss

IoU平衡分类损失的目的是增加高IoU样本的梯度,减少低IoU样本的梯度。这样可以提高机器学习模型的定位精度。

Boundary loss

边界损失的一种变体适用于具有高度不平衡分割的任务。这种损失的形式是空间轮廓上的距离度量,而不是区域。通过这种方式,它解决了高度不平衡的分割任务的区域损失所带来的问题。

Weighted cross-entropy

交叉熵的一种变体,所有正样本都用一个确定的系数来加权。它用于类别不平衡的情况。

Lovász-Softmax loss

这个损失直接在神经网络中基于子模块的凸Lovasz扩展损失来优化平均IOU损失。

其他值得一提的损失有:

  • TopK loss 其目的是确保网络在训练过程中集中于困难样本。
  • Distance penalized CE loss 让网络去重点优化难以分割的边界区域。
  • Sensitivity-Specificity (SS) loss 计算特异性和敏感性的均方差的加权和。
  • Hausdorff distance(HD) loss 估计了卷积神经网络的Hausdorff距离。

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

图像分割数据集

如果你还在看,你可能会问自己从哪里可以获得一些数据集来开始。

让我们来看一些。

Common Objects in COntext — Coco Dataset

COCO是一个大型的物体检测、分割和图像描述数据集。包含91个类。它有25万人拥有关键点,它包含80个对象类别。

链接:https://www.tensorflow.org/datasets/catalog/coco

PASCAL Visual Object Classes (PASCAL VOC)

PASCAL有20个不同的类,9963张图片。训练/验证集是一个2GB的tar文件。

链接:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/

The Cityscapes Dataset

这个数据集包含城市场景的图像。它可以用来评价视觉算法在城市场景中的性能。

链接:https://www.cityscapes-dataset.com/downloads/

The Cambridge-driving Labeled Video Database — CamVid

这是一个基于运动的分割和识别数据集。它包含32个语义类。

链接:http://mi.eng.cam.ac.uk/research/projects/VideoRec/CamVid/

图像分割框架

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

  • FastAI library  — 给定一个图像,这个库能够给图像中的物体创建一个掩码。
  • Sefexa Image Segmentation Tool](http://www.fexovi.com/sefexa.html) — Sefexa是一个免费的工具,可以用于半自动图像分割,图像分析,并创建ground truth。
  • Deepmask — Deepmask是Facebook Research的DeepmaskSharpMask的一个Torch的实现。
  • MultiPath — 这是一个Torch实现的物体检测网络来自“A MultiPath Network for Object Detection”。
  • OpenCV — 这是一个开源的计算机视觉库,有超过2500个优化过的算法。
  • MIScnn — 是一个医学图像分割开源库。它允许使用最先进的卷积神经网络和深度学习模型在几行代码中建立pipeline。
  • Fritz — Fritz提供多种计算机视觉工具,包括用于移动设备的图像分割工具。

最后的一点想法

希望本文为你提供了一些图像分割的背景知识,并提供了一些工具和框架,你可以使用这些工具和框架来入门。

我们讨论了:

  • 什么是图像分割
  • 几个图像分割架构
  • 一些图像分割损失
  • 图像分割工具和框架

分割快乐!

END

英文原文:https://neptune.ai/blog/image-segmentation-in-2020?utm_source=medium&utm_medium=crosspost&utm_campaign=blog-image-segmentation-2020

往期精彩回顾





获取本站知识星球优惠券,复制链接直接打开:

https://t.zsxq.com/y7uvZF6

本站qq群704220115。

加入微信群请扫码:

浏览 27
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报