見出し画像

Segment Anything Model(SAM),Meta AIを使ってみた

Segment Anything Model(SAM),Meta AIのリンクは↓の通りです。

画像認識の基礎知識
画像認識は、以下の3つに分けることができます。

  1. 分類(Classification)
    →🐕がいる場合、「犬」「動物」等に分類(単体に有効)

  2. 領域検出(Semantic Segmentation)
    →🐕🐈🐈がいる場合、「犬」「猫」をpixel単位で抽出
     (物体の抽出はせずに、Pixcel単位で色分けするイメージ)

  3. 物体検出

    1. Object Detection
      →🐕🐈🐈がいる場合、「犬A」「猫A」「猫B」の複数の物体を抽出

    2. Instance Segmentation
      →🐕🐈🐈がいる場合、「犬A」「猫A」「猫B」をpixel単位で抽出

Instance Segmentationは、Semantic Segmentationと異なり、1つの画像の中に同一ラベル(猫)がある場合、それぞれ別の猫として抽出することができます。(物体の検出)
よって、Semantic Segmentationで、🐈🐈が重なっている場合は境界線が分からず、1つの「猫」として色分けされます。

Segment Anything Model(SAM)を使ってみた
上部のリンクから、SAMの機能を試すことができます。結果は以下の通りです。

左:インプット画像、右:SAMで画像認識後のデータ

SAMは、複数の物体を抽出できるのでInstance Segmentationのような機能はあるものの、物体以外(椅子)も色分け(領域を分割?)している点が特徴です。
Instance Segmentationの有名なモデルとしてYOLOがあります。おそらくYOLOであれば椅子も物体として認識されると思います。(試した画像が悪いという話もあります)

Segment Anything Model(SAM)の効果
画像生成AIモデルのトレーニングをする場合、アノテーションデータ(ラベル付きデータ)が重要になります。LabelMe等のアノテーションツールを使い、手動でのアノテーション作業が必須でしたが、SAMにより大まかなアノテーションをできるようになったと思います。(データ準備コストが格段に安くなる?)
色々実験してみましたが、別ラベル(上記であれば「🍏」「皿」「机」)との領域分割が素晴らしかったです。

SAMの課題点(敢えて言うと・・・)
物体の全体像が写っていないと1つの物体として扱われない可能性があります。(↓の椅子)領域分割の程度が調整できると、より便利かもしれません。

左:インプット画像、右:SAMで画像認識後のデータ

最後に
GitHubにソースがあるので、後日ローカル環境で実行してみたいと思います。


いいなと思ったら応援しよう!