目前人脸检测和人脸的关键点的数据库根据关键点个数:5,20,21,29,68等。https://blog.csdn.net/XZZPPP/article/details/74939823该网页详细列出了相关数据集的网址。由于项目需要和评估数据集大小。我选择了21点的AFLW数据集。网上也有人将该数据放到百度网盘上,可以直接下载。由于数据放在.sqlite。可以通过可视化工具直接查看数据内容。https://www.jianshu.com/p/dfd6e0193460
也可以通过代码来查看:

import sqlite3

sqlite_path = "*/aflw.sqlite"
conn = sqlite3.connect(sqlite_path)
cur = conn.cursor()
cur.execute("SELECT name FROM sqlite_master WHERE type='table'")
Tables = cur.fetchall()
for table in Tables:
table_name = table[0]
print(table_name)
cur.execute("SELECT * FROM {}".format(table_name))
col_name_list = [tuple[0] for tuple in cur.description]
print(col_name_list)

打印出来结果如下:

Faces
['face_id', 'file_id', 'db_id']
sqlite_sequence,FacePose,FaceImages,...,CamPose.
['name', 'seq']
FacePose
['face_id', 'roll', 'pitch', 'yaw', 'annot_type_id']
FaceImages
['image_id', 'db_id', 'file_id', 'filepath', 'bw', 'width', 'height']
Databases
['db_id', 'path', 'description']
FaceMetaData
['face_id', 'sex', 'occluded', 'glasses', 'bw', 'annot_type_id']
sqlite_stat1
['tbl', 'idx', 'stat']
FaceRect
['face_id', 'x', 'y', 'w', 'h', 'annot_type_id']
AnnotationType
['annot_type_id', 'description', 'CODE']
FaceEllipse
['face_id', 'x', 'y', 'ra', 'rb', 'theta', 'annot_type_id', 'upsidedown']
NearDuplicates
['face_id']
FeatureCoords
['face_id', 'feature_id', 'x', 'y', 'annot_type_id']
FeatureCoordTypes
['feature_id', 'descr', 'code', 'x', 'y', 'z']
CamPose
['face_id', 'camRoll', 'camPitch', 'camYaw', 'annot_type_id']

现在你可以发现,其实aflw.sqlite就是将Faces,sqlite_sequence,FacePose,FaceImages,...,CamPose这些表合起来放在一起,再存在一个轻量级的数据库中。既然是表,那很自然的我就想到了用pandas来处理数据。因为这些数据需要按需求按face_id合并。

path = "*/aflw.sqlite"
with sqlite3.connect(path) as con:
df_Faces = pd.read_sql_query("SELECT face_id,file_id FROM Faces", con)
df_sqlite_sequence = pd.read_sql_query("SELECT name,seq FROM sqlite_sequence", con)
df_FacePose = pd.read_sql_query("SELECT face_id,roll,pitch,yaw,annot_type_id FROM FacePose", con)
df_FaceImages = pd.read_sql_query("SELECT image_id, db_id, file_id, filepath, bw, width, height FROM FaceImages", con)
df_Database = pd.read_sql_query("SELECT db_id,path,description FROM Databases", con)
df_FaceMetaData = pd.read_sql_query("SELECT face_id, sex, occluded, glasses, bw, annot_type_id FROM FaceMetaData", con)
df_sqlite_stat1 = pd.read_sql_query("SELECT tbl,idx,stat FROM sqlite_stat1", con)
df_FaceRect = pd.read_sql_query("SELECT face_id,x,y,w,h,annot_type_id FROM FaceRect", con)
df_AnnotationType = pd.read_sql_query("SELECT annot_type_id, description,CODE FROM AnnotationType", con)
df_FaceEllipse = pd.read_sql_query("SELECT face_id,x,y,ra,rb,theta,annot_type_id,upsidedown FROM FaceEllipse", con)
df_NearDuplicates = pd.read_sql_query("SELECT face_id FROM NearDuplicates", con)
df_FeatureCoords = pd.read_sql_query("SELECT face_id,feature_id,x,y,annot_type_id FROM FeatureCoords", con)
df_FeatureCoordTypes = pd.read_sql_query("SELECT feature_id,descr,code,x,y,z FROM FeatureCoordTypes", con)

就这样,我们可以得到所有的表。其中人脸框坐标在df_FaceRect中,21点人脸关键点坐标在df_FeatureCoords中。具体的数据意义,可以参考该数据集的论文:Annotated Facial Landmarks in the Wild: A Large-scale, Real-world Database for Facial Landmark Localization。
下一步,就可以train自己的人脸关键点检测模型了。

AFLW如何获取你想要的21点人脸关键点数据的更多相关文章

  1. php根据地理坐标获取国家、省份、城市,及周边数据类

    功能:当App获取到用户的地理坐标时,可以根据坐标知道用户当前在那个国家.省份.城市,及周边有什么数据. 原理:基于百度Geocoding API 实现,需要先注册百度开发者,然后申请百度AK(密钥) ...

  2. php依据地理坐标获取国家、省份、城市,及周边数据类

    功能:当App获取到用户的地理坐标时,能够依据坐标知道用户当前在那个国家.省份.城市.及周边有什么数据. 原理:基于百度Geocoding API 实现.须要先注冊百度开发人员.然后申请百度AK(密钥 ...

  3. 用于获取或设置Web.config/*.exe.config中节点数据的辅助类

    1. 用于获取或设置Web.config/*.exe.config中节点数据的辅助类 /**//// <summary> /// 用于获取或设置Web.config/*.exe.confi ...

  4. hibernate 4.3 在使用获取数据获取不到数据库中最新变更的数据问题解决

    hibernate 4.3 在使用获取数据获取不到数据库中最新变更的数据问题解决,应该是因为缓存问题 问题过程和现象: 查询一个数据列表=>数据库中手动update了数据=>刷新页面,数据 ...

  5. C# -- 优先获取电脑C盘之外的磁盘来保存数据

    C# -- 优先获取电脑C盘之外的磁盘来保存数据 1. 优先获取电脑C盘之外的磁盘来保存数据.没有其他盘则使用C盘. public string GetSaveDataDiskPath() { str ...

  6. python调用tushare获取沪股通、深股通成份股数据

    接口:hs_const 描述:获取沪股通.深股通成分数据 注:tushare库下载和初始化教程,请查阅我之前的文章 输入参数 名称      |      类型      |      必选      ...

  7. 如何通过binlog获取我们想要的MySql语句?

    前言 MySql的binlog一般用于我们对数据的恢复,以及从数据库对主数据库的复制和更新. 假设此时我们有一个需要查询和读取Mysql最近操作DDL的信息,我们需要怎么处理? 聪明的你可能已经想到了 ...

  8. 如何获取自己想要模拟的APP的相关图片?

    一.首先打开iTunes APP,找到自己想要模拟实现的APP,并下载 二.找到下载的APP在iTunes中的位置 三.选中对应的APP,点击右键选择在Finder中显示,会打开对应的文件窗口,打开对 ...

  9. 百度地图sdk sha1秘钥获取有种想吐的赶脚

    撸代码坐的腰算背疼还只是弄一个不是项目里边需要的升级版本的so 日 需要sha1 指纹秘钥,还有项目包, 才能用百度地图sdk 这个找sha1  获取废了20分钟, 显示全盘找keytool.exe ...

随机推荐

  1. 分享我用Taker做任务时需要的各种资源的精华帖,方便查阅

    http://tieba.baidu.com/p/2310764470 第一名 [Tasker论坛] https://groups.google.com/group/tasker/?pli=1http ...

  2. 【转】2012年6月25 – 某欧美上市企业PHP工程师最新面试题

    笔试: 尼玛,连页眉页脚都是英文!不过都还能读懂.题目很简单.印象深刻的有几题. 具体题目忘了,主要知识点考点是,建立的视图,实现有自增字段. 答:之前还真没考虑过这个问题.当时条件发射,给了一个用户 ...

  3. Tomcat配置域名和虚拟文件夹

    说明: 我在本机中添加域名模拟,假设是主机直接配置也能够使用.我用的tomcat是apache-tomcat-7.0.42 本地添加域名 本文介绍怎样通过改动tomcat的配置.实现通过IP地址或者域 ...

  4. Spring Data JPA -1-CRUD入门

    1) 引入jar包支持 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  5. serverbash漏洞修补日记——2014/09/30

    近期bash漏洞在网上闹得沸沸扬扬的,我也修补一下.以防万一. 须要用到的命令: 查看操作系统版本号:cat /etc/issue 查看bash版本号:bash -version 查看操作系统是64位 ...

  6. easyui select 下拉框的取值和赋值

    1.取值 //拍卖管理中示例 function serializeForm(form) { var obj = { auclotType : $('#auclotType').val(), goods ...

  7. linux、mac的bash和zsh如何切换

    1.hostname 192-23-2-2 修改主机名字 2.chsh -s /bin/bash和chsh -s /bin/zsh可以永久切换,也就是一登录进来的就是相应的界面 bash/zsh命令是 ...

  8. Maven配置浅析

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  9. 【C/C++】Linux C,关于刷新printf输出问题

    直接描述吧:int i = 0;while(1){printf("now i = %d\r", i);fflush(stdout);i++;sleep(1);}我想在输出中不仅仅是 ...

  10. tcp/ip协议中的SYN, ACK的数值变化

    还需要论述一下seq.ack表示什么意思,应该以什么样的角度去理解这两个序列号. sequence number:表示的是我方(发送方)这边,这个packet的数据部分的第一位应该在整个data st ...