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

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

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

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

Q&A

解決済

2回答

25409閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

機械学習

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

0グッド

2クリップ

投稿2017/07/25 05:54

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

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

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

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

イメージ説明

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

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

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

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

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

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

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

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

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

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

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

guest

回答2

0

ベストアンサー

特に断りのない限り、画像は元論文からの引用です。
パラメータも本論文のまま、クラス数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/25 06:55

編集2017/07/26 03:44
LouiS0616

総合スコア35660

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

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

退会済みユーザー

退会済みユーザー

2017/07/25 21:44

回答ありがとうございます! 自分が想像していたものと全然違ったのですが、YOLOがどういうものなのか大分見えてきました 英語がかなり苦手なので、論文は避けていたのですが、こうも言ってられないので、コツコツと読んでいこうと思います あともう一つ質問してもよろしいでしょうか? 形を決めるのに必要なcondidenceとはどういったものなのでしょうか?
LouiS0616

2017/07/26 03:43

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

退会済みユーザー

2017/07/26 07:37

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

0

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

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

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

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

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

投稿2017/07/25 06:59

MasashiKimura

総合スコア1150

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

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

退会済みユーザー

退会済みユーザー

2017/07/25 21:47

ありがとうございます! 短径回帰とは、短径を予測する回帰問題という意味です。 わかりにくくてすいません YOLOが実装出来るようになったらYOLOv2の方にも挑戦しようと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問