Introdução
Nas estradas movimentadas de hoje, veículos podem apresentar uma série de problemas que afetam seu desempenho e segurança, e que muitas vezes podem ser negligenciados. Um dos principais problemas deste tipo são os danos e trincas em para-brisas, que podem ocorrer a qualquer momento e se tornar uma ameaça à segurança dos ocupantes do veículo.
Os danos em para-brisas podem assumir diversas formas, desde pequenas rachaduras até danos mais graves que afetam a visibilidade do motorista. Mesmo pequenos, estes danos podem se alastrar e eventualmente até soltar ou estourar o para-brisas, exigindo a sua troca completa. Porém, em certos casos, os danos podem ser reparados, sem necessidade de troca: o Código de Trânsito Brasileiro (CTB) prevê que um para-brisa pode ser reparado se apresentar, no máximo, dois danos com menos de 10 cm cada se forem trincas ou menos de 4 cm de diâmetro se forem circulares. Além disso, não podem estar na borda do para-brisa nem no campo de visão do motorista. Caso o para-brisa não esteja nessas condições, é necessário a troca.
A decisão de troca geralmente é realizada pelas empresas de seguro e assistência veicular como parte do processo de execução da apólice, e portanto precisa ser realizada com velocidade e precisão, já que um reparo incorreto pode gerar consequências legais para as empresas envolvidas.
Visão Computacional
Uma forma de abordar o problema que descrevemos acima é contratar um time para avaliar manualmente os para-brisas, mas esta solução exige mão-de-obra treinada, e portanto não é escalável. Outra forma, mais eficiente e escalável, é tirar fotos dos para-brisas e determinar com um algoritmo se podem ser reparados ou não. Este é o tipo de problema com o qual o campo da visão computacional lida – o uso de algoritmos para processar e interpretar imagens. Estas imagens geralmente são representadas como matrizes de pixels, em que cada posição é um número ou conjunto de números que corresponde à cor daquele pixel. Com estas representações, conseguimos utilizar operações matemáticas que formam a base de filtros, algoritmos de machine learning, e outros métodos de manipulação e interpretação de imagens.
Inteligência Artificial
IA é uma tecnologia que permite que máquinas, como computadores, aprendam e tomem decisões de forma semelhante ao pensamento humano, utilizando algoritmos complexos. As IA’s podem ser usadas para tarefas como reconhecimento de voz, visão computacional, tradução de idiomas, previsão do tempo e muito mais. Dentro do escopo das IAs, existem as redes neurais, que são algoritmos inspirados na estrutura cerebral humana. Elas são compostas por “neurônios” artificiais interconectados que processam dados de entrada até transformá-los em outputs usáveis. Modelos deste tipo vêm obtendo grande sucesso em vários dos principais problemas da visão computacional, como a identificação, segmentação e classificação de objetos.
Estratégias Utilizadas
Com o problema entendido, avaliamos 3 estratégias principais para identificar o dano no para-brisa e, então, determinar a necessidade de troca: utilização da YOLO para segmentação do dano, treinamento da rede neural VGG19 para classificar a imagem e técnicas de visão computacional para dimensionar o dano.
Filtros Clássicos de Visão Computacional
Como dissemos no início do texto, computadores conseguem “enxergar” imagens transformando-as em matrizes de números, um para cada pixel, e uma das formas mais simples de manipular e processar essas imagens é realizar operações matemáticas com estes valores. Uma das principais operações usadas na visão computacional é chamada de “convolução”, e no contexto de processamento de imagens equivale na prática a aplicar um “filtro” na imagem, recalculando o valor de cada pixel nela como uma média ponderada dos pixels ao seu redor. Um exemplo prático disso é um algoritmo que borra imagens:
Figura 1 – Exemplo de filtro de convolução
Fonte: Advisia Analytics
Podemos descrever esta operação com uma matriz, chamada “matriz de convolução”. Além de borrões, é possível construir matrizes que detectam mudanças de cor e bordas de objetos, que aumentam a nitidez de uma imagem, etc. Combinando estes filtros, conseguimos construir automaticamente uma nova imagem que ressalta o dano e nos permite identificar e medir automaticamente em pixels suas coordenadas e dimensões e determinar se os para-brisas podem ou não ser reparados.
Figura 2 – Exemplo de combinação de filtros de visão computacional
Fonte: ADVISIA Analytics
YOLO
Como dissemos no início do texto, computadores conseguem “enxergar” imagens transformando-as em matrizes de números, um para cada pixel, e uma das formas mais simples de manipular e processar essas imagens é realizar operações matemáticas com estes valores. Uma das principais operações usadas na visão computacional é chamado YOLO (You Only Look Once) é um framework de detecção de objetos que se destaca pela sua capacidade de identificar múltiplos objetos em uma única imagem de forma eficiente e rápida. Ao contrário de técnicas tradicionais que dividem a tarefa de detecção em várias etapas, o YOLO aborda a detecção de objetos como um único problema de regressão. a de “convolução”, e no contexto de processamento de imagens equivale na prática a aplicar um “filtro” na imagem, recalculando o valor de cada pixel nela como uma média ponderada dos pixels ao seu redor. Um exemplo prático disso é um algoritmo que borra imagens:
Figura 3 – Exemplo de Predição da YOLO
Fonte: https://pjreddie.com/darknet/yolo/
Apesar do YOLO ser uma arquitetura pronta, ainda é necessário algumas etapas para a elaboração de um modelo capaz de detectar danos em para-brisas – o pré-processamento e marcação das imagens, e o treinamento e teste do modelo.
Pré-Processamento e Marcação
A etapa de pré-processamento é importantíssima para o funcionamento do modelo, visto que é nela onde evidenciamos o que queremos e retiramos o que não queremos. Uma das técnicas de pré-processamento mais simples é simplesmente retirar do dataset imagens que não contenham toda a informação necessária para resolver o problema em questão. A figura 4 exemplifica uma imagem que não contém a quantidade de informações necessárias, uma vez que não apresenta o para-brisa completo e portanto não é possível verificar a posição do dano para a classificar.
Figura 4 – Exemplo de imagem que deve ser descartada
Fonte: https://www.minutoseguros.com.br/blog/5-perigos-trafegar-para-brisa-trincado/
Além de selecionar imagens, podemos aplicar filtros tradicionais às imagens de treino para facilitar a identificação dos danos pelo modelo, como um filtro de alto contraste, por exemplo. Em problemas de identificação de objetos, o pré-processamento das imagens costuma incluir um passo de marcação, isto é, um passo de identificação e demarcação dos objetos desejados nas imagens. Para realizar essa marcação, podemos utilizar ferramentas como o makesense.ai ou outra opção apropriada. Essas ferramentas nos permitem definir as classes (objetos) e selecionar a área do objeto com a marcação adequada, que pode ser uma bounding box, um polígono, etc. Na Figura 5, temos um exemplo de marcação para nossa aplicação, onde a região rosa destaca um dano no para-brisa. Após marcarmos todas as imagens, é gerado um arquivo contendo as informações de marcação. Esse arquivo pode ser usado no treinamento de modelos de redes neurais.
Figura 5: Exemplo de marcação feita no makesense.ai.
fonte: https://www.minutoseguros.com.br/blog/reparo-de-para-brisa-vale-a-pena/
Treinamento e Teste
A etapa de treinamento é responsável por ajustar os pesos do modelo, e no caso da YOLO, estes pesos irão depender da versão e arquitetura da rede selecionada (isto é, o número de neurônios que ela tem, o processamento que cada neurônio realiza, etc.). A escolha de arquitetura depende da complexidade do problema a ser resolvido e dos recursos computacionais disponíveis – arquiteturas mais poderosas geralmente exigem mais tempo de processamento. A figura 6 apresenta as opções de arquiteturas disponíveis na versão 8 do YOLO.
Figura 6: Arquiteturas disponíveis na YOLOv8.
Fonte: https://github.com/ultralytics/ultralytics
Com a arquitetura escolhida, é preciso dividir o conjunto de imagens em três partes, que serão usadas para treinar, testar e validar o modelo. Este processo é complexo e merece seu próprio artigo, mas em resumo o modelo utiliza os conjuntos de treino e teste para ajustar seus pesos internos e aprender a identificar os danos e classificar corretamente os para-brisas. Ao fim do processo, o conjunto de validação é utilizado para calcular métricas de performance do modelo, como acurácia e precisão, e caso estas métricas não sejam satisfatórias, algum passo do pipeline precisa ser ajustado, seja no estágio de pré-processamento, seja na especificação do modelo em si.
VGG19
O VGG19 é um modelo de rede neural especializado em visão computacional e que desde de 2014 vem impressionando nas competições que participa com pontuações acima de 90%.
Figura 7 – Diagrama da arquitetura da VGG19
Fonte: https://www.researchgate.net/figure/Illustration-of-fine-tuned-VGG19-pre-trained-CNN-model_fig1_342815128
A profundidade deste modelo o torna bem robusto a problemas como overfitting, mas faz com que seu treinamento seja mais computacionalmente custoso. Podemos contornar isso utilizando uma versão pré-treinada do modelo capaz de identificar uma variedade de objetos em imagens, e substituir a última camada dele por uma que foque em identificar apenas os danos dos para-brisas em que estamos interessados. Neste caso, esta última camada será treinada para determinar se um para-brisa pode ser reparado ou não, classificando as imagens entre “reparo” e “troca”.
Pré-Processamento e Marcação
Da mesma forma que para a YOLO, realizamos alguns tratamentos anteriores ao modelo para simplificar os inputs e melhorar seus resultados. Neste caso, utilizamos a imagem e as marcações para construir uma nova representação, que tem as dimensões da imagem original, mas é totalmente branca nos pixels correspondentes a marcação da imagem e totalmente preta em todos os outros pixels.
Figura 8 – Figura 5 tratada com o algoritmo de simplificação
Treinamento e Teste
Para reduzir o custo computacional, optamos por uma versão do modelo já treinada com o banco de imagens ImageNet, que contém 14 milhões de imagens totalmente anotadas com as localizações de 1000 tipos de objetos diferentes em cada uma. Isto nos permite partir de um modelo que já é capaz de entender em algum nível o conceito de um “objeto” e consegue o localizar numa imagem. Para adequar o modelo ao nosso problema, substituímos a última camada do modelo por uma que apenas indicará se uma dada imagem corresponde a um para-brisa reparável ou não, e treinamos seus pesos utilizando as imagens preto-e-brancas geradas no pré-processamento e as classificações de reparo ou troca pré-determinadas.
Desafios Encontrados
Trabalhar com processamento de imagens não é uma tarefa fácil, mesmo utilizando técnicas de Inteligência Artificial como a VGG19 e YOLO, isso decorre de características diversas tais como:
- Reflexos: O vidro do para-brisa pode conter reflexos do exterior ao redor do veículo, que podem confundir o algoritmo de identificação, além de ofuscar ou se parecerem com os danos a serem identificados.
- Focos de luz: O vidro do para-brisa pode refletir focos de luz intensa, como os do sol ou de lâmpadas internas, que ofuscam totalmente partes do vidro e impedem a identificação dos danos.
- Sujeira: Partículas e manchas nos para-brisas podem ser confundidos pelo modelo com os reais pontos de dano, e mesmo cobri-los em alguns casos.
*Mantemos com rigor a confidencialidade dos nossos clientes.
Estagiário
ADVISIA Analytics
Cursando Engenharia de Computação na UFSCar, atualmente atua como estagiário de Ciência de Dados na ADVISIA Analytics. Ao longo de sua graduação, participou ativamente de vários projetos de extensão, concentrando-se especialmente em Ciência de Dados. Essas experiências proporcionaram habilidades sólidas em Python, aprendizado supervisionado e não supervisionado, previsão de séries temporais e processamento de linguagem natural.
Data Scientist
ADVISIA Analytics
Formado em Economia pela UFMG e atualmente cientista de dados da Advisia Analytics. Possui experiência em ciência de dados, machine learning e modelagem de séries temporais, visão computacional, marketing analytics, MLOps e sistemas cloud, em particular no ecosistema Azure.
Conheça as soluções da ADVISIA Analytics
Oferecemos soluções especializadas nesse campo, caso tenha interesse em saber mais sobre nossas ferramentas entre em contato conosco hoje mesmo!