了解了semantic segmentation与detection的关系,也知道了detection任务的input和output,我要开始入门detection了!本文简述了detection基础知识,与此同时,介绍了detection based on region 家族: RCNN系列
semantic segmentation,instance segmentation ,Panoptic Segmentation(全景分割)与detection的关系,如传送门
本文基于CS231 2017春季课(英文字母):传送门
1.分类(Classification)or回归(Regression)?
detection是为了画出一个框,然后对框中的物体进行分类。一个bbox 包含x,y,w,h四个变量。至于类别是一定范围的分类(比如train的时候只有1000个类别)
在单目标时分类和回归都行(如左图),如果是右图十几只鸭子回归会非常麻烦,相当于十几个bbox+类别的变量要预测,然而在train model的时候,鬼知道test的时候有多少个objects,所以起码多目标把detection看作回归问题是不行的。
2. Classification problem
2.1 Slide Windows
最开始的做法就是Slide windows,将不同的cropped patch送入AlexNet等分类网络。比如下图,预先定义三个类别:Dog、Cat and Background,但是这种方法challeng在于怎么样去定义这样一个bbox?(众所周知,w和h可以随意变动)所以,为了保证周全性,囊括any size object,一张图像往往需要生成上千张甚至上万张候选框(candidate region proposals),计算量非常大,时间消耗也多。
2.2 Selective search
selective search 会产生2000个 region proposals,在CPU上仅仅几秒钟。但是这种方法依然有非常多噪声(不包含objects的框)。
2.3 RCNN
原文paper:传送门
RCNN首先使用selective search挑选了大约2000个region proposals。然后warped image region,初代版本detection 的网络含有FC(全连接层),故对input size有要求(fixed size),通过warped image region将尺寸warp到相同大小。
RCNN会将每一个crop送进一个分类网络里,利用SVM去分类categories。另外,(图中未画出),ConvNet出来之后还会预测4个offset,也就是bbox的x,w,h,y,这是个回归任务(regression task)。
额外的一个问题:aspect ratio(纵横比) 对算法准确率的影响?
没有确切的答案。
RCNN缺点太多了,因为它是传统的机器学习朝end to end的Deep CNN过渡的方法。
2.4 Fast RCNN
原文:传送门
fast rcnn最大的一个变化是 一开始对整张图像使用CNN,而不是对每一个crop。这极大地减少了计算量,之后的操作都在CNN出来的feature map中进行。在region proposals的选择上,依然是使用了传统的selective search,得到的region proposals仍然需要warp到固定的大小。
此处的warp使用的是ROI pooling,也是本文的一个novelty。比如说整张feature map大小是8x8,region proposals大小是7x5,预设了warp之后的size是2x2。由图所示,这无非就是一个上取整下取整的问题。
之后mult-loss进行训练。
2.5 test runtime contrast
fast rcnn非常快了。但是注意 region proposals占用了大多数时间,所以下一个版本就对其进行了修正。
2.6 faster rcnn
原文:传送门
这非常具有借鉴意义,detection问题一步一步变成了end to end。之前的region proposals使用的是selective search,faster rcnn 提出了 region proposal network(RPN),RPN需要做两件事:1.判断每一个potential region proposal是否包含object(分类)2.bbox coordinates(坐标,回归问题)。顺带一提,这有四个loss,如何解决有trick。
faster rcnn的速度已经非常快了
有一个巨好的faster-rcnn细节博客http://www.telesens.co/2018/03/11/object-detection-and-classification-using-r-cnns/