2017CS231n笔记11.Detection and Segmentation

概述

总的内容包括Segmentation, Localization, Detection
第一小节内容为图像分割,了解图像分割本质是对每个像素点进行分类的过程,为了解决全卷积网络的计算复杂度问题,提出了与降采样相对应的上采样的方法。使用降采样和上采样方法对应,得到完整的End-to-End网络。
在线Latex公式
思考题:
Q1:上采样有哪几种方法?
Q2:在草稿纸上绘图说明反卷积的过程。
Q3:反卷积的步长会对上采样结果带来怎样的变化?
在CV领域,除了之前讲的分类问题之外,还有以下几个热点问题:
在这里插入图片描述
本次课就是逐一对这些问题进行讲解,首先:

Semantic Segmentation

这里Semantic Segmentation主要任务是将每个像素(pixel)做分类,例如:
在这里插入图片描述
Label each pixel in the image with a category abel. Don’t differentiate instances, only care about pixels.
由于只根据像素进行分类,所以并不对实例进行区分,例如上图中的两个牛都分为牛,这也是语义分割的一个不足之处

Semantic Segmentation的思路(idea)

第一种是用滑动窗口,这个思路一来是计算量大,而且效率低(有很多overlap的地方)
Problem: Very inefficient! Not reusing shared features between overlapping patches
在这里插入图片描述
第二种是用Fully Convolutional,注意不是Fully Connected。
在这里插入图片描述
这里也有问题:convolutions at original image resolution will be very expensive …
改进一下,要做下采样和上采样。
下采样之前有讲过:Pooling, strided convolution
上采样呢?

upsampling:去池化(unpooling)

左边是直接复制填充,右边是钉床函数去池化(从三维上看有数字的地方是凸起来:钉子状,零值是平的)
在这里插入图片描述
在实际应用过程中最大化下采样和最大化上采样是对称的,注意看下图中的颜色的位置~!老师解释了一点点原理:最大化下采样会丢失一些特征所属的空间信息,因此把最大化上采样设置到原来的位置可以最大化还原这些空间信息
在这里插入图片描述

Learnable Upsampling: Transpose Convolution

上面提到的几种上采样方式没有什么权重需要学习,这里有一个比较特殊的可学习的上采样方式。
3 x 3 transpose convolution, stride 2 pad 1.
在这里插入图片描述
第一步:取input的第一格,乘filter得到红框部分
在这里插入图片描述
第二步:取input的第一格,乘filter得到蓝色框部分,但是红色和蓝色(感受野)重叠部分需要累加
在这里插入图片描述
这个操作在别的文献中还有以下名字:
-Deconvolution (bad)
-Upconvolution
-Fractionally strided convolution
-Backward strided convolution
下面为了便于理解,给出了一个1D数据做transpose convolution的例子
在这里插入图片描述
下面老师用矩阵来表示convolution和transpose convolution的操作,表明了为什么要用这个名字。
在这里插入图片描述

Classification+Localization

框架如下图所示,图片输入AlexNet,最后分两部分FC
在这里插入图片描述
对于分类和定位两部分可以分别求损失函数,注意的是位置部分可以用L2损失(简单最常用),也可以用L1或smooth L1(平滑L1损失)或参数化边界。
在这里插入图片描述
这里同时处理两个损失,要用到ng讲过的multi task的知识,例如:如何训练,如何fine-tune等

人体姿态估计

在这里插入图片描述
在这里插入图片描述
参考资料:Toshev and Szegedy, “DeepPose: Human Pose Estimation via Deep Neural Networks”, CVPR 2014

Detection

与之前的问题最大的区别在于,每个图片中的输出的数量是未知的。因此不能把Detection看做回归问题来解
在这里插入图片描述
解决方案之一是slide window
在这里插入图片描述
在这里插入图片描述
其思想是:Apply a CNN to many different crops of the image, CNN classifies each crop as object or background。
问题:要分类的对象数量未知,位置位置,因此如何选择窗口的大小?如果用蛮力穷举的方式来做,那么计算量是非常巨大的。Need to apply CNN to huge number of locations and scales, very computationally expensive!
在这里插入图片描述

基于候选框的目标检测模型region-based methods for object detection

解决方案二:Region Proposals
● Find “blobby” image regions that are likely to contain objects
● Relatively fast to run; e.g. Selective Search gives 1000 region proposals in a few seconds on CPU
Selective Search是Region Proposals的常见算法之一
在这里插入图片描述
这里提到了目标检测的经典论文:R-CNN
在这里插入图片描述
老师几句话把R-CNN步骤描述了一遍(如上图),其中红圈部分是指用region proposal切割出来的区域大小各不相同,因此需要对这些区域进行统一大小,便于CNN处理。
缺点主要是慢:
• Ad hoc training objectives
Fine-tune network with softmax classifier (log loss)
Train post-hoc linear SVMs (hinge loss)
Train post-hoc bounding-box regressions (least squares)
• Training is slow (84h), takes a lot of disk space
• Inference (detection) is slow
47s / image with VGG16 [Simonyan & Zisserman. ICLR15]
Fixed by SPP-net [He et al. ECCV14]
方案二的改进一:Fast R-CNN
比起原来的R-CNN算法,这里不在是直接从原来的图片进行region proposal,而是用ConvNet做特征提取,然后再在特征提取结果上进行region的划分。这个方法叫regions of Interest(RoIs)兴趣区域池,这个老师没有细讲,就不放图了。
在这里插入图片描述
最后两类损失函数会结合起来一起训练:
在这里插入图片描述
方案二的改进二:Faster R-CNN
原理没怎么听懂,回头再补充,先填图
Insert Region Proposal Network (RPN) to predict proposals from features. Jointly train with 4 losses:

  1. RPN classify object / not object
  2. RPN regress box coordinates
  3. Final classification score (object classes)
  4. Final box coordinates
    在这里插入图片描述
    不过从图上可以看到,这里有四个损失函数同时训练。

前馈模型feed forward in a single pass

主要有YOLO和SDD
在这里插入图片描述
注意的是上面那个计算output的公式与ng里面讲的不一样,应该是:
网 格 大 小 ∗ 网 格 大 小 ∗ a n c h o r b o x 数 量 ∗ ( 5 ∗ [ P c , b x , b y , b h , b w ] + 类 别 数 量 ) 网格大小*网格大小*anchor box数量*(5*[P_c,b_x,b_y,b_h,b_w]+类别数量) anchorbox(5[Pc,bx,by,bh,bw]+)

Detection 常用参数:

在这里插入图片描述
各种参数对性能的影响:Huang et al, “Speed/accuracy trade-offs for modern convolutional object detectors”, CVPR 2017

Instance Segmentation

分割+检测
在这里插入图片描述

Mask R-CNN

在这里插入图片描述
1号分支和R-CNN一样的处理分类和边框,1号分支还可以添加Joint coordinates分支进行姿态估计
2号分支用的分割的处理方法
可以达到实时处理的结果:
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值