Поиск изображения в хранилище изображений с помощью R - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть хранилище с более чем 100k изображений (из непрямых источников - в основном из Интернета).Обратите внимание, что изображения относятся только к предметам одежды (либо с надетой на них моделью, либо с прямым предметом одежды).

Моя цель - щелкнуть по изображению любого предмета одежды и найти его в указанном мной хранилище.Если точное совпадение недоступно, я, по крайней мере, хочу наиболее подходящие изображения.Пожалуйста, помогите мне понять, как я могу получить то же самое самым точным способом (скорость / время не проблема, точность - самый важный параметр).

-------------x ------------

То, что я пробовал до сих пор:

  1. Я впервые использовал функцию featurize в библиотеке MicrosoftML.Это запускает предварительно обученную модель (RESNET101) для моего клика и репозитория изображений
  2. Вышеупомянутая функция дает мне 2050 функций для обоих изображений.
  3. Я нашел евклидово расстояние между кликом и репозиториемизображений.
  4. В качестве выходных данных я показал 10 лучших изображений с самым близким евклидовым расстоянием.
  5. Обратите внимание, что даже до применения евклидового расстояния я уже применил следующие ручные фильтры к обоим наборам данных:марка и тип одежды (рубашка / брюки / свитер и т. д.) как для исходного изображения, так и для выбранных изображений

Однако проблема заключается в том, что точность является патетически низкой (20%).Кроме того, существуют такие проблемы, как - даже если я щелкну изображение вбок, оно не будет совпадать с изображениями в хранилище или если изображение будет согнуто, алгоритм воспринимает его как шаблон.

Для вас, ребятаЧтобы лучше понять код, PFB: <1023 * <pre>vec2dat <- rxFeaturize( data = fnddat, mlTransforms = list( loadImage(vars = list(Features = "Image")), resizeImage(vars = "Features", width = 224, height = 224), extractPixels(vars = "Features"), featurizeImage(var = "Features", dnnModel = "resnet101") ))

PFB - евклидов код расстояния:

distance <- pdist(vec2dat[,-1],vecdat[,-1])

Любая помощь / идея будут оценены по достоинству.

------------------------- Редактировать -------------------------

Я думаю, что вопрос выше кажется немного более широким.Позвольте мне разбить его на части:

  1. Есть ли какие-либо другие расстояния, которые я мог бы попытаться увеличить, кроме евклидова расстояния?
  2. Из 2049 функций в RESNET101, есть ли факторы?где я должен дать больше / меньше веса или есть какая-то особенность, которую я должен игнорировать?
  3. Есть ли какая-либо другая предварительно обученная модель, которую я могу использовать (пока я пробовал Alexnet & RESNET101)

Обратите внимание, что я не хочу устанавливать CNN в R, для меня нет возможности обучать новую модель.Я хочу положиться на имеющиеся у нас предварительно обученные модели.

...