看了好多博客,踩了很多坑,终于把FDDB数据集的ROC曲线绘制出来了。记录一下。

环境:ubuntu18.04

1.数据集准备

去FDDB官网:http://vis-www.cs.umass.edu/fddb/

1.1 下载原始的FDDB人脸数据集

images:下面是存在2002和2003文件夹下的图片。

annotations:FDDB-folds文件下是含有人脸数据的标注

FDDB-flod-%d.txt等文件名存放着图片路径名,FDDB-fold-%d-ellipseList.txt等文件名存放着标注文件:第一行是文件路径,第二行是人脸数N,之后是N行数据,左上角的x,左上角的y,宽w,高h,人脸置信度,以空格为分隔。

      

将FDDB-FOLD-%d.txt合成一个文件: cat * > img_list.txt

将所有的标注文件FDDB-fold-%d-ellipseList.txt合成一个文件 cat *ellipse*.txt > annotFile.txt
 
1.2 生成人脸检测网络根据img_list.txt生成的txt文件
第一行是文件路径,第二行是人脸数N,之后是N行数据,左上角的x,左上角的y,宽w,高h,人脸置信度,以空格为分隔。

2.下载evaluation源码,将文件放入ubuntu

官网下载评估源码:http://vis-www.cs.umass.edu/fddb/results.html

放到ubuntu中,解压。

在evaluation里面放入准备好的3个文件图片文件

img_list.txt是合并的路径名。

annotFile.txt是合并的标注文件

FDDB-det-prelu3.txt是自己检测网络生成的。

注意:直接将上面生成的txt文件复制到ubuntu下会报错Incompatible annotation and detection files. See output specifications ,由于windows下文件和ubuntu下不同导致的。只需要在ubuntu下面创建一个txt文件,然后将内容复制进去即可。

3.在ubuntu18.04中安装opencv

参考资料:Ubuntu18.04中安装opencv 。 https://blog.csdn.net/yllifesong/article/details/80980274

安装依赖项:安装libopencv-dev依赖包,运行命令 sudo apt install libopencv-dev,在出现的选项中输入y继续执行就行。

注意:慢或者timeout就用清华镜像!(百度找,命令后面指定清华镜像地址即可)

ubuntu如何查看所用opencv的版本和安装的库:https://blog.csdn.net/libai13/article/details/107935935

4.生成evaluation可执行文件

注意:如果用的是openCV3.x版本,则需要修改Makefile才能编译通过。添加以下两行(和官网不一样),  并修改evaluate顺序

INCS = -I/usr/local/include/opencv

LIBS = -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_imgcodecs

如果不需要ppm需要注释掉,修改evaluation文件夹里面的common.hpp:

执行make命令

成功!

5.执行生成ROC.txt文件

 ./evaluate -a annotFile.txt -d FDDB-det-prelu3.txt -f 0 -i pic/ -l img_list.txt -r aaa

其中:-a是标准标注文件,-d是自己生成的,-f代表是矩形,-i是图片放的地址,-l 是路径文件,-r自己随意命名

生成了aaaContROC.txt和aaaDiscROC.txt文件。

生成的DiscROC.txt中第一列为TPR(根据TPDisc算出的),第二列为FP,第三列为当前的阈值;而ConROC.txt中第一列为TPR(根据TPCont 算出的),第二列为FP。

他们的区别:https://blog.csdn.net/xcls2010/article/details/79744507

 
6.执行生成ROC曲线
安装gunplot。sudo apt-get install gnuplot
 
下载:http://vis-www.cs.umass.edu/fddb/results.html

根据discROC.p 更改,

将plot后面的txt改成自己生成的ROC.txt或者要对比的ROC曲线。

输出图片在set output 后面写 xxx.png

执行命令gnuplot [自己更改的脚本文件]
例如:gnuplot discROC.p
即可生成ROC曲线图。

这只是个演示的曲线~~~

 
 
 

FDDB人脸检测数据集 生成ROC曲线的更多相关文章

  1. 第三十七节、人脸检测MTCNN和人脸识别Facenet(附源码)

    在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第九节.人脸检测之Haar分类器),其检测效果也是不错的,但是目前人脸检测的应用场景逐渐 ...

  2. 重磅!刷新两项世界纪录的腾讯优图人脸检测算法DSFD开源了!

    近日,知名开源社区Github上有个名为DSFD(Dual Shot Face Detector)的算法引起了业内关注,它正是来自于腾讯优图.目前,该算法已经被计算机视觉顶级会议CVPR 2019接收 ...

  3. 从TP、FP、TN、FN到ROC曲线、miss rate、行人检测评估

    从TP.FP.TN.FN到ROC曲线.miss rate.行人检测评估 想要在行人检测的evaluation阶段要计算miss rate,就要从True Positive Rate讲起:miss ra ...

  4. 人脸检测学习笔记(数据集-DLIB人脸检测原理-DLIB&OpenCV人脸检测方法及对比)

    1.Easily Create High Quality Object Detectors with Deep Learning 2016/10/11 http://blog.dlib.net/201 ...

  5. 【计算机视觉】人脸检测模型的评估方法-linux

    前言 人脸检测标准库FDDB详细介绍了数据库和使用方法.对于训练的模型,如何评估模型的效果呢,本文对此进行介绍.说实话,参考了很多博客,但是感觉都不是很明白(当然本文也会有瑕疵),故在此记录! 测试环 ...

  6. MTCNN算法与代码理解—人脸检测和人脸对齐联合学习

    目录 写在前面 算法Pipeline详解 如何训练 损失函数 训练数据准备 多任务学习与在线困难样本挖掘 预测过程 参考 博客:blog.shinelee.me | 博客园 | CSDN 写在前面 主 ...

  7. 【机器学习】--模型评估指标之混淆矩阵,ROC曲线和AUC面积

    一.前述 怎么样对训练出来的模型进行评估是有一定指标的,本文就相关指标做一个总结. 二.具体 1.混淆矩阵 混淆矩阵如图:  第一个参数true,false是指预测的正确性.  第二个参数true,p ...

  8. TF项目实战(基于SSD目标检测)——人脸检测1

    SSD实战——人脸检测 Tensorflow 一 .人脸检测的困难: 1. 姿态问题 2.不同种族人, 3.光照 遮挡 带眼睛 4.视角不同 5. 不同尺度 二. 数据集介绍以及转化VOC: 1. F ...

  9. 人脸检测数据源制作与基于caffe构架的ALEXNET神经网络训练

    本篇文章主要记录的是人脸检测数据源制作与ALEXNET网络训练实现检测到人脸(基于caffe). 1.数据获取 数据获取: ① benchmark是一个行业的基准(数据库.论文.源码.结果),例如WI ...

随机推荐

  1. js学习笔记之作用域链和闭包

    在学习闭包之前我们很有必要先了解什么是作用域链 一.作用域链 作用域链是保证对执行环境有权访问的所有变量和函数的有序访问. 这句话其实还是蛮抽象的,但是通过下面一个例子,我们就能清楚的了解到作用域链了 ...

  2. Oracle学习(六)存储过程

    一.简介 1.定义 所谓存储过程,就是一段存储在数据库中执行某块业务功能的程序模块. 它是由一段或者多段的PL/SQL代码块或者SQL语句组成的一系列代码块. 2.结构分析 create [or re ...

  3. 性能测试Jmeter安装

    一. Jmeter下载地址: http://jmeter.apache.org/download_jmeter.cgi   二. JDK下载地址: https://www.oracle.com/tec ...

  4. java原生程序redis连接(连接池/长连接和短连接)选择问题

    最近遇到的连接问题我准备从重构的几个程序(redis和mysql)长连接和短连接,以及连接池和单连接等问题用几篇博客来总结下. 这个问题的具体发生在java原生程序和redis的交互中.这个问题对我最 ...

  5. Centos-操作系统相关信息-uname

    uname 获取系统相关信息 相关选项 -a 显示全部信息 -m 显示系统CPU架构 x86_64 -n  显示主机名, 和 hostname 一样 -s 获取系统类型 -r   内核信息

  6. java版集成Allure报告--注释使用说明

    testNG集成Allure报告--注释使用说明 前置条件 首先需要下载allure的zip包解压,然后配置环境变量即可(win).allure的GitHub下载地址: 然后执行testn.xml或者 ...

  7. Linux驱动知识点

    # i2c_add_driver和i2c_new_device匹配后调用i2c_probe # 启动开发板,在超级终端中输入命令"cat /proc/misc"也可以查看对应的杂项 ...

  8. SQL实战——04. 查找所有已经分配部门的员工的last_name和first_name以及dept_no (一个逗号引发的血案)

    查找所有已经分配部门的员工的last_name和first_name以及dept_noCREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_ ...

  9. Java知识系统回顾整理01基础01第一个程序05Eclipse中运行Java程序

    一.打开Java文件 直接打开在 命令行Hello World 中创建的java 文件 HelloWorld.java 二.运行 点击绿色运行按钮,直接运行 在eclipse中,编译过程自动执行了 三 ...

  10. 00 你的第一个C语言程序

    C语言简介 C 语言是一种通用的.面向过程式的计算机程序设计语言,即编程语言. 为移植和开发 UNIX 操作系统,丹尼斯·里奇于1972年在贝尔电话实验室设计开发了 C 语言的第一个版本. C 语言同 ...