| --- |
| title: ICH Detection Pipeline |
| emoji: 🏥 |
| colorFrom: blue |
| colorTo: pink |
| sdk: docker |
| pinned: false |
| --- |
| # AI Medical Intelligence Pipeline for CT Scan Analysis |
|
|
| AI medical intelligence pipeline for intracranial hemorrhage (ICH) analysis from head CT (DICOM) images. |
|
|
| This project provides a Flask web interface for: |
|
|
| - uploading single or batch DICOM scans, |
| - running model inference, |
| - viewing Grad-CAM visualizations, |
| - browsing past reports and logs, |
| - reviewing calibration and evaluation summaries. |
|
|
| ## Project Overview |
|
|
| Intracranial hemorrhage is a time-critical emergency finding in neuroimaging. This repository focuses on a practical intelligence pipeline with explainability and structured report output. |
|
|
| The system is built for decision support and triage assistance, not standalone diagnosis. |
|
|
| ## Model and Artifacts |
|
|
| Model weights and related inference artifacts are hosted on Hugging Face: |
|
|
| - [Hugging Face Model Repository](https://huggingface.co/HarshCode/eff_b4_brain) |
|
|
| When model files are not present locally (for example on Render), the app can |
| download required artifacts from this Hugging Face repository at runtime. |
|
|
| ## Detailed Performance Report |
|
|
| Detailed performance and B4-specific analysis are documented separately in: |
|
|
| - [B4_Performance_Report.md](B4_Performance_Report.md) |
|
|
| ## GitHub Pages Setup |
|
|
| For step-by-step GitHub Pages setup (project site and username.github.io site), see: |
|
|
| - [GITHUB_PAGES_DOCUMENT.md](GITHUB_PAGES_DOCUMENT.md) |
|
|
| ## Repository Structure |
|
|
| - `app.py`: Flask application entry point |
| - `run_interface.py`: adapter layer between app and inference implementation |
| - `download_imp/`: inference code and local artifact layout |
| - `templates/`: HTML templates (Jinja2) |
| - `static/`: styles and static assets |
| - `docs/`: GitHub Pages content |
|
|
| ## Requirements |
|
|
| - Python 3.10+ (3.12 works) |
| - pip |
| - virtual environment (recommended) |
|
|
| Install dependencies: |
|
|
| ```bash |
| pip install -r requirements.txt |
| ``` |
|
|
| ## Environment Setup |
|
|
| Create local environment file from template: |
|
|
| ```bash |
| cp .env.example .env |
| ``` |
|
|
| Important variables in `.env`: |
|
|
| - `ICH_APP_DEBUG`: run Flask in debug mode (`1` or `0`) |
| - `ICH_APP_PORT`: app port (default `7860`) |
| - `ICH_SECRET_KEY`: Flask secret key |
| - `ICH_MAX_UPLOAD_MB`: max upload size in MB |
| - `ICH_FOLD_SELECTION`: `ensemble`, `best`, or fold id (`0` to `4`) |
| - `ICH_LOCAL_MODE`: enables local directory scanning mode |
| - `ICH_LOG_LEVEL`: `DEBUG`, `INFO`, `WARNING`, `ERROR` |
| - `ICH_HF_MODEL_REPO`: Hugging Face model repo used for runtime artifact download |
| - `ICH_HF_TOKEN`: optional token (required only if the Hugging Face repo is private) |
|
|
| ## Run the Application |
|
|
| ```bash |
| python app.py |
| ``` |
|
|
| Open in browser: |
|
|
| ```text |
| http://127.0.0.1:7860 |
| ``` |
|
|
| ## Deploy on Render |
|
|
| This repository includes `render.yaml` for Render deployment. |
|
|
| 1. Push the repository to GitHub. |
| 2. In Render, create a new Blueprint/Web Service from the repository. |
| 3. Ensure these environment variables are set in Render: |
| - `ICH_HF_MODEL_REPO=HarshCode/eff_b4_brain` |
| - `ICH_HF_TOKEN` (only if repo is private) |
| - `ICH_SECRET_KEY` (recommended custom value) |
| 4. Deploy. The service will start with: |
|
|
| ```bash |
| gunicorn app:app --bind 0.0.0.0:$PORT --workers 1 --timeout 180 |
| ``` |
|
|
| Note: first startup can take longer because model artifacts may be downloaded |
| from Hugging Face. |
|
|
| ## Basic Usage |
|
|
| 1. Go to the upload page. |
| 2. Upload one `.dcm`, multiple `.dcm` files, or batch input. |
| 3. Wait for inference and report generation. |
| 4. Review: |
| - screening outcome, |
| - calibrated probability, |
| - confidence band, |
| - triage action, |
| - Grad-CAM overlay. |
| 5. Use Reports / Logs / Evaluation pages for history and analysis. |
|
|
| ## Notes |
|
|
| - Keep heavy model binaries out of GitHub (managed via `.gitignore`). |
| - Generated report outputs are created during runtime. |
| - If required artifacts are missing locally, fetch them from the Hugging Face repository linked above. |
|
|
| ## Disclaimer |
|
|
| This system is an AI-assisted screening and decision-support tool. |
| It does **not** provide a medical diagnosis and must be used with qualified clinical review. |
|
|