Я пытаюсь использовать предварительно обученную модель Keras ('imagenet') для извлечения функций из набора изображений, которые затем я хочу кластеризовать на основе сходства этих функций.
У меня есть все для работы (как видно из фрагмента кода), но я изо всех сил пытаюсь найти документацию или примеры того, как добавить данные сегментации: т.е. я хочу извлечь функции только из сегментированной части изображения ,
Я использовал предварительно обученную модель imagenet для извлечения функций для всего изображения.
from keras.preprocessing import image
from keras.applications import vgg16, inception_v3, resnet50, mobilenet
from keras.applications.vgg16 import preprocess_input
import numpy as np
import PIL
import urllib, cStringIO
import contextlib
import sklearn
model = resnet50.ResNet50(weights='imagenet', include_top=False)
def predict_feature(url, model):
img_path = url
with contextlib.closing(urllib.urlopen(url)) as req:
local_url = cStringIO.StringIO(req.read())
img = image.load_img(local_url, target_size=(224, 224))
img_data = image.img_to_array(img)
img_data = np.expand_dims(img_data, axis=0)
img_data = preprocess_input(img_data)
resnet50_feature = model.predict(img_data)
return np.array(resnet50_feature).flatten()
Я ожидаю ввести массив URL-адресов / изображений и массив масок сегментации (то же изображение, но с 0 значениями для вещей, не входящих в маску сегментации), а выходные данные будут функциями сегментированной части изображения.