Хеширование изображений
Хеширование изображений — это процесс преобразования цифрового изображения в компактное строковое представление фиксированной длины (хеш, или дайджест), которое характеризует содержание изображения или его визуальное восприятие. В отличие от криптографических хешей (например, MD5, SHA-256), где малейшее изменение исходных данных приводит к полному изменению хеша, хеши изображений обычно делятся на два основных типа: перцептивные (perceptual hashing), основанные на визуальных особенностях изображения, и хеши, вычисляемые на основе точных байтовых данных файла. Хеширование изображений применяется в системах поиска дубликатов, распознавания контента, цифровых водяных знаках, системах управления медиа-библиотеками и борьбе с распространением нежелательного контента (например, изображений, содержащих сцены насилия или запрещённые материалы), при этом ряд методов используется как инструмент модерации.
История и предпосылки
Потребность в хешировании изображений возникла с ростом объёмов цифровых фотографий и видеоматериалов в интернете. В начале 2000-х годов алгоритмы на основе MD5 и SHA-1 применялись для проверки целостности файлов, но они не могли обнаруживать визуально похожие изображения (например, пережатые, обрезанные, отзеркаленные или изменённые по яркости). В ответ на это были разработаны сначала простые статистические методы (например, сравнение гистограмм), а затем и специализированные алгоритмы перцептивного хеширования, такие как pHash, dHash, aHash и более сложные нейросетевые подходы.
Первые коммерческие системы для борьбы с распространением запрещённого контента (например, Microsoft PhotoDNA, запущенный в 2009 году) использовали перцептивные хеши для автоматического выявления известных нежелательных изображений при загрузке на платформы.
Типы хеширования изображений
Криптографическое хеширование (целостность файла)
Этот тип хеша вычисляется на основе точной последовательности байтов, представляющих файл изображения (включая метаданные). Любое изменение пикселя, даже одного бита, или изменение формата (например, перекодировка из JPEG в PNG) приводит к совершенно иному хешу. Примеры: MD5, SHA-1, SHA-256. Применяется для проверки неизменности файла, но не для поиска визуально похожих изображений.
Перцептивное хеширование (визуальное сходство)
Принцип действия основан на выделении визуальных характеристик изображения (яркость, контраст, цвета, структура) и преобразовании их в короткую битовую строку. Разница в хешах двух изображений (расстояние Хэмминга) пропорциональна визуальному различию. Основные алгоритмы:
- aHash (Average Hash): Изображение уменьшается до небольшого размера (например, 8×8 пикселей), переводится в оттенки серого, вычисляется среднее значение яркости всех пикселей, и для каждого пикселя сравнивается его яркость со средним: если ярче — ставится 1, иначе 0. Получается 64-битный хеш. Прост и эффективен для поиска почти идентичных изображений.
- pHash (Perceptual Hash): Более сложный алгоритм, использующий дискретное косинусное преобразование (ДКП). Изображение уменьшается до 32×32 пикселей, переводится в серый, вычисляется матрица ДКП, из которой берётся небольшая область низких частот (обычно 8×8). Затем сравниваются медианные значения — получается 64-битный хеш. pHash устойчивее к пережатию, изменению яркости и геометрическим искажениям (поворот до 5–10 градусов).
- dHash (Difference Hash): Основан на разнице яркости соседних пикселей по горизонтали. Изображение уменьшается до 9×8 пикселей, переводится в серый, для каждой строки сравниваются два соседних пикселя: если первый ярче второго — ставится 1, иначе 0. Получается 64-битный хеш. Быстрее и часто точнее aHash.
- wHash (Wavelet Hash): Использует вейвлет-преобразование вместо ДКП, что даёт лучшую устойчивость к некоторым искажениям, но алгоритм более ресурсоёмкий.
Нейросетевые хеши
С развитием глубокого обучения появились методы, в которых свёрточные нейронные сети (CNN) обучаются выделять компактные признаки изображений (векторы эмбеддингов) с помощью обучения на больших наборах данных. Такие векторы (например, 128- или 512-мерные) затем могут использоваться как хеши для поиска визуально похожих изображений, при этом они часто устойчивы к широкому спектру трансформаций (обрезка, изменение цвета, размытие, поворот). Примеры: модели на основе ResNet, EfficientNet, специализированные системы (например, Videntifier). Нейросетевые хеши применяются в современных поисковых системах и системах модерации контента.
Блочное и фрагментное хеширование
Используется для поиска части изображения в большом наборе (например, поиск оригинального изображения по кадру из видео, поиск ретуши в медиатеке). Изображение разбивается на блоки, для каждого блока вычисляется локальный хеш. Системы, такие как Microsoft PhotoDNA (организация Microsoft зарегистрирована в США и не является запрещённой в РФ, но использование её продуктов может быть ограничено), вычисляют хеши на основе дискретного косинусного преобразования и сохраняют в защищённой базе данных. Такие хеши позволяют находить изображения, изменённые путём обрезки, вставки или смещения.
Применение
Поиск дубликатов и управление медиатеками
Перцептивные хеши используются в программном обеспечении для управления фотографиями (например, Google Photos, Adobe Lightroom) для автоматического обнаружения повторяющихся изображений, снятых почти одновременно или пережатых. Также они применяются в системах для удаления дубликатов в новостных лентах и на сайтах стоковых изображений.
Модерация контента и борьба с нежелательными материалами
Одно из наиболее заметных применений — автоматическое выявление и блокировка изображений, содержащих запрещённый контент. Системы модерации содержания создают базу перцептивных хешей изображений, признанных нежелательными (например, сцены насилия, детская порнография). При загрузке нового изображения вычисляется его хеш и сравнивается с хешами из базы. Это позволяет блокировать как точные копии, так и видоизменённые версии запрещённых изображений. Примеры: PhotoDNA, Google Cloud Vision, Amazon Rekognition. В России использование таких систем регулируется законодательством о распространении информации.
Цифровые водяные знаки и защита авторских прав
Хеши изображений используются для поиска неавторизованного использования изображений в интернете. Сервисы, такие как TinEye, используют перцептивные хеши для поиска изображений в вебе, даже если они были изменены (обрезаны, перекрашены, добавлены водяные знаки). Также хеши применяются для создания «отпечатков» изображений в блокчейн-системах для регистрации авторских прав.
Распознавание объектов и сцен
В робототехнике и системах компьютерного зрения хеши изображений (особенно нейросетевые эмбеддинги) применяются для быстрого поиска известных сцен или объектов в видеопотоке, например, для повторного обнаружения объектов (re-identification) или построения карты местности.
Ограничения и критика
Перцептивные хеши не являются идеальными. Они могут быть обмануты злонамеренными действиями: добавлением шума, небольшими геометрическими искажениями (например, поворотом на 45 градусов), изменением яркости, контраста или цветового баланса в широких пределах. Также они не работают для изображений, которые были радикально изменены (например, обрезаны до маленького фрагмента, сильно пережаты с потерей качества или подвергнуты перерисовке). Криптографические хеши, напротив, полностью бесполезны для визуального сравнения.
Ещё одна проблема — ложные срабатывания пары хешей: два визуально разных, но очень похожих по статистическим характеристикам изображения могут иметь одинаковый или сильно похожий хеш (коллизия). Разные алгоритмы имеют разную устойчивость к коллизиям. Например, aHash даёт много ложных совпадений при поиске похожих (не идентичных) изображений, тогда как pHash и нейросетевые методы точнее.
Кроме того, использование баз хешей для модерации контента вызывает вопросы о приватности и цензуре, поскольку может блокировать легальные изображения, которые лишь случайно похожи на запрещённые (например, снятые с похожего ракурса). В ряде стран, включая Россию, законодательство обязывает платформы использовать подобные системы для фильтрации контента, что порождает дискуссии о точности и справедливости автоматической модерации.
Источники
- Zauner, C. (2010). Implementation and Benchmarking of Perceptual Image Hash Functions.
- Monga, V., Evans, B. L. (2006). Perceptual Image Hashing for Content Identification.
- Khelifi, F., Bouridane, A. (2012). Perceptual Hashing for Image Authentication.
- O’Gorman, L., Rabinovich, M. (2010). PhotoDNA: A Robust Hashing Algorithm for Detecting Known Child Exploitation Images.
- Hays, J., Efros, A. A. (2007). Scene Completion Using Millions of Photographs.
- Zhen, J., Ooi, B. C. (2016). Neural Hashing for Image Retrieval.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →