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

2018年08月01日 20:18:44 Xing_yb 阅读数:101 标签: FDDB 人脸检测 模型测试 ROC 曲线 Ubuntu 更多

个人分类: 教程记录

版权声明:转载请醒目注明出处。 https://blog.csdn.net/Xingyb14/article/details/81329833

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

  • Ubuntu 下使用 FDDB 测试人脸检测模型并生成 ROC 曲线

    • 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
  • 1

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

cat *ellipse* > ellipseList.txt
  • 1

生成结果文件 用你的模型按照 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 im” role=”presentation”>face imface im 为左上角的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)$(</span><span class="hljs-constant">CC</span>) <span class="hljs-variable">$(LIBS) $(</span><span class="hljs-constant">OBJS</span>) -o <span class="hljs-variable">$@
  • 1
  • 2

修改为

evaluate: $(OBJS)$(</span><span class="hljs-constant">CC</span>) <span class="hljs-variable">$(OBJS) -o $@</span> <span class="hljs-variable">$(LIBS)
  • 1
  • 2

5. 修改 common.hpp

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

//#define __IMAGE_FORMAT__ ".jpg"
#define __IMAGE_FORMAT__ ".ppm"
#define __CVLOADIMAGE_WORKING__
  • 1
  • 2
  • 3

修改为

#define __IMAGE_FORMAT__ ".jpg"
//#define __IMAGE_FORMAT__ ".ppm"
#define __CVLOADIMAGE_WORKING__
  • 1
  • 2
  • 3

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
  • 1

注意若文件名称和路径与笔者 (见第 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/";
###########################
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

注意若文件名称和路径与笔者 (见第 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 看看就行了,不用太在意。

        </article>

http://www.taodudu.cc/news/show-4808359.html

相关文章:

  • 将fddb标注转换为VOC格式标注
  • 从Java的角度理解前端框架,nodejs,reactjs,angularjs,requirejs,seajs
  • Java Web前端到后台常用框架介绍
  • java前端框架有哪些( 目前java主流开发框架是哪个)
  • 【Vue】Java后端程序员也必须掌握的前端框架(下)
  • 开源的icon字体图标网站
  • linux cmd 字体,微软开源Cascadia Code新字体,该字体针对命令行和代码编辑器
  • GitHub 上的一个开源项目,可快速生成一款属于自己的手写字体!
  • GitHub 开源了多款字体「GitHub 热点速览 v.22.48」
  • 整合SOUI的默认资源(soui-sys-resource.dll)
  • SOUI 将 soui-sys-resource.dll 静态编译到exe中方法.
  • C++ DirectUI库 SoUI
  • 第三篇:用SOUI能做什么?
  • SAXReader简单的解析xml文件
  • java sax读写xml文件_使用SAXReader读取xml文件
  • excel表格按行随机抽取数据
  • Python+Excel随机试卷及答案生成程序
  • python mongodb 随机抽取数据
  • python进行excel随机抽样
  • 如何从excel的多行中随机选出n行
  • 企业IT基础设施架构规划
  • 常用IT系统架构及DevOps介绍
  • Chrome谷歌浏览器离线安装方法
  • flink时间窗口无新的数据进来最后一个窗口不关闭
  • hanning窗?hamming窗?如何理解语音信号处理中时间窗的作用
  • 【路径规划】基于遗传算法求解带时间窗车辆路径规划问题(VRPTW)matlab源码
  • 基于电动汽车的带时间窗的路径优化(PythonMatlab代码实现)
  • 记忆力培训之数字记忆
  • 深度学习 LSTM长短期记忆网络原理与Pytorch手写数字识别
  • 瞬间记忆测试c语言,脑龄测试(数字瞬间记忆脑龄测试)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. python与R行列数据过滤(row column filtering):dplyr、 isnull、isna、drop、select、iloc、loc、isin、filter
  2. 福昕pdf编辑器 android,机PDF编辑器安卓/iOS哪家强?职场达人都在用
  3. 小蚂蚁学习数据结构(32)——二叉排序树的概念
  4. MySQL配置教程(图解版)
  5. 数据库:MySQL大批量SQL插入性能优化
  6. (精华)转:RDD:创建的几种方式(scala和java)
  7. 《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB(上)
  8. linux升级了npm怎么还原,linux下升级npm以及node
  9. 转:VS2005的DataGridView 多维合并标题 功能拓展
  10. 【渝粤题库】陕西师范大学292231 财务管理Ⅱ 作业(专升本)
  11. 设计模式 ( 十三 ) JDK动态代理模式
  12. 各大浏览器兼容性报告
  13. 编译原理 自底向上语法分析
  14. 视频文件转gif图片Movie To GIF使用
  15. 数据库实验1---创建数据库和表
  16. 2018年手机ODM行业分析
  17. 计算机二级offic表格公式,计算机二级OfficeEexcel公式汇总.docx
  18. 【电商】电商供应链产品介绍
  19. ISP概述、工作原理及架构
  20. 配置gpgpu-sim——基于ubuntu12.04LTS

热门文章

  1. 计算机硬件检测标准模板,计算机硬件性能检测相关实验模板.doc
  2. 实时渲染:实时、离线、云渲染、混合渲染的区别
  3. 以太网、令牌环、FDDI、ATM、WLAN
  4. python 数据挖掘 之 对数据进行简单预处理(1)
  5. mescroll.js下拉刷新
  6. Ubuntu 18.04安装Adams 2021
  7. SegNet——论文笔记
  8. Echarts之圆饼图用法
  9. STM32单片机可变频率幅度DDS信号发生器正弦波三角波方波AD9833
  10. freebsd ports更新源