EdgeSAM 项目介绍
项目概述
EdgeSAM 是一个经过优化的分割模型,旨在提高边缘设备上的执行效率,同时尽量保持性能的完整。与原始的Segment Anything Model (SAM) 相比,EdgeSAM 的运行速度提升了40倍,相比 MobileSAM,在边缘设备上部署时,速度提升了14倍。同时在COCO和LVIS数据集上的平均交并比(mIoUs)分别提高了2.3和3.2,成为第一个能够在iPhone 14上以超过30帧每秒(FPS)运行的SAM变体。
技术背景
EdgeSAM通过将原始的基于视觉Transformer(ViT)的图像编码器转换为完全基于卷积神经网络(CNN)的架构,提高了在边缘设备上的适用性。为了确保模型能够准确捕获用户输入与掩码生成之间的复杂动态关系,项目团队在蒸馏过程中不仅包括了提示编码器和掩码解码器,还引入了盒和点提示。
性能表现
在性能测试中,EdgeSAM展示出优异的表现。在COCO数据集上,EdgeSAM使用1% SA-1B训练集时达到42.2的COCO AP,速度在iPhone 14上达到38.7 FPS,在NVIDIA 2080 Ti上为164.3 FPS。相比之下,原始的SAM则在使用SA-1B完整训练集时达到46.1的COCO AP,其在2080 Ti上运行速度仅为4.3 FPS。
EdgeSAM的创新性在于其能够在性能与速度之间取得良好平衡,非常适合于在资源有限的设备上进行高效部署。
使用指南
要使用EdgeSAM,用户需要安装Python 3.8或更高版本及PyTorch 2.0.0。项目代码可以通过GitHub克隆,安装所需的依赖关系后,即可运行。例如,通过以下代码可以在Python中使用EdgeSAM:
from edge_sam import SamPredictor, sam_model_registry
sam = sam_model_registry["edge_sam"](checkpoint="<path/to/checkpoint>")
predictor = SamPredictor(sam)
predictor.set_image(<your_image>)
masks, _, _ = predictor.predict(<input_prompts>)
相关应用
EdgeSAM已经被集成到多个工具中,如X-AnyLabeling、ISAT和Grounded-Segment-Anything。并且已经有一款iOS应用程序 CutCha 上线,该应用由EdgeSAM提供支持。
总结来说,EdgeSAM在边缘设备上的高效表现和易用性,使其在需要实时图像分割应用时成为一个非常有吸引力的选择。未来,随着更多平台的集成和应用的推出,EdgeSAM预计将在图像处理领域发挥更重要的作用。