Segment Anything Model (SAM) 是由 Meta AI 開發的革命性圖像分割模型,它能夠對圖像中的任何物體進行分割,無需針對特定類別進行訓練。SAM 具有以下特點:
- 通用性:可以分割任何視覺對象,無論是否見過該類別
- 靈活性:支持多種輸入提示(點、框、掩碼或文本)
- 實時性:在普通 GPU 上可實現實時分割
- 零樣本遷移能力:可直接應用于新的圖像分布和任務
SAM 的核心是一個Transformer架構的編碼器和一個輕量級解碼器,能夠根據輸入提示高效生成高質量的分割掩碼。
使用代碼案例
以下是使用 Segment Anything Model 進行圖像分割的示例代碼:
import numpy as np
import torch
import matplotlib.pyplot as plt
from PIL import Image
import requests
from io import BytesIO
from segment_anything import sam_model_registry, SamPredictor# 設置中文字體
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]def load_image(url):"""從URL加載圖像"""response = requests.get(url)image = Image.open(BytesIO(response.content)).convert("RGB")return np.array(image)def show_mask(mask, ax, random_color=False):"""顯示分割掩碼"""if random_color:color = np.concatenate([np.random.random(3), np.array