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

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

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

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

機械学習

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

Q&A

2回答

1696閲覧

CNNに関する2つの質問

leilei

総合スコア39

深層学習

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

機械学習

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

1グッド

2クリップ

投稿2018/02/26 15:39

編集2022/01/12 10:55

初めまして
深層学習関連の質問掲示板があるのは以前知りませんでした。

自分は画像処理の経験少々あって、CNNは初めてです。
これまで画像objectを特定するために、人工的特徴によって行い、
多くの場合objectのサイズに関係なし(2-3倍の変動があっても)同定できます。
で、

【質問1】
CNNで学習したobjectのサイズとTEST画像に存在する実際のobjectのサイズとの間に
2-3倍の差があっても大丈夫でしょうか。

【質問2】
先進的なCNNとして resCNNがよく挙げられます。
現状のCNN lib、 例えば Tensorflow中のCNNはresCNNで実装されているのでしょうか。

【注】
resCNN はResidual Networkで実現したCNNと言うつもりで書いたのです。
ResNeXtもっと進んだ方法であるらしいですね。

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

=================================
【Note】
注目すべき技術:
● SSD: Single Shot MultiBox Detector

●Using Machine Learning to Explore Neural Network Architecture
https://research.googleblog.com/2017/05/using-machine-learning-to-explore.html

IS.SEKI👍を押しています

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

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

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

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

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

wakame

2018/02/26 23:04

resCNNはResNet Convolutional Networkの略ですか。
leilei

2018/02/27 05:21

ごめんなさい!resCNNとは Residual Networkで実現したCNNと言うつもりで書いたのですが、不正確かもしれませんね。お考え方を聞かせてください
leilei

2018/02/28 05:33

mkgreiさま ↑リンク有難う御座います こりゃ面白い!<<AutoML for large scale image classification and object detection>>
guest

回答2

0

物体検出はSOTA合戦が続いている分野です。

文献・リポジトリをいくつかご紹介しますので、
これらを見ながら何ができるかを考えてみてはいかがでしょうか。
どれもCNNを発展させたものです。

  • Mask RCNN

https://github.com/matterport/Mask_RCNN

  • SSD

https://github.com/weiliu89/caffe/tree/ssd

  • YOLO

https://github.com/pjreddie/darknet/wiki/YOLO:-Real-Time-Object-Detection

  • 物体検出の研究を俯瞰するのに役に立った資料

https://github.com/Nikasa1889/HistoryObjectRecognition/blob/master/HistoryOfObjectRecognition.pdf

投稿2018/02/27 01:58

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

leilei

2018/02/27 06:20

貴重な情報有難うございます。 読ませて頂きます
leilei

2018/02/27 08:05 編集

また宜しくお願いします
guest

0

  1. 学習したいもの、ネットワークの構造によりますが、正しくやれば問題ありません。

  2. ResNetはTensorflow本体には入っていませんが、以下のリンクにはあります。

https://github.com/tensorflow/models/tree/master/research/resnet

投稿2018/02/27 01:41

mkgrei

総合スコア8560

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

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

leilei

2018/02/27 05:33

お返答有難うございます。 お返答有難うございます。 「正しくやれば問題ありません。」とはどういう意味でしょうか。 自分が初歩的なものしか読んでいませんが、感覚では訓練時のobjectサイズとTEST時に認識しようとするobjectのサイズの間ほんの少しの差があればまだ良いかもしれませんが、 ★ CNNでどんな仕組みで大きなscale変化に対する「不変性」を有するのでしょうか。 是非ご教授お願いします。
mkgrei

2018/02/27 06:02

単一のネットワークで「不変性」を得るには学習時にスケールの異なるデータを学習時に与えるのが一般的かと。 以下のようなデータ生成クラスがあります。 https://keras.io/ja/preprocessing/image/ pooling層が大きな役割を果たすと思います。 poolingの代わりにconvolutionを使うことも可能らしいのですが、pooling層が一番直感的かと思います。 ただスケールの大きく異なるデータを混ぜると汎化性能が上がる代わりに精度が落ちることが多いと思うので、他の手法である程度領域を絞ってやる方が実用的だと思います。 具体的な方法についてはdkato0077さんのリンクを参照してください。 原理的にはCNNだけでやれるかもしれませんが、学習させるのが大変なので、臨機応変に前処理を加えるのだと思います。 従来の手法と比べるとCNNは非常に重い計算なので。
leilei

2018/02/27 06:39 編集

お返答有難う御座います。 人工特徴抽出の場合だと、特徴点に関するscriptor量(特徴量)は理論上objectのサイズと関係ないものが多いのです(Eg., SIFT)。CNNもそういう特長を間接的に持っているということでしょうか。 それとも、objectのサイズ範囲で隈なく学習させるという意味でしょうか。 いささか気が遠いような感じですね。。。みんな実際そういう風にやっておられるのでしょうか。 例えば、人のポーズを認識するために、各ポーズ毎に無限に多い(?)異なるサイズの人の画像を学習させるのでしょうか。 応用の場合予めobjectのサイズを予測できないことが多いですね。 例えば、同じ車がやってきたと言っても距離によってサイズが随分違います。
mkgrei

2018/02/27 08:47

完全に不変性を持つわけではありませんが、pooling層が一番わかりやすい例です。 https://deepage.net/deep_learning/2016/11/07/convolutional_neural_network.html > 回転や拡大・縮小に対する不変性はどうなのだろう?ある程度は不変性を維持できるものの、それほど頑健ではないので、データ拡張でそういったデータを増やして学習するなど工夫が必要だ。 気が遠い感じですが、データ拡張というのはよく行われます。 異なるポーズを大量に取ってくるのが面倒なので、持っている画像を引き伸ばしたり回転させたりします。 そして、別にCNNで一気に全部やる必要はなく、まずあたりをいくつかつけて抽出しておけばよいです。 例えばSIFT特徴量で少し範囲を絞ればそこまで強い不変性は不要になります。 応用を考えているのであれば特にCNNだけで縛りプレイする必要もないわけです。 原理的にはCNNで領域を抽出することも可能ですが、その機能を学習させるのは容易ではありません。 他に参考になりそうなリンク。 https://stats.stackexchange.com/questions/239076/about-cnn-kernels-and-scale-rotation-invariance https://arxiv.org/abs/1602.01255 https://www.quora.com/How-is-a-convolutional-neural-network-able-to-learn-invariant-features http://proceedings.mlr.press/v77/takahashi17a/takahashi17a.pdf
退会済みユーザー

退会済みユーザー

2018/02/27 09:45

いくつか。 CNNの中身はフィルタリングの繰り返しです。適用するフィルタはデータから学習するものですが、構成上このフィルタを画像のローカルなディスクリプターと考えられます。 気が遠くなるような...これはおっしゃる通りだと思います。ビッグデータと計算パワーの恩恵がなければ発展し得なかったと言われています。 ポーズについて ポーズに特化させたものだと、OpenPoseとかがすごいですよね。これは手首とかひじと言ったパーツの検出(+α)だけを行っていますよ。
退会済みユーザー

退会済みユーザー

2018/02/27 09:53

あと、CNNは回転を表現する構造はないです。
mkgrei

2018/02/27 10:51

dkato0077さん、コメントをありがとうございます。 不変性は厄介な性質です。 不変であることは難しくありません。 極端な例だと全部0に射影すれば不変性は満たされます。 ただ不変性を持ちながら意味がある量を生成するのが難しいのです。 プーリングの代わりに提唱されているCapsNetなどがあります。 https://qiita.com/onlyzs/items/5096f50a21758a536d9a モチベーションはわかりますが、実際のところはどうでしょう。 CNNなどの難しさは2種類あって、そもそもの表現力が1つと、学習させられるのかがもう1つになります。 またCNNは理論的には任意の関数を表現できるはずですが、任意の汎関数まで表現できるのかは不明です。 たぶん無理な気がしますが、根拠はないです。 回転を表現することの難しさは回転軸の決定にあるかと思います。 パラメータの数を増やせば表現力は増しますが、過学習することなく決定することが困難になります。
leilei

2018/02/28 05:44

皆さん良いアイディアを頂きましてありがとうございます。 皆さんの知識や理解力に本当に感心しました。 俺、入り口の処でもう疲れたような感じですね~  中に入りたくねーー! (笑
leilei

2018/02/28 13:19

mkgrei さん 「featur invariance」関連のリンク再度お礼を申し上げたいです。 他の初心者にもお勧めたいと思います。 > 回転を表現することの難しさは回転軸の決定にあるかと思います。 これはちょっと意味不明です。ご解釈頂ければ幸いです。 自分の認識では回転軸はどこであれ、回転で起こしたobject pose 変化は同じだと思いますが。
mkgrei

2018/03/01 09:06

お役に立てたようでなによりです。 おっしゃる通りポーズの変化は同じです。 ただ場所がずれてしまいます。 回転不変性は回転させたのち、どこかに相似のものを見つけることではなく、回転させない状態で回転後と同等の特徴量を得ることです。 違いとしては前者は様々な回転を実際実行する必要があるのに対して、後者は一度の計算で済むことです。 例えば、ヒストグラムは回転不変量です。 これに対して、CNNには回転を不変にする構造がありません。
oookabe

2018/03/02 13:10 編集

丁寧なご解説有難うございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問