看了好多博客,踩了很多坑,终于把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. [LeetCode]面试题67. 把字符串转换成整数

    题目 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...

  2. NOIP2017 Day1 T1 小凯的疑惑

    题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小凯想知道在无法准确支付的物品中,最贵的价 ...

  3. 装个Mysql怎么就这么难?

    2020/5/20 程序员是没有女朋友的~~ 声明:这篇文章是我第一次安装MySQL,主要记录了安装的艰辛过程,内容很凌乱,不适合作为参考. CentOS 6.10安装MySQL一直出问题,换了各种不 ...

  4. 跟我一起学.NetCore之静态文件处理的那些事

    前言 如今前后端分离开发模式如火如荼,开发职责更加分明(当然前后端一起搞的模式也没有完全褪去):而对于每个公司产品实施来说,部署模式会稍有差别,有的会单独将前端文件部署为一个站点,有的会将前端文件和后 ...

  5. Python 之父为什么嫌弃 lambda 匿名函数?

    Python 支持 lambda 匿名函数,其扩展的 BNF 表示法是lambda_expr ::= "lambda" [parameter_list] ":" ...

  6. python爬取花木兰豆瓣影评,并进行词云分析

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  7. Windows10上安装MySQL(详细)

    一.下载MySQL 1.在浏览器里打开mysql的官网http://www.mysql.com 2.进入页面顶部的"Downloads" 3.下滑页面,打开页面底部的"C ...

  8. Spring基础知识1--环境搭建、bean创建、依赖注入、注解注入

    一.Spring两大核心内容 1.控制反转IOC/DI:  应用本身不负责对象的创建和维护,对象和依赖对象的创建完全交给容器管理. 2.AOP(面向切面编程):通过预编译的方式,在运行期通过动态代理的 ...

  9. java.lang.illegalArgumentException异常

    今天在使用spring3.2的时候,配置好注解开发后,运行出现异常 java.lang.illegalArgumentException 经查为 JRE 版本域spring3.2不兼容所致, 将项目J ...

  10. Java 获取屏幕的宽度和高度

    获取屏幕的宽度和高度 1 import java.awt.Dimension; 2 import java.awt.Toolkit; 3 4 public class Main { 5 6 publi ...