人工智能AI面试题-4.12什么是深度学习中的anchor?
4.12 什么是深度学习中的anchor? 解析⼀: 提到RPN⽹络,就不能不说anchors。所谓anchors,实际上就是⼀组由RPN/generate_anchors.py ⽣成的矩形。直接运⾏Faster RCNN的作者在其论⽂中给的demo中的generate_anchors.py可以得到以下输出: [[ -84. -40. 99. 55.] [-176. -88. 191. 103.] [-360. -184. 375. 199.] [ -56. -56. 71. 71.] [-120. -120. 135. 135.] [-248. -248. 263. 263.] [ -36. -80. 51. 95.] [ -80. -168. 95. 183.] [-168. -344. 183. 359.]] 其中每⾏的4个值 表矩形左上和右下⾓点坐标。9个矩形共有3种形状,长宽⽐为⼤约为 三种,如下图。实际上通过anchors就引⼊了检测中常⽤到的多尺度⽅ 法。🔲📏 注:关于上⾯的anchors size,其实是根据检测图像设置的。在python demo中,会把任意⼤⼩的输⼊图像reshape成800x600(即下图中的M=800,N=600)。🔄🖼️ 再回头来看anchors的⼤⼩,anchors中长宽1:2中最⼤为352x704,长宽2:1中最⼤736x384,基本是cover了800x600的各个尺度和形状。🔍📏 那么这9个anchors是做什么的呢?借⽤Faster RCNN论⽂中的原图,如下图,遍历Conv layers计算获得的feature maps,为每⼀个点都配备这9种anchors作为初始的检测框。这样做获得检测框很不准确,不⽤担⼼,后⾯还有2次bounding box regression可以修正检测框位置。📊🎯 解释⼀下上⾯这张图的数字。 a) 在原⽂中使⽤的是ZF model中,其Conv Layers中最后的conv5层num_output=256,对应⽣成 256张特征图,所以相当于feature map每个点都是256-dimensions b) 在conv5之后,做了rpn_conv/3x3卷积且num_output=256,相当于每个点又融合了周围3x3的空间信息(猜测这样做也许更鲁棒?反正我没测试),同时256-d不变(如上图中的红框) c) 假设在conv5 feature map中每个点上有k个anchor(默认k=9),⽽每个anhcor要分foreground 和background,所以每个点由256d feature转化为cls=2k scores;⽽每个anchor都有(x, y, w, h)对应4 个偏移量,所以reg=4k coordinates d) 补充⼀点,全部anchors拿去训练太多了,训练程序会在合适的anchors中随机选取128个postive anchors+128个negative anchors进⾏训练 注意,在本⽂讲解中使⽤的VGG conv5 num_output=512,所以是512d,其他类似。 其实RPN最终就是在原图尺度上,设置了密密⿇⿇的候选Anchor。然后⽤cnn去判断哪些Anchor是 ⾥⾯有⽬标的foreground anchor,哪些是没⽬标的backgroud。所以,仅仅是个⼆分类⽽已! 那么Anchor⼀共有多少个?原图800x600,VGG下采样16倍,feature map每个点设置9个Anchor,所以: 其中ceil()表⽰向上取整,是因为VGG输出的feature map size= 50*38。 本解析来源:https://zhuanlan.zhihu.com/p/31426458 解析⼆: 当我们使⽤⼀个3*3的卷积核,在最后⼀个feature map上滑动,当滑动到特征图的某⼀个位置时,以当前滑动窗⼜中⼼为中⼼映射回原图的⼀个区域(注意 feature map 上的⼀个点是可以映射到原图的⼀个区域的,相当于感受野起的作⽤),以原图上这个区域的中⼼对应⼀个尺度和长宽⽐,就是⼀个anchor了。 Fast RCNN使⽤3种尺度和3种长宽⽐(1:1;1:2;2:1),则在每⼀个滑动位置就有 3*3 = 9 个 anchor。 解析三: 在Faster RCNN⾥⾯,Anchor(或者说RPN⽹络)的作⽤是代替以往RCNN使⽤的selective search 的⽅法寻找图⽚⾥⾯可能存在物体的区域。 当⼀张图⽚输⼊ResNet或者VGG,在最后⼀层的feature map上⾯,寻找可能出现物体的位置,这时 候分别以这张feature map的每⼀个点为中⼼,在原图上画出9个尺⼨不⼀Anchor。然后计算Anchor 与GT(ground truth)box的IoU(重叠率),满⾜⼀定IoU条件的Anchor,便认为是这个Anchor包含了某个物体。 ⽬标检测的思想是,⾸先在图⽚中寻找“可能存在物体的位置(regions)”,然后再判断“这个位置⾥⾯的物体是什么东西”,所以region proposal就参与了判断物体可能存在位置的过程。region proposal是让模型学会去看哪⾥有物体,GT box就是给它进⾏参考,告诉它是不是看错了,该往哪些地⽅看才对。