【CS231n 学习笔记】Lecture8:Spatial Localization and Detection

 CS231n学习笔记目录(2016年Andrej Karpathy主讲课程)


Computer Vision Tasks

我们之前讲的都是分类问题(Classification),对于一张图片,我们要对其进行分类。但有时候除了把图像和类标签进行分类之外,我们还希望将选框放入到图像中,表明这就是分类发生的区域(Classification and Localization)。还有一个人们正在解决的问题就是目标检测(Object Detection),我们希望统计在图像内所有该类别的目标以及它们周围的选框。最近人们有了一项新研究叫做实时图像分割(Instance Segmentation),其原理是希望在图像中找到所有类别对应的目标,但不是用方框框选,而是希望圈出围绕该目标的轮廓,并识别所有的属于每一个目标的像素。这里着重关注定位和检测的内容,这两者的却别在于我们所找到目标的数量,在定位中,一般是有一个或者一种对象,但在检测中,会有多个或者多种对象。

Classification and Localization

分类问题是一张图片中只有一种给定类别标签的对象,定位则是图像中有对象框,而分类定位就指的是我们要同时符合这两者的要求。

当研究定位时,有一个特别有用的很基础的范式就是回归。当我们讨论定位时,可以把它视作为回归问题。比如我们有一张图片,这张图片要经过一系列的处理过程,并最终生成四个代表选框大小的实数,人们最常用的是以xy坐标定位选框的左上角、宽度和高度。还有一些真实准确的选框(ground truth),也是用四个变量描述的。我们还可以计算损失,比如欧式损失,表示我们所生成的数字和正确的数字之间的差额。然后就可以进行训练,用ground truth边框对许多批数据进行抽样,并向前传播,然后计算预测值与真实值之差所带来的损失反向传播,更新网络参数。

在进行回归时一共有两种主要方式,不定类回归(class-agnostic regression)和特定类回归(class-specific regression),但无论使用哪种回归,全连接层中都使用相同的结构和权值来得到边界框(bounding box),得到的结果总是4个数字。特定类回归得到的输出结果是C乘以4个数字,相当于每种类别都有一个边界框。

回归在网络中的位置有不同的选择,比较常见的选择是将回归层放在最后一次卷积层之后,相当于对全连接层重新进行了初始化,Overfeat、VGG网络就采用的这种方式;另一种选择是将回归层放在全连接层之后,DeepPose和RCNN就采用的这种方式。

我们可以用这个框架同时对多个固定数量的物体划定其边界框,例如对人类姿势的判定,人有固定数量的关节,当输入一个人的特写镜头时,需要通过卷积网络,去在xy轴上找到这个人所有关节的位置,从而对这个人的姿势进行判定。

除了以上的内容,人们在定位时考虑到的方法还包括滑动窗口(Sliding Window),这个方法在图片的不同位置多次进行分类和定位,然后将不同位置的结果进行聚合。Overfeat是2013年ImageNet定位挑战赛中的优胜者,它的结构一开始是一个AlexNet,然后是分类层和回归层,分类层输出预测类的分数,回归层输出预测边界框。

 因为这是一个AlexNet网络结构,因此期望输入的图片大小为221*221,但实际上我们可以使用更大的图片,比如257*257,然后使用221*221的滑动窗口,分别使用相同的分类和定位网络在不同的位置进行计算,得到对应的类的分数和边界框,最后对这些类的分数和边界框进行聚合,得到最终的结果。

Object Detection

目标检测是对输入的一张图片,找到图中不同类别的所有实例,而不同图片中所含的类别总数不一样,因此输出的数量也不一样,因此我们将这个问题不看成回归问题,而看成分类问题,用整张图片的不同区域去运行分类器,需要加入一个背景类,并指定多个正值的标签类。

大概在2005年,有一种在当时很成功的用于检测行人的方法,就是用特征表示图像的方向梯度直方图HOG(Histogram of Oriented Gradient),它的思想是在特征的基础上进行线性分类,原理是在不用的比例下,计算整个图像的HOG,针对不同的尺度、不同位置区域进行线性分类。接下来几年人们进行了更加深入的研究,其中一个最重要的例子就是DPM(Deformable Parts Model),它是深度学习的前身,其基本思想任然是利用HOG,但分类模型不仅仅是一个线性分类器,而是一种针对目标模板的线性分类模式,这个模板可以分为局部模板,就可以对不同位置不同形状的区域进行正确分类。

但事实上我们的分类器并不像CNN那样快速,解决方法是在很少的一些区域运用分类器,而不是全部区域,这种思想就是Region Proposals,输入一张图像,输出所有可能存在目标对象的区域。类以一种不可知目标检测器,它不关心对象的具体类别,也并不十分精确,但运算速度却非常快,并且能够输出大量目标框,更直观的理解是,它在图像中寻找一些具有相似结构的整体。

其中最著名的候选框生成方法就是Selective Search,基本思想是从像素出发,把具有相似颜色和纹理的相邻像素进行合并,形成相连接的块状区域,然后不断进行合并,得到更大的块状区域,接着把这些不同规模的各个区域转换成框,通过在不同尺度块状区域上进行操作,最终得到很多包含块状物体的框。除此之外,人们研究研究出了很多产生候选区域的方法,其中表现较好的有EdgeBoxs,它的速度非常快,大概1/3秒处理一张图像。

现在我们有了检测方法,又有CNN分类器,因此我们可以把它们结合起来,这个想法在2014年的R-CNN方法中第一次实现,它的基本思想是基于区域的CNN方法,输入一张图片,然后用类似选择性搜索的检测方法,得到大概2k个不用大小、不同位置的框,把每个框的图像区域剪裁出来并调整到固定大小,然后通过一个CNN网络进行分类,这个CNN网络最后分别连接回归层和一个用SVM的分类层,回归层可以对目标框进行微调,这个模型训练过程较为复杂,因此需要预训练模型,对检测数据集图像中正的和负的区域进行分类。接下来要提取特征保存到磁盘上,然后训练SVM,使它能够基于这些特征实现正确分类。

几种模型

R-CNN

(Caffe+MATLAB): https://github.com/rbgirshick/rcnn

Fast R-CNN

(Caffe+MATLAB): GitHub - rbgirshick/fast-rcnn: Fast R-CNN

Faster R-CNN

(Caffe+MATLAB): https://github.com/rbgirshick/faster_rcnn

(Caffe+Python): https://github.com/rbgirshick/py-faster-rcnn

YOLO

http://pjreddle.com/darknet/yolo/

(纯学习分享,若有侵权,联系删文)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Panpanpan!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值