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

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

ただいまの
回答率

90.34%

  • Python

    9279questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • 機械学習

    771questions

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

  • TensorFlow

    760questions

  • 深層学習

    157questions

DNNについてこの考え方が正しいかどうか

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 270

IS.SEKI

score 15

例えば文字Aを認識しようとします。
訓練の時Aが画像のどこにも現れる可能性があるとします(Aの位置が不定)。

このような場合でも、繰り返し繰り返しpooling(down sampling)によって異なるpixel同士が結局皆近傍関係を持つことになるので、
本番TEST時にAがどこに現れても、認識・検出できるということですね?

宜しくお願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

+4

poolingは移動や微妙な形の違いに対してロバストになるだけです。
イメージとしては、4*4 pixelの画像の(0,0)(0,1)(1,0)(1,1)の座標の情報が、2*2 pixelの画像の(0,0)にすべて押し込まれる感じ。
何もしないよりは圧倒的にマシになりますが、たとえば「画像の左上にだけ出現する物体を学習させて、画像の右下に同じ物体が出てきたとき、左上に出てきたのと同等の精度で分類できる」というような夢のような機能ではありません。だからこそ、データを拡大縮小したり、左右反転したり、トリミングしたりして水増ししてやる、というアプローチが有効なものとして受け入れられている訳です。


ただし、上の話は素直にmax poolingした場合を強く意識しています。
最近の高性能なCNNはalexnetみたく素直にmax poolingというのは少ないようです。なので、pooling手法を工夫している近年のCNNであれば、けっこう有効に働く可能性は否定はできません。
けっきょく程度問題なので、poolingがすべてを解決するみたいな話ではないと思いますが・・・。

参考:
畳み込みニューラルネットワークの最新研究動向 (〜2017)
Global Average Pooling(GAP)を理解してみる

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/06/25 15:23 編集

    hayataka2049 様
    分かりやすいお返答ありがとうございます。

    Global Average Pooling(GAP)を読ませていただきました。
    こちらの説明も非常に素晴らしいですね。
    特にその図が良かったと思います。
    理屈的な面では、mapのdimがすでに十分に小さくなっていて(7×7),
    さらにFully Connected + Dropoutが効いている以上、
    (7×7)の平均を取って使うのも問題ないと直感します。

    些細な事ですみませんが、図の中に二つの『fully connected + ReLU』(水色) :
    "1×1×4096" と "1×1×1000" の中の "1×1"はどういう意味でしょうか。
    また宜しくお願い致します。

    キャンセル

  • 2018/06/25 17:54 編集

    ちょっと厳密さに欠けるかもしれませんが、あえて言えば1×1×4096なら4096次元のベクトルと同じ、ということです

    キャンセル

  • 2018/06/25 22:55

    flatten後のdenseを変な書き方をしていますね。VGG-16だと一般的な表現でしょうか…

    キャンセル

  • 2018/06/26 12:31

    hayataka2049さん
    お返答ありがとうございます。
    hayataka2049さんが書かれました:
    >あえて言えば1×1×4096なら4096次元のベクトルと同じ、ということです
    この場合、もし
    「2×2×4096」 や「 2×3×4096」なら 何を意味するのでしょうか。
    要は"2×2" や "2×3" に具現されている概念的な事を知りたいのです。

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

    キャンセル

  • 2018/06/26 13:01

    最後の次元がチャンネルの数です。
    例えばrgbの256x256ピクセルの画像は256x256x3とみなせます。
    1x1x4096は1x1つまり1ピクセルが4096チャンネル分あるものです。

    キャンセル

  • 2018/06/26 18:25

    回答者の代わりに説明していただいてありがとうございます
    けっきょくやることは4096ユニットの全結合層に突っ込むだけなので、あまり深い意味はないってことで良い訳ですよね

    キャンセル

  • 2018/06/26 18:25

    ご教授有難うございます。
    頭が鈍くて御免なさい!
    もしかして、"1x1"、"2×2"や "2×3"の部分はfilterのdimでしょうか。
    それはCNNの話として覚えていますが、『fully connected』層にもfilter概念があるのでしょうか。

    キャンセル

  • 2018/06/26 18:54

    >もしかして、"1x1"、"2×2"や "2×3"の部分はfilterのdimでしょうか。
    >それはCNNの話として覚えていますが、『fully connected』層にもfilter概念があるのでしょうか。
    ではないですね。最初の2つは端的に言えば画像の縦横に対応するものです
    これを減らす処理がpoolingに対応します。画像を縮小していくようなもの
    それで畳み込みすると、フィルタの形と数に応じて最後の次元が増えたり減ったりしていく訳です

    キャンセル

  • 2018/06/27 13:34 編集

    hayataka2049 様
    有難うございます。
    >これを減らす処理がpoolingに対応します。画像を縮小していくようなものそれで畳み込みすると、フィルタの形と数に応じて最後の次元が増えたり減ったりしていく訳です。

    Q:単にdown/up samplingの話でしょうか、それとも畳み込みと『逆畳み込み』の話でしょうか。
    ----------
    ここでいう『逆畳み込み』とは本当の『逆畳み込み』ではなくDNN分野の独特の呼び方 ➡ subpixelに対する 畳み込みでup samplingのような事です。

    キャンセル

  • 2018/06/27 13:55 編集

    上の自分のコメントを読み返したら、指示語が雑で我ながらよくわからないコメントになっていた・・・すみません、書いたときちょっと眠かったんです。そのコメントの最後の行は1つの上の行と上とつながってないんだな・・・
    poolingと畳込みは別物だし、逆畳み込みは今回考えているような識別モデルでは出番はないでしょう。ダウン/アップサンプリングも関係あるかどうかは微妙な気がする

    キャンセル

  • 2018/06/27 14:01

    畳み込みに応じて最後の次元が増減するというのは、フィルタが複数のチャネルをまとめるのに使えること、フィルタを複数用いることで逆に複数のチャネルを生み出せることを考えるとわかります
    とりあえずチャネル数だけ見るとして、○x○x3に△x△x3のフィルタを1つかけたら□x□x1になり、2つかけたら□x□x2。○x○x3に△x△x1を3つかけたら□x□x9という塩梅です

    キャンセル

  • 2018/06/27 17:53

    有難うございました。
    前回引用のフォーマットが悪かったんで御免なさいね!

    キャンセル

+2

classificationとobject detectionは別に考えた方がスッキリする気がします。

classificationでは多少のスケールの変動を許しますが、その程度のものです。

object detectionはclassificationを内包して、全体から部分を検出・判定します。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/06/26 12:20 編集

    ご教授ありがとうございます。おっしゃる通りに
    classificationに関してなんとか強引に理解できたような気がしますが、
    detectionの場合はどうやって『位置情報』を取得してくれるのでしょうか。
    CNNでは通常mapが繰り返しdim縮小されていって、最終的にかなり小さいdimしかないのに、NNはどうやってobjectの元の存在位置の座標が分かるのでしょうか。

    キャンセル

  • 2018/06/26 12:56

    yoloを勉強していませんでしたか?
    部分的に取り出して判定を繰り返していませんか。
    部分を取り出して、そこが何であることがどれだけ確からしいかを推測します。
    最後にそれらの情報を集約して、検知します。

    キャンセル

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

  • Python

    9279questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • 機械学習

    771questions

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

  • TensorFlow

    760questions

  • 深層学習

    157questions

閲覧数の多いPythonの質問