Índice
O CLIP, também conhecido como “Pré-treinamento de imagem de linguagem contrastiva”, é um dos algoritmos renomados discutidos em um white paper chamado “Aprendendo modelos visuais transferíveis da supervisão de linguagem natural”, publicado por pesquisadores do OpenAI - um laboratório de pesquisa em inteligência artificial. O maior consumo do CLIP é feito nos casos de uso baseados em visão computacional que utiliza um algoritmo denominado “Dall-E 2” que também foi desenvolvido pela equipe da Open AI. Mais precisamente, o CLIP está sendo usado como um modelo auxiliar para o algoritmo “Dall-E 2”. Mas não entenda mal que o CLIP não é poderoso, pois é consumido como um modelo auxiliar :)
Apesar de ser um modelo auxiliar, o CLIP é considerado um passo importante na pesquisa de aprendizado profundo. Podemos implementar o CLIP para resolução de problemas separada, mesmo sem “Dall-E 2”. Neste artigo, podemos discutir o objetivo, o procedimento de trabalho e alguns dos prós e contras do CLIP por meio de alguns exemplos da vida real e como podemos simplificar a vida de nossos projetos de aprendizado profundo.
O objetivo principal por trás do algoritmo CLIP é encontrar um texto específico de uma lista de textos que seja mais semelhante à imagem fornecida.
Por exemplo,
Vamos considerar a seguinte imagem como input-
E digamos que temos alguns dos textos em uma determinada lista-
A principal tarefa de um modelo CLIP é combinar o texto mais apropriado da lista fornecida com a imagem de entrada, conforme mostrado abaixo:
Fundamentalmente, trata-se de uma rede neural artificial que considera cada texto da lista como uma classe e atribui um valor de probabilidade para cada texto correspondente à imagem. Logicamente, o texto que obtém o valor máximo de probabilidade pode ser considerado como a saída.
Um grande ponto positivo do CLIP é que ele já conhece todas as palavras do idioma “inglês”. Algumas das características do modelo CLIP que o tornam especial quando comparado com outros algoritmos semelhantes são:
O modelo CLIP não se restringe a uma única palavra no texto. Em vez disso, ele tenta extrair todas as informações de todas as palavras na frase de entrada e todos os pixels de uma imagem. Ele nunca se esquece de lembrar todos os aspectos de uma imagem de entrada, como os objetos de fundo, cores, formas, etc.
Por exemplo,
Vamos considerar a seguinte imagem de entrada -
Todos os textos na lista fornecida, exceto o último, parecem uma correspondência lógica para a entrada. Qualquer outro modelo teria lutado para alcançar um alto valor de probabilidade de condenação para uma determinada classe. No entanto, o CLIP teria analisado os padrões de todos os aspectos dessa imagem, como canil, cela, cachorro etc.
A luz do sol parece estar vindo de fora para dentro. Portanto, deve ser uma estrutura interna. Além disso, há a presença de um animal em vez de um humano. Portanto, não deveria ser uma Cadeia, mas poderia ser um Canil.
Esse tipo de análise avançada, considerando todos os aspectos da imagem e do texto, pode não ser possível para outros modelos da mesma categoria.
O algoritmo CLIP foi treinado em 400 milhões de imagens com descrições de texto emparelhadas que o tornam altamente conhecedor do universo e confiante na resolução de tarefas complexas com imagens e textos complexos.
O conjunto de dados Imagenet consiste em apenas 1,2 milhão de imagens. 400 milhões é quase 300 vezes maior que 1,2 milhão. A maioria das 400 milhões de imagens são extraídas diretamente da internet, o que a torna uma coleção grande e diversificada que aumenta sua capacidade de detecção de padrões.
Para o desenvolvimento da arquitetura CLIP, precisamos codificar as imagens e os textos correspondentes em vetores matemáticos. Isso ocorre porque um algoritmo de aprendizado de máquina não será capaz de inferir as informações se estiverem em um formato visual ou textual. Portanto, precisamos convertê-los em valores numéricos.
A entrada da imagem é convertida em um vetor matemático usando um algoritmo Transformer ou Resnet
A entrada textual está em um vetor matemático usando um algoritmo Transformer-
Como temos uma lista de pares Imagem-Texto, precisamos denotá-la usando certos alfabetos.
Cada imagem é indicada como I1, I2,I3...IN etc.
Cada texto é denominado como T1,T2,T3…TN etc.
Depois disso, precisamos construir uma matriz de similaridade com cada uma das imagens como linhas e cada um dos textos como colunas.
Conforme mencionado na imagem acima, os pares diagonais imagem-texto terão mais similaridade por se referirem ao mesmo contexto. Os elementos não diagonais são pares aleatórios que não pertencem ao mesmo contexto. Portanto, seu valor de similaridade será baixo.
O objetivo das funções de otimização será aumentar o valor de similaridade para os pares diagonais tanto quanto possível e diminuir a similaridade entre pares imagem-texto não diagonais.
Em um ponto do aprendizado, o modelo será capaz de aprender os padrões ocultos que correspondem às imagens e textos que pertencem ao mesmo contexto e diferenciar as imagens e textos que pertencem a diferentes contextos.
Este procedimento é chamado tecnicamente de “pré-treinamento contrastivo” .
O CLIP é considerado um algoritmo “computacionalmente eficiente”. Isso ocorre porque eles usam o algoritmo do transformador para codificar imagens e textos que acessam os dados de maneira paralela. Se usarmos outros algoritmos como LSTM ou RNN, eles tendem a acessar os dados para codificação de maneira serial, o que pode consumir muito tempo e espaço.
Como o CLIP pode combinar uma imagem com uma frase longa, os pesquisadores geralmente criam um prompt de texto algo como “Uma foto de _____”. Então, ao iterar por uma lista de textos, o programa de computador ajusta automaticamente cada palavra da lista neste prompt de texto como-
Este texto é então codificado e combinado com o vetor codificado da imagem de entrada para calcular o valor de similaridade.
Em conjuntos de dados com divisões de treinamento, o desempenho do CLIP zero-shot é, em média, competitivo com a linha de base supervisionada simples de um classificador linear sobre os recursos do ResNet-50. Na maioria desses conjuntos de dados, o desempenho dessa linha de base agora está bem abaixo do estado geral da arte. Ainda é necessário um trabalho significativo para melhorar as capacidades de aprendizado e transferência de tarefas do CLIP. Embora o dimensionamento tenha melhorado constantemente o desempenho e sugerido um caminho para a melhoria contínua, os pesquisadores estimam que é necessário um aumento de cerca de 1.000 vezes na computação para que o CLIP de disparo zero atinja o desempenho geral de última geração. Isso é inviável para treinar com o hardware atual. Mais pesquisas para melhorar a eficiência computacional e de dados do CLIP serão necessárias.
Verificou-se que o desempenho zero-shot do CLIP ainda é bastante fraco em vários tipos de tarefas. Quando comparado a modelos de tarefas específicas, o desempenho do CLIP é ruim em vários tipos de classificação refinada, como diferenciação de modelos de carros, espécies de flores e variantes de aeronaves. O CLIP também luta com tarefas mais abstratas e sistemáticas, como contar o número de objetos em uma imagem. Finalmente, para novas tarefas que provavelmente não serão incluídas no conjunto de dados de pré-treinamento do CLIP, como classificar a distância até o carro mais próximo em uma foto, o desempenho do CLIP pode ser quase aleatório.
Embora o CLIP zero-shot generalize bem para muitas distribuições de imagens naturais conforme investigado, os pesquisadores observaram que o CLIP zero-shot ainda generaliza mal para dados que estão realmente fora de distribuição para ele.
Por exemplo, o CLIP aprende uma representação de OCR semântica de alta qualidade com bom desempenho em texto renderizado digitalmente, o que é comum em seu conjunto de dados de pré-treinamento, conforme evidenciado pelo desempenho em Rendered SST2.
No entanto, o CLIP atinge apenas 88% de precisão nos dígitos manuscritos do MNIST. Um embaraçoso
a linha de base simples da regressão logística em pixels brutos supera o CLIP zero-shot. A recuperação semântica e quase duplicada do vizinho mais próximo verifica se quase não há imagens que se assemelhem a dígitos MNIST em nosso conjunto de dados de pré-treinamento.
Isso sugere que o CLIP faz pouco para resolver o problema subjacente da generalização frágil dos modelos de aprendizado profundo. Em vez disso, o CLIP tenta contornar o problema e espera que, ao treinar em um conjunto de dados tão grande e variado, todos os dados sejam efetivamente distribuídos. Essa é uma suposição ingênua que, como demonstra o MNIST, é fácil de violar.
Embora o CLIP possa gerar de forma flexível classificadores zero-shot para uma ampla variedade de tarefas e conjuntos de dados, o CLIP ainda está limitado a escolher apenas aqueles conceitos em um determinado classificador zero-shot. Esta é uma restrição significativa em comparação com uma abordagem verdadeiramente flexível, como a legenda de imagens, que pode gerar resultados inovadores.
O CLIP também não aborda a baixa eficiência de dados do aprendizado profundo. Em vez disso, o CLIP compensa usando uma fonte de supervisão que pode ser dimensionada para centenas de milhões de exemplos de treinamento. Se cada imagem vista durante o treinamento de um modelo CLIP fosse apresentada a uma taxa de uma por segundo, levaria 405 anos para percorrer as 12,8 bilhões de imagens vistas em 32 épocas de treinamento. A combinação do CLIP com métodos de autosupervisão e autotreinamento é uma direção promissora, dada a capacidade demonstrada de melhorar a eficiência dos dados em relação ao aprendizado supervisionado padrão.
Algumas das áreas onde o CLIP foi usado para resolver casos de uso em tempo real são:
Existe um site chamado “paint.wtf” onde podemos jogar Pictionary. Os jogadores aqui serão julgados pelo CLIP.
O CLIP pode ser usado para implementar filtros como “NSFW (Not safe for work)”.
“DALL-E”, um algoritmo da Open AI está usando o CLIP como um modelo auxiliar, conforme discutimos anteriormente.
O CLIP é usado para indexar fotos em sites como o Unsplash .
O CLIP pode ser usado para encontrar imagens apropriadas para linguagens complexas, como poesia, enigmas, rimas, romances, etc.
O CLIP também pode ser usado para selecionar imagens corrompidas ou distorcidas. Um novo trabalho de pesquisa intitulado 'Problemas inversos alavancando representações contrastivas pré-treinadas ' demonstra como um método de inversão supervisionada foi usado para obter representações eficazes de imagens corrompidas.
Lançado em 2021, um modelo generativo chamado CLIP+VQGAN ou Vector Quantized Generative Adversarial Network é usado dentro do paradigma text-to-image para gerar imagens de tamanhos variáveis, dado um conjunto de prompts de texto. No entanto, ao contrário do VQGAN, o CLIP não é um modelo generativo e é simplesmente treinado para representar imagens e texto de forma eficaz.
É um fato inegável na indústria de aprendizado profundo que o CLIP abriu caminho para o desenvolvimento de algoritmos avançados para resolver casos de uso complexos relacionados ao processamento de imagens e NLP.
O CLIP pode ser considerado um aqueduto inovador entre visão computacional e PNL. Além disso, como não requer dados de treinamento específicos da tarefa, é possível alimentar grandes quantidades de dados de texto e, lentamente, ficará cada vez melhor em tarefas não relacionadas.
Juntos, podemos esperar ansiosamente pelos avanços revolucionários que o CLIP fornecerá no futuro. Espero que você tenha uma introdução básica ao conceito por trás do algoritmo CLIP de maneira lúcida.
Adicionei os links para o trabalho de pesquisa na seção de referência que você pode usar caso precise consultar a implementação detalhada.
Documentação CLIP da Open AI
“Aprendendo modelos visuais transferíveis com supervisão de linguagem natural" - Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, Ilya Sutskever
"Problemas inversos aproveitando representações contrastivas pré-treinadas" - Sriram Ravula*, Georgios Smyrnis*, Matt Jordan, Alexandros G. Dimakis, Universidade do Texas em Austin, NeurIPS 2021
"VQGAN-CLIP: geração e edição de imagem de domínio aberto com orientação de linguagem natural" - Katherine Crowson, Stella Biderman, Daniel Kornis, Dashiell Stander, Eric Hallahan, Louis Castrito e Edward Raff
Radford, Alec; Narasimhan, Karthik; Salimans, Tim; Sutskever, Ilya (11 de junho de 2018). "Melhorando a compreensão da linguagem por pré-treinamento generativo" (PDF). OpenAI . pág. 12. Arquivado (PDF) do original em 26 de janeiro de 2021. Recuperado em 23 de janeiro de 2021.
Johnson, Khari (5 de janeiro de 2021). "OpenAI estreia o DALL-E para gerar imagens a partir de texto" . VentureBeat. Arquivado do original em 5 de janeiro de 2021. Recuperado em 5 de janeiro de 2021.
Ramesh, Aditya; Dhariwal, Prafulla; Nichol, Alex; Chu, Casey; Chen, Mark (12 de abril de 2022). "Geração de imagem condicional de texto hierárquico com CLIP latentes" . arXiv : 2204.06125 .