mn-DINO: [add description of the project later]
Project description
mn-DINO
Detecting micronuclei in images using DINOv2 backbone
Refer to tutorial notebook for real examples
Install package
pip install mndino
Load the model
import torch
from mndino import mnmodel
from huggingface_hub import hf_hub_download
model_path = hf_hub_download(repo_id="yifanren/mn-DINO", filename="mnDINO_v1.pth")
device = "cuda" if torch.cuda.is_available() else "cpu"
model = mnmodel.MicronucleiModel(device=device)
model.load(model_path)
Make predictions
import skimage
import numpy as np
STEP = 32 # recommended value
PREDICTION_BATCH = 4
THRESHOLD = 0.5
im = skimage.io.imread(your_image_path)
im = np.array((im - np.min(im))/(np.max(im) - np.min(im)), dtype="float32") # normalize image
probabilities = model.predict(im, stride=1, step=STEP, batch_size=PREDICTION_BATCH)
mn_predictions = probabilities[0,:,:] > THRESHOLD
nuclei_predictions = probabilities[1,:,:] > THRESHOLD
Evaluation
import skimage
from mndino import evaluation
mn_gt = skimage.io.imread(your_annotated_image_path)
precision, recall = evaluation.segmentation_report(predictions=mn_predictions, gt=mn_gt, intersection_ratio=0.1, wandb_mode=False)
Reproducing mndino Training & Evaluation Experiments
git clone git@github.com:CaicedoLab/micronuclei-detection.git
cd micronuclei-detection
Training
python3 training_model.py --path '/scr/data/annotated_mn_datasets/' --gpu 0 --epochs 20 --batch_size 4 --loss_fn 'combined' --lr 1e-5 --scale 1.0 --gaussian
Making Predictions on Test Set
python3 prediction.py --path '/scr/data/annotated_mn_datasets/' --test_set --gpu 0 --step 32 --batch_size 4 --prob_threshold 0.5 --iou_threshold 0.1 --scale 1
Turn on --test_set if user wants to evaluate on test set, turn it off to select validation set.
Turn on --wandb_mode if user wants to show loss on Weights and Biases
Train your own specialist model
- Expected file extension of training images and nuclei masks is
.tif, the corresponding training masks is.png. Following values are tunable if retraining on non-micronucleus subcellular datasets. - Combined loss = 0.8 * subcellular loss + 0.2 * nuclei loss.
device = f"cuda:{gpu}" if torch.cuda.is_available() else 'cpu'
model = mnmodel.MicronucleiModel(
device=device,
data_dir=DIRECTORY,
patch_size=256,
scale_factor=1.0,
gaussian=True,
oversample=False # oversample option is only applied to the micronuclei dataset presented in manuscript
)
model.train(epochs=20,
batch_size=4,
learning_rate=1e-5,
loss_fn='combined',
weight_decay=1e-6,
wandb_mode=False
)
model.save(outdir=OUTPUT_DIR, model_name=MODEL_NAME)
Reproducing Baseline experiments
MNFinder Evaluation
python3 mnfinder_prediction.py --test_path '/scr/data/annotated_mn_datasets/test/images/' --save_path '/scr/data/annotated_mn_datasets/mnfinder_predictions/' --wandb_mode
Cellpose Finetuned Evaluation
python3 cellpose_prediction.py --gpu 0 --train_path '/scr/data/annotated_mn_datasets/train/images/' --save_path '/scr/data/annotated_mn_datasets/cellpose_predictions/' --finetune --wandb_mode
Frozen microSAM backbone (better performance)
python3 microsam_prediction.py --gpu 0 --train_path '/scr/data/microsam_data/train/' --pred_path '/scr/data/annotated_mn_datasets/test/images/' --save_path '/scr/yren/microsam_data/microsam_predictions/' --frozen --wandb_mode
Retrain microSAM
python3 reformat_microsam_images.py --load_path '/scr/yren/annotated_mn_datasets/' --save_path '/scr/yren/microsam_data/'
python3 microsam_prediction.py --gpu 0 --train_path '/scr/data/microsam_data/train/' --pred_path '/scr/data/annotated_mn_datasets/test/images/' --save_path '/scr/yren/microsam_data/microsam_predictions/' --wandb_mode
Turn on --frozen if user wants to use frozen microSAM backbone to make predictions
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mndino-0.0.0.3.tar.gz.
File metadata
- Download URL: mndino-0.0.0.3.tar.gz
- Upload date:
- Size: 20.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c06950f8f8650ccd9f3c332f623383d5ed023f4c01c62901effa24659da8aed
|
|
| MD5 |
b5bb0eae6193878b2a4100c7f63ed0d6
|
|
| BLAKE2b-256 |
96506b77ffc68eaa3da591bb58d99f583ae42960fb4679810fc51aa5c470b311
|
File details
Details for the file mndino-0.0.0.3-py3-none-any.whl.
File metadata
- Download URL: mndino-0.0.0.3-py3-none-any.whl
- Upload date:
- Size: 22.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
760ced243566435d66208d15b5d63d6bfcea0aec1ac7c8ce69a07eb9a03e545d
|
|
| MD5 |
c6eec6158a049bdcc143226c480c01da
|
|
| BLAKE2b-256 |
6f45144f4084b09e156e768cc0c45a4a9fd0d946c093758b97f6c47dba5d2c6d
|