faster rcnn中anchor的生成过程理解

首先,根据给定的base_size,生成一个所谓的base_anchor,其值为[0,0,base_size-1,base_szie-1]。例如当base_size=16的时候就生成一个坐标为[0,0,15,15]的矩形。

第二步根据上面的上面得到base_anchor进行坐标变换,计算出中心点xc,yc和矩形的高和宽w,h.即将我们说的xmin,ymin,xmax,ymax形式的坐标转化为w,h,xc,yc的坐标形式。用我们的例子就是从[0,0,15,15]变成了[16,16,7.5,7.5]。再依据w和h计算矩形的面积,这里记为base_anchor的size。将size除以不同的ratio得到一个数组,称之为size_ratios。此时size=256, size_ratios=[512,256,128]。接下来将每一个size_ratio开平方得到的值记为ws,而将ws*ratio的值记为hs,而每一对(ws,hs)和(xc,yc)则可以重新变换坐标生成一个anchor,三个size_ratio对应三对(ws,hs),即可以变换为三个anchor.将之堆叠在一起称为ratio_anchors. size_ratios=[512,256,128],对应的ws=[22,16,11],hs=[12,16,22]。则ratio_anchors=[[ -3.5 2. 18.5 13. ] ,[ 0. 0. 15. 15. ],[ 2.5 -3. 12.5 18. ]]

坐标转化的方法如下图,非常简单

faster rcnn中anchor的生成过程理解_第1张图片

第三步将上一步得到ratio_anchors的每一个anchor的w和h 乘上scales得到新的(ws,hs).如果scales=[8,16,32]三个scale,那么我们就可以得到3*3=9对(ws,hs),从而通过坐标变换得到9个anchors,这里是在(0,0)点处生成anchor,再进行滑动就可以得到所有的propsal区域。
faster rcnn中anchor的生成过程理解_第2张图片

       9个anchor 的坐标及对应的ws,hs

faster rcnn中anchor的生成过程理解_第3张图片

你可能感兴趣的:(计算机视觉)