SA-Med2D-20M|医学图像处理数据集|图像分割数据集
收藏SAM-Med2D 数据集概述
🌤️ 亮点
- 收集并整理了迄今为止最大的医学图像分割数据集(460万张图像和1970万张掩码)。
- 基于Segment Anything Model (SAM)进行了最全面的微调。
- 在大规模数据集上对SAM-Med2D进行了全面评估。
🔥 更新
- (2023.12.05) 在Hugging Face平台开放数据集下载。
- (2023.11.23) 发布了SA-Med2D-20M数据集。
- (2023.11.21) 发布了介绍SA-Med2D-20M数据集的文章。
- (2023.10.24) 发布了SAM-Med3D,专注于3D医学影像的分割。
- (2023.09.14) 发布了训练代码。
- (2023.09.02) 发布了测试代码。
- (2023.08.31) 发布了预训练模型。
- (2023.08.31) 发布了论文。
- (2023.08.26) 发布了在线演示。
👉 数据集
SAM-Med2D在包含460万张图像和1970万张掩码的数据集上进行训练和测试。该数据集涵盖10种医学数据模态、4种解剖结构+病变和31个主要人体器官。据我们所知,这是目前数量和类别覆盖范围最大的医学图像分割数据集。
👉 框架
SAM-Med2D的流程。我们冻结图像编码器并在每个Transformer块中加入可学习的适配器层,以获取医学领域的特定知识。我们使用点、Bbox和掩码信息微调提示编码器,并通过交互式训练更新掩码解码器的参数。
👉 结果
定量比较
<table> <caption align="center">测试集上不同方法的定量比较:</caption> <thead> <tr> <th>模型</th> <th>分辨率</th> <th>Bbox (%)</th> <th>1 pt (%)</th> <th>3 pts (%)</th> <th>5 pts (%)</th> <th>FPS</th> <th>Checkpoint</th> </tr> </thead> <tbody> <tr> <td align="center">SAM</td> <td align="center">$256 imes256$</td> <td align="center">61.63</td> <td align="center">18.94</td> <td align="center">28.28</td> <td align="center">37.47</td> <td align="center">51</td> <td align="center">Offical</td> </tr> <tr> <td align="center">SAM</td> <td align="center">$1024 imes1024$</td> <td align="center">74.49</td> <td align="center">36.88</td> <td align="center">42.00</td> <td align="center">47.57</td> <td align="center">8</td> <td align="center">Offical</td> </tr> <tr> <td align="center">FT-SAM</td> <td align="center">$256 imes256$</td> <td align="center">73.56</td> <td align="center">60.11</td> <td align="center">70.95</td> <td align="center">75.51</td> <td align="center">51</td> <td align="center">FT-SAM</td> </tr> <tr> <td align="center">SAM-Med2D</td> <td align="center">$256 imes256$</td> <td align="center">79.30</td> <td align="center">70.01</td> <td align="center">76.35</td> <td align="center">78.68</td> <td align="center">35</td> <td align="center">SAM-Med2D</td> </tr> </tbody> </table>
泛化验证
<table> <caption align="center">在9个MICCAI2023数据集上的泛化验证,其中""表示在测试阶段去掉了SAM-Med2D的适配器层:</caption> <thead> <tr> <th rowspan="2">数据集</th> <th colspan="3">Bbox prompt (%)</th> <th colspan="3">1 point prompt (%)</th> </tr> <tr> <th>SAM</th> <th>SAM-Med2D</th> <th>SAM-Med2D</th> <th>SAM</th> <th>SAM-Med2D*</th> <th>SAM-Med2D</th> </tr> </thead> <tbody> <tr> <td align="center">CrossMoDA23</td> <td align="center">78.12</td> <td align="center">86.26</td> <td align="center">88.42</td> <td align="center">33.84</td> <td align="center">65.85</td> <td align="center">85.26</td> </tr> <tr> <td align="center">KiTS23</td> <td align="center">81.52</td> <td align="center">86.14</td> <td align="center">89.89</td> <td align="center">31.36</td> <td align="center">56.67</td> <td align="center">83.71</td> </tr> <tr> <td align="center">FLARE23</td> <td align="center">73.20</td> <td align="center">77.18</td> <td align="center">85.09</td> <td align="center">19.87</td> <td align="center">32.01</td> <td align="center">77.17</td> </tr> <tr> <td align="center">ATLAS2023</td> <td align="center">76.98</td> <td align="center">79.09</td> <td align="center">82.59</td> <td align="center">29.07</td> <td align="center">45.25</td> <td align="center">64.76</td> </tr> <tr> <td align="center">SEG2023</td> <td align="center">64.82</td> <td align="center">81.85</td> <td align="center">85.09</td> <td align="center">21.15</td> <td align="center">34.71</td> <td align="center">72.08</td> </tr> <tr> <td align="center">LNQ2023</td> <td align="center">53.02</td> <td align="center">57.37</td> <td align="center">58.01</td> <td align="center">7.05</td> <td align="center">7.21</td> <td align="center">37.64</td> </tr> <tr> <td align="center">CAS2023</td> <td align="center">61.53</td> <td align="center">78.20</td> <td align="center">81.10</td> <td align="center">22.75</td> <td align="center">46.85</td> <td align="center">78.46</td> </tr> <tr> <td align="center">TDSC-ABUS2023</td> <td align="center">64.31</td> <td align="center">69.00</td> <td align="center">66.14</td> <td align="center">8.24</td> <td align="center">18.98</td> <td align="center">43.55</td> </tr> <tr> <td align="center">ToothFairy2023</td> <td align="center">43.40</td> <td align="center">39.13</td> <td align="center">41.23</td> <td align="center">5.47</td> <td align="center">5.27</td> <td align="center">12.93</td> </tr> <tr> <td align="center">Weighted sum</td> <td align="center">73.49</td> <td align="center">77.67</td> <td align="center">84.88</td> <td align="center">20.88</td> <td align="center">34.30</td> <td align="center">76.63</td> </tr> </tbody> </table>
👉 训练
准备自己的数据集,并参考SAM-Med2D/data_demo中的示例进行替换。在运行train.py之前,需要生成image2label_train.json文件。
bash cd ./SAM-Med2D python train.py
参数
- work_dir: 指定训练过程的工作目录,默认值为
workdir。 - image_size: 默认值为256。
- mask_num: 指定与一张图像对应的掩码数量,默认值为5。
- data_path: 数据集目录,例如:
data_demo。 - resume: 预训练权重文件,如果有则忽略
sam_checkpoint。 - sam_checkpoint: 加载sam checkpoint。
- iter_point: 掩码解码器迭代运行次数。
- multimask: 是否输出多个掩码,默认值为True。
- encoder_adapter: 是否微调Adapter层,仅在微调解码器时设置为False。
- use_amp: 是否使用混合精度训练。
👉 测试
准备自己的数据集,并参考SAM-Med2D/data_demo中的示例进行替换。在运行test.py之前,需要生成label2image_test.json文件。
bash cd ./SAM-Med2D python test.py
参数
- work_dir: 指定测试过程的工作目录,默认值为
workdir。 - batch_size: 默认值为1。
- image_size: 默认值为256。
- boxes_prompt: 使用Bbox提示获取分割结果。
- point_num: 指定点的数量,默认值为1。
- iter_point: 指定点提示的迭代次数。
- sam_checkpoint: 加载sam或sammed checkpoint。
- encoder_adapter: 如果使用SAM-Med2D的预训练权重,设置为True。
- save_pred: 是否保存预测结果。
- prompt_path: 是否有固定的Prompt文件,如果没有则值为None,会在最新的预测中自动生成。
👉 部署
导出到ONNX
- 导出编码器模型
bash python3 scripts/export_onnx_encoder_model.py --sam_checkpoint /path/to/sam-med2d_b.pth --output /path/to/sam-med2d_b.encoder.onnx --model-type vit_b --image_size 256 --encoder_adapter True
- 导出解码器模型
bash python3 scripts/export_onnx_model.py --checkpoint /path/to/sam-med2d_b.pth --output /path/to/sam-med2d_b.decoder.onnx --model-type vit_b --return-single-mask
- 使用onnxruntime进行推理
bash
cd examples/SAM-Med2D-onnxruntime
python3 main.py --encoder_model /path/to/sam-med2d_b.encoder.onnx --decoder_model /path/to/sam-med2d_b.decoder.onnx
🚀 尝试SAM-Med2D
- 🏆 Gradio在线演示: 可在OpenXLab找到在线演示。
- 🏆 Notebook演示: 可以使用predictor_example.ipynb在本地运行,查看不同提示生成的预测结果。
- 🏆 Gradio本地部署: 可以在本地部署app.ipynb并上传测试案例。
🗓️ 正在进行
- [x] 数据集发布
- [x] 数据集文章发布
- [x] 训练代码发布
- [x] 测试代码发布
- [x] 预训练模型发布
- [x] 论文发布
- [x] 在线演示发布
🎫 许可证
本项目基于Apache 2.0许可证发布。
💬 讨论组
如有任何关于SAM-Med2D的问题,请添加此微信ID加入微信群讨论。
🤝 致谢
- 感谢所有医学工作者和数据集所有者为社区提供公开数据集。
- 感谢以下项目的开源:Segment Anything。
👋 招聘与全球合作
- 招聘: 我们在上海人工智能实验室的通用视觉团队招聘研究人员、工程师和实习生。如果您对医学基础模型和通用医学AI感兴趣,请联系我们。
- 全球合作: 我们致力于重新定义医学研究,推动医学社区的发展。欢迎与我们合作,增加竞争力,降低风险,拓展市场。
- 联系: Junjun He(hejunjun@pjlab.org.cn), Jin Ye(yejin@pjlab.org.cn), 和 Tianbin Li (litianbin@pjlab.org.cn)。
参考文献
@misc{cheng2023sammed2d, title={SAM-Med2D}, author={Junlong Cheng and Jin Ye and Zhongying Deng and Jianpin Chen and Tianbin Li and Haoyu Wang and Yanzhou Su and Ziyan Huang and Jilong Chen and Lei Jiangand Hui Sun and Junjun He and Shaoting Zhang and Min Zhu and Yu Qiao}, year={2023}, eprint={2308.16184}, archivePrefix={arXiv}, primaryClass={cs.CV} }
@misc{ye2023samed2d20m, title




