【发布时间】:2020-01-22 01:05:27
【问题描述】:
我有 2 个图像数组,一个是降级的图片,另一个是相同的图片但处于干净状态。他们的shape=(576, 720, 3),因为这些图像是720*576,并且有3 通道(RGB)。我目前正在尝试使用退化的图片数组作为输入来训练我的模型,并将干净的图片数组作为输出。它工作得非常好,但是我确实知道要添加到我的模型中的层,也不知道如何提高我目前的准确性。
这是我当前的模型(不好,我基本上只是在这里随机放置层):
model = models.Sequential()
model.add(layers.Conv2D(32, 5, activation='relu', padding='same', input_shape=(576, 720, 3)))
model.add(layers.AveragePooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(layers.Conv2D(64, 3, activation='relu', padding='same'))
model.add(layers.AveragePooling2D(pool_size=(2, 2)))
model.add(layers.Conv2D(3, 3, activation='relu', padding='same'))
model.add(layers.UpSampling2D((4, 4)))
我是这样编译的:
model.compile(optimizer='rmsprop', loss='mean_absolute_error', metrics=["accuracy"])
我目前有 5000 对退化/干净的图像,我设法达到约 75% 的准确率和约 20 的损失,但无法改进模型。
我想了解我在这里做什么,因为除了图像分类,我在互联网上找不到任何东西,这不是我正在做的事情。我想知道哪个层有用,为什么。我知道 Conv2D 很有用,因为我想找到图像中的缺陷并纠正它们,而且我知道 LSTM 在处理视频时很有用,但除此之外,我不知道要设置的正确层序列,也不知道正确的图层。
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
你可以尝试一些著名的pixel2pixel模型,比如U-nets。
-
我见过很多人使用生成模型(例如自动编码器)来去除图像中的噪声。它首先使用 conv 层对图像进行下采样,然后使用 conv-transpose 进行上采样。在比较两个图像的情况下,许多人认为连体网络是一个不错的选择。它有两个相同的特征提取层并行接受图像进行检查和一个损失层来确定提取的特征的相似性。还有很多其他方法。
标签: tensorflow keras deep-learning neural-network conv-neural-network