cerberus-neuro: cell-type classifier (v0)
Brightfield-only 4-class cell-type classifier on the Broad NeuroPainting Cell Painting dataset. Part of the cerberus-neuro project, which trains task-specific models on a shared ResNet34 architecture for cell-type classification, organelle soft-segmentation, and disease-state classification.
This is the cell-type single-task model, shipped as Phase 0.5 of the v0 plan. The encoder is initialized from ImageNet1K_V1 weights with conv1 adapted to 1-channel brightfield input via mean-across-RGB-channels. Trained end-to-end with discriminative learning rates.
Inputs
- 1-channel brightfield image, 256x256, 16-bit normalized to [0, 1]
Outputs
4-class softmax over {0: stem (iPSC), 1: progen (NPC), 2: neuron, 3: astro (astrocyte)}.
Validation results
Best-epoch validation accuracy: 0.9905 (epoch 4). Trained for 5 epochs on the v0 16k-crop subset (48 wells per cell type, 9 sites per well, top-12 cell-rich tiles per site, well-level 80/20 train/val split).
| epoch | train_loss | train_acc | val_loss | val_acc |
|---|---|---|---|---|
| 0 | 0.4545 | 0.8220 | 0.0981 | 0.9651 |
| 1 | 0.2157 | 0.9249 | 0.2085 | 0.9286 |
| 2 | 0.1640 | 0.9494 | 0.1329 | 0.9553 |
| 3 | 0.1238 | 0.9602 | 0.0448 | 0.9795 |
| 4 | 0.1165 | 0.9623 | 0.0256 | 0.9905 |
Training recipe
- ResNet34 encoder, ImageNet1K_V1 pretrained, conv1 adapted for 1-channel input via mean-across-RGB.
- ClassifierHead: AdaptiveAvgPool2d -> Linear(512, 4).
- AdamW, encoder LR
3e-5, head LR3e-4(discriminative, 0.1x ratio). - Cosine annealing over total_steps; AMP autocast + GradScaler; gradient norm clip at 1.0.
- Batch size 64, num_workers 8, prefetch_factor 4.
- D4 dihedral augmentation (rotation x flip) applied identically across all 6 channels per crop.
- Cell-aware tile selection: top-12 256x256 patches per site by CellProfiler centroid count.
Loading
import torch
from huggingface_hub import hf_hub_download
from cerberus_neuro.model import CellTypeOnlyModel
ckpt_path = hf_hub_download('patrickjreed/cerberus-neuro-cell-type-v0', 'best.pt')
ckpt = torch.load(ckpt_path, map_location='cpu', weights_only=False)
model = CellTypeOnlyModel(in_channels=1, n_classes=4, pretrained_encoder=False)
model.load_state_dict(ckpt['model'])
model.eval()
Limitations
- Trained on Broad NeuroPainting only (cpg0038); may not transfer to other Cell Painting protocols without fine-tuning.
- Trained on 20x acquisition; behavior on 63x is not characterized.
- Data subset is 48 wells per cell type — strong validation but not exhaustive across the full cohort.
- 4-way classification only; does not predict disease state or fluorescence.
Citation and related work
- Tegtmeyer et al., Nat Commun (2025), 10.1038/s41467-025-61547-x. The NeuroPainting dataset.
- Lyu, Alonso, Pinto. Cerberus: A Multi-headed Network for Brain Tumor Segmentation, BrainLes 2020. The shared-encoder + multi-head architectural pattern this model is part of.
License
MIT.