目标定位与特征点检测

under 算法  tag CNN    Published on May 10th , 2019 at 08:36 pm

除分类问题外,定位问题也是神经网络要解决的目标之一
local1.png
如上图所示,分类问题是判断图像中的物体种类,而定位问题则是在分类的同时在图像上把目标圈出来
分类问题的解决方法是通过softmax函数输出预测值,那如果想实现目标定位,就要修改一下softmax的输出
local2.png
在上图情境中,假设我们只要检测三类目标:行人、车和摩托,其原本的softmax的输出应是$4*1$的向量,表示是行人、车、摩托还是什么都没有的概率。要想实现目标定位,我们还需要让softmax额外输出边界框(bounding box)的四个参数$b_x,b_y,b_h,b_w$,分别代表目标中心点的$(x,y)$坐标及边界框的长宽。我们将图像的左上角定为$(0,0)$,右下角为$(1,1)$,则输入图像中车的中心点坐标为$(0.5,0.7),b_h=0.3,b_w=0.4$
我们设定义图像信息的列向量$y$的维度为$8*1$,softmax输出的$\hat y$也具有相同维度
$P_c$代表图像中是否含有目标(含有为$1$,不含为$0$,若$P_c=0$则图像中不含目标,其余值则毫无意义,均设为$x$)
$c_1,c_2,c_3$分别代表目标为行人、车和摩托的概率
$y$中的元素从上至下分别为$P_c,b_x,b_y,b_h,b_w,c_1,c_2,c_3$
我们设定义上图的信息列向量为$y1$,定义一幅不含任何目标的图像的信息列向量为$y2$,则有

$$ y1= \begin{bmatrix} 1 \\ 0.5 \\ 0.7 \\ 0.3 \\ 0.4 \\ 0 \\ 1 \\ 0 \end{bmatrix} \quad y2= \begin{bmatrix} 0 \\ x \\ x \\ x \\ x \\ x \\ x \\ x \end{bmatrix} $$

我们将目标检测的损失函数定义为

$$ L(\hat y, y)= \begin{cases} (\hat y_1 - y_1)^2 &y_1=0 \\ (\hat y_1 - y_1)^2+(\hat y_2 - y_2)^2+...+(\hat y_8 - y_8)^2 &y_1 = 1 \end{cases} $$

同时当我们做人脸检测与人体姿态检测时,我们也可以选定多个特征点,然后让softmax输出他们的$(x_n,y_n)$即可。要注意的是我们要人为规定特征点的排列顺序,如$(x_1,y_1)$总代表左外眼角,$(x_2,y_2)$总代表右外眼角等


本文由 cxh 创作,采用 知识共享署名4.0 国际许可协议进行许可,转载前请务必署名
  文章最后更新时间为:May 10th , 2019 at 10:56 pm
分享到:Twitter  Weibo  Facebook