imagededup — это пакет Python, который упрощает задачу поиска точных и близких дубликатов в коллекции изображений.
Этот пакет предоставляет функциональные возможности для использования алгоритмов хеширования, которые особенно хороши для поиска точных дубликатов, а также сверточных нейронных сетей, которые также умеют находить близкие дубликаты. Также предоставляется система оценки, позволяющая судить о качестве дедупликации для данного набора данных.
Ниже подробно описаны функциональные возможности, предоставляемые пакетом:
Поиск дубликатов в каталоге с помощью одного из следующих алгоритмов:
Сверточная нейронная сеть (CNN) — выберите одну из нескольких готовых моделей или предложите свою собственную модель.
Перцептивное хеширование (PHash)
Хеширование разностей (DHash)
Вейвлет-хеширование (WHash)
Среднее хеширование (AHash)
Генерация кодировок изображений с использованием одного из вышеизложенных алгоритмов.
Платформа для оценки эффективности дедупликации с учетом истинного сопоставления.
Отображение дубликатов, найденных для данного файла изображения.
Подробную документацию по пакету можно найти по адресу: https://idealo.github.io/imagededup/.
imagededup совместим с Python 3.8+ и работает в Linux, MacOS X и Windows. Распространяется по лицензии Apache 2.0.
Установка
Быстрый старт
Тесты
Способствовать
Цитирование
Мейнтейнеры
Лицензия
Существует два способа установки imagededup:
Установите imagededup из PyPI (рекомендуется):
pip install imagededup
Установите imagededup из источника GitHub:
git клон https://github.com/idealo/imagededup.gitcd imagededup pip install "cython>=0.29"python setup.py install
Чтобы найти дубликаты в каталоге изображений с помощью перцептивного хеширования, можно использовать следующий рабочий процесс:
Импортировать метод перцептивного хеширования
из imagededup.methods import PHashphasher = PHash()
Создать кодировки для всех изображений в каталоге изображений.
кодировки = phasher.encode_images(image_dir='path/to/image/directory')
Найдите дубликаты, используя сгенерированные кодировки
дубликаты = phasher.find_duulates(encoding_map=encodings)
Отобразите дубликаты, полученные для данного файла (например: «ukbench00120.jpg»), используя словарь дубликатов.
из imagededup.utils importplot_duulatesplot_duulates(image_dir='path/to/image/directory',duulate_map=duulates,filename='ukbench00120.jpg')
Вывод выглядит следующим образом:
Полный код рабочего процесса:
from imagededup.methods import PHashphasher = PHash()# Сгенерировать кодировки для всех изображений в каталоге изображений encodings = phasher.encode_images(image_dir='path/to/image/directory')# Найти дубликаты, используя сгенерированные кодировки: phasher.find_duulates(encoding_map =encodings)# отображать дубликаты, полученные для данного файла с использованием словаря дубликатов из imagededup.utils importplot_duulatesplot_duulates(image_dir='path/to/image/directory',duulate_map=duulates,filename='ukbench00120.jpg')
Также возможно использовать собственные пользовательские модели для поиска дубликатов методом CNN.
Примеры можно найти в этой части репозитория.
Для более подробной информации об использовании функциональности пакета см. https://idealo.github.io/imagededup/.
Обновление : предоставленные тесты действительны только до imagededup v0.2.2
. В следующих выпусках будут внесены существенные изменения во все методы, поэтому текущие тесты могут не соответствовать требованиям.
Подробные тесты скорости и показателей классификации для различных методов представлены в документации. В целом можно сделать следующие выводы:
CNN лучше всего работает с близкими дубликатами и наборами данных, содержащими преобразования.
Все методы дедупликации хорошо работают с наборами данных, содержащими точные дубликаты, но хеширование различий является самым быстрым.
Мы приветствуем любые виды вкладов. Дополнительную информацию см. в руководстве по вкладу.
Пожалуйста, цитируйте Imagededup в своих публикациях, если это будет полезно для вашего исследования. Вот пример записи BibTeX:
@misc{idealods2019imagedup, title={Imagededup}, автор={Танудж Джайн, Кристофер Леннан, Зубин Джон и Дат Тран}, год={2019}, Howpublished={url{https://github.com/idealo/imagededup} }, }
Танудж Джайн, github: tanujjain
Кристофер Леннан, github: clennan
Дат Тран, github: датитран
Подробности см. в разделе ЛИЦЕНЗИЯ.