Сравнение сходства изображений

Я изначально задал этот вопрос на cstheory.stackexchange.com, но было предложено переместить его на stats.stackexchange.com..

Есть ли существующий алгоритм, который возвращает мне метрику подобия между двумя растровыми изображениями? "Подобным" я имею в виду, что человек сказал бы, что эти два изображения были изменены с той же фотографии. Например, алгоритм должен сказать, что следующие 3 изображения одинаковы (оригинал, положение сдвинуто, сжато).

То же

enter image description hereenter image description hereenter image description here

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

Different

enter image description hereenter image description here

Я хотел бы использовать этот алгоритм для предотвращения спама на моем сайте. Я заметил, что спамеры слишком ленивы, чтобы изменить свои спам-изображения. Это не ограничивается лицами. Я уже знаю, что там уже много отличных алгоритмов распознавания лиц. Спам-изображение может быть любым, от URL-адреса до футбольного поля до обнаженного тела.

Ответ 1

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

Ответ 2

Вы можете использовать существующие архитектуры глубокого обучения, такие как VGG, для создания функций из изображений, а затем использовать метрику сходства, такую ​​как сходство с косинусом, чтобы увидеть, являются ли два изображения по существу одинаковыми.

Весь конвейер довольно прост в настройке, и вам не нужно понимать архитектуру нейронной сети (вы можете просто рассматривать ее как черный ящик). Кроме того, эти функции довольно универсальны и могут применяться для поиска сходства между любыми объектами, а не только лицами.

Вот несколько блогов, которые проходят через процесс. http://blog.ethanrosenthal.com/2016/12/05/recasketch-keras/ https://erikbern.com/2015/09/24/nearest-neighbor-methods-vector-models-part-1.html

Ответ 3

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

Если вам нужно выполнить анализ лица, вам следует искать подходящие для него алгоритмы. Вычисление относительного размера и положения глаз, носа и рта часто выполняется при таком анализе.

Ответ 4

Amazon имеет новый API под названием Rekognition, который позволяет сравнивать два изображения для сходства лица. Api возвращает процент подобия для каждого лица друг с другом и ограничивающие поля для каждой грани.

Rekognition также включает api для анализа лица (возврат пола, приблизительный возраст и другие соответствующие детали лица) и определение сцены объекта (возврат тегов объектов, находящихся внутри на изображении).

Ответ 5

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

Надеюсь, что это поможет.