acusim: a synthetic dataset for cervicocranial acupuncture points localisation
Data files
Mar 28, 2025 version files 13.04 GB
-
acuSim.zip
13.04 GB
-
README.md
3.05 KB
Abstract
The locations of acupuncture points (acupoints) differ among human individuals due to variations in factors such as height, weight, and fat proportions. However, acupoint annotation is expert-dependent, labour-intensive, and highly expensive, which limits the data size and detection accuracy. In this paper, we introduce the "AcuSim" dataset as a new synthetic dataset for the task of localising points on the human cervicocranial area from an input image using an automatic render and labelling pipeline during acupuncture treatment. It includes the creation of 63,936 RGB-D images and 504 synthetic anatomical models with 174 volumetric acupoints annotated, to capture the variability and diversity of human anatomies. The study validates a convolutional neural network (CNN) on the proposed dataset with an accuracy of 99.73% and shows that 92.86% of predictions in the validation set align within a 5mm threshold of margin error when compared to expert-annotated data. This dataset addresses the limitations of prior datasets and can be applied to applications of acupoint detection and visualization, further advancing automation in Traditional Chinese Medicine (TCM).
Dryad DOI: https://doi.org/10.5061/dryad.zs7h44jkz
Dataset Overview
A multi-view acupuncture point dataset containing:
- 64x64, 128x128, 256x256, 512×512 and 1024x1024resolution RGB images
- Corresponding JSON annotations with:
- 2D/3D keypoint coordinates
- Visibility weights (0.9-1.0 scale)
- Meridian category indices
- Visibility masks
- 174 standard acupuncture points (map.txt)
- Occlusion handling implementation
Key Features
- Multi-view Rendering: Generated using Blender 3.5 with realistic occlusion simulation
- Structured Annotation:
- Default initialization for occluded points ([0.0, 0.0, 0.5])
- Meridian category preservation for occluded points
- Weighted visibility scoring
- ML-Ready Format: Preconfigured PyTorch DataLoader implementation
Dataset Structure
dataset_root/
├── map.txt # Complete list of 174 acupuncture points
├── train/
│ ├── image/img_512/ # Training images (*.png)
│ └── label/label/ # JSON annotations (*.json)
└── test/ # [Optional] Similar structure for testing
Quick Start
Dependencies
Python 3.10
PyTorch 2.0+
TensorFlow 2.60 (GPU recommended)
CUDA 12.4
cuDNN 9.5.0
blender 3.6.n LTS under python 3.10
Basic Usage
from acuSim_dataloader_modified import AcuPointsDataset, create_category_encoding
# Initialize dataset
dataset = AcuPointsDataset(
image_dir="path/to/images",
json_dir="path/to/labels",
target_size=(512, 512),
transform=transforms.Compose([
transforms.Resize((512, 512)),
transforms.ToTensor()
])
)
# Create DataLoader
train_loader = DataLoader(
dataset,
batch_size=32,
shuffle=True,
num_workers=4
)
Advanced Features
Key Components
Occlusion Handling:
- Preserves meridian category for occluded points
- Automatic mask generation (
create_mask()
) - Weighted visibility scores in JSON annotations
Code Availability
Script | Purpose | Requirements |
---|---|---|
script.py |
Blender rendering pipeline | Blender 3.5 |
xuewei5.py |
Visualization examples | Python 3.10 |
dataloader_modified.py |
PyTorch/TF data loading | TF 2.60+ |
occlusion_detection.py |
Occlusion generation | CUDA 12.4 |
Citation
Please cite our work when using this dataset:
Sun, Qilei; Ma, Jiatao; Craig, Paul et al. (2025). acusim: a synthetic dataset for cervicocranial acupuncture points localisation [Dataset]. Dryad. https://doi.org/10.5061/dryad.zs7h44jkz