|
import tensorflow as tf
|
|
from tensorflow.keras.applications import EfficientNetB0
|
|
from tensorflow.keras.preprocessing import image
|
|
from tensorflow.keras.applications.efficientnet import preprocess_input
|
|
import numpy as np
|
|
|
|
class FeatureExtractor:
|
|
def __init__(self):
|
|
|
|
base_model = EfficientNetB0(weights='imagenet', include_top=False, pooling='avg')
|
|
self.model = tf.keras.Model(inputs=base_model.input, outputs=base_model.output)
|
|
|
|
def extract_features(self, img_path):
|
|
|
|
img = image.load_img(img_path, target_size=(224, 224))
|
|
img_array = image.img_to_array(img)
|
|
expanded_img = np.expand_dims(img_array, axis=0)
|
|
preprocessed_img = preprocess_input(expanded_img)
|
|
|
|
|
|
features = self.model.predict(preprocessed_img)
|
|
return features.flatten() |