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

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

ただいまの
回答率

90.39%

  • 機械学習

    1015questions

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

【物体検出】YOLOについて詳しく知りたい

解決済

回答 2

投稿

  • 評価
  • クリップ 2
  • VIEW 14K+
退会済みユーザー

退会済みユーザー

物体検出に興味があり、その中でも比較的簡単そうなYOLOに挑戦したいと思っています。
主に以下のサイトを参考にさせていただいているのですが、自分の解釈が合っているのかや疑問についてご教授頂きたいです
http://tech-blog.abeja.asia/entry/object-detection-summary

【自分の解釈yoloに対する解釈】
まず、画像を任意の個数に分割します。
この記事では7*7で行っているので、以降は7*7で分割を行っている前提とします

そして49個のブロックに対して、これが何の物体なのか、もしくはただの背景なのかを分類問題で学習させていきます。

それと同時に、検出させたい物体の各ブロックに対して、真ん中を中心として、囲う線までの距離を回帰問題として学習させていきます。

イメージ説明

この画像であれば、緑色の点が中心点とすれば、それぞれの緑色の点から水色の線まで、上下左右どのくらいの距離があるのかを学習させていく

ここまでが自分の解釈なのですが合っているでしょうか?

【疑問点】
yoloの弱点として、1つのブロックに対して、1クラスしか分類できないというのはわかるのですが、検出できる物体の数は2つという制約を設けているというのはどういう意味なのでしょうか?
この記事の画像では、犬と自転車の線が被っているブロックがいくつかありますが、同じブロックで3つの線を囲う事は出来ない、という事で合っていますか?

また各ブロックが示した矩形回帰は必ずしも均一になるわけではないと思うのですが、これは平均値を取って矩形を描写させるという事でいいでしょうか?

また矩形回帰の欠損値は二乗和誤差でいいのでしょうか?

詳しい方いらしたらよろしくお願いします

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

+3

特に断りのない限り、画像は元論文からの引用です。
パラメータも本論文のまま、クラス数Cは20、分割数Sは7、セルごとのボックス候補数Bを2とします。


YOLOはEnd-to-Endのネットワークの究極形に近いものです。
とりあえず、入出力を確認してみましょう。
ネットワーク構造

入力は448x448x3、これは元画像(3ch)です。出力は7x7x30、こっちに着目する必要があります。

ご指摘の通り、YOLOでは画像を7x7分割して物体検出/識別を行います。
一つのセルに対して30次元の情報があるのですが、その内訳は次のようになっています。

  • クラスごとの所属確率 (20次元)
  • セルごとのバウンディングボックス(BB)候補数 (2個/セル)
    x BBの位置と形を表すのに必要なパラメータ (5次元: x, y, width, height, confidence)

よって、30 = 20 + (5 x 2)です。


49個のブロックに対して、何の物体なのか、ただの背景なのかを分類問題で学習させる。

YOLOでは背景クラスを用意していません。20クラスそれぞれに対する尤度が計算されます。
ちなみに、背景の誤検出が少ないのもYOLOの強みの一つだったりします。


各ブロックに対して、真ん中を中心として、囲う線までの距離を回帰問題として学習させる。

さきほども述べたように、(x, y, width, height, confidence)を計算しているだけです。
相対座標だったか絶対座標だったかはちょっと覚えてないですが、前者だったような...
本家の実装が公開されているので、かなりの根気を要しますが、読んでみても良いでしょう。


それぞれの緑色の点から水色の線まで、上下左右どのくらいの距離があるのかを学習させていく

セルごとにBBが決定されるので、セル同士の干渉はないです。


YOLOの弱点として、検出できる物体数は2つという制約を設けているのはどういう意味か?

さきほども述べたように、『セルごとのBB候補数』がネットワークの形状に影響するためです。


各ブロックが示した矩形の平均値を取っているのか?

矩形のうち、一定以上confidenceが高いものを選んでいるはずです。
実際に動かしてみると、複数のBBが同じ物体を囲むことはしばしばあります。


矩形回帰の欠損値は二乗和誤差か?

元論文には以下のように書いてあります。

We optimize for sum-squared error in the output of our model.

矩形回帰/クラス分類に分けて誤差を計算しているわけではないかと思います。


正直、私自身うろ覚え/理解不足な点も多くあります。
強い関心がありますようなら、元論文を読んでみるといいですよ。YOLOは読みやすいです。

もう一度リンクを張っておきます。

...はい、見てわかるように、YOLOの開発陣は中二病をこじらせていることに定評があります。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/07/26 06:44

    回答ありがとうございます!
    自分が想像していたものと全然違ったのですが、YOLOがどういうものなのか大分見えてきました

    英語がかなり苦手なので、論文は避けていたのですが、こうも言ってられないので、コツコツと読んでいこうと思います

    あともう一つ質問してもよろしいでしょうか?
    形を決めるのに必要なcondidenceとはどういったものなのでしょうか?

    キャンセル

  • 2017/07/26 12:43

    失礼しました、condidenceはconfidenceの誤植です。修正しておきますね。
    バウンディングボックスに対する確信度といった感じですかね。

    キャンセル

  • 2017/07/26 16:37

    なるほど、ありがとうございます。
    それが高い奴を優先して描写するという事なんですね

    キャンセル

+1

そのブログの解釈は少しだけ誤っています。
YOLOが検出できる1ブロックあたりのバウンディングボックスの数は B であり、論文中の実験で B=2 が用いられているということです。しかし、このBを無限に大きくできるかというとそうではなく、速度と精度に影響します。

矩形回帰というのはよくわかりません。どういうものでしょうか?

損失関数には論文中で定義されている multipart loss というものを使います。2乗誤差を拡張したようなものです。

YOLOについては改良版である YOLO9000 が存在します。そちらの方が良いかもしれません。

"yolo github" などで検索すると実装も見つかりますよ。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/07/26 06:47

    ありがとうございます!
    短径回帰とは、短径を予測する回帰問題という意味です。
    わかりにくくてすいません

    YOLOが実装出来るようになったらYOLOv2の方にも挑戦しようと思います!

    キャンセル

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

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

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

  • 機械学習

    1015questions

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