UltraDet
这是《挖掘负时间上下文以抑制实时超声病变检测中的假阳性》的官方实现。我们提供了一种实时乳腺超声检测解决方案,可以在0.90的召回率下减少约50%的假阳性。此外,我们还为CVA-Net乳腺超声视频数据集提供了高质量的边界框标注。我们的论文已被MICCAI 2023提前接收!
论文摘要
在超声扫描过程中,实时病变检测可以帮助放射科医生进行准确的癌症诊断。然而,这项重要任务仍然具有挑战性且未得到充分研究。当应用于超声视频时,通用实时目标检测模型可能会错误地报告明显的假阳性(FPs),可能会误导初级放射科医生。一个关键问题是它们未能利用先前帧中的负症状,即负时间上下文(NTC)。为解决这个问题,我们提出在逆向光流的引导下从先前帧中提取上下文,包括NTC。通过聚合提取的上下文,我们赋予模型利用NTC抑制假阳性的能力。我们将由此产生的模型称为UltraDet。所提出的UltraDet相比之前的最先进方法展现出显著改进,并实现了实时推理速度。
实验结果
NTCA模块利用了对放射科医生至关重要但在之前工作中被忽视的RoI级NTC,从而以可靠和可解释的方式有效提高了检测性能。我们将NTCA模块插入到基本的实时检测器中,形成UltraDet。在CVA-BUS数据集上的实验表明,UltraDet在实时推理速度下显著优于之前的工作,在0.90的召回率下减少了约50%的假阳性。
模型 | 类型 | Pr80 | Pr90 | FP80 | FP90 | AP50 | R@16 | FPS | 模型权重 |
---|---|---|---|---|---|---|---|---|---|
单阶段检测器 | |||||||||
YOLOX | 图像 | 69.73.7 | 43.47.7 | 23.84.8 | 87.624.5 | 80.41.6 | 97.50.5 | 59.8 | - |
RetinaNet | 图像 | 75.72.5 | 57.22.9 | 9.32.0 | 32.86.5 | 84.51.0 | 95.10.6 | 53.6 | - |
FCOS | 图像 | 87.22.2 | 72.25.1 | 11.02.4 | 23.03.7 | 89.51.4 | 98.80.3 | 56.1 | - |
DeFCN | 图像 | 81.51.8 | 67.52.3 | 21.13.2 | 33.44.3 | 86.41.3 | 99.30.3 | 51.2 | - |
Track-YOLO | 视频 | 75.12.7 | 47.03.1 | 18.11.9 | 74.214.7 | 80.11.0 | 94.70.9 | 46.0 | - |
基于DETR的检测器 | |||||||||
DeformDETR | 图像 | 90.13.2 | 72.710.6 | 5.62.2 | 37.820.9 | 90.52.0 | 98.70.3 | 33.8 | - |
TransVOD | 视频 | 92.52.2 | 77.57.2 | 3.11.3 | 23.711.5 | 90.11.8 | 98.40.4 | 24.2 | - |
CVA-Net | 视频 | 92.32.6 | 80.26.1 | 4.72.6 | 19.65.6 | 91.61.9 | 98.60.8 | 23.1 | - |
PTSEFormer | 视频 | 93.31.9 | 85.46.0 | 2.81.1 | 12.59.8 | 91.51.6 | 97.91.2 | 9.1 | - |
基于FasterRCNN的检测器 | |||||||||
FasterRCNN | 图像 | 91.30.9 | 75.23.6 | 6.91.4 | 34.46.7 | 88.01.4 | 92.41.0 | 49.2 | - |
RelationNet | 图像 | 91.41.3 | 79.22.9 | 6.22.0 | 24.45.6 | 87.61.7 | 92.40.9 | 42.7 | - |
FGFA | 视频 | 92.91.5 | 82.24.1 | 4.41.6 | 13.33.7 | 90.51.1 | 93.60.9 | 33.8 | - |
SELSA | 视频 | 91.61.7 | 80.22.5 | 7.51.5 | 23.35.5 | 89.21.1 | 92.60.8 | 43.8 | - |
MEGA | 视频 | 93.91.5 | 86.92.3 | 3.11.7 | 11.73.0 | 90.91.0 | 93.60.7 | 40.2 | - |
BasicDet (RDN) | 视频 | 92.41.0 | 83.62.2 | 3.81.2 | 13.43.2 | 88.71.4 | 92.70.6 | 42.2 | - |
UltraDet (本文) | 视频 | 95.71.2 | 90.81.4 | 1.90.4 | 5.71.6 | 91.61.6 | 93.81.3 | 30.4 | 链接 |
如果您在研究中发现 UltraDet 有用,请引用我们的论文:
@article{yu2023mining,
title={Mining Negative Temporal Contexts For False Positive Suppression In Real-Time Ultrasound Lesion Detection},
author={Yu, Haojun and Li, Youcheng and Wu, QuanLin and Zhao, Ziwei and Chen, Dengbo and Wang, Dong and Wang, Liwei},
journal={arXiv preprint arXiv:2305.18060},
year={2023}
}
环境要求
整个项目基于 detectron2。
安装
# 使用 python3.9 安装 anaconda3
conda create -n <env_name> python=3.9
conda activate <env_name>
# 使用清华源作为 pypi 源(可选)
python -m pip install --upgrade pip
# 安装软件包
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge
python -m pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu113/torch1.10/index.html
pip install pandas
pip install path
pip install sqlmodel
pip install coloredlogs
pip install opencv-p
pip install mmcv
pip install prettytable
pip install fire
pip install scipy
pip install timm
# 安装 ultrasound_vid
git clone https://github.com/HaojunYu1998/UltraDet.git
cd UltraDet
pip install -e .
# 问题解决
# AttributeError: module 'distutils' has no attribute 'version'
pip uninstall setuptools
pip install setuptools==58.0.4
检查点
我们很高兴分享 UltraDet 推理所需的模型权重。您可以通过以下链接获取它们:
下载权重后,请将它们存储在以下路径中:
UltraDet/
pretrained_models/
flownet.ckpt
r34.pkl
ultradet.pth
数据集准备
我们提供高质量的标注文件。您可以通过以下链接获取它们:
Json 文件 |
---|
test.json |
trainval.json |
请从 CVA-Net 下载 PNG 图像,并按照 COCO 格式整理图像和标签。如果您遇到任何与数据相关的问题,请通过 haojunyu@pku.edu.cn
联系我们。
注意:CVA-Net 数据集的作者已经对良性/恶性分类标注进行了修正(请参见 CVA-Net)。要使用我们的高质量标注,请首先在 rawframes/
中更正视频和图像位置。
UltraDet/
datasets/
bus_data_cva/
rawframes/
benign/
2cda21c3aab26332/
000000.png
000001.png
...
...
malignant/
1dc9ca2f1748c2ec/
000000.png
000001.png
...
...
test.json
trainval.json
训练和推理
您可以通过运行以下代码来训练或推理 UltraDet:
# 训练
python train_net.py --num-gpus {GPU_NUM} \
--config-file {CONFIG_FILES}
# 验证
python train_net.py --num-gpus {GPU_NUM} --eval-only --resume \
--config-file {CONFIG_FILES}
# 测试
python train_net.py --num-gpus {GPU_NUM} --eval-only --resume \
--config-file {CONFIG_FILES} \
DATASETS.SPLIT "test" \
DATASETS.NUM_FOLDS 1 \
# MODEL.WEIGHTS 'pretrained_models/ultradet.pth' # 如果您希望加载我们发布的 UltraDet 预训练权重,请包含此行代码