Windows下测试算法在FDDB数据库的性能
土鳖一只,开发只用过Windows操作系统。
公司要提交人脸检测算法在FDDB数据库上的性能,时间赶,来不及学习linux啥啥了,在Windows下磕磕绊绊弄好了。
记录一下,免得一转眼又忘了。
1. 首先,FDDB官网上,下载图片和标注文件:
http://vis-www.cs.umass.edu/fddb/
FDDB的标注文件,分为图片名称文件FDDB-fold-01.txt、对应的标注文件:FDDB-fold-01-ellispe.txt,各有10个,我在这里做了合并,分别命名为Fold_all.txt和Elsp.txt.
2. 人脸检测
读Fold.txt文件,依照顺序做人脸检测,将检测结果输出出来,格式如下:
<image name i> <number of faces in this image =im> <face i1> <face i2> ... <face im>
<face im>的表达形式有以下两种:
4 a. Rectangular regionsEach face region is represented as:<left_x top_y width height detection_score> 4 b. Elliptical regionsEach face region is represented as:<major_axis_radius minor_axis_radius angle center_x center_y detection_score>.
这里要注意detection_score这个值,必须是个有参考意义的分数,不能像它的标注文件一样置为1,否则ROC曲线出不来。
3. 然后就要进行到本文的重点了:运行评估程序,生成ROC曲线
在FDDB官网上下载评估程序:http://vis-www.cs.umass.edu/fddb/evaluation.tgz
尽管FDDB官网上FAQ做了说明,虽然我用mingw成功编译了evaluation,但是后续用perl生成ROC曲线脚本仍然有非windows的命令,所以这里我放弃了mingw的方法。
转而使用了我最熟悉的vs。
建立VS工程FDDBEvaluation,将evaluation中的源码添加到工程,配置OPENCV等,修改main函数里以下内容:
string baseDir = "F:/Data/FDDB/";
string listFile = "D:/fold_all.txt";
string detFile = "D:/output.txt";
string annotFile = "D:/Elsp_all.txt";
还要注意 detFormat = DET_RECTANGLE; 如果你的检测输出是椭圆,这里就要改成椭圆。
编译通过,运行。
运行结束之后,生成两个ROC文件:
DiscRoc.txt和ContRoc.txt,这就是最终要画图ROC的数据。
4. 生成ROC图数据
安装perl,我装的是strawberry-perl-5.22.0.1-64bit,网上搜索下载就行。
然后,修改官网提供的runEvaluate.pl,否则有些命令执行不了。。。
我修改后是这样的:
#!/usr/bin/perl -w
use strict;
#### VARIABLES TO EDIT ####
# where gnuplot is
my $GNUPLOT = "D:/Program Files (x86)/gnuplot/bin/gnuplot";
# where the binary is
my $evaluateBin = "evaluate";
# where the images are
my $imDir = "F:/Data/FDDB";
# where the folds are
my $fddbDir = "F:/Data/FDDB/FDDB-folds";
# where the detections are
my $detDir = "D:/";
###########################
my $detFormat = 0; # 0: rectangle, 1: ellipse 2: pixels
sub makeGNUplotFile
{
my $rocFile = shift;
my $gnuplotFile = shift;
my $title = shift;
my $pngFile = shift;
open(GF, ">$gnuplotFile") or die "Can not open $gnuplotFile for writing\n";
#print GF "$GNUPLOT\n";
print GF "set term png\n";
print GF "set size .75,1\n";
print GF "set output \"$pngFile\"\n";
#print GF "set xtics 100\n";
#print GF "set logscale x\n";
print GF "set ytics .1\n";
print GF "set grid\n";
#print GF "set size ratio -1\n";
print GF "set ylabel \"True positive rate\"\n";
print GF "set xlabel \"False positives\"\n";
#print GF "set xr [0:500]\n";
print GF "set yr [0:1]\n";
print GF "set key right bottom\n";
print GF "plot \"$rocFile\" using 2:1 title \"$title\" with lines lw 2 \n";
close(GF);
}
my $gpFile = "D:/ContROC.p";
my $gpFile1 = "D:/DiscROC.p";
my $title = "zhouzhou";
# plot the two ROC curves using GNUplot
makeGNUplotFile("D:/ContROC.txt", $gpFile, $title, $detDir."ContROC.png");
makeGNUplotFile("D:/DiscROC.txt", $gpFile1, $title, $detDir."DiscROC.png");
然后,cmd->perl runEvaluate.pl
酱紫地:
然后就发现生成了两个.p文件:
5. 画ROC曲线
安装GUNPLOT,我装的gp501-win32-mingw。
打开刚才生成的两个.p文件,file->output,将可以看见生成的ROC曲线啦。
6.以上基本完工,如果想将自己的结果与官网上其他公司公布的结果画在一起,在官网上下载ContROC.p,DiscRoc.p等,用写字板打开之后,将自己的检测结果添加进去,同样用gnuplot画出来就行。
Windows下测试算法在FDDB数据库的性能相关推荐
- windows执行oracle脚本,Windows下通过计划任务执行数据库备份脚本
Windows 下通过计划任务执行数据库备份脚本 在Linux下可以通过crontab来设置定时执行数据库的备份脚本,同样Windows 下可以通过设定任务计划程序来设定要执行的自动备份脚本.具体的设 ...
- 如何在Windows下利用Apche查看MySQL数据库?
本篇文章主要跟大家介绍的是如何在Windows下利用Apche查看MySQL数据库,小杜觉得挺实在的,就整理了一下并分享给大家做个参考,希望大家看完之后有一定的收获.因此,有感兴趣的朋友记得要看完! ...
- windows下测试人脸检测分类器在FDDB数据库的性能
本文参考 http://blog.csdn.net/phoenix_zhou/article/details/47399819 , http://blog.csdn.net/mr_curry/arti ...
- nacos 本地测试_Nacos集群配置实例(windows下测试)
1.首先 fork 一份 nacos 的代码到自己的 github 库,然后把代码 clone 到本地. git地址:https://github.com/alibaba/nacos.git 2.然后 ...
- Windows下测试UDP端口联通性
某服务使用UDP,傻傻跑去telnet 端口 来测试发现,Telnet根本不支持UDP端口, 网上Windows下说用NC,但是下载下来马上被杀毒软件杀了,最后测试namp可以实现 下载地址:http ...
- gcc oracle mysql_[转]Windows下用GCC连接MySQL数据库
一个网友在坛子上问到的问题,说用MinGW GCC编译运行一个连接MySQL数据库的程序时遇到错误: undefined reference to `mysql_init@4' undefined r ...
- Windows下安装并使用MySQL数据库
MySQL是一款免费开源的关系型数据库,很多中小型企业开发项目都选择使用MySQL数据库,所以大家也在优先选择学习MySQL数据库. 一,安装 1.打开MySQL下载地址,MySQL官方下载地址htt ...
- Windows下C语言连接Oracle数据库
为什么80%的码农都做不了架构师?>>> 最近公司有个项目需要用到Oracle数据库,我负责前期的调研.由于项目要用到C和PHP两种语言,所以先收集这两种语言连接Oracle的 ...
- Windows下测试tcp/udp端口是否打开
简介 很多时候我们需要检测某台服务器的端口是否开放,当然网上也有很多在线检测的小工具,其实在本地电脑也是可以检测的.本文就介绍一下两种小办法. 一.tcping检测TCP端口是否开放 1.下载tcpi ...
- 10、单机运行环境搭建之 --Windows下mysqldump 备份与还原数据库
编辑如下批处理 backup.bat @echo 设置MySql数据库的IP set ipaddress=127.0.0.1@echo 设置MySql数据库名 set db_name1=lxyy_db ...
最新文章
- mysql中增加45天三小时_MySQL查询以45天为间隔添加天数并在新列中显示输出
- 论SqlServer中char、varchar、nvarcahr和MySQL中char、varcahr的区别
- Win7下Android模拟器中没有3G网络信号的解决办法
- java uuid 生成方法
- 关于优酷开放SDK之setOnVideoSizeChangedListener
- Android之简单的文件夹选择器实现
- 新版本发布潮:Ceylon 1.2、Node.js 5.0和Atom 1.1
- String.Format数字格式化参考
- 如何为ip v6设定子网
- UniAPP支付宝H5支付
- 云计算发展现状及未来趋势
- Black-Scholes期权定价模型
- python pil image_Python PIL的Image模块
- 当前的安全设置不允许从该位置下载文件。 的解决办法
- 开始启航:Redis中国用户会(CRUG)首次常委会召开 选出主席和校长
- 怎样看服务器是虚拟还是物理,如何判断服务器为虚拟机还是物理真机?
- POJ 3126 Prime Path(BFS + 素数打表)
- 餐饮服务设备行业的互联网趋势
- Weex 修改安卓生成apk默认的启动页面
- 树莓派(七):调取IP摄像头