目标检测是计算机视觉领域中一个新兴的应用方向。相比前两年,它的性能越来越好。

对象定位

在构建对象检测之前,我们先了解一下对象定位。

神经网络 位置信息 神经网络定位算法_监督学习


定位分类问题:

不仅要用算法判断图片中是不是一辆汽车,还要在图片中标记出它的位置。

定位分类问题通常只有一个较大的对象位于图片中间位置。

对象检测问题:
图片可以含有多个对象,甚至单张图片中会有多个不同分类的对象。

图片分类的思路可以帮助学习分类定位,而对象定位的思路又有助于学习对象检测

分类和定位

神经网络 位置信息 神经网络定位算法_神经网络_02


图片分类的流程(标准的分类pipeline):

  • 输入一张图片到多层卷积神经网络
  • 输出一个特征向量
  • 特征向量反馈给softmax单元来预测图片类型

定位的思路

想定位图片中汽车的位置,实际上就是让神经网络多输出几个单元,输出一个边界框。

具体说就是让神经网络再多输出4个数字,标记为bx、by、bh和bw,这四个数字是被检测对象的边界框的参数化表示。

在这里规定,图片左上角的坐标为(0,0),右下角标记为(1,1),

要想确定边界框的具体位置,需要指定红色方框的中心点(bx,by),边界框的高度为bh,宽度为bw。

训练集的变化

训练集不仅包含神经网络要预测的对象分类标签,还包含表示边界框的这四个参数。

训练思路

接着采用监督学习算法,输出一个分类标签和这四个参数。

例子分析

此例中:

  • bx的理想值是0.5(表示汽车位于图片水平方向的中间位置)
  • by大约是0.7(表示汽车位于距离图片底部3/10的位置)
  • bh约为0.3(表示红色方框的高度是图片高度的0.3倍)
  • bw约为0.4(表示红色方框的宽度是图片宽度的0.4倍)。

定义目标标签y

神经网络 位置信息 神经网络定位算法_神经网络 位置信息_03


神经网络输出的是四个参数、分类标签出现的概率。

鉴于我们所要处理的问题,我们假设图片中只含有一个对象。

则y是一个向量:

  • 第一个组件Pc表示是否含有对象(如果对象属于前三类则Pc=1。如果是背景则Pc=0)。
  • 第二个组件bx、by、bh和bw表示如果检测到对象,就输出被检测对象的边界框参数。
  • 第三个组件c1、c2、c3表示在Pc=1的情况下,判断对象属于1-3中的哪一类

损失函数

神经网络 位置信息 神经网络定位算法_特征向量_04


上图是对误差函数的简单的描述。

通常做法是对边界框坐标应用平方误差或类似方法,对Pc应用逻辑回归函数(甚至采用平方预测误差也是可以的)。