five

SA-Med2D-20M|医学图像处理数据集|图像分割数据集

收藏
arXiv2023-11-21 更新2024-07-30 收录
医学图像处理
图像分割
下载链接:
https://github.com/OpenGVLab/SAM-Med2D
下载链接
链接失效反馈
资源简介:
SA-Med2D-20M是一个大规模的2D医学图像分割数据集,包含4.6百万张2D医学图像和19.7百万个对应的掩码,覆盖了几乎整个身体,并展示了显著的多样性。该数据集旨在帮助研究人员构建医学视觉基础模型或将其模型应用于下游医学应用。
创建时间:
2023-11-21
原始信息汇总

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

AI搜集汇总
数据集介绍
main_image_url
构建方式
SA-Med2D-20M数据集的构建过程主要涉及数据收集和图像预处理两个阶段。数据收集阶段,研究者从网络上收集了大量的公开医疗图像分割数据集,包括TCIA、OpenNeuro、NITRC、Grand Challenge、Synapse、CodaLab和GitHub等资源。这些数据集包含了多种模态的医学图像,如CT、MRI、PET、X光、超声、眼底、显微镜和皮肤镜等。图像预处理阶段,研究者对收集到的图像进行了标准化处理,将像素值归一化到[0, 255]范围内,并将3D图像沿三个轴向切片,以确保目标区域不会过于模糊。此外,研究者还将多标签掩膜分割成单个前景,并合并重叠区域,以确保每个分割目标只有一个标签。最终,所有处理后的图像和掩膜都保存为PNG格式,并与JSON文件一起提供,以便记录每个掩膜的分类信息。
特点
SA-Med2D-20M数据集的特点主要体现在其规模和多样性上。该数据集包含了460万张2D医学图像和1970万张相应的掩膜,涵盖了几乎整个人体和多种成像模态。此外,该数据集还包含了超过200个类别和10种模态,代表了人体各个部位和各种成像模态的全面覆盖。数据集的规模和多样性使其成为医学图像分析领域的一个重要资源,可以帮助研究者构建医学视觉基础模型,并将模型应用于下游的医学应用。
使用方法
SA-Med2D-20M数据集的使用方法主要包括以下几个方面:首先,研究者可以使用该数据集进行监督学习和自监督学习,以训练医学视觉基础模型。其次,研究者可以利用该数据集进行迁移学习,将预训练模型的知识迁移到下游的医学应用中。此外,研究者还可以根据需要选择特定模态、解剖结构或标签的数据,以加速数据收集过程。最后,研究者还可以使用该数据集进行数据迭代,以不断改进医学图像分析模型。
背景与挑战
背景概述
在医学影像分析领域,医学影像分割对于疾病的诊断、放射治疗规划、治疗以及进一步的研究至关重要。然而,医学影像分割的准确性受到数据模式和多变性显著差异的影响,这使得它成为一个具有挑战性的任务。为了应对医学影像分割中的复杂场景,构建医学视觉基础模型变得至关重要。基础模型通常在大规模数据集上进行训练,并且能够在各种数据模式和目标上表现出色。SA-Med2D-20M数据集正是在这样的背景下应运而生,它是一个基于多个公共和私有数据集构建的大规模分割数据集,旨在为医学视觉基础模型的训练提供支持。该数据集由4.6百万2D医学影像和19.7百万相应的掩码组成,涵盖了几乎整个身体,并表现出显著的多样性。
当前挑战
尽管SA-Med2D-20M数据集在医学影像分割领域具有重大的影响力和潜力,但仍然存在一些挑战。首先,数据集可能缺乏某些分割目标的掩码,这可能导致模型在特定任务上的性能下降。其次,数据集目前面临着明显的长尾问题,尤其是在某些模态和类别中,公共分割数据集有限。第三,当前的数据格式统一方法可能无法完全保留数据信息,寻找一个有效的方法来统一不同模态的数据格式仍然是一个重大和持续的挑战。为了解决这些问题,未来的工作将尝试采用类似SAM数据引擎的方法,为所有数据进行伪标签并手动进行细化。此外,还计划通过收集更多数据来丰富SA-Med2D-20M数据集,并应用伪标签策略来处理公开来源中的未标记数据。
常用场景
经典使用场景
SA-Med2D-20M数据集是针对医学图像分割任务而设计的,它为研究人员提供了大规模的标注数据,涵盖了多种模态和人体解剖结构,从而可以训练出更通用的医学视觉基础模型。这些模型能够帮助医生在复杂的临床场景中精确地识别和定位病变区域,实现更准确的诊断和治疗。此外,SA-Med2D-20M数据集还可以用于开发医学人工智能,以促进诊断、医学图像分析、知识共享和教育等领域的发展。
解决学术问题
SA-Med2D-20M数据集解决了医学图像分割中缺乏大规模、多样化数据的问题。现有的公开数据集往往规模较小,且局限于单一环境、模态或解剖结构,无法满足构建通用医学视觉基础模型的需求。SA-Med2D-20M数据集包含了460万张2D医学图像和1970万个相应的掩码,涵盖了几乎整个身体和多种成像模态,填补了医学图像分割领域的空白。
衍生相关工作
SA-Med2D-20M数据集的发布推动了医学图像分割领域的研究。基于该数据集,研究人员可以训练出更通用的医学视觉基础模型,并将其应用于下游的医学应用,如肿瘤分割、器官分割等。此外,SA-Med2D-20M数据集还可以用于开发医学人工智能,以促进诊断、医学图像分析、知识共享和教育等领域的发展。例如,基于SA-Med2D-20M数据集,研究人员可以开发出能够自动识别病变区域的模型,从而辅助医生进行更准确的诊断和治疗。
以上内容由AI搜集并总结生成
用户留言
有没有相关的论文或文献参考?
这个数据集是基于什么背景创建的?
数据集的作者是谁?
能帮我联系到这个数据集的作者吗?
这个数据集如何下载?
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作