Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SSDモデルによる物体検出
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
BruCandy
May 20, 2025
0
15
SSDモデルによる物体検出
学園祭で展示したスライドです。
BruCandy
May 20, 2025
Tweet
Share
More Decks by BruCandy
See All by BruCandy
SDカードとのアクセス(FAT32について)
brucandy
0
23
Featured
See All Featured
We Are The Robots
honzajavorek
0
150
Measuring & Analyzing Core Web Vitals
bluesmoon
9
740
Become a Pro
speakerdeck
PRO
31
5.8k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
170
Docker and Python
trallard
47
3.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Chasing Engaging Ingredients in Design
codingconduct
0
110
The Curse of the Amulet
leimatthew05
1
7.9k
sira's awesome portfolio website redesign presentation
elsirapls
0
140
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Transcript
SSDモデルによる物体検出 ~リアルタイム物体検出アプリケーション~ BruCandy Rabbit:1.00 elephant:0.98 bird:0.78
物体検出とは 以下のように、ある物体がどのクラスに属するかだけではなく、 その物体の位置を特定する。 物体検出は一つの画像から複数の物体を特定することができる。 画像中の枠をBounding Box(Bbox)と呼ぶ。 今回の物体検出ではSSDモデルを使用する。
SSDの構造 • 以下のような構造にすることで、小さい物体と大きい物体を検 出できるようにしている。 VGG層 extras層 loc&conf層 out1 out2 out3
out4 out5 out6
SSDの構造(locとconf層の中身) out1 out2 out1 out4 out5 out3 out6 conf loc
1 1 2 2 6 5 6 5 4 4 3 3
学習と推論の流れ ・学習 ①データの前処理をする。 ②各特徴マップの各セルごとにいくつかのデフォルトボックス(Dbox) を作る。 ③前処理したデータをネットワークに入れる。 Dboxごとにloc(オフセット値)とconfを求める。 ④教師データとネットワークの出力値を比較して損失値を出す。 ⑤損失値が減るようにパラメータを更新する。 ⑥以上をエポック数分繰り返す。
Dboxとは Bboxの元となるbox。右図のよう に一つのセルにつき、いくつかの 形のDboxがあり、特徴マップを埋 め尽くすように配置されている。 すべてのDboxについてlocとconf を求めて、 locを使ってBboxにし て、それぞれの物体につきconfを もとに一つのBboxを決定する。
教師データの作成 各画像のBboxの座標をそのまま教師データには使用しない。そ れぞれのDboxがIoU値をもとに最もマッチするBboxをそれぞれ の画像で求める。そして、そのBboxのクラスとオフセット値 (DboxとBboxの座標がどれだけ離れているのか)が教師データ となる。 Bbox(xmin,ymin,xmax,ymax) Dbox(cx,cy,w,h) True(Δcx, Δcy,
Δw, Δh)
IoU(Intersection over Union)値とは IoU値=(A∩Bの面積)/(A∪Bの面積) A∩B A∪B
学習と推論の流れ ・推論 ①検出したいデータの前処理をする。 ②前処理したデータをネットワークに入れる。各Dboxごとに locとconfを求める。 ③ locをもとにDboxをBboxに変換する。その後、各クラスごとに IoU値を利用して同じ物体を指しているか調べる。 同じ物体を指している場合は、最も大きいconfを持つBbox以外 は削除する。つまり、各物体はそれぞれのクラスの最もconfが
大きいBboxを持つ。 ④残ったBboxの座標をもとに、元のデータ上にBboxを描写する。
実際にVOC2012を使って、学習と推論 VOC2012について クラス数は20(人、犬、猫など) データの数は約11,540枚 時間の都合上、30epochで切り上げた。過学習は起こっていなかったため、epoch数を増やすことで 精度はもっとあげられた。 (過学習とは、訓練画像に過剰に適用しすぎて、汎化性能を失ってしまうこと) 以下のように検出に成功した
オリジナル画像で物体検出 公開されている画像だけではなく、自分で写真を撮り、バウンディングボックスを作って物体検出をする。 今回はお気に入りのグミである“つぶグミ”、“かむかむレモン(グミ?)”の二種類の検出を目標にした。 学習に使用したデータ数は少ないが、検出する種類は少ないため精度はそこそこ。ただし、学習データに 背面を映した写真は入れていないので検出は表面に限る。 それぞれのグミの写真は350枚ずつ用意した (150枚は一つ入り、残り200枚は二つ入る。つまり合計700枚。) 学習データ数:評価データ数=8:2 使用したアノテーションツール Vott
(アノテーションツールはバウンディングボックスを作るのに使用) かむかむレモン つぶグミ
結果 以下のようにごちゃごちゃ とした状況でも検出に成功 した。 しかし、以下のようにうまく 検出ができないこともあった。
リアルタイム物体検出アプリケーション 精度にやや問題があるが、このグミ検出器を使ってリアルタイム物体検出アプリケーショ ンを作る。“リアルタイム”に物体(グミ)を検出するWebアプリである。 仕組みは以下の通り。 環境構築が面倒だったからGPUはwsl上で動かして、webカメラはwindowsで動かしている。 そして、webカメラを使うのはpythonのVideoCaptureを使いたかったから以下のようにや やこしくなってしまった。 フロント サイド API1
API2 要求 キャプチャした画像 検出した画像と ラベルのリスト 検出した画像と ラベルのリスト webカメラを使う 物体の検出
実際に使ってみる 1. Startボタンを押す 2. 画像が読み込まれるまで待機 3. Webカメラでキャプチャした 画像を表示 4. 対象のグミをWebカメラでとらえる
5. 対象のグミを検出したら、詳細ボタン を押す 6. 詳細画面が表示される
実際に使ってみる(2) 他の対象のグミでも同様 の操作が行われる 対象のグミを二つ以上検出してしまった場合は上の 写真のようにメッセージが表示される。
終わりに 検出の精度や、通信間の問題など改善点は多くあるが今回の Webアプリ制作の経験は他の様々な場面で活かせると考えた。 今後もサークルでの制作活動を楽しみたい。 以上で終わりです。 ここまでご覧いただき、ありがとうございました。