SlimSAM-uniform-77项目介绍
项目概述
SlimSAM-uniform-77是一个创新的图像分割模型压缩项目,旨在将Segment Anything Model (SAM)压缩为更小、更高效的版本。该项目由新加坡国立大学Learning and Vision Lab的研究团队开发,主要贡献者包括Zigeng Chen、Gongfan Fang、Xinyin Ma和Xinchao Wang。
核心技术
SlimSAM采用了一种新颖的SAM压缩方法,通过统一的剪枝-蒸馏框架高效地重用预训练的SAM模型,无需进行大规模的重新训练。其主要技术亮点包括:
-
交替瘦身策略:将压缩过程分为渐进式的步骤,以增强从原始SAM继承知识的效果。
-
解耦模型结构的交替剪枝和蒸馏:不同于以往的剪枝技术,SlimSAM精心设计了解耦模型结构的交替剪枝和蒸馏方法。
-
无标签剪枝准则:提出了一种新的剪枝标准,使剪枝目标与优化目标保持一致,从而提高剪枝后的蒸馏效果。
性能表现
与原始SAM-H模型相比,SlimSAM-uniform-77取得了以下令人瞩目的成果:
- 参数量减少到原来的0.9%(5.7M)
- MACs(乘加运算次数)减少到原来的0.8%(21G)
- 仅需使用0.1%(10k)的训练数据
同时,SlimSAM在性能方面接近原始模型,并且在使用超过10倍少的训练数据的情况下,仍然显著优于其他SAM压缩方法。
应用场景
SlimSAM可以应用于各种图像分割任务,包括但不限于:
- 点提示分割:用户给定图像中的一个或多个点,模型分割出相应的目标。
- 框提示分割:用户给定包围目标的边界框,模型精确分割出目标。
- 全图分割:模型自动分割图像中的所有目标。
使用方法
研究人员和开发者可以通过Hugging Face平台轻松使用SlimSAM-uniform-77模型。以下是一个简单的Python代码示例,展示了如何加载模型并进行图像分割:
from transformers import SamModel, SamProcessor
from PIL import Image
import requests
model = SamModel.from_pretrained("Zigeng/SlimSAM-uniform-77").to("cuda")
processor = SamProcessor.from_pretrained("Zigeng/SlimSAM-uniform-77")
img_url = "https://huggingface.co/ybelkada/segment-anything/resolve/main/assets/car.png"
raw_image = Image.open(requests.get(img_url, stream=True).raw).convert("RGB")
input_points = [[[450, 600]]]
inputs = processor(raw_image, input_points=input_points, return_tensors="pt").to("cuda")
outputs = model(**inputs)
masks = processor.image_processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"].cpu(), inputs["reshaped_input_sizes"].cpu())
scores = outputs.iou_scores
总结
SlimSAM-uniform-77项目为图像分割领域带来了一个轻量级但功能强大的解决方案。通过创新的压缩技术,该项目成功地将SAM模型缩小到原来的不到1%,同时保持了接近原始模型的性能。这一成果不仅大大降低了模型的计算和存储需求,还为在资源受限的设备上部署高质量图像分割模型开辟了新的可能性。