Search code examples
opencvimage-processingkerasfeature-extraction

Keras Same Feature Extraction from Different Images


I'm using Keras' pre-trained model for feature extraction in two images, however they gave the same outcome (array_equal = True). I've tried other model like VGG16 and Resnet50 but the results are the same. Am I writing the code wrong or is it the limitation of pre-trained model? Is there anything I can do to extract different features? Thanks!

import cv2
from keras.applications.inception_v3 import InceptionV3
from keras.applications.inception_v3 import preprocess_input

model = InceptionV3(weights='imagenet', include_top=False)

def get_img_vector(path):

    im = cv2.imread(path)
    im = cv2.resize(im,(224,224))
    img = preprocess_input(np.expand_dims(im.copy(), axis=0))
    resnet_feature = model.predict(img)

    return np.array(resnet_feature)

arr1 = get_img_vector('image1.png')
arr2 = get_img_vector('image2.png')

np.array_equal(arr1,arr2)

Below are my two images:

image1

image2


Solution

  • I think that the file format png create the image loading problem. Currently cv2.imread a png file and cv2.imshow it result in a black screen, which make two images identical. Saving the file from png to jpg and trying it again.