旷世面试之Faster RCNN算法

      一开始坑定是问项目,但每个人都不一样,所以没啥写的必要,然后开始问基础,这个大家都一样,所以有写的价值,最后编程,就写了个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得分最高)的2000个框. 再然后从这2000个框中选择出 256 个框包括 128 个正样本和 128 个负样本来计算 Loss. Loss的话就两个部分嘛, 置信度损失和定位损失,分别用着256个框的 score 和 坐标去计算就行了, RPN的流程到这里就结束了,后边就是用 RPN 选出来的 ROI 训练全连接层进行分类和位置预测的部分了.

      其实上边的回答 还有一些没说的内容, im_info中一共只有三个数字,原图的 W , H , 缩放的尺寸. proposal 之后20000个框就只剩下256个框了. 这里的第一个Loss就是用来训练RPN的 目的是让RPN网络在前向预测的时候提出的框的质量更高. 

二 ROI pooling

     问: 你了解ROI pooling 和 ROI Align嘛 说一说

     答: 在 Faster RCNN 中 ROI Pooling 的输入有两个,proposal 的 ROI 和原图的标签, 首先将得到的256个框和原图的GT 匹配,匹配上的就直接打上原图的标签,(包括坐标和标签).然后讲这些打上标签的框缩放至 Feature map 上,再用这些缩放过的框进行ROI Pooling (这个pooling其实就是不规则的图做池化 tf.image.crop_and_resize) . 最终得到256×7×7×1024的结果.

     ROI Align的话就是解决了一个ROI pooling中的不匹配问题, 因为在ROI Pooling的过程中 有两次的整数化,这两次整数化会导致预测框的偏差, ROI Align 就是通过双线性插值的办法是整个过程没有整数化的操作, 解决了这种 不匹配问题.

     我们看到ROI Pooling之后就剩下全连接了,最后两个全连接子层得到分类和坐标预测的结果,并且和标签做Loss , 注意:这里的标签就是之前ROI Pooling哪一步RoI和原图匹配时打上的标签.

     总结下: 其实Faster RCNN 真正重要的东西就只有两个 一个是RPN网络, 另外一个是ROI Pooling 剩下的都很好理解.所以面试时问到的一定是这两个的内容!!

 

     还有一些其他的问题:

     问: focal Loss 和交叉熵的区别是什么

     答: focal Loss 本质上也是交叉熵,他在式子前加了控制正负样本平衡的算子, 解决了正负样本不平衡的问题 ( 我在这个地方举了一个例子,就是之前CSP博客中的东西 )

     问: Faster RCNN 如果加上FPN的话 提出的anchor会有什么变化

     答: 我没做过,但我觉得可以少一些 (应该是对的)

     问: SSD的anchor 和Faster RCNN的有什么区别?

     答: SSD是在每一个特征图上都提出anchor fasterrcnn 只在最后一层

 

     还有两个非常要命的问题:

     问: 你觉得 MR 和 FPPI 的本质区别是什么    ( 很简单 ,但是相信很多人都懒得看所以搞不清楚)

     答: 没答上来 .........

     其实, MR(miss rate) 和 FPPI (false positive per image)都是目标检测的评价指标,MR的计算方式是 FN/(TP+FN)  FPPI的计算方式是 FP(all) / num_images , 所以分母并不重要,既然他问的是本质,那就是要知道这两个指标是描述什么的.  很显然MR是描述FN的 而FPPI是描述 FP的!!!!!!!!!,很关键的东西哦

    问:在CSP中使用的数据增强是怎么做的,如果让你来做,你会怎么做数据增强?

    答: 我也不知道自己稀里糊涂的说了些什么。。( 但,数据增强这个点很重要!!! )

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值