当前位置:网站首页>A priori box (Anchor) in target detection
A priori box (Anchor) in target detection
2022-08-04 07:03:00 【hot-blooded chef】
什么是先验框?
Friends who have learned about the target detection algorithm must know the a priori frame(Anchor)的概念,So what is a prior box,Why have a priori box?若要解释这个问题,First we need to understand the principle of bounding box regression.
bounding box regression
如图所示,图中的狗子是我们要检测的目标,也即是红框(Ground Truth)圈住的物体.在通常情况下模型预测到的框是绿色框.但是由于绿色框不准,相当于没有正确的检测出狗子.所以我们希望有一个方法对绿色框进行调整,使得绿色框更接近红色框.
对于预测框我们一般使用 ( x , y , w , h ) (x,y,w,h) (x,y,w,h)来表示,其中 x , y x, y x,y代表预测框的中心点, w , h w,h w,h代表预测框的宽高.
现在设红框的坐标信息为:
G = [ G x , G y , G w , G h ] G = [G_x,G_y,G_w,G_h] G=[Gx,Gy,Gw,Gh]
绿框的坐标信息为:
G ′ = [ G x ′ , G y ′ , G w ′ , G h ′ ] G' = [G'_x,G'_y,G'_w,G'_h] G′=[Gx′,Gy′,Gw′,Gh′]
那么要经过怎么样的调整才能使得绿框变成红框呢?目标检测中的做法是:平移+缩放.
- 将预测框的中心点平移到与真实框的中心重合的位置.
- 再将预测框的高和宽缩小或放大到与真实框一样的长度.
众所周知,平移至重合位置需要两个偏移量 b x , b y b_x,b_y bx,by,缩放也需要两个系数 s w , s h s_w,s_h sw,sh
那么显然这个偏移量与缩放系数的大小与真实框实际的偏差有很大关联.若原本预测框与真实框就很接近,需要偏移和缩放的大小也就少一点,反之亦然.所以我们肯定希望预测框与真实框越接近越好.
但是真实的情况往往是不同的,数据中的真实框都是各种各样的,有的可能非常大,有的可能非常偏,数据分布非常不统一,而预测框就更不用说了.这就导致了学习到的偏移量和缩放系数变化大,模型难收敛的问题.所以为了解决这个问题,我们引入了Anchor机制.
Anchor
虽然我们不能约束预测框的位置,但是可以统一真实框的位置.我们将假设我们将所有真实框的长宽都设为128,把这个长宽都为128的框叫做先验框(Anchor),也就是图中蓝色的框.Then the coefficients learned by the model will be偏向这个先验框.那么有人就会问了,那这个预测框要如何转为真实框?很简单,也是将它进行平移+变换的操作变回真实框.
But only take128One scale to represent all ground-truth boxes is certainly not appropriate.所以在Faster RCNN中引入了9A priori box of various scales:
而加入了多个尺度之后,真实框如何选择合适的anchor又成了一个问题.一般我们选择IOU最大的作为先验框.
而这种固定尺度的anchor也会有缺陷,不能很好的适应所有数据集.例如coco数据集中就有很多小目标.所以后面也有YOLOv3这一类的目标检测模型使用k-means算法Filter all true boxes.选出最有代表性的几个尺度作为anchor.
在什么阶段进行先验框匹配?
一般来说,我们都会在经过骨干网络处理的特征层上进行先验框匹配.因为如果在一开始的图片上就进行先验框匹配,那就会有很多先验框,这样计算量就会激增.以Faster RCNN为例,输入图片是600x600的大小,And the feature layer is38x38的大小.If a prior box matching is performed on the input image,that produces 600 ∗ 600 ∗ 9 = 3 , 240 , 000 600 * 600*9 = 3,240,000 600∗600∗9=3,240,000个先验框,And on the feature layer it is 38 ∗ 38 ∗ 9 = 12996 38 * 38 *9 = 12996 38∗38∗9=12996个先验框.下图是Faster RCNNA demonstration of the prior box at a point in the feature layer(Other points are not drawn).
Of course for object detection,There may be feature layers of different sizes within a model,They are used to detect objects of different scales,The number of its center points is not the same.如YOLOv3There are a series of target detection networks52x52,26x26,13x13的特征层.
本文章只是对Anchor机制的一些理解,若有错误之处,敬请指正.
边栏推荐
猜你喜欢
天鹰优化的半监督拉普拉斯深度核极限学习机用于分类
数据库:整理四个实用的SQLServer脚本函数
狗都能看懂的Self-Attention讲解
A semi-supervised Laplace skyhawk optimization depth nuclear extreme learning machine for classification
自适应迁移学习核极限学习机用于预测
DenseNet详解及Keras复现代码
【HIT-SC-MEMO3】哈工大2022软件构造 复习笔记3
狗都能看懂的变化检测网络Siam-NestedUNet讲解——解决工业检测的痛点
网络技巧:教你给路由器装上电池,断电照样可以上网!
华硕飞行堡垒系列无线网经常显示“无法连接网络” || 一打开游戏就断网
随机推荐
解决腾讯云DescribeInstances api查询20条记录以上的问题
并发概念基础:线程,死锁
nacos 返回 403 unknown user 太他么坑了 源码解析
益智小游戏- 算算总共多少正方形
CMDB 腾讯云部分实现
冰歇webshell初探
C#找系统文件夹路径
目标检测中的先验框(Anchor)
电脑知识:台式电脑应该选择品牌和组装,值得收藏
VMD结合ISSA优化LSSVM功率预测
一场聚会,转行渗透测试月薪13.5k,感谢那个女同学......
golang 坐标格式 转换 GCJ02ToWGS84
数据库sql的基础语句
【HIT-SC-LAB2】哈工大2022软件构造 实验2
DenseNet详解及Keras复现代码
C# 剪裁图片内容区域
桌面右键的NVIDIA去除与恢复
Scheduler (Long-term,Short-term, Medium-term Scheduler) & Dispatcher
JUC并发容器——跳表
生成一个包含日期的随机编码