imagededup é um pacote python que simplifica a tarefa de encontrar duplicatas exatas e quase duplicadas em uma coleção de imagens.
Este pacote fornece funcionalidade para fazer uso de algoritmos de hash que são particularmente bons para encontrar duplicatas exatas, bem como redes neurais convolucionais que também são adeptas à localização de duplicatas próximas. Uma estrutura de avaliação também é fornecida para avaliar a qualidade da desduplicação de um determinado conjunto de dados.
A seguir detalha a funcionalidade fornecida pelo pacote:
Encontrar duplicatas em um diretório usando um dos seguintes algoritmos:
Rede Neural Convolucional (CNN) – Selecione entre vários modelos predefinidos ou forneça seu próprio modelo personalizado.
Hashing perceptivo (PHash)
Hash de diferença (DHash)
Hash de wavelet (WHash)
Hash médio (AHash)
Geração de codificações para imagens usando um dos algoritmos mencionados acima.
Estrutura para avaliar a eficácia da desduplicação com base em um mapeamento verdadeiro.
Plotando duplicatas encontradas para um determinado arquivo de imagem.
A documentação detalhada do pacote pode ser encontrada em: https://idealo.github.io/imagededup/
imagededup é compatível com Python 3.8+ e roda em Linux, MacOS X e Windows. É distribuído sob a licença Apache 2.0.
Instalação
Início rápido
Referências
Contribuir
Citação
Mantenedores
Licença
Existem duas maneiras de instalar o imagededup:
Instale imagededup do PyPI (recomendado):
pip install imagededup
Instale imagededup da fonte GitHub:
clone git https://github.com/idealo/imagededup.gitcd imagededup pip instalar "cython>=0.29"python setup.py instalar
Para encontrar duplicatas em um diretório de imagens usando hash perceptivo, o seguinte fluxo de trabalho pode ser usado:
Importar método de hash perceptivo
de imagededup.methods importar PHashphasher = PHash()
Gere codificações para todas as imagens em um diretório de imagens
codificações = phasher.encode_images(image_dir='caminho/para/imagem/diretório')
Encontre duplicatas usando as codificações geradas
duplicatas = phasher.find_duplicates(encoding_map=encodings)
Plote duplicatas obtidas para um determinado arquivo (por exemplo: 'ukbench00120.jpg') usando o dicionário de duplicatas
de imagededup.utils import plot_duplicatesplot_duplicates(image_dir='caminho/para/imagem/diretório',duplicate_map=duplicates,filename='ukbench00120.jpg')
A saída é semelhante a abaixo:
O código completo do fluxo de trabalho é:
from imagededup.methods import PHashphasher = PHash()# Gere codificações para todas as imagens em um diretório de imagemencodings = phasher.encode_images(image_dir='path/to/image/directory')# Encontre duplicatas usando o encodingsduplicates gerado = phasher.find_duplicates(encoding_map =codificações)# plota duplicatas obtidas para um determinado arquivo usando o dicionário de duplicatas de imagededup.utils import plot_duplicatesplot_duplicates(image_dir='caminho/para/imagem/diretório',duplicate_map=duplicados,filename='ukbench00120.jpg')
Também é possível usar seus próprios modelos personalizados para localizar duplicatas usando o método CNN.
Para exemplos, consulte esta parte do repositório.
Para uso mais detalhado da funcionalidade do pacote, consulte: https://idealo.github.io/imagededup/
Atualização : os benchmarks fornecidos são válidos apenas até imagededup v0.2.2
. As próximas versões apresentam mudanças significativas em todos os métodos, portanto os benchmarks atuais podem não ser válidos.
Benchmarks detalhados sobre métricas de velocidade e classificação para diferentes métodos foram fornecidos na documentação. De modo geral, podem-se tirar as seguintes conclusões:
A CNN funciona melhor para quase duplicatas e conjuntos de dados contendo transformações.
Todos os métodos de desduplicação funcionam bem em conjuntos de dados que contêm duplicatas exatas, mas o hashing de diferença é o mais rápido.
Aceitamos todos os tipos de contribuições. Consulte o guia de contribuição para obter mais detalhes.
Por favor, cite Imagededup em suas publicações se isso for útil para sua pesquisa. Aqui está um exemplo de entrada do BibTeX:
@misc{idealods2019imagededup, title={Imagededup}, autor={Tanuj Jain e Christopher Lennan e Zubin John e Dat Tran}, ano={2019}, howpublished={url{https://github.com/idealo/imagededup} }, }
Tanuj Jain, github: tanujjain
Christopher Lennan, github: clennan
Dat Tran, github: datitran
Consulte LICENÇA para obter detalhes.