Predict hemoglobin (Hb) from blood-drop slide images using deep learning.
Supports regression (Hb value) and WHO anemia classification (6 classes).
hb-cnn/
├─ data/
│ ├─ raw/ # original images (cell types)
│ ├─ bloodcell_pretrain/ # pretraining dataset
│ ├─ slide_raw/ # your blood-drop images
│ ├─ images/ # cropped & normalized ROIs
│ └─ manifest.csv
├─ src/
│ ├─ data/
│ │ ├─ ingest_pretrain.py
│ │ ├─ preprocess.py
│ │ └─ dataset.py
│ ├─ train/
│ │ ├─ pretrain.py
│ │ └─ finetune.py
│ ├─ eval/
│ │ ├─ evaluate.py
│ │ └─ fairness_checks.py
│ ├─ export/
│ │ └─ export_onnx.py
│ └─ deploy/
│ └─ serve.py
├─ experiments/
├─ docs/
│ ├─ protocol.md
│ ├─ model_card.md
│ └─ benchmark_report.md
├─ requirements.txt
└─ README.md
- Create virtual environment:
python -m venv .venv
.\.venv\Scripts\Activate.ps1 # Windows
# source .venv/bin/activate # Linux/macOS- Install dependencies:
pip install -r requirements.txt- Prepare datasets:
- Place raw blood-cell images in
data/raw/ - Place your slide images in
data/slide_raw/ - Run ingestion & preprocessing:
python src/data/ingest_pretrain.py --raw_dir data/raw --out_dir data/bloodcell_pretrain --size 224
python src/data/preprocess.py --raw data/slide_raw --out data/images --manifest data/manifest.csv- Pretrain backbone:
python src/train/pretrain.py --data data/bloodcell_pretrain --epochs 30 --out experiments/pretrain- Fine-tune on slide images:
python src/train/finetune.py --manifest data/manifest.csv --imgroot data/images --epochs 60 --out experiments/finetunepython src/eval/evaluate.py --manifest data/manifest.csv --imgroot data/images --checkpoint experiments/finetune/best_finetune.pthpython src/export/export_onnx.py --checkpoint experiments/finetune/best_finetune.pth --out models/hbnet.onnxuvicorn src.deploy.serve:app --reload --port 8000Test:
curl -X POST "http://127.0.0.1:8000/predict" -F "file=@slide_image.jpg"- Predict Hb (g/dL) from slide images
- WHO anemia classification (4 classes)
- ONNX quantized model < 100MB, latency ≤ 800ms on mobile CPU
- Regression MAE ≤ 1.5 g/dL, WHO class accuracy ≥ 85%