Saltar para o conteúdo

Technical

Ensinar Modelos Com Dados Gratuitos

Paulo Maia · 23 de fevereiro de 2022

"Quanto mais vejo, menos sei" será um ditado, mas não se aplica aos modelos de IA. É sabido que o desempenho de uma rede neuronal artificial depende muito do volume e da diversidade dos dados apresentados ao modelo. Isto ocorre porque expor os modelos a diversidade os ajuda a selecionar características relevantes e atenuar possíveis enviesamentos, ou seja, compreender melhor os objetos de estudo e executar melhor as suas tarefas.

Obter dados para alimentar estes modelos pode parecer trivial, já que os dados estão por toda a parte. Contudo, conseguir acesso a dados bem estruturados, anotados, isentos de direitos de autor e que não contenham informação privada continua a ser um desafio para a maioria dos cientistas de dados.

Para resolver isto, especialistas em IA desenvolveram várias abordagens para otimizar o processo de aprendizagem, em particular, arquiteturas inteligentes para modelos de Aprendizagem Auto-Supervisionada.

Neste artigo, apresentamos-vos a Aprendizagem Auto-Supervisionada, juntamente com uma das nossas estratégias favoritas – Modelos Siameses – e possíveis aplicações. Se querem aprofundar conhecimentos sobre Aprendizagem Auto-Supervisionada e outras técnicas de Machine Learning, inscrevam-se no nosso curso online:

O que é Aprendizagem Auto-Supervisionada?

A Aprendizagem Supervisionada é uma abordagem de machine learning que recebe dados de entrada juntamente com um alvo específico e procura aprender os padrões dos dados e a função de transformação que converte a entrada na saída. Do outro lado, temos a Aprendizagem Não-Supervisionada, que é um método que não necessita de um alvo, uma vez que procura encontrar padrões nas distribuições dos dados.

Depois, temos a Aprendizagem Auto-Supervisionada, que é um método de Aprendizagem Não-Supervisionada, já que utiliza dados sem anotações e tem a particularidade de criar etiquetas sintéticas para se comportar como um modelo de Aprendizagem Supervisionada.

Estas etiquetas podem ser criadas através da aplicação de transformações triviais aos dados. Eis alguns exemplos:

Os modelos de Aprendizagem Auto-Supervisionada podem ser utilizados de duas formas diferentes:

  • Para gerar previsões, no caso em que a tarefa sintética corresponde ao objetivo principal do modelo. Por exemplo, treinar um modelo de colorização de imagens e usá-lo para colorizar fotografias em escala de cinzentos.
  • Para partilhar o seu conhecimento (através dos seus pesos) com um modelo de Aprendizagem Supervisionada com uma tarefa diferente. Por exemplo, treinar um modelo de Aprendizagem Auto-Supervisionada para detectar se uma imagem está invertida e usar os pesos para inicializar um modelo de detecção de objetos.

Curso

The Machine Learning Spectrum

Se querem aprofundar conhecimentos sobre aprendizagem auto-supervisionada e outros métodos de aprendizagem, consultem este curso.

Mais Informações

Como o aplicamos?

Na NILG.AI, uma das nossas arquiteturas de modelo preferidas são as Redes Siamesas. Os modelos siameses consistem numa arquitetura de modelo com dois (ou mais) ramos, em que cada um recebe uma entrada diferente. Os pesos dos ramos podem ser partilhados ou não e, na camada final do modelo, as saídas dos ramos são comparadas.

Abaixo podem ver um exemplo de arquitetura para uma rede siamesa aplicada a imagens, que implementamos para vos demonstrar a utilidade destes modelos:

Este modelo tem dois ramos que partilham pesos. Cada ramo é composto por um encoder (modelo CNN para extração de características) e um bloco de camadas totalmente conectadas. A saída dos dois ramos é depois combinada para calcular a função de perda.

Para alimentar o modelo, implementamos um gerador de dados que recebe uma imagem como entrada, aplica uma transformação definida pelo utilizador e devolve as duas imagens transformadas juntamente com um alvo sintético. A função de transformação é definida na inicialização do modelo, mas a magnitude da transformação deve ser um valor aleatório dentro do intervalo especificado. Por exemplo, para ensinar a um modelo a aprender a orientação dos objetos, pode-se passar uma função de rotação juntamente com o intervalo de ângulos possíveis. O gerador de dados seleccionará dois ângulos aleatórios do intervalo dado e rodará a imagem de entrada com base nesses ângulos, criando duas imagens transformadas diferentes. O gerador compara os dois ângulos: se o ângulo da primeira transformação for superior ao da segunda transformação, define a etiqueta sintética como 1, caso contrário, define-a como 0. No final, o gerador devolve as duas imagens transformadas e a etiqueta sintética correspondente.

Resultados Iniciais

Como exercício de exploração, a NILG.AI desenvolveu várias funções de transformação e treinou um modelo com um conjunto de dados muito pequeno (menos de 100 amostras) de imagens escolhidas aleatoriamente do Unsplash. As transformações triviais incluíram:

  • Adição de desfoque
  • Rotação de imagem
  • Desvio de brilho

A arquitetura do modelo siamês foi adaptada a cada função de transformação, criando três modelos diferentes. Um único ramo treinado do modelo siamês foi depois utilizado para calcular as previsões em imagens individuais e aqui estão os resultados observados.

Nota: As previsões correspondem à saída da última camada totalmente conectada do ramo. Estes valores devem ser interpretados como proxies da magnitude das transformações. Para utilizar estas saídas como previsões do valor real da transformação, por exemplo, ângulo de rotação, a saída deve ser calibrada.

Adição de Desfoque

Para a adição de desfoque, aplicamos um filtro de desfoque gaussiano com tamanho de janela fixo e valor sigma variável. Para testar o desempenho do modelo, aplicamos adição de desfoque com diferentes valores sigma à mesma imagem e extraimos as previsões do modelo. Na imagem abaixo, pode-se observar que a saída do modelo aumenta com o sigma, conseguindo distinguir a intensidade da transformação.

Na segunda fase de testes, repetimos as transformações em cada imagem do conjunto de testes e extraimos a correlação entre a saída do modelo e o sigma. Este modelo tem uma correlação de 95,5% com a verdade, tendo potencial para ser usado como um detector de desfoque.

Finalmente, extraimos as previsões para as imagens originais do conjunto de testes, apresentando alguns exemplos na grelha abaixo. Como estávamos a lidar com imagens de alta qualidade, o modelo devolveu valores baixos para a detecção de desfoque (normalmente inferiores a -6.4), exceto para a imagem com filtro de café que contém um desfoque de fundo significativo.

Rotação de Imagem

Repetimos o mesmo teste para o modelo de rotação, desta vez alterando o valor do ângulo, obtendo os resultados abaixo.

O valor de correlação para este modelo foi de 0.37, o que é compreensível considerando a dificuldade da tarefa. Reconhecer se um objeto está inclinado e identificar o ângulo correspondente requer conhecimento prévio do próprio objeto, algo difícil de ensinar a um modelo com apenas 100 imagens representando objetos diferentes. Portanto, para usar este modelo como um corretor de rotação, talvez seja necessário utilizar muito mais dados ou impor mais restrições na seleção de imagens, por exemplo, selecionar apenas imagens de decoração de interiores.

Uma vez que esta tarefa requer maior conhecimento dos objetos, pode também ser usada como uma tarefa secundária num modelo de aprendizagem multi-tarefa. Esta estratégia pode ajudar o modelo a aprender melhor as características dos objetos de interesse, evitando custos adicionais de anotação.

Desvio de Brilho

A mesma análise foi realizada para o modelo de brilho. Para este exemplo, a transformação baseia-se na manipulação do valor (V) na representação de cor HSV através da adição de um número aleatório. Ao testar o modelo para a mesma imagem transformada, pode-se observar que o alvo previsto aumenta com o valor adicionado.

Analisando o desempenho do modelo no conjunto de testes geral, podemos confirmar a correlação entre as saídas do modelo e a verdade, uma vez que a taxa de correlação ronda os 77,5%. Este modelo pode ser usado para correção de brilho ou avaliação da qualidade da imagem. Na próxima secção, verão alguns exemplos práticos de onde utilizar estes modelos.

Mais uma vez, as previsões do modelo foram extraídas para as imagens originais (mostradas abaixo). Estas previsões também são elocutivas, uma vez que o modelo devolveu valores positivos para as imagens mais brilhantes e valores negativos para as mais escuras, em particular, as fotografias com filtro de café e da ponte.

Casos de Uso

A Aprendizagem Auto-Supervisionada pode ser muito útil para treinar previamente encoders para serem utilizados por outros modelos ou para ser usada como uma tarefa adicional, tornando o modelo final mais robusto. Contudo, também há muito potencial para estes modelos serem utilizados directamente como preditores, e aqui estão alguns exemplos de onde usá-los.

Saúde

Avaliação da qualidade das imagens em imaginologia médica. Modelos triviais, como detectores de desfoque, brilho e corte, podem avaliar a qualidade das imagens em tempo real, sendo úteis para selecionar a amostra a ser analisada (por outro modelo ou por um especialista).

Imobiliário

Padronização de imagens no website. Imagens mais brilhantes e coloridas são mais atrativas para potenciais clientes e tirar fotografias em condições de iluminação deficiente pode influenciar a propensão de interesse pela imagem. Com um modelo de brilho como o proposto acima, é possível avaliar esta característica e corrigi-la automaticamente.

Comércio de Automóveis

Similar ao caso anterior, as fotografias que mostram o produto (o automóvel, neste caso) podem influenciar a propensão de um utilizador em se tornar comprador. Modelos triviais de visão computacional, como quantificadores de brilho e detectores de desfoque, podem ser usados para filtrar quais as imagens que têm qualidade suficiente para serem publicadas no website.

Conclusão

Como vimos neste artigo, nem sempre é necessário um conjunto de dados grande para construir um modelo que responda às necessidades do seu negócio.

Se está interessado em tornar as decisões da sua empresa baseadas em dados mas não tem a certeza de ter uma estrutura de dados preparada para tal, contacte-nos em info@nilg.ai e vamos discutir algumas ideias!

Se quer aprofundar conhecimentos, inscreva-se no nosso curso:

Quer discutir esta ideia mais aprofundadamente?

Marque uma reunião com Rafael Cavalheiro

Conheça o Rafael Mais Informações