我目前的项目与模拟各种成像过程中物体的模糊/卷积效果有关。现在,我从一个初步的人工模型开始。我正在使用 Keras 来实现这一点。
我将人工理想数据创建为 128 x 128 图像中随机位置的一组圆圈。然后我有一个例程,将这些圆圈的坐标和大小作为输入,并在相同位置用椭圆替换圆圈。
我正在尝试训练一个卷积神经网络来执行这个函数的逆运算,即读取带有椭圆作为输入的图像并用圆圈替换它们。我通过将这两种图像类型以及以椭圆作为输入的图像和以圆形作为输出的图像进行分组来创建训练对。
我怎样才能设计一个神经网络来完成这个?现在,我使用的只是返回椭圆图像的扭曲副本,而不是输出带圆圈的图像。
正如您在注释掉的代码中看到的那样,我已经使用了多种不同的 CNN 结构:
model = Sequential()
#model.add(Dense(10, activation = 'relu', input_shape = (80, 128, 128, )))
model.add(Conv2D(nb_classes, kernel_size=3, padding = 'same',
activation='relu',
input_shape=(128,128,1)))
#model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))
model.add(Conv2D(32, kernel_size = 3, activation='relu', padding = 'same'))
#model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))
#model.add(Dropout(0.25))
#model.add(Flatten())
#model.add(Dense(128, activation='relu'))
#model.add(Dropout(0.5))
#model.add(Conv2D(32, (3, 3), activation='relu', padding='same'))
#model.add(UpSampling2D((4,4)))
model.add(Conv2D(nb_classes, (3, 3), activation = 'relu', padding='same'))
#model.add(Dense(10, activation = 'relu', input_shape = (128, 128,)))
model.add(Activation('softmax'))