Ответ 1
Попробуйте выполнить следующие два API:
Мне нужно сделать приложение iOS с этими функциями:
Есть ли онлайн-API для этого (от Google, Yahoo,...)? Например, могу ли я загрузить изображение, и я получаю URL-адрес изображения и после этого запрашиваю URL-адрес для сравнения нового изображения с существующим?
Попробуйте выполнить следующие два API:
OpenCV библиотека (для iPhone) содержит множество алгоритмов. Вы можете просто сравнить цветные гистограммы изображений или использовать более сложные вещи. Какой тип соответствия вы имеете в виду? Поиск дубликатов или вычисление меры сходства изображений?
Если вы хотите сопоставить некоторый простой шаблон, чтобы найти объекты, попробуйте алгоритм Виолы и Джонса и так называемые каскады Хаара. OpenCV подготовил коллекцию шаблонов в файлах XML для обнаружения лиц, например. OpenCV содержит утилиту для обучения, поэтому вы можете генерировать каскады для других объектов
Вы также можете посмотреть Moodstocks, они предоставляют отличный API и iOS SDK для реализации распознавания изображений в вашем приложении за считанные минуты.
Просто для расширения списка:
Я нашел IQEngines, которые работают хорошо.
Вся область распознавания образов изменилась с появлением Deep Neural Networks. Однако вам нужна мощная машина для обучения вашей собственной нейронной сети. Вы также можете использовать vize.it - это простое в использовании онлайн-приложение, которое позволяет вам определить задачи и классифицировать изображения с помощью http API.
Отказ от ответственности: Я студент PhD по искусственному интеллекту, который является членом команды vize.it.
Pastec является альтернативой с открытым исходным кодом (LGPL), уже упомянутой выше.
Простой HTTP API позволяет легко добавлять, удалять и искать соответствующие изображения в индексе. Он основан на OpenCV и использует дескриптор ORB, который не содержит патентов.
Я просмотрел Moodstocks, который, похоже, усовершенствовал систему распознавания образов с оплатой в месяц. У них отличная система (я протестировал ее для собственного использования, и это фантастика), но она очень дорога для меня, поэтому я ее не использую. В то время, когда я писал это, услуга "до 100 000" изображений составляет около 12 000 долларов США в год. Для моего проекта у меня почти 4 миллиона изображений, которые мне нужно сопоставить. YIKES.
Итак, после многих месяцев исследований и отключений я пришел к выводу, что если вы собираетесь сравнивать с 1000 изображений или больше (в моем случае 1 миллион +), вам нужно будет сделать сравнение изображений с устройством. Пользователи мобильных устройств не имеют пространства, скорости и мощности для выполнения больших объемов вычислений для выполнения такого рода работ.
Что это значит, так это то, что вам нужно настроить сервер распознавания образов на высокопроизводительной машине и сделать его общедоступным для вашего приложения. В приложении попросите пользователя сделать снимок объекта (или вы можете захватить кадры из видео камеры), отправьте его на свой сервер для сравнения, а затем, когда найдено совпадение, сообщите о результатах обратно в приложение.
Вы можете использовать фреймворк, например Accord.NET или EmguCV для создания настольного приложения или службы С#, которое выполняется, например, в окне Windows Server.
Что делает приложение Amazon iOS для распознавания образов из того, что я могу догадаться, так это поиск точек SURF в реальном времени и отправка данных на сервер при сканировании вместо всего изображения. Я предполагаю, что они используют OpenCV на устройстве для этого. Но они по-прежнему используют серверное программное обеспечение для отправки обратно согласованного продукта SKU.
Вот замечательная запись в блоге от парня, который хотел сделать сопоставление изображений в .NET, и он просматривает каждый шаг, включая, как он работает, как это сделать, а затем дает весь его код в примерном приложении. Удивительный пост: https://sbrakl.wordpress.com/2015/01/30/love-affair-with-cbir-part-3/comment-page-1/
Из того, что я смог узнать, является то, что алгоритм LoCATe работает лучше всего и быстрее с большим количеством изображений, но также занимает часы, дни и, возможно, недели (в зависимости от того, сколько изображений у вас есть) для создания массивные индексы для поиска. Я думаю, что когда дело доходит до сопоставления изображений, я нашел, что скорость создания твердого индекса связана со скоростью поиска совпадений с запросами.