anchor box

参考:吴恩达 卷积神经网络

anchor box 是目标检测中十分重要的概念,虽然最近很多论文都提出anchor free,但是深入理解anchor box对我们理解目前主流的faster rcnn,ssd,yolov2v3等算法很有帮助。

传统方法:

1.滑动窗口:顾名思义,采用一个固定大小的窗口在图上不断滑动截取固定大小的图片,从左到右,从上到下,遍历整个图片。依次判断截取下的框包不包含目标。然后改变框的尺寸继续搜索,类似一种暴力穷举的方法,的确可行,但是但图片尺寸较大的时候,该方法特别浪费时间。(滑动操作可用卷积来实现
在这里插入图片描述
2.Regional Proposal(RPN):建议框,即在滑动窗口的思想上,提取出所有可能包含识別目标的一些候迭区域,相比于传统的候选区域而言,Regional Proposal数量上会更少(通常1K~2K个) ,质量更高。
在这里插入图片描述

为什么需要anchor box?

如上图,基于滑动窗口的方法,还有yolov1里的方法,每个网格的框只能预测一个类别,不能进行多类预测。提出anchor box可以很好的解决这个问题。
在这里插入图片描述
如图,车和人的中心点正好重合在一点,如果仍然采用原来的输出y,那么将无法结果。必须从两个中选一个。
采用anchor box的思路是,预先定义两个(一般为很多个)不同形状的anchor box,我们需要做的就是将预测结果与这两个anchor box关联起来,
在这里插入图片描述
也就是定义输出为右边这个向量y的形式。
对于行人而言,其形状更类似于anchor box1,所以将其分配到y的上半部分,其中行人的类别为为1,即c1=1,c2=c3=0。同理,把车分配到y的下半部分。
和之前相同的是,每个对象都根据中点位置分配到中点所在的网格里,与之间不同的是,每个对象还分配到一个和ground truth iou最高的anchor box ,也就是所,这个对象分配到一对(网格,anchor box),如下图:
在这里插入图片描述
如果该网格里只有人,没有车,那么此时输出y中 anchor box2分量还是不变,anchor box1置信度为0,其他的do not care,如下图:
在这里插入图片描述
  还有一种情况,两个对象都在同一个网格中,且两个对象的anchor box 形状也一样。这是算法处理不好的另一种情况,你需要引入一些打破僵局的默认手段,专门处理这种情况,希望你的数据集里不会出现这种情况,其实出现的情况不多,所以对性能的影响应该不会很大。
  建立anchor box的原因是为了处理两个对象出现在同一个格子的情况,实际中这种情况很少发生,特别是如果你用的是19×19网格而不是3×3的网格,两个对象中点处于361个格子中同一个格子的概率很低,确实会出现,但出现频率不高。

怎么选择anchor box?

  人们一般手工指定anchor box形状,你可以选择5到10个anchor box形状,覆盖到多种不同的形状,可以涵盖你想要检测的对象的各种形状。还有一个更好的方法,在yolov2中使用的kmeans算法,可以将两类对象形状聚类,如果我们用它来选择一组anchor box,选择最具有代表性的一组anchor box,可以代表你试图检测的十几个对象类别,但这其实是自动选择anchor box的高级方法。如果你就人工选择一些形状,合理的考虑到所有对象的形状,你预计会检测的很高很瘦或者很宽很胖的对象,这应该也不难做。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

通信仿真爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值