大家好,我是行路南。
本文是CV面试系列第一篇。上段时间,笔者对2020年各大视觉大厂面试题目进行了梳理。结果发现NMS真的是一道基本题和高频题。这里可以列出几家的题目给大家看看:
百度图像算法工程师社招二面:
- 编程实现一下NMS
图森未来校招一面:
- Soft-NMS和NMS的区别,解决了什么问题。Soft-NMS的具体过程
BIGO校招一面:
- python实现NMS
货拉拉一面:
- 编程实现NMS
阿里达摩院二面:
- C++实现非极大值抑制
快手一面:
- 编程实现NMS
地平线一面:
- 编程实现NMS
…
可见,对于NMS,我们不仅需要理解它的概念,还要进一步它的不足和改进的方法,最最最重要的要掌握一门语言能够实现它。这样我们才能在面试中游(bu)刃(bei)有(diao)余(da)…
夺命第一问:NMS是什么?描述一下它的基本过程
NMS又称非极大值抑制,它是目标检测管道中的一个必要组成部分。
初始时,非极大值抑制过程开始于一个检测框列表 B B B、对应的置信度列表 S S S、空的检测框列表 D D D、阈值 N t N_t Nt。
首先,找到最高置信度对应的检测框 M M M, 将其从 B B B中删除,并添加到最终检测框列表 D D D中。然后,计算 M M M与 B B B中其他检测框的重叠程度IOU,将IOU大于阈值 N t N_t Nt的目标检测框从 B B B中删除。
对于 B B B中剩余的检测框,继续重复这个过程,直到 B B B为空时结束。
下图中是Fast R-CNN目标检测中应用NMS的例子。从左上到右上,是生成候选区域(Proposal)的过程;从右上到右下,是使用分类网络得到类别置信度和使用回归网络得到偏移量进而修正位置的过程;从右下到左下,是对每个目标上检测到的框进行筛选的过程,这个过程就是通过NMS来实现。
夺命第二问: Soft-NMS和NMS的区别,解决了NMS什么问题?
NMS 的一个主要问题是,它将与 M M M重叠度大于阈值的其他