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如果遇到编译问题可以参考这里