看了好多博客,踩了很多坑,终于把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. 不懂 ZooKeeper?没关系,这一篇给你讲的明明白白

    本来想系统回顾下 ZooKeeper的,可是网上没找到一篇合自己胃口的文章,写的差不多的,感觉大部分都是基于<从Paxos到ZooKeeper 分布式一致性原理与实践>写的,所以自己读了一 ...

  2. Git使用教程与基本原理和Sourcetree基本使用探微

    什么是GIT Git是一个强调速度的分布式版本控制软件和源代码管理系统(SCM,source code management).Git最初是由Linus Torvalds为内核开发而设计的管理软件.自 ...

  3. C#开发PACS医学影像处理系统(十六):2D处理之影像平移和缩放

    1.平移,利用WPF中控件边距来控制位移: /// <summary> /// 平移图像 /// </summary> /// <param name="X&q ...

  4. v-charts 绘制柱状图、条形图、水球图、雷达图、折线图+柱状图,附官网地址

    v-charts 官网地址:https://v-charts.js.org/#/ 柱状图: <template> <ve-histogram :data="chartDat ...

  5. mysql之慢日志查询

    转自https://my.oschina.net/wuweixiang/blog/2987434 首先得配置my.cnf: #===================================== ...

  6. yml文件

    博文内容来自https://blog.csdn.net/chang_li/article/details/78667652 项目里用到yml文件作为配置文件,了解下其实挺简单,它的基本语法如下 大小写 ...

  7. v-if和v-show的区别与使用

    1.共同点: v-if 和 v-show 都能实现元素的显示隐藏. 2.不同点: v-if显示隐藏是将dom元素整个添加或删除,v-show元素隐藏时,会在dom节点中把该元素设置css属性为disp ...

  8. ThreadLocal源码分析与实践

    ThreadLocal是什么? ThreadLocal是一个线程内部存储类,提供线程内部存储功能,在一个ThreadLocal对象中,每一个线程都存储各自独立的数据,互不干扰 示例如下: public ...

  9. 使用maven纯注解集成ssm

    1.配置springMVC框架 第一步:导入包依赖 <!--配置springMVC--> <dependency> <groupId>javax.servlet.j ...

  10. .net core中的那些常用的日志框架(Logging篇)

    前言 日志,在我们每个项目中是必不可少的,它不仅能在调试的时候测试数据,而且在项目上线,也是我们排查错误的得力助手,那我就能谈谈,用的多的几个日志框架吧!如果有不对的地方,欢迎来指教错误,谢谢! As ...