Do Texto à Imagem: Fundamentos do CLIP
Notícia de última hora: adolescentes estão recorrendo ao TikTok como seu mecanismo de busca favorito, e aparentemente ele funciona melhor do que você imagina. Isso não é surpreendente, porque os mecanismos de busca tradicionais nem sempre encontram o que você quer. Especialmente se você é uma pessoa visual como eu, provavelmente acharia imagens e vídeos muito mais intuitivos e agradáveis do que ter que vasculhar linhas de texto. Você já se perguntou, porém, como as máquinas entendem um determinado texto e o combinam com as imagens que retornam?
Nesta série de blog, apresentaremos a você a recuperação de imagens com base em textos, ou serviços de texto para imagem. Texto para imagem sempre foi uma aplicação cross-modal importante, e o setor costumava depender de soluções indiretas que exigem uma enorme quantidade de dados gerados por usuários para agrupar imagens e descobrir suas relações semânticas. Isto é, até o ano passado, quando a OpenAI lançou uma bomba no setor com o lançamento do CLIP. A OpenAI usou um número impressionante de 400 milhões de pares texto-imagem para construir o CLIP, de modo que ele possa aprender conceitos visuais com base em entrada de linguagem natural. Agora, precisamos conhecer alguns conceitos básicos para entender os componentes básicos dos algoritmos de busca, do CLIP e de texto para imagem.
Algoritmos de busca e similaridade semântica
Algoritmos de busca, sejam eles tradicionais ou modernos, unimodais ou cross-modais, não podem prescindir da medida de similaridade semântica, ou melhor, da distância semântica entre duas coisas. Isso pode soar um pouco abstrato, então vejamos alguns exemplos. Vamos começar com o espaço unidimensional dos inteiros, que provavelmente foi gravado no seu DNA desde o ensino fundamental (embora provavelmente não tenha sido formulado assim naquela época). Agora, temos 5 inteiros positivos {1, 5, 6, 8, 10}; diga-me, qual número está mais próximo de 5? Sim, é 6. Parabéns por se formar na sua infância. A razão é que 6 tem a menor distância de 5, que é 1. A distância aqui é a distância semântica entre 5 e 6.
Figura 1 Um Espaço Unidimensional de Inteiros
Agora que você está em machine learning, vamos dar um pequeno passo adiante para ver como a busca de texto tradicional é feita. Se você conversar com alguém que já trabalhou com busca de texto antes, então provavelmente ouvirá muito sobre TF-IDF. TF se refere a term frequency, isto é, frequência de palavras. Imagine que existe um espaço de alta dimensão com tantas dimensões quanto há palavras em um dicionário. Se contarmos o número de ocorrências de cada palavra em um artigo e definirmos esse número como o valor na dimensão correspondente desse espaço, podemos descrever qualquer artigo como uma distribuição de vetores esparsos nesse espaço vetorial de palavras (esparsos porque um artigo geralmente cobre apenas uma fração muito pequena das palavras no dicionário).
Figura 2 Uma Demonstração do Espaço Vetorial de Palavras
Esta é uma forma de pensar muito simples, mas prática. Como mostrado acima, se dois artigos são semelhantes em sua área ou conteúdo, então os vetores correspondentes a esses dois artigos não deveriam estar tão distantes no espaço vetorial de palavras. Se os dois artigos forem idênticos, então a distância entre seus vetores de palavras será 0. Na busca de texto, estendemos o espaço unidimensional de inteiros positivos do nosso primeiro exemplo para um espaço vetorial de palavras de alta dimensão, mas eles basicamente compartilham a mesma abordagem: definir um espaço que possa ser usado para descrever a semântica dos dados e determinar a distância entre eles.
Vamos dar outro pequeno passo (sim, você viu isso chegando). Agora que já resolvemos os textos, por que não mapear também a semântica das imagens para o espaço vetorial de palavras, para que possamos alcançar a cross-modalidade texto-imagem?
Mas, é claro, não é tão fácil assim. Textos basicamente nos oferecem sua semântica de graça: eles têm "palavras" como uma unidade semântica natural. Imagens não têm isso. Não podemos usar seus pixels individuais para definir seus significados.
O quebra-cabeça de vetorizar sem unidades semânticas naturais costumava afligir o campo da busca de imagens e dos dados não estruturados em geral. A maioria dos tipos de dados (imagens, vídeos, áudio, nuvens de pontos etc.) não vem com unidades semânticas naturais. Ele não pôde ser resolvido de forma eficaz até que dados e poder computacional se tornassem baratos o suficiente e redes neurais se tornassem populares. Vamos ver como esse problema é resolvido por redes neurais.
Figura 3 Camadas e Arquiteturas de Redes Neurais Convolucionais
Uma das grandes características de uma rede neural profunda é que ela é "profunda o suficiente" (De nada). Na figura acima, a entrada à esquerda é uma imagem de 224 x 224, e a saída à direita é um vetor de 4096 dimensões. Da esquerda para a direita, uma imagem passa por muitas camadas da rede neural, e a rede neural comprime gradualmente as informações espaciais nos pixels da imagem original em informações semânticas. Nesse processo, podemos ver que a dimensão espacial está ficando mais estreita, mas a dimensão semântica está ficando mais longa (não é a afirmação mais precisa, mas não encontrei uma maneira melhor de colocar isso). Essencialmente, esse processo é um mapeamento da semântica da imagem para um espaço vetorial real com 4096 dimensões. Em comparação com as técnicas descritas anteriormente, vetorizar via redes neurais profundas tem várias vantagens óbvias:
- Não exige que os dados originais tenham unidades semânticas naturais e diretamente segmentáveis, como “palavras”.
- A definição de “similaridade de dados” é flexível e é determinada pelos dados de treinamento e pela função objetivo, podendo ser personalizada para características específicas da aplicação.
- O processo de vetorização dos dados é o processo de inferência do modelo, que envolve principalmente operações matriciais e pode aproveitar as capacidades de aceleração das GPUs modernas.
O que o CLIP fez foi conectar textos e imagens de forma multimodal. No lado dos dados, a OpenAI desenvolveu um conjunto de dados em grande escala de pares texto-imagem, WIT (WebImageText). O modelo é treinado usando uma abordagem de aprendizagem contrastiva para prever se imagens e textos devem formar pares. Seu design é bastante simples:
- Realizar a codificação de características para textos e imagens, respectivamente;
- Projetar características de texto e imagem de seus respectivos espaços de características unimodais para um espaço de características multimodal;
- Dentro do espaço multimodal, a distância entre os vetores de características de textos e imagens que devem formar pares (amostras positivas) deve ser a menor possível, e vice-versa para amostras negativas.
Figura 4 Aprendendo Modelos Visuais Transferíveis a Partir de Supervisão de Linguagem Natural. Fonte da imagem: https://arxiv.org/pdf/2103.00020.pdf
A chave aqui é a segunda etapa, que consiste em projetar características unimodais de textos e imagens em um espaço de características multimodal por meio da camada de projeção. Isso significa que podemos mapear a semântica de imagens e textos para o mesmo espaço de alta dimensionalidade. Esse espaço semântico é a ponte que o CLIP reserva para a busca multimodal texto-imagem. Agora podemos codificar um trecho de texto descritivo como um vetor, encontrar os vetores de imagens com semântica semelhante e então encontrar a imagem original que queremos por meio desses vetores de imagem!
No geral, é a mesma fórmula clássica: espaço vetorial mais similaridade semântica. A importância do CLIP é que ele nos ajuda a criar um espaço de alta dimensionalidade que unifica a semântica de textos e imagens, onde quanto mais próxima a semântica de textos e imagens, menor a distância entre os vetores correspondentes.
Componentes básicos de um serviço de texto para imagem
Um serviço típico de texto-para-imagem contém três partes: lado da solicitação (textos), algoritmo de busca (o “para”) e bancos de dados subjacentes (imagens).
Os bancos de dados contêm imagens originais, seus vetores e o modelo de inferência que codifica as imagens originais em vetores semânticos. Correspondentemente, o lado da solicitação envolve principalmente o modelo de inferência que codifica textos em vetores semânticos.
A parte “para” é o processo que conecta solicitações, o banco de dados vetorial e o banco de dados de imagens. Um texto do lado da solicitação passa por um modelo para obter seu vetor, que então será comparado no banco de dados vetorial para encontrar os topK vetores de imagem mais semelhantes. Os resultados são retornados assim que o programa localiza as imagens originais que correspondem aos vetores.
Figura 5 Componentes básicos de um serviço de texto-para-imagem
Conclusão
Agora você conhece os fundamentos da busca de texto-para-imagem e do CLIP! No próximo artigo, vamos praticar o que aprendemos aqui construindo um protótipo de serviço de texto-para-imagem, em apenas cinco minutos!
Se você gostou deste artigo, que tal dar uma olhada no nosso projeto? Agradecemos estrelas, forks ou até mesmo um pequeno clique seu. Sinta-se à vontade para nos enviar suas perguntas no Slack também!
Sobre a série
“De Texto para Imagem” é uma série de blogs que apresenta como usar o CLIP para construir um serviço de texto-para-imagem em larga escala, incluindo:
- Entendendo algoritmos de busca, CLIP e texto-para-imagem;
- Criando uma demonstração de texto-para-imagem em 5 minutos;
- Tópico avançado 1: Implantar um banco de dados vetorial para recuperação vetorial em larga escala
- Tópico avançado 2: Implantar um serviço de inferência que permite processar mais de 1000 QPS de solicitações de inferência
- Tópico avançado 3: Compressão de dados vetoriais
Continue lendo

8 Latest RAG Advancements Every Developer Should Know
Explore eight advanced RAG variants that can solve real problems you might be facing: slow retrieval, poor context understanding, multimodal data handling, and resource optimization.

Vector Databases vs. Time Series Databases
Use a vector database for similarity search and semantic relationships; use a time series database for tracking value changes over time.

AI Integration in Video Surveillance Tools: Transforming the Industry with Vector Databases
Discover how AI and vector databases are revolutionizing video surveillance with real-time analysis, faster threat detection, and intelligent search capabilities for enhanced security.



