300WLP、AFLW2000-3D、Biwi Kinect Head Pose Database姿态数据的读取

目前头部姿态估计算法使用的数据,一般是300WLP、AFLW2000、Biwi Kinect Head Pose Database

  • 300WLP共有数据122450张图片,其中AFW:5207 AFW_Flip:5207 HELEN:37676 HELEN_Flip:37676 IBUG:1786 IBUG_Flip:1786 LFPW:16556 LFPW_Flip:16556
  • AFLW2000共有2000张图片
  • Biwi Kinect Head Pose Database共有15678张图片

300WLP、AFLW2000真实标签的读取

300WLP数据有成对的图片(jpg)和标签组成的,标签都以mat形式保存的,里面包含了了【'__header__', '__version__', '__globals__', 'pt2d', 'roi', 'Illum_Para', 'Color_Para', 'Tex_Para', 'Shape_Para', 'Exp_Para', 'Pose_Para'】,AFLW2000类似

import h5py
from scipy.io import loadmat
import numpy as np
import math

if __name__ == "__main__":
    mat_path = "./300W_LP/AFW/AFW_134212_1_0.mat"
    c_mat = loadmat(mat_path)
    print(c_mat.keys())

    #人脸68个关键点
    landmarks = np.array(np.transpose(c_mat['pt2d'])).astype('float').reshape(-1, 2)
    print("landmarks \n", landmarks)
    
    #头部姿态角的俯仰、偏航和滚转角(以弧度的形式表示),并将弧度制转变为以度(°)为单位
    Pose_Para = c_mat['Pose_Para']
    pitch = Pose_Para[0][0] * 180 / math.pi
    yaw = Pose_Para[0][1] * 180 / math.pi
    roll = Pose_Para[0][2] * 180 / math.pi
    print("pitch: {} yaw: {} roll: {}".format(pitch, yaw, roll))

头部姿态输出:

pitch: -18.200389713407343 yaw: 26.86726114746613 roll: -8.615160925626265

300wlp数据集有68个关键点坐标

from scipy.io import loadmat
import cv2
import numpy as np
 
if __name__ == '__main__':
    imagepath = "/home/sunny/dataset/姿态开发/姿态估计_深度学习/300W_LP/AFW/AFW_134212_1_0.jpg"
    matpath = "/home/sunny/dataset/姿态开发/姿态估计_深度学习/300W_LP/AFW/AFW_134212_1_0.mat"

    img = cv2.imread(imagepath)

    c_mat = loadmat(matpath)
    print(c_mat.keys())
    print(c_mat['pt2d'])
    print(c_mat['pt2d'].shape)
 
    landmarks = np.array(np.transpose(c_mat['pt2d'])).astype(
    'float').reshape(-1, 2)
    
    for x, y in landmarks:

        x = int(x)
        y = int(y)
        cv2.circle(img, (x, y), 2, (0, 0, 255), 2)
 
    cv2.imshow('0', img)
    # cv2.imwrite("test.jpg", img)
    cv2.waitKey(0)

 

Biwi Kinect Head Pose Database数据读取

头部姿态估计的标签都保存在了txt文件中,

import numpy as np

def get_pose_angle(pose_path):
    pose_annot = open(pose_path, 'r')
    R = []
    for line in pose_annot:
                    line = line.strip('\n').split(' ')
                    L = []
                    if line[0] != '':
                        for nb in line:
                            if nb == '':
                                continue
                            L.append(float(nb))
                        R.append(L)

    R = np.array(R)
    T = R[3,:]
    R = R[:3,:]
    pose_annot.close()
    R = np.transpose(R) # 求矩阵的转置
    roll = -np.arctan2(R[1][0], R[0][0]) * 180 / np.pi
    yaw = -np.arctan2(-R[2][0], np.sqrt(R[2][1] ** 2 + R[2][2] ** 2)) * 180 / np.pi
    pitch = np.arctan2(R[2][1], R[2][2]) * 180 / np.pi
    return pitch, yaw, roll

if __name__ == '__main__':
    post_path = "./Biwi Kinect Head Pose Database/hpdb/01/frame_00036_pose.txt"
    pitch, yaw, roll = get_pose_angle(post_path)
    print("pitch:{} yaw:{} roll:{}".format(pitch, yaw, roll))

发现不少有问题的图片,如AFLW2000中image03714.jpg(pitch: -29.543809085066318 yaw: -11.260400983618409 roll: -29.381892620601995);image03282.jpg (pitch: 30.66166858048187 yaw: -77.87501653892568 roll: -31.465400845779367);

参考:

【Python】Python读取mat数据集(COFW,300WLP),解析后训练模型用_不会飞的鹰08的博客-CSDN博客

读取头部姿态数据集300W_LP、AFLW2000、BIWI数据集中的真值_福尔摩斯帅双的博客-CSDN博客

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
WLP在线学习系统可以通过课件发布共享MP4视频和PDF课件供学员在线学习,目前可支持多级课程分类,支持课程下多章节课时配置(当前仅支持H264编码的MP4视频在线播放和PDF在线播放)。 WLP在线学习系统功能: 本系统为在线学习系统,主要用来教学视频和课件发布,供用户在线学习 支持课件展示 :PDF课件、MP4课件(H264编码) -(当前只完成了课程在线学习部分,后续继续开发用户学习记录等功能) 软件架构: jdk7 maven spring4 spring-mvc4 hibernate4 bootstrap tomcat7 mysql WLP在线学习系统安装说明: 1、maven部署源码(主模块:WLP/src/wlp-web )编译顺序:wlp-api >wlp-core > wlp-parameter > wlp-report > wlp-authority > wlp-quartz > wlp-category > wlp-fqa > wlp-simpelfile > wlp-learn >wlp-tag >wlp-web 2、创建数据库,数据库脚本在 WLP/resource/sql/目录下 3、修改数据库配置文件 WLP/src/wlp-web/src/main/resources/jdbc.properties 4、修改附件存储地址 WLP/src/wlp-web/src/main/resources/WcpWebConfig.xml (修改参数“config.doc.dir”配置附件的存储路径) 5、项目编译后可直接部署于tomcat7,mysql5.x中运行,支持jdk7/jdk8,如要使用tomcat8及以上版本可能会有报错,请自行修正(所以建议第一次运行在tomcat7中) 注意事项: 建议tomcat7,tomcat8或以上版本可能会有报错,根据错误信息自行百度和修改,并不复杂 目前因为数据库方言的使用,只支持mysql,如果要切换数据库系统会有一些工作量,mysql要配置为大小写不敏感(linux环境下特别注意myslq默认大小写敏感) 请使用utf8字符集

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值