土鳖一只,开发只用过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数据库的性能相关推荐

  1. windows执行oracle脚本,Windows下通过计划任务执行数据库备份脚本

    Windows 下通过计划任务执行数据库备份脚本 在Linux下可以通过crontab来设置定时执行数据库的备份脚本,同样Windows 下可以通过设定任务计划程序来设定要执行的自动备份脚本.具体的设 ...

  2. 如何在Windows下利用Apche查看MySQL数据库?

    本篇文章主要跟大家介绍的是如何在Windows下利用Apche查看MySQL数据库,小杜觉得挺实在的,就整理了一下并分享给大家做个参考,希望大家看完之后有一定的收获.因此,有感兴趣的朋友记得要看完! ...

  3. windows下测试人脸检测分类器在FDDB数据库的性能

    本文参考 http://blog.csdn.net/phoenix_zhou/article/details/47399819 , http://blog.csdn.net/mr_curry/arti ...

  4. nacos 本地测试_Nacos集群配置实例(windows下测试)

    1.首先 fork 一份 nacos 的代码到自己的 github 库,然后把代码 clone 到本地. git地址:https://github.com/alibaba/nacos.git 2.然后 ...

  5. Windows下测试UDP端口联通性

    某服务使用UDP,傻傻跑去telnet 端口 来测试发现,Telnet根本不支持UDP端口, 网上Windows下说用NC,但是下载下来马上被杀毒软件杀了,最后测试namp可以实现 下载地址:http ...

  6. gcc oracle mysql_[转]Windows下用GCC连接MySQL数据库

    一个网友在坛子上问到的问题,说用MinGW GCC编译运行一个连接MySQL数据库的程序时遇到错误: undefined reference to `mysql_init@4' undefined r ...

  7. Windows下安装并使用MySQL数据库

    MySQL是一款免费开源的关系型数据库,很多中小型企业开发项目都选择使用MySQL数据库,所以大家也在优先选择学习MySQL数据库. 一,安装 1.打开MySQL下载地址,MySQL官方下载地址htt ...

  8. Windows下C语言连接Oracle数据库

    为什么80%的码农都做不了架构师?>>>    最近公司有个项目需要用到Oracle数据库,我负责前期的调研.由于项目要用到C和PHP两种语言,所以先收集这两种语言连接Oracle的 ...

  9. Windows下测试tcp/udp端口是否打开

    简介 很多时候我们需要检测某台服务器的端口是否开放,当然网上也有很多在线检测的小工具,其实在本地电脑也是可以检测的.本文就介绍一下两种小办法. 一.tcping检测TCP端口是否开放 1.下载tcpi ...

  10. 10、单机运行环境搭建之 --Windows下mysqldump 备份与还原数据库

    编辑如下批处理 backup.bat @echo 设置MySql数据库的IP set ipaddress=127.0.0.1@echo 设置MySql数据库名 set db_name1=lxyy_db ...

最新文章

  1. mysql中增加45天三小时_MySQL查询以45天为间隔添加天数并在新列中显示输出
  2. 论SqlServer中char、varchar、nvarcahr和MySQL中char、varcahr的区别
  3. Win7下Android模拟器中没有3G网络信号的解决办法
  4. java uuid 生成方法
  5. 关于优酷开放SDK之setOnVideoSizeChangedListener
  6. Android之简单的文件夹选择器实现
  7. 新版本发布潮:Ceylon 1.2、Node.js 5.0和Atom 1.1
  8. String.Format数字格式化参考
  9. 如何为ip v6设定子网
  10. UniAPP支付宝H5支付
  11. 云计算发展现状及未来趋势
  12. Black-Scholes期权定价模型
  13. python pil image_Python PIL的Image模块
  14. 当前的安全设置不允许从该位置下载文件。 的解决办法
  15. 开始启航:Redis中国用户会(CRUG)首次常委会召开 选出主席和校长
  16. 怎样看服务器是虚拟还是物理,如何判断服务器为虚拟机还是物理真机?
  17. POJ 3126 Prime Path(BFS + 素数打表)
  18. 餐饮服务设备行业的互联网趋势
  19. Weex 修改安卓生成apk默认的启动页面
  20. 树莓派(七):调取IP摄像头

热门文章

  1. java宠物商店_Java实现宠物商店管理系统
  2. ubuntu 20 解决软件商店不可用问题
  3. 离散数学与组合数学汇总
  4. PHP 控制器怎么调接口,mvc控制器的访问与参数解析和API接口获取数据
  5. 物联网建设,智慧城市道路智能交通解决方案
  6. 雷霄骅《最简单的视音频播放示例2:GDI播放YUV, RGB 》中YUV转RGB的过程
  7. Unity人物动画问题
  8. 【seaborn】(五)联合分布图
  9. QCalendarWidget 日历控件
  10. 掌握业务流程图符号,提高业绩不再没有头绪