How can I use a pre-trained neural network with grayscale images?

后端 未结 11 1274
无人及你
无人及你 2020-12-02 09:35

I have a dataset containing grayscale images and I want to train a state-of-the-art CNN on them. I\'d very much like to fine-tune a pre-trained model (like the ones here).

11条回答
  •  离开以前
    2020-12-02 09:52

    I faced the same problem while working with VGG16 along with gray-scale images. I solved this problem like follows:

    Let's say our training images are in train_gray_images, each row containing the unrolled gray scale image intensities. So if we directly pass it to fit function it will create an error as the fit function is expecting a 3 channel (RGB) image data-set instead of gray-scale data set. So before passing to fit function do the following:

    Create a dummy RGB image data set just like the gray scale data set with the same shape (here dummy_RGB_image). The only difference is here we are using the number of the channel is 3.

    dummy_RGB_images = np.ndarray(shape=(train_gray_images.shape[0], train_gray_images.shape[1], train_gray_images.shape[2], 3), dtype= np.uint8) 
    

    Therefore just copy the whole data-set 3 times to each of the channels of the "dummy_RGB_images". (Here the dimensions are [no_of_examples, height, width, channel])

    dummy_RGB_images[:, :, :, 0] = train_gray_images[:, :, :, 0]
    dummy_RGB_images[:, :, :, 1] = train_gray_images[:, :, :, 0]
    dummy_RGB_images[:, :, :, 2] = train_gray_images[:, :, :, 0]
    

    Finally pass the dummy_RGB_images instead of the gray scale data-set, like:

    model.fit(dummy_RGB_images,...)
    

提交回复
热议问题