# Stable Diffusion против Яндекс.Картинки
> В связи с возросшей популярностью приложения Lensa среди населения я решила провести небольшой OSINT-эксперимент.
## Тезис
Яндекс популярен в OSINT кругах благодаря его способности неплохо искать лица. Сможет ли он справиться со стилизованным изображением, если человек на картинке будет сильно похож на самого себя?
## Предыстория
Вы когда-нибудь задавались вопросом, как поисковики умудряются так быстро искать похожие картинки?
По большому счету варианта два:
- искать *действительно похожие* изображения
- распознавать объекты на изображении и искать эти объекты в других изображениях
Разберемся сначала с первым.
### Персептивный хеш
Перцептивные хэш-алгоритмы описывают класс функций для генерации сравнимых хэшей. Характеристики изображения используются для генерации индивидуального (но не уникального) отпечатка. В отличие от криптографических хэш-функций, перцептивные хэши можно сравнивать между собой и делать вывод о степени различия двух наборов данных.
Одна из простейших хэш-функций отображает среднее значение низких частот. В изображениях высокие частоты обеспечивают детализацию, а низкие частоты показывают структуру. Для построения хеша необходимо выполнить следующие действия:
1) Уменьшаем размер изображения с целью избавиться от высоких частот. Необязательно сохранять пропорции, таким образом хеш будет соответствовать всем вариантам изображения, независимо от размера и соотношения сторон. К примеру, можно вписать изображение в квадрат 8х8.
2) Уменьшаем глубину цвета, то есть переводим изображение в градации серого. Для квадрата 8x8 получаем 64 значения цвета.
3) Вычисляем среднее значение для всех 64 цветов.
4) Вычисляем цепочку битов. Каждый цвет заменяется на 0 или 1 в зависимости от того, больше он или меньше среднего.
5) ???
6) Строим хеш. 64 отдельных бита переводятся в одно 64-битное значение. Порядок не имеет значения, если он сохраняется постоянным.
Полученный хэш не изменится, если картинку масштабировать, сжать или растянуть. Изменение яркости или контраста, манипуляции с цветами не сильно повлияют на результат.
Вот так это выглядит на практике (*выдержка из моего диплома, он пригодился! на [локусы](https://ru.wikipedia.org/wiki/Диаграмма_Вороного) можно не обращать внимание, об этом как-нибудь потом*):

Как видите, сравнивая хеши картинок из какой-нибудь базы данных поисковика и хеш картинки на входе, мы можем искать похожие, например, строя расстояние Хэмминга между хешами.
### Распознавание объектов
Тут я не буду лезть к чужую степь и описывать теорию Computer Vision.
Покажу лишь скрин из Google:

Слева фотография, сделанная лично мной в одном из путшествий. А справа информация по распознанному объекту: ссылка на Google Карты и сайты, где упоминался данный объект. Заметьте, что фотографии справа не очень-то и похожи на сделанную мной.
Для полноты приведу скрин из Яндекс.Картинки.

## Эксперимент
Вернемся к нашим баранам. А что, если я возьму изменную фотографию человека и попробую найти его реальные изображения?
К таким мыслям я пришла, присматривая истории блогера @anastasile (не судите меня!).
Я взяла одно изображение, сгенерированное в приложении Lensa, и одну реальную фотографию. Я стралась подобрать максимально похожие ракурсы.
<p float="left">
<img src="https://i.imgur.com/FqyRFKS.jpg" width=300/>
<img src="https://i.imgur.com/v6u3Vyg.jpg" width=300/>
</p>
Далее для чистоты эксперимента я закинула оба изображения в Яндекс.Картинки. С обычной фотографией Яндекс справился. Красными прямоугольниками я отметила те результаты, где действительно изображена @anastasile. Причем, еще раз отмечу, что изображения сильно разные по цвету, положению головы и т.д.

А что до стилизованной картинки...

Яндекс. Поисковик, который не смог. Более того, по ему одной понятной причине он не распознал лица вообще...

## Directed by Robert B. Weide
На самом деле я попробовала искать различные сгенерированные изображение. Но ни одно из них не дало нужного результата.
Что ж, любители анонимности и рисованных картинок, можете смело ставить такие аватарки. Не забывайте только, что Lensa нужны ваши реальные фотографии 😉