精华内容
下载资源
问答
  • 图像分割】基于模糊聚类算法FCM实现图像分割matlab代码
    2021-12-12 16:44:58

    1 简介

    图像分割是数字图象处理中关键技术之一,是重要的研究领域,也是计算机视觉中的一个经典问题。聚类分析是图像分割领域的重要分支之一,也是数据挖掘中进行数据处理的重要分析工具和方法,且应用广泛。近年来,聚类分析已经成为人们进行数据分析和信息提取的研究热点。而模糊C均值(Fuzzy C-means,FCM)聚类是聚类分析中应用最普遍的一种方法。

    2 部分代码

    %% 程序分享 
    
    %--------------------------------------
    
    clear
    close all
    clc
    %% %%%%%%%%%%%%%%%图像%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    I=imread('3096.jpg');
    
    if size(I,3) == 3
      I=rgb2gray(I);
    else
    end
    I=im2double(I);
    % I=I;%不加噪声
    %I=imnoise(I,'speckle',deta_2);
    % I=imnoise(I,'salt & pepper',0.05); %加噪图
    % I=imnoise(I,'gaussian',0,0.01); % 加高斯噪声
    imwrite(I,'2.jpg');
    [m,n]=size(I);
    %k 聚类数目
    k=2;
    % k=3;
    
    I4 = I(:);  %% 将图像灰度按列排列
    %% ------------------------ fcm算法------------------------
    fcm_spatial_mean_label=zeros(m*n,1);
    t=cputime;
    tic;
    [O2, U2, obj_fcn2] = fcm(I4, k);
    toc;
    time_fcm_spatial_mean=cputime-t;
    %% 最大隶属度原则
    maxU2 = max(U2);   %隶属度最大  
    for j=1:k
       index = find(U2(j, :) == maxU2);  %隶属度最大对应的像素位置
       fcm_spatial_mean_label(index) = j;    
    end
    labels2=reshape(fcm_spatial_mean_label,[m n]);
    labels2=uint16(labels2);
    
    %% 显示聚类分割图
    labels2(find(labels2==1))=0;
    labels2(find(labels2==2))=255;
    labels2(find(labels2==3))=180;
    labels2(find(labels2==4))=100;
    labels2=uint8(labels2);
    figure;subplot(131);imshow(I);title('(a)原始图像')
    subplot(132);imshow(I);title('(b)加噪图像');
    
    subplot(133);;imshow(labels2,[]);title('(c)聚类分割图');
    imwrite(labels2,'3.1.tiff','tiff','Resolution',300);%输出结果,保存为tif图片
    
    

    3 仿真结果

    4 参考文献

    [1]孔令然. 基于模糊聚类的SAR图像分割算法研究[D]. 辽宁工程技术大学.

    部分理论引用网络文献,若有侵权联系博主删除。

    5 MATLAB代码与数据下载地址

    见博客主页

    更多相关内容
  • 侧扫声呐FCN图像分割。。其中包括与C-mean的对比。与改进后的G-FCN,BEMD-FCN代码。并附20张声呐原始图像
  • 为了说明训练过程,本示例将训练SegNet,一种用于图像语义分割的卷积神经网络(CNN)。用于语义分割的其他类型网络包括全卷积网络(FCN)和U-Net。以下所示训练过程也可应用于这些网络。本示例使用来自剑桥大学的CamVid...
  • FCM实现图像分割,fcn图像分割,matlab源码.rar
  • FCM实现图像分割,fcn图像分割,matlab源码.zip
  • FCN图像语义分割代码

    2019-04-14 16:51:25
    图像语义分割 FCN方法,使用tensorflow库,解压使用即可
  • MATLAB 和计算机视觉系统工具箱提供了 fcnLayers 函数来创建 FCN,但这是基于 VGG-16 的 FCN。如果你想使用更低的计算网络成本,FCN-AlexNet 可能是选择之一。 基于 AlexNet 的 FCN 语义分割演示。 了解如何定义基于...
  • 目录 1,CNN与FCN的区别 2,FCN的详细步骤 3,FCN的训练过程 4,总结 5,知识点补充 5.1 为什么FCN输入图像的大小可以任意 5.2 语义分割和实例分割的区别 6,图像分割通用框架 ​ 1,CNN与FCN的区别 CNN网络在卷积...

    目录

    1,CNN与FCN的区别

    2,FCN的详细步骤

    3,FCN的训练过程

    4,总结

     5,知识点补充

    5.1 为什么FCN输入图像的大小可以任意

    5.2 语义分割和实例分割的区别

    6,图像分割通用框架



    1,CNN与FCN的区别


         CNN网络在卷积之后会接上若干个全连接层,将卷积层产生的特征图(feature map)映射成为一个固定长度的特征向量。一般的CNN结构适用于图像级别的分类和回归任务,因为它们最后都期望得到输入图像的分类的概率,如ALexNet网络最后输出一个1000维的向量表示输入图像属于每一类的概率。
          FCN对图像进行像素级的分类,从而解决了语义级别的图像分割问题。与经典的CNN在卷积层使用全连接层得到固定长度的特征向量进行分类不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷基层的特征图(feature map)进行上采样,使它恢复到输入图像相同的尺寸,从而可以对每一个像素都产生一个预测,同时保留了原始输入图像中的空间信息,最后奇偶在上采样的特征图进行像素的分类。
           全卷积网络(FCN)是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。
           FCN将传统CNN中的全连接层转化成一个个的卷积层。如下图所示,在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个类别的概率。FCN将这3层表示为卷积层,卷积核的大小(通道数,宽,高)分别为(4096,7,7)、(4096,1,1)、(1000,1,1)。所有的层都是卷积层,故称为全卷积网络。 

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

    这里写图片描述

     图1. FCN实现了 end-to-end 的图像语义分割

    那么怎样将全连接层转换为卷积层呢?下面详细解释了转换方法。

    卷积层卷积层替换全连接层的意义:
    之所以要进行替换,是为了方便和高效
    对于方便而言:
    传统的CNN要求输入图片的尺寸必须要固定,这是因为传统的CNN全连接层的权值参数是固定的,则输入全连接层的尺寸也必须是固定的。如果输入图片的尺寸不固定,等运行至全连接层就会出错。
    FCN中没有全连接层,也就没有某一个要求的固定输入,从而对输入图像的尺寸没有要求。

    对于高效而言:
    1,传统的CNN要求输入的尺寸必须要固定,在图片中包含多个待检测物体时,一般做法是将图片裁剪成多个图片块输入网络,检测这多个图片块的分类置信度。
          1)比如现有384 × 384,大小的图片,CNN要求输入图片的尺寸为244 × 244 ,这时图片将按照244×244的大小裁剪为多个图片块,之后输入到CNN模型,判断这些图像块的分类置信度。最后整合判断图像包含的物体。
           2)比如现有图片244 × 244 ,虽然符合CNN模型的输入尺寸,但是因为图片中包含有多个待检测物体,所以一般也将图片分成多个图像块,之后利用填充等方法将图像块扩充至244 × 244 ,最后整合判断图像包含的物体。
           3)这种做法,一方面会使CNN因为多个图片块的出现,增大运算负担;另一方面,这些图片块只包含着局部信息,不利于图片的整体分析。
    2,FCN将整张图片输入,经过多次卷积后形成的特征图,也叫热图,能够整体概括图片中出现目标的检测概率。

    核心思想

    该论文包含了当下CNN的三个思潮 
    - 不含全连接层(fc)的全卷积(fully conv)网络。可适应任意尺寸输入。 
    - 增大数据尺寸的反卷积(deconv)层。能够输出精细的结果。 

    - 结合不同深度层结果的跳级(skip)结构。同时确保鲁棒性和精确性。

     fcn开源代码

    github下载地址https://github.com/shelhamer/fcn.berkeleyvision.org 

    2,FCN的详细步骤


    FCN的论文主要集中于语义分割,当然这种结构现在已经运用在计算机视觉的各种任务中。
    FCN创造性的将传统CNN的全连接层都转换成了卷积层。
    FCN支持任意尺度的图片输入,改变了传统CNN要求固定输入图片尺寸的要求。
    FCN中可将卷积分为两个过程,分别使得图片“缩小”、“变大”。所谓“缩小”指的是经过卷积提取图片的特征,所谓“放大”指的是经过反卷积将“缩小”的特征图还原成与输入图像尺寸相同的特征图。


            FCN中如果直接将特征图的尺寸通过反卷积转换为与输入图片尺寸相同,结果会非常粗糙。于是作者提出了跳级的思想,这样可以很好的解决这一问题。另外这种思想与之后的FPN、yolo等非常相似。
            FCN的运行原理:将一张任意尺寸的图片输入到FCN中,首先经过卷积得到特征图(因为该特征图非常小,故可以称为热图),然后运用反卷积和跳级的方法,还原出与输入图片尺寸相同的特征图,将该特征图与原始图像对比,实现了每个像素的预测,保留了原始输入图像中的空间信息。
    整体的运行流程如下所示:

    跳级的思想:

           前面提到了“放大”、“缩小”的两个卷积过程,可是根据实际操作发现,一步直接将“缩小”后特征图放大效果非常不好,有很多图片的细节没有办法体现。于是作者提出了跳级的思想。

     

          所谓跳级,也就是分步将特征图“放大”。可以看到图中有三种“放大”的策略,它们分别是FCN-32s,FCN-16s,FCN-8s。而且FCN中对特征图的放大一共是32倍(原因是2的8次方)。
           我们以FCN-8s为例讲解跳级思想,首先将1 × 1特征图上采样2倍,然后与之前特征图尺寸相同的相加,得到新的上采样2倍特征图。
           新的上采样2倍的特征图继续上采样2倍,然后与之前特征图尺寸相同的相加,得到新的上采样4倍的特征图。
           之后,特征图不再与之前的特征图相加,以2倍的上采样不断进行,直到采样的总倍数为32倍。所以跳级的精华在于与之前的特征图相融合,可以更好的利用底层位置信息和高层语义信息。

    下图详细的介绍了网路的连接结构

    图中,image是原图像,conv1,conv2..,conv5为卷积操作,pool1,pool2,..pool5为pool操作(pool就是使得图片变为原图的1/2),注意con6-7是最后的卷积层,最右边一列是upsample后的end to end结果。必须说明的是图中nx是指对应的特征图上采样n倍(即变大n倍),并不是指有n个特征图,如32x upsampled 中的32x是图像只变大32倍,不是有32个上采样图像,又如2x conv7是指conv7的特征图变大2倍。

    (1)FCN-32s过程

    只需要留意第一行,网络里面有5个pool,所以conv7的特征图是原始图像1/32,可以发现最左边image的是32x32(假设以倍数计),同时我们知道在FCN中的卷积是不会改变图像大小(或者只有少量像素的减少,特征图大小基本不会小很多)。看到pool1是16x16,pool2是8x8,pool3是4x4,pool4是2x2,pool5是1x1,所以conv7对应特征图大小为1x1,然后再经过32x upsampled prediction 图片变回32x32。FCN作者在这里增加一个卷积层,卷积后的大小为输入图像的32(2^5)倍,我们简单假设这个卷积核大小也为32,这样就是需要通过反馈训练32x32个权重变量即可让图像实现end to end,完成了一个32s的upsample。FCN作者称做后卷积,他也提及可以称为反卷积。事实上在源码中卷积核的大小为64,同时没有偏置bias。还有一点就是FCN论文中最后结果都是21×*,这里的21是指FCN使用的数据集分类,总共有21类。 

    (2)FCN-16s过程

    现在我们把1,2两行一起看,忽略32x upsampled prediction,说明FCN-16s的upsample过程。FCN作者在conv7先进行一个2x conv7操作,其实这里也只是增加1个卷积层,这次卷积后特征图的大小为conv7的2倍,可以从pool5与2x conv7中看出来。此时2x conv7与pool4的大小是一样的,FCN作者提出对pool4与2x conv7进行一个fuse操作(事实上就是将pool4与2x conv7相加,另一篇博客说是拼接,个人认为是拼接)。fuse结果进行16x upsampled prediction,与FCN-32s一样,也是增加一个卷积层,卷积后的大小为输入图像的16(2^4)倍。我们知道pool4的大小是2x2,放大16倍,就是32x32,这样最后图像大小也变为原来的大小,至此完成了一个16s的upsample。现在我们可以知道,FCN中的upsample实际是通过增加卷积层,通过bp反馈的训练方法训练卷积层达到end to end,这时卷积层的作用可以看作是pool的逆过程。 

    (3)FCN-8s过程

    这是我们看第1行与第3行,忽略32x upsampled prediction。conv7经过一次4x upsample,即使用一个卷积层,特征图输出大小为conv7的4倍,所得4x conv7的大小为4x4。然后pool4需要一次2x upsample,变成2x pool4,大小也为4x4。再把4x conv7,2x pool4与pool3进行fuse,得到求和后的特征图。最后增加一个卷积层,使得输出图片大小为pool3的8倍,也就是8x upsampled prediction的过程,得到一个end to end的图像。实验表明FCN-8s优于FCN-16s,FCN-32s。 
    我们可以发现,如果继续仿照FCN作者的步骤,我们可以对pool2,pool1实现同样的方法,可以有FCN-4s,FCN-2s,最后得到end to end的输出。这里作者给出了明确的结论,超过FCN-8s之后,结果并不能继续优化。

    结合上述的FCN的全卷积与upsample,在upsample最后加上softmax,就可以对不同类别的大小概率进行估计,实现end to end。最后输出的图是一个概率估计,对应像素点的值越大,其像素为该类的结果也越大。FCN的核心贡献在于提出使用卷积层通过学习让图片实现end to end分类。

    事实上,FCN有一些短处,例如使用了较浅层的特征,因为fuse操作会加上较上层的pool特征值,导致高维特征不能很好得以使用,同时也因为使用较上层的pool特征值,导致FCN对图像大小变化有所要求,如果测试集的图像远大于或小于训练集的图像,FCN的效果就会变差。

    《全卷积网络(FCN)详解》

           图像(图a)在经过卷积、池化等一系列处理后,得到的特征图(图b)分辨率远小于原图像。这样一来特征图中的像素无法与原图中一一对应,无法对每个像素进行预测。于是需要对特征图进行上采样以提高特征图的分辨率。

    3,FCN的训练过程

    训练过程分为四个阶段,也体现了作者的设计思路,值得研究。

    step1:训练的第一阶段

    《全卷积网络(FCN)详解》

           使用数据集对模型的分类backbone进行预训练,使卷积层获得提取相应特征的能力。最后两层红色的是全连接层。

    step2:训练的第二阶段

    《全卷积网络(FCN)详解》

    从特征小图(16×16×4096)预测分割小图(16×16×21),之后直接升采样为大图(300×300×21)。这里输出通道数为21的原因是:采用的PASCAL数据集中有20类,算上背景类一共21类。每个通道预测一类的像素。反卷积(橙色)的步长为32,故该网络被称为FCN-32s

    step3:训练的第三阶段

    《全卷积网络(FCN)详解》

     这个阶段上采样分为两次完成(橙色×2)。 在第二次升采样前,把第4个pooling层(绿色)的预测结果(蓝色)通过跃层结构融合进来,提升精确性。 第二次反卷积步长为16,这个网络称为FCN-16s

    step4:训练的第四阶段

    这里写图片描述

     升采样分为三次完成(橙色×3)。 
    进一步融合了第3个pooling层的预测结果。 
    第三次反卷积步长为8,记为FCN-8s。 
    这一阶段使用单GPU训练约需1天。

    较浅层的预测结果包含了更多细节信息。比较2,3,4阶段可以看出,跳级结构利用浅层信息辅助逐步升采样,有更精细的结果。 
    这里写图片描述

    4,总结

    FCN 的优势在于: 
    - 可以接受任意大小的输入图像(没有全连接层) 
    - 更加高效,避免了使用邻域带来的重复计算和空间浪费的问题。

    其不足也很突出: 
    - 得到的结果还不够精细 。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感。
    -是对各个像素进行分类,没有充分考虑像素与像素之间的关系。忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性。

     5,知识点补充

    5.1 为什么FCN输入图像的大小可以任意

    • 卷积层的参数和输入大小无关,它仅仅是一个卷积核在图像上滑动,不管输入图像多大都没关系。图像进行卷积的时候,因为每一个卷积核中权值都是共享的,因此无论输入图像的尺寸是多大的都可以都是按照步长滑动做卷积,只不过都是经过卷积运算,不同大小的输入图片提取出的卷积特征的大小也是不同的。
    • 但全连接层的参数就和输入图像大小有关,因为它要把输入的所有像素点连接起来。(如果网络中含有全连接层的话。现在假设之前输入的图像都是一样大小的,经过卷积得到特征的尺寸也都是相同的,比如说是a×b,之后接一个1×c的全连接层,那么你现在卷积层的输出与全连接层之间的权重矩阵的大小为(a×b)×c.但是现在你如果你输入了一张比原来输入大的图像,这个时候你得卷积输出会为a‘×b’,如果它还要和全连接层相连接的话,权重矩阵的大小为(a‘×b’)×c,很明显与原来的权重矩阵不一样大,所以也就无法使用和训练了)

    5.2 语义分割和实例分割的区别

    目前的分割任务主要有两种:
    (1)像素级别的语义分割
    (2)实例分割

    这个有意思,什么叫实例分割呢?它与语义分割有什么区别与联系呢?
    顾名思义,像素级别的语义分割,对图像中的每个像素都划分出对应的类别,即实现像素级别的分类;
    而类的具体对象,即为实例,那么实例分割不但要进行像素级别的分类,还需在具体的类别基础上区别开不同的实例。比如说图像有多个人甲、乙、丙,那边他们的语义分割结果都是人,而实例分割结果却是不同的对象,具体如下图所示:

    6,图像分割通用框架

         发展到现在,基于深度学习的图像语义分割“通用框架已经确定”:前端 FCN(包含基于此的改进 SegNet、DeconvNet、DeepLab)+ 后端 CRF/MRF (条件随机场/马尔科夫随机场)优化

    这里写图片描述

    展开全文
  • 语义分割FCN

    千次阅读 2021-01-17 18:16:05
    1.文字回答:按照自己的观点,总结对于语义分割的理解语义分割是对一张图片的每一个像素点进行分类,并将每个类别(车,车道,人物,建筑,天空)用不同的颜色标注出来。它是计算机视觉中的关键任务之一,越来越多的...

    1.文字回答:按照自己的观点,总结对于语义分割的理解

    语义分割是对一张图片的每一个像素点进行分类,并将每个类别(车,车道,人物,建筑,天空)用不同的颜色标注出来。它是计算机视觉中的关键任务之一,越来越多的应用场景需要从影响中推理出相关的知识和语义。语义分割可以帮助场景理解

    2.文字回答:怎样理解论文中的Figure 2 ?

    630be093df9eee877ee9abae801f2df9.png

    图2展示了如何把分类网络的backbone应用到语义分割任务中。把全连接层去了,转换成卷积层,让网络输出一个heatmap。这样做有两个好处,一是可以实现任意尺寸的输入,原vgg模型则要求固定尺寸的输入;二是输出为与输入同尺寸的图像,实现了端到端。

    3.文字回答:用文字描述论文中的Figure 3

    229fcb58c92b04a247d83a34a3d04892.png

    描述了网络特征图进行融合的过程。每次经过pool层进行一次下采样,尺寸减小一半,最后产生了1/32预测特征图(FCN-32s);1/32特征图上采用为1/16特征图,和原来的1/16特征图在通道上进行合并产生1/16预测特征图(FCN-16s);合并结果再二次上采样,成为1/8特征图,和原来的1/8特征图合并为1/8预测特征图(FCN-8s)。

    4.文字回答:将论文Results中提到的前三个指标,用自己的理解描述出来

    Pixel Accuracy(PA,像素精度):标记正确的像素点占所有像素点的比例。

    Mean Pixel Accuracy(MPA 均像素精度):计算每个类内被正确分类像素数的比例,再求所有类的平均。

    mean IU(MIoU 均交并比):按类别平均的交并比,计算真实值和预测值的交集和并集。

    5.代码实践:在CamVid上得到测试结果,分析整个训练过程中loss和指标的变化趋势

    6.本文摘抄

    主要成就:FCN是第一个实现端到端,像素到像素的语义分割网络

    核心思想:构建了一个全卷积网络,可以输入任意尺寸的图像,并得到同样尺寸的输出

    主要方法:将当前分类网络改编成全卷积网络并进行微调,设计跳跃连接将全局信息和局部信息连接起来相互补偿

    相关术语:局部信息:提取位置:浅层网络中提取局部信息;特点:物体的几何信息比较丰富,对应的感受野较小;目的:有助于分割尺寸较小的目标,有利于提高分割的精确程度

    全局信息:提取位置:深层网络中提取全局信息;特点:物体的空间信息比较丰富,对应的感受野较大;目的:有助于分割尺寸较大的目标,有利于提高分割的精确程度

    感受野:决定某一层输出结果中一个神经元所对应原始输入层区域大小,为感受野。stride越大,感受野越大。但过大的stride会使feature map保留的信息变少。

    平移不变性:图片中的目标无论被移到图片的哪个位置,分类结果都应该是相同的。浅层CNN符合这个特征,深层CNN不符合。

    Shift-and-stitch: 补零+平移原始图片得到四种版本的输入图片;再通过最大池化得到对应的四张输出特征图;最后通过四张输出图拼接成密集预测图。

    abe855b620f0fb03901f25c5fab94e9e.png

    上采样:以往用插值进行上采用,FCN中用反卷积进行上采样。

    类平衡对模型最后结果有一定影响

    算法通过混淆矩阵计算PA, MPA, IoU。

    1. 将AlexNet, VGG, GoogLeNet框架都用了一遍,微调它们让他们能进行语义分割。

    2. 语义分割在semantics和location之间权衡。global信息解决事什么, local信息解决在哪。因此本文用skip跳跃连接, 把deep, coarse, senmantic information和shallow, fine, appearance information连接起来。

    3. 把全连接改成全卷积,不仅可以生成heatmap,也让计算量在这些块中被均摊。

    展开全文
  • 图像分割任务中,传统的基于人工设计特征方法工作量大、复杂度高、分割精度较低,现有的基于全卷积神经网络(fully convolutional networks,FCN)的方法在分割边缘上不够精细。为了提高图像分割算法的分割精度,...
  • 图像语义分割的意思就是机器自动分割并识别出图像中的内容,我的理解是抠图…之前在Faster R-CNN中借用了RPN(region proposal network)选择候选框,但是仅仅是候选框,那么我想提取候选框里面的内容,就是图像语义...

    图像语义分割的意思就是机器自动分割并识别出图像中的内容,我的理解是抠图…

    之前在Faster R-CNN中借用了RPN(region proposal network)选择候选框,但是仅仅是候选框,那么我想提取候选框里面的内容,就是图像语义分割了。

    简单的理解就是,图像的“分词技术”。

    参考文献:

    1、知乎,困兽,关于图像语义分割的总结和感悟

    2、微信公众号,沈MM的小喇叭,十分钟看懂图像语义分割技术

    .

    .

    一、FCN全卷积:Fully Convolutional Networks

    一些简单的名词,下采样=卷积+池化(像素缩小),

    上采样=反卷积(像素放大)Caffe和Kera里叫Deconvolution,而tensorflow里叫conv_transpose。CS231n这门课中说,叫conv_transpose更为合适。

    卷积与反卷积过程:

    1ac807512200f4124e63c52196c717ad.png

    池化与上池化:

    fc45c60b86eb944c47a70d6a03bd9393.png

    池化层作用:池化操作能够减少计算量,同时也能防止计算结果过拟合

    上池化作用:上池化的实现主要在于池化时记住输出值的位置,在上池化时再将这个值填回原来的位置,其他位置填0即OK。

    1、反卷积

    那么反卷积是一种认识”卷积“是什么的好办法。反卷积可以在任何卷积层上进行。那么得到的图像就是一些缩略图形式。

    a023d65a8a420eabb41d79e4b9529660.png

    每一种反卷积的样子:

    b03b36ec654fff64445ded8aa36cea15.png

    可以发现卷积程度越高,32x图像越模糊,8x跟ground truth还是挺接近的。这里就是感受野(receptive field),8x感受野较小,适合感受细节;32x感受野较大,适合感受宏观。

    .

    .

    2、“带hole”的卷积——Dilated Convolutions

    简单的卷积过程有一些问题:精度问题,对细节不敏感,以及像素与像素之间的关系,忽略空间的一致性等问题。那么新卷积方式hole卷积,用hole卷积核取代池化。

    Dilated Convolutions:没有了池化感受野就不会变大,“疏松的卷积核”来处理卷积,可以达到在不增加计算量的情况下增加感受域,弥补不进行池化处理后的精度问题。

    操作方式:人为加大了卷积核内部元素之间的距离:

    00d2d25e937611c30c41b602f80fe507.png

    这是水平X轴方向上的扩展,在Y轴上也会有同样的扩展,感受域在没有增加计算(相对于池化操作后)的情况下增大了,并且保留了足够多的细节信息,对图像还原后的精度有明显的提升。

    54e67dbbf511a1124fcdab99fbac2fc0.png

    .

    .

    .

    3、DenseCRF Conditional Random Field:全连接条件随机场(DenseCRF)

    每个像素点作为节点,像素与像素间的关系作为边,即构成了一个条件随机场。

    fa3f18f149a3df0f0a53d80b4d1f8989.png

    其中:yi:卷积后的值;i:像素;xi:类别标签

    条件随机场符合吉布斯分布。

    在全链接的 CRF 模型中,有一个对应的能量函数:

    910332402548ba90ce8242abcb636d4a.png

    那么E(x)由两个部分组成,可以简单理解为:

    E(x)=一元函数+二元函数

    一元函数:来自于前端FCN的输出

    二元函数:是描述像素点与像素点之间的关系,鼓励相似像素分配相同的标签,而相差较大的像素分配不同标签,而这个“距离”的定义与颜色值和实际相对距离有关。所以这样CRF能够使图片尽量在边界处分割。

    全连接条件随机场的不同就在于,二元势函数描述的是每一个像素与其他所有像素的关系,所以叫“全连接”。

    通过对这个能量函数优化求解,把明显不符合事实识别判断剔除,替换成合理的解释,得到对FCN的图像语义预测结果的优化,生成最终的语义分割结果。

    43c8ea42cf3a6d305ee0939ef8306427.png

    4、马尔科夫随机场(MRF)

    在Deep Parsing Network中使用的是MRF,它的公式具体的定义和CRF类似,只不过作者对二元势函数进行了修改:

    d616d8e8837b38176fcdd4287af4913b.png

    其中,作者加入λk为label context,因为只是定义了两个像素同时出现的频率,而λk可以对一些情况进行惩罚。

    比如,人可能在桌子旁边,但是在桌子下面的可能性就更小一些。所以这个量可以学习不同情况出现的概率。

    而原来的距离d(i,j)只定义了两个像素间的关系,作者在这儿加入了个triple penalty,即还引入了j附近的z,这样描述三方关系便于得到更充足的局部上下文。

    5、高斯条件随机场(G-CRF)

    这个结构使用CNN分别来学习一元势函数和二元势函数。

    .

    .

    二、一些成型的分割结构

    知乎,困兽,关于图像语义分割的总结和感悟在文中提到通用框架:

    87352f894d8fe51e17bd1001e99a2f95.png

    前端使用FCN进行特征粗提取,后端使用CRF/MRF优化前端的输出,最后得到分割图。

    1、“Normalized cut”的图划分方法

    它的思想主要是通过像素和像素之间的关系权重来综合考虑,根据给出的阈值,将图像一分为二。在实际运用中,每运行一次N-cut,只能切割一次图片,为了分割出图像上的多个物体,需要多次运行,下图示例了对原图a进行7次N-cut后,每次分割出的结果。

    4f53d5b341129cb76b1caefcdca4c11d.png

    2、Grab Cut

    增加了人机交互,在分割过程中,需要人工干预参与完成。需要人工选择主体候选框,然后将中部作为主体参考,然后剔除和主体差异较大的部分,留下结果。

    55b95582b35864f4b014c0dce3042be9.png

    此技术中,抠出来的部分叫“前景”,剔除的部分叫“背景”。缺点也很明显,首先,它同N-cut一样也只能做二类语义分割,说人话就是一次只能分割一类,非黑即白,多个目标图像就要多次运算。其次,它需要人工干预,这个弱点在将来批量化处理和智能时代简直就是死穴。

    3、segNet

    b800901cb2eeef5c9044317fbe4f2fb8.png

    4、DeconvNet

    36fd5d7bac43b35028f1c8e2209bbc1b.png

    这样的对称结构有种自编码器的感觉在里面,先编码再解码。这样的结构主要使用了反卷积和上池化。

    5、DeepLab

    现在的很多改进是基于这个网络结构的进行的。

    为了保证之后输出的尺寸不至于太小,FCN的作者在第一层直接对原图加了100的padding,可想而知,这会引入噪声。

    DeepLab非常优雅的做法:将pooling的stride改为1,再加上 1 padding。这样池化后的图片尺寸并未减小,并且依然保留了池化整合特征的特性。

    因为池化层变了,后面的卷积的感受野也对应的改变了,这样也不能进行fine-tune了。所以,Deeplab提出了一种新的卷积,带孔的卷积:Atrous Convolution.

    .

    延伸一:Pixel Objectness —— 更好的自动抠图、图像检索、图像重定向技术

    论文《Pixel Objectness》提出了一个用于前景对象分割的端到端学习框架。给定一个单一的新颖图像,我们的方法为所有“像对象”区域 - 即使对于在训练期间从未见过的对象类别,产生像素级掩码。我们将任务制定为使用深完全卷积网络实现的将前景/背景标签分配给每个像素的结构化预测问题。

    我们的想法的关键是采用训练与图像级对象类别示例,以及采用相对较少的注释的边界级图像合。我们的方法大大改善了ImageNet和MIT数据集上的前景分割的最先进的水平 - 在某些情况下,有19%的绝对改进。此外,在超过100万的图像,我们显示它很好地归纳到用于训练的前景地图中看不见的对象类别。

    最后,我们演示了我们的方法如何有利于图像检索和图像重定向,这两种方法在给定的高质量前景图的领域将会有好的效果。

    展开全文
  • 1 简介 目的:磁共振成像( magnetic resonance imaging...本文以存在噪声和偏移场影响的脑MRI图像分割为应用背景,研究了大量相关方法,探讨FCM算法分割脑部 图像的改进思想.方法本文主要研究了9种FCM算法的理论基础,并通
  • 基于FCM的灰度图像分割matlab免费源码

    千次阅读 热门讨论 2018-03-26 11:17:17
    %%读入图像, I = imread('figure'); figure, imshow(I,[]) [m, n, p] = size(I); data = zeros(m*n,1); I1 = reshape(double(I), m*n, p); %将数据转换为一列数据 data(1:m*n,1) = I1; cluster_n = 2...
  • 2、初探K均值聚类算法3、K均值算法的原理与理解二、K均值聚类算法如何在图像分割上应用?三、Matlab仿真 一、K均值聚类算法是什么? 1、什么是聚类? 聚类是指通过既定的规则把物理或者抽象的集分成几个由类似特征的...
  • 提出了一种基于模糊熵和FCM的彩色图像聚类分割算法.该算法可以自动确定图像的颜色类数目和初始类中心,从而提高了聚类的收敛速度,并且能够解决模糊熵阈值化分割算法所造成的过度分割问题.首先,计算彩色图像各颜色分量...
  • % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from ...
  • 图像分割为研究内容,分析了图像的空频域特征,并在此基础之上提出了一种基于模糊局部信息C均值聚类的分割算法.由于FLICM算法充分利用局部空间信息和局部灰度信息,能够很好地描述模糊性,对于边界不清晰的太赫兹图像...
  • UNet和FCN实现医疗图像分割

    千次阅读 热门讨论 2019-06-27 12:08:31
    记录一下自己实现的过程,最近毕业设计涉及到医疗图像分割的问题,查阅相关资料后准备从两个分割网络入手,UNET和FCN,关于这两个网络具体的结构请参考大佬的论文 《Fully Convolutional Networks for Semantic ...
  • % This Matlab script illustrate how to use two images as input for FCM segmentation clc clear all %Load GADO image info = imfinfo('GADOimage.jpg'); I = im2double(imread('GADOimage','jpg')); I = ...
  • 深度学习之图像分割(一):FCN

    千次阅读 2018-11-23 10:58:20
    目前用于语义分割研究的两个最重要数据集是VOC2012和MSCOCO。 语义分割的方法主要包括两大类:基于解码的方法和基于上下文信息的方法 ... FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的f...
  • matlab图片叠加的代码乳腺癌图像分割 使用U-Net CNN架构的三阴性乳腺癌(TNBC)数据集的语义分割 有关主要实现,请参见Main.ipynb 大纲 介绍 三阴性乳腺癌 “三阴性乳腺癌(TNBC)约占所有乳腺癌的10%至15%。这些...
  • 1.caffe环境 电脑已经安装好caffe环境,这里就不介绍如何安装caffe。关于caffe的安装,网上有很多教程。 ... 2.FCN网络模型 先从github上下载到电脑里 ...根据需求下载fcn的预训练权重,下载链接在fcn文件夹根目
  • 截至目前,现已经跑通了siftflow-fcn32s,voc-fcn32s,并制作好了...通过这篇分析语义分割的文章可以知道,FCN作为2014年的网络,现在看来确实有些老旧了,从下表可以看出FCN的表现得分也不是最高的,但是不管黑猫...
  • 图像分割算法

    2018-08-15 15:05:26
    自适应灰度阈值进行图像分割,比直接进行二值化效果要好,Matlab2014a平台。
  • 深度学习之医学影像分割与分类_Matlab完整开发流程

    千次阅读 热门讨论 2022-04-07 17:22:53
    学习完Matlab的深度学习编程框架后能很快出成果本项目要实现对乳腺结节超声影像进行分割与分类,实现辅助医生诊断功能。本文将详细介绍Matlab的深度学习编程框架及相关可视化工具,是Matlab&深度学习的基础范例。
  • 图像分割实验代码matlab SegMitos_mitosis_detection 使用同心损失弱监督的乳腺病理组织学图像中的有丝分裂检测。 我们的医学图像分析论文的编码。 内容 要求:软件 我们使用深度学习框架Caffe来训练细分网络。 用于...
  • 【CV系列】脑部肿瘤图像分割

    千次阅读 多人点赞 2019-05-19 00:02:07
    DATE: 2019-5-18【Tag:Outsouring project】 前言 脑肿瘤图像作为一种特殊的医学图像,同样隶属于自然图像。关注脑肿瘤图像分割算法,...最近流行的脑肿瘤图像分割算法,例如全卷积神经网络FCN,卷积神经网络CNN等。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 585
精华内容 234
关键字:

fcn图像分割matlab

matlab 订阅