图像分割 理解笔记

以下内容原视频:https://www.bilibili.com/video/BV1v7411Z7b9

图像分割

  • 图像分割是对每个像素进行分类,判断这个像素是属于前景还是背景,
  • 输入是一张图片,输出是这样图片对应的mask

FCN

深度学习应用到图像分割始于FCN,与CNN相比,这个网络没有全链接层,全部都是卷积层。首先5层下采样,将原图缩小到原来的1/32,再上采样(用到的是反卷积),放大到原来的大小得到分割结果。
在这里插入图片描述
FCN中上采样的过程:

在这里插入图片描述
pool3、pool4、pool5分别是第三第四第五次下采样的结果。
pool5上采样得到32倍上采样的预测(FCN-32);
pool4上pool5的2倍上采样得到16倍上采样的预测(FCN-16);
pool3上pool4的2倍上采样得到8倍上采样的预测(FCN-8);

U-net经典结构图:

在这里插入图片描述
U-net论文:(贴地址!!!!!)
总共5次下采样,每次下采样包括(两次卷积核为33的卷积,ReLU激活和一次22的max pooling),每次下采样会将feature map的通道数变为原来的两倍。

在上采样过程中,通过反卷积,将特征通道减少为原来的一半,长宽翻倍,并且这个上采样过程中对应的下采样也会被连接,(也就是图中的灰色箭头),连接操作必须保证图像的大小一致,所以要进行裁剪。

网络最后用了1*1的卷积,作用:将特征通道数降至特定的数量,如:像素点的类别数

反卷积
在这里插入图片描述
数据增强方法:在这里插入图片描述
损失函数(没整明白):
在这里插入图片描述
实例代码参考:https://gitee.com/swjtugx/classmate/blob/master/UNet/src/main.py

——————— 分割线——————————

https://www.bilibili.com/video/BV1Yt411P727?t=443

RCNN

integrated AlexNet along with a region proposal using the selective search technique
1,Region proposal:通过selective search,根据梯度信息,从原始图片中任意找到一些疑似的完整物体的区域。
2,CNN:输入到神经网络,算出特征
3,SVM:把特征给SVM去分类,得到分类与置信度
4,Bounding box regression:每个类别训练出4个向量,保证预测的时候,特征乘这4个向量可以得到x,y,h,w,这样坐标的缩放和偏移量也得到了。

存在的问题:
1,重复计算,每个候选框都要在卷积网络中重复计算一次,耗时
2,不是end to end,整个流程分多步,非常复杂
3,时效性差
1,R-CNN的训练先要fine tuning(微调)一个预训练的网络,然后针对每个类别都训练一个SVM分类器,最后还要用regressors对bounding-box进行回归,另外region proposal也要单独用selective search的方式获得,步骤比较繁琐。
2,时间和内存消耗比较大。在训练SVM和回归的时候需要用网络训练的特征作为输入,特征保存在磁盘上再读入的时间消耗还是比较大的。
3,测试的时候也比较慢,每张图片的每个region proposal都要做卷积,重复操作太多。

——————— 分割线——————————

Fast RCNN

https://blog.csdn.net/u014380165/article/details/72851319
在这里插入图片描述

训练过程:
1,输入是224*224,经过5个卷积层和2个降采样层(这两个降采样层分别跟在第一和第二个卷积层后面)后,其中region proposal由selective search方法得到的。
2,进入ROIPooling层,该层是输入是conv5层的输出和region proposal,region proposal的个数差不多2000,
3,然后再经过两个都是output是4096的全连接层。最后分别经过output个数是21和84的两个全连接层(这两个全连接层是并列的,不是前后关系),前者是分类的输出,代表每个region proposal属于每个类别(21类)的得分,后者是回归的输出,代表每个region proposal的四个坐标。
4,最后是两个损失层,分类的是softmaxWithLoss,输入是label和分类层输出的得分;回归的是SmoothL1Loss,输入是回归层的输出和target坐标及weight。

MultiPath Network

https://blog.csdn.net/zijin0802034/article/details/54409075
作者的改进主要在以下三点:

使用skip connections 融合多层的信息。
使用foveal structure 考虑物体的上下文信息。
使用integral loss函数,提高了位置的精准度。

Faster RCNN

https://zhuanlan.zhihu.com/p/31426458
Faster RCNN其实可以分为4个主要内容:

Conv layers。作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。
Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于positive或者negative,再利用bounding box regression修正anchors获得精确的proposals。
Roi Pooling。该层收集输入的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连接层判定目标类别。
Classification。利用proposal feature maps计算proposal的类别,同时再次bounding box regression获得检测框最终的精确位置。
在这里插入图片描述
首先缩放至固定大小MxN,然后将MxN图像送入网络;
而Conv layers中包含了13个conv层+13个relu层+4个pooling层;
RPN网络首先经过3x3卷积,再分别生成positive anchors和对应bounding box regression偏移量,然后计算出proposals;
而Roi Pooling层则利用proposals从feature maps中提取proposal feature送入后续全连接和softmax网络作classification(即分类proposal到底是什么object)。

mask RCNN

https://blog.csdn.net/wangdongwei0/article/details/83110305
Mask R-CNN基本结构:与Faster RCNN采用了相同的two-state结构:首先是通过一阶段网络找出RPN,然后对RPN找到的每个RoI进行分类、定位、并找到binary mask。这与当时其他先找到mask然后在进行分类的网络是不同的。

Mask R-CNN的损失函数:L = L{{cls}} + L{{box}} + L{_{mask}} (当然了,你可以在这里调权以实现更好的效果)

Mask的表现形式(Mask Representation):因为没有采用全连接层并且使用了RoIAlign,我们最终是在一个小feature map上做分割。

RoIAlign:RoIPool的目的是为了从RPN网络确定的ROI中导出较小的特征图(a small feature map,eg 7x7),ROI的大小各不相同,但是RoIPool后都变成了7x7大小。RPN网络会提出若干RoI的坐标以[x,y,w,h]表示,然后输入RoI Pooling,输出7x7大小的特征图供分类和定位使用。问题就出在RoI Pooling的输出大小是7x7上,如果RON网络输出的RoI大小是8*8的,那么无法保证输入像素和输出像素是一一对应,首先他们包含的信息量不同(有的是1对1,有的是1对2),其次他们的坐标无法和输入对应起来。这对分类没什么影响,但是对分割却影响很大。RoIAlign的输出坐标使用插值算法得到,不再是简单的量化;每个grid中的值也不再使用max,同样使用差值算法。

tensor mask

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值