• Nenhum resultado encontrado

Ítalo Rodrigo Barbosa Paulino Reconhecimento de Placas de Veículos Brasileiros em Tempo Real utilizando Redes Neurais Convolucionais em um Processador de Aplicação Específica

N/A
N/A
Protected

Academic year: 2022

Share "Ítalo Rodrigo Barbosa Paulino Reconhecimento de Placas de Veículos Brasileiros em Tempo Real utilizando Redes Neurais Convolucionais em um Processador de Aplicação Específica"

Copied!
43
0
0

Texto

(1)

Reconhecimento de Placas de Veículos Brasileiros em Tempo Real utilizando Redes Neurais Convolucionais em um Processador de

Aplicação Específica

Universidade Federal de Pernambuco secgrad@cin.ufpe.br

www.cin.ufpe.br/~secgrad

Recife 2019

(2)

Ítalo Rodrigo Barbosa Paulino

Reconhecimento de Placas de Veículos Brasileiros em Tempo Real utilizando Redes Neurais Convolucionais em um Processador de

Aplicação Específica

Trabalho apresentado ao Programa de Gradução em Enge- nharia da Computação do Centro de Informática da Univer- sidade Federal de Pernambuco como requisito parcial para obtenção do grau de Bacharel em Engenharia da Computa- ção.

Área de Concentração: Deep Learning, Sistemas Embarcados

Orientadora: Edna Natividade da Silva Barros

Recife 2019

(3)
(4)

AGRADECIMENTOS

São muitas as pessoas que de certa forma contribuíram na minha caminhada durante a graduação. Aqui neste espaço não caberia meus sinceros agradecimentos a cada uma delas individualmente. Farei de tudo para resumir sem deixar de incluir alguém.

Em primeiro lugar gostaria de agradecer a Deus, sem a sua imensa bondade e orientação eu não estaria onde estou neste momento. Devo tudo a Ele.

Agradeço também aos meus pais Gustavo e Márcia, vocês sempre foram e serão exemplos de pessoas que eu sempre irei me espelhar. Muito obrigado por me criarem tão bem, sempre priorizando a minha educação, me incentivando nas minhas escolhas e não deixando faltar nada.

Sou eternamente grato a vocês, espero algum dia retribuir um pouco de tudo isso, pois sei que tudo seria impossível.

Agradeço à minha avó Lindinalva, a senhora sempre será muito mais do que uma segunda mãe para mim. Todas as manhãs que eu acordava para ir à faculdade, o primeiro bom dia sempre era dela. Muito obrigado por ser bastante paciente comigo e sempre compartilhar da sua imensa experiência de vida, ainda tenho muito o que aprender com a senhora.

Agradeço à minha irmã Thayrla, seu companheirismo e cumplicidade fazem toda a diferença. É sempre bom contar com uma mente mais jovem dentro de casa. Fico muito contente quando posso compartilhar um pouco da minha curta experiência com você e a mesma coisa quando o contrário acontece. Obrigado.

Agradeço ao restante dos meus familiares que de alguma forma deixaram sua contribuição na minha carreira acadêmica, desde o momento que eu passei no vestibular até o presente momento.

Deixo também meus agradecimentos aos professores do Centro de Informática que de certa forma contribuíram no meu crescimento pessoal e acadêmico, em especial a professora Edna Barros que me orientou tão bem neste trabalho, sempre com paciência e uma enorme experiência. Eu e muitos outros alunos do CIn somos muito gratos à senhora, por sempre ser uma pessoa empenhada e que motiva os outros, fazendo com que o caminho da graduação seja um pouco menos difícil. Por mais professores como a senhora.

Não posso deixar de agradecer aos amigos que fiz durante a graduação, em especial os que entraram junto comigo no primeiro semestre de 2014, a troca de experiências foi algo espetacular. Agradeço também aos meus amigos que vieram bem antes da graduação que, mesmo eu estando ausente algumas vezes, sempre soube que eu poderia contar.

Por fim, agradeço a toda a equipe de funcionários que fazem do Centro de Informática um ótimo lugar de trabalho e convivência. Desde 2014 o CIn é como uma segunda casa pra mim e vocês tem contribuição nisso.

Muito obrigado!

(5)

–Dan Brown

(6)

ABSTRACT

Automatic license plate recognition has been a subject of constant research, where there is a range of applications in real-world scenarios such as parking control, stolen vehicle detection, and even toll collection. With the popularization of GPUs, solutions based on Convolutional Neural Networks are state of the art regarding the detection and recognition of automobile license plates. However, such solutions make real-time execution in embedded systems impossible due to the high processing cost. Thus, the present work proposes an approach for the recognition of Brazilian automobile standard plates using a Convolutional Neural Networks architecture focused on an application-specific processor, thus allowing real-time detection and recognition without the need for cloud processing. The results show that using the proposed architecture, and it is possible to achieve a rate of 24 frames per second and still obtain a 98.02% accuracy rate of the characters present in the plates.

Keywords: Embedded Systems, Deep Learning, Neural Networks, ALPR

(7)

Reconhecimento automático de placas de automóveis vem sendo um tema de constante pesquisa, onde há uma gama de aplicações em cenários reais como controle de estacionamento, detecção de veículos roubados e até mesmo cobrança de pedágio. Com a popularização das GPU’s, soluções baseadas em Redes Neurais Convolucionais são o estado da arte no que diz respeito à detecção e reconhecimento de placas automotivas. Porém, tais soluções inviabilizam a execução em tempo real em sistemas embarcados por conta do alto custo de processamento. Desta forma, o presente trabalho propõe uma abordagem para reconhecimento de placas do padrão brasileiro de automóveis utilizando uma arquitetura de Redes Neurais Convolucionais voltada para um processador de aplicação específica, permitindo assim detecção e reconhecimento em tempo real sem a necessidade de processamento em nuvem. Os resultados mostram que, utilizando a arquitetura proposta, é possível atingir uma taxa de 24 quadros por segundo e, ainda assim, obter uma taxa de 98,02% de acerto dos caracteres presentes nas placas.

Palavras-chave: Sistemas Embarcados, Aprendizagem Profunda, Redes Neurais, Reconheci- mento automático de placas de veículos

(8)

LISTA DE FIGURAS

Figura 1 – Resultado de uma convolução de uma imagem 5x5x1 com um filtro 3x3x1 15 Figura 2 – Representação dos dois tipos depooling . . . 16 Figura 3 – Camada totalmente conectada . . . 17 Figura 4 – Arquitetura completa de uma CNN que classifica dígitos manuscritos . 17 Figura 5 – Arquitetura Darknet-53 (Redmon & Farhadi,2018) . . . 18 Figura 6 – Representação da saída do YOLO para uma imagem com dimensões

608x608x3 . . . 19 Figura 7 – Fluxo da abordagem proposta . . . 21 Figura 8 – Um filtro de convolução convencional (a) é substituído por duas opera-

ções: (b) depthwise convolution e (c) pointwise convolution (Howard et al.,2017) . . . 22 Figura 9 – Exemplos de imagens presentes na base de dados . . . 24 Figura 10 – Passos para a geração de uma placa sintética no formato brasileiro . . 29 Figura 11 – Sipeed Maixduino . . . 31 Figura 12 – Pipelinedo sistema de reconhecimento de placas . . . 33 Figura 13 – Matriz de confusão da CNN de reconhecimento não quantizada . . . . 37 Figura 14 – Matriz de confusão da CNN de reconhecimento quantizada . . . 37 Figura 15 – Exemplos de placas reconhecidas incorretamente (esquerda) e correta-

mente (direita) . . . 38

(9)

Tabela 1 – Arquitetura proposta utilizando MobileNet comobackendno YOLOv3 23 Tabela 2 – Parâmetros utilizados no treinamento da CNN de detecção . . . 25 Tabela 3 – Arquitetura de reconhecimento de placas baseada em (Starket al.,2015) 26 Tabela 4 – Arquitetura de reconhecimento de placas proposta pelo trabalho . . . . 27 Tabela 5 – Parâmetros utilizados no treinamento da CNN de reconhecimento . . . 30 Tabela 6 – Comparação do tamanho dos modelos antes e depois da quantização . . 32 Tabela 7 – Resultados da avaliação da CNN de reconhecimento . . . 35 Tabela 8 – Comparação das acurácias da arquitetura proposta com o trabalho de

(Izidioet al.,2018) . . . 36 Tabela 9 – Comparação entre os tempos de processamento de cada arquitetura . . . 36

(10)

LISTA DE ACRÔNIMOS

ALPR Automatic License Plate Recognition

BLE Bluetooth Low Energy

CAPTCHA Completely Automated Public Turing test to tell Computers and Humans Apart

CNN Convolutional Neural Network

FCN Fully Convolutional Network

FPS Frames per Second

GPU Graphics Processing Unit

ILSVRC ImageNet Large Scale Visual Recognition Challenge

IoT Internet of Things

MNIST Modified National Institute of Standards and Technology

ReLU Rectified Linear Unit

RGB Padrão de cores (Red, Green, Blue)

YOLO You Only Look Once

(11)

1 INTRODUÇÃO . . . 11

1.1 MOTIVAÇÃO . . . 11

1.2 OBJETIVOS . . . 12

1.3 ESTRUTURA DO TRABALHO . . . 13

2 CONCEITOS BÁSICOS . . . 14

2.1 REDE NEURAL CONVOLUCIONAL (CNN) . . . 14

2.2 YOLO . . . 17

3 ABORDAGEM PROPOSTA. . . 20

3.1 DETECÇÃO DAS PLACAS . . . 20

3.1.1 Arquitetura . . . 20

3.1.2 Treinamento. . . 24

3.2 RECONHECIMENTO DAS PLACAS . . . 25

3.2.1 Arquitetura . . . 25

3.2.2 Geração de placas sintéticas . . . 28

3.2.3 Treinamento etransfer learning . . . 29

3.3 SISTEMA FINAL . . . 30

3.3.1 Plataforma utilizada . . . 30

3.3.2 Conversão dos modelos . . . 32

3.3.3 Aplicação . . . 32

4 RESULTADOS . . . 34

4.1 CNN DE DETECÇÃO . . . 34

4.2 CNN DE RECONHECIMENTO . . . 34

4.3 AVALIAÇÃO DO SISTEMA FINAL . . . 35

5 CONCLUSÃO . . . 39

REFERÊNCIAS . . . 41

(12)

11 11 11

1

INTRODUÇÃO

1.1 MOTIVAÇÃO

Com o aumento das tecnologias presentes no trânsito como câmeras e radares, o reco- nhecimento automático de placa de veículos (ALPR) vem sendo um tema de pesquisa bastante explorado nos últimos anos (Du et al.,2012), isso se deve à possibilidade de aplicação em cenários como cobrança de pedágio, detecção de veículos roubados, controle de acesso e controle de tráfego. Em Piedmont, Califórnia foi implementado um sistema de ALPR em carros de polícia e nos primeiros seis meses 275 veículos roubados foram recuperados. Em Londres utilizou-se um sistema ALPR para controle de rodízio de carros e com tal sistema foi possível reduzir em 30% o congestionamento e arrecadar o equivalente a US$ 274 milhões apenas nos primeiros seis meses de implementação (PIPS,2019).

A tarefa de reconhecimento de placas geralmente é dividida em quatro estágios: 1) detecção do carro na imagem, 2) detecção da placa presente no carro, 3) segmentação dos caracteres da placa detectada e 4) reconhecimento dos caracteres segmentados. Com o aumento de imagens rotuladas e hardware dedicado (GPU’s), estes estágios são executados usando técnicas deDeep Learning. Modelos baseados em YOLO (Redmonet al.,2016)(Redmon & Farhadi, 2017)(Redmon & Farhadi,2018) estão conseguindo os melhores resultados do estado da arte no que diz respeito à acurácia e ao desempenho na detecção do veículo e da placa. Enquanto modelos mais específicos de Redes Neurais Convolucionais (Starket al.,2015)(Menottiet al., 2014) são empregados no estágio de classificação dos dígitos presentes nas placas.

Como placas de veículos apresentam padrões diferentes para cada país, é de extrema importância que o modelo de reconhecimento seja treinado com uma base de dados que repre- sente o padrão do país cuja placa será reconhecida. A abordagem proposta por Laroca para reconhecimento de placas do sistema brasileiro (Larocaet al.,2018) traz uma base de dados pública de placas de veículos brasileiros, assim como um modelo de reconhecimento baseado em quatro estágios, como explicado anteriormente. O modelo alcançou uma ótima taxa de reconhecimento, onde em 93,53% das placas presentes no conjunto de teste todos os caracteres foram reconhecidos corretamente.

Em (Gonçalves et al., 2018) é proposta uma base de dados assim como uma nova

(13)

abordagem para o reconhecimento de placas de veículos brasileiros onde apenas dois estágios são utilizados. O primeiro estágio é o de detecção das placas presentes na imagem sem a necessidade de antes detectar o veículo. O segundo estágio é o de reconhecimento da placa onde todos os caracteres são reconhecidos através de uma CNN, nesse estágio não se faz necessária a segmentação dos caracteres presentes na placa. Com menos estágios o sistema se torna mais rápido no processamento das imagens e o erro acumulado também diminui já que são dois estágios ao invés de quatro. O resultado alcançado utilizando esta abordagem foi de 88,8% das placas reconhecidas corretamente.

Com a ascensão da Internet das Coisas (IoT), cada vez mais se faz necessário o emprego de soluções que sejam executadas em dispositivos que estejam nos nós finais do sistema (edge).

Não seria diferente com o reconhecimento de placas de veículos, onde uma solução para Raspberry Pi 3foi proposta para o reconhecimento de placas de veículos brasileiros (Izidio et al.,2018). A solução apresentou uma alta taxa de acurácia onde 96,75% das placas foram reconhecidas corretamente, porém esta solução ainda apresenta um baixo desempenho com tempo médio de 4,88 segundos para o processamento de cada frame, de forma que não consegue processar os frames no desempenho exigido por aplicação de tempo real.

Sendo assim, ainda há uma lacuna a ser preenchida no que diz respeito à execução de reconhecimento de placas de veículos em dispositivos embarcados com processadores de propósito específico, visto que as técnicas presentes apresentam ótimos resultados de acurácia, porém o desempenho é comprometido quando não são executadas em processadores dedicados ou com aceleradores de hardware.

1.2 OBJETIVOS

O objetivogeraldeste trabalho é propor e implementar um sistema baseado em CNN para reconhecimento automático de placas de veículos brasileiros, onde dispositivos embarcados com processadores de propósito específico sejam capazes de executar o reconhecimento com alta acurácia e em tempo real.

São objetivosespecíficosdeste trabalho:

Propor arquiteturas de CNN’s voltadas para detecção e reconhecimento de placas e que priorize o desempenho em dispositivos com baixo poder de processamento;

Conversão do modelo de CNN treinado para o processador de aplicação específica;

Execução de umbenchmark no dispositivo embarcado para a validação do modelo proposto;

Comparação dos resultados obtidos com modelos já existentes que suportam o padrão de placas de veículos brasileiros.

(14)

13 13 13

1.3 ESTRUTURA DO TRABALHO

Neste capítulo são descritos a motivação, bem como o detalhamento dos objetivos a serem alcançados e a estruturação do documento. Os próximos tópicos abordados neste trabalho seguem a seguinte estrutura:

Capítulo 2: Serão introduzidos os conceitos de Rede Neural Convolucional assim como uma explicação do algoritmo de detecção YOLO;

Capítulo 3: A metodologia utilizada será apresentada, descrevendo o desenvolvimento e treinamento dos modelos de CNN’s propostos, assim como a otimização dos mesmos para a execução no processador de aplicação específica;

Capítulo 4: Serão descritos os experimentos executados utilizando os modelos propostos e os resultados serão apresentados;

Capítulo 5: Conclusão do trabalho desenvolvido, trazendo uma discussão do que foi feito, bem como possíveis trabalhos futuros.

(15)

2

CONCEITOS BÁSICOS

Neste capítulo é introduzido o conceito de Rede Neural Convolucional (CNN) assim como é apresentado o algoritmo YOLO, que faz uso de CNN para detectar objetos em imagens.

2.1 REDE NEURAL CONVOLUCIONAL (CNN)

Rede Neural Convolucional (CNN) é um modelo baseado emDeep Learningsimilar às Redes Neurais Artificiais onde sua aplicação mais comum é no processamento de imagens. A primeira aplicação de CNN se deu por Yann LeCun em 1998 quando propôs uma arquitetura chamada LeNet-5 (LeCunet al.,1998) para solucionar o problema de classificação de dígitos manuscritos utilizando a base de dados MNIST. Em 2012 o uso de CNN’s se tornou popular através da arquitetura AlexNet (Krizhevskyet al.,2012) que ganhou a competiçãoImageNet Large Scale Visual Recognition Challenge (ILSVRC)com uma diferença de 10% de erro a menos que o segundo colocado.

O princípio de funcionamento das CNN’s se baseia no funcionamento do córtex visual animal, onde cada neurônio de forma individual responde à estímulos de uma área restrita do campo visual chamada campo receptivo. Estes campos receptivos de cada neurônio vão se sobrepondo parcialmente até cobrir completamente o campo visual.

Em uma CNN, a camada de convolução é a camada onde se extrai características da imagem. Nesta camada um filtro percorre a imagem de entrada realizando a operação de convolução sobre cada região e o resultado dessa operação é um conjunto de características (feature map) da imagem. Esse conjunto de características nada mais é que novas imagens resultantes a partir da aplicação de filtros, logo podem servir como entrada para outra camada de convolução. A aplicação de vários filtros sobre uma mesma imagem resulta na extração de diferentes características da imagem. É com os ajustes desses filtros, a partir do processo de treinamento, que a rede neural vai aprendendo os principais conjuntos de características que compõem as imagens às quais a rede foi submetida durante o treino. A figura 1 mostra o resultado de uma imagem de dimensões 5x5x1 na qual foi aplicada a convolução com um filtro com dimensões 3x3x1. Dessa forma, várias camadas convolucionais podem ser aplicadas em sequência, onde o conjunto de características resultante da camada anterior serve como entrada

(16)

15 15 15

para a próxima camada.

Após a operação de convolução, uma função de ativação é aplicada a cada pixel das matrizes resultantes. ReLUé a função de ativação comumente utilizada nas arquiteturas de CNN’s, pois é capaz de introduzir não-linearidade à rede já que a mesma considera problemas não lineares. A função de ativação ReLU (equação 2.1) transforma os pixels negativos em zero e os pixels não negativos são mantidos com seu próprio valor.

Figura 1: Resultado de uma convolução de uma imagem 5x5x1 com um filtro 3x3x1

f(x) =max(0,x) 2.1

Uma outra camada bastante comum em arquiteturas de CNN’s é acamada depooling.

Essa camada é responsável por reduzir a dimensão da entrada fazendo com que o número de parâmetros presentes na rede diminua e as características dominantes da entrada sejam extraídas.

Existem dois tipos depooling: Max PoolingeAverage Pooling. OMax Pooling consiste em uma espécie de filtro que percorre a matriz de entrada (que representa a imagem) e obtém o valor máximo de cada região coberta pelo filtro. OAverage Poolingfunciona de maneira similar, porém, ao invés do valor máximo, é obtida a média dos pixels da região que o filtro cobre. O funcionamento dos dois tipos depoolingpode ser visualizado na figura 2.

(17)

Figura 2: Representação dos dois tipos depooling

Para a tarefa de classificação, geralmente, uma ou maiscamadas completamente conec- tadassão utilizadas no final da rede. Este tipo de camada ajuda no aprendizado de combinações não lineares a partir das características da imagem obtidas pelas camadas de convolução. Quando a entrada da camada completamente conectada é uma matriz tridimensional representando as saídas das camadas de convolução ou depooling, essa matriz deve ser transformada em um vetor unidimensional onde cada posição desse vetor representa um neurônio que será conectado com cada neurônio da próxima camada assim como mostra a figura 3. Assim como nas camadas convolucionais, uma função de ativação é aplicada a cada neurônio das camadas completamente conectadas.

A combinação dessas principais camadas citadas compõem a arquitetura de uma CNN.

A quantidade de camadas varia de acordo com o problema a ser resolvido. Quanto mais camadas a rede possuir, mais poder de extração de características ela vai ter. O custo computacional, porém, vai ser elevado e a rede poderá sofrer com o problema devanishing gradient, onde o gradiente vai se tornando cada vez menor conforme vai se propagando através das camadas.

Uma arquitetura de CNN simples é mostrada na figura 4, onde a rede é utilizada para resolver o problema de classificação de dígitos manuscritos.

(18)

17 17 17

Figura 3: Camada totalmente conectada

Figura 4: Arquitetura completa de uma CNN que classifica dígitos manuscritos

2.2 YOLO

YOLO (You Only Look Once) (Redmonet al.,2016)(Redmon & Farhadi,2017)(Redmon

& Farhadi,2018) é um tipo de CNN que tem como função detectar objetos em uma imagem.

Comparado com outros algoritmos de detecção, este algoritmo é um dos mais rápidos e com uma

(19)

alta acurácia na detecção. O que torna o YOLO bastante eficiente é o fato de que com apenas uma passagem da imagem, a rede neural consegue detectar todos os objetos presentes, ao contrário de outras técnicas, tais como (Uijlingset al.,2013)(Girshick,2015)(Renet al.,2015)(Dai et al., 2016), que fazem uma espécie de varredura na imagem procurando por regiões de interesse para só assim executar a fase de detecção nessas regiões. O algoritmo YOLO atualmente está na sua terceira versão. Em cada versão houveram mudanças na arquitetura para que fosse possível melhorias no desempenho da rede e na acurácia de detecção.

O YOLOv3 (Redmon & Farhadi,2018) apresenta uma característica interessante na sua arquitetura, onde não há camadas totalmente conectadas e todas as camadas são convolucionais.

CNN’s que apresentam esse tipo de característica são denominadasFully Convolutional Network (FCN). Outra característica presente na arquitetura do YOLOv3 é que não existem camadas de pooling, a redução das dimensões é feita através das camadas de convolução, onde em certas camadas o filtro percorrem a imagem de 2 em 2 pixels ao invés de 1 em 1. Isso faz com que a matriz de características resultante tenha metade da dimensão da matriz de entrada. A arquitetura que o YOLOv3 utiliza comobackend é baseada na Darknet-53 (Redmon & Farhadi,2018) (figura 5), uma arquitetura criada pelos mesmos autores porém para a aplicação de classificação de imagens.

Figura 5: Arquitetura Darknet-53 (Redmon & Farhadi,2018)

A saída do YOLOv3 é uma matriz de características onde cada pixel dessa matriz deve ser interpretado como uma célula responsável pela detecção de algum objeto presente na imagem.

Para tornar mais intuitiva a explicação, tomemos como exemplo a figura 6, onde temos como entrada uma imagem com dimensões 608x608x3, sendo a terceira dimensão as camadas do

(20)

19 19 19

padrão de cores RGB. Após a imagem passar por todas as camadas convolucionais da rede, uma matriz de dimensões 19x19x5x85 é obtida como resultado. Essa é a uma matriz de características (feature map) assim como qualquer outra após uma operação de convolução.

Figura 6: Representação da saída do YOLO para uma imagem com dimensões 608x608x3

Como pode ser observado na figura 6, a matriz de características tem 1/32 da altura e largura da imagem original, sendo assim, cada célula (pixel) da matriz de características equivale a uma região de 32x32 pixels da imagem original. Cada uma dessas células é representada por uma matriz bidimensional, que no caso do exemplo é uma matriz 5x85, onde cada linha da matriz representa umbounding boxcodificado. Para realizar a decodificação é necessário a interpretação de cada coluna. Como no exemplo cada linha tem 85 colunas, isso significa que as colunas 0 e 1 são responsáveis pelas coordenadas x e y do centro dobounding box, as colunas 2 e 3 representam a largura e altura dobounding boxe a coluna 4 representa a probabilidade de haver algum objeto contido nobounding box. As 80 colunas restantes representam as probabilidades de cada classe que o objeto detectado pode pertencer, no caso do exemplo a arquitetura da rede foi feita pra detectar objetos de 80 classes diferentes. Sendo assim, cada célula da matriz de características é capaz de predizer se na região de 32x32 pixels da imagem comporta o centro de algum objeto e, caso comporte, é capaz de predizer a localização do objeto assim como a classe a qual ele pertence.

(21)

3

ABORDAGEM PROPOSTA

Para a tarefa de reconhecimento automático de placas a solução proposta neste trabalho é composta por duas fases. A primeira fase é a dedetecção(seção 3.1). Nesta fase as placas presentes na imagem são recortadas para posteriormente serem utilizadas na fase dereconheci- mento(seção 3.2). Nesta última fase, cada caractere presente é classificado e o resultado forma o conjunto de letras e dígitos presentes na placa. Os modelos propostos de CNN para cada uma das fases foram validados e serão descritos a seguir. Uma vez validados, os modelos propostos de CNN’s para cada fase foram implementados para execução em uma plataforma embarcada e validados quanto ao desempenho e acurácia. Com as etapas validadas na plataforma alvo, todo sistema foi integrado na plataforma alvo para o reconhecimento automático de placas (seção 3.3).

Na figura 7 está ilustrado o fluxo que representa as etapas da abordagem proposta.

3.1 DETECÇÃO DAS PLACAS

Nesta seção será apresentada a arquitetura proposta de CNN de detecção de placas, detalhando todas as camadas e justificando a escolha da operaçãoDepthwise Separable Con- volutionao invés da convolução convencional. Logo em seguida é apresentado o processo de treinamento do modelo, descrevendo a base de imagens utilizada, o ambiente de treinamento e alguns parâmetros importantes para o treinamento.

3.1.1 Arquitetura

Para a tarefa de detecção foi proposta uma modificação da arquitetura presente no algoritmo YOLOv3 para reduzir o número de parâmetros da rede, resultando em um modelo que ocupa menos espaço e com um menor tempo de processamento. Ao invés de utilizar obackend padrão do YOLOv3 ou até mesmo uma variante menor chamada Tiny-YOLO, nós utilizamos comobackenda arquitetura presente noMobileNet(Howardet al.,2017). A MobileNet é uma arquitetura originalmente voltada para classificação de imagens em dispositivos com baixo poder de processamento comosmartphones.

(22)

21 21 21

Figura 7: Fluxo da abordagem proposta

O que torna a arquitetura baseada na MobileNet tão eficiente é que eles utilizaram o conceito de Depthwise Separable Convolution ao invés da convolução convencional. Essa maneira diferente de realizar a operação de convolução pode ser descrito sucintamente da seguinte maneira. Primeiro é feita uma convolução onde cada filtro vai convolver com um canal da entrada de forma individual, ao contrário da convolução padrão onde um filtro convolve com todos os canais da entrada somando os resultados. Sendo assim, se uma entrada possui 3 canais, um filtro é aplicado para cada canal, gerando assim uma saída com 3 canais também. Essa operação é denominadaDepthwise Convolution. Nas CNN’s é importante gerar váriosfeature mapsa cada convolução que é feita (onde cadafeature mapcorresponde a um canal da saída) e não apenas o mesmo número de canais presentes na entrada. Pra solucionar isso foi aplicada uma convolução convencional onde os filtros possuem dimensão 1x1, dessa forma o número de canais presentes na saída será igual ao número de filtros aplicados. Essa segunda operação é

(23)

chamada dePointwise Convolution. Uma comparação de uma convolução convencional com as operações descritas acima é ilustrada na figura 8.

Figura 8: Um filtro de convolução convencional (a) é substituído por duas operações: (b) depthwise convolution e (c) pointwise convolution (Howardet al.,2017)

Podemos expressar a quantidade de parâmetros utilizados numa operação de convolução convencional em termos deDK·DK·M·N, ondeDK é a dimensão do filtro (supondo que ele tenha valores iguais de altura e largura),M é o número de canais presentes na entrada eN é o número de canais presentes na saída. Para a operação deDepthwise Convolutiontemos DK·DK·M parâmetros. Para a operação dePointwise ConvolutiontemosDK·DK·M·N parâmetros, porém

(24)

23 23 23

como os filtros são 1x1 isso equivale àM·N. Sendo assim, utilizando a combinação deDepthwise ConvolutioncomPointwise Convolutionobtemos uma redução de parâmetros descrita na equação 3.1.

DK·DK·M+M·N DK·DK·M·N = 1

N+ 1 D2K

3.1 Com a equação 3.1 podemos notar a redução no número de parâmetros quando utilizamos essas duas operações ao invés da convolução convencional, isso faz com que o número de computações seja reduzido trazendo o aumento de desempenho. Sendo assim, nós modificamos a arquitetura do YOLOv3 para utilizar o mesmobackendutilizado pelo MobileNet. Desta forma, a arquitetura que propusemos recebe como entrada uma imagem com dimensões 224x224x3 e retorna um feature map com dimensões 7x7x5x6. A tabela 1 contém o detalhamento de cada camada da arquitetura proposta. As modificações propostas na nossa arquitetura refletem diretamente no tamanho final do modelo. Enquanto o YOLOv3 original possui 237 MB, a arquitetura proposta possui 7,6 MB.

Tabela 1: Arquitetura proposta utilizando MobileNet comobackendno YOLOv3 Repete Tipo / Stride Dimensões do filtro Dimensões de entrada Dimensões de saída

1x Conv / s2 3x3x3x24 224x224x3 112x112x24

1x Conv dw / s1 3x3x24 dw 112x112x24 112x112x24

Conv / s1 1x1x24x48 112x112x24 112x112x48

1x Conv dw / s2 3x3x48 dw 112x112x48 56x56x48

Conv / s1 1x1x48x96 56x56x48 56x56x96

1x Conv dw / s1 3x3x96 dw 56x56x96 56x56x96

Conv / s1 1x1x96x96 56x56x96 56x56x96

1x Conv dw / s2 3x3x96 dw 56x56x96 28x28x96

Conv / s1 1x1x96x192 28x28x96 28x28x192

1x Conv dw / s1 3x3x192 dw 56x56x192 28x28x192

Conv / s1 1x1x192x192 28x28x192 28x28x192

1x Conv dw / s2 3x3x192 dw 28x28x192 14x14x192

Conv / s1 1x1x192x384 14x14x192 14x14x384

5x Conv dw / s1 3x3x384 dw 14x14x384 14x14x384

Conv / s1 1x1x384x384 14x14x384 14x14x384

1x Conv dw / s2 3x3x384 dw 14x14x384 7x7x384

Conv / s1 1x1x384x768 7x7x384 7x7x768

1x Conv dw / s1 3x3x768 dw 7x7x768 7x7x768

Conv / s1 1x1x768x768 7x7x768 7x7x768

1x Conv / s1 1x1x768x30 7x7x768 7x7x30

1x Reshape - 7x7x30 7x7x5x6

(25)

3.1.2 Treinamento

Antes de iniciar o treinamento do modelo proposto foi necessário a obtenção de um conjunto de imagens onde cada uma delas tivesse um arquivo com anotações a respeito da localização de cada placa. Essas imagens deveriam conter necessariamente veículos com placas no padrão brasileiro, já que nosso modelo foi treinado pra detectar tal padrão. Alguns autores tais como (Larocaet al.,2018) e (Gonçalveset al.,2016) disponibilizaram as bases de dados utilizadas nos seus respectivos trabalhos. O primeiro conjunto de dados possui imagens capturadas com uma câmera fixa no carro enquanto trafegava por algumas ruas, o último capturou as imagens utilizando uma câmera fixa em uma cancela de estacionamento. Outro conjunto de imagens utilizado foi o conjunto disponível em (Izidioet al.,2018), o qual foi obtido entrando em contato com um dos autores. No total foram obtidas 4407 imagens todas com resolução de 1024x768 pixels, onde 80% foi utilizado como conjunto de treino e 20% foi utilizado como conjunto de validação. Algumas imagens podem ser visualizadas na figura 9.

Figura 9: Exemplos de imagens presentes na base de dados

Para implementar a arquitetura descrita na subseção 3.1.1 foi utilizada a linguagem de programação Python 3 junto com a biblioteca Keras (https://keras.io). A biblioteca Keras fornece uma maneiraout-of-the-boxde utilizar as principais operações necessárias em CNNs, onde cada operação é considerada umlayer. Sendo assim, basta organizar esseslayersde forma sequencial para obtermos uma arquitetura de CNNs pronta para o treinamento.

Durante o treinamento, a técnicadata augmentationfoi empregada para gerar variações no conjunto de dados. Foram aplicados ruído Gaussiano, desfoque Gaussiano, mudança de brilho, mudança de contraste, translação, rotação e modificação da escala. Todas essas modificações foram aplicadas aleatoriamente às imagens durante a fase de treinamento e para cada uma foram utilizados parâmetros específicos. Esse tipo de técnica é interessante pois aumenta o número de imagens que são apresentadas à rede durante o treinamento, mesmo quando não temos à disposição um grande número de dados, isso faz com que a rede fique ainda mais robusta.

Como a nossa arquitetura utiliza a arquitetura da MobileNet comobackend, nós utili- zamos os pesos disponibilizados pelo Keras do MobileNet, que foi pré-treinado com um vasto conjunto de imagens da aplicação ImageNet. Isso faz com que o processo de treinamento fique

(26)

25 25 25

mais simples visto que a rede já começa com um grande conjunto de características aprendido.

Durante o treinamento do modelo proposto foram utilizados os parâmetros descritos na tabela 2. O treinamento ocorreu durante 18 épocas, pois foi utilizado o conceito deearly stopping, onde, a cada época, a evolução da rede foi testada com o conjunto de validação. Sendo assim, como não houve evolução durante 3 épocas seguidas a partir da época 16, o treino foi encerrado automaticamente na época 18. Todo o treinamento foi realizado utilizando o ambiente Google Colab, fornecido gratuitamente pelo Google e que conta com uma GPUNVIDIA Tesla K80. O ambiente já fornece as principais bibliotecas para modelar e treinar modelos dedeep learningde maneira rápida e possui integração com o Google Drive para importação e exportação de arquivos.

Ao final do processo de treinamento o modelo foi salvo para ser utilizado posteriormente.

Tabela 2: Parâmetros utilizados no treinamento da CNN de detecção

Parâmetro Valor

Batch size 16

Épocas doearly stopping 3

Otimizador Adam

Learning rate 0,0001

Fator de decaimento 1(β1) 0,9000 Fator de decaimento 2(β2) 0,9990

Epsilon(ε) 10−8

3.2 RECONHECIMENTO DAS PLACAS

Nesta seção será apresentada a arquitetura proposta para a CNN de reconhecimento das placas, detalhando cada camada da arquitetura e comparando com a arquitetura de (Starket al., 2015). Logo em seguida a técnica de geração de placas sintéticas é descrita de forma detalhada.

Por fim, as etapas de treinamento etransfer learningsão descritas.

3.2.1 Arquitetura

Para executar a tarefa de reconhecimento de placas nós propomos uma arquitetura de CNN que suporta a classificação de cada caractere presente numa placa de veículo do padrão brasileiro. Essa arquitetura é um pouco mais simples do que a arquitetura de detecção descrita na subseção 3.1.1 pois é composta por apenas algumas camadas convolucionais. Esta escolha de arquitetura foi feita com base no fato de que o uso de camadas totalmente conectadas no final da rede faz com que o número de parâmetros aumente bastante, pois todos os neurônios de uma determinada camada se conectam com todos os neurônios da camada seguinte.

(27)

A arquitetura proposta do reconhecedor foi baseada, inicialmente, na arquitetura apresen- tada no trabalho feito por (Starket al.,2015), que propõe uma CNN para classificar os caracteres presentes em um CAPTCHA. A escolha foi feita com base na semelhança entre reconhecimento de CAPTCHA e reconhecimento de placas, pois ambas as tarefas requerem classificação de caracteres que na maioria das vezes apresentam ruídos ou distorções.

O trabalho desenvolvido por Izidio (Izidioet al.,2018) também utilizou essa arquitetura para o reconhecimento de placas e obteve ótimos resultados. No entanto, o grande número de parâmetros fez com que esta técnica se tornasse inviável para o nosso trabalho, já que posteriormente o modelo treinado teria que ser implementado em um sistema embarcado com poucos recursos de memória. Dessa forma, assim como na arquitetura de detecção, foi proposta uma nova arquitetura para o reconhecimento de placas que fosse eficiente e ocupasse pouco espaço ao mesmo tempo que mantivesse uma acurácia semelhante às obtidas em outros trabalhos.

Na tabela 3 está descrita uma arquitetura para reconhecimento de placas baseada na arquitetura de (Starket al.,2015), enquanto na tabela 4 temos a mesma arquitetura com algumas modificações propostas e que são cruciais para a diminuição do número de parâmetros da rede.

Tabela 3: Arquitetura de reconhecimento de placas baseada em (Starket al.,2015) Camada Tipo / Stride Dimensões Dimensões de entrada Dimensões de saída

#1 Conv / s1 5x5x48 64x128x1 64x128x48

#2 MaxPooling / s2 2x2 64x128x48 32x64x48

#3 Conv / s1 5x5x64 32x64x48 32x64x64

#4 MaxPooling / s2 2x2 32x64x64 16x32x64

#5 Conv / s1 5x5x128 16x32x64 16x32x128

#6 MaxPooling / s2 2x2 16x32x128 8x16x128

#7 Flatten - 8x16x128 16384

#8 FullyConnected - 16384 512

#9 FullyConnected - 512 252

As primeiras modificações foram feitas nas camadas convolucionais que utilizam filtros 3x3 ao invés dos filtros 5x5 da arquitetura original. Essa modificação foi feita pois o processador que utilizamos para implementar esse modelo posteriormente não tem instruções para operações convolucionais com filtro 5x5, então a solução foi substituir uma camada de convolução 5x5 por duas camadas de convolução 3x3. Com isso nós também removemos as camadas demax poolingfazendo com que a cada camada convolucional que adicionamos tenha umstridede 2, ou seja, o filtro percorre a entrada de 2 em 2 pixels. Sendo assim, a saída é equivalente à metade da quantidade de pixels presente na entrada.

A modificação que impactou diretamente no número de parâmetros da rede acontece após a camada 6. Aarquitetura originalremodela a saída da camada 6 de modo que ela passa de uma matriz tridimensional com dimensões 8x16x128 para um vetor com dimensão 16384 onde cada posição desse vetor é um neurônio. Após isso, é utilizada uma camada totalmente conectada onde

(28)

27 27 27

Tabela 4: Arquitetura de reconhecimento de placas proposta pelo trabalho

Camada Tipo / Stride Dimensões Dimensões de entrada Dimensões de saída

#1 Conv / s1 3x3x48 64x128x1 64x128x48

#2 Conv / s2 3x3x48 64x128x48 32x64x48

#3 Conv / s1 3x3x64 32x64x48 32x64x64

#4 Conv / s2 3x3x64 32x64x64 16x32x64

#5 Conv / s1 3x3x128 16x32x64 16x32x128

#6 Conv / s2 3x3x128 16x32x128 8x16x128

#7 Conv / s1 1x1x512 8x16x128 8x16x512

#8 GlobAvgPooling / s1 - 8x16x512 1x1x512

#9 Flatten - 1x1x512 512

#10 FullyConnected - 512 252

os 16384 neurônios da camada 7 são conectados com 512 neurônios da camada 8, isto resulta em mais de 8 milhões de parâmetros apenas nesta camada. Para diminuir consideravelmente essa quantidade de parâmetrosnossa arquiteturafaz mais uma operação de convolução após a camada 6, onde 512 filtros de dimensões 1x1 são aplicados, obtendo como saída uma matriz de feature mapcom dimensões 16x32x512. Após essa última convolução nós utilizamos a operaçãoGlobal Average Poolingque calcula a média de todos os pixels presentes em cada feature map, resultando eu uma matriz 1x1x512 que pode ser remodelada em um vetor de 512 posições representando os neurônios da camada. Desta forma nós eliminamos a primeira camada totalmente conectada presente na arquitetura original, reduzindo assim o número de parâmetros necessários na operação para pouco mais de 65 mil. Esse número resulta da quantidade de parâmetros utilizados no filtro aplicado na camada 7 da nossa arquitetura, que é de 1x1x128x512.

Com essas modificações foi possível reduzir o modelo para apenas 2 MB, enquanto o modelo que utilizava a arquitetura original possuía 258 MB.

A última camada da arquitetura proposta também é uma camada totalmente conectada, onde os 512 neurônios são conectados com os 252 neurônios finais. Esses 252 neurônios podem ser interpretados como 36 probabilidades de cada caractere (26 letras e 10 dígitos) estar presente em cada uma das 7 posições da placa. Essas probabilidades são obtidas através da função de ativaçãoSoftmaxque é aplicada a cada conjunto separado de 36 neurônios. Por exemplo, os primeiros 36 neurônios representam as probabilidades de algum dos caracteres estar presente na primeira posição da placa, sendo assim, se o segundo neurônio for o neurônio com probabilidade maior dentre os 36 primeiros, significa que a rede está predizendo que a primeira posição da placa contém a letra ’B’. A equação 3.2 formaliza essa explicação ondené o neurônio que nos dá a probabilidade do caracterexestar presente na posiçãoi, sendoθ(x)definido pela equação 3.3. Poderíamos ter representado a saída como 26 neurônios para cada uma das 3 primeiras posições e 10 neurônios para cada uma das 4 últimas posições, pois o modelo antigo do Brasil (e que ainda é maioria em circulação) comporta apenas letras nas 3 primeiras posições da placa e

(29)

dígitos nas 4 últimas. Porém nossa arquitetura foi feita para que posteriormente fosse possível ser treinada com o novo padrão de placas do Mercosul, onde é possível letras e dígitos em cada uma das 7 posições.

n=36i+θ(x) 3.2

θ(x) =

0...25, sex=0A0...0Z0 26..36, sex=000...090

3.3

3.2.2 Geração de placas sintéticas

Para o treinamento da CNN de reconhecimento é necessário um grande número de imagens de placas com suas respectivas anotações, visto que são inúmeras combinações (mais de 175 milhões) possíveis de letras e dígitos que estão presentes nas placas dos veículos. Capturar uma grande variação de placas se torna uma tarefa árdua, principalmente porque em cada estado brasileiro há uma incidência maior de determinados padrões de placas. Os carros emplacados em Pernambuco, por exemplo, tem as letras K, N, O, P e Q como primeira letra da placa, sendo assim, durante o treinamento pode haver umoverfittingporque a rede está sendo apresentada a padrões de placas semelhantes.

Como forma de contornar este problema de forma parcial nós utilizamos uma técnica de geração de placas sintéticas (Earl,2016), onde durante o treinamento um conjunto de placas é gerado de forma artificial e a cada época a rede é treinada com um conjunto de imagens completamente diferente do conjunto de placas da época anterior. Para implementar esta técnica foi utilizada a bibliotecaOpenCV (https://opencv.org/) em Python, pois é a biblioteca que oferece uma maior facilidade em manipulação de imagens e trabalha muito bem com outras bibliotecas matemáticas como oNumPy(https://numpy.org/).

O primeiro passo na geração é a criação de uma caixa retangular com as mesmas proporções e cores de uma placa e nessa caixa escrevemos a sequência de 7 caracteres (3 letras e 4 dígitos). Esses caracteres são escolhidos de forma randômica e utilizam a fonteMandatoryque está estabelecida como fonte padrão para as placas dos veículos brasileiros. Vale ressaltar que sequências onde os quatro últimos caracteres são dígitos ’0’ não são geradas, pois placas com o final ’0000’ não existem no padrão brasileiro.

O segundo passo utilizado na geração de placas foi a aplicação de técnicas de transforma- ção na imagem gerada. As transformações aplicadas foram rotação nas três dimensões, mudança na escala da imagem e translação. Todas essas transformações foram aplicadas utilizando uma variação de valores de modo que as placas geradas correspondam com placas reais capturadas em diversas condições de posicionamento de câmera.

O último passo que aplicamos foi compor a placa transformada em um fundo gerado de forma aleatória. Para isso foi necessário uma quantidade de imagens que representassem

(30)

29 29 29

diversos tipos de contexto, para que não houvesse uma relação entre uma placa gerada e outra.

Sendo assim, utilizamos a base de dados que foi proposta em (Xiaoet al.,2010) que contém mais de cem mil imagens coloridas com resolução 416x416 que representam diversos contextos.

No momento da composição uma imagem dessa base de dados é escolhida de forma randômica e uma pedaço aleatório dela é recortado criando uma nova imagem com resolução 128x64 que logo após é convertida para níveis de cinza. Após isso, a placa transformada é composta com essa imagem obtida e um ruído Gaussiano é aplicado com o objetivo de simular condições onde a placa não está bem definida na imagem. Todos os passos descritos acima estão ilustrados na figura 10.

Figura 10: Passos para a geração de uma placa sintética no formato brasileiro

3.2.3 Treinamento e transfer learning

O treinamento da CNN proposta foi dividido em duas etapas: o treinamento com as imagens de placas sintéticas e ofine-tuning da rede com imagens de placas reais utilizando transfer learning. Durante a primeira etapa a CNN foi treinada apenas com imagens de placas sintéticas, as imagens eram geradas em tempo de treinamento, ou seja, a cadabatch novas imagens eram geradas de forma aleatória. Isso é interessante pois a rede é apresentada às várias combinações de letras e dígitos que compõem uma placa. O ambiente de treinamento foi o mesmo descrito no treinamento da CNN de detecção (subseção 3.1.2), incluindo as bibliotecas utilizadas. O treinamento da rede nesta etapa durou 143 épocas, pois utilizamosearly stopping, onde a cada época a rede era avaliada com um conjunto de validação composto por 1000 imagens também sintéticas, porém esse conjunto não mudava ao longo das épocas. Caso a rede passasse cinco épocas sem obter uma melhoria na acurácia do conjunto de validação, o treinamento era encerrado. A tabela 5 descreve os parâmetros utilizados nesta etapa de treinamento da rede.

Embora a rede tenha sido treinada com uma grande quantidade de imagens sintéticas, ela ainda apresentou um desempenho não tão alto quanto quando foi testada com imagens de placas reais. Isso aconteceu porque, embora tentem simular ao máximo as condições de captura de uma placa real, as placas sintéticas não conseguem conter algumas elementos que acabam sendo específicos de uma placa real como caracteres que podem estar parcialmente apagados, por exemplo. Para contornar essa limitação da rede nós aplicamos uma técnica chamadatransfer learning, onde uma CNN previamente treinada com um conjunto de imagens é retreinada

(31)

Tabela 5: Parâmetros utilizados no treinamento da CNN de reconhecimento

Parâmetro Valor

Função de erro Categorical Crossentropy

Batch size 64

Épocas doearly stopping 5

Otimizador Adam

Learning rate 0,0001

Fator de decaimento 1(β1) 0,9000 Fator de decaimento 2(β2) 0,9990

Epsilon(ε) 10−8

utilizando um conjunto diferente de imagens. Sendo assim, nós utilizamos os pesos treinados com o conjunto de placas sintéticas e a partir deles começamos um novo treinamento com o conjunto de placas reais.

O conjunto de imagens que utilizamos para a etapa detransfer learningfoi o mesmo utilizado em (Izidioet al., 2018) e foi fornecido por um dos autores. Foram utilizadas 800 imagens em escala de cinza com resolução 128x64, cada uma delas contendo uma anotação equivalente à sequência de caracteres presentes na placa. Para o conjunto de treino selecionamos 75% das imagens, enquanto 25% foram utilizadas para avaliar a rede durante o processo de transfer learning. O processo de treinamento durou 72 épocas utilizando o mesmo critério de early stoppingdefinido no treino com placas sintéticas. Os parâmetros utilizados no treinamento são os mesmos descritos na tabela 5, com exceção dolearning rateque foi reduzido para 0,00001 já que os pesos da rede já haviam sido treinados previamente.

3.3 SISTEMA FINAL

Nesta seção será introduzida a plataforma embarcada onde o sistema final foi imple- mentado. Em seguida é descrito o processo de compilação do modelo para a arquitetura da plataforma, explicando o conceito de quantização e o motivo da técnica ter sido utilizada. Por fim a aplicação final é apresentada, descrevendo cada etapa da aplicação.

3.3.1 Plataforma utilizada

Após treinar e validar os modelos de detecção e reconhecimento nós tivemos que converte- los para um formato compatível com a plataforma alvo que seria utilizada para implementar o sistema embarcado final. A plataforma escolhida para a implementação foi aSipeed Maixduino (figura 11), que possui um processador de aplicação específicaKendryte, baseado na arquitetura RISC-V e que possui um co-processador (KPU) que implementa instruções de redes neurais

(32)

31 31 31

em hardware. A placa conta também com um módulo de câmera VGA e um display LCD com resolução 320x240. A comunicação da placa se dá por um módulo ESP-32 que já vem acoplado, permitindo utilização de comunicação Wi-Fi e BLE. A seguir detalhamos as principais especificações da plataforma escolhida:

CPU: Kendryte K210 RISC-V Dual Core 64 bits, 600 MHz - 800 MHz;

Co-processador: KPU 400 MHz;

SRAM: 8 MB (6 MB dedicados para propósito geral e 2 MB para operações realizadas pelo KPU);

Memória Flash: 16 MB;

Display LCD 320x240;

Câmera VGA (640x480);

Módulo ESP-32: Wi-Fi 2,4 GHz 802.11. b/g/n e Bluetooth 4.2;

Tensão de entrada: 6-12V.

Figura 11: Sipeed Maixduino

(33)

3.3.2 Conversão dos modelos

Um grande desafio neste trabalho foi a quantidade de memória disponível, oMaixduino possui apenas 8 MB de memóriaSRAM, onde 6 MB são de propósito geral e 2 MB são dedicados para o co-processador KPU executar as operações de redes neurais, por isso foram propostas duas arquiteturas voltadas tanto para desempenho quanto para economia de memória. Embora para um microcontrolador a quantidade de 6 MB de memória seja mais do que suficiente para executar suas aplicações, numa aplicação que envolve rede neurais esta quantidade de memória se torna algo bastante restrito.

Com essa limitação de memória seria impossível utilizarmos nossos modelos treinados, pois apenas no armazenamento do modelo de reconhecimento, os 6 MB de memória já se tornariam insuficientes. Sendo assim, para contornar o problema de memória, aplicamos nos modelos treinados a técnica de quantização. Tal técnica consiste em converter os pesos da rede que são representados por números em ponto flutuante de 32 bits para a representação em ponto fixo de 8 bits, isso fez com que o tamanho da rede fosse reduzido em até 4 (quatro) vezes.

Para fazermos a conversão dos modelos utilizamos uma ferramenta disponibilizada pelo próprio fabricante do processador que faz a conversão do modelo no formato original do (Keras) para o formato doTensorFlow Liteque é utilizado em sistemas com restrições de processamento como smartphones, por exemplo. Após a conversão para o formatoTensorFlow Liteos modelos são convertidos e quantizados para o formatokmodelque é o formato compatível com a arquitetura do KPU presente no processador. Uma comparação do tamanho dos modelos antes e depois da quantização pode ser vista na tabela 6. Graças à técnica de quantização foi possível que os dois modelos fossem carregados na memória da plataforma alvo permitindo a detecção e reconhecimento das placas.

Tabela 6: Comparação do tamanho dos modelos antes e depois da quantização

Modelo Tamanho (Original) Tamanho (Quantizado)

Detecção 7,6 MB 1,9 MB

Reconhecimento 2,0 MB 515,5 KB

3.3.3 Aplicação

Para a implementação na plataforma alvo nós poderíamos ter utilizado a linguagem de programação C++ junto com oframeworkArduino, porém optamos peloMicroPythonque é um porte da linguagem Python voltado para microcontroladores. A escolha foi feita com base nas bibliotecas de manipulação de imagem e vídeo que não haviam sido implementadas para o frameworkArduino. Já emMicroPythonessas duas bibliotecas tinham suas respectivas imple- mentações e apresentavam um ótimo desempenho, pois todas as funções foram implementadas

(34)

33 33 33

em C e apenas as chamadas eram feitas em Python. Foi necessário remover alguns módulos não utilizados na aplicação e compilar uma nova versão reduzida doMicroPythonpara que fosse possível carregar o interpretador na memória junto com os modelos treinados, pois a versão completa doMicroPythondeixava aproximadamente 2 MB de memória RAM disponível para ser utilizada na aplicação.

Na aplicação implementada é possível realizar o reconhecimento de placas em arquivos de imagem, arquivos de vídeo ou através da câmera presente na plataforma. Porém obuffer de imagem conta com uma restrição que todas as imagens ou frames de vídeo tem que ter a resolução 320x240 para evitar que haja um estouro naheapdo MicroPython. Após carregar o frame foi feito um redimensionamento para a resolução 224x224, pois são as dimensões de entrada da CNN de detecção. Com a imagem redimensionada, a detecção das placas é feita e as coordenadas de uma ou mais placas presentes na imagem são retornadas. Com as coordenadas em mãos nós fazemos o recorte das placas e adicionamos umoffset de 10% em cada dimensão, esseoffseté necessário pois pode acontecer da placa ser recortada parcialmente o que introduziria um erro na etapa de reconhecimento. Após esse passo, a placa recortada é redimensionada para as dimensões 128x64 e convertida para escala de cinza. Por fim, cada placa redimensionada é passada individualmente para a CNN de reconhecimento, onde obtém-se a sequência da caracteres presente na placa. A figura 12 ilustra todo opipelinedescrito acima.

Figura 12: Pipelinedo sistema de reconhecimento de placas

(35)

4

RESULTADOS

Este capítulo apresenta os resultados obtidos durante a avaliação das CNN’s de detecção e de reconhecimento através dos respectivos conjuntos de dados de validação. O sistema final também foi avaliado e os resultados foram comparados com os resultados obtidos por (Izidio et al.,2018).

4.1 CNN DE DETECÇÃO

Durante o processo de treinamento da CNN de detecção foi utilizado um conjunto com 881 imagens para validação, onde cada imagem deste conjunto possuía uma ou mais placas para detecção. Esse conjunto de validação foi utilizado para avaliar a CNN durante o processo de treinamento, ou seja, saber como a rede se comporta quando apresentada à imagens que não foram apresentadas à ela durante o treinamento. Com isso foi possível avaliar a capacidade de detecção da rede e sua acurácia.

Cada imagem do conjunto de validação tinha um arquivo de texto correspondente que indicava as coordenadas de cada placa presente na imagem. Sendo assim, a cada época durante o treinamento, a rede neural foi submetida a cada uma dessas imagens e o número de placas detectadas foi verificado. Ao final do treinamento obtivemos um resultado onde98,79%das placas presentes no conjunto de validação foram detectadas corretamente. Com este número a CNN proposta se mostra bastante eficiente na tarefa de detecção de placas, mesmo com a quantidade de otimizações que foram feitas na arquitetura para que seu tamanho fosse reduzido.

4.2 CNN DE RECONHECIMENTO

Como o processo de treinamento da CNN de reconhecimento foi dividido em dois estágios, o processo de validação também foi feito em duas etapas. A primeira etapa foi responsável por validar a rede com um conjunto de placas sintéticas, a segunda etapa validou a rede com um conjunto de placas reais.

Durante o treinamento da rede neural um conjunto com 1000 imagens sintéticas foi utilizado para validar a acurácia da rede no reconhecimento dos caracteres presentes nas placas.

(36)

35 35 35

Ao final do treinamento foi obtido uma acurácia de 99,04% com o conjunto de placas sintéticas, porém com o conjunto de 200 placas reais a rede apresentou uma acurácia de 93,66%, onde esse percentual representa o número de caracteres que a rede conseguiu reconhecer corretamente.

Esta acurácia foi melhorada com a utilização da técnica detransfer learningdescrita na seção 3.2.3. Sendo assim, após a rede passar pelo processo detransfer learning, a acurácia com o conjunto de placas reais subiu para98,14%. Essa melhoria ocorreu porque a rede conseguiu aprender alguns nuances que não estavam presentes no conjunto de placas sintéticas. A tabela 7 resume os resultados obtidos durante o processo de validação da CNN de reconhecimento.

Podemos notar que após otransfer learninga acurácia resultante do conjunto de placas sintéticas foi reduzida, isso se deu porque a rede ficou mais especializada em reconhecer os caracteres de uma placa real, isso é bom pois nosso sistema final tem como finalidade lidar com placas reais e não com placas sintéticas.

Tabela 7: Resultados da avaliação da CNN de reconhecimento

Modelo Acurácia placas sintéticas Acurácia placas reais Antes dotransfer learning 99,04% 93,66%

Depois dotransfer learning 96,22% 98,14%

4.3 AVALIAÇÃO DO SISTEMA FINAL

Para a avaliação do sistema final foi utilizado um conjunto com 150 imagens, onde cada imagem continha uma ou mais placas de carro. Para fim de comparação, o conjunto foi o mesmo utilizado no trabalho (Izidioet al.,2018), pois utilizando o mesmo conjunto de imagens poderíamos comparar os nossos resultados com os resultados obtidos pelos autores.

A tabela 8 mostra os resultados da comparação do sistema proposto com o sistema de (Izidio et al.,2018). Nessa comparação consideramos o modelo proposto não quantizado e o modelo quantizado, já que este último foi executado na placaSipeed Maixduino. Nota-se uma queda na acurácia dos resultados quando comparamos o modelo quantizado com o não quantizado, isso ocorre porque há uma conversão na precisão das conexões presentes na rede, as conexões do modelo não quantizado são representadas por números em ponto flutuante de 32 bits enquanto no modelo quantizado os números são representados na notação ponto fixo de 8 bits apenas.

Quando comparado com o trabalho de (Izidioet al.,2018), a acurácia na detecção de placas sofre uma redução, porém é uma redução aceitável visto que há um ganho no desempenho, já no reconhecimento das placas a diferença na acurácia dos resultados é bem menor.

Como neste trabalho foram propostas duas arquiteturas de redes neurais, nós obtivemos os resultados utilizando dois ambientes, o primeiro foi executando o sistema em umaRapsberry Pi 3 e o segundo ambiente foi a placa Sipeed Maixduino. O motivo de avaliar o sistema utilizando umaRaspberryé que queremos mostrar que mudanças propostas nas arquiteturas

(37)

Tabela 8: Comparação das acurácias da arquitetura proposta com o trabalho de (Izidio et al.,2018)

Arquitetura Detecção Reconhecimento de caracteres

Izidioet al.(2018) (Simples) 99,37% 98,43%

Izidioet al.(2018) (Ensemble) 99,37% 99,53%

Arquitetura proposta (não quantizado) 97,69% 98,32%

Arquitetura proposta (quantizado) 97,31% 98,02%

conseguem tirar proveito até mesmo quando implementadas em processadores de propósito geral e, assim, comparar com o sistema proposto por (Izidioet al.,2018) que também é executado utilizando o mesmo ambiente. A tabela 9 detalha a comparação feita e podemos observar que a arquitetura proposta leva em média 40,84 milissegundos para detectar e reconhecer uma placa, isso representa uma taxa média de24 FPS o que é uma ótima taxa para reconhecimento de placas em tempo real. Com esses resultados fica nítido que as modificações que foram feitas na arquitetura proposta junto com o processador de redes neurais presente na plataforma escolhida trazem um grande ganho de desempenho com pouca degradação na acurácia do sistema.

Tabela 9: Comparação entre os tempos de processamento de cada arquitetura

Arquitetura Detecção (ms) Reconhecimento (ms) Total (ms)

Izidioet al.(2018) (Simples) 1610 1090 2700

Izidioet al.(2018) (Ensemble) 1610 3270 4880

Arquitetura proposta (Raspberry Pi 3) 232,11 65,83 297,94 Arquitetura proposta (Sipeed Maixduino) 32,31 8,53 40,84

Como pode ser visto na figura 13 e na figura 14, a matriz de confusão indica que nosso sistema acerta a grande maioria dos caracteres presentes nas placas, isso é visualizado pela diagonal da matriz que apresenta cores vivas, enquanto alguns poucos pontos fora da diagonal mostram uma leve coloração indicando os caracteres que foram confundidos.

(38)

37 37 37

Figura 13: Matriz de confusão da CNN de reconhecimento não quantizada

Figura 14: Matriz de confusão da CNN de reconhecimento quantizada

(39)

Na figura 15 são apresentados alguns exemplos de placas que foram reconhecidas corretamente e incorretamente. Cada imagem possui um ou maisbounding boxesdelimitando a área de cada placa detectada e um pouco acima umastringindicando a sequência de caracteres presentes na placa. Todas as imagens são resultados do sistema implementado na placaSipeed Maixduino, ou seja, os modelos de detecção e reconhecimento utilizados foram os modelos quantizados.

Figura 15: Exemplos de placas reconhecidas incorretamente (esquerda) e corretamente (direita)

(40)

39 39 39

5

CONCLUSÃO

Detecção e reconhecimento automático de placas de veículos é uma tarefa que até um tempo atrás era feita de maneira bastante rústica, onde algoritmos descreviam de forma explícita os padrões das placas a serem reconhecidas. Conforme o poder computacional dos processadores foi aumentando assim como a quantidade de dados, algoritmos baseados emDeep Learning começaram a ser utilizados para resolver o problema de reconhecimento de placas. Isso trouxe um grande avanço para a área porque agora uma ou mais redes neurais são responsáveis por aprender e extrair as principais características de uma placa, trazendo altos valores de acurácia na tarefa de reconhecimento. Porém, as arquiteturas existentes ainda exigem um grande poder computacional, fazendo com que a execução de tais técnicas fiquem restritas basicamente à GPU’s.

O presente trabalho propôs duas arquiteturas de CNNs voltadas para execução em sistemas com baixo poder de processamento como sistemas embarcados, por exemplo. Uma das arquiteturas é uma modificação do YOLO, responsável pela detecção das placas presentes nas imagens e a outra arquitetura é responsável pelo reconhecimento das placas utilizando elementos presentes na arquitetura do MobileNet. Ambas arquiteturas foram convertidas em modelos compatíveis com o processador de aplicação específicaKendryte K210, onde o sistema final seria executado, respeitando as restrições de memória presentes na plataforma.

Analisando os resultados obtidos observamos que a combinação das duas arquiteturas propostas junto com o processador escolhido resultou numa alta taxa de quadros por segundo, atingindo uma média de 24 FPS enquanto a acurácia de reconhecimento dos caracteres se manteve alta com o valor de 98,02%. Desta forma conseguimos implementar um sistema de reconhecimento de placas de veículos brasileiros que consegue ser executado em tempo real e com uma alta acurácia, tudo isso sendo processado de forma local no próprio sistema embarcado.

Mesmo atingindo ótimos resultados, ainda há alguns pontos que podem ser abordados em trabalhos futuros para a melhoria do sistema:

Treinar a CNN de reconhecimento com o padrão de placas do Mercosul para que haja uma gama maior de placas a ser reconhecida pelo sistema;

Utilizar placas de motocicletas no treinamento das CNN’s de detecção e reconheci-

(41)

mento fazendo com que o sistema não reconheça apenas placas de automóveis;

Desenvolver uma técnica mais aprimorada para geração de placas sintéticas, assim como utilizar redes neurais generativas para gerar imagens de veículos com placas para serem utilizadas no treinamento da CNN de detecção;

Desenvolver uma arquitetura única de detecção e reconhecimento, onde todas as placas presentes na imagem são detectadas e reconhecidas em uma única passagem pela rede, diminuindo o tempo de processamento para cada imagem.

(42)

41 41 41

REFERÊNCIAS

Dai, J., Li, Y., He, K., & Sun, J. (2016). R-fcn: Object detection via region-based fully convolutional networks. InAdvances in neural information processing systems, 379–387.

Du, S., Ibrahim, M., Shehata, M., & Badawy, W. (2012). Automatic license plate recognition (alpr): A state-of-the-art review. IEEE Transactions on circuits and systems for video technology, 23(2):311–325.

Earl, M. (2016). Number plate recognition with tensorflow. http://matthewearl.

github.io/2016/05/06/cnn-anpr.

Girshick, R. (2015). Fast r-cnn. InProceedings of the IEEE international conference on computer vision, 1440–1448.

Gonçalves, G. R., Diniz, M. A., Laroca, R., Menotti, D., & Schwartz, W. R. (2018). Real-time automatic license plate recognition through deep multi-task networks. In2018 31st SIBGRAPI Conference on Graphics, Patterns and Images (SIBGRAPI), 110–117.

Gonçalves, G. R., da Silva, S. P. G., Menotti, D., & Schwartz, W. R. (2016). Benchmark for license plate character segmentation. Journal of Electronic Imaging, 25(5):1–5.

Howard, A. G., Zhu, M., Chen, B., Kalenichenko, D., Wang, W., Weyand, T., Andreetto, M.,

& Adam, H. (2017). Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv preprint arXiv:1704.04861.

Izidio, D. M., Ferreira, A. P., & Barros, E. N. (2018). An embedded automatic license plate recognition system using deep learning. In 2018 VIII Brazilian Symposium on Computing Systems Engineering (SBESC), 38–45.

Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. InAdvances in neural information processing systems, 1097–

1105.

Laroca, R., Severo, E., Zanlorensi, L. A., Oliveira, L. S., Gonçalves, G. R., Schwartz, W. R., &

Menotti, D. (2018). A robust real-time automatic license plate recognition based on the yolo detector. In2018 International Joint Conference on Neural Networks (IJCNN), 1–10.

LeCun, Y., Bottou, L., Bengio, Y., Haffner, P.,et al.(1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11):2278–2324.

Menotti, D., Chiachia, G., Falcão, A. X., & Neto, V. O. (2014). Vehicle license plate recognition with random convolutional networks. In2014 27th SIBGRAPI Conference on Graphics, Patterns and Images, 298–303.

PIPS, T. (2019). Expert advice on the most effective alpr solutions. http://www.

pipstechnology.com/applications.

Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. (2016). You only look once: Unified, real-time object detection. In Proceedings of the IEEE conference on computer vision and pattern recognition, 779–788.

(43)

Redmon, J. & Farhadi, A. (2017). Yolo9000: better, faster, stronger. InProceedings of the IEEE conference on computer vision and pattern recognition, 7263–7271.

Redmon, J. & Farhadi, A. (2018). Yolov3: An incremental improvement. arXiv preprint arXiv:1804.02767.

Ren, S., He, K., Girshick, R., & Sun, J. (2015). Faster r-cnn: Towards real-time object detection with region proposal networks. InAdvances in neural information processing systems, 91–99.

Stark, F., Hazırbas, C., Triebel, R., & Cremers, D. (2015). Captcha recognition with active deep learning. InWorkshop new challenges in neural computation, 2015:94.

Uijlings, J. R., Van De Sande, K. E., Gevers, T., & Smeulders, A. W. (2013). Selective search for object recognition. International journal of computer vision, 104(2):154–171.

Xiao, J., Hays, J., Ehinger, K. A., Oliva, A., & Torralba, A. (2010). Sun database: Large-scale scene recognition from abbey to zoo. In2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 3485–3492.

Referências

Documentos relacionados

Para disciplinar o processo de desenvolvimento, a Engenharia de Usabilidade, também conceituada e descrita neste capítulo, descreve os métodos estruturados, a

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No

a) AHP Priority Calculator: disponível de forma gratuita na web no endereço https://bpmsg.com/ahp/ahp-calc.php. Será utilizado para os cálculos do método AHP

A participação foi observada durante todas as fases do roadmap (Alinhamento, Prova de Conceito, Piloto e Expansão), promovendo a utilização do sistema implementado e a

Objetivo: Garantir estimativas mais realistas e precisas para o projeto, ao considerar nesta estimativa o esforço necessário (em horas ou percentual do projeto) para

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

As maiores prevalências de realização de parto em instituições públicas foram observadas em gestantes com idade entre 14 e 24 anos, com menor escolaridade, de cor negra, que