人脸检测FDDB评测的详细步骤
人脸检测FDDB评测的详细步骤,分如下三步:
第一步:使用自己的人脸检测起生成检测结果:
使用你自己的分类器进行检测。在检测过程中,需要生成一个txt文档。官方文档在这里。
http://vis-www.cs.umass.edu/fddb/README.txt
其实就是以下格式
这里给出写这个的C++代码。
注意:以下的p[0],p[1],p[2],p[3]分别代表着人脸的左上角点坐标(x,y)宽度和高度w,h。
string Double_String(double x)
{stringstream ss;ss << x;return ss.str();
}string Int_String(int x)
{stringstream ss;ss << x;return ss.str();
}
void detectAndDisplay(Mat gray,string line)
{//以下人脸的数量用face_number代替string face_position_1 = line;string face_position_2 = Int_String(face_number);vector<string> face;for (int i = 0; i < face_number; i++){// <left_x top_y width height detection_score> //we do itstring face_vector = Int_String(p[0]) + " " + Int_String(p[1]) + " " + Int_String(p[2]) + " " + Int_String(p[3]) + " " + Double_String(detect_score);//detect_score,根据官网上的介绍,分类器中应该就包含这个参数。如果你是用opencv,那么在detectMultiScale中可以找到face.push_back(face_vector);}//首先打开txtofstream result("result.txt", ios::app);result << face_position_1 << endl << face_position_2 << endl;result.close();//先关闭一次//把vector写入for (vector<string>::iterator iter = face.begin(); iter != face.end(); ++iter){ofstream result_eachface("result.txt", ios::app); //每一张脸result_eachface << *iter << endl;result_eachface.close();}face.clear();//清除这个result.clear();
}
int main()
{string file = "Fold_all.txt";string line;ifstream in(file);if (in) // 有该文件 {while (getline(in, line)) // line中不包括每行的换行符 {string pic_road = line + ".jpg";Mat gray = imread(pic_road, CV_LOAD_IMAGE_GRAYSCALE);//it is necessary that must have CV_LOAD_IMAGE_GRAYSCALEdetectAndDisplay(gray, line);}}cout << "Finally we got it";getchar();
}
我们得到了一个这样的txt文档,表示,图片名字,人脸的个数,人脸左顶点的坐标,宽,高,人脸窗口的置信度;矩形人脸信息:
第二步:下载FDDB的评测的代码,修改c++代码:
官网代码地址:http://vis-www.cs.umass.edu/fddb/evaluation.tgz
解压evaluation.tgz,将其源文件和头文件包含在工程中,添加OpenCV的属性表。
然后做以下修改:
还要注意 detFormat = DET_RECTANGLE; 如果你的检测输出是椭圆,这里就要改成椭圆。
在evaluate.cpp中的main函数,把第235行改为如下,即在max前面添加括号,否则会冲突。
Results *r = new Results(imName, (std::numeric_limits<double>::max)(), NULL, annot, det);
- 1
- 1
再者,在项目的属性栏中做如下改动。
在72行,把这里改成自己的
#ifdef _WIN32string baseDir = "F:/soft/c++/Test_FDDB/Test_FDDB/";string listFile = "F:/soft/c++/Test_FDDB/Test_FDDB/Fold_all.txt";string detFile = "F:/soft/c++/Test_FDDB/Test_FDDB/result.txt";string annotFile = "F:/soft/c++/Test_FDDB/Test_FDDB/Elsp.txt";
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
生成,在工程目录下得到了ContROC.txt与DiscROC.txt文件。
第三步:生成ROC曲线图
个人感觉不需要安装perl就可以,只需要下载两个.p的文件ContROC.p与DistROC.p;
安装GUNPLOT,我装的gp501-win32-mingw。
打开刚才生成的两个.p文件,file->output,将可以看见生成的ROC曲线啦。
注意设置:输出文件的路径,建议使用绝对路径:
已经标注的很清楚,根据上述修改即可。
打开gnuplot4.6:
先把pl文件拖到里面,然后再file->output,即可看到我们的曲线。
曲线:
引用博客: http://blog.csdn.net/mr_curry/article/details/52141730
人脸检测FDDB评测的详细步骤相关推荐
- (1)简单易学—— 人脸检测 Tensorflow_MTCNN模型训练详细步骤(纯干货,适用于windows和ubuntu系统)
(配置项目环境前,电脑环境需要安装好Anaconda3) 1. 下载项目地址: git clone https://github.com/wangbm/MTCNN-Tensorflow.git 先使用 ...
- 如何用OpenCV在Python中实现人脸检测
选自towardsdatascience 作者:Maël Fabien 机器之心编译 参与:高璇.张倩.淑婷 本教程将介绍如何使用 OpenCV 和 Dlib 在 Python 中创建和运行人脸检测算 ...
- 使用OpenCV实现人脸检测(Python)
文章目录 Introduction 使用 OpenCV 的 Haar 级联分类器 导入工具包和模型路径 级联分类器 积分图像 使用 Adaboost 学习分类函数 级联分类器 输入 检测图像中的人脸 ...
- Ubuntu 下使用 FDDB 测试人脸检测模型并生成 ROC 曲线,详细步骤
原 Ubuntu 下使用 FDDB 测试人脸检测模型并生成 ROC 曲线 2018年08月01日 20:18:44 Xing_yb 阅读数:101 标签: FDDB 人脸检测 模型测试 ROC 曲线 ...
- FDDB,检测自己的数据集的mobilenet,网络模型的详细步骤,留给新手参考
1. FDDB评估工具的使用,gunplot安装,修改路径,参考下面博客, 注意,make,如果报错再修改Makefile https://blog.csdn.net/behind_you/artic ...
- Ello讲述Haar人脸检测:易懂、很详细、值得 ...
Ello讲述Haar人脸检测:易懂.很详细.值得 ... ...
- 人脸检测:RetinaFace(开源简化版)详细解读
介绍 Insight Face在2019年提出的最新人脸检测模型,原模型使用了deformable convolution和dense regression loss, 在 WiderFace 数据集 ...
- 【java】调用百度开发平台ai接口,完成人脸识别(人脸搜索、人脸对比、人脸检测等)功能--------超详细,适合小白
基本流程理解: 我们要使用百度提供的接口去实现某些功能,大致流程如下: 1.注册百度开放平台帐号: 浏览器打开http://ai.baidu.com/,进入百度ai的页面,点击右上角的控制台按钮进行登 ...
- 人脸检测dlib, mtcnnx对比,FDDB测试对比
前面一直做人脸检测相关内容,然后对比了下dib以及MTCNN的人脸检测效果主要是速度,以及FDDB准确率.最后给出生成FDDB测试文件的C++代码. FDDB 测试结果 注本文的MTCNN效果检测准确 ...
- 实战 | 用Python和MediaPipe搭建一个嗜睡检测系统 (详细步骤 + 源码)
导读 本文将使用Python和MediaPipe搭建一个嗜睡检测系统 (包含详细步骤 + 源码). 背景介绍 疲劳驾驶的危害不堪设想,据了解,21%的交通事故都因此而生,尤其是高速路上,大多数车辆都是 ...
最新文章
- centos java yum_CentOS7 使用yum命令安装Java SDK
- log4j linux如果日志目录不存在,Java日志库学习笔记
- python面试常用问题_Python面试中最常见的25个问题-结束
- 并联匹配和串联匹配的原理和选择
- flash player for linux 64,64-bit linux下装什么adobe flash player
- MyBatis的概述及使用
- 验证二叉搜索树的golang实现
- spring容器创建bean对象的方式以及如何处理多个spring配置文件
- 浅谈WPF中的Calendar日历控件
- 实例讲解什么是Meta回归,怎么利用Meta回归发表文章!
- WIN10系统不小心点击了显示语言栏怎么恢复
- python暑假培训班
- 量化基金股票的投资策略有哪些?
- 培训班出来,碰到查学历,哎宝宝苦。
- 立创EDA学习笔记(3)——PCB绘制
- Excel怎么设置密码保护工作表
- 针对前端js加密解密方法的兼容问题(兼容ie5以上哦)
- Office 2003 出现异常提示遇到问题需要关闭“ 发送错误报告 ”“ 不发送 ”“以安全模式启动”
- 美团外卖大数据“杀熟”,程序员成了“接锅侠”,简直不讲武德!
- 电芯容量在前期循环中容量增加_新发现!18650电池钢芯提升电池低温循环性能...
热门文章
- python 物理引擎_第十六章:物理引擎
- android手机运行win10,兼容安卓 Win10手机竟然能直接运行APK
- 8.1 段子中“酷毙”了的IT行业——《逆袭大学》连载
- 城市智慧停车管理模式方案科普
- 软件工程 选课系统的uml类图_软件工程课程设计-基于UML的学生选课系统的软件工程课程设计 精品推荐...
- 技术交底书(一)-----一种移动终端无需充电及移动终端
- @DependsOn或depends-on配置的使用
- html如何让标签居中显示,HTML怎么让标签居中
- mysql数据库学习汇总
- Java学习从入门到放弃