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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Keras

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

深層学習

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

CNN (Convolutional Neural Network)

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

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Q&A

0回答

945閲覧

cnnを用いたノイズ除去の結果がでない

hoshihiro

総合スコア2

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Keras

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

深層学習

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

CNN (Convolutional Neural Network)

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

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

0グッド

0クリップ

投稿2020/09/27 15:07

前提・実現したいこと

dncnn(denoising cnn)のネットワークを使って画像データのノイズ除去を行いたいです。
実際に学習を行って、結果を出力させていますが、理想とは程遠い画像が出来上がります。
原因が全く分からないため、考えられうることをご教示頂きたいです。
(画像データは、サイズが63×85の数値データでcsvファイルになっており、そのまま学習を行い、最後にmatplotlibのcontourfで等高線画像として保存しています。)

発生している問題・エラーメッセージ

645枚分のデータを用いて学習を行ったのち、
model.predictで結果を出力させたところ、学習させたものとは全く違うのっぺりした画像が出来上がります。

該当のソースコード

python

1#モジュールの読み込み 2import numpy as np 3import glob 4import pandas as pd 5from sklearn.model_selection import train_test_split 6 7#ファイルの読み込み 8labelfiles = glob.glob("c:/keraslab/dataset/label/*.csv") 9label110_csv=[] 10for labelfile in labelfiles: 11 label110_csv.append(np.loadtxt(labelfile,delimiter=",")) 12label110_csv = np.array(label110_csv) 13 14inputfiles = glob.glob("c:/keraslab/dataset/input/*.csv") 15input18_csv=[] 16for inputfile in inputfiles: 17 input18_csv.append(np.loadtxt(inputfile,delimiter=",")) 18input18_csv = np.array(input18_csv) 19 20#logスケールに変更 21label110_csv=label110_csv.clip(0.0001,1) 22input18_csv=input18_csv.clip(0.0001,1) 23 24label110_csv=np.log10(label110_csv) 25input18_csv=np.log10(input18_csv) 26 27#正規化 28input18_csv=(input18_csv-np.min(input18_csv))/(np.max(input18_csv)-np.min(input18_csv)) 29label110_csv=(label110_csv-np.min(label110_csv))/(np.max(label110_csv)-np.min(label110_csv)) 30 31#次元調整 32input18_csv= np.expand_dims(input18_csv, axis=-1) 33label110_csv = np.expand_dims(label110_csv, axis=-1) 34 35#train,testの作成 36i_train, i_test = train_test_split(input18_csv) 37l_train, l_test = train_test_split(label110_csv) 38 39#モジュールの読み込み 40from keras.layers import Input,Conv2D,BatchNormalization,Activation 41from keras.models import Model 42 43 44#DnCNN 45def network_dncnn(): 46 input_img= Input(shape=(65,80,1)) 47 48 x= Conv2D(64,kernel_size=3,activation='relu',padding='same')(input_img) 49 50 for i in range(15): 51 x= Conv2D(64,kernel_size=3,padding='same')(x) 52 x= BatchNormalization()(x) 53 x= Activation('relu')(x) 54 55 x =Conv2D(1,kernel_size=3,activation='tanh',padding='same')(x) 56 57 model=Model(input_img,x) 58 59 return model 60 61model=network_dncnn() 62 63#モデルの表示 64print(model.summary()) 65 66import keras.optimizers as optimizers 67from tensorflow.python.keras import backend as K 68 69#training 70adam=optimizers.Adam(lr=1e-3) 71model.compile(loss='mean_squared_error',optimizer='adam') 72 73#trainingパラメータ- 74training =model.fit(i_train,l_train,epochs=50,batch_size=128,shuffle=True,validation_data=(i_test,l_test),verbose=1) 75 76import matplotlib.pyplot as plt 77 78#学習履歴の表示 79def plot_history(history): 80 plt.plot(history.history['loss']) 81 plt.plot(history.history['val_loss']) 82 plt.title('model loss') 83 plt.xlabel('epoch') 84 plt.ylabel('loss') 85 plt.legend(['loss','val_loss'],loc='lower right') 86 plt.show() 87 88plot_history(training) 89 90#検証 91results = model.predict(i_test,verbose=1) 92results=np.squeeze(results) 93results

試したこと

データ数を増やしていますが、結果にほとんど影響はでていませんし、エポック数を増やしても、変わりませんでした。

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

画像データは、場の放射線の分布図を表すものです。
もともと0-1の範囲に表されていたものが、0.4-0.6ぐらいにおさまる、のっぺりした画像になっていしまいます。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問