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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

フィルタ

フィルタとは、特定の条件に合わせてデータへのアクセスをブロックするプログラムやルーチンを指します。

Q&A

1回答

2205閲覧

KerasのConv2D関数のカーネルの内容

takefumi.nagata

総合スコア0

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

フィルタ

フィルタとは、特定の条件に合わせてデータへのアクセスをブロックするプログラムやルーチンを指します。

0グッド

0クリップ

投稿2020/09/18 05:04

前提・実現したいこと

KerasのConv2D関数のパラメーターの中のカーネルはどのようなフィルターを使っているのですか。
例えば、3x3であれば、平均値フィルター、Sobelフィルター、Laplacianフィルター、メディアンフィルター・・・
どのフィルターをどのようにして、32枚(64枚等)のCONV2Dのフィルタ画像を作っているのでしょうか。

試したこと

医用画像の認識に適したカーネルフィルターを実施したい場合は、どのようにカーネルを変更すればよいのでしょうか。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

どのフィルターをどのようにして、32枚(64枚等)のCONV2Dのフィルタ画像を作っているのでしょうか。

畳み込み層のフィルタの値は学習で自動で決まります。
なので、Sobelフィルターなど人が設計したフィルタに似たものはあるかもしれませんが、それらを使っているわけではありません。

投稿2020/09/19 01:28

tiitoi

総合スコア21956

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

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

takefumi.nagata

2020/09/21 09:22

ご回答ありがとうございました。 学習することはわかりますが、 初期値の畳み込みフィルター(カーネル)は、どのように設定しているのでしょうか? 初期値も勝手に決めているのでしょうか。 初期値を変更する方法はあるのでしょうか。
tiitoi

2020/09/21 09:32

> 初期値も勝手に決めているのでしょうか。 一様分布だったり、正規分布だったり適当な方法でランダムな値で初期化します。一般的なディープラーニングライブラリでは複数の初期化方法が用意されています。 https://pytorch.org/docs/stable/nn.init.html > 初期値を変更する方法はあるのでしょうか。 カーネルの重みを自分で設定することも可能ですが、学習で調整されるので、あえて明示的な値に設定する意味はないと思います。
takefumi.nagata

2020/09/24 04:08

ご回答ありがとうございます。 医療画像(例えば胸部レントゲン画像)の母集団の中で、画像を認識しようとすると一般的な認識技術だけでなく特殊なフィルターを組み合わせながら画像認識をします。 健常者とがん患者を識別することは、学習しても簡単にできるものではないと考えています。 一つのディープラーニングシステムが健常者母集団の正規分布(識別能力)とがん患者の正規分布を分別することは、ROC解析で確認しても非常に難しい、特異的な認識技術となると思います。 その時にCNN実施時の畳み込みカーネルフィルターのレベルを変えなければ、一般的なフィルターを128回繰り返しての特異性を出せると思えないのですが、いかがでしょうか。 単純なCNNのフィルターを繰り返すことで解が求められるようなものでないので、畳み込みフィルターの初期値を特異的に決めたフィルターを128回処理したほうが解決策が出るのではないでしょうか。 誤差の発散してしまう可能性もありますが・・・。 論理的に、確率統計的に一般的なカーネルフィルターで解が求められるということが言えるのでしょうか。試行錯誤しながらフィルターを決定していく必要を感じています。 ディープラーニングの技術ではなく古い技術で画像認識をしてきたので、特殊な学習だからこそ、 特殊性のあるフィルターが必要ではと思っています。
tiitoi

2020/09/24 06:07 編集

もし必要であれば、輝度値の調整など画像を見やすくするための処理はモデルに入力する前の「前処理」として組み込みましょう。その上で CNN が獲得するフィルタは学習に任せましょう。 > 論理的に、確率統計的に一般的なカーネルフィルターで解が求められるということが言えるのでしょうか ディープラーニングはモデルが複雑すぎるため、理論的な解析はほとんど進んでいませんが、実験的に上手くいくことがわかっているので、みんな使っている状況です。 学習率を適切に設定すればバックプロパゲーションで訓練データに対する損失は下げれる (正答率は上げれる) ことは言えますが、データが少ないと汎化性能はでないかもしれません。(過学習) > その時にCNN実施時の畳み込みカーネルフィルターのレベルを変えなければ、一般的なフィルターを128回繰り返しての特異性を出せると思えないのですが、いかがでしょうか。 Kaggle の医療画像を使ったコンテンスト例などを見る限り、そのまま CNN に突っ込むだけでもうまくいったりするのではないでしょうか。 学習によって作成されるフィルタは「Sobelフィルタ」のように人が設計したフィルタとは限りません。分類問題を解くために必要なフィルタを自動で学習するのです。 > ディープラーニングの技術ではなく古い技術で画像認識をしてきたので、特殊な学習だからこそ、特殊性のあるフィルターが必要ではと思っています。 試してみたらうまくいかなかったということでしょうか? まだ試してないのであれば、前処理は [0, 1] の正規化だけするとして、ResNet のような実績のあるモデルで ImageNet の学習済みモデルで転移学習して、結果を確認してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問