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

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

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

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

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

Python

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

Q&A

解決済

2回答

219閲覧

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

IS.SEKI

総合スコア28

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

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

Python

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

0グッド

0クリップ

投稿2018/06/25 01:38

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

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

宜しくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

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


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

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

投稿2018/06/25 03:23

hayataka2049

総合スコア30933

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

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

IS.SEKI

2018/06/25 06:28 編集

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"はどういう意味でしょうか。 また宜しくお願い致します。
hayataka2049

2018/06/25 08:55 編集

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

2018/06/25 13:55

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

2018/06/26 03:31

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

2018/06/26 04:01

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

2018/06/26 09:25

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

2018/06/26 09:25

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

2018/06/26 09:54

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

2018/06/27 08:47 編集

hayataka2049 様 有難うございます。 >これを減らす処理がpoolingに対応します。画像を縮小していくようなものそれで畳み込みすると、フィルタの形と数に応じて最後の次元が増えたり減ったりしていく訳です。 Q:単にdown/up samplingの話でしょうか、それとも畳み込みと『逆畳み込み』の話でしょうか。 ---------- ここでいう『逆畳み込み』とは本当の『逆畳み込み』ではなくDNN分野の独特の呼び方 ➡ subpixelに対する 畳み込みでup samplingのような事です。
hayataka2049

2018/06/27 04:56 編集

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

2018/06/27 05:01

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

2018/06/27 08:53

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

0

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

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

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

投稿2018/06/25 13:58

mkgrei

総合スコア8560

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

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

IS.SEKI

2018/06/26 03:23 編集

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

2018/06/26 03:56

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問