课程视频地址:https://study.163.com/courses-search?keyword=CS231

课程主页:http://cs231n.stanford.edu/2017/

这一讲介绍了图像识别和分割。

之前我们介绍了图像识别问题,实际中还有图像分割,定位以及识别问题:

分割

图像分割问题是给图像中每个像素打上标签,具体的形式如下:

一种处理图像分割问题的方法是使用滑动窗口——将图像拆成很多小块,然后给每个小块打上标签:

但是这个方法的问题是效率太低,比较好的方法是直接对整个图像做卷积操作:

但是这样做的结果是对第一层需要大量参数,为了解决这问题,可以使用下采样和上采样方法,对应的操作为池化(pooling)和去池化(unpooling):

去池化为池化的逆操作,比较常见的方法如下:

注意“Max Unpooling”和“Bed of Nails”不同,前者元素的位置是随机的,后者元素总是位于左上方。

注意这几种去池化方法没有参数可以学习,还有一种参数可学习的去池化方法——转置卷积(Transpose Convolution):

转置卷积的计算方法为将输入的每个元素和卷积核相乘(元素相乘),然后累加,工作方式如上图所示,这里再看一个一维的例子:

定位

定位问题是对图像进行分类并对物体进行定位:

方框需要由$4$个参数,方框中心点$(x,y)$以及长宽$(w,h)$,实际中会将分类问题和定位问题同时进行,具体过程如下:

目标识别

目标识别问题是将图像中每个物体都定位出来:

一个常见的方法是滑动窗口,将图像的很多小块输入到CNN中,然后判断图像中是是否有某些物体:

这样的问题是运算量太大,一种优化的方法是候选区域(Region Proposals)——候选区域法会对图像周围画上上千个框,得到候选区域,然后我们可以对这些区域应用CNN来进行目标识别:

R-CNN就是利用候选区域来做目标识别:

首先得到候选区域,将这些区域转化为大小相同的图片,然后喂入CNN中,最后利用SVM进行分类,回归进行位置预测。这个方法的问题依旧是运算量太大,这是因为要做多次卷积操作,所以后来的改进算法Fast R-CNN先将图片喂入CNN中,然后计算候选区域:

该算法的的时间主要用于选择候选区域,所以后来的改进算法Faster R-CNN直接让CNN来选择候选区域: