CS231 第十一讲 图像识别和分割
课程视频地址: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来选择候选区域: