imagededup es un paquete de Python que simplifica la tarea de encontrar duplicados exactos y casi duplicados en una colección de imágenes.
Este paquete proporciona funcionalidad para utilizar algoritmos hash que son particularmente buenos para encontrar duplicados exactos, así como redes neuronales convolucionales que también son expertas en encontrar casi duplicados. También se proporciona un marco de evaluación para juzgar la calidad de la deduplicación de un conjunto de datos determinado.
A continuación se detalla la funcionalidad proporcionada por el paquete:
Encontrar duplicados en un directorio utilizando uno de los siguientes algoritmos:
Red neuronal convolucional (CNN): seleccione entre varios modelos preempaquetados o proporcione su propio modelo personalizado.
Hashing perceptivo (PHash)
Hash de diferencia (DHash)
Hashing de wavelets (WHash)
Hash promedio (AHash)
Generación de codificaciones para imágenes utilizando uno de los algoritmos mencionados anteriormente.
Marco para evaluar la eficacia de la deduplicación dado un mapeo de verdad sobre el terreno.
Trazar duplicados encontrados para un archivo de imagen determinado.
La documentación detallada del paquete se puede encontrar en: https://idealo.github.io/imagededup/
imagededup es compatible con Python 3.8+ y se ejecuta en Linux, MacOS X y Windows. Se distribuye bajo la licencia Apache 2.0.
Instalación
Inicio rápido
Puntos de referencia
Contribuir
Citación
mantenedores
Licencia
Hay dos formas de instalar imagededup:
Instale imagededup desde PyPI (recomendado):
pip install imagededup
Instale imagededup desde la fuente de GitHub:
clon de git https://github.com/idealo/imagededup.gitcd imagededup instalación de pip "cython>=0.29"instalación de python setup.py
Para encontrar duplicados en un directorio de imágenes mediante hash perceptivo, se puede utilizar el siguiente flujo de trabajo:
Importar método de hash perceptivo
de imagededup.methods importar PHashphasher = PHash()
Generar codificaciones para todas las imágenes en un directorio de imágenes.
codificaciones = phasher.encode_images(image_dir='ruta/a/imagen/directorio')
Encuentra duplicados usando las codificaciones generadas.
duplicados = phasher.find_duplicates(encoding_map=codificaciones)
Trazar duplicados obtenidos para un archivo determinado (por ejemplo: 'ukbench00120.jpg') utilizando el diccionario de duplicados
desde imagededup.utils import plot_duplicatesplot_duplicates(image_dir='ruta/a/imagen/directorio',duplicate_map=duplicates,filename='ukbench00120.jpg')
El resultado es el siguiente:
El código completo para el flujo de trabajo es:
from imagededup.methods import PHashphasher = PHash()# Generar codificaciones para todas las imágenes en un directorio de imágenesencodings = phasher.encode_images(image_dir='path/to/image/directory')# Encuentra duplicados usando las codificaciones generadasduplicates = phasher.find_duplicates(encoding_map =codificaciones)# trazar duplicados obtenidos para un archivo determinado usando el diccionario de duplicados de imagededup.utils import plot_duplicatesplot_duplicates(image_dir='ruta/a/imagen/directorio',duplicate_map=duplicates,filename='ukbench00120.jpg')
También es posible utilizar sus propios modelos personalizados para buscar duplicados utilizando el método CNN.
Para ver ejemplos, consulte esta parte del repositorio.
Para un uso más detallado de la funcionalidad del paquete, consulte: https://idealo.github.io/imagededup/
Actualización : los puntos de referencia proporcionados solo son válidos hasta imagededup v0.2.2
. Las próximas versiones tendrán cambios significativos en todos los métodos, por lo que es posible que los puntos de referencia actuales no se mantengan.
En la documentación se proporcionan puntos de referencia detallados sobre métricas de velocidad y clasificación para diferentes métodos. En términos generales, se pueden sacar las siguientes conclusiones:
CNN funciona mejor para casi duplicados y conjuntos de datos que contienen transformaciones.
Todos los métodos de deduplicación funcionan bien en conjuntos de datos que contienen duplicados exactos, pero el hash diferencial es el más rápido.
Damos la bienvenida a todo tipo de contribuciones. Consulte la guía de contribuciones para obtener más detalles.
Cite Imagededup en sus publicaciones si esto es útil para su investigación. Aquí hay un ejemplo de entrada BibTeX:
@misc{idealods2019imagededup, título={Imagededup}, autor={Tanuj Jain y Christopher Lennan y Zubin John y Dat Tran}, año={2019}, howpublished={url{https://github.com/idealo/imagededup} }, }
Tanuj Jain, github: tanujjain
Christopher Lennan, github: clennan
Dat Tran, github: datitran
Consulte LICENCIA para obtener más detalles.