【人脸检测】 Tinaface复现(数据集准备、测试与评估)

2023-11-07

转载自 https://blog.csdn.net/qq_35975447/article/details/110430390

 

【人脸检测】 Tinaface复现(数据集准备、测试与评估)

 

参考:

TinaFace: Strong but Simple Baseline for Face Detection

https://github.com/Media-Smart/vedadet

https://github.com/sovrasov/wider-face-pascal-voc-annotations

0.环境

 
  1. ubuntu16.04

  2. python3.6

  3. cuda9.2

  4. cudnn7

  5. torch==1.6.0+cu92

  6. addict==2.4.0

  7. cycler==0.10.0

  8. Cython==0.29.21

  9. future==0.18.2

  10. kiwisolver==1.3.1

  11. matplotlib==3.3.3

  12. numpy==1.19.4

  13. Pillow==8.0.1

  14. pycurl==7.43.0

  15. pygobject==3.20.0

  16. pyparsing==2.4.7

  17. python-apt==1.1.0b1+ubuntu0.16.4.9

  18. python-dateutil==2.8.1

  19. six==1.15.0

  20. unattended-upgrades==0.1

  21. tqdm

  22. scipy

  23. ipython

 
  1. cd vedadet

  2. pip install -r requirements/build.txt

避免出错,我直接安装环境中对应的python库,然后注释掉对应的根目录下setup.py中的安装依赖包的两行。

改为: 

(默认会安装最新的,如果对应的cuda版本不支持的话,那就自己安装吧!!!)然后执行下面:

pip install -v -e .

1.准备

1.1 准备模型

https://drive.google.com/u/0/uc?id=1zU738coEVDBkLBUa4hvJUucL7dcSBT7v&export=download

可以将放到https://github.com/Media-Smart/vedadet/tree/main/configs/trainval/tinaface,目录下新建的models下。

1.2 准备数据

1)原始数据

https://github.com/Media-Smart/vedadet/tree/main/configs/trainval/tinaface

进入vedadet/目录下,新建data,然后进入data目录下,从widerface官网上下载训练、验证与测试数据:

 解压从官网下载的数据,目录应该是这样:

 
  1. vedadet

  2. ├── vedadet

  3. ├── vedacore

  4. ├── tools

  5. ├── configs

  6. ├── data

  7. │ ├── WIDERFace

  8. │ │ ├── WIDER_train

  9. │ │ │ ├── images

  10. │ │ │ │ ├── 0--Parade

  11. │ │ │ │ ├── ......

  12. │ │ │ │ ├── 61--Street_Battle

  13. │ │ ├── WIDER_val

  14. │ │ │ ├── images

  15. │ │ │ │ ├── 0--Parade

  16. │ │ │ │ ├── ......

  17. │ │ │ │ ├── 61--Street_Battle

  18. │ │ ├── WIDER_test

  19. │ │ ├── wider_face_split

2)xml文件

下载对应的VOC格式的xml文件: 

 
  1. git clone https://github.com/sovrasov/wider-face-pascal-voc-annotations.git

  2. cd vedadet/data

  3. mv wider-face-pascal-voc-annotations/ WIDERFace/

  4. mv WIDERFace/WIDER_train_annotations WIDERFace/WIDER_train/Annotations

  5. mv WIDERFace/WIDER_val_annotations WIDERFace/WIDER_val/Annotations

 然后利用命令:

 
  1. cd ..

  2. sh configs/trainval/tinaface/gen_xml_name_txt.sh

目录结构如下:

 
  1. vedadet

  2. ├── vedadet

  3. ├── vedacore

  4. ├── tools

  5. ├── configs

  6. ├── data

  7. │ ├── WIDERFace

  8. │ │ ├── WIDER_train

  9. │ │ │ ├── images

  10. │ │ │ │ ├── 0--Parade

  11. │ │ │ │ ├── ......

  12. │ │ │ │ ├── 61--Street_Battle

  13. │ │ │ ├── Annotations

  14. │ │ ├── WIDER_val

  15. │ │ │ ├── images

  16. │ │ │ │ ├── 0--Parade

  17. │ │ │ │ ├── ......

  18. │ │ │ │ ├── 61--Street_Battle

  19. │ │ │ ├── Annotations

  20. │ │ ├── WIDER_test

  21. │ │ ├── wider_face_split

3)代码中路径等修改

由于与作者给出的目录略微有点不同,所以修改以下:

 
  1. # \vedadet\configs\trainval\tinaface\tinaface.py line 14与38

  2. img_prefix=data_root + 'WIDER_train/',

  3. img_prefix=data_root + 'WIDER_val/',

  4. 改为:

  5. img_prefix=data_root + 'WIDER_train/images/',

  6. img_prefix=data_root + 'WIDER_val/images/',

  7. # \vedadet\vedadet\datasets\widerface.py line 36-37

  8. xml_path = osp.join(self.img_prefix, 'Annotations',

  9. f'{img_id}.xml')

  10. 改为

  11. xml_path = osp.join(self.img_prefix.replace('images','Annotations'),f'{img_id}.xml')

/vedadet/vedadet/datasets/xml_style.py

其中 \vedadet\vedadet\datasets\xml_style.py 中对应的xml_path也要修改为相应的

  1. xml_path = osp.join(self.img_prefix, 'Annotations',

  2. f'{img_id}.xml')

  3. 改为

  4. xml_path = osp.join(self.img_prefix.replace('images','Annotations'),

  5. f'{img_id}.xml')

至此,基本就可以了。如果想修改数据的根目录:

 
  1. # \vedadet\configs\trainval\tinaface\tinaface.py line 3 改为你对应的对应就可以了,绝对与相对路径都可以

  2. data_root = './data/WIDERFace/'

2.测试与评估

2.1 测试

python configs/trainval/tinaface/test_widerface.py configs/trainval/tinaface/tinaface.py /root/vedadet/weights/tinaface_r50_fpn_widerface.pth

会在vedadet/eval_dirs/tmp/tinaface/目录下,生成对应的txt文件。

2.2 评估

还是用之前很多篇评估widerface的方式来评估一下。

将Pytorch_Retinaface/widerface_evaluate内的这几个文件与widerface_eval文件夹,复制到vedadet/tools目录下。

https://github.com/biubug6/Pytorch_Retinaface/tree/master/widerface_evaluate

https://github.com/ChiCheng123/SRN/tree/master/tools

 widerface_eval文件也可以在我的资源中下载:https://download.csdn.net/download/qq_35975447/14158058

命令加修改:

 
  1. cd ./tools

  2. python setup.py build_ext --inplace

  3. vim evaluation.py

  4. # line 287-288

  5. parser.add_argument('-p', '--pred', default="${vedadet_root}/eval_dirs/tmp/tinaface/")

  6. parser.add_argument('-g', '--gt', default='./widerface_eval/ground_truth/')

  7. python evaluation.py

其中参数:

--pred是预测结果txt文件的保存路径,默认为:

 --gt是真实的,我们之前准备的。

2.3 评估结果 

评估结果还是比较准的,这个是没有加TTA的。

 参考

1.vedadet(官方代码)

2.tinaface(官方论文)

3.wider-face-pascal-voc-annotations(xml文件)

4.评估部分参考(SRN)

5.评估部分代码与gt

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【人脸检测】 Tinaface复现(数据集准备、测试与评估) 的相关文章

随机推荐

  • kafka笔记3--快速部署KRaft版本的kafka3.1.1

    kafka笔记3 快速部署KRaft版本的kafka3 1 1 1 介绍 2 部署测试 2 1 部署 2 2 测试 3 注意事项 4 说明 1 介绍 Apache Kafka Raft 是一种共识协议 它的引入是为了消除 Kafka 对 Z
  • 【Java愚公】gitlab设置中文

    gitlab设置中文 设置步骤 设置完成后效果图 设置步骤 gitlab版本自带了中文语言包 可以通过上述方式直接切换 设置流程说明如下 访问gitlab服务 在用户偏好设置中设置用户语言类别 如下图所示 设置完成后效果图
  • 【STM32】电子时钟(1)

    一直想系统的学习STM32 但是公司的项目主要是电机算法 每天看到头都快炸了 打算仿照手机上的时钟应用写一个电子时钟 因为这个任务的定位是 好吧 就没有定位 主要是边玩边学 也不设时间期限和具体的功能指标 有空了就搞搞 想到了什么就加上去
  • 成功解决Myeclipse2017破解时遇到的crack.bat文件闪退问题

    解决问题 解决Myeclipse2017破解时遇到的crack bat文件闪退问题 解决方法 是环境变量设置有错 1 新建系统环境变量 JAVA HOME D Program Files MyEclipse2017CI7 binary co
  • Linux 音视频开发杂记之一-环境配置使用vscode

    开发环境 开发环境选择window10 Visual Studio Code ubuntu20 64 虚拟机 一Windows 安装 1 安装git for windows 安装过程直接下一步 主要原因是windows OpenSSH在vs
  • Flutter - Route传参

    Navigator 组件支持通过使用通用标识符从应用程序的任何地方导航到特定路由 在某些情况下 你可能还希望能够传递参数给特定路由 例如 你希望导航到 user 路由并携带上用户信息 在 Flutter 中 你能通过提供额外的 argume
  • 博客使用方法

    这里写自定义目录标题 凯哥英语视频 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左
  • 数据模型所描述的内容包括三个部分:数据结构、数据操作、数据约束。

    http www cnblogs com joechinochl articles 5252518 html 数据模型所描述的内容包括三个部分 数据结构 数据操作 数据约束 1 数据结构 数据模型中的数据结构主要描述数据的类型 内容 性质以
  • 大数据毕业设计题目选题推荐

    文章目录 0 前言 1 如何选题 1 1 选题技巧 如何避坑 重中之重 1 2 为什么这么说呢 1 3 难度把控 1 4 题目名称 1 5 最后 2 大数据 选题推荐 2 1 大数据挖掘类 2 2 大数据处理 云计算 区块链 毕设选题 2
  • if语句c语言编程题,c语言if语句的练习题答案

    1 编写程序输入a和b 求a和b的余数和商 includevoid main int a b scanf printf 商为 d 余数为 d 2 输入一个整型数据 分别求出各位数字 如 469 则个位数是9 十位数是6 百位数 是4 inc
  • 某型雷达的报文收发实录

    某型雷达的报文收发实录 前言 工作中需要与某型激光雷达进行通讯 读写报文解析出相应的角度 位置 在目前的工作中 切实遇到的问题是报文的收发 这里记录之 以下内容尚未进过实践检验2020 6 20 激光雷达的报文的接收 使用的API为wins
  • matlab怎么搭建神经网络,matlab实现神经网络算法

    怎样用matlab建立bp神经网络 net train net p t 把这句改成net train net p t 试试 matlab应该默认使用列向量 或者直接使用matlab提供的图形界面取训练 在命令行输入nnstart 谷歌人工智
  • 递归求解迷宫问题

    package com yg recursion author GeQiLin date 2020 2 24 16 01 public class MiGong private static int col 7 private static
  • Codeforces Round 881 (Div. 3) 题解

    目录 A Sasha and Array Coloring 题意 思路 代码 B Long Long 题意 思路 代码 C Sum in Binary Tree 题意 思路 代码 D Apple Tree 树形dp 题意 思路 代码 E T
  • 2022年C语言程序设计题库习集带答案(史上最全版)

    C语言程序设计 试题一 一 填空题 1 C语言中基本的数据类型有 2 C语言中普通整型变量的类型说明符为 在内存中占 字节 有符号普通整型的数据范围是 3 整数 35在机内的补码表示为 4 执行下列语句int a 8 a a a a 后 a
  • springboot集成微信app支付

    一 准备工作 以下信息需要自行开通和申请 public static final String APP ID app的id 需要app应用 public static final String KEY api密钥 商户账户信息里面去获取 p
  • 一个mysql语句报错引发的故事

    昨天在自己的本上装了mysql 打算练习sql语句 在创建表的时候报了错 Invalid default value for sex 就是说我sql语句中有个性别的默认值设置是无效的 性别用的是enum数据类型 出错原因是因为数据库的编码不
  • 【Python字典】

    字典类型的基本概念 通过任意键信息查找一组数据中值信息的过程叫映射 Python语言中通过字典实现映射 Python语言中的字典可 以通过大括号 建立 建立模式如下 lt 键1 gt lt 值1 gt lt 键2 gt lt 值2 gt l
  • C++11--包装器与可变参数摸板

    文章目录 可变参数模板 递归函数方式展开参数包 函数包装器 举个例子 bind函数 举个例子 可变参数模板 C 11的新特性可变参数模板能够让我们创建可以接受可变参数的函数模板和类模板 Args是一个模板参数包 args是一个函数形参参数包
  • 【人脸检测】 Tinaface复现(数据集准备、测试与评估)

    转载自 https blog csdn net qq 35975447 article details 110430390 人脸检测 Tinaface复现 数据集准备 测试与评估 参考 TinaFace Strong but Simple