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自己的人臉關鍵點檢測模型了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM