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

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

ただいまの
回答率

89.21%

CNN 位置の違いで画像を分類することは可能か?

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 1,545

_Victorique__

score 1246

CNNにおいて、同じ物体を位置の違い(左右等)で分類することは理論上可能なのでしょうか?
私の見解としては不可能だと考えております。
これはどの程度の位置を分類するかにもよるとは思いますが、位置に依存しないCNNにおいて位置による分類ができるとは思えません。

しかし、実際に簡単なモデルで試してみた結果、収束し、分類できてしまいました。
もっと複雑なケースで試してみようとは思っています。
理論上、位置による分類は可能なのでしょうか?

左
Label : 左
右
Label : 右

モデル : VGG16
手法 : fine-tuning
画像処理 : ノイズ付与

イメージ説明

追記

学習済みモデルを使ってVGG16の最後のPooling層後の特徴マップを可視化してみました。

イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明

・特徴マップには様々な特徴があり、位置情報を掴めていないように見えるが、どの特徴を使えば
分類出来るかを学習することで位置の特徴として捉えている。
・7×7から1×1に畳み込んでないのを考えると位置情報はある程度残っていること。
・しかし、224×224の画像を7×7の32まで圧縮しているため位置情報は1/7程度だと推測されること。

が分かりました。
回答していただいたみなさん有り難うございました!

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 4

checkベストアンサー

+2

http://mp7.watson.ibm.com/ICCV2015/slides/iccv2015_tutorial_convolutional_feature_maps_kaiminghe.pdf
Faster R-CNN の資料です。
10ページくらいから「特徴マップには特徴と位置が出る」と説明・実証されています。
畳み込み層では、位置は残ります。畳み込みのフィルターには位置情報はありませんが、畳み込み演算の結果は位置が残ります。残らないならフィルター足り得ません。
分類するために1次元テンソルに変形しますが、これもある意味、位置が残っています。シャッフルするわけではないので、座標(0,0)から、順番に並んでいます。
ここから、「右にあるバット」と「左にあるバット」に分けたのですから、当然そうわけられる様に係数が調整されます。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/01/18 17:42

    回答有難うございます。
    正直自分が分からないのは特徴と位置の比率?影響度?の差です。
    特徴の方が良く出るのか、位置の方がよく出るのかです。
    ここはデータセットによって違ってくるのかもしれませんが。。
    質問に載せた画像ではうまくいっていますが、例えばバットの背景が絶えず変化しているようなデータセットだった場合に、果たして上手くいくでしょうか?こればっかりはやってみないと分からないものでしょうか?

    キャンセル

  • 2019/01/18 17:50

    資料を見てのコメントでしょうか?
    他にも「Grad-CAM」を解説する資料を探してみるといいと思います。
    自分で試すなら、畳み込み最終層の演算結果を0-1の範囲に正規化ぢて、255倍するとグレースケール画像と扱えます。整数化してOpenCVでプーリングによって縮小された分を拡大します。それを保存して、元の絵に重ねてみるといいと思います。

    キャンセル

  • 2019/01/18 17:54

    確かに可視化からの重ね合わせはいいかもしれませんね。
    試してみようと思います。
    有難うございました!

    キャンセル

+2

位置に依存しないCNNにおいて位置による分類ができるとは思えません。

位置に依存しないというのはどこで目にした情報でしょうか?

プーリングを入れてる場合、位置情報を荒くする効果がありますが、CNN は局所結合のニューラルネットワークなので、位置も特徴として抽出されます。
そうでなければ、物体検出などのタスクはできません。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/01/18 17:44

    8クラス(画像の領域を8つに分割)で実験してみました。
    ノイズを消してバットのみでやってみた結果、高い精度が出ました。
    現在はバットの背景を白にしていますが、これが画像によって変わっていたら果たして上手くいくでしょうか?やってみないと分からないかもしれませんが。
    Q71さんの回答のコメント欄を参照ください。

    キャンセル

  • 2019/01/18 17:48

    ディープラーニングはうまくいくかどうかを実験しないで概算するのは困難です。
    やってみたらこの場合だとうまくいった、こういう場合だとうまくいかなかったということしかわかりません。
    ディープラーニングの論文も「このモデル、パラメータで実験したらこうなった」ということしか基本的に書いてないです。

    キャンセル

  • 2019/01/18 17:54

    やはりやってみないと分からないというところですよね。
    やっていくうちに出来ること出来ないことがおおよそ予測出来るようになると思うので、
    このタスクをもう少し掘り下げて調べてみようと思います。
    最後まで回答してくださり有難うございます!

    キャンセル

+2

物体検出でバウンディングボックス(矩形)を出力できるのですから、一般論として位置による分類ができないなんてありえないでしょう。
バウンディングボックスの出力の後ろに1層付け加えれば左右を識別可能になるだろう、ということは容易に想像できるはずです。

物体検出として設計されていないVGG16のネットワークで十分に学習可能かどうか? はまた別の話ですが、質問者さんが「できることを確認した」という解釈になると思います。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/01/18 17:57

    質問のような画像を学習させたら十分に残る(ように学習される)だろうと思いました。

    キャンセル

  • 2019/01/18 17:58

    2重に投稿されてしまいました。すみません。

    キャンセル

  • 2019/01/18 17:59

    quiquiさんは相当な経験があると感じました。
    自分も実際に試してみて何か知見を得れるようにやってみようと思います。
    有り難うございました!

    キャンセル

0

順伝播に関しては追うのは難しくないので、実際の画像を入れたときの中間層出力を見てみれば納得感のようなものが得られると思います。やり方はググれば日本語で出てくるようです(良い時代になった)。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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