Segmentation,Location and Detection based on Deep neural network

Posted by Gwan Siu on July 4, 2017

1.Introduction: 分类,检测和分割三部曲

分类,检测和分割是计算机视觉(computer vision)领域中基本三大问题。其中,分类是基础 检测是分类的进阶,而是分割是检测的进化版本。这三个任务分别回答三个问题:是什么?是什么?+在哪里?图像里有什么+在哪里?。在给定一幅图像,分类只需要对图像中的物体(object)进行判断,而检测不仅要判断出主要物体,还要回答出这些物体在图像的什么地方。分割的要求则对物体和背景都要区分,这在检测的基础上提出了更加精细的要求。下图是cs231n讲义中的一幅图:

---

每个task的特点:

  1. Semantic Segmentation(语义分割): No ojects,Just pixels. 在语义分割分钟中,每一个pixel都会被标注,但并不会具体区分标注的pixels具体是什么,这是告诉你 图像中有几类,如图:

image_1bk6obracg1elb1u061394212m.png-243.7kB

  1. 单目标检测: 可以归结为calssification 和 Localization的问题。
  2. 多目标检测和分割: 检测图像中物体数量不确定(一般>=2),Localization不能简单归结成Regression的问题,在分割上便会要求更加精确的pixel localization(像素级别的定位)。

2.Semantic Segmantation(语义分割)

2.1 Sliding Windows(滑动窗口法)

使用window滑过一整张图片,从而基于每个像素都提取出一个个patch,将提取出的patches都输入到神经网络中做判断。But sliding window is very inefficient! 因为sliding windows不能够重复使用overlapping patch的shared features. image_1bk6pe6cla0116oc1sh8ri410i59.png-271.4kB

2.2 Fully Convolution

Fully Convolution指的是图像在卷积网络进行卷积操作中,图像的大小不发生变化。Fully Convolution的方法是在最后提取的feature map中使用argmax进行分割操作。但在卷积操作中要保持图片大小这一操作使得Fully Convolution方法十分消耗内存(very expensive),对于high resolution image的操作性不强。因此,便想到在卷积层中,处理时使用下采样(down sampling)进行处理,在最后进行分割前使用上采样(upsampling)恢复成原来大小。其中upsampling的方式, 包括unpooling和convoluton transpose(deconvolution) image_1bk6prv6h143u13jggie1u5j9slm.png-166.4kB

image_1bk6pu8e6f3c019c4vcfenr16.png-185kB

3. 单目标检测(Classification+Localization)

单目标检测需要解决两个基本问题: 1.图像里面有什么物体?(对objects进行分类);2.图像里的物体在哪里(定位问题)?其中,第一个问题可以简单归为classificatin的问题,第二问题可以看成是对bounding box的regression problem(回归问题),即使用回归的方法定位出box的四个坐标(lx,ly,rx,ry,cx,cy)。

image_1bk71v5v7c2358t3dt16o41vfc1j.png-172.5kB

3.1 Human Pose Estimation(人体姿势估计)–单目标检测的应用

假设一个人体的姿势使用14个点去表示,事先在训练集中标识出这14个点坐标,如头部,颈部,左右手(三个部位),左右脚,左右膝盖以及左右胯部。在训练中,使用神经网络提取特征,使用该特征用regression的方法预测这14个点的坐标,最后将所有$L_{2}$ loss加起来全体优化。如图所示: image_1bk72gh16sdoknv10mqcnfo5h20.png-287kB image_1bk72inbl7f517p8mr9a771lj72d.png-138.7kB

4. Object Detection(目标检测)

Object dectection 与single object detection不同,object detection是多目标分类检测问题。通常,我们并不知道图像中object的数量,因此无法实现知道要回归预测多少个bounding box。因此,单目标检测中classification+regression的模式并不适用(严谨来说,并不是完全适用,需要对图像进行变动,如YOLO,SSD)。在Object detection研究中,Region proposal 和 regression是主要的两种方法。

4.1 Region Proposal

一开始,我们会想到使用sliding window的方法产生许多patch,并对这些patch进行分类回归。但这存在问题,在不确定物体大小的情况,sliding window的大小该如何定义(即存在muti-scale的问题),并且silding window会产生巨多的patch,使用CNN对patchs进行分类是不高效的(不快),因为很多patch是overlapping,这意味着许多information被重复使用。因此,针对silding window存在的问题,region proposals的方法被提出来。简单点说,region proposals就是通过一种方法预选出尽可能存在objtect的区域输入到CNN中,这本质上是一种基于patch的方法。但相对于sliding window的方法来说,patch的数量减少了很多,因此运行相对较快。 image_1bk747gtv1tu51jdh31o1i571p8t2q.png-245.8kB image_1bk74im781nfk13co193021k1qsg37.png-357.6kB

4.1.1 R-CNN

R-CNN的流程图如下:

image.png-415kB

R-CNN在处理object detection问题上,首先使用region proposed的方法选择出Region of interest;在把直接提取的部分图片输入神经网络前,需要wrap输入图片,因为Convolutional network对输入图片的尺寸有要求,但选择出的Region of interest尺寸大小并不一样。(在SPP network这篇文章中指出,Convolutional neural network之所以要求输入图像大小的尺寸,是因为后面fully-connect layer的影响,并且wrap会对输入图片造成一定程度的形变,这会影响最后的performance。具体可参考我的SPP network笔记. 之后将wrap后的图片输入到神经网络中,提取特征,并在最后使用SVMs做分类(classification)和对bounding box做回归(regression). R-CNN很好地将region proposed method和CNN结合在一起,但主要缺点是训练太慢,消耗许多内存。主要是因为CNN固定输入尺寸,每一次都要对proposed region进行wrap。在这一点上可以用SPP-net解决。

4.1.2 Fast R-CNN

image.png-292.1kB

Fast R-CNN主要是针对RCNN训练慢的缺点提出改进版,R-CNN训练慢,检测时间慢,主要是因为每次要wrap图片进行输入,而在Fast R-CNN中,region proposal并不是在一开始中使用,而是对“conv5”的输出加入“RoI pooling layer”提取region of interest, 其本质也是一种region proposal的方法。这样的好处是可以输入一整张图片到CNN中,省去了十分消耗时间的data preprocessing的步骤。

image.png-367kB

4.1.3 Faster R-CNN

Fast R-CNN的时间主要消耗在region proposal这一块。因此,Faster R-CNN在CNN结构中加入Region Proposal Network(RPN),从而将Classification, regression and region proposal三种任务结合在一个网络上,同时进行训练。Faster R-CNN结构图如下: image.png-567.6kB

4.2 Regression Method

目标检测领域中除了Region proposal的方法,也有单单基于回归的方法,比如YOLO和SDD。其思想比较简单:先将图片分成许多小块,对每一个小块进行regression,预测出在这个小块中每一类别的score.其实, YOLO和SDD并没有选择region proposal的方法,只是很粗暴地将图片分成网格状(这样做就可以知道位置信息,然后就可以用神经网络做预测和回归).显然,这样做会导致位置精度不高,但可以很高效。

image.png-805kB

4.3 Dense Network:Object Dectection + Captioning

image.png-747.3kB

4.4 Instance Segmentation-Mask R-CNN

Maks R-CNN 不仅完成了多目标分割还同时完成了姿势估计的任务,传统的network通常是只能学习一项任务,但这个网络却完成了一对二的实现,膜拜一下凯明大神,太厉害。

image.png-405.6kB

image.png-1600.3kB