21 trained sklearn/CatBoost classifiers for acne severity classification (Grade I / II / III).
Part of the Acne CV Playground — an interactive web tool that walks through every pipeline stage from raw pixels to prediction, with live parameter sliders and a 42-dim feature inspector.
Model Description
Each model is a sklearn.pipeline.Pipeline of [StandardScaler → Classifier], trained on a 42-dimensional handcrafted feature vector extracted from face photos:
Group
Dims
Description
Structural
8
Lesion count, total area, intensity mean/std, area max/std, density, circularity
Multi-scale LBP
27
Uniform LBP histograms at radii R=1,2,3 (9 bins × 3 scales, last bin dropped)
GLCM Texture
3
Contrast, homogeneity, energy (4 angles, 64 levels, dissimilarity removed)
Global Redness
4
Mean + std of LAB a* and YCrCb Cr over all skin pixels
Preprocessing pipeline (OpenCV)
Resize to 512×512
CLAHE (clipLimit=3.0, tileGridSize=8×8) on grayscale
Haar cascade face detection — 4-attempt fallback chain (frontal default + alt2)
ROI mask — eyes, nose, lips blacked out via sub-cascades
Adaptive lesion thresholding — requires both Cr > thr_cr AND a* > thr_a simultaneously
Connected-component shape filtering — aspect ratio, fill ratio, local a* contrast
Training Data
Subset of the ACNE04 dataset — 3-class balanced split:
Split
acne1 (mild)
acne2 (moderate)
acne3 (severe)
Train
300
300
300
Test
218
61
34
Results (42-dim feature set, 3-class)
Rank
Model
Accuracy
Precision
Recall
F1
🥇 1
SGD Classifier
0.7542
0.7530
0.7542
0.7504
2
CatBoost
0.7318
0.7796
0.7318
0.7494
3
Calibrated Linear SVM
0.7486
0.7503
0.7486
0.7466
4
SVM (RBF)
0.7263
0.7605
0.7263
0.7399
5
LDA
0.7207
0.7615
0.7207
0.7371
6
Logistic Regression
0.7207
0.7588
0.7207
0.7360
7
MLP
0.7151
0.7558
0.7151
0.7301
8
Stacking Ensemble (top-5)
0.7151
0.7511
0.7151
0.7297
9
Ridge Classifier
0.7207
0.7309
0.7207
0.7233
10
KNN
0.7095
0.7394
0.7095
0.7222
11–21
(see Evaluation_Summary(42dim).txt)
Per-class note: acne2 (moderate) is the hardest class — best F1 only 0.456 (SVM RBF).
Severe acne3 best F1 0.553 (CatBoost). Full per-class rankings in the summary file.
scikit-learn==1.7.2 # must match training version exactly
catboost
joblib
numpy
opencv-python-headless
scikit-image
Limitations
Trained on ACNE04 (Asian skin tones, studio lighting). May underperform on other demographics or lighting conditions.
acne2 (moderate) classification is substantially weaker than acne1/acne3 — class imbalance in test set.
No CNN/deep features — intentionally classical for interpretability and the interactive playground.
Citation
If you use these models, please cite the ACNE04 dataset:
bibtex
1@inproceedings{wu2019joint,
2 title={Joint Acne Image Grading and Counting via Label Distribution Learning},
3 author={Wu, Xiaoping and Liang, Wen and Yu, Kezhou and Xu, Fei and Liang, Weiwei and others},
4 booktitle={ICCV},
5 year={2019}
6}