| --- |
| license: gpl-3.0 |
| tags: |
| - histopathology |
| - tissue-detection |
| - whole-slide-imaging |
| - pathology |
| - medical-imaging |
| - densenet |
| - image-classification |
| - computational-pathology |
| - cancer-research |
| library_name: pytorch |
| pipeline_tag: image-classification |
| --- |
| |
| # Deep Tissue Detector - DenseNet121 |
|
|
| A deep learning model for detecting tissue regions in Whole Slide Images (WSI) of histopathology slides. |
|
|
| ## Model Description |
|
|
| 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. |
|
|
| ### Model Details |
|
|
| - **Architecture**: DenseNet121 |
| - **Input Size**: 224x224 RGB images |
| - **Number of Classes**: 3 |
| - Class 0: Background/Non-tissue |
| - Class 1: Artifact/Low-quality |
| - Class 2: Tissue (high quality) |
| - **Parameters**: ~7M |
| - **Model Size**: 28MB |
| - **Framework**: PyTorch |
| - **License**: GPL-3.0 |
|
|
| ### Intended Use |
|
|
| This model is designed for: |
| - Filtering tissue-containing patches from whole slide images |
| - Quality control in computational pathology pipelines |
| - Preprocessing for downstream cancer analysis tasks |
| - Reducing computational burden by identifying regions of interest |
|
|
| **Recommended Usage**: Accept patches where class 2 (tissue) probability ≥ 0.8 |
|
|
| ## Usage |
|
|
| ### Installation |
|
|
| ```bash |
| pip install torch torchvision huggingface_hub pillow |
| ``` |
|
|
| ### Basic Usage |
|
|
| ```python |
| from tissue_detector import TissueDetector |
| from PIL import Image |
| |
| # Initialize detector (automatically downloads weights from HuggingFace) |
| detector = TissueDetector(device='cuda') |
| |
| # Load and process an image |
| image = Image.open('patch.png') |
| patch_transformed = detector.transforms(image) |
| patch_batch = patch_transformed.unsqueeze(0).to(detector.device) |
| |
| # Get predictions |
| import torch |
| with torch.no_grad(): |
| prediction = detector.model(patch_batch) |
| probabilities = torch.nn.functional.softmax(prediction, dim=1).cpu().numpy()[0] |
| tissue_class = probabilities.argmax() |
| |
| # Check if patch contains tissue (class 2 with threshold 0.8) |
| is_tissue = tissue_class == 2 and probabilities[2] >= 0.8 |
| print(f"Tissue detected: {is_tissue} (confidence: {probabilities[2]:.3f})") |
| ``` |
|
|
| ### Integration with HoneyBee Framework |
|
|
| ```python |
| from honeybee.models import TissueDetector |
| from honeybee.processors.wsi import SimpleSlide |
| |
| # Initialize tissue detector |
| detector = TissueDetector(device='cuda') |
| |
| # Load whole slide image |
| slide = SimpleSlide( |
| slide_path='path/to/slide.svs', |
| tile_size=512, |
| max_patches=100, |
| tissue_detector=detector |
| ) |
| |
| # Extract tissue patches (automatically filtered) |
| patches = slide.load_patches_concurrently(target_patch_size=224) |
| ``` |
|
|
| ### Manual Download |
|
|
| ```python |
| from huggingface_hub import hf_hub_download |
| |
| # Download PyTorch weights |
| model_path = hf_hub_download( |
| repo_id="Lab-Rasool/tissue-detector", |
| filename="deep-tissue-detector_densenet_state-dict.pt" |
| ) |
| |
| # Or download SafeTensors format (recommended) |
| model_path = hf_hub_download( |
| repo_id="Lab-Rasool/tissue-detector", |
| filename="model.safetensors" |
| ) |
| ``` |
|
|
| ## Model Performance |
|
|
| The model has been extensively used in cancer classification, survival analysis, and multimodal integration tasks within the HoneyBee framework. It effectively filters: |
|
|
| - **Background regions**: Glass slide backgrounds, whitespace |
| - **Artifacts**: Pen marks, dust, blur, fold artifacts |
| - **Tissue regions**: High-quality H&E stained tissue for analysis |
|
|
| **Recommended threshold**: 0.8 probability for class 2 provides a good balance between recall and precision for tissue detection. |
|
|
| ## Training Data |
|
|
| 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. |
|
|
| ## Preprocessing |
|
|
| The model expects images preprocessed with standard ImageNet normalization: |
|
|
| ```python |
| from torchvision import transforms |
| |
| preprocessing = transforms.Compose([ |
| transforms.Resize(224), |
| transforms.ToTensor(), |
| transforms.Normalize( |
| mean=[0.485, 0.456, 0.406], |
| std=[0.229, 0.224, 0.225] |
| ) |
| ]) |
| ``` |
|
|
| ## Limitations and Biases |
|
|
| - **Stain Variation**: Performance may vary with different staining protocols or scanners |
| - **Tissue Types**: Primarily validated on H&E stained tissue; may not generalize to other stains |
| - **Resolution**: Designed for patches at standard WSI resolution (~0.5 µm/pixel) |
| - **Artifacts**: May misclassify unusual artifacts not seen during training |
| - **Medical Use**: This model is for research purposes only and not intended for clinical diagnosis |
|
|
| ## Applications in Research |
|
|
| This tissue detector has been used in: |
| - **Cancer Classification**: TCGA multi-cancer type classification (BRCA, BLCA, KIRC, LIHC, etc.) |
| - **Survival Analysis**: Cox proportional hazards and deep survival models |
| - **Stain Normalization Studies**: Evaluating impact of Macenko/Reinhard normalization |
| - **Multimodal Integration**: Combining pathology with clinical, radiology, and molecular data |
| - **Foundation Model Evaluation**: Preprocessing for UNI, UNI2, Virchow2 embeddings |
|
|
| ## Citation |
|
|
| If you use this model, please cite the HoneyBee framework and the original SliDL project: |
|
|
| ```bibtex |
| @software{honeybee2024, |
| title={HoneyBee: A Scalable Modular Framework for Multimodal AI in Oncology}, |
| author={Lab-Rasool}, |
| year={2024}, |
| url={https://github.com/lab-rasool/HoneyBee} |
| } |
| |
| @software{slidl, |
| title={SliDL: A Python library for deep learning on whole-slide images}, |
| author={Markowetz Lab}, |
| url={https://github.com/markowetzlab/slidl} |
| } |
| ``` |
|
|
| ## Model Card Authors |
|
|
| Lab-Rasool |
|
|
| ## Model Card Contact |
|
|
| For questions or issues, please open an issue on the [HoneyBee GitHub repository](https://github.com/lab-rasool/HoneyBee). |
|
|
| ## Additional Resources |
|
|
| - **HoneyBee Framework**: [https://github.com/lab-rasool/HoneyBee](https://github.com/lab-rasool/HoneyBee) |
| - **Documentation**: [https://lab-rasool.github.io/HoneyBee](https://lab-rasool.github.io/HoneyBee) |
| - **Original Model Source**: [SliDL GitHub](https://github.com/markowetzlab/slidl) |
|
|
| ## Version History |
|
|
| - **v1.0** (2024): Initial release with DenseNet121 architecture |
| - PyTorch state dict format |
| - SafeTensors format for improved loading |
| - Integration with HuggingFace Hub |
|
|