Search code examples
pythonimagepre-trained-modelchainervgg-net

Why does vgg.prepare() method create 9 copies of the given image?


I get this result when I apply vgg.prepare() to the following image:Input

I use this line of code:

Image.fromarray(np.uint8(vgg.prepare(pep).reshape(224,224,3)))

And get an image which is combined of 9 copies of the given image:

Output


Solution

  • I finally got what you did... the only mistake is .reshape.

    Because the image is transposed, not reshaped, you have to re-transpose to restore the original image.

    pep = pep.transpose((1, 2, 0))  # transpose
    pep += [103.939, 116.779, 123.68]  # un-normalize
    pep = pep.astype(np.uint8)  # revert dtype
    pep = np.flip(pep, axis=2)  # BGR -> RGB
    PIL_image = Image.fromarray(pep)  # finally got the original!