目标检测

定位与检测

我们 不仅要用算法判断图片中是不是一辆汽车,还要在图片中标记出它的位置,用边框或红色方框把汽车圈起来,这就是定位问题。

当图片中有多个对象时,应该如何检测它们,并确定出位置。比如,

你正在做一个自动驾驶程序,程序不但要检测其它车辆,还要检测其它对象,如行人、摩托车等等。

定位的表示

对于分类问题我们网络最输出的是每个类别对应的概率大小

如果你想定位图片中汽车的位置,我们可以让神 经网络多输出几个单元,输出一个边界框。具体说就是让神经网络再多输出 4 个数字,标记为 ??,??,???,这四个数字是被检测对象的边界框的参数化表示。

标定框的参数表示

图片左上角的坐标为(0,0),右下角标记为(1,1)。 要确定边界框的具体位置,需要指定红色方框的中心点,这个点表示为(??,??),边界框的高度 ,为?,宽度为??

定位即分类标签+标定框

定位问题目标标签y的表示

加入我们有4个分类

行人,汽车,摩托车,背景。

第一个组件??表示是否含有对象,如果对象属于前三类(行人、汽车、摩 托车),则?? = 1,如果是背景,则图片中没有要检测的对象,则?? = 0。我们可以这样理解 ??,它表示被检测对象属于某一分类的概率,背景分类除外。

如果检测到对象,就输出被检测对象的边界框参数???????。最后,如果存在某个 对象,那么?? = 1,同时输出?1?2?3,表示该对象属于 1-3 类中的哪一类,是行人,汽车还是摩托车。

注:这里表示的是定位问题 所以我们假设图片中 只有一个物体,或者没有物体即图中是背景。

如图pc=1 表示图中包含一个物体 bx by bh bw 表示标定框的数值 c2 = 1 表示 图中的物体是汽车。

当图中是背景的时候pc=0,其他的信息(标定框和物体分类标签)都是无意义的,我们也不用去考虑。

 

最后,我们介绍一下神经网络的损失函数,其参数为类别?和网络输出?^,如果采用平方误 差策略,则?(?^ , ?) = (?^1 − ?1)2 + (?^2 − ?2)2 + ⋯ (?^8 − ?8)2,损失值等于每个元素相应差值的平方和。

如果图片中存在定位对象,那么?1 = 1,所以?1 = ??,同样地,如果图片中存在定位对象, ?? = 1,损失值就是不同元素的平方和。 另一种情况是,?1 = 0,也就是?? = 0,损失值是(?^1 − ?1)2,因为对于这种情况,我们不

用考虑其它元素,只需要关注神经网络输出??的准确度。

回顾一下,当?1 = 1,平方误差策略可以减少这 8 个元素 预测值和实际输出结果之间差值的平方。如果?1 = 0? 矩阵中的后 7 个元素都不用考虑,只需要考虑神经网络评估?1(即??)的准确度。


特征点检测

眼角坐标为(?, ?),你可以让神经网络的最后一层多输出两个数字????,作为眼角的坐标值。

如果你想知道两只眼睛的四个眼角的具体位置,那么从左到右,依次用四个特征点来表示这四

个眼角。(注:图中的模特是吴恩达老师的夫人 Carol Reiley

特征点选取

也许除了这四个特征点,你还想得到更多的特征点输出值,这些(图中眼眶上的红色特征

点)都是眼睛的特征点,你还可以根据嘴部的关键点输出值来确定嘴的形状,从而判断人物是

在微笑还是皱眉,也可以提取鼻子周围的关键特征点。为了便于说明,你可以设定特征点的个

数,假设脸部有 64 个特征点,有些点甚至可以帮助你定义脸部轮廓或下颌轮廓。选定特征点

个数,并生成包含这些特征点的标签训练集,然后利用神经网络输出脸部关键特征点的位置。

当有64个特征点的时候我们输出目标y有64*2+1个特征单元,1表示图中是否是人脸。


目标检测

如何通过卷积网络进行对象检测,采用的是基于滑动窗口的目标检测算法。

图中红框表示窗口

我们通过把窗口中截取的部分的图片输入到卷积网络中,来判断截取的部分是否包含物体。这个大小的窗口不断滑动知道遍历我们的图片。

接着我们使用大一些的窗口使用滑动窗口再遍历一下图片,使用这个大小的窗口来检测物体。

滑动窗口有自己的弊端。

1窗口大小的设置

2步长的设置,步长即每次滑动的长度

3计算量较大


卷积的滑动窗口实现

我们这里使用是用全卷积来替代全连接方式

这种方式有两个好处:

1卷积的方式参数主要体现在卷积核的部分,有参数共享的性质,相对于全连接,参数量较少,由此降低了计算量。

2卷积的feat map 的输入尺寸不用是固定的。

这种方式是在overfeat检测算法种使用的。

可以看这篇博客了解overfeat

https://www.cnblogs.com/liaohuiqiang/p/9348276.html

在overfeat种我们训练模型时使用的14*14尺寸的特征,输出的是1*1

在测试的时候我们输入的特征是16*16

算法中对比了预测时使用传统滑动窗口 和 把整个图片输入到全卷积网络 两种方式

当我们使用滑窗的时候我们一共计算4次,但是其中有很多重复的多余的计算。所以一次输入到全卷积网络中的效果比较好(共享计算)。

如图我们输入的是28*28的特征 把他输入到全卷积网络中 ,我们这里使用是参数为2的最大池化,相当于滑动窗口滑动的步长为2。最后输出的结果是8*8的尺寸。其中8*8左上角第一个小格子代表我们第一次滑动窗口的结果。

这种算法整体效果不错,但是有一个不足的地方就是滑动窗口检测的边界框不是非常的准确。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值