質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

3回答

1031閲覧

YOLO の "Dimension Cluster" と "Non-Maximum Suppression"

leilei

総合スコア39

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

3グッド

3クリップ

投稿2018/03/09 04:40

編集2018/04/29 03:25

最近YOLO(V2)に惚れてますが、

下記の2つのキーテクニックに理解できていないので、ご説明頂ければ幸いです。

Q1: bounding boxに対する**"Dimension Cluster"**を行うそうですが、
具体的にどのようにやって、どんな量を得ようとするのでしょうか?
例えば、訓練画像の平均bounding boxの高さと幅でしょうか。それとも。。。

Q2: IoUという指標の数学的意味は分かりますけれども、使用上の意味は分かりません。
どうしてこれで、"Non-Maximum Suppression"ができるのでしょうか。
因みにIoUの値が大きいほど良いのでしょうか、それとも反対?

どうぞ宜しくお願いします。

======解決済みとは言えないので、★不適切な処ご指摘お願い致します★=========

●● 試しにYOLOV2のキーテクニックを解説 ●●

【根拠】
https://medium.com/@vivek.yadav/part-1-generating-anchor-boxes-for-yolo-like-network-for-vehicle-detection-using-kitti-dataset-b2fe033e5807

【bounding boxの選出原理】

  1. anchor boxは縦と幅のsize、aspect(縦と幅の比)が人間に事前指定された幾つかの値(E.g, 5か8 etc)を持つ四角形である。

(勿論人間指定には主観性がある。大体車は幅のほうが長い、人間は縦のほうが長い----幾つか限られた実用的なobjectを想定して決める!? )
2. bounding boxは画像に存在するobjectを囲むboxの候補である。
3. anchor boxとbounding boxは違う役で、両者が全く一致となるのは稀なケース。
4. anchor boxはgrid cellの中心を自分のlocation中心とする。
5. bounding boxの中心はgrid cellの中の任意の位置に存在する可能
(★ これこそcellというやつの存在意義: bounding boxの中心位置に一定の自由度を与え、具体座標値はDNNが出力してくれる)
6. anchor boxのsizeとaspectは事前固定だが、個々bounding boxのsizeとaspectはDNNでの学習で決める
(但し、bounding boxの数は人間が指定!)
7. 個々bounding boxの中に存在するobjectの名前(= annotation = “ground truth label”)は中心が同じgrid cellに存在する某anchor boxが持っているannotationにする。
8. ↑どのanchor boxのannotationにするかに関しては、中心が同じgrid cellに存在するbounding boxと諸anchor boxとのIOUの値の大きさによって決められる。
9. ↑IOUが1に一番近いanchor boxのannotationがbounding boxの中に存在するobjectのannotationとし、そのbounding boxを”本命”として選ばれる
10. ↑但し、囲む領域にobjectの存在確率が閾値以下であるanchor boxは対象外

【K-Mean Clusteringの役割】

1.これはあくまでも指定・特定の画像DBを対象とするK-Mean Clustering 処理である。
即ち、その特定の画像DBの諸画像の中に含まれている色々Objectの縦、幅ペアに対するClustering.

2.K-Mean Clusteringなので、結果はClustering予定数に左右されがちである。
これも人間が指定して上げなければならない。。。
★ DNNと言っても人間の「経験」と「主観」が基盤。

3.Clusteringの予定数が大きいほど、各Clusterの縦、幅分布範囲が狭くなり、学習対象とする画像DBにおいてIOUが1に近づいて行く。。。
4.各Clusterの中心縦、幅が諸objectの代表サイズとし、anchor boxの縦、幅にする-----5ペアや8ペア程度に決める。
↑この4こそK-Mean ClusteringがFOLOV2に利用される目的だ!

mkgrei, oookabe, IS.SEKI👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Q2: IoUという指標の数学的意味はあかりますけれども、使用上の意味は分かりません。
どうしてこれで、"Non-Maximum Suppression"ができるのでしょうか。
因みにIoUの値が大きいほど良いのでしょうか、それとも反対?

IoUはIntersection over Unionで2つの矩形がどの程度重なっているかを表しています。完全に一致しているペアで1, まったく重なりがないペアでは0の値を取ります。つまり、IoUが高いペアはおなじ場所を検出している可能性が高いと考えられます。一つの物体を複数の矩形で検出してしまうと、見つけたい物体の数よりも検出数が多くなってしまいますので、これを抑えるためにIoUが高いペアはスコアが高いものに代表させましょう、というのがNMSの考え方です。

投稿2018/03/09 04:46

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

leilei

2018/03/13 08:41

ご教授有難うございます。
leilei

2018/03/13 08:43

bounding boxに対する"Dimension Cluster"に関して、
guest

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

leilei

2018/03/14 09:54 編集

mkgreiさん 情報有難うございました! 最初のリンク以外、実は以前読んだ事ありますが、効果画像ばかりで、肝心なテクニックに関して具体に説明されなかったのです。 最初のリンクは良かったのです! それに基いて自分なりに解説してみました。 質問欄に追加したので、もしご覧いただけるなら、不正な所にご指摘頂ければ、幸いと思います。
mkgrei

2018/03/18 18:55

追記の解説を拝見しました。 スッキリまとめられているように思います。 KMeansは精度と速度を同時に向上させるテクニックです。 YOLOは幅等を直接予測しようとして精度の問題がありました。 SSDは決まった大きさのAnchorBoxを使っていたので、様々なカテゴリに対して精度を高めるのにはたくさんのボックスが必要で、その結果速度が犠牲になりました。(違う理由もあるかも) https://qiita.com/de0ta/items/1ae60878c0e177fc7a3a これに対して、AnchorBoxを使いつつ、その幅等を判別しようとしているものに特化させることによって、少ない数でありつつ、高い精度を達成できて、速度も素晴らしい、というのが結論だったように思います。
guest

0

回答でなくてすみませんが

https://medium.com/@vivek.yadav/part-1-generating-anchor-boxes-for-yolo-like-network-for-vehicle-detection-using-kitti-dataset-b2fe033e5807

に関するleileiさんの解読文に非常に勉強になりました。有難う御座います!

自分も原文を読みましたけれども、 anchor boxの存在意味が分かりましたが、
grid cellの存在意味は分からないですね。

だって、bounding boxの中心位置はanchor boxのアリア内でOKし、bounding boxが一番対応する可能性の高いobjectもどれかのanchor boxのそれですね。

じゃー
grid cellの役割は何でしょうか。

投稿2018/03/15 02:57

oookabe

総合スコア126

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mkgrei

2018/03/18 18:30

The location of the anchor box is the center of the grid cell within which the ground truth box falls. GridCellなしでどのようにAnchorBoxの中心を選ぶのですか?
oookabe

2018/03/21 02:33 編集

mkgreiさん  お返答ありがとうございます! GridCellは単にAnchorBoxの中心を選ぶためのでしょうか。 通常callと言えば、一定の面積や特定の内容のあるエリアであって、画像処理分野では処理の単位とされます。 単に位置決め(AnchorBoxの中心)のためなら、もったいぶったや大げさに感じますね。 AnchorBoxの中心って一定の間隔で固定位置に決めたければ、cell云々より格子の交差点にすれば、単純明快ですね。  要はcellってYOLOにおいて、他の用途でもあるのでは?と。 思い過ぎかな。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問