Knee Bone & Cartilage Segmentation Models
This repository contains Random Forest models for segmentation of knee bone and cartilage from 3D MRI, trained on the downsampled OAI dataset.
These models were trained using the kneeseg library: https://github.com/wq2012/kneeseg.
Model Details
- Architecture: Dense Auto-Context Random Forest (Bone), Semantic Context Forest (Cartilage).
- Resolution: Trained on downsampled images (140x140x112).
- Labels:
1: Femur2: Femoral Cartilage3: Tibia4: Tibial Cartilage5: Patella6: Patellar Cartilage
Dataset
Original dataset
The original dataset is from Osteoarthritis Initiative (OAI). It contains 176 3D MRI images, each with 160x384x384 voxels, and 0.7x0.364x0.364 resolution.
Downsampling
All images have been downsampled to 112x140x140 voxels, with 1x1x1 resolution.
Filtering
We removed images that does not have ground truth labels for any of the 3 bones and 3 cartilages. This results in 159 images remaining.
The removed images are:
[
"image-9172459_V01.mhd",
"image-9674570_V01.mhd",
"image-9867284_V00.mhd",
"image-9905863_V01.mhd",
"image-9884303_V00.mhd",
"image-9352883_V00.mhd",
"image-9968924_V01.mhd",
"image-9965231_V01.mhd",
"image-9905863_V00.mhd",
"image-9992358_V00.mhd",
"image-9382271_V00.mhd",
"image-9607698_V00.mhd",
"image-9599539_V01.mhd",
"image-9352437_V00.mhd",
"image-9352437_V01.mhd",
"image-9382271_V01.mhd",
"image-9674570_V00.mhd"
]
Train-Eval Split
After downsampling and filtering, we performed a 80%-20% split,
using 128 images for training, and 31 images for evaluation. See
oai_split.json for the split.
Performance (DSC)
Evaluated on 31 held-out test cases:
| Structure | Dice Score (Mean ± Std) |
|---|---|
| Femur | 0.7130 ± 0.0673 |
| Tibia | 0.7545 ± 0.0598 |
| Patella | 0.5209 ± 0.0831 |
| FemCart | 0.5171 ± 0.0716 |
| TibCart | 0.4134 ± 0.0888 |
| PatCart | 0.3633 ± 0.1406 |
Usage
Load these models using the kneeseg library:
from kneeseg.bone_rf import BoneClassifier
from kneeseg.rf_seg import CartilageClassifier
# Pass 1 Models
bone_p1 = BoneClassifier()
bone_p1.load("bone_rf_p1.joblib")
cart_p1 = CartilageClassifier()
cart_p1.load("cartilage_rf_p1.joblib")
# Pass 2 Models
bone_p2 = BoneClassifier()
bone_p2.load("bone_rf_p2.joblib")
cart_p2 = CartilageClassifier()
cart_p2.load("cartilage_rf_p2.joblib")
Citation
Plain Text:
Quan Wang, Dijia Wu, Le Lu, Meizhu Liu, Kim L. Boyer, and Shaohua Kevin Zhou. "Semantic Context Forests for Learning-Based Knee Cartilage Segmentation in 3D MR Images." MICCAI 2013: Workshop on Medical Computer Vision.
Quan Wang. Exploiting Geometric and Spatial Constraints for Vision and Lighting Applications. Ph.D. dissertation, Rensselaer Polytechnic Institute, 2014.
BibTeX:
@inproceedings{wang2013semantic,
title={Semantic context forests for learning-based knee cartilage segmentation in 3D MR images},
author={Wang, Quan and Wu, Dijia and Lu, Le and Liu, Meizhu and Boyer, Kim L and Zhou, Shaohua Kevin},
booktitle={International MICCAI Workshop on Medical Computer Vision},
pages={105--115},
year={2013},
organization={Springer}
}
@phdthesis{wang2014exploiting,
title={Exploiting Geometric and Spatial Constraints for Vision and Lighting Applications},
author={Quan Wang},
year={2014},
school={Rensselaer Polytechnic Institute},
}