看了好多博客,踩了很多坑,终于把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. 第23课 - #error 和 #line 使用分析

    第23课 - #error 和 #line 使用分析 1. #error 的用法 (1)#error 是一个预处理器指示字,用于生成一个编译错误消息,这个消息最终会传递到编译器(gcc) 在思考这一点 ...

  2. PS01

    基础学习:PS 平面设计:海报 影楼后期:婚纱照精修 UI设计: AI:是矢量图处理软件 矢量图:放大缩小后不会失真 使用方向:包装盒设计,logo设计,名片 ID使用方向:画册

  3. 11.深入k8s:kubelet工作原理及源码分析

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 kubelet信息量是很大的,通过我这一篇文章肯定是讲不全的,大家可 ...

  4. nacos快速安装

    一 什么是 Nacos 服务注册中心和配置中心. 二 使用 下载和启动 使用有两种方式 1.自己下载源码编译 2.下载编译好的压缩包 我比较懒选择了第二种方式. 最新稳定版本 下载地址:https:/ ...

  5. Erlang+RabbitMQ Server的详细安装

    Erlang(['ə:læŋ])是一种通用的面向并发的编程语言, 它有瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境. Erlang官网:ht ...

  6. MyBatis学习(四)代码生成器MyBatis-Generator

    一.简介 前面写过一篇文章介绍了如何使用Mybatis,那么如果我门数据库中有许许多多的表的时候,每张表都手动去写对应的mapper的映射关系,会非常麻烦,那么我们可以使用代码生成器MyBatis-G ...

  7. linux学习(六)Linux yum 命令

    一.定义 yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器. 基于RPM包管理,能够从指定的服务器自动下 ...

  8. NX二次开发-使用NXOPEN C#手工搭建开发环境配置

    新建类库 进来后编译代码,成功 添加NXOPEN的库到项目中 不同NX版本,可能dll所在位置不一样,NX11以上版本在NXBIN这里,NX11以下版本大概在UGII. 添加头文件 using NXO ...

  9. GEKCTF2020-web

    GEKCTF [GKCTF2020]CheckIN97 <title>Check_In</title> <?php highlight_file(__FILE__); c ...

  10. C++实现职工管理系统(上)

    C++实现职工管理系统(上) 大家好呀,时间过得真快,在博客园已经第七天了,博主今天给大家带来的是职工管理系统(C++)(上) 这次的随笔记录的是实现职工管理系统所需要的类 目录 C++实现职工管理系 ...