卷积神经网络—目标检测学习笔记(上)

「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战」。

3.1 目标定位(Object Localization)

区别
Image classification(图像分类):对输入图像进行分类。例如有一个猫狗分类器,当你输入一张图片时,分类器能分辨出这是猫或者是狗,这便是图像分类。
Classification with localization(定位分类):不仅要进行图像分类,还要得到被检测目标的位置(用包围盒bounding box表示)。注意,定位分类问题中每张图片仅涉及一个目标。
Detection:是能够同时处理多个、多种目标的分类定位。

三者之间实际是一种逐渐复杂的关系。
下面介绍定位分类算法:
如果使用监督学习进行训练,那么一个训练样本(X,Y)分别如下(假设有三种目标,编号为0,1,2):
X:输入图像

Y:

[Pcbxbybhbwc0c1c2] \left[ \begin{matrix} P_{c} \\ b_{x} \\ b_{y} \\ b_{h} \\ b_{w} \\ c_{0} \\ c_{1} \\ c_{2} \\ \end{matrix} \right]

PcP_{c}

bxb_{x}

byb_{y}

bhb_{h}

bwb_{w}

c0,c1,c2c_{0},c_{1},c_{2}

Pc=0P_{c}=0

\ L(y,\hat y)= \begin{cases} |y- \hat y|^2,(y- \hat y模的平方)\quad \ \ & P_{c}≠0,\\ (P_{c}- \hat P_{c})^2, \quad \ \ & P_{c}=0 \end{cases}\

3.2 特征点检测(Landmark Detection)

获取特征点可以有许多有意思的应用,如判断人物的动作姿态,识别图片中的人物表情,以及相机的贴图功能等等。接下来介绍获得一个可以检测指定特征点的神经网络。
Lena

假设我们要检测人眼的关键点,那么需要的关键点是上图中四个绿色点,从左到右编号为

E1,E2,E3,E4E_{1}, E_{2}, E_{3}, E_{4}

[isFaceE1xE1yE2xE2yE3xE3yE4xE4y]\left[ \begin{matrix} isFace\\ E_{1_{x}}\\ E_{1_{y}}\\ E_{2_{x}}\\ E_{2_{y}}\\ E_{3_{x}}\\ E_{3_{y}}\\ E_{4_{x}}\\ E_{4_{y}}\\ \end{matrix} \right]

3.3 目标检测(Object Detection)

介绍了最基本的滑动窗口检测算法(sliding windows detection algorithm)。
如果我们现有有一个ConvNet,可以识别多种目标,那么如何在一张图片中(包含多个或多种目标)进行目标检测呢?滑动窗口可以。
1
使用一个固定大小的窗口在图片上滑动,并将对应的部分截取输入到ConvNet进行识别,当所截取部分包含目标时就可以获得分类信息和目标位置。
为了适应大小不同的目标,我们可以使用多个尺寸的窗口进行滑动操作。
滑动窗口是最基本的目标检测算法,优点是算法简单,缺点也显而易见:计算成本太高,因为窗口滑动会产生大量的截图,我们要将大量截图输入到ConvNet中进行识别,计算成本非常大。