У меня есть хранилище с более чем 100k изображений (из непрямых источников - в основном из Интернета).Обратите внимание, что изображения относятся только к предметам одежды (либо с надетой на них моделью, либо с прямым предметом одежды).
Моя цель - щелкнуть по изображению любого предмета одежды и найти его в указанном мной хранилище.Если точное совпадение недоступно, я, по крайней мере, хочу наиболее подходящие изображения.Пожалуйста, помогите мне понять, как я могу получить то же самое самым точным способом (скорость / время не проблема, точность - самый важный параметр).
-------------x ------------
То, что я пробовал до сих пор:
- Я впервые использовал функцию featurize в библиотеке MicrosoftML.Это запускает предварительно обученную модель (RESNET101) для моего клика и репозитория изображений
- Вышеупомянутая функция дает мне 2050 функций для обоих изображений.
- Я нашел евклидово расстояние между кликом и репозиториемизображений.
- В качестве выходных данных я показал 10 лучших изображений с самым близким евклидовым расстоянием.
- Обратите внимание, что даже до применения евклидового расстояния я уже применил следующие ручные фильтры к обоим наборам данных:марка и тип одежды (рубашка / брюки / свитер и т. д.) как для исходного изображения, так и для выбранных изображений
Однако проблема заключается в том, что точность является патетически низкой (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])
Любая помощь / идея будут оценены по достоинству.
------------------------- Редактировать -------------------------
Я думаю, что вопрос выше кажется немного более широким.Позвольте мне разбить его на части:
- Есть ли какие-либо другие расстояния, которые я мог бы попытаться увеличить, кроме евклидова расстояния?
- Из 2049 функций в RESNET101, есть ли факторы?где я должен дать больше / меньше веса или есть какая-то особенность, которую я должен игнорировать?
- Есть ли какая-либо другая предварительно обученная модель, которую я могу использовать (пока я пробовал Alexnet & RESNET101)
Обратите внимание, что я не хочу устанавливать CNN в R, для меня нет возможности обучать новую модель.Я хочу положиться на имеющиеся у нас предварительно обученные модели.