一开始坑定是问项目,但每个人都不一样,所以没啥写的必要,然后开始问基础,这个大家都一样,所以有写的价值,最后编程,就写了个NMS,这个应该会吧?
旷视实习生面试, 感觉面试官对这种 two stage 的算法很在意, 问的问题也会从很宽泛到非常的细节. 面完之后感觉对这个算法的理解还是不够的, 所以 按照我碰到的问题,再来认真的撕一遍.
一 RPN
问: 按照你接触的检测算法,简单介绍一下
答: 经典的检测算法主要有Faster RCNN SSD YOLO 之后的很多工作都是在这些的基础上的改进,比如MASK RCNN DSSD YOLOv2 v3等等
问: 我不是要你说简单的名字,我的意思是你要介绍一下他们的主要贡献,这样吧,你来说一下 Faster RCNN 相对于之前的工作有什么贡献,具体是什么,并解释一下 (这里就引出了第一个很重要的点 RPN 网络)
首先, Faster RCNN 是在 FAST RCNN 的基础上做的,他的主要贡献是设计了RPN网络. 之前的工作生成预选框用的方法是 selective search 的方法, RPN (region proposal network)的方法将整个算法实现了端到端的训练, 提升了精度和速度.
RPN的具体工作流程是这样的,首先我们需要一个骨干网络,通过特征提取得到 feature map . 将这个feature map 作为 RPN 网络的输入. 进入RPN网络之前, 在这张feature map 上的每个锚点上提出9个锚框. 比如原文的是40×60×9 大约20000个框. 之后这20000框的信息分成两路 ,分别做 1×1 的卷积操作,第一路卷积后的尺寸是 40×60×36(4×9 9个框,每个框有四个数值的信息), 另外一路卷积后的结果是 40×60×18(2×9 9个框,每个框有两种可能 positive or negative) , 在这一路经过softmax的打分后就可以得到每个框的分数,有了分数,又有这些框的坐标,我们就可以做 NMS . 在NMS之后选出排名最靠前(也就是softmax