Я работаю над понижающей дискретизацией изображений на основе обучения с использованием сверточных слоев. Моя сеть содержит 3 слоя свертки, а также слой BatchNorm и слои ReLu: Сетевая архитектура . После обучения модели было замечено, что для некоторых изображений сеть предсказывает значения пикселей, которые больше 1,0, таким образом создавая черные пиксели на большинстве предсказанных изображений. Изображение (2) показывает контрольное изображение , а Изображение (3) показывает, что моя сеть предсказывает . После исследования предсказанных результатов, которые я обнаружил, эта проблема возникает всякий раз, когда изображение содержит ярко-белую область.
Вход
`inpt = Input(shape=(None,None,1),name='input_com')`
comCNN Layer 1
`comcnn_layer1=Conv2D(64, (3, 3),strides=1,
padding='same',kernel_initializer='he_uniform',name='convL1_com')(inpt)
comcnn_layerac=Activation('relu',name='reluL1_com')(comcnn_layer1)`
comCNN Layer2
`comcnn_layer2=Conv2D(64, (3,
3),strides=2,padding='same',kernel_initializer='he_uniform',name='convL2_com')(comcnn_layerac)
comcnn_layer2bn= BatchNormalization(axis=3, momentum=0.0,epsilon=0.0001,name='BNL2_com')
(comcnn_layer2)
comcnn_layer2ac=Activation('relu',name='reluL2_com')(comcnn_layer2bn)`
comCNN Layer3
`comcnn_layer3=Conv2D(1, (3,
3),strides=1,padding='same',kernel_initializer='he_uniform',name='convL3_com')(comcnn_layer2ac)`
Уровень апсэмплинга
`comcnn_upscale=btl.UpSampling2DBilinear((40,40))(comcnn_layer3)`
Модель
`model_comcnn_test = Model(inputs=inpt, outputs=comcnn_upscale)`
Обратите внимание, что перед тренировкой весь набор данных изображения нормализуется между 0,0 и 1,0 путем деления каждого пикселя на 255,0, когда я работаю над полутоновыми изображениями. Кроме того, слой Upsampling используется для сопоставления размера выходного изображения с размером целевого изображения во время обучения.
Может кто-нибудь помочь мне решить эту проблему?