精华内容
下载资源
问答
  • Matlab边缘检测和区域生长图像分割算法代码-regiongrow.m 我的毕业设计,顺利通过。希望对朋友们有帮助。
  • Matlab边缘检测和区域生长图像分割算法代码-deer.m 我的毕业设计,顺利通过。希望对朋友们有帮助。
  • 前言计算机视觉中有四个主要方向,主要包括:1,图像分类,分类解决的是这张图是什么的问题。2,图像定位,定位解决的是某物在图中具体位置的... 图像分割又分了2个方向,包括: a)语义分割(semantic segmentation)...

    前言

    计算机视觉中有四个主要方向,主要包括:

    1,图像分类,分类解决的是这张图是什么的问题。

    2,图像定位,定位解决的是某物在图中具体位置的问题。

    3,图像检测,检测解决的是这张图中有没有某物,该物在这张图哪个位置的问题。

    4,图像分割,分割解决的是图中每一个像素属于哪个物体或者场景的问题。

         图像分割又分了2个方向,包括:

         a)语义分割(semantic segmentation)

    7f0a94a3792761ab8744a1355309ee9b.png

    fefc471ac504bfe55fd5300b718d040f.png

           语义分割为图像中的每个像素分配一个类别,如把画面中的所有物体都指出它们各自的类别。如上图中,把图中的人、羊、狗、草地所在像素都分别分类为对应的类别,然后用不同颜色表示出来(注意上图中所有羊都是用蓝色表示的,这一点和实例分割不同)。

          语义分割算法主要有:U-Net、SegNet、DeepLab系列、FCN、ENet、ICNet、ShelfNet、BiseNet、DFN和CCNet等网络

         b)实例分割(instance segmentation)

    7f0a94a3792761ab8744a1355309ee9b.png

    284dab7b1be4bd6d73d1171e24c6a638.png

           与语义分割不同,实例分割只对特定物体进行类别分配(注意上图中所有羊是用不同颜色表示的,这一点和语义分割不同),这一点与目标检测有点相似,但目标检测输出的是边界框和类别,而实例分割输出的是掩膜(mask)和类别。

          实例分割算法主要有:FCIS、DeepMask、Mask R-CNN 和 PANet 等网络。

         参考网上的资料,下面简单罗列一下这几个方向当前的主要算法。一,各图像分割算法概述1.FCN

    1)论文地址

    https://arxiv.org/abs/1411.4038

    2)算法框架图:

    ea0e7e7e8edb0fe2956470899dd35f3d.png

          FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全连接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。

          简单的来说,FCN与CNN的区域在把于CNN最后的全连接层换成卷积层,输出的是一张已经Label好的图片。

    3)主要贡献与不足:

    • 使端对端的卷积语义分割网络变得流行起来。

    • 通过deconvolutional layers进行上采样。

    • 通过skip connection改善了上采样的粗糙度。

    • FCN对图像进行了像素级的分类,从而解决了语义级别的图像分割问题;

    • FCN可以接受任意尺寸的输入图像,可以保留下原始输入图像中的空间信息;

    • 得到的结果由于上采样的原因比较模糊和平滑,对图像中的细节不敏感;

    • 对各个像素分别进行分类,没有充分考虑像素与像素的关系,缺乏空间一致性。

    2.U-Net

    1)论文地址

    https://arxiv.org/pdf/1505.04597v1.pdf

    2)算法框架图:

    ef0912e1927edbeea5570ec62188f5b4.png

          U-Net之前图像分割还有一篇经典的FCN网络,U-Net扩展了FCN使其效果更好并仅仅需要少量的标注数据。

         U-Net最初应用于医学图像分割上,其后在其它的领域得到了广泛的应用。整个U-Net网络结构如上图所示,类似于一个大大的U字母:首先进行Conv+Pooling下采样;然后Deconv反卷积进行上采样,crop之前的低层feature map,进行融合;然后再次上采样。重复这个过程,直到获得输出388x388x2的feature map,最后经过softmax获得output segment map。总体来说与FCN思路非常类似。那他们的不同点在哪?拼接方式不同!

    3)主要贡献与不足:

    784fc484982a9027b4cff1444b354fc1.png

    • 与FCN逐点相加不同,U-Net采用将特征在channel维度拼接在一起,形成更“厚”的特征

    3.SegNet

    1)论文地址https://arxiv.org/abs/1511.00561

    2)算法框架图:

    05325f495e223262526eee96650b993e.png     FCN的upconvolution层+shortcut connections产生的分割图比较粗糙,因此SegNet增加了更多的shortcut connections。不过,SegNet并不是直接将encoder的特征进行直接复制,而是对maxpooling中的indices进行复制,这使得SegNet的效率更高。

    3)主要贡献与不足:

    • 使用Maxpooling indices来增强位置信息。

    • 保存了高频部分的完整性;
    • 网络不笨重,参数少,较为轻便;

    • 对于分类的边界位置置信度较低;

    • 对于难以分辨的类别,例如人与自行车,两者如果有相互重叠,不确定性会增加。

    4.DeepLab(v1,v2)

    1)v1论文地址https://arxiv.org/abs/1412.7062

         v2论文地址https://arxiv.org/abs/1606.00915

    2)算法框架图:

    69416e4445e53de64558a8500027be55.png

          DeepLabv1DeepLabv2网络都使用带孔卷积(Atrous Convolution)和全连接的条件随机场(Conditional Random Field,CRF),除了DeepLabv2有一个额外的技术叫做空间金字塔池化Atous Spatial Pyramid Pooling(ASPP),这是DeepLabv2与DeepLabv1的主要区别。(还有其他差别,例如:DeepLabv2使用ResNet和VGGNet进行实验,但DeepLabv1仅使用VGGNet。)3)主要贡献与不足:
    • 使用atrous卷积,也就是后来的空洞卷积,扩大感受野,保持分辨率。

    • 提出了atrous spatial pyramid pooling (ASPP),整合多尺度信息。

    • 使用全连接条件随机场(fully connected CRF)进行后处理,改善分割结果。

    5.RefineNet

    1)论文地址https://arxiv.org/abs/1611.06612

    2)算法框架图:

    29b4e1d34b887e96fbceddd84789bb20.png

          RefineNet是一种多路径强化网络。RefineNet显式的利用了下采样过程的所有信息,使用远程残差连接来实现高分辨率的预测。此时,浅层的完善特征可以直接的用于强化高级的语义特征。3)主要贡献与不足:
    • 精心设计了encoder-decoder架构中的decoder部分,使得性能提升。

    • 整个网络的设计都遵循residual connections,网络表达能力更强,梯度更容易反向传播。

    • 提出了多路径网络,利用多级别的抽象用于高分辨率语义分割;
    • 通过使用带残差连接的同态映射构建所有组件,梯度能够在短距离和长距离传播,从而实现端到端的训练;
    • 提出了链式残差池化模块,从较大的图像区域俘获背景上下文。使用多个窗口尺寸获得有效的池化特征,并使用残差连接和学习到的权重融合到一起。
    6.PSPNet

    1)论文地址https://arxiv.org/abs/1612.01105

    2)算法框架图:

    484c9824a3b0c09babc6c7102ba34adc.png

           尽管ResNet的感受野在理论上已经可以达到大于输入图像尺寸,但是Zhou等人也证明了CNN的经验感受野实际上比理论值小很多。因此,需要一个更有效的全局先验的描述方式。       上图是PSPNet论文中提出的基于金字塔池化模型的网络结构。其中,虚线框出来的部分属于金字塔池化模型。实验中分别用了1x1、2x2、3x3和6x6四个尺寸,最后用1x1的卷积层计算每个金字塔层的权重,再通过双线性恢复成原始尺寸。最终得到的特征尺寸是原始图像的1/8。最后在通过卷积将池化得到的所有上下文信息整合,生成最终的分割结果。此外,文中还应用了两个损失函数,分别用于约束主干分割网络和校正网络。3)主要贡献与不足:
    • 使用pyramid pooling整合context。

    • 使用auxiliary loss。

    7.DeepLab v3

    1)论文地址https://arxiv.org/abs/1706.05587

    2)算法框架图:

    a76d68bec17ab13822d244bcad1a6f21.png

          DeepLabv3进一步探讨空洞卷积,这是一个在语义分割任务中:可以调整滤波器视野、控制卷积神经网络计算的特征响应分辨率的强大工具。为了解决多尺度下的目标分割问题,DeepLabv3设计了空洞卷积级联或不同采样率空洞卷积并行架构。此外,DeepLabv3强调了ASPP(Atrous Spatial Pyramid Pooling)模块,该模块可以在获取多个尺度上卷积特征,进一步提升性能。

    3)主要贡献与不足:

    • 使用了Multi-Grid 策略,即在模型后端多加几层不同 rate 的空洞卷积

    • 将 batch normalization 加入到 ASPP模块.

    • 具有不同 atrous rates 的 ASPP 能够有效的捕获多尺度信息。不过,论文发现,随着sampling rate的增加,有效filter特征权重(即有效特征区域,而不是补零区域的权重)的数量会变小,极端情况下,当空洞卷积的 rate 和 feature map 的大小一致时, 1975a984-1535-eb11-8da9-e4434bdf6706.svg 卷积会退化成 1b75a984-1535-eb11-8da9-e4434bdf6706.svg :

    ac8ad0b3c5d9de6021e3bfcd919db834.png

    • 为了保留较大视野的空洞卷积的同时解决这个问题,DeepLabv3 的 ASPP 加入了 全局池化层+conv1x1+双线性插值上采样 的模块:

    87bef003767fb360b66308152570a4c8.png

    8.DeepLab v3+

    1)论文地址https://arxiv.org/abs/1802.02611

    2)算法框架图:

    da0ef2ef316bdb903fceba0a9ad7ea33.png

           DeepLab V3+ 最大的改进是将 DeepLab 的 DCNN 部分看做 Encoder,将 DCNN 输出的特征图上采样成原图大小的部分看做 Decoder ,构成 Encoder+Decoder 体系,双线性插值上采样便是一个简单的 Decoder,而强化 Decoder 便可使模型整体在图像语义分割边缘部分取得良好的结果。      具体来说,DeepLabV3+ 在 stride = 16 的DeepLabv3 模型输出上采样 4x 后,将 DCNN 中 0.25x 的输出使用 1b75a984-1535-eb11-8da9-e4434bdf6706.svg 的卷积降维后与之连接(concat)再使用 1975a984-1535-eb11-8da9-e4434bdf6706.svg 卷积处理后双线性插值上采样 4 倍后得到相对于 DeepLabv3 更精细的结果。3)主要贡献与不足:
    • 借鉴MobileNet,使用 Depth-wise 空洞卷积+ 1b75a984-1535-eb11-8da9-e4434bdf6706.svg 卷积:

    9430bb1fbff2a717e5d2b3c9849f504c.png

    • 使用修改过的 Xception:

    e265715a980a827b77f7fe2f9be1acd6.png

    9.MaskRCNN

       MaskRCNN之前有解析过,这里就不做描述了。

    总结一下,图像分割基本思路:

    1. 下采样+上采样:Convlution + Deconvlution/Resize

    2. 多尺度特征融合:特征逐点相加/特征channel维度拼接

    3. 获得像素级别的segement map:对每一个像素点进行判断类别

    ,图像分割数据集

    主要有:COCO、KITTI 和 ApolloScape等数据集。

    三,图像分割标注工具

    主要有:labelme、labelImgPlus和 labelbox等工具。

    cbd763565e932c341541708e9534c90c.png

    展开全文
  • 作者:AmusiDate:2019-12-03微信公众号:CVer链接:大盘点 | 2019年5篇图像分割算法最佳综述前言上次盘点了2019年 目标检测比较亮眼的综述汇总,详见: 大盘点 | 2019年4篇目标检测算法最佳综述。很多 CVers反映:...

    8ea9ed89a34f38f479cd38f142ed44d7.png
    作者:Amusi
    Date:2019-12-03
    微信公众号:CVer
    链接:大盘点 | 2019年5篇图像分割算法最佳综述

    前言

    上次盘点了2019年 目标检测比较亮眼的综述汇总,详见: 大盘点 | 2019年4篇目标检测算法最佳综述。很多 CVers反映:有没有图像分割的综述大盘点,有没有目标跟踪的综述大盘点,有没有...

    那么本文盘点的就是2019年 图像分割综述(Image Segmentation Review)

    其实图像分割包含的子方向比较多,如语义分割、实例分割、全景分割,甚至还可以把医学图像包含进来(有些就不是2D Image),这里并不做严格要求,看情况符合就好。

    本文分享的综述将同步推送到 github上,欢迎大家 star/fork(点击阅读原文,也可直接访问):

    https://github.com/amusi/daily-paper-computer-vision

    图像分割论文

    【1】Understanding Deep Learning Techniques for Image Segmentation

    时间:2019年7月

    作者:贾达珀大学

    链接:https://arxiv.org/abs/1907.06119

    推荐指数:★★★★★

    注:58页的图像分割综述,共计224篇参考文献。本综述介绍了从2013年到2019年,主流的30多种分割算法(含语义/实例分割),50多种数据集。

    c7c7af01843c4706fb4a4a57ff2a328e.png
    深度学习主流的模块"操作"示意图

    8d098e8f753f4cf7a3dc84d96e5ded12.png
    图像分割数据集

    00fe9ff4c71c2050a87f125187be8c61.png
    基于深度学习的主要分割算法

    92394217bb88b05ad2d96018067d6110.png
    RCNN家族

    a87e414e0b478e15a6934c7cc21eb704.png
    U-Net

    【2】Embracing Imperfect Datasets: A Review of Deep Learning Solutions for Medical Image Segmentation

    时间:2019年8月

    作者:体素科技(VoxelCloud)

    链接:https://arxiv.org/abs/1908.10454

    推荐指数:★★★

    注:26页的医学图像分割综述,超过130+篇参考文献。

    203f554c70eda3b9de28d008b7f33e67.png
    本综述章节架构

    bfd6ab6753800ecb3118b84b974c162a.png

    13d18f2e2462059a15b4435c04d13f7f.png
    方法总结

    【3】Deep Semantic Segmentation of Natural and Medical Images: A Review

    时间:2019年10月

    作者:西蒙弗雷泽大学&蒙特利尔大学等

    链接:https://arxiv.org/abs/1910.07655

    推荐指数:★★★★★

    注:21页的图像分割综述,共计181篇参考文献,从 FCN(2014) 到 Auto-DeepLab(2019)。

    3d2ae4e050aa5564c467526d6441facc.png
    基于深度学习的主要分割方法

    1fbc8b9a35305b793fe071bc24ea0367.png
    DeepLabV3+

    6f32879f0eea1bce8cd3507c1f5ae3cb.png
    在PASCAL VOC 2012数据集上的算法性能对比

    【4】Deep learning for cardiac image segmentation: A review

    时间:2019年11月

    作者:帝国理工学院&伦敦大学&伯明翰大学

    链接:https://arxiv.org/abs/1911.03723

    推荐指数:★★★★★

    注:47页的图像分割综述,超过250+篇的参考文献,本医学图像分割综述从FCN(2014)到Dense U-net(2019),论文中光画图的工作量就超级大!

    0594e43e54c4d3a90638a208e2d1f677.png
    心脏图像分割任务

    9176870a2c0dc19ffa2299ab43074ad8.png
    FCN和U-Net

    8795f267733361a9f24c9bda5bc95a3c.png
    用于心脏MRI分割的深度学习方法

    【5】Machine Learning Techniques for Biomedical Image Segmentation: An Overview of Technical Aspects and Introduction to State-of-Art Applications

    时间:2019年11月

    作者:斯坦福大学

    链接:https://arxiv.org/abs/1911.02521

    推荐指数:★★★★

    注:35页的图像分割综述,共计134篇参考文献,从U-Net到V-Net。

    191a71749eb4112aa313062361c0eeaf.png
    深度学习术语定义

    028a287d0426d717827258ea0a3cb96a.png
    Cascaded CNN for tumor segmentation

    福利

    为了方便下载,我已经将上述5篇综述论文打包,百度云资源如下:

    链接:https://pan.baidu.com/s/1m12K1yOgjLy2xfDuKnxz9w
    提取码:u3j2

    如果各位 CVer 喜欢这样的盘点,请给这篇文章点个赞,如果点赞的人多,其它CV方向(跟踪等)的大盘点系列也会尽快推出!也欢迎大家加入CVer-图像分割交流群和医疗影像交流群,目前已经超过2000人!具体加入方式详见:CVer微信公众号

    展开全文
  • 每天收到这样的好资讯本文提出了一种利用综合颜色特征(ACCF)和区域生长法对叶片病斑进行分割的方法,植物表型资讯介绍如下:在田间条件下获取叶片病斑图像主要面临两大挑战,一是背景杂乱,二是光照不均匀,这使得...

    点击蓝色字95ca40151619a733303bf27aaeddcc64.png免费订阅,每天收到这样的好资讯

    本文提出了一种利用综合颜色特征(ACCF)和区域生长法对叶片病斑进行分割的方法,植物表型资讯介绍如下:

    5430da07f06a2114fe0d7977750e840d.gif

    在田间条件下获取叶片病斑图像主要面临两大挑战,一是背景杂乱,二是光照不均匀,这使得图像分割的鲁棒性降低。为了克服这些困难,本文提出了一种利用综合颜色特征(ACCF)和区域生长法对叶片病斑进行分割的方法。

    18f38bd20959f14cbca1d633f5382e0b.png

    叶片病斑图像分割的一般流程框架图

    56e06a3b9353249bb68018ae7d5027a2.png

    (a)彩色图像(b)CCF(c)CCF图(d)二值化图像

    研究人员首先利用奇异值分解(SVD)方法对图像不同颜色空间、颜色索引以及彩色到灰度转化进行综合颜色特征检测,以有效地区分不均匀照明的叶片病斑。然后在叶片病斑分割中,采用区域生长法,通过在ACCF图中交互选择生长种子来消除杂波背景,结果显示,在大田条件下,该分割方法的平均准确度达到87%。综上所述,本文所提出的方法能够对作物叶片病斑图像进行分割。

    4378748b0db7bc8e980c8efc91dca7ca.png

     (a)彩色图像(b)区域生长(c)分割图像

    878f6880e594a784e7fc9337278085a5.png

     (a) 彩色图像 (b) K means (c)OTSU (d)CCF method (e)本文提出的算法.

    来源:

    Jothiaruna N., K. Sundar K. J A and Karthikeyan B.. A segmentation method for disease spot images incorporating chrominance in Comprehensive Color Feature and Region Growing. Computers and Electronics in Agriculture. https://doi.org/10.1016/j.compag.2019.104934

    1647ed372da8d1194e6c883170eb13e4.png

    扩展阅读:

    植物表型资讯两周年目录汇总

    植物表型资讯2019年1-7月目录汇总7fe66cde158d9bdbeead513d61fa9a3b.png

    展开全文
  • 图像语义分割(Semantic Segmentation)ContentsFCNU-netSegNetDeepLab v1RefineNetPSPnetDeeplab v2、v3Some definitions 与目标检测不同,语义分割任务不但要对图片中的物体的位置和类别进行预测,还要精确地...

    d4a5822d917f112ec3154e987464e171.png

    图像语义分割(Semantic Segmentation)

    Contents

    FCN

    U-net

    SegNet

    DeepLab v1

    RefineNet

    PSPnet

    Deeplab v2、v3

    Some definitions

     与目标检测不同,语义分割任务不但要对图片中的物体的位置和类别进行预测,还要精确地描绘出不同类物体之间的边界(注意是不同类物体,而不是不同物体。若对同一类的不同物体也进行区分,则为实例分割(instance segmentation)。语义分割只考虑类别。)。因此,对图像的语义分割可以看成是对图像中的每个像素点的逐点分类。

    图像语义分割相对于整图分类或者目标检测的一个重要的困难点在于:该任务一方面要求高层语义特征(正确分类),又要求轮廓尽可能贴合真实的边界(像素级别要对齐)。这两个要求实际上是相反的,语义层级高意味着整体、coarse,也就是不关注具体的像素细节,而关注整体的形态。而像素级别的轮廓则要求特征尽可能的fine-grained,即少关注高层语义,多关注边缘、细节这类low-level的特征。语义分割的优化,基本就是以解决此问题为最终目标,对模型进行改进。

    Evaluations of semantic segmentation task

    • pixel accuracy: 分类正确的像素点占总体的比例。相当于普通样本分类问题中的acc。
    • mean accuracy: 每个类别的分类的acc的平均值。类似目标检测中的mAP。
    • mean IU: 平均IoU,即每个类别的IoU的平均值。
    • frequency weighted IU: 对mean IU进行加权,权重为该类别的比例。
    • BF(Boundary F1-score): 对所有的ground-truth和prediction的轮廓(contour)点进行比较,计算准确率和召回率,得到F1-score。注意,由于轮廓不会完全精准,因此这里的准确指的是在一定容忍范围内的相等(distance error tolerance),即prediction的轮廓上点与gt上点的距离小于某个阈值。(Reference : [1] Csurka, G., D. Larlus, and F. Perronnin. "What is a good evaluation measure for semantic segmentation?" Proceedings of the British Machine Vision Conference, 2013, pp. 32.1-32.11.)

    Semantic Segmentation Task

    FCN

    reference: Fully Convolutional Networks for Semantic Segmentation

    Jonathan Long_ Evan Shelhamer_ Trevor Darrell

    UC Berkeley

    FCN是第一个用分类CNN处理图像语义分割的模型。实际上,如果不考虑分类CNN的全连接层, 仅考虑conv和pool的话,最终生成的二维图形其实就是对应的每个位置(区域)的类别的heatmap,只不过在整图分类的任务中,这个heatmap中的信息被整合在一起了。关于CNN全连接层之前的feature map可以表示对应区域的预测结果这一结论,早在整图分类的某经典模型中就已经提出了,FCN处理语义分割就是沿用了这一思路。

    FCN的基本网络结构如下:

    5a95209bd6e55d85745c20ac42829ba9.png

    可以看出,FCN首先按照整图分类的方式,对原始图像进行卷积+下采样,直到某个较高的层次(小尺寸feature map),此时网络已经提取了各个位置的高层语义信息。然后,将最后这个含有语义信息的feature map上采样到原图的大小,然后加上一个1x1的conv层,conv层共有21个filter(即输出的channel数目为21),分别预测该像素属于21个类别的概率(20个object类别+1个背景)。并与原图的GT 分割轮廓标签对齐,进行训练优化。

    对于FCN来说,由于多次池化后,feature map的尺寸非常小,虽然包含了较多的语义信息,但是并不精确,无法做到像素级别的要求,因此,考虑将前面的语义较低但是细节较丰富的feature map与最后一层进行结合,并基于此结果进行升采样和预测。如图所示:

    15e9d59b0ab7aae49f1daf9dd7f6f934.png

    根据包含的最细(fine-grained)grid的feature map的下采样/池化倍数(可以理解为conv的stride的大小),获得的三种不同模型分别称为FCN-32s、FCN-16s和FCN-8s。其中s前面的数表示和原图相比分辨率降了几倍。可以看出,8s的相对细节更多,实验结果也证实了这一结论。

    不同分辨率的feature map的合并方式如下:以FCN-8s为例,首先对conv7的结果进行4x上采样,然后对pool4结果进行2x上采样,此时这三个(包括pool3的结果)feature map已经大小相同了。然后将三者进行求和。

    除了与前面的feature map合并以外,作者还提到有另一种可以获得finer detailed prediction的方法,即shift-and-stitch。

    U-net

    reference: U-Net: Convolutional Networks for Biomedical Image Segmentation
    Olaf Ronneberger, Philipp Fischer, and Thomas Brox
    Computer Science Department and BIOSS Centre for Biological Signalling Studies,
    University of Freiburg, Germany

    U-Net最初是用于医学图像分割的,现在仍然再医学影像处理中有应用。其网络的基本结构如下:

    48518d4fd8569c7242456b02c0afce27.png

    Ciresan et al.先前的工作利用一个滑动窗对每个像素进行预测,输入是一个局部的区域(patch),然后通过CNN预测出中心点所属的类别(该类型方法再高光谱分类任务中也有应用)。这样做可以预测位置的类别,但是滑动窗切出来的patch数量要远远超过图像本身的数量,而且,由于patch有很多重叠部分,重复计算较多,效率比较低。另外,还有一个问题在于,patch的大小(对context的使用)和定位的准确性这两者之间具有一个trade-off的过程,patch越大,能利用的信息就越多,但是max pooling也更多,导致分类的结果不一定就是中心点的类别,有可能会受到其它点的影响,因此定位会不准确。而如果要得到一个准确的定位,那么势必要减少外围的干扰,即减小patch的尺寸,但这样又会导致语义信息不全面。

    因此,U-net复用了FCN的基本思路,但是再后面的上采样阶段上做了改进。首先,增加了上采样阶段(网络后半段)的feature map数量,并且通过跳线将原始的像素级的底层特征合并到后面的预测阶段,从而增加定位的准确性。整个网络为U型,前后基本对称。相同层级的下采样和上采样上的feature map都通过跳线进行合并。

    除此以外,由于U-net处理的是尺寸较大的医学图像,因此也需要切分成小一些的区域分别进行训练,为了处理边界问题,对于大图内部的小区域,可以切的大一些,然后输出只保留内部的部分(相当于用周围真实的图像内容进行镶边);对边界的区域,镜像外推插值(extrapolation),从而使得最终的输出在valid卷积的情况下,输出刚好等于设定的大小。

    U-net的loss函数就是类别的交叉熵:

    f2831d18b37f7cea58606fd59271bf04.png

    但是对于细胞分割,不同的instance之间的交界问题比较明显,因此,还加入了一个权重变量:

    7535c91c7cb983251c1363e536a397c2.png

    其中,wc是用来平衡不同类别的权重map,w0是预设的参数,d1和d2分别表示到距离最近和第二近的细胞边界的距离。也就是说,对于距离边界越近的pixel惩罚越大,反之,越远的惩罚越小,以此在训练中关注border pixels。

    另外,考虑到样本量小的情况,U-net的作者对已有的图像进行了大量的数据增广,比如:旋转、平移,模拟人体组织中的形变。增加数据量,并且让网络学习到这些形变下的不变性。最终,U-net在很小的标注样本集上(30张图像,512*512)进行训练,花了10个GPU hour(Titan 6GB),比较高效地获得了很好的效果。

    SegNet

    reference: SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
    Vijay Badrinarayanan, Alex Kendall, Roberto Cipolla, Senior Member, IEEE,

    SegNet设计的初衷是为了处理街景理解任务(road scene understanding),它的最主要的特点在于它的非线性上采样(non-linear upsampling)。SegNet的encoder部分采用了VGG16的结构,然后将全连接去除,加上上采样的decoder网络,实现端到端的训练。SegNet文章对它的decoder与FCN的decoder进行的分析。

    SegNet的基本结构如下所示:

    c00fcdf886a43c4c9d074478c65c6fa1.png

    首先,SegNet也是一个encoder-decoder架构,encoder阶段就是常规的conv+BN+ReLU,然后接上max pooling进行下采样。但是在SegNet中,max pooling阶段取出每个max的所在的位置index,然后将其储存起来,并传到decoder中对应的上采样步骤,然后,在通过多次conv+BN+ReLU,对上采样的结果进行处理,并输出给下一层。这种架构的思路来源于无监督的图像分类pretrain模型,以及神经网络可视化也用到了类似的模型。与pretrain模型最终只保留encoder有所不同,SegNet是端到端的网络,encoder和decoder都用来训练和预测。

    e3109562060cb1f33fd4207bf18719b9.png

    上图表示的即SegNet的max pooling indeces的上采样方法。不同于直接进行插值或者deconv得到更大尺寸的feature map,SegNet存储的是每一级max pooling时那些被转移到下一级的最大值的坐标点的位置index。因此,通过这种方式上采样后的直接输出是一个稀疏矩阵,只在那些产生局部max的点处有值。然后,将这个稀疏矩阵用具有可学习的参数的decoder filters进行卷积滤波,得到输出结果。

    实际上,为了保持高分辨率的细节,最好的方法自然是将所有的encoder的feature map都存起来(右图的FCN即如此,先将encoder的feature map进行通道压缩,得到和deconv后的feature map同样大小的tensor,然后直接逐点相加)。但是这只是在预测时间以及存储空间无限制的情况下的方案。SegNet仅仅保存max pooling的indices,那么,以2x2的pooling为例,每个2x2中的位置只需要2个bit就能存储。大大减小了资源消耗。

    在SegNet的文章中,作者发现各种分割网络的encoder都区别不大,主要的差异在decoder部分,因此,文章对比了多种decoder的方法,结果如下:

    2518b34777d19ff36bb2ee0fc944a201.png

    通过上述比较可以得出一些结论:首先,双线性插值效果最差,说明需要学习decoder中的deconv卷积。另外,在同等效果的情况下,SegNet相比于FCN具有效率上的优势,即存储空间小。SegNet的参数量和直接bilinear插值的参数量是基本一样的,因为2bit的位置记录所占的空间相对可以忽略不计。另外,通过BF metric的结果可以看出,加入encoder的feature map有助于对边界的刻画。总的来说,效果最好的方法就是讲整个encoder feature map直接用上,但是这也是效率上最差的解决方案。

    SegNet的训练阶段细节如下:损失函数是交叉熵,下降方式为带有动量的SGD,参数初始化用的是He方法,每个epoch对所有样本进行shuffle,然后取mini-batch逐批次训练。除此之外,考虑到不同类别的频率不同,对样本进行了平衡,用的方法为 median frequency balancing(中位数频率平衡),基本思路是对不同类别施加不同的权重,权重为 频率中位数/该类别频率 (median of class frequency / class frequency)。这样一来,类别越少的,权重越大,避免长尾类别对训练的贡献被高频类别压制。

    Deeplab v1

    Reference:

    [1] SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED CRFS
    Liang-Chieh Chen Univ. of California, Los Angeles lcchen@cs.ucla.edu
    George Papandreou Google Inc. gpapan@google.com
    Iasonas Kokkinos CentraleSup´elec and INRIA iasonas.kokkinos@ecp.fr
    Kevin Murphy Google Inc. kpmurphy@google.com
    Alan L. Yuille Univ. of California, Los Angeles yuille@stat.ucla.edu[2] Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials
    Philipp Kr¨ahenb¨uhl
    Computer Science Department
    Stanford University
    philkr@cs.stanford.edu
    Vladlen Koltun
    Computer Science Department
    Stanford University
    vladlen@cs.stanford.edu

    DeepLab论文在一开始就提出了将DCNN应用在语义分割任务上所不得不解决的两个困难:1. 信号的多次下采样,导致分辨率的降低; 2. CNN本身对于空间位置的不敏感(spatial insensitivity/invariance)。这两个问题导致DCNN在用于逐pixel的分割任务时,在细节的保持上不准确,空间准确率降低。

    为了解决第一个问题,即max pooling导致分辨率降低,DeepLab用了空洞卷积(atrous conv)来代替pooling扩充感受野。为了解决第二个问题的关键在于对图像空间细节(fine-details)的保持,因此,引入了全连接CRF(fully-connected CRF)。因此,DeepLab结构实际上就是一个带atrous conv的DCNN和一个CRF结构的两阶段的结合。

    首先是空洞卷积,形式如下(一维情况下的示例,二维类似):

    a4837ff75c41f11876c1ba1231dd28a9.png

    空洞卷积在文章中也被称作“洞算法(hole algorithm)”,被应用在VGG的后面几层,用于提高分辨率(将原本stride=32的VGG模型变成了stride=8)。在代码实现层面,由于caffe中的卷积是通过im2col然后和flatten后的filter(conv kernel)进行矩阵乘积得到的,因此,这里只需要修改im2col即可,给im2col增加一个可以不按照紧邻的元素进行采样,而是有间隔的采样方法。通过制定空洞卷积的参数,就可以采样得到对应不同感受野的patch,后续过程就和普通的卷积一样了。

    其次是fc-CRF,全连接的条件随机场。CRF的作用是对最终产生的score map进行精细化,得到物体的边缘和细节。通常的short-range CRF一般用来对手工特征弱分类器的预测进行平滑,而对于DCNN的输出来说,已经足够平滑,而且消除掉了一些细节信息。为了克服short-range CRF的缺点,这里采用了fully-connected CRF。其energy function(实际上相当于惩罚函数)基本形式如下:

    71849ecc5859343a621ff1d183e9eda4.png

    1580b7f102724fb86f784f96464d96b5.png

    227d0267bcda68c2d112c9ba2d274748.png

    下面逐一进行解释:首先,惩罚函数分为两部分,其一是每个像素点自己的能力函数,其二是像素点之间的相互的能量函数(pairwise potential)。第一部分很简单,就是概率的负对数;第二部分中的每个theta_i,j (x_i, x_j) 都可以看成是两部分的乘积:第一部分是mu,第二部分是一个summation。mu被称为标签相容性函数(label compatibility function),实际上是一个示性函数,即:mu(x_i, x_j) = [ x_i != x_j ],也就是说,当两个像素点的类别相同时,mu这个系数等于0,即不进行惩罚,相反,如果两个像素点类别不同,则进行惩罚(具有较高的能量),而能量的大小与两者的相似性成正比,换句话说,当两个pixel在位置和取值上都很相似,但是类别不同的时候,就需要对这样的点对进行惩罚。

    另外要注意的一点是:这里的i和j是针对图像中所有像素点的,因此,该方法计算的是所有像素点对之间的pairwise potential(互势能?),因此,与局部的CRF不同,该方法被称为fully-connected CRF。

    下面看theta函数中的后面的summation项,定义如下:

    a06d41cda46e9d38219ef1ddaac0d8d7.png

    上式中的p代表position,I代表color vector。前一项的exp部分很明显是一个双边滤波(bilateral)的高斯核,而后一项则是位置的高斯核。前一项被称为appearance kernel,后一项称为smoothness kernel。直观理解即:当两个pixel的位置比较近,且颜色比较相近时,这两点的互势能更高,即惩罚更严重(只考虑label assignment不同的pixels)。

    0e2f0d8fe078768d8997a27243ff00e8.png

    682ab5c487d769eaa502e3c4796b23b0.png

    除此之外,DeepLab还用了多尺度预测的trick,即将输入图像以及前面的四个max pooling的输出结果通过128*3*3+128*1*1两次卷积后,concat主网络的输出的feature map。通过整个方法,feature map的通道数增加了5*128个,对于定位的效果也有一定提升。

    RefineNet

    待补充

    PSPnet

    待补充

    Deeplab v2、v3

    待补充

    展开全文
  • 基于区域生长图像分割算法及其实现曾春玲,2011441794(重庆科技学院测控2011-02)摘要:图像分割的目的是将图像划分为不同的区域,基于区域生长是以直接找寻区域为基础的分割技术。是图像处理和计算机视觉的基本...
  • 通过区域生长法对右心室MRI图像进行分割算法研究,区域生长法要想区域分割算法能够成功的三个重要因素是,选择合理的种子点像素,设计针对特定图像合理的生长准则,制定合理的生长停止的条件。通过采用置信连接与...
  • 基于图像腐蚀和区域生长的煤矸石图像分割算法,宋永宝,孙伟,图像分割在煤矸石自动分选中具有十分重要的作用,本文通过分析煤矸石图像特点,提出了一种融合图像腐蚀和区域生长图像分割算法
  • PCL 基于区域生长分割算法

    千次阅读 2018-12-07 21:22:57
    区域生长分割算法广泛应用于图像分割中,二维图像常常采取区域生长分割算法实现图像分割,由于其分割的高效性,现已被应用于3D分割中,PCL中的类PCL :: RegionGrowing用来实现点云的区域生长分割区域生长分割是基于...
  • 为克服一般区域生长算法对初始种子点选择以及生长顺序鲁棒性较差的问题,提出了一种鲁棒于生长顺序的彩色图像区域生长算法。首先计算所有像素点的局部颜色直方图以及领域相似性指标(neighbor similarity factor,NSF);...
  • 为克服传统区域生长算法对初始种子像素选择以及生长顺序鲁棒性较差等缺点,提出了一种基于蚁群算法优化区域生长的彩色图像分割方法。首先,根据给定阈值,利用蚁群算法自动选取种子像素,然后,根据相邻距离di和...
  • 区域生长算法很好的实现了图像分割,以及边缘提取
  • 文档,基于MATLAB的彩色图像分割期刊
  • 提出了一种基于图像子块的区域生长算法,应用于彩色图像分割。首先将图像划分成多个不重叠子块,然后利用从CIE L*a*b*颜色空间中提取出的每个子块的颜色和纹理特征,先进行子块内颜色聚类,达到子块分类的目的,再...
  • 可参考:图像处理算法1——区域生长区域生长算法 C++实现 区域生长算法的一种C++实现
  • 论文编号:DZXX399 论文字数:12586,页数:30摘要本课题主要研究图像分割区域生长算法的程序设计与实现。开发工具选用VC++6.0。通过VC++6.0开发环境中的常用向导和MFC类库进行程序编译,并调试和运行。首先运用直方图...
  • 区域生长与分水岭算法 图像分割

    千次阅读 2018-08-14 13:13:38
    1.区域生长法 import numpy as np import cv2 class Point(object): def __init__(self,x,y): self.x = x self.y = y def getX(self): return self.x def getY(self): r...
  • 1. 区域生长区域增长方法是根据同一物体区域内象素的相似性质来聚集象素点的方法,从初始区域(如小邻域或甚至于每个象素)开始,将相邻的具有同样性质的象素或其它区域归并到目前的区域中从而逐步增长区域,直至没有...
  • 基于阈值分析与区域生长相结合的根系CT序列图像分割算法 不错的文章 思路很好
  • 尺度分割算法。 首先利用图像梯度信息选取种子点 ; 其 次综合 高分辨率遥感 图像地物的局部光谱信息和全局形状信 息作 为 区域生长的准则进行 区域生长。迭代 这两个过程 , 直到所有 区域 的平均面积大于设 定的...
  • 基于改进区域生长算法图像分割方法及实现

    千次阅读 多人点赞 2020-05-31 16:31:56
    (2)然后,基于经典区域生长方法,自己查阅文献,设计改进的区域生长算法,实现图像分割; (3)目视比较分析2种方法的分割效果,概述改进方法分割效果的优点和不足之处; (4)实现分水岭分割。 二、需求分析 2.1...
  • 图像分割算法综述概括性介绍了传统的图像分割算法包括区域生长法、分水岭算法等,同时也介绍了结合特定工具如小波分析、小波变换、遗传算法等进行图像分割的方法,最后采用深度学习进行图像分割。
  • 算法流程: 选取种子点p(x0,y0),用堆栈表示种子区域,将种子点push到种子堆栈中; 将种子堆栈中第一个种子点pop出堆栈,并以该点为中心,遍历该中心8邻域像素; 判断遍历像素点是否已经在种子区域中 3.1 是,...
  • 1. 区域生长区域增长方法是根据同一物体区域内象素的相似性质来聚集象素点的方法,从初始区域(如小邻域或甚至于每个象素)开始,将相邻的具有同样性质的象素或其它区域归并到目前的区域中从而逐步增长区域,直至没有...
  • 采用区域生长法作为图像分割方法,它的基本原理是将相同特征的像素点归为一类。并且这些特征在针对具体应用的实现中可以是灰度值、像素梯度等(同时作为比较的对象,即可以选择最初的种子,也可以动态选择邻域的中心...
  • Matlab写的区域生长图像分割程序。 %区域生长算法:region function LabelImage=region(image,seed,Threshold,maxv) %image:输入图像 %seed:种子点坐标堆栈 %threshold:用邻域近似生长规则的阈值 %maxv:所有生长的...
  • 得到太赫兹全息图像分割结果后,以平均结构相似度(MSSIM)为客观评价来衡量算法的有效性,分割结果显示进化算法优化的区域生长算法效果较好,MSSIM可达0.8以上。最后,为比较两种进化算法的寻优性能,将算法应用于可见光...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 263
精华内容 105
关键字:

区域生长图像分割算法