本文为专栏《Python三维点云实战宝典》系列文章,专栏介绍地址“【python三维深度学习】python三维点云从基础到深度学习_python3d点云从基础到深度学习-CSDN博客”。配套书籍《人工智能点云处理及深度学习算法》提供更加全面和系统的解析。
非极大值抑制(Non-Maximum Suppression,简称 NMS)是目标检测中常用的一种算法,用于在重叠区域存在多个候选框时,选择置信度最高的候选框,抑制其他低置信度候选框的过程。NMS算法是一种简单而有效的方法,可以帮助我们提高检测的准确性和效率,因此在目标检测中被广泛使用。
图片来源:https://blog.csdn.net/mechleechan/article/details/88365039
NMS算法的核心思想是,对于一个目标,它只能被一个候选框所包含,因此对于重叠的多个候选框,我们需要选择置信度最高的一个来表示该目标的位置。具体来说,NMS算法包括以下几个步骤:
- 根据预测框的置信度进行排序:对于每一个预测框,我们都会有一个置信度分数,表示这个框里面包含目标的概率。我们将所有的预测框按照置信度从高到低进行排序,这样置信度最高的预测框就排在最前面。
- 选择置信度最高的预测框,并将其加入最终的检测结果列表中。
- 去除与已选框重叠度较高的其他预测框:从排在第二位的预测框开始,与已选框的重叠度计算,若重叠度大于一定阈值,则将该预测框从候选框列表中删除,否则将其加入最终的检测结果列表中。
- 重复步骤3,直到所有的预测框都被遍历完毕。
NMS算法通过不断选择置信度最高的预测框,并删除与其重叠度较高的其他预测框,最终得到了一组准确的、无重叠的目标检测结果。
NMS算法在目标检测中的应用场景非常广泛,包括人脸检测、2D/3D物体检测、行人检测等等。实际应用中模型检测结果往往存在多个候选框重叠的情况,例如人脸检测中同一张图片中可能存在多个人脸,而这些人脸的候选框可能会出现重叠的情况。使用NMS算法可以帮助我们从多个候选框中选择置信度最高的候选框,减少重复检测,提高检测准确率。
除了在目标检测中的应用外,NMS算法还可以应用在其他领域中,例如图像分割、文本识别等。在图像分割中,NMS算法可以用于消除分割结果中的重复区域,提高分割的准确性。在文本识别中,NMS算法可以用于消除重叠的字符框,从而得到准确的文本识别结果。
除了传统的NMS算法,近年来还出现了一些改进的NMS算法。其中,Soft-NMS算法是一种比较流行的改进算法,它采用了一种渐进式的抑制方法,即不是直接删除重叠区域内的预测框,而是将其置信度逐步降低。这种方法可以避免一些本应该被保留的预测框被错误地删除,从而提高了检测的准确性。另外,基于深度学习的一些目标检测算法,如Faster R-CNN、YOLO等,也采用了类似NMS的算法来处理重叠的预测框。
更多python与C++技巧、三维算法、深度学习算法总结、大模型请关注我的博客,欢迎讨论与交流:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维领域专业书籍推荐:《人工智能点云处理及深度学习算法》。
本文为专栏《Python三维点云实战宝典》系列文章,专栏介绍地址“【python三维深度学习】python三维点云从基础到深度学习_python3d点云从基础到深度学习-CSDN博客”。配套书籍《人工智能点云处理及深度学习算法》提供更加全面和系统的解析。