人脸关键点检测和头部姿态估计数据集整理
1. 300W数据集简介
300W数据集是一个非常通用的人脸对齐数据集,也是近年来凡paper,都要出指标比对的必然数据集。
下载链接:https://ibug.doc.ic.ac.uk/resources/300-W/
该数据集共计3148+689张图像,每个图像上包含不止一张人脸,但是对于每张图像只标注一张人脸。
该数据集包含的文件目录为:
afw(train 337) https://ibug.doc.ic.ac.uk/download/annotations/afw.zip
helen(train 2000 + test 330) https://ibug.doc.ic.ac.uk/download/annotations/helen.zip
ibug(test 135) https://ibug.doc.ic.ac.uk/download/annotations/ibug.zip
lfpw(train 811 + test 224) https://ibug.doc.ic.ac.uk/download/annotations/lfpw.zip
该数据集训练集共计3148张图像,测试集共计689张图像
此外,300w官网Download部分有4个part数据是300w crop的数据集,我们一起下载下来作为数据扩展用
300w(300 indoor + 300 outdoor) https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/
300w竞赛的进阶版300-vw(https://ibug.doc.ic.ac.uk/download/300VW_Dataset_2015_12_14.zip/),同样是面部特征点的检测,只不过检测的对象从图片变成了视频。数据集提供了几乎每一帧的人脸特征点数据。所以一段20秒的视频可以提取出约500张画面,300-vw里大约有500多段视频,所以理论上可以提取出大概250000张图片样本。
2.数据集整理分析
在上一步骤中,我们已经下载到了包括300-w,LFPW,HELEN,AFW,IBUG和300-VW在内的6个数据集,初步估算有25万个样本可以使用,接下来我们将尝试对下载到的数据进行分析整理,包括:
- 统计数据集中不同格式文件的数量。
- 提取视频文件中的每一帧为单独的文件。
- 从自定义格式pts文件中读取特征点坐标,并显示在图片上。
检查数据集的格式:
为方便使用,大部分数据集都会尽可能的保留原始数据,并将附加的信息以文本或者其它形式进行存储,然后打包成一个或者若干压缩文档。所以拿到数据集后的第一件事,就是阅读数据集的说明文档。通过阅读说明,我们发现这六个数据库中的特征点坐标均以后缀名为pts
的格式进行存储,且文件名与对应的图片文件名相同。
有一个例外是300-VW。由于它是视频数据库,每一个视频文件则对应多个pts
文件,每个pts
文件对应了视频中的某一帧。
打开其中任意一个pts
文件,发现文件内容大概是这个样子:
不难发现,每一个pts
文件中第一行是文件版本,第二行是坐标个数说明,从第三行开始,括号内存储的是对应图像中人脸的68个特征点的坐标x与y,一行一组。所以有多少个pts
文件,就有多少个可用样本。
使用FFmpeg提取视频帧:
若要利用这20多万个样本,需要从视频中提取每一帧图像为单独的文件。这里我推荐使用著名的音视频包FFmpeg
FFmpeg是一套完整的音视频转换与流媒体开源解决方案。在Ubuntu下你可以简单的通过apt
命令来安装它。FFmpeg的使用也很简单,在终端中输入以下命令即可将视频中的每一帧提取成为单独的图像文件,存放在当前目录的image
文件夹下,文件名取自帧编号:
ffmpeg -i vid.avi -qscale:v 1 -f image2 image/%06d.jpg
其中-i
是指定输入文件,-qscale:v
是指定输出的图片质量参数,-f
为输出文件的模式。如果不指定-qscale:v
的话FFmpeg会使用默认参数输出,图片质量会变得很差。下图从左向右依次是默认参数,质量为1和不压缩的BMP格式。
由于300-VW下的114个avi
视频文件文件名是相同的,我们可以写一个简单的Shell脚本来批量将avi
视频中的帧提取出来。
for dir in $(ls -d */);
docd $dir;mkdir image;ffmpeg -i vid.avi -qscale:v 1 -f image2 image/%06d.jpg;cd ..;
done
这段脚本在执行过程中会输出log供参考。整个300-VW的转换在我的计算机上花费的时间不到10分钟。
验证特征点坐标与图片的一致性:
理论上图片与坐标数据是一一对应的,不过我相信你心里应该也会有那么一点点的不确定——同名的pts
与图像文件真的一一对应吗?我们从视频中提取出来的图像呢,也能对应上吗?
为了消除心中的这个疑虑,也是为了从最开始就排除数据不匹配这一最糟糕的情况,最好将数据中的特征点画在对应图像上,人工用肉眼来验证一下!
要达成这一目标,需要实现以下两个主要功能:
- 从
pts
文件中读取68个特征点的坐标。 - 读取对应的图像,将特征点绘制在图像上并呈现出来。
1.使用Python读取文本文件
Python读取文本文档是不能再简单的事情,使用以下3行代码即可逐行打印出文本文档中的所有内容。
with open('image_003_1.pts') as file:for line in file:print(line)
使用该方法将一个pts
文件中的内容打印出来如下:
version: 1
n_points: 68
{
336.820955 240.864510
334.238298 260.922709
335.266918 283.697151
# 中间省略若干行
370.512631 329.910074
363.035791 328.132512
357.493721 327.074215
}
仔细观察不难发现,68个特征点在pts
文件中是顺序存储的,一行一组,所以只需要排除掉非坐标点行即可得到所有坐标。具体的排除方法可以自选,例如坐标行中仅包含数字、小数点和空格,非坐标行的字符与符号几乎是固定的。
2.使用Python读取并显示图片
在这里,我推荐使用适用于Python的OpenCV模块。安装完成后,我们就可以使用Python调用OpenCV函数,主要是以下3个:
cv2.imread()
读取图像文件。cv2.circle()
在图像指定位置处绘制圆点。cv2.imshow()
将修改后的图像显示在窗口中。
最后,我们从搜集好的6个数据集中随机选择一些文件来看一下效果。
300-VW
300-W
AFW
HELEN
HELEN数据集中的图片分辨率较高,因此绘制的Mark点看上去很小。
IBUG
LFPW
同样需要注意的是有时候图片中存在多张人脸,但是一个pts
文件中只存储一个人脸的数据。
3.数据集整理完结果
参考链接:https://blog.csdn.net/lgh0824/article/details/88536215#commentsedit
https://yinguobing.com/facial-landmark-localization-by-deep-learning-data-and-algorithm/
https://yinguobing.com/facial-landmark-localization-by-deep-learning-data-collate/
人脸关键点检测和头部姿态估计数据集整理相关推荐
- 基于Continuous Conditional Neural Fields for Structured Regression的人脸特征点检测和头部姿态估计
Continuous Conditional Neural Fields for Structured Regression 效果图:头部姿态和特征点检测
- 目标检测算法——人体姿态估计数据集汇总(附下载链接)
- 人脸关键点检测综述(含论文、数据集、方法等)
人脸关键点 人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别.表情分析.三维人脸重建及三维动画等其它人脸相关问题的前提和突破口.近些年来,深度学习(http://www.rainc ...
- 【技术综述】人脸关键点检测的数据集与核心算法
人脸关键点检测是诸如人脸识别.表情分析.三维人脸重建等其它人脸相关任务的基础.近些年来,深度学习方法已被成功应用到了人脸的关键点检测,本章将介绍深度学习方法在人脸关键点检测方向的研究.包括人脸关键点任 ...
- caffe 人脸关键点检测_人脸关键点对齐
摘要: 从传统方法到深度学习方法,对人脸关键点定位/人脸对齐的发展进行梳理,对该领域中经典的方法,最新成果进行汇总,并给出相应的paper原文,项目主页及代码链接.重点介绍深度学习的几种最新方法. 1 ...
- HeadPose Estimation头部姿态估计头部朝向(Android)
HeadPose Estimation头部姿态估计头部朝向(Android) 目录 HeadPose Estimation头部姿态估计头部朝向(Android) 0.前言 1.HeadPose 2.p ...
- paddle2.0高层API实现人脸关键点检测(人脸关键点检测综述_自定义网络_paddleHub_趣味ps)
paddle2.0高层API实现人脸关键点检测(人脸关键点检测综述_自定义网络_paddleHub_趣味ps) 本文包含了: - 人脸关键点检测综述 - 人脸关键点检测数据集介绍以及数据处理实现 - ...
- [人脸关键点检测] PFLD:简单、快速、超高精度人脸关键检测
转载请注明作者和出处: http://blog.csdn.net/john_bh/ 论文链接:PFLD: A Practical Facial Landmark Detector 作者及团队: 天津大 ...
- 使用Python分析姿态估计数据集COCO的教程
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 当我们训练姿势估计模型,比较常用的数 ...
最新文章
- mysql filter_MySQL 过滤复制+复制映射 配置方法
- CNCC 2019 | 计算领域年度盛会—中国计算机大会10月将在苏州举行
- 行人检测 读书笔记 综述
- [YTU]_2907 (类重载实现矩阵加法)
- Python教程:一篇文件教你py文件打包成exe
- docker运行随机分配端口
- 在给定总和K的二叉树中找到级别
- Selenium 显式等待条件及其含义
- 美团AI全景图:吃喝玩乐背后的黑科技
- POJ 2762Going from u to v or from v to u?(强联通 + 缩点 + 拓扑排序)
- 解决idea中找不到程序包和找不到符号的问题
- 不用编程,快速实现西门子PLC与罗克韦尔(AB)PLC之间以太网通讯
- Win10 远程桌面黑屏问题
- 网页设计大作业成品_成品衣柜尺寸太固定,设计师6大方面分享定制衣柜,读后收获满满...
- Android笔记之系统软键盘布局
- cadence——MOS晶体管I-V特性曲线仿真
- mediasoup安装使用
- 几何光学学习笔记(30)-6.5光通量和光亮度在光学系统中的传递、像面光照度
- matlab迭代分水岭分割,matlab分水岭分割算法
- 成都玺讯——虾皮跨境电商卖家未来规划