LeslieZhoa / tensorflow-MTCNN

人脸检测MTCNN算法,采用tensorflow框架编写,从理解到训练,中文注释完全,含测试和训练,支持摄像头
364 stars 141 forks source link

关于人脸框输出的问题 #16

Open orliz opened 5 years ago

orliz commented 5 years ago

含有人脸的图像输出,最后头像上有好几个框,不止一个框,只是为什么

DefTruth commented 5 years ago

NMS算法价格处理重复框的参数,然后在detect_onet中设置filter_overlap=True,问题解决。 if filter_overlap: # 处理重复脸的问题 如果实际面积s<=inter,则说明被包含在大框中 inds = np.where(np.logical_and(ovr <= thresh, areas[order[1:]] > 2 * inter))[0] else: inds = np.where(ovr <= thresh)[0] # [1-d array] idx

orliz commented 5 years ago

NMS算法价格处理重复框的参数,然后在detect_onet中设置filter_overlap=True,问题解决。 if filter_overlap: # 处理重复脸的问题 如果实际面积s<=inter,则说明被包含在大框中 inds = np.where(np.logical_and(ovr <= thresh, areas[order[1:]] > 2 * inter))[0] else: inds = np.where(ovr <= thresh)[0] # [1-d array] idx

请问是加在py_nms()这个函数里嘛?

DefTruth commented 5 years ago

是的。不过这个要看你用的场景,如果只是关注大人脸,不考虑包含的情况可以这样改NMS。要是通用的目标检测就不一定适用,因为大的box包含小的box的情况还是比较常见的。另一种可能就是mtcnn的精度不够,够的话就不会把人脸的一小部分判断成人脸,换一个精度更高的模型吧,SSH/DSFD之类的,不用改原始NMS也基本不会有这个问题。我自己改完跑的MTCNN精度感觉都不够用。

XUCharles commented 4 years ago

NMS算法价格处理重复框的参数,然后在detect_onet中设置filter_overlap=True,问题解决。 if filter_overlap: # 处理重复脸的问题 如果实际面积s<=inter,则说明被包含在大框中 inds = np.where(np.logical_and(ovr <= thresh, areas[order[1:]] > 2 * inter))[0] else: inds = np.where(ovr <= thresh)[0] # [1-d array] idx

我还是没懂怎么修改, filter_overlap是什么