AFLW如何获取你想要的21点人脸关键点数据
目前人脸检测和人脸的关键点的数据库根据关键点个数: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点人脸关键点数据的更多相关文章
- php根据地理坐标获取国家、省份、城市,及周边数据类
功能:当App获取到用户的地理坐标时,可以根据坐标知道用户当前在那个国家.省份.城市,及周边有什么数据. 原理:基于百度Geocoding API 实现,需要先注册百度开发者,然后申请百度AK(密钥) ...
- php依据地理坐标获取国家、省份、城市,及周边数据类
功能:当App获取到用户的地理坐标时,能够依据坐标知道用户当前在那个国家.省份.城市.及周边有什么数据. 原理:基于百度Geocoding API 实现.须要先注冊百度开发人员.然后申请百度AK(密钥 ...
- 用于获取或设置Web.config/*.exe.config中节点数据的辅助类
1. 用于获取或设置Web.config/*.exe.config中节点数据的辅助类 /**//// <summary> /// 用于获取或设置Web.config/*.exe.confi ...
- hibernate 4.3 在使用获取数据获取不到数据库中最新变更的数据问题解决
hibernate 4.3 在使用获取数据获取不到数据库中最新变更的数据问题解决,应该是因为缓存问题 问题过程和现象: 查询一个数据列表=>数据库中手动update了数据=>刷新页面,数据 ...
- C# -- 优先获取电脑C盘之外的磁盘来保存数据
C# -- 优先获取电脑C盘之外的磁盘来保存数据 1. 优先获取电脑C盘之外的磁盘来保存数据.没有其他盘则使用C盘. public string GetSaveDataDiskPath() { str ...
- python调用tushare获取沪股通、深股通成份股数据
接口:hs_const 描述:获取沪股通.深股通成分数据 注:tushare库下载和初始化教程,请查阅我之前的文章 输入参数 名称 | 类型 | 必选 ...
- 如何通过binlog获取我们想要的MySql语句?
前言 MySql的binlog一般用于我们对数据的恢复,以及从数据库对主数据库的复制和更新. 假设此时我们有一个需要查询和读取Mysql最近操作DDL的信息,我们需要怎么处理? 聪明的你可能已经想到了 ...
- 如何获取自己想要模拟的APP的相关图片?
一.首先打开iTunes APP,找到自己想要模拟实现的APP,并下载 二.找到下载的APP在iTunes中的位置 三.选中对应的APP,点击右键选择在Finder中显示,会打开对应的文件窗口,打开对 ...
- 百度地图sdk sha1秘钥获取有种想吐的赶脚
撸代码坐的腰算背疼还只是弄一个不是项目里边需要的升级版本的so 日 需要sha1 指纹秘钥,还有项目包, 才能用百度地图sdk 这个找sha1 获取废了20分钟, 显示全盘找keytool.exe ...
随机推荐
- 微信小程序背景音频播放分享功能
如果正常背景音频播放的话,只能跳转到自己对应的微信小程序,无法分享朋友圈,我们需要设置分享朋友圈,需要调用一个API 音频背景播放 注意:背景播放在锁屏后播放只支持IOS端,安卓端虽然可以播放,但是锁 ...
- nodejs中间件拦截,express不登录无法进入后台页面
22.设置拦截 只有登录才能进入到后台页面,不登录无法进入 如果登陆成功, 写入session, 参数 uid uid=123dsfjksldfjsl 检测登陆, 请求中 session 是否包含 u ...
- Java Web----Java Web的数据库操作(三)
Java Web的数据库操作 前面介绍了JDBC技术和JDBC API及API的使用示例,下面详细介绍JDBC在Web中的应用. Java Web----Java Web的数据库操作(一) Java ...
- layer弹框,弹出后自动关闭
今天做项目,出现一个问题,需求是用ajax做文件上传功能,代码写好之后,测试发现问题. 弹出层出现以后我没有主动点击确定和关闭等操作,程序自动关闭了弹出层 一步一步排查,找到了错误,首先,先确认你页面 ...
- ios开发中object-c中UTF-8 和 GBK 的 NSString 相互转化的方法
应用都要遇到一个很头疼的问题:文字编码,汉字的 GBK 和 国际通用的 UTF-8 的互相转化稍一不慎, 就会满屏乱码.下面介绍 UTF-8 和 GBK 的 NSString 相互转化的方法 NS ...
- head first---------facade design pattern
head first----------外观模式或者门面模式 外观模式又名门面模式:提供了一个统一的接口,用来访问子系统中的一群接口.外观模式定义了一个高层接口,从而让子系统更容易使用 ...
- Asp.Net Session的三种方法及Web.Config设置
转载:http://user.gw-ec.com/login/safelog/redirectt?session=so%2f%2bSjyZURMOe54xgk%2bUhL2CgGqDjOKEbYwZS ...
- HTTP Error 404.2 - Not Found The page you are requesting cannot be served because of the ISAPI and CGI Restriction list settings on the Web server(转)
今天公司的同事問我,為什麼同一支程式在自己的電腦OK,部署到Server上會出現下面的錯誤 我想,沒有錯啊~ 我在這台Server所部署的程式一向都是OK的 看了錯誤的Error page, 發現是I ...
- 结构体序列为JSON
结构体序列为JSON 本例运行效果图: uses SynCommons; const /// JSON字符串 JSON1 = '{' + #13#10 + '"glossary": ...
- android新组件RecyclerView使用介绍和进阶使用,替用Gallery
简介: RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,但是直接把viewholder的实现封装起来,用 ...