The OpenThermalPose dataset provides 6,090 images of 31 subjects and 14,315 annotated human instances. Annotations include bounding boxes and 17 anatomical keypoints, following the conventions used in the benchmark MS COCO Keypoint dataset. The dataset covers various fitness exercises, multiple-person activities, and outdoor walking in different locations under different weather conditions. As a baseline, we trained and evaluated the YOLOv8-pose models (nano, small, medium, large, and x-large) on this dataset.
- Preprint on TechRxiv
- Published on IEEE
- Download the dataset
- Download the pre-trained YOLOv8-pose models
We extended our OpenThermalPose dataset with more data, subjects, and poses. The new OpenThermalPose2 dataset contains 11,391 images of 170 subjects and 21,125 annotated human instances. The dataset covers various fitness exercises, multiple-person activities, persons sitting in an indoor environment, and persons walking in outdoor locations under different weather conditions. We trained and evaluated the YOLOv8-pose and YOLO11-pose models (nano, small, medium, large, and x-large) on this dataset.
- Preprint on TechRxiv
- Download the dataset
- Download the pre-trained YOLOv8-pose and YOLO11-pose models
We trained and evaluated the YOLOv8-pose and YOLO11-pose models (nano, small, medium, large, and x-large) on our datasets. For more information about training, validation, and running of these models, please visit Ultralytics Docs.
pip install ultralytics
from ultralytics import YOLO
# Load a model
# you can choose any version of yolov8-pose/yolo11-pose
model = YOLO('yolov8n-pose.yaml') # build a new model from YAML
model = YOLO('yolov8n-pose.pt') # load a pretrained model (recommended for training)
model = YOLO('yolov8n-pose.yaml').load('yolov8n-pose.pt') # build from YAML and transfer weights
# Train the model
results = model.train(data='open_thermal_pose.yaml', epochs=100, imgsz=640)
from ultralytics import YOLO
# Load a model
# you can choose any version of yolov8-pose/yolo11-pose
model = YOLO('yolov8n-pose.pt') # load an official model
model = YOLO('path/to/best.pt') # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # a list contains map50-95 of each category
from ultralytics import YOLO
import cv2
# Load a model (.pt)
# you can choose any pre-trained yolov8-pose/yolo11-pose
model = YOLO('path/to/model')
# Load an image
image = cv2.imread('path/to/image')
# Predict with the model
results = model.predict(image, save=True)
Please cite our work if you use our datasets/pre-trained models in your research.
@INPROCEEDINGS{10581992,
author={Kuzdeuov, Askat and Taratynova, Darya and Tleuliyev, Alim and Varol, Huseyin Atakan},
booktitle={2024 IEEE 18th International Conference on Automatic Face and Gesture Recognition (FG)},
title={OpenThermalPose: An Open-Source Annotated Thermal Human Pose Dataset and Initial YOLOv8-Pose Baselines},
year={2024},
volume={},
number={},
pages={1-8},
keywords={Privacy;Annotations;Source coding;Pose estimation;Lighting;Medical services;Motion capture},
doi={10.1109/FG59268.2024.10581992}}
Askat Kuzdeuov, Miras Zakaryanov, Alim Tleuliyev, and Huseyin Atakan Varol. OpenThermalPose2: Extending the Open-Source Annotated Thermal Human Pose Dataset With More Data, Subjects, and Poses. TechRxiv. October 18, 2024, DOI: 10.36227/techrxiv.172926774.47783447/v1.