【目标检测】One-stage目标检测算法


参考(写的非常清晰) https://zhuanlan.zhihu.com/p/61485202

本文主要以yolov3和SSD为主,分析One-stage目标检测算法。(文中说的yolo普遍指yolo-v2或yolo-v3)
 

1. One-stage目标检测算法流程

输入:VOC数据集的一张图片(20个类别),输入尺寸设置为416×416,(SSD是300×300)
输出:一个特征图,对于416×416的输入,最后的输出为13×13×125(降采样了32倍,416/32=13)

【Attention】一般来说,如果数据集有c类,而模型有k个检测器(k是特征图上每个位置anchor的数量),那么网格需要有k×(4+1+c)个输出通道。
在这里插入图片描述
最后得到的13×13特征图可以看成是13×13个单元格,每个单元格都有5个独立的物体检测器(anchor=5),每个检测器都预测一个边界框。
关键点:检测器的位置是固定的,它只能检测中心点落在该单元内的物体(这一限制是为了保证检测器不发生混乱,所以加以约束)。每个检测器产生25个值:

  • 20个值表征类别概率(使用softmax可以获取该检测器中目标所属的类别,也可以使用sigmoid进行多标签分类)
  • 1个值表示置信度(表明该检测器包含目标的可能性,介于0-1之间)
  • 4个值表示边界框坐标(中心x,中心y,宽度w,高度h)
    由于每个单元格都有5个检测器,因此共有5×25=125个输出通道。

该模型总是预测固定数量的边界框:13×13个单元乘以5个检测器给出845个预测结果。显然,绝大多数这些预测都不会有用,毕竟大多数图像最多只包含少量物体,可以通过置信度来忽略掉一些预测框,使用NMS可以去除重叠框。

为什么要对检测器实施约束?

为了让模型更容易学习,将每个检测器分配到图像中的固定位置去学习,每个检测器只负责学习附近的物体,而不会预测较远的问题,是onet-stage目标检测算法的技巧。(如果没有这样的约束,所有检测器都会在整张图中去预测,很容易出现混乱)

 

2. anchor是什么,有什么用?

上面的分析可知,网格的划分对检测框的位置进行了约束,那么,是否可以对检测框的形状也进行约束呢?答案是肯定的。这就是anchor的任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值