もうアノテーションで泣かない。SAM 3が変える画像解析の未来と実装のコツ
え?「SAM 3」について知りたいって? いいですねぇ、最新の技術!エンジニアとして、こういう「ガツン」とくる技術は大好物です。ちょっと呂律が怪しいかもしれませんが、中身はしっかり解説しますから、安心してついてきてくださいね。
さぁ、まずは一杯…あ、キーボードにこぼさないようにしなきゃ。
簡単に言うと、「画像の中の『これ!』を、めちゃくちゃ正確に切り抜いてくれる魔法の杖」です。
以前のバージョンも凄かったんですけど、SAM 3(Segment Anything Model 3)はさらに進化して、動画への対応や、より細かいディテール(髪の毛とかね!)の把握が上手くなってるんですよ。
エンジニア視点での「ココが助かる!」ポイントはこれ
アノテーション作業からの解放
「この画像、1ピクセルずつなぞって切り抜いといて」っていう地獄のような作業を自動化できます。
汎用性が異常
特定の物体(車とか犬とか)だけじゃなく、見たこともない物体でも「これ」って指せば認識しちゃう。
推論が速い
実装が洗練されてるから、私たちのアプリケーションに組み込みやすくなってます。
まずは、環境を整えましょう。ターミナルを叩くときは、指を滑らせないように気をつけて!
# 1. まずはリポジトリをクローンして中に入る
git clone https://github.com/facebookresearch/sam2.git
# ※注意:現時点ではリポジトリ名がsam2のままだったりするので、公式のURLをしっかり確認してね!
cd sam2
# 2. 必要なライブラリをインストール
pip install -e .
あ、それからチェックポイント(学習済みモデル)をダウンロードするのを忘れちゃダメですよ。これを忘れると、脳みそがないロボットみたいになっちゃいますから。
「画像から特定の場所を切り抜く」一番シンプルなコードを書いてみました。見てください、この美しさ…(ヒック)。
import torch
from sam2.build_sam import build_sam2
from sam2.sam2_image_predictor import SAM2ImagePredictor
# 1. モデルの準備(デバイスはGPU推奨!)
device = "cuda" if torch.cuda.is_available() else "cpu"
model_cfg = "sam2_hiera_l.yaml" # 設定ファイル
checkpoint = "checkpoints/sam2_hiera_large.pt" # ダウンロードしたやつ
sam2_model = build_sam2(model_cfg, checkpoint, device=device)
predictor = SAM2ImagePredictor(sam2_model)
# 2. 画像を読み込む
image_path = "osake_photo.jpg" # あなたの好きなお酒の画像
predictor.set_image(image_path)
# 3. 「ここを切り抜いて!」と座標で指定(x, y)
# おつまみの唐揚げが(500, 300)にあるとしましょう
input_point = np.array([[500, 300]])
input_label = np.array([1]) # 1は「ここを含めて」の意味
# 4. 推論実行!
masks, scores, logits = predictor.predict(
point_coords=input_point,
point_labels=input_label,
multimask_output=False,
)
print("切り抜き完了!さぁ、祝杯をあげましょう!")
これを導入すると、開発現場はこう変わります。
動画編集アプリ
背景をワンタップで消したり、動いている人にだけエフェクトをかけたり。
医療・製造業
顕微鏡画像から細胞を特定したり、製品の傷を見つけたりするのも、SAM 3が土台になります。
eコマース
商品写真を一瞬で白抜き加工。これ、手作業でやると目がチカチカするんですよねぇ。
SAM 3は、僕らエンジニアにとっての「最強のハサミ」です。 Metaがこんなに凄いものをオープンソースで出してくれるなんて、もう感謝の極みですよね。今夜はMetaのエンジニアたちに乾杯したい気分です。
導入自体は意外と簡単なので、まずはサンプルを動かしてみるのがおすすめですよ!
よし、私はもう一杯飲んで寝ますけど…