Camilo Laiton
commited on
Commit
·
77ffef6
1
Parent(s):
0fd5655
updating readme and aind model metadata
Browse files- README.md +87 -0
- model.json +89 -0
README.md
CHANGED
@@ -1,3 +1,90 @@
|
|
1 |
---
|
2 |
license: cc-by-4.0
|
3 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
---
|
2 |
license: cc-by-4.0
|
3 |
---
|
4 |
+
---
|
5 |
+
license: mit
|
6 |
+
language:
|
7 |
+
- en
|
8 |
+
tags:
|
9 |
+
- segmentation
|
10 |
+
- microscopy
|
11 |
+
- tissue
|
12 |
+
---
|
13 |
+
# aind-brain-tissue-segmentation
|
14 |
+
|
15 |
+
<p align="center">
|
16 |
+
<img src="https://allenneuraldynamics.github.io/assets/img/AIND_logo.png" width="400"/>
|
17 |
+
<p>
|
18 |
+
|
19 |
+
<p align="center">
|
20 |
+
<a href=""><b>AIND</b></a>    |    🖥️ <a href="https://github.com/AllenNeuralDynamics/aind-brain-segmentation">GitHub</a>    |   🤗 <a href="https://huggingface.co/AllenInstitute">Hugging Face</a>   |   🤖 <a href="https://www.allenneuraldynamics.org/">Allen Institute for Neural Dynamics</a>  
|
21 |
+
<br>
|
22 |
+
|
23 |
+
-----
|
24 |
+
|
25 |
+
[**Brain Tissue Segmentation - Lightsheet Microscopy**]() <be>
|
26 |
+
|
27 |
+
In this repository, we present a tool for fast brain tissue segmentation in lightsheet microscopy. This model was trained in entire 2D slices of data coming from our SmartSPIM Lightsheet Microscopes. We used a downsampled resolution corresponding to 14.4 microns in XY and 16.0 microns in Z that then were resized to 1024x1024.
|
28 |
+
|
29 |
+
We also provide a script that perform fast inference in entire brains stored in OMEZarr format.
|
30 |
+
|
31 |
+
|
32 |
+
## Brain Segmentation Examples
|
33 |
+
|
34 |
+
<a href="https://github.com/user-attachments/assets/1021a3a3-cfa1-460c-b1d7-29746ecf764c">Video Sample 771602</a>
|
35 |
+
|
36 |
+
<a href="https://github.com/user-attachments/assets/66ec0a36-6798-4081-98e4-b6e744355e99">Video Sample 782499</a>
|
37 |
+
|
38 |
+
## 📑 Todo List
|
39 |
+
- [ ] Multi-channel segmentation.
|
40 |
+
- [ ] Generalization to other microscopes. E.g., (ExASPIM, TissueCyte)
|
41 |
+
|
42 |
+
|
43 |
+
## Inference
|
44 |
+
|
45 |
+
It supports two processing modes:
|
46 |
+
1. **Lazy segmentation**: For large datasets that cannot fit into memory, images are resized to **1024x1024**, normalized, segmented, upsampled, and stored in a Zarr format.
|
47 |
+
2. **In-memory segmentation**: For smaller datasets, a multiscale version is loaded into memory for processing.
|
48 |
+
|
49 |
+
The model was trained with a resolution of **14.4 microns in XY** and **16 microns in Z**.
|
50 |
+
|
51 |
+
<a href="https://github.com/AllenNeuralDynamics/aind-brain-segmentation/blob/main/code/large_scale_mask_prediction.py">Whole-brain segmentation script</a>
|
52 |
+
|
53 |
+
|
54 |
+
```
|
55 |
+
python large_scale_mask_prediction.py --input_path path/to/your/image.zarr
|
56 |
+
```
|
57 |
+
|
58 |
+
## Input Parameters
|
59 |
+
| Parameter | Description |
|
60 |
+
|-----------|-------------|
|
61 |
+
| `image_path` | Path to the OME-Zarr dataset (local or S3). Example: `s3://bucket/SmartSPIM_Dataset/Ex_639_Em_667.zarr` |
|
62 |
+
| `model_path` | Path to the trained segmentation model. |
|
63 |
+
| `output_folder` | Directory where results will be saved. |
|
64 |
+
| `target_size_mb` | Memory allocation target for large-scale predictions. |
|
65 |
+
| `n_workers` | Number of workers for PyTorch DataLoader. |
|
66 |
+
| `super_chunksize` | Data shard size for optimized cloud communication. |
|
67 |
+
| `scale` | Name of the multiscale dataset to use for segmentation. |
|
68 |
+
| `scratch_folder` | Path for temporary files (Raw data). |
|
69 |
+
| `image_height` | Resize height for segmentation (Default: `1024`). |
|
70 |
+
| `image_width` | Resize width for segmentation (Default: `1024`). |
|
71 |
+
| `prob_threshold` | Probability threshold for segmentation mask generation. |
|
72 |
+
|
73 |
+
## Outputs
|
74 |
+
| Output File | Description |
|
75 |
+
|-------------|-------------|
|
76 |
+
| `probabilities.zarr` | Zarr dataset containing segmentation probabilities (useful for post-processing). |
|
77 |
+
| `segmentation_mask.zarr` | Segmentation mask in the original image space (before resizing). |
|
78 |
+
| `data.zarr` | Raw input data used for segmentation (optional). |
|
79 |
+
|
80 |
+
#### Installation
|
81 |
+
Clone the repo:
|
82 |
+
```
|
83 |
+
git clone https://github.com/AllenNeuralDynamics/aind-brain-segmentation
|
84 |
+
cd aind-brain-segmentation
|
85 |
+
```
|
86 |
+
|
87 |
+
Install dependencies:
|
88 |
+
```
|
89 |
+
docker build -t brain_seg -f Dockerfile .
|
90 |
+
```
|
model.json
ADDED
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"describedBy": "https://raw.githubusercontent.com/AllenNeuralDynamics/aind-data-schema/main/src/aind_data_schema/core/model.py",
|
3 |
+
"schema_version": "0.0.1",
|
4 |
+
"name": "smartspim_tissue_segmentation.ckpt",
|
5 |
+
"license": "CC-BY-4.0",
|
6 |
+
"developer_full_name": [
|
7 |
+
"Camilo Laiton"
|
8 |
+
],
|
9 |
+
"developer_institution": {
|
10 |
+
"name": "Allen Institute for Neural Dynamics",
|
11 |
+
"abbreviation": "AIND",
|
12 |
+
"registry": {
|
13 |
+
"name": "Research Organization Registry",
|
14 |
+
"abbreviation": "ROR"
|
15 |
+
},
|
16 |
+
"registry_identifier": "04szwah67"
|
17 |
+
},
|
18 |
+
"modality": [
|
19 |
+
{
|
20 |
+
"name": "Selective plane illumination microscopy",
|
21 |
+
"abbreviation": "SPIM"
|
22 |
+
}
|
23 |
+
],
|
24 |
+
"architecture": {
|
25 |
+
"backbone": "UNet",
|
26 |
+
"software": [
|
27 |
+
{
|
28 |
+
"name": "lightning",
|
29 |
+
"version": "2.5.0.post0",
|
30 |
+
"url": null,
|
31 |
+
"parameters": {}
|
32 |
+
}
|
33 |
+
],
|
34 |
+
"layers": null,
|
35 |
+
"parameters": {
|
36 |
+
"image_width": 1024,
|
37 |
+
"image_height": 1024
|
38 |
+
},
|
39 |
+
"notes": null
|
40 |
+
},
|
41 |
+
"intended_use": "2D tissue segmentation from SmartSPIM datasets",
|
42 |
+
"limitations": "Only trained on 639 channel using a resolution",
|
43 |
+
"pretrained_source_url": null,
|
44 |
+
"training": [
|
45 |
+
{
|
46 |
+
"name": "Model training",
|
47 |
+
"software_version": null,
|
48 |
+
"start_date_time": "2025-03-01T12:00:00-08:00",
|
49 |
+
"end_date_time": "2025-03-01T14:00:00-08:00",
|
50 |
+
"input_location": [
|
51 |
+
"s3://aind-msma-morphology-data/test_data/SmartSPIM/brain_segmentation_2d_allaxis_channel_639"
|
52 |
+
],
|
53 |
+
"output_location": "Path to deployment",
|
54 |
+
"code_url": "https://github.com/AllenNeuralDynamics/aind-brain-segmentation",
|
55 |
+
"code_version": null,
|
56 |
+
"parameters": {
|
57 |
+
"learning_rate": 0.00001,
|
58 |
+
"batch_size": 32,
|
59 |
+
"augmentation": true
|
60 |
+
},
|
61 |
+
"outputs": {},
|
62 |
+
"notes": "Slices were pulled from a multiscaled image (14.4 microns in XY and 16.0 microns in Z) and then resized to 1024x1024",
|
63 |
+
"resources": null,
|
64 |
+
"train_performance": [
|
65 |
+
{
|
66 |
+
"name": "dice",
|
67 |
+
"value": 0.96
|
68 |
+
},
|
69 |
+
{
|
70 |
+
"name": "jaccard",
|
71 |
+
"value": 0.93
|
72 |
+
}
|
73 |
+
],
|
74 |
+
"test_performance": [
|
75 |
+
{
|
76 |
+
"name": "precision",
|
77 |
+
"value": 0.95
|
78 |
+
},
|
79 |
+
{
|
80 |
+
"name": "recall",
|
81 |
+
"value": 0.91
|
82 |
+
}
|
83 |
+
],
|
84 |
+
"test_data": "4:1 train/test split"
|
85 |
+
}
|
86 |
+
],
|
87 |
+
"evaluations": [],
|
88 |
+
"notes": null
|
89 |
+
}
|