理解Anchor

2020-06-26 185点热度 0人点赞

理解Anchor是理解RPN乃至Faster RCNN的关键。Faster RCNN先提供一些先验的边框,然后再去筛选与修正,这样在Anchor的基础上做物体检测要比从无到有的直接拟合物体的边框容易一些。

Anchor的本质是在原图大小上的一系列的矩形框,但Faster RCNN将这一系列的矩形框和feature map进行了关联。具体做法是,首先对feature map进行3×3的卷积操作,得到的每一个点的维度是512维,这512维的数据对应着原始图片上的很多不同的大小与宽高区域的特征,这些区域的中心点都相同。如果下采样率为默认的16,则每一个点的坐标乘以16即可得到对应的原图坐标。

为适应不同物体的大小与宽高,在作者的论文中,默认在每一个点上抽取了9种Anchors,具体Scale为{8,16,32},Ratio为{0.5,1,2},将这9种Anchors的大小反算到原图上,即得到不同的原始Proposal,如图1所示。由于feature map大小为37×50,因此一共有37×50×9=16650个Anchors。而后通过分类网络与回归网络得到每一个Anchor的前景背景概率和偏移量,前景背景概率用来判断Anchor是前景的概率,回归网络则是将预测偏移量作用到Anchor上使得Anchor更接近于真实物体坐标。

图1 Anchor原理示意图

在具体的代码实现时,lib/model/rpn下的anchor_target_layer.py与proposal_layer.py在类的初始化中均生成了所需的Anchor,下面从代码角度简单讲解一下生成过程,源代码文件见lib/model/rpn/generate_anchors.py。 代码获取方式参考:http://ai.52learn.online/1042

未经允许不得转载!理解Anchor

本文地址:https://ai.52learn.online/1057

站长邮箱:ai52learn@foxmail.com