Breast ultrasound benign-malignant diagnosis with segmentation-assisted multi-task learning.
Project description
JwzTumor
Breast ultrasound benign-malignant diagnosis with segmentation-assisted multi-task learning.
Overview
JwzTumor implements LABDG-Pre + DGBC-MTLNet + MPTC-Head, a multi-task system for breast tumor diagnosis from ultrasound images:
- LABDG-Pre: Lesion-aware boundary-preserving domain-generalized preprocessing
- DGBC-MTLNet: Domain-generalized boundary-context collaborative multi-task network (CNN-Mamba hybrid)
- MPTC-Head: Morphology-prompted topology-consistent classification head (4-stream)
The system outputs: classification probability, segmentation mask, edge map, SDM, uncertainty map, and explainability visualizations.
Project Structure
jwz-tumor/
pyproject.toml
configs/ # 8 YAML configs
dataset/ # BUSBRA + BUSI data
src/JwzTumor/
data/ # Datasets, preprocessing, augmentation, cache, audit, collate
models/ # LABDG-Pre, DGBCEncoder, MPP, decoder, MPTC-Head
losses/ # 7 loss modules + factory
training/ # Stage trainer, scheduler, callbacks
inference/ # Predictor, TTA, postprocessing, visualization
evaluation/ # Classification + segmentation metrics
cli/ # 6 CLI commands
utils/ # Config, seed, logging, I/O, registry
tests/ # 12 test files
Datasets
BUSBRA (Training)
- Images:
bus_{id}-{side}.png, Masks:mask_{id}-{side}.png - Labels:
bus_data.csv(Pathology: benign/malignant) - CV:
5-fold-cv.csvor10-fold-cv.csv - Case-level splitting (no leak)
BUSI (Testing)
- Directory-based:
benign/,malignant/ - Skip:
normal-不使用/ - Multi-mask: OR union in original size before resize
- RGB images converted to grayscale
Installation
# Using uv
uv pip install -e .
# Development
uv pip install -e ".[dev]"
Quick Start
# Show version
jwzt version
# Export config template
jwzt get --name train_full --output configs/my_config.yaml
# Train
jwzt train --config configs/train_full.yaml --experiment-name exp001 --fold 1
# Stage-specific training
jwzt train --config configs/train_pretrain_pre.yaml --stage pretrain_pre --fold 1
jwzt train --config configs/train_pretrain_seg.yaml --stage pretrain_seg --fold 1
jwzt train --config configs/train_cls_head.yaml --stage train_cls --fold 1
jwzt train --config configs/train_finetune.yaml --stage finetune_all --fold 1
# Predict
jwzt pred --config configs/infer_busi.yaml --model checkpoints/best_auc.ckpt --data dataset/Dataset_BUSI_with_GT --output outputs/busi_predictions
# Evaluate
jwzt eval --config configs/eval_busi.yaml --pred outputs/busi_predictions --data dataset/Dataset_BUSI_with_GT
# Audit dataset
jwzt audit-data --data-root dataset --output outputs/dataset_audit_summary.json
# Debug training
jwzt train --config configs/train_debug.yaml --experiment-name debug_run
Training Strategy
Four-stage training:
- pretrain_pre: Train LABDG-Pre only (coarse localization, structure maps)
- pretrain_seg: Train DGBC-MTLNet segmentation (encoder + decoder)
- train_cls: Train MPTC-Head only (freeze encoder + preprocessing)
- finetune_all: End-to-end fine-tuning with all losses
Metrics
Classification: AUC, Accuracy, Sensitivity, Specificity, Precision, F1 Segmentation: Dice, IoU, HD95, Boundary-F1
License
Apache-2.0
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 jwztumor-1.0.0.tar.gz.
File metadata
- Download URL: jwztumor-1.0.0.tar.gz
- Upload date:
- Size: 93.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cee531de6b570a566752771fbe5035b8023eab057338dc378b71b410737f0623
|
|
| MD5 |
549715760c082398ab4966dbb8c4b147
|
|
| BLAKE2b-256 |
5cef2ac0d0c172da3946658161e69650f8a76111280fe01e7020b53e81f44971
|
File details
Details for the file jwztumor-1.0.0-py3-none-any.whl.
File metadata
- Download URL: jwztumor-1.0.0-py3-none-any.whl
- Upload date:
- Size: 112.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42385f6562b2982ea1b0a7b20f506ec0654bab750d6bad153677e4708fe4eef4
|
|
| MD5 |
fa4f564c11347419a4b3d7d25c3433b7
|
|
| BLAKE2b-256 |
b83c2e738477ce58763a1dcd6e98db050ea00d6f51445fd90203813fbf781955
|