-
从mtcnn开始说起,在工业界,估计做脸的都知道mtcnn,因为模型小速度快,带关键点,方便部署,至今仍有使用在大厂的业务中。 不过这种级联的网络,速度与人脸个数成反比,所以,对于人脸抓拍这种场景就不好用了。而且这种类型的网络很难再进一步刷新榜单了。
-
后来,学术界就出现了一批优秀的one stage的人脸检测,例如ssh,sfd,dsfd,retinaface等等,这些网络也一次又一次的刷新widerface的榜单。
-
然而,比较好的轻量级的网络却并不是这么多,有faceboxes,libfacedetection,retineface-mnet,LFFD和以及Ultra-Light-Fast-Generic-Face-Detector。
为了刷榜,face detection测试也是费劲了研究者的心思。我们来仔细分析一下目前测试方法。
-
多尺度测试:主流的测试方法。几乎所有的文献都采用多尺度的测试方法,因为每个网络训练时输入图像的尺度不一致,因此,从学术界角度,采用多尺度测试是比较公平,公正的。简单说就是,各自拿各自最好的结果来pk。
-
单尺度原图测试:这是lffd提出的测试方法,也是比较严谨的测试方法,而且对工业界更具有参考意义。
-
单尺度缩放测试:faceboxes将图像放大三倍进行测试。 而Ultra-Light-Fast-Generic-Face-Detector是将图像不等比例的resize到320240和640480进行测试。
几乎所有的实验对比都是严谨的,但也有把其他算法测低了的。有以下几种情况:
-
采用paper的数据进行比较:测试方法虽然混乱(存在着各种tricks和差异性),但都是用paper的数据进行对比。测试方法不能统一,那就用各自最好结果进行对比吧,这也是公平的。
-
单尺度原图进行测试比较:这种方法有些不公平,因为训练和测试的图像分辨率是不一样,例如,sfd的训练图像分辨率是6406403,而测试图像分辨率大都是12807203,有些不公平。
-
单尺度缩放比较:faceboxes将FDDB的图像放大三倍进行测试,放大三倍后,图像中的人脸变大了,就更容易检测了,性能自然会好一些。 而Ultra-Light-Fast-Generic-Face-Detector是针对640480或320240的设计的anchor,所以,这样分辨率下准确性比较高。不过这么设计是从工业场景出发,毕竟学术与工业界还是有gap的,大多数忽略了这个细节而已。
针对更好的评测人脸检测的问题,本人进行了以下总结,可供参考:
-
多尺度测试:拿出算法在多尺度下最好结果和别的算法最好结果(一般就是paper上的数据啦)进行pk;
-
单尺度测试:拿出算法在单尺度图像下最好结果和别人单尺度最好的结果进行pk。
对于实际应用场景而言,可以使用Ultra-Light-Fast-Generic-Face-Detector采用的测试比较方法,以判断实际场景下的准确性。
一点思考,写出来与大家交流。