如何使用 1 通道图像作为 VGG 模型的输入

wil*_*llz 4 image keras vgg-net

我首先使用 3 通道图像作为 VGG16 模型的输入,没有任何问题:

input_images = Input(shape=(img_width, img_height, 3), name='image_input')
vgg_out = base_model(input_images)  # Here base_model is a VGG16
Run Code Online (Sandbox Code Playgroud)

现在我想改用 1 通道图像。所以我这样做了:

input_images = Input(shape=(img_width, img_height, 1), name='image_input')
repeat_2 = concatenate([input_images, input_images])
repeat_3 = concatenate([repeat_2, input_images])
vgg_out = base_model(repeat_3)  
Run Code Online (Sandbox Code Playgroud)

但我收到一条错误消息:

File "test.py", line 423, in <module>
model = Model(inputs=[input_images], outputs=[vgg_out])
File "C:\Users\wzhou\AppData\Local\Continuum\Anaconda2\envs\tensorflow\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "C:\Users\wzhou\AppData\Local\Continuum\Anaconda2\envs\tensorflow\lib\site-packages\keras\engine\network.py", line 93, in __init__
self._init_graph_network(*args, **kwargs)
File "C:\Users\wzhou\AppData\Local\Continuum\Anaconda2\envs\tensorflow\lib\site-packages\keras\engine\network.py", line 237, in _init_graph_network
self.inputs, self.outputs)
File "C:\Users\wzhou\AppData\Local\Continuum\Anaconda2\envs\tensorflow\lib\site-packages\keras\engine\network.py", line 1430, in _map_graph_network
str(layers_with_complete_input))
ValueError: Graph disconnected: cannot obtain value for tensor Tensor("input_1:0", shape=(?, 64, 64, 3), dtype=float32) at layer "input_1". The following previous layers were accessed without issue: []
Run Code Online (Sandbox Code Playgroud)

在 Keras 中将 1 通道图像转换为 3 通道图像的正确方法是什么?

Sho*_*alt 5

我在 Kaggle 上遇到了类似的解决方案,但它利用了现有的 Keras 层类:

from keras.applications.vgg16 import VGG16
from keras.layers import *

img_size_target = 224
img_input = Input(shape=(img_size_target, img_size_target, 1))
img_conc = Concatenate()([img_input, img_input, img_input])  
model = VGG16(input_tensor=img_conc)
Run Code Online (Sandbox Code Playgroud)

前几层将如下所示:

型号:“vgg16”
_________________________________________________________________________________________________
层(类型)输出形状参数#连接到                     
=================================================== =================================================
input_20 (输入层) [(无, 224, 224, 1) 0                                            
_________________________________________________________________________________________________
concatenate_1(连接)(无、224、224、3)0 input_20[0][0]                   
                                                                 输入_20[0][0]                   
                                                                 输入_20[0][0]                   
_________________________________________________________________________________________________
block1_conv1(Conv2D)(无、224、224、64)1792 concatenate_1[0][0]