在目标检测中,一个物体可能会有多个框,利用非极大值抑制(NMS, non maximum suppression)来消除多余的框,找到物体的最佳检测位置。
NMS原理
其原理实现如下:
(1)将所有框的得分排序,选中最高分及其对应的框。
(2)遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,就将框删除。
(3)从未处理的框中继续选一个得分最高的,重复上述过程。
NMS代码
下面给出c++实现程序:
template <typename T>
vector<int> sort_indexes(const vector<T>& v)
{
// initialize original index locations
vector<int> idx(v.size());
for (size_t i = 0; i != idx.size(); ++i) idx[i] = i;
// sort indexes based on comparing values in v
sort(idx.begin()