Welcome to the fascinating world of real-time head pose estimation! In this article, we will guide you through the process of using ONNX Runtime and OpenCV for estimating human head pose. Ready to dive in?
How It Works
The process of head pose estimation consists of three major steps:
- Face Detection: A face detector generates a bounding box around a detected face. This box is then expanded and transformed into a square to meet the requirements of subsequent steps.
- Facial Landmark Detection: A pre-trained deep learning model takes the face image and outputs 68 facial landmarks.
- Pose Estimation: Using the 68 facial landmarks, the pose is calculated through a mutual PnP (Perspective-n-Point) algorithm.
Getting Started
Ready to set this up on your local machine? Follow these user-friendly instructions to get going:
Prerequisites
This code has been tested on Ubuntu 22.04 with the following frameworks:
- ONNX Runtime: 1.17.1
- OpenCV: 4.5.4
Installing
Start by cloning the repository:
git clone https://github.com/yinguobing/head-pose-estimation.git
Next, install the dependencies using:
pip install -r requirements.txt
Don’t forget to download the pre-trained models from the assets directory. You can do that with Git LFS:
git lfs pull
Alternatively, you can download them manually from the release page.
Running the Code
You can use either a video file or a webcam for video input. If no source is provided, the built-in webcam will be used by default.
Using a Video File
To estimate pose from a video file, run the following command:
python3 main.py --video pathtovideo.mp4
Using a Webcam
To utilize your webcam, specify the index:
python3 main.py --cam 0
Retraining the Model
Interested in retraining the model? Check out the tutorials available at yinguobing.com. You can find the training code at GitHub. (Note: PyTorch version coming soon!)
License and Authors
This project is licensed under the MIT License. For details, refer to the LICENSE file.
Developed by Yin Guobing.
Troubleshooting
If you run into any issues during installation or while running the code, here are a few troubleshooting tips:
- Check your framework versions. Ensure that your OpenCV and ONNX Runtime versions match the prerequisites outlined.
- Make sure the dependencies installed correctly. You might want to rerun the
pip install -r requirements.txtcommand. - For video input issues, verify that the video path is correct or try a different file format.
- If you’re encountering webcam issues, check if the index (0, 1, etc.) is correctly specified.
For more insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.
Conclusion
At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

