Я могу извлечь и сгладить элементы определенного изображения. Однако предположим, что каждое из этих изображений имеет маску сегментации, и я хочу только извлечь элементы из сегментированной части изображения, а затем кластеризовать изображения на основе этих функций.
Мне это не кажется правильным чтобы извлечь объекты для всего изображения, а затем применить маску для обнуления чего-либо вне маски сегментации, потому что маски сегментации могут быть больше или меньше в зависимости от того, где находится элемент на изображении.
Псевдокод для извлечения объектов и кластеризация ниже (ссылка: здесь ). Как добавить к этому маску сегментации?
from keras.preprocessing import image
from keras.applications.vgg16 import VGG16
from keras.applications.vgg16 import preprocess_input
import numpy as np
model = VGG16(weights='imagenet', include_top=False)
model.summary()
vgg16_feature_list = []
for idx, dirname in enumerate(subdir):
# get the directory names, i.e., 'dogs' or 'cats'
# ...
for i, fname in enumerate(filenames):
# process the files under the directory 'dogs' or 'cats'
# ...
img = image.load_img(img_path, target_size=(224, 224))
img_data = image.img_to_array(img)
img_data = np.expand_dims(img_data, axis=0)
img_data = vgg16_preprocess(img_data)
vgg16_feature = model_vgg16.predict(img_data)
vgg16_feature_np = np.array(vgg16_feature)
vgg16_feature_list.append(vgg16_feature_np.flatten())
vgg16_feature_list_np = np.array(vgg16_feature_list)
kmeans = KMeans(n_clusters=2, random_state=0).fit(vgg16_feature_list_np)