项目介绍:Head Pose Estimation
Head Pose Estimation 是一个实时人头姿态估计项目,使用 ONNX Runtime 和 OpenCV 实现。
项目运作方式
Head Pose Estimation 项目通过三个主要步骤来实现人头姿态的估计:
-
人脸检测:首先使用人脸检测器来提供包含人脸的边界框。这个边界框将被扩展并转化为方形,以更好地适应后续步骤的需求。
-
面部特征点检测:使用预训练的深度学习模型从人脸图像中检测并输出 68 个面部特征点。
-
姿态估计:获取面部特征点后,通过一个 PN(平面定位)算法来计算头部姿态。
快速开始
以下是如何在本地机器上获取项目副本并使其运行,用于开发和测试目的的说明。
前置条件
该项目代码在 Ubuntu 22.04 上测试,通过以下框架实现:
- ONNX Runtime: 1.17.1
- OpenCV: 4.5.4
安装步骤
-
克隆代码仓库:
git clone https://github.com/yinguobing/head-pose-estimation.git
-
使用 pip 安装依赖:
pip install -r requirements.txt
-
预训练模型已在
assets
目录提供。可以使用 Git LFS 下载:git lfs pull
或者,从项目的发行页面手动下载。
运行项目
运行项目时,需要通过参数指定视频文件或网络摄像头索引。如果未提供数据源,默认为内置网络摄像头。
视频文件运行
对于任何 OpenCV 支持的视频格式(如 mp4
, avi
等),运行以下命令:
python3 main.py --video /path/to/video.mp4
使用网络摄像头
提供网络摄像头索引来运行:
python3 main.py --cam 0
重训练模型
项目提供了相关教程和训练代码,用户可以参考以下地址:
- 教程链接可在项目文档中找到。
- 训练代码在
https://github.com/yinguobing/cnn-facial-landmark
。
请注意,PyTorch 版本即将推出!
项目授权
此项目在 MIT 许可证下授权。面部检测使用了 InsightFace 的 SCRFD 技术,预训练模型文件使用了不同的公开数据集,并遵循各自的许可协议。
项目作者
该项目由尹国冰(Yin Guobing)开发,更多信息可在他们的个人网站查看。
致谢
在项目训练中使用了多个数据集,例如 300-W, 300-VW, LFPW, HELEN, AFW 和 IBUG。此外,项目中的3D 人脸模型来源于 OpenFace。
Head Pose Estimation 项目充分利用了现有的技术和资源,以实现更加高效的姿态估计,同时提供了友好的使用和开发环境。无论是开发者还是研究人员,皆可从此项目中受益。