FDDB人脸检测标准

Posted by Vic on October 20, 2018

FDDB人脸检测标准

简介

FDDB主页:http://vis-www.cs.umass.edu/fddb/index.html

FDDB之前的几个数据集:

  • MIT+CMU 只有正脸和面内旋转的人脸,只有灰度图
  • GENKI 彩色图像,包含上下45度,面内20度的旋转,每张图一个人脸
  • Kodak,UCD,VT-AAST 包含带遮挡的人脸,但图片数量太少

FDDB的特点:

  • 2845张图片,5171个人脸
  • 包含遮挡、大角度、低分辨率、模糊
  • 使用椭圆标注人脸
  • 灰度和彩色都有

FDDB判断人脸的标准:

  • 两个眼睛都不可见则不算人脸
  • 不能分辨出位置、大小、朝向的不算人脸

人脸标注示例: 人脸标注示例

评估标准

FDDB使用交并比来表示标注框和检测框的匹配程度:交并比 = 两个框的重叠面积 / 两个框的联合面积

为了对检测框正确与否作出判断,首先需要将检测框和标注框做一一对应。这等效于一个二分图(bipartite graph)的最大匹配(maximum matching)问题。这个问题一般使用匈牙利算法(Hungarian algorithm)求解。

FDDB有两种指标:

  • Discrete score (DS) : yi = δS(di,vi)>0.5. 当交并比大于0.5时,认为检测框与标注框匹配,否则认为不匹配。
  • Continuous score (CS): yi = S(di, vi). 直接把交并比本身作为框的匹配程度,这个指标看起来会比Discrete score要低一些,一般我们不看这个标准。

运行评估程序

从FDDB的网站上下载:

  • originalPics.tar.gz:FDDB测试图片
  • FDDB-folds.tgz:包含10-fold的文件名和标注信息的文件,如果不想画10条ROC曲线,只想画一条,可以把这些文件合并成2个文件
    • FDDB.txt 图片名列表
    • FDDB-ellipseList.txt 标注信息
  • evaluation.tgz:c++代码,用来生成ROC曲线的数据
  • discROC.p:gnuplot脚本程序,用来画出ROC曲线并保存成png图片

测试时,首先运行自己的算法程序读取FDDB.txt,按照顺序检测每一张图片,输出检测结果文件result.txt,格式如下:

. . .
name of the i-th image
number of faces in the i-th image = m
face f1
face f2
. . .
face fm
. . .

其中每个人脸框可以有两种表示方法:

  • 矩形框 (坐标x 坐标y 宽度 高度 置信度)
  • 椭圆框 (长轴 短轴 偏角θ 中心坐标x 中心坐标y 置信度)

接下来用make命令编译evaluation程序,带如下参数运行:

  • -a 标注文件ellipseList.txt
  • -d 人脸检测结果文件result.txt
  • -f 检测文件格式,0为矩形框,1为椭圆框
  • -i 测试图片存放的文件夹,要以/结尾
  • -l 测试图片列表FDDB.txt
  • -r 输出文件的前缀,如detect 此时会输出名为detectDiscROC.txt的文件,存放着ROC曲线上每一个点的坐标

打开discROC.p做适当的修改,运行gnuplot discROC.p即可输出ROC曲线的png文件

evaluation如果遇到编译问题可以参考这里