FDDB 如此经典的测试基准,竟然缺少完整全面的测试流程教程。笔者自行梳理了在 FDDB 上测试人脸检测模型的流程,力求详细清晰,可复现。(版本: Ubuntu 16.04 和 OpenCV 3.4.2)

  • 1. 下载 FDDB
  • 2. 准备 .txt 文件
  • 3. 安装 OpenCV (版本 3.4.2)
  • 4. 修改 MakeFile
  • 5. 修改 common.hpp
  • 6. 把 CV_RGB 改成 Scalar
  • 7. make
  • 8. 执行 evaluate
  • 9. 利用 MATLAB 等软件绘图
  • 10. 安装 gnuplot
  • 11. 修改 runEvaluate.pl
  • 12. 执行 runEvaluate.pl
  • 附 为什么离散和连续的 ROC 曲线相差这么大?

1. 下载 FDDB

从官网下载 FDDB 数据集,解压得到 originalPics 文件夹,FDDB-folds 文件夹和 README.txt
到 results 页面下载评估程序,解压得到 evaluation 文件夹。

2. 准备 .txt 文件

新建imList.txt FDDB-folds 文件夹中有 10 个 FDDB-fold-i.txt 文件,以特定顺序记录了所有图片的路径。按从 1 到 10 的顺序把它们复制粘贴到 imList.txt 中,或者在 FDDB-folds 文件夹中执行下面的指令来合并。

cat `ls|grep -v"ellipse"` > imList.txt

新建ellipseList.txt FDDB-folds 文件夹中有 10 个 FDDB-fold-i-ellipseList.txt 文件,记录了对应的人脸个数和位置信息。按从 1 到 10 的顺序把它们复制粘贴到 ellipseList.txt 中,或者在 FDDB-folds 文件夹中执行下面的指令。

cat *ellipse* > ellipseList.txt

生成结果文件 用你的模型按照 FDDB-fold-i.txt 的顺序检测图片,生成与之对应的 10 个 fold-i-out.txt,存放在 out-folds 文件夹中,并合并或复制粘贴成 results.txt。结果文件的格式需要为
...
image name i
number of faces in this image =im
face i1
face i2
...
face im
...

当检测框为矩形时,face imfaceimface\ i_m 为左上角的x坐标 左上角的y坐标 宽 高 置信度
例如

(当检测框为椭圆时,格式需要为长轴半径 短轴半径 角度 中心点x 中心点y 置信度)

注: 下载使用别人的 imList.txt 和 ellipseList.txt 可能会导致报错 Incompatible annotation and detection files. See output specifications. 这是 windows 下和 ubuntu 下的文件不同导致的。只需要在 ubuntu 下面新建一个 .txt 文件,然后将内容复制粘贴进去即可。

文件夹截图作为参考 (文件名称和路径不同时,后续步骤中的相应代码也应不同。)

3. 安装 OpenCV (版本 3.4.2)

完全按照此教程安装。

4. 修改 MakeFile

打开 evaluation 文件夹下的 MakeFile,将

evaluate: $(OBJS)$(CC) $(LIBS) $(OBJS) -o $@

修改为

evaluate: $(OBJS)$(CC) $(OBJS) -o $@ $(LIBS)

5. 修改 common.hpp

打开 evaluation 文件夹下的 common.hpp,将

//#define __IMAGE_FORMAT__ ".jpg"
#define __IMAGE_FORMAT__ ".ppm"
#define __CVLOADIMAGE_WORKING__

修改为

#define __IMAGE_FORMAT__ ".jpg"
//#define __IMAGE_FORMAT__ ".ppm"
#define __CVLOADIMAGE_WORKING__

6. 把 CV_RGB 改成 Scalar

此时在 evaluation 文件夹中执行 make 仍会报错,可按照错误提示找到代码位置,将 CV_RGB 改成 Scalar,并添加using namespace cv;


7. make

全部修改完后,在 evaluation 文件夹中打开终端,执行 make clean,再执行 make,可以成功编译。


编译成功后,FDDB 测试流程已经基本完成。后续步骤有两种方式可选:(1) 执行第 8 和第 9 步。或者 (2) 执行第 10,11,12 步。


8. 执行 evaluate

继续在上述终端里执行

./evaluate -a ../ellipseList.txt -d ../results.txt -i ../originalPics/ -l ../imList.txt

注意若文件名称和路径与笔者 (见第 2 步中的截图) 不同,需要相应修改。
完成后,在 evaluation 文件夹中生成了 tempContROC.txt 和 tempDiscROC.txt 两个文件。

9. 利用 MATLAB 等软件绘图

在第 8 步中得到的两个 .txt 文件即为 ROC 曲线上的点的坐标信息,可以自行选择各种软件绘图了。只需注意文件中的第二列为横坐标,第一列为纵坐标,即可得到 ROC 曲线,至此可以关闭本教程


若选择另一种绘图方式 (官方提供的是这种),则可以跳过第 8 和第 9 步,依次执行下列第 10,11, 12 步。

10. 安装 gnuplot

重新打开一个终端,执行 sudo apt-get install gnuplot

11. 修改 runEvaluate.pl

打开 evaluation 文件夹下的 runEvaluate.pl,填写路径如下:

#### VARIABLES TO EDIT ####
# where gnuplot is
my $GNUPLOT = "/usr/bin/gnuplot";
# where the binary is
my $evaluateBin = "./evaluate";
# where the images are
my $imDir = "../originalPics/";
# where the folds are
my $fddbDir = "../FDDB-folds/";
# where the detections are
my $detDir = "../out-folds/";
###########################

注意若文件名称和路径与笔者 (见第 2 步中的截图) 不同,需要相应修改。

12. 执行 runEvaluate.pl

在 evaluation 文件夹的终端中执行 perl runEvaluate.pl
完成后在 out-folds 文件夹下生成了 ContROC.txt, DiscROC.txt, ContROC.png 和 DiscROC.png 四个文件。

可见此人脸检测模型过于保守,只有 70+ 的误检个数,而召回率较低。

附 为什么离散和连续的 ROC 曲线相差这么大?

这个问题在 YaqiLYU 的知乎专栏 找到了答案如下:

  结果有离散分数 discROC 和连续分数 contROC 两种,discROC 仅关心 IoU 是不是大于0.5,contROC 是 IoU 越大越好。鉴于大家都采用无限制训练加 FDDB 测试的方式,detector 会继承训练数据集的标注风格,继而影响 contROC,所以 discROC 比较重要,contROC 看看就行了,不用太在意。

Ubuntu 下使用 FDDB 测试人脸检测模型并生成 ROC 曲线相关推荐

  1. Ubuntu 下使用 FDDB 测试人脸检测模型并生成 ROC 曲线,详细步骤

    原 Ubuntu 下使用 FDDB 测试人脸检测模型并生成 ROC 曲线 2018年08月01日 20:18:44 Xing_yb 阅读数:101 标签: FDDB 人脸检测 模型测试 ROC 曲线 ...

  2. linux使用mtcnn进行人脸检测,Linux下使用FDDB 测试MTCNN人脸检测模型生成 ROC 曲线

    FDDB是全世界最具权威的人脸检测评测平台之一,是专门针对人脸识别算法的评测方法与标准.FDDB数据集官网:http://vis-www.cs.umass.edu/fddb/ 下面介绍如何使用FDDB ...

  3. 使用FDDB人脸样本检测库,测试自己的人脸检测算法性能并生成ROC曲线。

    一,说明及环境 网上有关FDDB人脸检测库的使用以及ROC文件生成的文章太少,并且都无法检测opencv中自带的人脸检测算法.最近 工作的原因,需要用到FDDB库检测我们自己的人脸检测算法性能.所以认 ...

  4. ubuntu下用Qt实现人脸识别之检测人脸并绘制人脸框(三)

    ubuntu下用Qt实现人脸识别之检测人脸并绘制人脸框(三) 要检测出人脸并且还要识别出这个人是谁,就得用到人脸算法,这个算法如果你足够牛X的话可以自己写出来,当然,如果像我一样是个小菜鸟的话就得领悟 ...

  5. 模型仅1MB,更轻量的人脸检测模型开源,效果不弱于主流算法

    乾明 编辑整理  量子位 报道 | 公众号 QbitAI AI模型越来越小,需要的算力也也来越弱,但精度依旧有保障. 最新代表,是一个刚在GitHub上开源的中文项目:一款超轻量级通用人脸检测模型. ...

  6. 大小仅1MB,超轻量级通用人脸检测模型登上GitHub趋势榜

    机器之心报道 项目作者:Linzaer 近日,用户 Linzaer 在 Github 上推出了一款适用于边缘计算设备.移动端设备以及 PC 的超轻量级通用人脸检测模型,该模型文件大小仅 1MB,320 ...

  7. 3模型大小_Github推荐一个国内牛人开发的超轻量级通用人脸检测模型

    Ultra-Light-Fast-Generic-Face-Detector-1MB 1MB轻量级通用人脸检测模型 作者表示该模型设计是为了边缘计算设备以及低功耗设备(如arm)设计的实时超轻量级通用 ...

  8. java rfb,github上开源的超轻量级人脸检测模型及github地址。

    该模型设计是针对边缘计算设备或低算力设备(如用ARM推理)设计的实时超轻量级通用人脸检测模型,可以在低算力设备中如用ARM进行实时的通用场景的人脸检测推理,同样适用于移动端.PC.在模型大小上,默认F ...

  9. 超轻量级通用人脸检测模型

    项目地址:github.com/Linzaer/Ult- 以下是作者对此项目的介绍: 该模型设计是针对边缘计算设备或低算力设备 (如用 ARM 推理) 设计的一款实时超轻量级通用人脸检测模型,旨在能在 ...

  10. WiderFace数据集用于训练人脸检测模型

    下载链接: http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/ 该数据集可用于进行人脸检测模型的训练 如果做训练,可以点击网页中的 (国内还是百度吧,会快一 ...

最新文章

  1. html里面的crossorigin属性,HTML5 标签里的 crossorigin 属性到底有什么用? | Chrisyue's Blog...
  2. 使用Palette类提取图片的颜色信息
  3. Rearrange an array of positive and negative integers
  4. 使用科大讯飞语音转文字的服务进行电话录音分析
  5. 爹地,我找到了!15个极好的Linux find命令示例
  6. BZOJ2535: [Noi2010]Plane 航空管制2(拓扑排序 贪心)
  7. 编写一个圆类Circle
  8. oracle 12c 性能,Oracle 12C 新性能 总结篇
  9. 微信表情图像代表什么意思_电表型号怎么选 型号字母都代表什么意思
  10. python中快速删除实例对象中的所有属性
  11. 计算机组成与设计概念总结
  12. 9款最新炫酷HTML5/CSS3应用推荐
  13. 计算机桌面亮度调节,电脑屏幕亮度怎么调?笔记本屏幕亮度调节方法图解教程 电脑维修技术网...
  14. 中级程序员还应该如何提高自己
  15. 计算机中常用源码,什么是源码
  16. cad展点kszd小程序_CAD坐标展点脚本文件-CAD坐标展点程序下载v2 官方版-西西软件下载...
  17. idea将maven所有依赖包导出
  18. 如何获取全国各省市区的地理区域位置(地图-JSON-点位-行政区域)
  19. 东大14春学期《计算机应用基础》在线作业1,[东北大学]21春学期《计算机应用基础》在线平时作业1...
  20. Android平台下的StreamingAsset路径

热门文章

  1. 全球IP地址分配对应表
  2. MessAPI V1.1.1 QQ音乐、网易云音乐、酷狗音乐、咪咕音乐、酷我音乐、百度音乐API接口
  3. 中望3D2022弹簧的设计
  4. 夏普利模型在衡量团队成员价值中的思考
  5. 蒸汽密度的计算公式,蒸汽流量计密度补偿计算公式
  6. 大牛直播SDK-Windows RTMP/RTSP/本地FLV播放器使用说明...
  7. 【计算理论】计算复杂性 ( NP 完全问题 | NP 难 问题 P = NP 的情况 | NP 难 问题 P ≠ NP 的情况 )
  8. 只需10行代码就让你的U盘变成纯净版winPE系统安装启动盘
  9. Code::Blocks安装和汉化包配置
  10. 用计算机弹极乐净土谱,原神琴谱极乐净土分享 曲谱怎么弹奏