| # Nodule Spotter detection models |
|
|
| This directory contains the inference weights used by the LungNoduleAgent |
| Nodule Spotter release for the private Shenzhen cohort. |
|
|
| ## Released checkpoints |
|
|
| | ID | Architecture | Source epoch | Checkpoint | Config | |
| | --- | --- | ---: | --- | --- | |
| | `retinanet` | RetinaNet, ResNet-18 + FPN | 100 | [`retinanet_r18_fpn_shenzhen.pth`](./retinanet/retinanet_r18_fpn_shenzhen.pth) | [`retinanet_r18_fpn_shenzhen.py`](./retinanet/retinanet_r18_fpn_shenzhen.py) | |
| | `faster_rcnn` | Faster R-CNN, ResNet-50 + FPN | 26 | [`faster_rcnn_r50_fpn_shenzhen.pth`](./faster_rcnn/faster_rcnn_r50_fpn_shenzhen.pth) | [`faster_rcnn_r50_fpn_shenzhen.py`](./faster_rcnn/faster_rcnn_r50_fpn_shenzhen.py) | |
| | `dino` | DINO, ResNet-50, four-scale | 12 | [`dino_r50_4scale_shenzhen.pth`](./dino/dino_r50_4scale_shenzhen.pth) | [`dino_r50_4scale_shenzhen.py`](./dino/dino_r50_4scale_shenzhen.py) | |
|
|
| Machine-readable paths, hashes, and compatibility details are recorded in |
| [`manifest.yaml`](./manifest.yaml). File hashes are also listed in |
| [`checksums.sha256`](./checksums.sha256). |
|
|
| ## Sanitization |
|
|
| The public checkpoints are inference-only artifacts. Compared with the |
| original MMEngine training checkpoints, this release removes: |
|
|
| - optimizer and training-loop state; |
| - MMEngine message/history objects; |
| - the embedded training configuration; |
| - experiment names, timestamps, seeds, and internal filesystem paths. |
|
|
| Each public file contains only the CPU `state_dict` plus minimal metadata: |
| the `nodule` class, display palette, source epoch, and format version. Every |
| checkpoint was reloaded with `torch.load(..., weights_only=True)` and compared |
| tensor-by-tensor with its source `state_dict`. |
|
|
| The reproducible conversion utility is available at |
| [`tools/sanitize_checkpoint.py`](./tools/sanitize_checkpoint.py). It must only |
| be used with trusted source checkpoints. |
|
|
| ## Download |
|
|
| ```bash |
| hf download YangC777/LungNoduleAgent \ |
| --include "DetectionModel/**" \ |
| --local-dir ./LungNoduleAgent-models |
| ``` |
|
|
| ## Compatibility |
|
|
| The original training environment used: |
|
|
| - MMDetection 3.3.0 |
| - MMEngine 0.10.7 |
| - MMCV 2.1.0 |
| - PyTorch 1.13 / CUDA 11.7 |
|
|
| The configs have been scrubbed of private server paths. Dataset paths are |
| portable placeholders and are not required by `mmdet.apis.init_detector` for |
| single-image inference. |
|
|
| ## MMDetection inference |
|
|
| ```python |
| from mmdet.apis import inference_detector, init_detector |
| |
| config = "DetectionModel/dino/dino_r50_4scale_shenzhen.py" |
| checkpoint = "DetectionModel/dino/dino_r50_4scale_shenzhen.pth" |
| |
| model = init_detector(config, checkpoint, device="cuda:0") |
| result = inference_detector(model, "slice.png") |
| |
| # Class index 0 is the released lung-nodule class. |
| instances = result.pred_instances |
| instances = instances[instances.labels == 0] |
| ``` |
|
|
| The legacy RetinaNet and Faster R-CNN checkpoints retain their original |
| 80-output detection heads so that their tensors load without modification. |
| Only class index `0` represents `nodule`; consumers must discard predictions |
| with other labels. DINO was trained with `num_classes=1`. |
|
|
| ## Data and evaluation |
|
|
| The private clinical images and annotations are not released. The configs |
| document the expected COCO annotation filenames and preprocessing structure, |
| but do not contain patient data. |
|
|
| Per-checkpoint test metrics and a public-dataset reproduction protocol are not |
| yet included. Results should not be compared or reported without documenting |
| the data split, score threshold, and post-processing settings. |
|
|
| ## Intended use and limitations |
|
|
| These checkpoints are provided for research reproducibility and method |
| development. They have not been validated as medical devices, may not |
| generalize across scanners, acquisition protocols, populations, or |
| institutions, and must not be used for clinical diagnosis or treatment. |
|
|
| See [`NOTICE.md`](./NOTICE.md) before redistributing or using the weights. |
|
|
| ## Citation |
|
|
| ```bibtex |
| @article{yang2025lungnoduleagent, |
| title = {LungNoduleAgent: A Collaborative Multi-Agent System for Precision Diagnosis of Lung Nodules}, |
| author = {Yang, Cheng and Jin, Hui and Yu, Xinlei and Wang, Zhipeng and Liu, Yaoqun and Fan, Fenglei and Lei, Dajiang and Jia, Gangyong and Wang, Changmiao and Ge, Ruiquan}, |
| journal = {arXiv preprint arXiv:2511.21042}, |
| year = {2025} |
| } |
| ``` |
|
|