• Marina Daumas

[PT-EN] Visão Computacional e Carros Autônomos

Updated: Aug 6

Os desafios da aplicação de tecnologias de inteligência artificial em veículos autônomos


Visão computacional é um campo da inteligência artificial que busca desenvolver técnicas para fazer com que computadores sejam capazes de analisar, interpretar e entender imagens ou vídeos. Essa tecnologia está presente em várias aplicações e é uma das ferramentas que mais cresce no mercado atualmente. Ensinar para computadores esse tipo de tarefa que, muitas vezes, é trivial para um humano é mais difícil do que se imagina. Isso acontece, em parte, porque não sabemos como o nosso próprio cérebro faz para interpretar aquilo que nós vemos. Mesmo com tal barreira, existem algoritmos que conseguem simular, e, até mesmo, superar a capacidade humana para certas tarefas.


Existem diversas aplicações de visão computacional, por exemplo reconstrução 3D de cenários, localização, reconhecimento facial, etc. No AUV (Veículo Autônomo Submarino) da UFRJ Nautilus, utilizamos uma rede neural convolucional (YOLOv3 tiny) para detecção de objetos. Esse tipo de rede nos dá, não apenas quais objetos estão no campo de visão do robô, mas também as coordenadas dele na imagem. Isso nos permite encontrar as tarefas que devem ser realizadas na RoboSub ®, competição internacional de AUVs, como portão e boias, e determinar uma trajetória até elas.


Nossa Rede Neural Detectando as Boias na RoboSub, 2019

Redes neurais convolucionais são algoritmos compostos de várias camadas, utilizados principalmente na análise de imagens. Assim como redes neurais simples, as redes convolucionais tentam copiar a forma como o sistema nervoso funciona. Diversas camadas interligadas recebem um input, da camada anterior, realizam algum tipo de processamento e passam o resultado para a próxima camada. Esse mesmo tipo de rede é utilizado em carros autônomos.

Rede Neural Convolucional para Identificar Números

Apesar dos grandes avanços nesse tipo de tecnologia, estamos em 2020 e, contra todas as previsões, ainda não temos carros autônomos andando por aí. Diversas empresas têm projetos de carros autônomos, algumas como a Uber ® e Tesla ® chegaram a colocar nas ruas seus carros semi autônomos. Esses veículos possuem piloto automático, mas precisam de um motorista como backup, para tomar o controle em caso de uma falha. Assim como o nosso AUV, esses carros possuem redes neurais para detecção de objetos e outros sensores para obter dados dos arredores. No caso do carro, as redes são treinadas para localizar outros carros, placas, pedestres e obstáculos. Porém, uma grande diferença entre entre eles é a segurança, uma vez que, enquanto nosso robô pode ser considerado bom tendo uma acurácia de 94%, um carro que reconhece um pedestre com essa mesma acurácia está longe de ser seguro.

Detecção de Objetos na Rua

Em 2018, um dos carros semi autônomos da Uber ® no Arizona falhou em acionar os freios quando uma mulher atravessou a estrada com uma bicicleta na frente do carro causando um acidente fatal. Foi uma falha do sistema e também da motorista de segurança, que deveria estar o tempo todo monitorando o carro. Os testes com veículos autônomos foram encerrados logo depois disso e retomados apenas 2 anos depois. Carros da Tesla ® também já causaram acidentes em situações em que o motorista não estava atento.

Baixa luminosidade, luzes coloridas, neblina fina, chuva, refração causada pelo calor, etc. existe uma gama enorme de fatores que podem afetar as imagens recebidas pela rede neural. Apesar de praticamente não afetarem a forma como nós humanos somos capazes de entender aquilo que estamos vendo (uma pessoa continua sendo uma pessoa mesmo se ela estiver plantando bananeira debaixo de uma luz verde), essas mudanças podem reduzir seriamente a performance de uma rede neural. Normalmente, a solução simples para esse problema é aumentar a quantidade de exemplos que você usa para treinar a rede. Se ela erra em imagens com neblina adicione mais imagens com neblina, se o problema é para identificar animais na estrada adicione mais fotos de animais. Entretanto, garantir que um sistema esteja preparado para todas as condições possíveis é uma tarefa praticamente impossível.


Além de todas essas preocupações relacionadas à confiabilidade da visão, existem outras barreiras, talvez ainda maiores. Lugares onde o sinal do GPS fosse ruim estariam totalmente fora de cogitação para carros autônomos. Existem também questões éticas relacionadas ao uso dessa tecnologia. Todo sistema autônomo toma decisões o tempo todo. Em uma situação comum seriam coisas do tipo o quanto acelerar ou frear, quando fazer uma curva, quando parar totalmente, etc. Porém, no dia a dia, pode acontecer todo tipo de situação inusitada, e o carro deveria ter uma pré programação para lidar com cada uma delas. Se, por exemplo, o carro estivesse vindo em alta velocidade, aparecesse uma criança na rua e não houvesse tempo de frear, o carro deveria dar prioridade ao passageiro ao custo de atingir a criança, ou deveria desviar da criança de qualquer forma, mesmo que jogando o carro contra um poste, arriscando a vida do motorista? Esse tipo de questão não tem resposta certa, e se nós não temos uma resposta não temos como fazer o carro saber o que fazer.


Esses são alguns dos desafios enfrentados por aqueles que estão tentando criar os carros totalmente autônomos que há muito tempo existem na ficção. Mesmo que esses carros nunca cheguem a ser vendidos no mercado, como muitos acreditam, carros semi autônomos já são uma grande ajuda. A maior parte dos acidentes de trânsito hoje em dia são causados por erro humano, e esses veículos semi autônomos podem reduzir este número. Contanto que o motorista permaneça atento durante todo o tempo em que o carro está se dirigindo, esses carros podem ser bem mais seguros do que um motorista tradicional.



Computer vision and Self-driving cars



The challenges of applying artificial intelligence technologies to autonomous vehicles


Computer vision is a field of artificial intelligence that seeks to develop techniques to make computers able to analyze, interpret and understand images or videos. This technology is present in several applications and is one of the fastest evolving tools on the market today. Teaching computers this type of task, which is often trivial for a human, is more difficult than imagined. This is partly because we don't know how our own brain does to interpret what we see. Even with such a barrier, there are algorithms that can simulate, and even overcome, the human capacity for certain tasks.

There are several computer vision applications, for example 3D reconstruction of spaces, localization, facial recognition, etc. In UFRJ Nautilus' AUV (Autonomous Underwater Vehicle) we use a convolutional neural network (YOLOv3 tiny) for object detection. This type of network gives us, not only which objects are in the robot's field of view, but also its coordinates in the image. This allows us to find the tasks that must be performed at RoboSub ®, an international AUV competition, such as gates and buoys, and determine a path to them.



Convolutional neural networks are algorithms composed of several layers, used mainly in image analysis. Like simple neural networks, convolutional networks try to copy the way the nervous system works. Several interconnected layers receive an input, from the previous layer, perform some type of processing and pass the result on to the next layer. This same type of network is used in autonomous cars.


Convolutional Neural Network to Identify Numbers


Despite the great advances in this type of technology, we are in 2020 and, against all forecasts, we still don't have self-driving vehicles driving around. Several companies have self-driving projects, some such as Uber ® and Tesla ® have even put their semi-autonomous cars on the streets. These vehicles have autopilot, but need a driver as a backup, to take control in the event of a failure. Like our AUV, these cars have neural networks to detect objects and other sensors to obtain data from the surroundings. In the case of the car, the networks are trained to locate other cars, signs, pedestrians and obstacles. However, a big difference between them is safety, since, while our robot can be considered good having an accuracy of 94%, a car that recognizes a pedestrian with that same accuracy is far from safe.


In 2018, one of Uber ® semi-autonomous cars in Arizona failed to apply the brakes when a woman crossed the road in front of the car with a bicycle, causing a fatal accident. It was a failure of the system and also of the backup driver, who should be monitoring the car at all times. Tests with autonomous vehicles were terminated shortly after and resumed only two years later. Tesla ® cars have also caused accidents in situations where the driver was not paying attention.

Low light, colored lights, fog, rain, heat refraction, etc. there is a huge range of factors that can affect the images received by the neural network. Although they practically do not affect the way we humans are able to understand what we are seeing (a person remains a person even if he is doing a handstand under a green light), these changes can seriously damage the performance of a neural network. Usually, the simple solution to this problem is to increase the number of examples you use to train the network. If it fails in foggy images add more foggy images, if the problem is to identify animals on the road add more pictures of animals. However, ensuring that a system is prepared for all possible conditions is an almost impossible task.

In addition to all these concerns about vision reliability, there are other barriers, perhaps even greater ones. Places where the GPS signal was bad would be totally out of the question for autonomous cars. There are also ethical issues related to the use of this technology. Every autonomous system makes decisions all the time. In a common situation it would be things like how to accelerate or brake, when to turn, when to stop completely, etc. However, in everyday life, all kinds of unusual situations can happen, and the car should be pre-programed to deal with each one of them. If, for example, the car was coming at high speed, a child appeared on the street and there was no time to brake, the car should give priority to the passenger at the cost of hitting the child, or should it divert any way, even throwing the car against a pole, risking the driver's life? This kind of question has no right answer, and if we don't have an answer, we have no way of letting the car know what to do.

These are some of the challenges faced by those trying to create the fully autonomous cars that have long existed in fiction. Even if these cars never get to the market, as many believe, semi-autonomous cars are already a big help. Most traffic accidents today are caused by human error, and these semi-autonomous vehicles can reduce this number. As long as the driver remains attentive throughout the time the car is driving, these cars can be much safer than a traditional driver.



Written by Marina Daumas