This project demonstrates human pose estimation on CCTV surveillance footage using the YOLOv8 Pose model. The model detects people and predicts body keypoints and skeleton connections, enabling visual analysis of human movement in surveillance videos.
The project was trained on a CCTV shoplifting dataset containing annotated human poses and performs pose estimation on previously unseen images and videos. It provides a strong foundation for applications such as behaviour analysis, activity recognition, intelligent surveillance, and future shoplifting detection systems.
The animation below shows the trained model performing human pose estimation on CCTV footage.
- Human pose estimation using YOLOv8 Pose
- Detects multiple people in CCTV footage
- Predicts body keypoints and skeleton connections
- Supports image and video inference
- Generates annotated prediction images and videos
- Includes an animated demonstration and sample predictions
| Item | Value |
|---|---|
| Total Images | 456 |
| Annotated People | 771 |
| Training Images | 319 |
| Validation Images | 91 |
| Test Images | 46 |
| Parameter | Value |
|---|---|
| Model | YOLOv8n Pose |
| Framework | Ultralytics YOLOv8 |
| Epochs | 50 |
| Image Size | 640 × 640 |
| Batch Size | 8 |
| Device | CPU |
The trained model successfully predicts human body keypoints and skeleton connections on CCTV surveillance footage. Prediction outputs include annotated images, annotated videos, and the animated GIF shown above.
| Sample 1 | Sample 2 |
|---|---|
![]() |
![]() |
| Sample 3 | Sample 4 |
|---|---|
![]() |
![]() |
cctv-human-pose-estimation/
├── assets/
│ ├── demo.gif
│ ├── sample1.jpg
│ ├── sample2.jpg
│ ├── sample3.jpg
│ └── sample4.jpg
├── data/
├── models/
│ └── best.pt
├── outputs/
├── reports/
├── scripts/
├── videos/
├── README.md
├── requirements.txt
└── LICENSE
Clone the repository:
git clone https://github.com/only1jamjam-ctrl/cctv-human-pose-estimation.git
cd cctv-human-pose-estimationCreate and activate a virtual environment.
python -m venv pose-env
source pose-env/Scripts/activateInstall the required packages.
pip install -r requirements.txtRun pose estimation on a video:
yolo pose predict model=models/best.pt source=videos/shoplifting1.mp4 save=TrueRun pose estimation on images:
yolo pose predict model=models/best.pt source=data/test/images save=True- Python
- Ultralytics YOLOv8
- PyTorch
- OpenCV
- NumPy
- Pillow
- ImageIO
- Real-time webcam inference
- Multi-person tracking
- Behaviour recognition
- Shoplifting activity classification
- Edge device deployment
- Web application interface
This project is licensed under the MIT License.
Jamila Ahmed




