【FASTER SEGMENT ANYTHING: TOWARDS LIGHTWEIGHT SAM FOR MOBILE APPLICATIONS】
本篇文章是个人看文献的一些总结和个人的想法,都是个人看过文章之后的理解,不保证一定是对的,如果我的理解有错,欢迎纠正。
(2023.7.1)
MobileSAM的动机
原始的SAM模型由于其庞大的图像编码器而不适合计算资源受限的移动设备。为了让SAM更加轻量化,文章提出了MobileSAM以便在移动设备上运行。
不同预训练的ViT对模型参数数量的影响:
原始SAM中默认的图像编码器是基于ViT-H的,参数超过600M,非常重量级,不适合在移动设备上使用。因此在计算资源受限的移动设备上使用SAM的关键在于将重型图像编码器替换为轻量级图像编码器,并保留原SAM的所有功能和特性。
几种不同的蒸馏策略
为了实现轻量化的SAM,文章提出了几种不同的蒸馏策略:
耦合蒸馏(Coupled distillation)
直接按照原始SAM的训练过程,重新训练一个具有较小图像编码器的SAM。
但是由于这种方法是从头训练整个模型,所以这种方法会耗费大量计算资源,因此不太现实。
半耦合蒸馏(semi-coupled distillation)
半耦合蒸馏中掩码解码器固定不变,只优化较小的图像编码器。 这样虽然减少了计算资源,但是由于掩码解码器固定,优化的过程仍然具有挑战。
解耦蒸馏(decoupled distillation)
直接从原始SAM的ViT-H编码器中蒸馏出一个较小的图像编码器,不依赖于掩码解码器的协同优化。
使用次方法得到的掩码足够接近原本SAM的掩码,因此后面的mask decoder部分的微调是属于可选择的。
实验部分
文章通过训练和推理来比较了耦合蒸馏和解耦蒸馏。结果发现解耦蒸馏在训练效率和性能保持方面都表现优异。
半耦合蒸馏中掩码解码器固定不变,由于需要优化较小的图像编码器,其优化难度较高,并且因为掩码解码器未经过优化,无法充分利用较小图像编码器生成的嵌入,导致性能提升有限。
通过解耦蒸馏方法,MobileSAM实现了显著的模型轻量化,同时保持了与原始 SAM 相当的性能。
使用mIoU评估分割掩码的准确性。
训练计算对MobileSAM性能影响的消融实验:
与FastSAM比较推理速度和性能: