Upload 6 files
Browse files- .gitattributes +6 -31
- README.md +191 -3
- config.json +51 -0
- deep-tissue-detector_densenet_state-dict.pt +3 -0
- model.safetensors +3 -0
- requirements.txt +5 -0
.gitattributes
CHANGED
|
@@ -1,35 +1,10 @@
|
|
| 1 |
-
*.
|
| 2 |
-
*.
|
|
|
|
| 3 |
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
-
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
-
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
-
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
-
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
-
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
-
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
-
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
-
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
-
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
-
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
-
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
-
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
-
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
-
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
-
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
-
*.
|
| 23 |
-
*.
|
| 24 |
-
*.
|
| 25 |
-
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
-
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
-
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
-
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
-
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
-
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
-
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
-
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
-
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
-
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
-
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 1 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 4 |
*.bin filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 5 |
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
| 6 |
*.h5 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
README.md
CHANGED
|
@@ -1,3 +1,191 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Deep Tissue Detector - DenseNet121
|
| 2 |
+
|
| 3 |
+
A deep learning model for detecting tissue regions in Whole Slide Images (WSI) of histopathology slides.
|
| 4 |
+
|
| 5 |
+
## Model Description
|
| 6 |
+
|
| 7 |
+
This is a DenseNet121-based tissue detector trained to classify image patches into three categories for histopathology analysis. The model is specifically designed to identify tissue-containing regions in H&E (Hematoxylin and Eosin) stained whole slide images, enabling efficient processing of large pathology datasets.
|
| 8 |
+
|
| 9 |
+
### Model Details
|
| 10 |
+
|
| 11 |
+
- **Architecture**: DenseNet121
|
| 12 |
+
- **Input Size**: 224x224 RGB images
|
| 13 |
+
- **Number of Classes**: 3
|
| 14 |
+
- Class 0: Background/Non-tissue
|
| 15 |
+
- Class 1: Artifact/Low-quality
|
| 16 |
+
- Class 2: Tissue (high quality)
|
| 17 |
+
- **Parameters**: ~7M
|
| 18 |
+
- **Model Size**: 28MB
|
| 19 |
+
- **Framework**: PyTorch
|
| 20 |
+
- **License**: GPL-3.0
|
| 21 |
+
|
| 22 |
+
### Intended Use
|
| 23 |
+
|
| 24 |
+
This model is designed for:
|
| 25 |
+
- Filtering tissue-containing patches from whole slide images
|
| 26 |
+
- Quality control in computational pathology pipelines
|
| 27 |
+
- Preprocessing for downstream cancer analysis tasks
|
| 28 |
+
- Reducing computational burden by identifying regions of interest
|
| 29 |
+
|
| 30 |
+
**Recommended Usage**: Accept patches where class 2 (tissue) probability ≥ 0.8
|
| 31 |
+
|
| 32 |
+
## Usage
|
| 33 |
+
|
| 34 |
+
### Installation
|
| 35 |
+
|
| 36 |
+
```bash
|
| 37 |
+
pip install torch torchvision huggingface_hub pillow
|
| 38 |
+
```
|
| 39 |
+
|
| 40 |
+
### Basic Usage
|
| 41 |
+
|
| 42 |
+
```python
|
| 43 |
+
from tissue_detector import TissueDetector
|
| 44 |
+
from PIL import Image
|
| 45 |
+
|
| 46 |
+
# Initialize detector (automatically downloads weights from HuggingFace)
|
| 47 |
+
detector = TissueDetector(device='cuda')
|
| 48 |
+
|
| 49 |
+
# Load and process an image
|
| 50 |
+
image = Image.open('patch.png')
|
| 51 |
+
patch_transformed = detector.transforms(image)
|
| 52 |
+
patch_batch = patch_transformed.unsqueeze(0).to(detector.device)
|
| 53 |
+
|
| 54 |
+
# Get predictions
|
| 55 |
+
import torch
|
| 56 |
+
with torch.no_grad():
|
| 57 |
+
prediction = detector.model(patch_batch)
|
| 58 |
+
probabilities = torch.nn.functional.softmax(prediction, dim=1).cpu().numpy()[0]
|
| 59 |
+
tissue_class = probabilities.argmax()
|
| 60 |
+
|
| 61 |
+
# Check if patch contains tissue (class 2 with threshold 0.8)
|
| 62 |
+
is_tissue = tissue_class == 2 and probabilities[2] >= 0.8
|
| 63 |
+
print(f"Tissue detected: {is_tissue} (confidence: {probabilities[2]:.3f})")
|
| 64 |
+
```
|
| 65 |
+
|
| 66 |
+
### Integration with HoneyBee Framework
|
| 67 |
+
|
| 68 |
+
```python
|
| 69 |
+
from honeybee.models import TissueDetector
|
| 70 |
+
from honeybee.processors.wsi import SimpleSlide
|
| 71 |
+
|
| 72 |
+
# Initialize tissue detector
|
| 73 |
+
detector = TissueDetector(device='cuda')
|
| 74 |
+
|
| 75 |
+
# Load whole slide image
|
| 76 |
+
slide = SimpleSlide(
|
| 77 |
+
slide_path='path/to/slide.svs',
|
| 78 |
+
tile_size=512,
|
| 79 |
+
max_patches=100,
|
| 80 |
+
tissue_detector=detector
|
| 81 |
+
)
|
| 82 |
+
|
| 83 |
+
# Extract tissue patches (automatically filtered)
|
| 84 |
+
patches = slide.load_patches_concurrently(target_patch_size=224)
|
| 85 |
+
```
|
| 86 |
+
|
| 87 |
+
### Manual Download
|
| 88 |
+
|
| 89 |
+
```python
|
| 90 |
+
from huggingface_hub import hf_hub_download
|
| 91 |
+
|
| 92 |
+
# Download PyTorch weights
|
| 93 |
+
model_path = hf_hub_download(
|
| 94 |
+
repo_id="Lab-Rasool/tissue-detector",
|
| 95 |
+
filename="deep-tissue-detector_densenet_state-dict.pt"
|
| 96 |
+
)
|
| 97 |
+
|
| 98 |
+
# Or download SafeTensors format (recommended)
|
| 99 |
+
model_path = hf_hub_download(
|
| 100 |
+
repo_id="Lab-Rasool/tissue-detector",
|
| 101 |
+
filename="model.safetensors"
|
| 102 |
+
)
|
| 103 |
+
```
|
| 104 |
+
|
| 105 |
+
## Model Performance
|
| 106 |
+
|
| 107 |
+
The model has been extensively used in cancer classification, survival analysis, and multimodal integration tasks within the HoneyBee framework. It effectively filters:
|
| 108 |
+
|
| 109 |
+
- **Background regions**: Glass slide backgrounds, whitespace
|
| 110 |
+
- **Artifacts**: Pen marks, dust, blur, fold artifacts
|
| 111 |
+
- **Tissue regions**: High-quality H&E stained tissue for analysis
|
| 112 |
+
|
| 113 |
+
**Recommended threshold**: 0.8 probability for class 2 provides a good balance between recall and precision for tissue detection.
|
| 114 |
+
|
| 115 |
+
## Training Data
|
| 116 |
+
|
| 117 |
+
The model was originally trained as part of the [SliDL](https://github.com/markowetzlab/slidl) project for tissue detection in histopathology whole slide images. Training details include H&E stained tissue sections with annotations for tissue/non-tissue regions.
|
| 118 |
+
|
| 119 |
+
## Preprocessing
|
| 120 |
+
|
| 121 |
+
The model expects images preprocessed with standard ImageNet normalization:
|
| 122 |
+
|
| 123 |
+
```python
|
| 124 |
+
from torchvision import transforms
|
| 125 |
+
|
| 126 |
+
preprocessing = transforms.Compose([
|
| 127 |
+
transforms.Resize(224),
|
| 128 |
+
transforms.ToTensor(),
|
| 129 |
+
transforms.Normalize(
|
| 130 |
+
mean=[0.485, 0.456, 0.406],
|
| 131 |
+
std=[0.229, 0.224, 0.225]
|
| 132 |
+
)
|
| 133 |
+
])
|
| 134 |
+
```
|
| 135 |
+
|
| 136 |
+
## Limitations and Biases
|
| 137 |
+
|
| 138 |
+
- **Stain Variation**: Performance may vary with different staining protocols or scanners
|
| 139 |
+
- **Tissue Types**: Primarily validated on H&E stained tissue; may not generalize to other stains
|
| 140 |
+
- **Resolution**: Designed for patches at standard WSI resolution (~0.5 µm/pixel)
|
| 141 |
+
- **Artifacts**: May misclassify unusual artifacts not seen during training
|
| 142 |
+
- **Medical Use**: This model is for research purposes only and not intended for clinical diagnosis
|
| 143 |
+
|
| 144 |
+
## Applications in Research
|
| 145 |
+
|
| 146 |
+
This tissue detector has been used in:
|
| 147 |
+
- **Cancer Classification**: TCGA multi-cancer type classification (BRCA, BLCA, KIRC, LIHC, etc.)
|
| 148 |
+
- **Survival Analysis**: Cox proportional hazards and deep survival models
|
| 149 |
+
- **Stain Normalization Studies**: Evaluating impact of Macenko/Reinhard normalization
|
| 150 |
+
- **Multimodal Integration**: Combining pathology with clinical, radiology, and molecular data
|
| 151 |
+
- **Foundation Model Evaluation**: Preprocessing for UNI, UNI2, Virchow2 embeddings
|
| 152 |
+
|
| 153 |
+
## Citation
|
| 154 |
+
|
| 155 |
+
If you use this model, please cite the HoneyBee framework and the original SliDL project:
|
| 156 |
+
|
| 157 |
+
```bibtex
|
| 158 |
+
@software{honeybee2024,
|
| 159 |
+
title={HoneyBee: A Scalable Modular Framework for Multimodal AI in Oncology},
|
| 160 |
+
author={Lab-Rasool},
|
| 161 |
+
year={2024},
|
| 162 |
+
url={https://github.com/lab-rasool/HoneyBee}
|
| 163 |
+
}
|
| 164 |
+
|
| 165 |
+
@software{slidl,
|
| 166 |
+
title={SliDL: A Python library for deep learning on whole-slide images},
|
| 167 |
+
author={Markowetz Lab},
|
| 168 |
+
url={https://github.com/markowetzlab/slidl}
|
| 169 |
+
}
|
| 170 |
+
```
|
| 171 |
+
|
| 172 |
+
## Model Card Authors
|
| 173 |
+
|
| 174 |
+
Lab-Rasool
|
| 175 |
+
|
| 176 |
+
## Model Card Contact
|
| 177 |
+
|
| 178 |
+
For questions or issues, please open an issue on the [HoneyBee GitHub repository](https://github.com/lab-rasool/HoneyBee).
|
| 179 |
+
|
| 180 |
+
## Additional Resources
|
| 181 |
+
|
| 182 |
+
- **HoneyBee Framework**: [https://github.com/lab-rasool/HoneyBee](https://github.com/lab-rasool/HoneyBee)
|
| 183 |
+
- **Documentation**: [https://lab-rasool.github.io/HoneyBee](https://lab-rasool.github.io/HoneyBee)
|
| 184 |
+
- **Original Model Source**: [SliDL GitHub](https://github.com/markowetzlab/slidl)
|
| 185 |
+
|
| 186 |
+
## Version History
|
| 187 |
+
|
| 188 |
+
- **v1.0** (2024): Initial release with DenseNet121 architecture
|
| 189 |
+
- PyTorch state dict format
|
| 190 |
+
- SafeTensors format for improved loading
|
| 191 |
+
- Integration with HuggingFace Hub
|
config.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model_type": "densenet",
|
| 3 |
+
"architecture": "densenet121",
|
| 4 |
+
"num_classes": 3,
|
| 5 |
+
"input_size": [224, 224],
|
| 6 |
+
"in_channels": 3,
|
| 7 |
+
"classifier_input_features": 1024,
|
| 8 |
+
"framework": "pytorch",
|
| 9 |
+
"task": "image-classification",
|
| 10 |
+
"domain": "histopathology",
|
| 11 |
+
"modality": "whole-slide-imaging",
|
| 12 |
+
"license": "gpl-3.0",
|
| 13 |
+
"tags": [
|
| 14 |
+
"histopathology",
|
| 15 |
+
"tissue-detection",
|
| 16 |
+
"whole-slide-imaging",
|
| 17 |
+
"pathology",
|
| 18 |
+
"medical-imaging",
|
| 19 |
+
"densenet",
|
| 20 |
+
"image-classification",
|
| 21 |
+
"computational-pathology",
|
| 22 |
+
"cancer-research"
|
| 23 |
+
],
|
| 24 |
+
"preprocessing": {
|
| 25 |
+
"resize": 224,
|
| 26 |
+
"normalization": {
|
| 27 |
+
"mean": [0.485, 0.456, 0.406],
|
| 28 |
+
"std": [0.229, 0.224, 0.225]
|
| 29 |
+
}
|
| 30 |
+
},
|
| 31 |
+
"class_labels": {
|
| 32 |
+
"0": "background",
|
| 33 |
+
"1": "artifact",
|
| 34 |
+
"2": "tissue"
|
| 35 |
+
},
|
| 36 |
+
"recommended_threshold": {
|
| 37 |
+
"class": 2,
|
| 38 |
+
"probability": 0.8,
|
| 39 |
+
"description": "Accept patches where class 2 (tissue) probability >= 0.8"
|
| 40 |
+
},
|
| 41 |
+
"version": "1.0.0",
|
| 42 |
+
"release_date": "2024",
|
| 43 |
+
"authors": [
|
| 44 |
+
"Lab-Rasool",
|
| 45 |
+
"Markowetz Lab (original training)"
|
| 46 |
+
],
|
| 47 |
+
"huggingface_repo": "Lab-Rasool/tissue-detector",
|
| 48 |
+
"related_frameworks": [
|
| 49 |
+
"HoneyBee"
|
| 50 |
+
]
|
| 51 |
+
}
|
deep-tissue-detector_densenet_state-dict.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6098cd238e3fe46f19ed967decc1cc53a1f5d582f99718a5703b2a2742297445
|
| 3 |
+
size 28325919
|
model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:afc524a4357333f01bc4ebe9b8118a20927da90e3ea3f995af77994771dc67ec
|
| 3 |
+
size 28246476
|
requirements.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
torch>=1.9.0
|
| 2 |
+
torchvision>=0.10.0
|
| 3 |
+
huggingface_hub>=0.16.0
|
| 4 |
+
pillow>=8.0.0
|
| 5 |
+
numpy>=1.19.0
|