• Nenhum resultado encontrado

4 SISTEMA EMBARCADO PARA EXTRAÇÃO E RECONHECIMENTO DE

6.2 Metodologia de apuração dos resultados

6.2.1Introdução

Conforme mencionado na Seção 5.2.2, num primeiro momento houve intervenção humana no processamento do conjunto de entradas no intuito de classificar as imagens e disponibilizar dados confiáveis para comparação. Posteriormente, com base nestas classificações e dados de comparação, o conjunto de entrada foi processado de forma automática, provendo os resultados discutidos em seguida.

6.2.2Os dados de entrada

O conjunto de dados utilizado tanto no fornecimento de parâmetros para a construção da versão final dos sistemas, bem como na obtenção dos resultados fornecidos pelos mesmos é composto por 3.000 entradas. Cada entrada consiste numa imagem da parte traseira de um veículo no momento de sua passagem por um ponto de controle, bem como do respectivo arquivo de coordenadas referentes à possível localização da placa do mesmo na imagem. A Figura 6.1 ilustra algumas das imagens que compõem o conjunto de entradas.

Figura 6.1 – Ilustração de algumas das imagens que compõem o conjunto de dados de entradas.

Entretanto, por motivos que vão desde a existência de elementos que comprometem a visibilidade da placa (desgaste, sujeira, ferrugem, etc.) até a falha em algum ponto do processamento, apenas um subconjunto destas 3.000 entradas pôde ser considerado. Para tanto, durante a etapa de processamento semi-automatizado foram atribuídas classificações a cada uma das entradas, permitindo assim que apenas aquelas onde a placa foi corretamente localizada fossem utilizadas na apuração de resultados.

O método de classificação utilizado é composto por dois níveis, onde o primeiro define classes mais abrangentes e o segundo as mais específicas, conforme ilustrado pelo Quadro 6.1, onde as células contendo o símbolo “–“ indicam combinações impossíveis. Neste sentido, dentre os motivos que não conduziram à correta localização de uma placa pode-se citar déficits do algoritmo de localização (Figura 6.2(a)), bem como a inexistência/existência parcial (Figura 6.2(b)) ou comprometimento (Figura 6.2(c)) da placa na imagem. Já em relação aos casos onde a placa foi corretamente localizada, duas situações negativas foram detectadas: visibilidade comprometida ((Figura 6.2(d)-(e)) e déficit do algoritmo de binarização (Figura 6.2(f)-(g)). O descarte sumário de entradas ocorreu nos casos de placas de motocicletas ou com tonalidades invertidas (fundo escuro, letras claras, como na (Figura 6.2(h)). Classificação primária Localizada totalmente Localizada parcialmente Não localizada Ignorada Totalmente visível 1112 39 280 – Parcialmente visível – 24 138 – Não visível – – 140 – Comprometida 238 8 492 – Binarização deficitária 289 – – – Motocicleta – – – 147 Tonalidades invertidas – – – 93 C la ss if ic a çã o S ec u n d á ri a 1639 71 1050 240

Quadro 6.1– Classficações apuradas para o conjunto original de entradas a partir do emprego da classificação de dois níveis.

Assim sendo, do conjunto inicial de 3.000 entradas, 1.391 foram descartadas por conta da impossibilidade de localização completa das placas ou de restrições deste sistema. Das 1.639 entradas restantes, 238 foram desconsideradas por apresentarem comprometimentos que impossibilitariam o seu reconhecimento completo. Desta forma, o conjunto considerado na apuração de resultados é composto por 1.401 entradas. Caso seja levado em consideração que o processo de binarização, embora necessário, não constitui o sistema em si, então o conjunto a ser considerado é composto por 1.112 entradas.

(a) (b) (c)

(d) (e) (f) (g) (h)

Figura 6.2 – Exemplos de entradas categorizadas a partir do emprego da classificação de dois níveis.

6.2.3A interface de apuração de resultados

Para que a apuração dos resultados de ambas as versões do sistema pudesse ser realizada de uma forma automática, o primeiro passo consistiu na elaboração de um fluxo comum de processamento. Tal fluxo, conforme ilustrado na Figura 6.3, é composto por uma preparação inicial dos dados de entrada, seguida pelo processamento dos mesmos e culminando com a apuração e armazenamento dos dados de desempenho. No caso da apuração de resultados a partir do sistema embarcado, a etapa de processamento é precedida pelo envio da imagem binarizada para o FPGA via canal RS-232 e sucedida pelo recebimento dos resultados processados no dispositivo pelo mesmo meio. No que diz respeito ao tempo de execução de cada sistema, o mesmo se refere apenas aos blocos responsáveis pelas tarefas de extração de reconhecimento.

Figura 6.3 – Fluxograma dos processos empregados na apuração dos resultados dos sistemas.

A partir do fluxo discutido acima foi implementada a interface ilustrada na Figura 6.4. Do ponto de vista do sistema sobre plataforma x86, tal opção unifica e automatiza os processos de extração e reconhecimento implementados previamente de maneira separada. Já em relação ao sistema embarcado, tal opção consiste apenas numa forma de fornecimento de dados de entrada e recuperação de resultados.

No que diz respeito aos resultados, os referentes ao desempenho de reconhecimento das placas foram ambos apurados a partir dos padrões de saída fornecidos pelas RNAs. Já em relação ao tempo de execução, a apuração de desempenho é um pouco menos trivial. No caso do sistema embarcado, o mesmo foi obtido sem maiores dificuldades pela utilização de contadores. Entretanto, quando do emprego da mesma abordagem no sistema sobre plataforma x86, corre-se o risco dos resultados serem influenciados por outros aplicativos ou pelo próprio sistema operacional.

Desta forma, no intuito de minimizar ao máximo tal interferência, foi empregado o aplicativo AQTime, versão 5.3 (versão de avaliação), fornecido pela empresa AutomatedQA

Corp. Tal ferramenta consiste num perfilador que possibilita a obtenção de várias medidas de

desempenho de um software, dentre elas o tempo de execução de cada uma das funções que o constituem. Neste sentido, dentre os vários contadores disponíveis existe um denominado

User Time, que computa apenas o tempo gasto na execução de código em modo de usuário,

ignorando tempo gasto em modo kernel, com outras threads ou na troca entre as mesmas (AQTIME, 2007). Entretanto, mesmo ignorando o tempo gasto relativo a outras threads, a atualização das memórias cache por conta de uma troca de thread é computada pelo contador

User Time. Assim sendo, mesmo com a utilização do perfilador, reduziu-se ao máximo o

Figura 6.4 – Interface da opção construída sobre plataforma x86 para a apuração de desempenho de ambas as versões do sistema.