Technical
Um Sistema de Recuperação de Conteúdo de Imagens Baseado em IA
Maria Loureiro · 7 de março de 2021
A medição de similaridade é o fundamento de qualquer sistema de recuperação de informação, gestão ou mineração de dados. Tanto na indústria como na comunidade científica, a detecção de similaridade tem-se revelado extremamente útil quando aplicada a diferentes casos de uso.
Ao longo do tempo, a quantidade de informação disponível na internet tem crescido exponencialmente, tornando mais difícil a sua análise e consumo sem o auxílio de sistemas de recuperação de informação ou ferramentas de filtragem, cujos elementos centrais correspondem à análise de similaridade entre diferentes segmentos de texto. Encontrar e filtrar informação relevante de acordo com preferências pessoais é uma tarefa demorada no esforço diário de se manter bem informado.
Além disso, a detecção de similaridade aplicada a imagens possui um grande número de aplicações possíveis em vários domínios. Em sistemas biométricos, particularmente em sistemas de reconhecimento de assinatura e reconhecimento facial, a detecção de similaridade de imagens é extremamente relevante em casos de detecção de falsificações e identificação visual, respectivamente (1). No setor do retalho, pode também ser de grande importância na detecção de produtos falsificados, através da determinação da similaridade entre uma imagem de consulta e uma base de dados de imagens válidas (2), reconhecimento de produtos em prateleiras de lojas (3) e recuperação de imagens baseada em conteúdo (CBIR), permitindo consultas baseadas em imagens em lojas online (4).
Desenvolvimento de um Sistema CBIR com um Dataset de Vestuário
Considerando a crescente procura por sistemas CBIR no comércio eletrónico e o crescimento evidente desta forma de retalho (5), durante o meu estágio na NILG.AI, desenvolvi uma demonstração de um sistema CBIR com um dataset de vestuário: o Apparel Images Dataset (6).
O dataset escolhido é composto por 11 385 fotografias amadores de artigos de vestuário (6), com um total de 6 cores diferentes e 5 tipos de artigos. Um total de 11 384 pares de imagens, positivos e negativos, foram criados a partir deste dataset para calcular a similaridade de imagens. Para estes pares, foram definidas duas tarefas distintas: tipo de vestuário e cor. Para cada uma destas tarefas, foram criados 5 692 pares, onde metade eram positivos e a outra metade negativos. Por outras palavras, para os pares cuja tarefa era a cor do vestuário, por exemplo, metade dos pares eram compostos por roupas com cores similares (pares positivos) e a outra metade com cores distintas (pares negativos).
Como exemplo, dois pares (um positivo e outro negativo) atribuídos à tarefa de tipo de vestuário são apresentados abaixo.
Para detectar a similaridade entre duas imagens, podem aplicar-se diferentes técnicas, desde medidas clássicas de similaridade utilizando métricas de distância até modelos de machine learning treinados. Independentemente da abordagem escolhida, o vetor de características de cada imagem (extraído de modelos de deep learning pré-treinados) pode ser utilizado como dados para calcular a similaridade.
Para a extração do vetor de características de cada imagem, foi utilizado um modelo pré-treinado: a rede neural convolucional VGG16, onde a última camada foi removida para obter o vetor de características (7).

Relativamente ao cálculo da similaridade, a Distância Euclidiana é uma técnica de medição simples mas poderosa que pode ser aplicada a dois vetores de características extraídos de um par de imagens. Uma alternativa é a Distância Cosseno, que calcula a diferença de direção, independentemente do comprimento de cada vetor de características, onde a distância é dada pelo ângulo entre os dois vetores (8). Ambas as métricas foram escolhidas para integrar o trabalho desenvolvido.
Relativamente a modelos de machine learning, existem também várias opções possíveis que podem ser utilizadas neste tipo de medição de similaridade. Regressão Logística e Random Forest são dois modelos amplamente utilizados, com uma grande variedade de aplicações, e ambos foram selecionados como técnicas de detecção de similaridade, utilizando o vetor de características extraído para treinar o modelo. Para a Regressão Logística em particular, a normalização de características foi também incluída no pipeline, uma vez que melhorou os resultados da classificação.
As quatro abordagens foram avaliadas com base nos coeficientes de Pearson e Spearman entre o valor de similaridade fornecido por cada técnica e a classificação alvo de cada par de imagens. Os resultados podem ser vistos na tabela abaixo.
| Método | Pearson | Spearman |
|---|---|---|
| Cosine Similarity | 0.387 | 0.358 |
| Inverse Euclidean Distance | 0.298 | 0.276 |
| Logistic Regression | 0.721 | 0.719 |
| Random Forest | 0.696 | 0.705 |
Embora os modelos de machine learning tenham claramente alcançado melhores resultados em comparação com métricas de similaridade, como esperado, todas as abordagens testadas foram incluídas na demonstração final.
Para a interface da demonstração, foi utilizado Streamlit (uma biblioteca Python de código aberto), que ajudou a criar facilmente uma aplicação interativa para o sistema desenvolvido. Além disso, a aplicação foi implementada utilizando Docker, para criar um ambiente reprodutível e facilitar o seu uso em diferentes máquinas.
A aplicação desenvolvida, como mencionado anteriormente, recupera as imagens mais similares no dataset quando comparadas com a imagem em análise. Esta última pode ser escolhida pelo utilizador e enviada para o website ou pode ser selecionada aleatoriamente pelo algoritmo, dentro das imagens disponíveis no dataset. Além disso, a aplicação permite também ao utilizador escolher uma das abordagens anteriormente mencionadas para calcular a detecção de similaridade.
Alguns exemplos do sistema desenvolvido são apresentados abaixo.
Página Inicial da Aplicação

Exemplo com utilização da Distância Euclidiana como medida de similaridade e teste com uma imagem aleatória do dataset:

Exemplo com utilização de um modelo de Regressão Logística pré-treinado como medida de similaridade e teste com uma imagem enviada que não está incluída no dataset:

Considerações Finais
Como mencionado anteriormente, existe um grande número de casos de uso relacionados com detecção de similaridade de imagens, mostrando o seu potencial de crescimento nos próximos anos. A demonstração ativa aqui explicada e desenvolvida para um sistema de recuperação de imagens baseado em conteúdo é apenas um pequeno exemplo das possibilidades nesta área. Esperamos que este artigo o inspire a desenvolver novos projetos por si próprio ou com a ajuda da equipa NILG.AI!
Referências
- Bashir A, Tabassum M, Naeem N. Biometric Image Enhancement, Feature Extraction and Recognition Comprising FFT and Gabor Filtering: Proceedings of the 2018 Computing Conference, Volume 1. (2019). p. 581-91.
- Daoud E, Vu Nguyen Hai D, Nguyen H, Gaedke M. IMPROVING FAKE PRODUCT DETECTION USING AI- BASED TECHNOLOGY (2020).
- Tonioni A, Serra E, Di Stefano L. A deep learning pipeline for product recognition on store shelves (2018). 25-31 p.
- Machado RSR, editor. Image visual similarity with deep learning: application to a fashion ecommerce company. 2017.
- Sabanoglu T. Global retail e-commerce sales 2014-2023 (2020) [cited 2021]. Available from: https://www.statista.com/statistics/379046/worldwide-retail-e-commerce-sales/.
- [Dataset] Antonov A. Apparel images dataset. 6. (2020).
- Flomo G. How to cluster images based on visual similarity (2020) [cited 2020]. Available from: https://towardsdatascience.com/how-to-cluster-images-based-on-visual-similarity-cd6e7209fe34.
- Dengsheng Z, Guojun L, editors. Evaluation of similarity measurement for image retrieval. International Conference on Neural Networks and Signal Processing, 2003 Proceedings of the 2003; 2003 14-17 Dec. 2003.
