3.1 目标定位(Object localization)

定位分类问题:不仅要用算法判断图片中是不是一辆汽车,还要在图片中标记出它的位置,用边框或红色方框把汽车圈起来,“定位”的意思是判断汽车在图片中的具体位置

定位分类问题通常只有一个较大的对象位于图片中间位置,对它进行识别和定位。对象检测问题中图片可以含有多个对象,甚至单张图片中会有多个不同分类的对象

构建汽车自动驾驶系统,对象可能包括以下几类:行人、汽车、摩托车和背景

定位图片中汽车的位置:让神经网络输出一个边界框,标记为bxb_{x},byb_{y},bhb_{h}bwb_{w},是被检测对象的边界框的参数化表示

红色方框的中心点表示为(bxb_{x},byb_{y}),边界框的高度为bhb_{h},宽度为bwb_{w}。训练集不仅包含神经网络要预测的对象分类标签,还要包含表示边界框的这四个数字,接着采用监督学习算法,输出一个分类标签,还有四个参数值,从而给出检测对象的边框位置

如何为监督学习任务定义目标标签 yy

目标标签yy的定义:y=[pcbxbybhbwc1c2c3]y= \begin{bmatrix} p_{c} \\ b_{x} \\ b_{y}\\ b_{h}\\ b_{w} \\ c_{1}\\ c_{2}\\ c_{3} \end{bmatrix}

pcp_{c}表示是否含有对象,如果对象属于前三类(行人、汽车、摩托车),则pc=1p_{c}= 1,如果是背景,则pc=0p_{c} =0pcp_{c}表示被检测对象属于某一分类的概率,背景分类除外

如果检测到对象,就输出被检测对象的边界框参数bxb_{x}byb_{y}bhb_{h}bwb_{w}pc=1p_{c}=1,同时输出c1c_{1}c2c_{2}c3c_{3},表示该对象属于行人,汽车还是摩托车

如果图片中没有检测对象:

pc=0p_{c} =0yy的其它参数全部写成问号,表示“毫无意义”的参数

神经网络的损失函数,如果采用平方误差策略:

L(y^,y)=(y1^y1)2+(y2^y2)2++(y8^y8)2L\left(\hat{y},y \right) = \left( \hat{y_1} - y_{1} \right)^{2} + \left(\hat{y_2} - y_{2}\right)^{2} + \ldots+\left( \hat{y_8} - y_{8}\right)^{2}

损失值等于每个元素相应差值的平方和

如果图片中存在定位对象,y1=pc=1y_{1} =p_{c}=1,损失值是不同元素的平方和

y1=pc=0y_{1}= p_{c} = 0,损失值是(y1^y1)2\left(\hat{y_1} - y_{1}\right)^{2},只需要关注神经网络输出pcp_{c}的准确度

这里用平方误差简化了描述过程。实际应用中可以不对c1c_{1}c2c_{2}c3c_{3}softmax激活函数应用对数损失函数,并输出其中一个元素值,通常做法是对边界框坐标应用平方差,对pcp_{c}应用逻辑回归函数,甚至采用平方预测误差

Last updated