【发布时间】:2020-11-02 22:14:29
【问题描述】:
我正在使用自动编码器对高分辨率灰度图像进行去噪。每个图像被分成特定大小的子批次,即52 x 52,模型对这些批次中的每一个都起作用,然后结果是将每个图像中的去噪批次连接回原始批次。以下是结果后的图像示例:
您可以在串联后看到较小的图像批次。如何克服这种行为?
我考虑过进一步处理,例如在边缘添加模糊以将它们混合在一起,但我认为这不是最佳解决方案。
连接代码:
num_hor_patch = 19
num_ver_patch = 26
print("Building the Images Batches")
for i in range(num_image):
reconstruct = []
for j in range(num_hor_patch):
from_vertical_patches = predictions[start_pos:(start_pos+num_ver_patch)]
horizontal_patch = np.concatenate(from_vertical_patches, axis=1)
start_pos += num_ver_patch
reconstruct.append(horizontal_patch)
restored_image = np.concatenate(np.array(reconstruct), axis=0)
output.append(restored_image)
start_pos = 0
test_data = np.array([np.reshape(test_data[i], (52, 52)) for i in range(test_data.shape[0])])
for i in range(num_image):
reconstruct = []
for j in range(num_hor_patch):
from_vertical_patches = test_data[start_pos:(start_pos+num_ver_patch)]
horizontal_patch = np.concatenate(from_vertical_patches, axis=1)
start_pos += num_ver_patch
reconstruct.append(horizontal_patch)
restored_image = np.concatenate(np.array(reconstruct), axis=0)
input.append(restored_image)
start_pos = 0
test_noisy_data = np.array([np.reshape(test_noisy_data[i], (52, 52)) for i in range(test_noisy_data.shape[0])])
for i in range(num_image):
reconstruct = []
for j in range(num_hor_patch):
from_vertical_patches = test_noisy_data[start_pos:(start_pos+num_ver_patch)]
horizontal_patch = np.concatenate(from_vertical_patches, axis=1)
start_pos += num_ver_patch
reconstruct.append(horizontal_patch)
restored_image = np.concatenate(np.array(reconstruct), axis=0)
noisy.append(restored_image)
print("Exporting the Model")
output_model['output'] = output
output_model['original'] = input
output_model['noisy'] = noisy
【问题讨论】:
-
您好!为什么你不一次将整个图像传递到自动编码器并得到结果?它也应该改善你的推理时间。此外,坚持您当前的方法,您也可以遵循此link。
-
感谢您的评论@RishabP。不幸的是,图像不适合可用的内存。如果您建议有其他解决方案可以实现,请用它来回答问题!
标签: python tensorflow machine-learning keras deep-learning