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

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

ただいまの
回答率

90.60%

  • 機械学習

    644questions

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

  • TensorFlow

    634questions

  • 深層学習

    137questions

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

受付中

回答 3

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 707

leilei

score 31

最近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に利用される目的だ!

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+3

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/13 17:41

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

    キャンセル

  • 2018/03/13 17:43

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

    キャンセル

+2

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

http://web.eng.tau.ac.il/deep_learn/wp-content/uploads/2018/01/YOLO9000.pdf

https://github.com/leetenki/YOLOv2/blob/master/YOLOv2.md

論文以外に。

最後のが一番わかりやすいかもしれませんが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/14 18:51 編集

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

    キャンセル

  • 2018/03/19 03:55

    追記の解説を拝見しました。
    スッキリまとめられているように思います。

    KMeansは精度と速度を同時に向上させるテクニックです。
    YOLOは幅等を直接予測しようとして精度の問題がありました。
    SSDは決まった大きさのAnchorBoxを使っていたので、様々なカテゴリに対して精度を高めるのにはたくさんのボックスが必要で、その結果速度が犠牲になりました。(違う理由もあるかも)
    https://qiita.com/de0ta/items/1ae60878c0e177fc7a3a

    これに対して、AnchorBoxを使いつつ、その幅等を判別しようとしているものに特化させることによって、少ない数でありつつ、高い精度を達成できて、速度も素晴らしい、というのが結論だったように思います。

    キャンセル

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/19 03:30

    The location of the anchor box is the center of the grid cell within which the ground truth box falls.

    GridCellなしでどのようにAnchorBoxの中心を選ぶのですか?

    キャンセル

  • 2018/03/21 11:33 編集

    mkgreiさん 
    お返答ありがとうございます!

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

    キャンセル

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

  • ただいまの回答率 90.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • 機械学習

    644questions

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

  • TensorFlow

    634questions

  • 深層学習

    137questions