SAMを応用した
コンピュータビジョンの話
2024.7.20
製造ビジネステクノロジー部 SIN
自己紹介 2
平内真一(SIN)
クラスメソッド(株)
製造ビジネステクノロジー部
IoT関連のサーバーサイドエンジニア
アジェンダ
● コンピュータビジョン
○ SAM/深層学習/ファインチューニング
● SAM (Segment Anything Model) の応用
○ オブジェクト抽出
○ データセット生成
● 応用例
○ スーパーマーケットの缶ビール検出
○ 冷蔵庫の画像でおすすめレシピ紹介
○ 生産ラインでの外形監視
○ 製品のカウント
3
コンピュータビジョン
SAM/深層学習/ファインチューニング
4
Segment Anything Model 5
https://segment-anything.com/
Meta社 2023年4月5日
ファインチューニングなしであらゆる
物体のセグメンテーションを行う
Segment Anything Model 6
https://segment-anything.com/demo#
Segment Anything Model 7
https://segment-anything.com/demo#
Segment Anything Model 8
Segment Anything Model 9
Segment Anything Model 10
https://python.plainenglish.io/segment-anything-model-sam-a-friendly-exposure-9be2dd3128d6
コンピュータビジョンの実装に色々影響
ある意味、ゲームチェンジャーと言えるかも
コンピュータビジョン
カメラからの画像を処理することで、コンピ
ュータによる「視覚」を実現
コンピュータビジョンの実現方法の一つとし
て、ディープラーニング
11
機械学習 イメージ分類 12
https://github.com/Deci-AI/super-gradients
機械学習 物体検出 13
https://github.com/Deci-AI/super-gradients
機械学習 セグメンテーション 14
https://github.com/Deci-AI/super-gradients
機械学習 骨格検出 15
https://github.com/Deci-AI/super-gradients
機械学習 顔認証 16
https://github.com/ageitgey/face_recognition/blob/master/README_Japanese.md
機械学習
• イメージ分類
• 物体検出
• セグメンテーション
• 骨格検出
• 顔認証
• 画像検索
• 異常検出
• 人物追跡
• 動画分類
17
機械学習
• イメージ分類
• 物体検出
• セグメンテーション
• 骨格検出
• 顔認証
• 画像検索
• 異常検出
• 人物追跡
• 動画分類
18
深層学習(ファインチューニング) 19
https://pjreddie.com/darknet/yolo/
深層学習(ファインチューニング) 20
深層学習(ファインチューニング) 21
いぬ
ねこ
自動車
りんご
転移学習
ファインチューニング
深層学習(ファインチューニング) 22
データセット作成
学習
推論
深層学習(ファインチューニング) 23
データセット作成
学習
推論
深層学習(ファインチューニング))
優良なデータセット
• 正確なアノテーション
• 大量のデータ
24
SAMの応用
オブジェクト抽出
25
SAMの応用(オブジェクト抽出)
Segment Anything Model(SAM) では、
次の2種類の検出方法が提供されています。
● Automatically generating object
● Object masks from prompts
26
SAMの応用(オブジェクト抽出)
Automatically generating object
自動で画面全体を
セグメンテーション
27
SAMの応用(オブジェクト抽出)
Object masks from prompts
• 対象ポイント
• 非対象ポイント
• 矩形
組み合わせ可
28
SAMの応用(オブジェクト抽出) 29
対象オブジェクトの切り出し
SAMの応用(オブジェクト抽出) 30
対象オブジェクトの切り出し
SAMの応用
データセット作成
31
SAMの応用(データセット作成) 32
通常作業:データセット用の画像を用意する
SAMの応用(データセット作成) 33
通常作業:アノテーション設定
SAMの応用(データセット作成) 34
AHIRU,x1,y1,x2,y2
TOMATO,x3,y3,x4,y4
AHIRU,x1,y1,x2,y2
TOMATO,x3,y3,x4,y4
通常作業:画像+ラベル
SAMの応用(データセット作成) 35
Microsoft VoTT
https://github.com/microsoft/VoTT
SAMの応用(データセット作成) 36
SAMの応用(データセット作成)
質の高いデータセットを自動で大量に作成したい
37
SAMの応用(データセット作成) 38
オブジェクトを背景透過で切り取る
SAMの応用(データセット作成) 39
背景透過画像を背景に貼り付ける
画像の矩形が、そのままアノテーションとなる
SAMの応用(データセット作成) 40
プログラムで大量生成
SAMの応用(データセット作成) 41
サイズを変えたり
SAMの応用(データセット作成) 42
ノイズ・色調などでデータ拡張したり
SAMの応用(データセット作成) 43
回転を加えたり
SAMの応用(データセット作成) 44
背景も変更できる
SAMの応用(データセット作成) 45
以前:グリーンバックで撮影
SAMの応用(データセット作成) 46
以前:クロマキー処理で背景カット
SAMの応用(データセット作成)
クロマキー処理での限界
● グリーンバックの準備(サイズなど)
● 色相が同じものは抽出できない
47
SAMの応用(データセット作成) 48
色々なパターンが必要
SAMの応用(データセット作成) 49
できれば動画から自動出来る出したい
SAMの応用(データセット作成) 50
中央を維持するのが結構難しい
SAMの応用(自動切り出しツール) 51
サイズや中央に拘らず、常に対象オブジ
ェクトの全身が映ることだけに気を使う
SAMの応用(自動切り出しツール) 52
1フレーム目で選択、事後、追従
SAMの応用(自動切り出しツール) 53
ノイズが入ると追従ができなくなる
SAMの応用(自動切り出しツール) 54
最大マスクのみを残すことでノイズを排除
SAMの応用(自動切り出しツール) 55
SAMによるオブジェクト抽出 56
SAMの応用(合成)
プログラムによる背景との合成
57
SAMの応用(合成) 58
データセット生成(合成) 59
データセット生成(合成) 60
SAMの応用(データセット適用)
分類モデル・物体検出・セグメンテーション
61
SAMの応用(分類モデル) 62
余計な情報をカット
SAMの応用(物体検出) 63
矩形の座標を背景画像に適用させる
0,0
100,100
100,200
200,300
300,100
350,150
SAMの応用(物体検出) 64
回転の場合は
SAMの応用(物体検出) 65
変形後は、矩形の再計算が必要
データセット生成(物体検出)
データ形式を利用するモデルに合せる
66
データセット生成(物体検出)
推論
67
データセット生成(セグメンテーション) 68
ラベル・輪郭座標
データセット生成(セグメンテーション)
データ形式を利用する
モデルに合せる
69
データセット生成(セグメンテーション) 70
SAMの応用(データセット適用)
妥当な回転
妥当な拡大縮小
重なりも重要
71
応用例
スーパーマーケットの缶ビール検出
72
缶ビール検出 73
スーパーの商品棚
CVで解決できることは何かないだろうか?
缶ビール検出 74
画面上のどこにビールが写っているのか?
その銘柄は何か?
缶ビール検出 75
缶ビール検出 76
refrigerator(冷蔵庫)のみ検出されている
缶ビール検出 77
値札とかラベルも検出されてしまっている
缶ビール検出 78
缶ビール検出 79
なんとなく良い感じ
缶ビール検出 80
缶ビール検出 81
SAMで切り取ってデータセット作成
缶ビール検出 82
マスクで切り取った画像
回転台で撮影した画像
缶ビール検出
商品棚の缶ビールをセグメンテーションし、銘柄を検出する
83
缶ビール検出 84
缶ビール検出 85
応用例
冷蔵庫の画像でおすすめレシピ紹介
86
冷蔵庫の画像でおすすめレシピ紹介
The Multimodal And Modular Ai Chef:
Complex Recipe Generation From Imagery
マルチモーダルでモジュール化された AI シェフ:
画像からの複雑なレシピ生成
[Submitted on 20 Mar 2023]
87
https://arxiv.org/abs/2304.02016#
冷蔵庫の画像でおすすめレシピ紹介 88
冷蔵庫内の食品検出が必要
冷蔵庫内の食品が列挙できれば、
後は、Chat GPTが、うまくやってくれるハズ
冷蔵庫の画像でおすすめレシピ紹介 89
トマトと野菜のクリームシチュー
冷蔵庫の画像でおすすめレシピ紹介 90
サイズでフィルタしても、食品以外も検出されてしまう
冷蔵庫の画像でおすすめレシピ紹介 91
食品のデータセット
冷蔵庫の画像でおすすめレシピ紹介 92
食品以外のデータセット
冷蔵庫の画像でおすすめレシピ紹介 93
分類モデルで分別して食品のみを検出
応用例
生産ラインでの外観検査
94
生産ラインでの外観検査 95
異常のある製品を検出する
生産ラインでの外観検査 96
異常のある製品を検出する
生産ラインでの外観検査 97
生産ラインでの外観検査 98
生産ラインでの外観検査 99
生産ラインでの外観検査 100
生産ラインでの外観検査 101
生産ラインでの外観検査 102
生産ラインでの外観検査 103
生産ラインでの外観検査 104
生産ラインでの外観検査
10
5
生産ラインでの外観検査 106
https://github.com/CASIA-IVA-Lab/FastSAM
ある程度の速度が必要な場合、必須の選択になりそうです
応用例
製品のカウント
107
製品のカウント
10
8
製品のカウント 109
製品のカウント 110
画像:3,000枚. アノテーション:21,000個 約1時間
製品のカウント 111
学習 epoch:15 約1時間
製品のカウント 112
検出したオブジェクトの座標が中央を超えた時点でカウント
まとめ 113
● SAM (Segment Anything Model) の応用
○ 狙ったオブジェクトを抽出できる
○ 切り取ったオブジェクトで各種モデルのデータセットが作成できる
● 応用例
○ スーパーマーケットの缶ビール検出(抽出・分類モデル)
○ 冷蔵庫の画像でおすすめレシピ紹介(抽出・分類モデル)
○ 生産ラインでの外観検査(リアルタイム抽出)
○ 製品のカウント(制度の高い物体検出)
114
[YOLOv8 Instance Segmentation] 「きのこの山」に潜伏する「たけのこの里」を機械学習で見つけてみました 〜データセットは、
Segment Anything Modelで自動的に生成されています〜https://dev.classmethod.jp/articles/yolov8-instance-segmentation/
機械学習でスーパーマーケットの缶ビールを検出してみました 〜Segment Anythingでセグメンテーションして、YOLOv8の分類モデル
で銘柄を判定〜
https://dev.classmethod.jp/articles/beer-detection/
ぬいぐるみを検出するモデルをYOLOv5で作成し、ONNX形式に変換してRaspberryPIで使用してみました
https://dev.classmethod.jp/articles/segment-anything-yolov5-onnx/
Segment Anythingを使用して動画からデータセット用の画像を切り出してみました
https://dev.classmethod.jp/articles/sygment-anything-create-dataset-image/
[ChatGPT] 冷蔵庫内の写真から「おすすめレシピ」を受け取ってみました 〜食品は、Segment Anything と 転移学習した分類モデルで
検出してます〜
https://dev.classmethod.jp/articles/chatgpt-recomend-recip/
Meta AI の Segment Anything Model(SAM) でUSBカメラの映像からオブジェクトを抽出してみました
https://dev.classmethod.jp/articles/segment-anything-model-with-usb-cam/
YOLOv5でアヒルを検出するモデルを作ってみました。(NVIDIA Jetson AGX Orin + l4t-pytorch:r35.2.1-pth2.0-py3)
https://dev.classmethod.jp/articles/yolov5-nvidia-jetson-agx-orin/
[YOLOv8] 生産ラインを流れるアヒルを追跡して数をかぞえてみました
https://dev.classmethod.jp/articles/tracked-and-counted-with-yolov8/
115

Developer IO 2024 Odyssey SAMを応用したコンピュータビジョンの話