如何设计和训练卷积神经网络来估计图像中的第三频带以达到精确度

时间:2017-06-02 04:18:36

标签: python image-processing machine-learning keras conv-neural-network

我正在尝试使用卷积神经网络估计RGB图像中的第三个波段(蓝色)。我使用Keras的设计是一个sequencetiol模型,其中convolution2D层作为输入层,两个隐藏层和输出神经元。如果我想将损失(rmse)设为零,我应该如何更改模型?

我在python中的模型就像这样

in_image = skimage.io.imread('test.jpg')[0:50,0:50,:].astype(float)
data = in_image[:,:,0:2]
target = in_image[:,:,2:3]

model1 = keras.models.Sequential()
model1.add(keras.layers.Convolution2D(50,(3,3),strides = (1,1),padding = "same",input_shape=(None,None,2)))  #Convolution Layer
model1.add(keras.layers.Dense(50,activation = 'relu'))                      # Hiden Layer1
model1.add(keras.layers.Dense(50,activation = 'sigmoid'))                      # Hidden Layer 2
model1.add(keras.layers.Dense(1))                                           # Output Layer
adadelta = keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-08, decay=0.0)
model1.compile(loss='mean_squared_error', optimizer=adadelta)               # Compile the model


model1.fit(np.array([data]),np.array([target]),epochs = 5000)

estimated_band = model1.predict(np.array([data]))    

1 个答案:

答案 0 :(得分:0)

鉴于您的问题设置,看起来您正在尝试在一个图像上训练神经网络,以便能够预测来自其他2个图像的图像的蓝色通道。暂且不使用这样的实验,在正确训练神经网络时有一些重要的事情,包括。

  1. 学习率
  2. 重量初始化
  3. 优化
  4. 模型复杂性。
  5. Yann Lecun's Efficient backprop是一篇90年代末的论文,讨论数字1,2和3.数字4保持假设随着自由参数的数量增加,在某些时候你将能够匹配每个参数到每个输出。

    请注意,实现零损失不能保证概括,也不意味着您的模型不会一概而论,如paper presented at ICLR中所描述的那样出色。