目标检测:anchor box

目前,几乎所有流行的通用目标检测方法,如经典的两步方法Faster-RCNN,一步方法SSD和YOLO等,都需要根据经验设计不同尺度(可以看成是物体面积)和高宽比的anchor box(有的方法中叫做default box或prior box)。实际上,anchor box是一系列经过设计的、尺寸不同的物体边框。一般情况下,如果我们需要在模型中某层特征图上检测某个特定尺度的物体,可以先为anchor box固定一个面积S,然后变换anchor box的宽、高比,如1:3,1:2,1:1,2:1,3:1(一般会增加一个1:1 的框),从而得到6个尺度的anchor box,最后使用经典的sliding window(滑窗·)的方法得到特征图上每个位置的anchor box。如果该层特征图的尺寸为H×W,总共会产生H×W×6个anchor box(6个尺度)。

图1.SSD中设计的anchor box。(a) 训练集中物体真实边框(蓝色和红色实线)。(b)考虑到接收域,面积较小的物体在较大的特征图中匹配到相应的anchor box(蓝色虚线)。(c)较大的物体在较小的特征图中匹配到相应的anchor box(红色虚线)。

在模型训练时,对于训练集中某类物体的某个样例,选择一个与其交叉面积(IoU)最大的anchor box作为基准点,这个anchor box的面积和高宽比与待测物体的真实边框最为接近,然后将该物体的真实边框向这个anchor box对齐,也就是计算物体真实边框与这个anchor box边框的偏移量和高宽比,作为模型边框回归分支的学习目标。因此模型对某个物体边框的预测输出是一个4元组Δ(cx,cy,w,h)。如图1(c)所示,Δ(cx,cy) 对应预测目标边框相对某个anchor box边框的偏移量,Δ(w,h) 对应预测目标边框的高和宽相对同一anchor box高和宽的比,从这个4元组的输出很容易反推出物体在原图中的边框尺寸。

通过引入anchor box,一方面,模型学习到的是物体真实边框与对应的anchor box的偏移量,而不是目标物体在图像中的绝对坐标,保证了检测任务的平移不变性;另一方面,通过这种对齐,可以使模型对多尺度物体检测的训练变得容易,因为物体边框对相应anchor box的偏移量的值分布于有限范围内。

然而,anchor box也随之带来一些问题,比如模型的输出变得非常稠密,因为对应特征图中每个anchor box,都要输出一个4元组的位置预测和对应这个位置的物体分类的预测分数(C类),这样就会生成(C+4)×H×W×6个输出。考虑在多个特征图上进行检测,模型的输出会进一步增加。另外,anchor box需要手动设计,涵盖的尺度有限,一般通过对训练集中目标物体边框尺寸的真实值进行聚类得到,这样会造成对一些形变较为严重的物体检测造成困难。

发布了207 篇原创文章 · 获赞 890 · 访问量 129万+

猜你喜欢

转载自blog.csdn.net/duan19920101/article/details/104213505
Box