1
我正在尋找一種方法來數值評估我的無類CNN的結果。如何數值評估類似於unet的CNN的結果?
CNN的訓練是從灰度圖像中去除僞像。因此,CNN獲得包含每個通道中的僞像的「9通道」灰度圖像(具有部分冗餘數據但是不同僞影連接 - >尺寸[numTrainInputs,512,512,9]的9個灰度圖像)作爲輸入並且應該輸出單個沒有工件的灰度圖像[numTrainInputs,512,512,1]。 CNN的訓練使用MSE作爲損失函數,Adam作爲Optimizer和Keras。到現在爲止還挺好。
視覺CNN提供良好的結果時,與免費的「地面實況」圖像 - 維度[numTrainInputs,512,512,1]相比,但訓練期間的準確性保持在0%。我認爲這是因爲沒有任何結果圖像完全符合實際情況,對!
但是我怎樣才能數值評估結果呢?我搜索了自動編碼器領域的一些數值評估,但沒有找到合適的方法。有人可以給我一個提示嗎?
的CNN是這樣的:
input_1 = Input((X_train.shape[1],X_train.shape[2], X_train.shape[3]))
conv1 = Conv2D(16, (3,3), strides=(2,2), activation='elu', use_bias=True, padding='same')(input_1)
conv2 = Conv2D(32, (3,3), strides=(2,2), activation='elu', use_bias=True, padding='same')(conv1)
conv3 = Conv2D(64, (3,3), strides=(2,2), activation='elu', use_bias=True, padding='same')(conv2)
conv4 = Conv2D(128, (3,3), strides=(2,2), activation='elu', use_bias=True, padding='same')(conv3)
conv5 = Conv2D(256, (3,3), strides=(2,2), activation='elu', use_bias=True, padding='same')(conv4)
conv6 = Conv2D(512, (3,3), strides=(2,2), activation='elu', use_bias=True, padding='same')(conv5)
upconv1 = Conv2DTranspose(256, (3,3), strides=(1,1), activation='elu', use_bias=True, padding='same')(conv6)
upconv2 = Conv2DTranspose(128, (3,3), strides=(2,2), activation='elu', use_bias=True, padding='same')(upconv1)
upconv3 = Conv2DTranspose(64, (3,3), strides=(2,2), activation='elu', use_bias=True, padding='same')(upconv2)
upconv3_1 = concatenate([upconv3, conv4], axis=3)
upconv4 = Conv2DTranspose(32, (3,3), strides=(2,2), activation='elu', use_bias=True, padding='same')(upconv3_1)
upconv4_1 = concatenate([upconv4, conv3], axis=3)
upconv5 = Conv2DTranspose(16, (3,3), strides=(2,2), activation='elu', use_bias=True, padding='same')(upconv4_1)
upconv5_1 = concatenate([upconv5,conv2], axis=3)
upconv6 = Conv2DTranspose(8, (3,3), strides=(2,2), activation='elu', use_bias=True, padding='same')(upconv5_1)
upconv6_1 = concatenate([upconv6,conv1], axis=3)
upconv7 = Conv2DTranspose(1, (3,3), strides=(2,2), activation='linear', use_bias=True, padding='same')(upconv6_1)
model = Model(outputs=upconv7, inputs=input_1)
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, Y_train, batch_size=1, epochs=100, shuffle=True, validation_split=0.01, callbacks=[tbCallback])
非常感謝您的幫助!
將MSE用作丟失函數還是作爲錯誤度量標準是否有意義?難道兩次都是這樣說嗎? –
在迴歸中,這很好。如果你想要一個不同的測量方法,你可以嘗試SSIM來進一步評估過濾和無噪聲圖像的相似程度。 – maz