--- license: mit tags: - biology - plant-biology - microscopy - image-segmentation - cell-type-classification - cellpose - dinov2 library_name: rootscope pipeline_tag: image-classification --- # RootScope: Cross-species Root Cell-Type Classification from Confocal Microscopy Images Trained model weights for **[RootScope](https://github.com/ct-tranchau/Rootscope)**. RootScope takes a raw confocal root-tip cross-section TIFF, segments every cell with **Cellpose-SAM**, describes each cell with hand-crafted morpho-topological features plus fine-tuned **DINOv2** embeddings, and classifies it into one of nine anatomical cell types using an iterative tree-based ensemble. ## Install ```bash git clone https://github.com/ct-tranchau/Rootscope.git cd Rootscope conda env create -f environment.yml conda activate rootscope pip install . ``` ## Run ```bash rootscope --tif my_image.tif --out results/ ``` `results/` gets a per-cell CSV and a labeled overlay PNG, per model plus the ensemble. Or from Python: ```python from rootscope import predict_tif df = predict_tif("my_image.tif", out_dir="results/") ``` ## Cell types `root_cap` · `epidermis` · `exodermis` · `cortex` · `endodermis` · `pericycle` · `stele` · `xylem` · `phloem` ## Files | File | Size | |------|------| | `model_RandomForest.joblib` | 349 MB | | `backbone.pt` (fine-tuned DINOv2) | 88 MB | | `model_LightGBM.joblib` | 29 MB | | `model_XGBoost.joblib` | 14 MB | | scalers, feature columns, label encoder | small | ## Performance Held-out test accuracy, 480 features, 9 classes: | Model | Test | |-------|------| | LightGBM | **0.965** | | XGBoost | 0.959 | | RandomForest | 0.937 | Inference: ~1.5–3 min per image on a single GPU. ## Notes - Set `--um-per-px` to your image's real scale — it is not auto-detected, and the default of 1.0 distorts every size feature. - Input must be a raw image, not a segmentation mask. - CPU works but is far slower (~15–30 min per image). - `scikit-learn` is pinned to 1.7.2, the version these models were saved with. ## Contact tnchau@vt.edu