Как извлечь элементы только из сегментированной части изображения для кластеризации? - PullRequest
0 голосов
/ 31 января 2020

Я могу извлечь и сгладить элементы определенного изображения. Однако предположим, что каждое из этих изображений имеет маску сегментации, и я хочу только извлечь элементы из сегментированной части изображения, а затем кластеризовать изображения на основе этих функций.

Мне это не кажется правильным чтобы извлечь объекты для всего изображения, а затем применить маску для обнуления чего-либо вне маски сегментации, потому что маски сегментации могут быть больше или меньше в зависимости от того, где находится элемент на изображении.

Псевдокод для извлечения объектов и кластеризация ниже (ссылка: здесь ). Как добавить к этому маску сегментации?

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)
...