Universidade da Beira Interior Departamento de Informática Nº 9 - 2019: Sistema de análise inteligente de imagem para detecção, identificação e seguimento de objectos em tempo real em imagens de video Elaborado por: Enzo Pietro Garcia Prata Graciano Felipe Nº35420 Orientador: Professor Doutor Pedro Domingues de Almeida 29 de Junho de 2019 Agradecimentos Em primeiro lugar queria agradecer ao meu orientador, Professor Doutor Pedro Domingues de Almeida que sempre me ajudou e acompanhou durante a realização do projeto. Gostaria de aproveitar também para agradecer todos os meus colegas e amigos que sempre me motivaram a finalizar este projeto. Por último, mas não menos importante, gostaria de agradecer a minha família, nomeadamente os meus pais que sempre me apoiaram em todos os momentos da minha licenciatura. i Conteúdo Conteúdo iii Lista de Figuras v 1 Introdução 1 1.1 Enquadramento . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 Organização do Documento . . . . . . . . . . . . . . . . . . . . . 2 2 Estado da Arte 5 2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Region Proposals . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2.1 Region Convolutional Neural network (R-CNN) . . . . . 6 2.2.2 Fast R-CNN . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Single Shot MultiBox Detector . . . . . . . . . . . . . . . . . . . 7 2.4 You Only Look Once (YOLO) . . . . . . . . . . . . . . . . . . . . 8 2.5 Algoritmos de Seguimento . . . . . . . . . . . . . . . . . . . . . 8 2.6 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3 Tecnologias e Ferramentas Utilizadas 11 3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3.1 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3.2 PyQt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3.3 Application Programming Interface (API) de deteção de objetos da TensorFlow . . . . . . . . . . . . . . . . . . . 13 3.3.4 Open Source Computer Vision Library (OpenCV) . . . . . 14 3.4 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 iii iv CONTEÚDO 4 Implementação 17 4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2 Implementação do Sistema . . . . . . . . . . . . . . . . . . . . . 17 4.3 Deteção de Objetos . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.4 Seguimento de Objetos . . . . . . . . . . . . . . . . . . . . . . . 25 5 Conclusões e Trabalho Futuro 29 5.1 Conclusões Principais . . . . . . . . . . . . . . . . . . . . . . . . 29 5.2 Problemas Encontrados . . . . . . . . . . . . . . . . . . . . . . . 29 5.3 Trabalho Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6 Manual de Instalação 31 6.1 Instalação de dependências do TensorFlow . . . . . . . . . . . . . 31 Bibliografia 33 Lista de Figuras 2.1 Passos da deteção de objetos em uma rede neural convolucional por regiões [8] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1 Ilustração do PyQt . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 Modelos de deteção de objetos pré-treinados fornecidos pela Ten- sorflow [1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.1 Ilustração da interface principal do sistema . . . . . . . . . . . . . 18 4.2 Vídeos disponíveis para a deteção e seguimento de objetos . . . . 18 4.3 Ilustração da interface lateral do sistema . . . . . . . . . . . . . . 20 4.4 Output do resultado da deteção de objetos através da webcam do computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.5 Output da deteção de objetos do vídeo selecionado na interface . . 22 4.6 Output da janela de seleção do objeto desejado . . . . . . . . . . 23 4.7 Output do resultado da adição do objeto desejado ao sistema . . . 23 4.8 Output do resultado da deteção de objetos na imagem . . . . . . . 24 v Lista de Excertos de Código 4.1 Deteção de objetos na frame do conteúdo e a modificação da frame após a deteção . . . . . . . . . . . . . . . . . . . . . . . . 25 4.2 Extração de informação relevante sobre os objetos detetados . . . 26 4.3 Cálculo e a verificação das distâncias entre os retângulos envolventes 26 4.4 Adição de um novo objeto para ser rastreado pelo algoritmo de seguimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 vii Acrónimos API Application Programming Interface CNN Convolutional Neural network CPU Central Processing Unit GB Gigabyte GPU Graphics Processing Unit HD High-definition KCF Kernelized Correlation Filters mAP mean Average Precision MOSSE Minimum Output Sum of Squared Error MIL Multiple Instance Learning OpenCV Open Source Computer Vision Library PLN Processamento de língua natural RAM Random-access Memory R-CNN Region Convolutional Neural network ReLU Rectified Linear Unit TLD Tracking, learning and Detection YOLO You Only Look Once ix Capítulo 1 Introdução 1.1 Enquadramento Este projeto foi elaborado no âmbito da Unidade Curricular de Projeto da Li- cenciatura em Informática Web da Universidade da Beira Interior no ano letivo 2018/19. Várias áreas são abrangidas por este projeto, tais como Inteligência Artificial, Visão Computacional, Reconhecimento de Objetos, Processamento de Imagem. Este projeto visa o desenvolvimento de um sistema de análise de imagens vídeo em tempo real capaz de detetar a presença de objetos de interesse nessas nessas imagens, de fazer uma identificação preliminar desses objetos e de fazer a sua marcação e o seu seguimento na sequência de imagens vídeo. A análise de imagens vídeo em tempo real não representa só a análise de imagens de um vídeo, mas como também a análise de imagens vídeo captadas de uma câmara de vídeo. 1.2 Motivação Uma das áreas abrangidas por este projeto, a Inteligência Artificial, constitui uma área muito atual e importante para o futuro de vários campos dependentes da mesma, tais como o Reconhecimento de Objetos, Visão Computacional, Reco- nhecimento Facial. Outro fator que influenciou a decisão foi também o meu interesse no tema deste projeto, sendo a Inteligência Artificial uma área bastante interessante relati- vamente às aplicações práticas possíveis de implementar, nomeadamente: • Carros Autónomos • Robótica 1 2 Introdução • Sistemas de reconhecimento facial • Sistemas de deteção de objetos • Seguimento de objetos • Sistemas de reconhecimento de objetos O resultado final deste projeto enquadra-se com as últimas três aplicações prá- ticas mencionadas, incorporando componentes de cada uma de modo a concretizar as funcionalidades respetivas no sistema de análise. 1.3 Objetivos O objetivo principal do projeto é a realização de um sistema de análise inteligente de imagem para deteção, identificação e seguimento de objetos em tempo real em imagens de vídeo. Este sistema seria capaz de detetar, em tempo real, os objetos de interesse em imagens de vídeo, de identificar e classificar esses objetos dentro de algumas clas- ses de objetos de interesse, e de efetuar a marcação e o seguimento dos respetivos objetos identificados na sequência de imagens vídeo. A informação relevante pro- veniente destas operações será anotada nas sequências de imagens vídeo. 1.4 Organização do Documento De modo a refletir o trabalho realizado, este documento encontra-se estruturado da seguinte forma: 1. O primeiro capítulo – Introdução – apresenta o projeto, a motivação para a sua escolha, o enquadramento para o mesmo, os seus objetivos e a respetiva organização do documento. 2. O segundo capítulo – Estado da Arte – apresenta o estado atual de siste- mas de deteção, de identificação e de seguimento de objetos em tempo real. Também são descritos e explicados os sistemas estudados. 3. O terceiro capítulo – Tecnologias e Ferramentas Utilizadas – descreve os hardware e o software utilizados ao longo do desenvolvimento do projeto. 4. O quarto capítulo – Implementação – indica o estudo e implementações feitas ao longo do desenvolvimento do projeto. Também descreve todos os excertos de código desenvolvidos para cada funcionalidade do sistema neste projeto. 1.4 Organização do Documento 3 5. O quinto capítulo – Conclusões e Trabalho Futuro – apresenta as con- clusões do trabalho realizado, assim como tarefas que ficaram por realizar descrevendo também o que poderia ser melhorado. Acrescentando suges- tões de trabalho futuro e alguns problemas encontrados. 6. O sexto capítulo – Manual de Instalação – descreve como instalar os re- cursos adicionais necessários para o funcionamento correto do sistema. Capítulo 2 Estado da Arte 2.1 Introdução O tema deste projeto é a deteção, identificação e seguimento de objetos em tempo real em imagens de vídeo, o que implica estudar o estado da arte de sistemas de inteligência artificial de deteção, identificação e seguimento de objetos. A deteção de objetos tornou-se um termo comum para técnicas de classificação e seguimento de objetos em uma imagem. Estas técnicas tornam possível distinguir e detetar a presença de objetos de interesse em imagens, através das suas formas, cor e outras características do objeto. Neste capítulo será abordado os métodos de deteção e identificação de objetos em imagens de vídeo mais relevantes e os diferentes algoritmos que existem para fazer o seguimento de objetos detetados. Este capítulo está estruturado da seguinte maneira: 1. Secção 2.2 – Region Proposals – descreve o método de deteção e identifi- cação de objetos em imagens de vídeo e uma breve descrição de como ele funciona. 2. Secção 2.3 – Single Shot MultiBox Detector – descreve o método de dete- ção e identificação de objetos em imagens de vídeo e uma breve descrição de como ele funciona. 3. Secção 2.4 – You Only Look Once (YOLO) – descreve o método de deteção e identificação de objetos em imagens de vídeo e uma breve descrição de como ele funciona. 4. Secção 2.5 – Algoritmos de Seguimento – indica o estudo e implemen- tações feitas ao longo do desenvolvimento do projeto. Também descreve 5 6 Estado da Arte todos os excertos de código desenvolvidos para cada funcionalidade do sis- tema neste projeto. 5. Secção 2.6 – Conclusões – apresenta as conclusões deste capítulo. 2.2 Region Proposals Antes de passar à explicação dos vários métodos de deteção e identificação de objetos em imagens de vídeo baseadas em regiões, é necessário explicar o que é uma rede neural convolucional ( Convolutional Neural network (CNN)). As redes neurais convolucionais são os blocos básicos de construção para a aplicação e análise de imagens na era da inteligência artificial. A arquitetura da rede neural convolucional é inspirada por processos bioló- gicos, particularmente o padrão de conectividade entre os neurónios no cérebro humano, simulando assim o comportamento de um córtex visual. Uma rede neural convolucional consiste em uma camada de entrada e saída, bem como várias camadas ocultas. Essas camadas ocultas consistem em vá- rias camadas, tais como: camadas convolucionais, a camada Rectified Linear Unit (ReLU), camadas de agrupamento, camadas totalmente conectadas e cama- das de normalização. Juntos, todos estes componentes auxiliam a rede em diversas tarefas, como o reconhecimento de imagem e vídeo, os sistemas de recomenda- ção, a classificação de imagens, a análise de imagens médicas e o Processamento de língua natural (PLN) [2]. Desta maneira o algoritmo pode captar uma imagem de entrada, atribuir um peso a vários aspetos da imagem e ser capaz de diferenciar um do outro. 2.2.1 Region Convolutional Neural network (R-CNN) A rede neural convolucional por regiões (R-CNN), é uma abordagem à deteção de objetos. A deteção de objetos através de uma rede neural convolucional por regiões apresenta 3 módulos. O primeiro recebe uma imagem como input e gera regiões independentes através de várias técnicas de extração de regiões, sendo estas as regiões candidatas. O segundo módulo constitui uma rede neural convo- lucional que tem como função extrair as características das regiões candidatas. O terceiro classifica, recorrendo às características extraídas no segundo módulo, as regiões da imagem em classes. 2.3 Single Shot MultiBox Detector 7 Figura 2.1: Passos da deteção de objetos em uma rede neural convolucional por regiões [8] A figura 2.1 mostra os passos desta abordagem de deteção de objetos. Após o input de uma imagem, propostas de regiões são extraídas da imagem, a rede neural convolucional deteta as características dessas regiões e por fim classifica as mesmas. 2.2.2 Fast R-CNN Devido ao facto de cada proposta de região extraída da imagem ter de passar por uma rede neural convolucional a rede neural convolucional por regiões apresenta velocidades reduzidas na deteção de objetos. Desta forma o Fast R-CNN propõe uma solução a este obstáculo, ao invés de executar uma rede neural convolucio- nal para cada proposta de região, o processamento das camadas convolucionais é partilhado por todas as regiões, aumentando significativamente a performance [3]. 2.3 Single Shot MultiBox Detector Single Shot MultiBox Detector é uma abordagem à deteção de objetos que utiliza apenas uma rede neural convolucional. A principal diferença entre o Single Shot MultiBox Detector e outras abordagens baseadas em redes neurais convolucionais por regiões é o facto de esta abordagem não realizar a fase da extração de regiões de interesse. Tornando-a mais rápida em comparação às redes R-CNN, permi- tindo assim aplicação em vídeo em tempo real de 20 a 25 frames por segundo. No entanto, com o benefício da velocidade vem uma diminuição da precisão dos resultados [9]. 8 Estado da Arte 2.4 YOLO O YOLO recebe o seu nome devido a funcionar de forma diferente às outras abor- dagens, pois utiliza apenas uma única rede neural convolucional para estimar a lo- calização de todas as caixas de delimitação dos objetos na imagem em simultâneo. A vantagem principal desta abordagem em comparação às outras é a velocidade, apresentando velocidades superiores em relação ao Fast R-CNN e ao Single Shot MultiBox Detector [13]. YOLO é capaz de processar vídeo em tempo real a 45 frames por segundo. Contudo, esta abordagem apresenta certos obstáculos como a dificuldade em de- tetar de objetos pequenos numa imagem, por exemplo, esta abordagem teria difi- culdades na deteção de um bando de pássaros. 2.5 Algoritmos de Seguimento Nas áreas da visão computacional e da inteligência artificial, o seguimento de objetos é um termo ambíguo que pode englobar várias ideias como também vários algoritmos. Para efetuar seguimento de objetos é necessário localizar os objetos em imagens vídeo sucessivas. Normalmente algoritmos de seguimento de objetos são mais rápidos do que algoritmos de deteção de objetos, devido ao facto do algoritmo de seguimento poder utilizar toda a informação que recolheu do objeto desde a deteção inicial. Esta informação consiste na localização do objeto na ultima frame , a direção da trajetória do objeto e a sua velocidade. A biblioteca Open Source Computer Vision Library (OpenCV) contém vários algoritmos de seguimento, cada um com os seus benefícios e limitações [12]. No total foram estudados 7 algoritmos de seguimento: • CRST Tracker • Kernelized Correlation Filters (KCF) Tracker • BOOSTING Tracker • Multiple Instance Learning (MIL) Tracker • Tracking, learning and Detection (TLD) Tracker • MEDIANFLOW Tracker • Minimum Output Sum of Squared Error (MOSSE) Tracker