您的位置:首页 > 其它

CS231N-11-Other Computer Vision Tasks

2017-10-15 23:16 483 查看
semantic segmentation 语义分割
Upsampling
Unpooling

Transpose Convolution Deconvolution 对卷积的再理解

Localisation 定位

Object Detection 物体检测
Ross Girshick rbg

R-CNN

Fast R-CNN

Faster-RCNN

YOLO SSD

Instance Segmentation 实例分割
Mask R-CNN

计算机视觉除了最简单的图像分类外,还有以下主题。



semantic segmentation 语义分割:对每个pixel分类

localisation:对single object定位

detection: 对multiple object定位

预警:本讲至少涉及7篇经典论文:语义分割的FCN,目标检测的R-CNN,Fast R-CNN, Faster R-CNN, YOLO, SSD,实例分割的Mask R-CNN.

这些论文只有读过复现过,才能真正理解。这里只是个概要。

PS: CV这些坑挖的差不多了,现在读这个方向的PhD建议换坑吧。都被大神垄断了。

semantic segmentation 语义分割



对每个像素点做分类,不会分割overlap的物体。这是从图像分类出发的第一步,也是自动驾驶的最基础。

我们现在知道什么?仅仅是图像分类。to be specific, 就是一张图片经过CNN输出一个向量,哪个值最大,就是类别。好的,就从这里出发。



第一个naive算法,sliding window滑动窗口。把每个像素遍历,带着周边的像素点,分别做图像分类,显然这是理论可行的。但遍历像素的计算量太大了。



第二个算法,CNN最后的输出不是一个向量,而是tensor,即纵深是概率向量,覆盖整张图片,然后去argmax,就得到每个像素的分类。

问题依旧是conv层如果不变的话,计算量太大了。



第三个算法在第二个基础上,提出先downsample下采样再upsample上采样,这样先减后增,明显减少了参数数量。不过问题是,我们学过downsampling的技术(卷积层,pooling层),那么upsampling呢?

Upsampling

着重讲了上采样的实现。分为fixed和learned两种。

Unpooling





以上是两个最简单的固定上采样,pooling的反面。看图不解释了。

max unpooling 是存储先前pooling argmax,然后填到相同的位置上。保持神经网络在先减后增的对称性。

Transpose Convolution (Deconvolution) 对卷积的再理解



这是本讲的重点,也是很有趣的地方。转置卷积,民间又称为逆卷积。现在我们的任务是升size。pooling与unpooling是降size和升size的一对。那么convolution和transpose convolution也是降size和升size的一对。

方法就是卷积核遍历小的矩阵,作一个矩阵乘法,得到一个输出矩阵,然后填满大的矩阵,见图。

为什么叫转置卷积?让我们从矩阵乘法理解卷积。





摘自知乎大神回答,一针见血。如何理解深度学习中的deconvolution networks?.

卷积可以理解为一个很对称的稀疏矩阵C乘以输入向量(将输入矩阵展开)。而且反向传播的Local gradient可以证明是左乘CT.

转置卷积可以理解为一个很对称的稀疏矩阵CT乘以输入向量(将输入矩阵展开)。而且反向传播的Local gradient可以证明是左乘(CT)T=C.

即矩阵大小转置后,变成长度很小宽度很大的矩阵,乘以短的向量,得到长的向量。恰好与卷积相反。实现了升size。

故最终的语义分割segmentation模型如图所示。很优美对称,先减后增,conv&deconv (pooling&unpooling)。这个模型来源于Fully Convolutional Networks for Semantic Segmentation这篇论文,简称FCN.



Localisation 定位



定位是在分类的基础上,多任务学习。定位相当于四个点的坐标。multitask loss=softmax/cross entropy loss+L2 loss(平方项,不是reg). 即分类的损失函数(classfication)与定位坐标的损失函数(regression),fully connected 4096*4。注意定位是确定一个物体的,故坐标数量是确定的。两个loss之间的加权平均,这个权是最重要的超参数,直接影响了Loss,比lr®还厉害。以及CNN是Pre-trained然后fine-tuned.

同理,可以做Human Pose Estimation,即姿势识别,固定的多个姿势点,Loss之和。

Label标注比较艰巨,需要对所有姿势点标注(或者方框box coordinate),当然比pixel要好点。



Object Detection 物体检测



物体检测与localization+classfication的区别在于,我不知道物体的数量。这就是难点所在。deep learning在物体检测著名数据集PASCAL VOC上表现优异。



最naive的办法是滑动窗口遍历,每个方框进行图像分类,显然不可能。

Ross Girshick (rbg)

首先,下面介绍的几个算法,逐一进步,但竟都是有同一个人参与,就是RBG大神,Ross Girshick。个人主页http://www.rossgirshick.info/.

在Berkeley Postdoc期间,提出R-CNN,Fast-RCNN,再到和Kaiming He提出Faster-RCNN。现已加入FAIR。

Object Detection 独一档的人物。

I also participated in several first-place entries into the PASCAL VOC object detection challenge, and was awarded a “lifetime achievement” prize for my work on deformable part models. I think this refers to the lifetime of the PASCAL challenge—and not mine!

知乎上关于Object Detection的两个大讨论:

如何评价rcnn、fast-rcnn和faster-rcnn这一系列方法?

从近两年的CVPR会议来看,目标检测的研究方向是怎么样的?

关于这些算法的知乎专栏.

R-CNN



Rich feature hierarchies for accurate object detection and semantic segmentation

Objection Detection与Deep Learning结合的开山之作。

R-CNN的R来源于Region Proposals,全称是Region-based CNN. 思想是为了避免naive sliding window,用selective search算法得到2000个的备选box,称作region of interest(ROI),然后对每个ROI作CNN图像分类。

如下图所示,由于CNN输入尺寸固定,对每个ROI作伸缩到相同尺度,然后用CNN图像分类,原文是SVM LOSS加上Bbox reg?,对边框也有regression。

缺点很明显,太慢了,2000张train慢,test慢。于是有了后面改进。



既然回归方法效果不好,而CNN在分类问题上效果很好,那么为什么不把detection问题转化为分类问题呢?RBG的RCNN使用region proposal(具体用的是Selective Search Koen van de Sande: Segmentation as Selective Search for Object Recognition)来得到有可能得到是object的若干(大概10^3量级)图像局部区域,然后把这些区域分别输入到CNN中,得到区域的feature,再在feature上加上分类器,判断feature对应的区域是属于具体某类object还是背景。当然,RBG还用了区域对应的feature做了针对boundingbox的回归,用来修正预测的boundingbox的位置。RCNN在VOC2007上的mAP是58%左右。

作者:魏晋

链接:https://www.zhihu.com/question/35887527/answer/73048322

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

至于Selective Search的介绍,参见上述论文,或者知乎RCNN- 将CNN引入目标检测的开山之作

Selective Search 主要思想:

使用一种过分割手段,将图像分割成小区域 (1k~2k 个)

查看现有小区域,按照合并规则合并可能性最高的相邻两个区域。重复直到整张图像合并成一个区域位置

输出所有曾经存在过的区域,所谓候选区域

其中合并规则如下: 优先合并以下四种区域:

颜色(颜色直方图)相近的

纹理(梯度直方图)相近的

合并后总面积小的: 保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其他小区域

合并后,总面积在其BBOX中所占比例大的: 保证合并后形状规则。

要点是这是传统CV的固定算法。

Fast R-CNN

Fast R-CNN

于是RBG借鉴Kaiming He的SPP-net的思路单枪匹马搞出了Fast-RCNN,跟RCNN最大区别就是Fast-RCNN将proposal的region映射到CNN的最后一层conv layer的feature map上,这样一张图片只需要提取一次feature,大大提高了速度,也由于流程的整合以及其他原因,在VOC2007上的mAP也提高到了68%。

作者:魏晋

链接:https://www.zhihu.com/question/35887527/answer/73048322

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



如上图所示,先对整张图片进入CNN,到最后的卷积层用selective search得到ROI,然后ROI Pooling layer得到统一的region,然后FC层。

注:省去的时间是2000次CNN。**在CNN最后一层,得到的feature map已经是高度提取的特征了,故ROI少而精。**Region Proposal有很多种求法,selective search是主流算法。

但没怎么搞懂roi pooling, bounding box regression, fc怎么连的。知乎专栏Fast-RCNN.

Faster-RCNN

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

Fast-RCNN的速度瓶颈在Region proposal上,于是RBG和Kaiming He一帮人将Region proposal也交给CNN来做,提出了Faster-RCNN。Fater-RCNN中的region proposal netwrok实质是一个Fast-RCNN,这个Fast-RCNN输入的region proposal的是固定的(把一张图片划分成n*n个区域,每个区域给出9个不同ratio和scale的proposal),输出的是对输入的固定proposal是属于背景还是前景的判断和对齐位置的修正(regression)。Region proposal network的输出再输入第二个Fast-RCNN做更精细的分类和Boundingbox的位置修正。Fater-RCNN速度更快了,而且用VGG net作为feature extractor时在VOC2007上mAP能到73%。

作者:魏晋

链接:https://www.zhihu.com/question/35887527/answer/73048322

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



我们发现selective search是时间瓶颈bottleneck,faster-rcnn在feature map上建立Region Proposal Network RPN来预测ROI。RPN是怎么学习的?这就很黑科技了…

RPN好像是binary classification,对于判断有的物体,然后还要一个ROI pooling层。具体看论文吧…

以下是region-based methods的速度比较



2016年有涌现出single shot的YOLO & SSD。

YOLO & SSD

You only look once: Unified, real-time object detection

rbg又发了YOLO,是single-shot methods,只扫一次。这比RCNN region-based快很多,当然accuracy会低一点。



输入还是一张图片,经过CNN,输出很多东西:将图片分成7*7网格,每个有B个base box,然后参数是dx,dy等偏差,然后还有类别,一共7*7*(5b+c)个输出,这是固定的个数,作regression。对回归其实还不太懂…

Instance Segmentation 实例分割

中文是什么… 实例分割?反正是semantic segmentation和object segmentation的结合。目标检测后按像素分割。语义分割不会区分相同的物体,他们重叠在一起,应该是要分开的。不能直接用语义分割去做。

Mask R-CNN

Kaiming He和rgb合作的2017全新力作。



三个loss

classfication

bounding box regression

mask

在Faster-R-CNN基础上,得到RPN生成的ROI,这些ROI作分类,然后对每个像素点做mask。

看论文吧。这样是没法理解的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: