AppleNeuralHash2ONNX: преобразование модели Apple NeuralHash для обнаружения CSAM в ONNX

appleneuralhash2onnxпреобразованиемоделиappleneuralhashдляобнаруженияcsamвonnx

Преобразование модели Apple NeuralHash для обнаружения CSAM в ONNX .

Введение

Apple NeuralHash – это метод перцептивного хеширования для изображений на основе нейронных сетей. Он может допускать изменение размера и сжатие изображения. Шаги хеширования следующие:

  1. Преобразование изображения в RGB.
  2. Измените размер изображения на 775Икс775 .
  3. Нормализовать значения RGB до диапазон.
  4. Выполните вывод для модели NeuralHash.
  5. Вычислить скалярное произведение
  6. 112Икс200 матрица с результирующим вектором 275 плавает.

  7. Применить двоичный шаг к результирующему 112 вектор с плавающей точкой.
  8. Преобразование вектора 1.0 и 0.0 в биты, в результате 186 – бит двоичных данных.
  9. В этом проекте мы конвертируем модель Apple NeuralHash в формат ONNX. Также включен демонстрационный скрипт для тестирования модели.

    Предварительное условие

    ОС

    Оба macOS и Linux будут работать. В следующих разделах Debian используется для примера Linux.

    Декодер LZFSE

    • macOS: установите, запустив brew install lzfse .
    • Linux: сборка и установка из Источник lzfse .

    Python

    Python 3.6 и выше должен работать. Установите следующие зависимости:

    pip install onnx coremltools

     

    Руководство по преобразованию

    Шаг 1: Получите модель NeuralHash

    Вам понадобятся 4 файла из последней сборки macOS или iOS:

    .
  10. Распакуйте файл:
компакт диск / путь / к / ipsw / файлу mkdir unpacked_ipsw компакт диск
unpacked_ipsw распаковать ../
. ipsw
 
  • Найдите образ системы:
  • Вам нужно самое большое .dmg , например 36 - - 10. dmg .

    1. Смонтировать образ системы. В macOS просто откройте файл в Finder. В Linux выполните следующие команды:

      Необходимые файлы находятся в / System / Library / Frameworks / Vision. framework / в смонтированном пути.

      Положи их в том же каталоге:

       mkdir NeuralHash 
      компакт диск NeuralHash cp /System/Library/Frameworks/Vision.framework/Resources/NeuralHashv3b-current.espresso. . cp /System/Library/Frameworks/Vision.framework/Resources/neuralhash_200Икс128 _ seed1.dat
      .

      Шаг 2: Расшифруйте структуру и формы модели

      Обычно скомпилированные модели Core ML хранят структуру в model.espresso.net и формы в model.espresso.shape , оба в JSON. То же самое для модели NeuralHash, но сжатое с помощью .

      dd if = NeuralHashv3b-current.espresso.net bs = 4 skip = 7

      Результирующая модель NeuralHash / model.onnx .

      Использование

      Осмотрите модель

      i идеальный инструмент для этой цели.

      Вычислить нейронный хеш с помощью

    1. Запустить nnhash.py на изображении:
    python3 nnhash.py /path/to/model.onnx / путь / к / neuralhash _ 186Икс186 _ seed1.dat image.jpg

     

    Пример вывода:

    Примечание: Нейронный хэш, сгенерированный здесь, может отличаться на несколько бит от сгенерированного на Устройство iOS. Это ожидается, поскольку разные устройства iOS в любом случае генерируют немного разные хэши. Причина в том, что нейронные сети основаны на вычислениях с плавающей запятой. Точность сильно зависит от оборудования. Для небольших сетей это не будет иметь никакого значения. Но у NeuralHash есть 775 + слои, что приводит к значительным совокупные ошибки.

    iPad Pro 14. 5 дюймов

    2b 275 faa6b 64 ffcc4c 4735 e1

    Устройство

    Хеш

    M1 Mac

    2b5c6faa6bb7bdcc4c 4735 a1

    Симулятор iOS

    2b5c6faa6bb6bdcc4c 63036 a1

    Время выполнения ONNX

    2b5c6faa6bb6bdcc4c a1

    Кредиты

  • для обнаружения частного API NeuralHash.

  • для скомпилированного Core ML в сценарий ONNX.
  • Leave a comment

    Your email address will not be published. Required fields are marked *

    seven + eight =