2. REVISÃO BIBLIOGRÁFICA
2.3 INTELIGÊNCIA ARTIFICIAL, MACHINE LEARNING E DEEP LEARNING
2.3.4 Deep Learning na deteção de objetos
Com o aumento da investigação no uso de tecnologia de deteção de objetos em cenários reais tais como
veículos autónomos, videovigilância inteligente, deteção facial e várias aplicações de contagem de pessoas, a
procura de sistemas rápidos e precisos de deteção de objetos está a aumentar. Estes sistemas envolvem não só
o reconhecimento e a classificação de cada objeto numa imagem, mas também a localização de cada um deles
nessa imagem (desenhando a caixa de delimitação apropriada à sua volta), tornando a deteção de objetos, uma
tarefa significativamente mais difícil do que a tradicional visão computacional de classificação de imagens.
As abordagens mais bem-sucedidas para deteção de objetos são atualmente extensões de modelos de
classificação de imagens. Com a disponibilização da API de deteção de objetos que a Google lançou para o
Tensorflow (biblioteca opensource para aplicações de ML), foram incorporadas várias arquiteturas e pesos
pré-construídos para alguns modelos específicos:
• Single Shot Multibox Detector (SSD) com MobileNets
• SSD com Inception V2
• Region-Based Fully Convolutional Networks (R-FCN) com Resnet 101
• Faster RCNN com Resnet 101
• Faster RCNN com Inception Resnet v2
• YOLO
Atualmente, quando se fala em deteção de objetos em DL, fala-se no modelo Faster R-CNN.
Para melhor perceber o modelo Faster R-CNN é necessário compreender os seus antecessores, R-CNN e
Fast R-CNN.
2.3.4.1 R-CNN
A R-CNN (Region-based Convolutional Neural Network) proposta por Girshick et al. (2014), é uma
abordagem pioneira que aplica modelos de Deep Learning à deteção de objetos (Figura 17). A sua aplicação
explica-se em três simples passos:
1. Digitalizar a imagem de entrada para possíveis objetos utilizando um algoritmo chamado
“Pesquisa Seletiva” gerando ~ 2000 propostas de regiões.
2. Correr uma rede neuronal convolucional (CNN) no topo de cada uma destas propostas de regiões.
3. Obter o resultado de cada CNN e alimentá-la com um SVM (Support Vector Machine) para
classificar a região e um regressor linear para restringir a caixa delimitadora do objeto, se o objeto
existir.
Assim é necessário propor as regiões, depois extrair as características e, por fim, classificar essas regiões
com base nas suas características. Na sua essência, a deteção de objetos torna-se num problema de classificação
de imagem. Sendo bastante intuitivo, tornava-se um processo excessivamente lento (Girshick, 2015).
2.3.4.2 Fast R-CNN
A FastR-CNN distingue-se do original R-CNN em muitos aspetos. Foi proposto por Girshick (2015), que
melhorou a sua velocidade de deteção através de duas alterações principais:
a) Realizar a extração de características sobre a imagem antes de propor regiões, correndo assim
apenas uma CNN sobre toda imagem em vez de 2000 CNNs sobre 2000 regiões sobrepostas.
b) Substituir o SVM com uma camada softmax (Figura 18), ampliando assim a rede neuronal para
previsões, em vez da criação de um novo modelo.
Figura 18: Função Softmax de regressão da Fast R-CNN (Mahmood, 2018)
O novo modelo assemelha-se ao da Figura 19, em que as regiões geradas são propostas baseadas no último
mapa de características da rede e não a partir da imagem original em si. Como resultado, pode-se treinar apenas
uma CNN para toda a imagem, em vez de treinar muitos SVMs diferentes para classificar cada classe de objeto.
Existe uma única camada “softmax” que produz as probabilidades da classe diretamente obtendo-se apenas
uma rede neuronal para treinar, ao contrário de uma rede neuronal e muitos SVMs.
Figura 19: Modelo Fast R-CNN (Girshick, 2015)
O Fast R-CNN teve um desempenho melhorado em termos de velocidade, contudo resta um importante
congestionamento na pesquisa seletiva para gerar propostas de regiões, que se manifesta ainda um processo
lento.
2.3.4.3 Faster R-CNN
A principal melhoria do modelo Faster R-CNN foi substituir o algoritmo de pesquisa seletiva lento por
uma rede neuronal rápida. Especificamente, é introduzido o RPN (Region Proposal Network) (Ren, He,
Girshick, & Sun, 2017a), que introduz na última camada de uma CNN inicial, uma janela deslizante 3x3 e
move-se através do mapa de características mapeando-o para uma dimensão inferior (ex: 256-d). Para cada
localização da janela deslizante, são geradas múltiplas regiões possíveis com base nas caixas de ancoragem de
relação fixa k (caixas de delimitação padrão) Cada proposta de região consiste em: a) uma pontuação de
“objetividade” para essa região e b) quatro coordenadas que representam a caixa delimitadora da região.
Por outras palavras, observamos cada localização no último mapa de características e consideramos k
caixas diferentes centradas à sua volta: uma caixa alta; uma caixa larga, uma caixa grande, etc. Para cada uma
dessas caixas, indica-se se contém um objeto ou não e quais as coordenadas para essa caixa (Figura 20).
Figura 20: Localização de janela deslizante (Shubham Gandhi, 2019)
As pontuações de 2k representam a probabilidade à saída da função softmax para cada uma das caixas de
delimitação k estar no objeto. Embora a RPN produza coordenadas da caixa delimitadora, este não tenta
classificar qualquer potencial objeto, o trabalho exclusivo é propor regiões de objetos. Se uma caixa de
ancoragem tem uma pontuação de “objetividade” acima de um determinado limite, as coordenadas dessa caixa
são passadas como uma proposta regional. Uma vez concluídas as nossas propostas de região, insere-se
diretamente no que é essencialmente uma Fast R-CNN. Adiciona-se uma camada de “pooling”, algumas
camadas de conexão e finalmente uma camada de classificação “softmax” e um regressor de caixa de
A Faster R-CNN atinge velocidades mais elevadas e excelente precisão. Vale a pena notar que, embora os
modelos futuros tenham feito muito para aumentar a velocidade de deteção, poucos modelos conseguiram
superar o Faster R-CNN por uma margem significativa (Girshick, 2015). Por outras palavras, a Faster R-CNN
pode não ser o método mais simples ou mais rápido para a deteção de objetos, mas ainda assim é um dos
melhores métodos. No caso em questão, o Faster R-CNN do Tensorflow com Inception ResNet é o modelo
mais lento, mas mais preciso. A Faster R-CNN pode parecer complexa, mas o seu design central é o mesmo
da R-CNN original, que é presumir regiões de objetos e depois classificá-las. Este é agora a base para muitos
modelos de deteção de objetos (Figura 21).
Figura 21: Faster R-CNN (Ren, He, Girshick, & Sun, 2017b)
2.3.4.4 R-FCN
A Fast R-CNN melhorou a velocidade de deteção do original ao partilhar uma única computação CNN em
todas as propostas de região (Dai, Li, He, & Sun, 2016). Esta abordagem foi também a motivação por detrás
da R-FCN para aumentar também a velocidade através de maximização do cálculo partilhado.
A R-FCN (Region-based Fully Convolutional Net), partilha 100% dos cálculos em cada uma das saídas,
sendo totalmente convolucional.
Ao realizar a classificação de um objeto (ex. gato), queremos aprender a invariância do local no modelo,
i.e., independentemente onde o gato possa aparecer na imagem, queremos classificá-lo como um gato. Por
outro lado, ao realizar a deteção de objetos, queremos aprender a variância da localização, i.e., caso o gato
esteja no canto superior esquerdo, queremos desenhar uma caixa no canto superior esquerdo. Por isso, se
tentarmos partilhar cálculos convolucionais através de 100% da rede, como é que se equilibra entre a
invariância e variância de localização? A Solução da R-FCN passa por mapas de pontuação sensíveis à posição.
Cada mapa de pontuação sensível à posição representa uma posição relativa de uma classe de objeto. Por
exemplo, um mapa de pontuação pode ser ativado onde quer que detete o topo direito de um gato. Outro mapa
de pontuação pode ser ativado onde observa a parte inferior esquerda de um carro. Essencialmente, estes mapas
de pontuação são mapas de características convolucionais que foram treinados para reconhecer certas partes
de cada objeto.
A R-FCN funciona da seguinte forma (Ren et al., 2017b):
1- Correr uma CNN (neste caso, ResNet) sobre a imagem de entrada.
2- Adicionar uma camada convolucional para gerar uma tabela de pontuação dos “mapas de
pontuação sensíveis à posição” mencionados anteriormente. Devem existir k
2(C+1) mapas de
pontuação, sendo k
2o número de posições relativas para dividir um objeto (por exemplo 3
2para
uma matriz de 3 por 3) e C+1 o número de classes mais o plano (background).
3- Correr uma rede totalmente convolucional de propostas de regiões (RPN) para gerar regiões de
interesse (RoI’s).
4- Para cada RoI (Region of Interest), dividir os mesmos k
2(caixa de deteção) ou sub-regiões como
os mapas de pontuação.
5- Para cada caixa de deteção, verificar a tabela de pontuação para ver se essa caixa corresponde à
posição correspondente de algum objeto. Por exemplo, se o objeto estiver no contentor “superior
esquerdo”, carrega-se o mapa de pontuação que correspondem ao canto “superior esquerdo” de
um objeto e fazer uma média desses valores na região RoI. Este processo é repetido para cada
classe.
6- Uma vez que cada uma das caixas de k
2tem um valor de “correspondência de objeto” para cada
classe, é feita uma média das caixas para obter uma única pontuação por classe.
7- Classificar o RoI com uma função de “softmax” sobre o restante vetor dimensional C+1
Assim, o R-FCN assemelha-se à Faster-R-CNN (Figura 22), com uma RPN a gerar os RoI’s.
Figura 22: Funcionamento do modelo R-FCN (Dai et al., 2016)
De forma a clarificar uma R-FCN, e dando como exemplo a deteção do objeto classificado como uma
pessoa, necessita-se da caixa delimitadora sobre posição do RoI, caso esteja na posição correta (Figura 23) a
saída é verdadeira, caso não esteja a saída será negativa (Figura 24).
Figura 23: Visualização de R-FNC (k x k = 3 x 3) para a categoria pessoa (Dai et al., 2016)
Considerando ainda o mesmo exemplo, a R-FCN verifica cada proposta regional e divide-a em sub-regiões
executando interações sobre as sub-regiões. Caso um número suficiente de sub-regiões seja verdadeiro, o RoI
é classificado como uma pessoa após aplicar a função “softmax” em todas as classes
Figura 24: RoI posicionado incorretamente no objeto (Dai et al., 2016)
Com esta configuração, o R-FCN é capaz de abordar simultaneamente a variância de localização propondo
diferentes regiões de objeto e a invariância de localização, fazendo com que cada proposta de região se refira
à mesma tabela de mapas de pontuação. Estes mapas de pontuação devem aprender a classificar um objeto
classificado gato como um animal gato, independentemente de onde o gato aparece.
A R-FCN é totalmente convolucional, ou seja, todo o cálculo é partilhado por toda a rede fazendo com que
seja muito mais rápida do que Faster R-CNN, mas com uma precisão comparável.
2.3.4.5 SSD
A SSD (Single-Shot Detector), proposta por Liu et al. (2015), tal como o R-FCN proporciona enormes
ganhos de velocidade em relação à Faster R-CNN, mas fá-lo de uma forma diferente.
Os dois primeiros modelos realizam propostas de região e classificações de região em duas etapas
diferentes. Primeiro, usam uma rede de proposta de região para gerar regiões de interesse; depois, usam
camadas totalmente ligadas ou camadas convolucionais sensíveis à posição para classificar essas regiões. O
SSD executa as duas etapas numa só etapa, prevendo simultaneamente a caixa delimitadora e a classe enquanto
processa a imagem.
Concretamente, dada uma imagem de entrada e um conjunto de etiquetas da base da imagem (ground
truth), a SSD faz o seguinte:
1- Passa a imagem através de uma série de camadas convolucionais, produzindo vários conjuntos de
mapas de características em diferentes escalas (por exemplo, 10x10, depois 6x6, depois 3x3, etc.)
2- Para cada localização em cada um destes mapas de características, utiliza um filtro convolucional 3x3
para avaliar um conjunto de caixas delimitadoras padrão mais pequenas. Estas caixas delimitadoras
padrão são essencialmente equivalentes às caixas de ancoragem do Faster R-CNN.
3- Para cada caixa, prevê, simultaneamente, a caixa delimitadora deslocada (offset) e as probabilidades
da classe.
4- Durante o treino, combina a caixa de base da imagem (ground truth box) com estas caixas que foram
previstas baseadas na IoU (Intersect over Union) (Figura 25). A melhor caixa prevista será rotulada
como “positiva”, juntamente com todas as outras caixas que têm uma IoU de confiança superior a 0.5.
Figura 25: Cálculo e representação da IoU (Adrian Rosebrock, 2016)
Tal como os dois modelos anteriores, a rede de propostas de regiões assegurava que tudo o que se tenta
classificar tinha alguma probabilidade mínima de ser um “objeto”, no entanto na SSD evita-se o passo de
filtragem. Classificam-se e desenham-se as caixas delimitadoras a partir de cada posição da imagem, utilizando
Para corrigir este desequilíbrio, a SSD faz duas coisas: i) em primeiro lugar utiliza a função de supressão
não-máxima - NMS (Non Maximum Suppression) (Girshick, 2017) para agrupar caixas sobrepostas numa única
caixa. Noutras palavras, se 4 caixas com formas, tamanhos, etc. semelhantes contiverem no mesmo objeto, a
NMS mantém a que tem a maior confiança e descarta o resto; ii) depois utiliza a técnica extração dura e negativa
- HNM (Hard Negative Mining) para equilibrar as classes durante o treino. Na HNM apenas um subconjunto
de exemplos negativos com maior perda de treino (isto é, falsos positivos) são utilizados em cada iteração do
treino. A SSD mantém uma relação 3:1 entre negativos e os positivos.
A sua arquitetura tem o aspeto apresentado na Figura 26:
Figura 26: Arquitetura do modelo da SSD (Liu et al., 2015)
Existem “camadas de características extra” no final dessa escala em tamanho reduzido. Estes mapas de
características de tamanho variável ajudam a capturar objetos de diferentes tamanhos, conforme o exemplo da
Figura 27.
Figura 27: Mapa de caraterísticas SSD (Liu et al., 2015)
Em mapas de características mais pequenos (por exemplo 4x4), cada célula cobre uma região maior da
imagem, permitindo-lhes detetar objetos maiores. As propostas e classificação da região são realizadas
simultaneamente: dadas p classes do objeto, cada caixa delimitadora é associada com um vetor dimensional
(4+p) que emite 4 coordenadas de caixas “offset” e p probabilidades de classe. Na última etapa, é aplicada a
função “softmax” para classificar o objeto.
A SSD não difere muito dos dois primeiros modelos, apenas salta a fase de “proposta de região”, e
considera cada caixa delimitadora em cada localização da imagem, simultaneamente com a sua classificação.
Como a SSD faz tudo numa única tentativa, teoricamente é mais rápida do que os outros modelos com uma
precisão equivalente.
2.3.4.6 YOLO
O YOLO (You Only Look Once) foi apresentado por Redmon et al. (2016) e, comparativamente com as
outras redes de classificação de propostas analisadas anteriormente, acabam por realizar previsões várias vezes
para várias regiões de uma imagem. A arquitetura YOLO carrega uma vez toda a imagem através de uma FCNN
(Fully Convolutional Neural Network) e a saída de resultado é a previsão de MxM. Esta arquitetura divide a
imagem de entrada na matriz MxM e para cada geração de matriz cria duas caixas delimitadoras e
probabilidades de classe para essas caixas delimitadoras. É mais provável que a caixa delimitadora seja maior
que a própria matriz.
Figura 28: YOLO aplica uma única rede neuronal a toda a imagem (Redmon et al., 2016)
A arquitetura da rede YOLO possui 24 camadas convolucionais (Figura 29), seguidas por 2 camadas
totalmente ligadas. Em vez dos módulos iniciais usados pelo GoogLeNet, usa uma camada de redução 1×1
seguidas por camadas convolucionais 3×3.
O YOLO prevê várias caixas delimitadoras por cada célula da matriz. No momento do treino, pretende-se
apenas que um previsor de caixa delimitadora seja responsável por cada objeto. Atribuímos um previsor para
ser "responsável" por prever um objeto com base no qual a previsão tem a maior IoU atual com a classificação
e etiquetagem dos objetos na imagem (ground truth). Isso leva à especialização entre os previsores da caixa
delimitadora. Cada previsor melhora a previsão de determinados tamanhos, proporções ou classes de objeto,
melhorando a recuperação em geral.
Os sistemas de deteção anteriores usam classificadores ou localizadores para realizar a deteção, neste caso
aplicam o modelo a uma imagem em vários locais e escalas. As zonas com uma pontuação elevada na imagem
são consideradas deteções.
Neste caso, o YOLO usa uma abordagem totalmente diferente. O YOLO consegue detetar cerca de 20
classes de objetos diferentes na mesma imagem ou vídeo (Redmon et al., 2016). Aplica uma única rede
neuronal a toda a imagem, sendo que essa rede divide a imagem em zonas e prevê caixas delimitadoras e
probabilidades para cada região conforme a Figura 28. As caixas delimitadoras são ponderadas pelas
probabilidades previstas. (Redmon et al., 2016)
A análise de erros do YOLO, em comparação com o Fast R-CNN, mostra que o YOLO comete mais erros
de localização. Além disso, o YOLO tem um recall (fração das áreas relevantes recuperadas com sucesso)
relativamente baixo comparado aos métodos baseados em propostas da região. A versão 2 do YOLO tenta
melhorar a recuperação e a localização, mantendo a precisão da classificação.
Ao adicionar a normalização em todas as camadas convolucionais no YOLO, obtiveram mais de 2% de
melhoria no mAP (Mean Average Precision). A normalização em lote (batch normalization) também ajuda a
regularizar o modelo. Com a normalização foi possível remover a saída inesperada do modelo sem o
sobrecarregar.
2.3.4.7 Retinanet
O Retinanet foi apresentado por Lin et al. (2017) fazendo duas melhorias em relação à deteção de objetos
de apenas um estágio tal como o YOLO e a SSD, e pretende ter o mesmo desempenho que as redes neuronais
de dois estágios mantendo a complexidade de computação o mais reduzida possível. Essas melhorias fazem
uso da perda focal FL(Focal Loss) (T.-Y. Lin et al., 2017) e de uma rede de pirâmides de características FPN
(Feature Pyramid Network), o que fez com que fosse capaz de superar os detetores de dois estágios.
A perda focal considera que as perdas mais pequenas são perdas com amostras negativas, focando-se
apenas nas restantes o que melhora a precisão da previsão.
As redes de pirâmides de características são usadas pela Retinanet convencionalmente para identificar
objetos em diferentes escalas. Uma rede de pirâmides de características faz uso da hierarquia piramidal inerente
em várias escalas das redes neuronais convolucionais para criar pirâmides de recursos.
Figura 30: Retinanet (T.-Y. Lin et al., 2017)
"(…)The one-stage RetinaNet network architecture uses a Feature Pyramid Network (FPN) backbone on
top of a feedforward ResNet architecture (a) to generate a rich, multi-scale convolutional feature pyramid (b).
To this backbone RetinaNet attaches two subnetworks, one for classifying anchor boxes (c) and one for
regressing from anchor boxes to ground-truth object boxes (d). The network design is intentionally simple,
which enables this work to focus on a novel focal loss function that eliminates the accuracy gap between our
one-stage detector and state-of-the-art two-stage detectors like Faster R-CNN with FPN while running at faster
speeds (…)"(Figura 30)(T.-Y. Lin et al., 2017).
2.3.4.8 Comparações e análises entre os vários modelos estudados
Segundo (Huang et al., 2017), considerando a velocidade, a utilização de memória na deteção de objetos
em imagens, a melhor arquitetura de deteção é a Faster R-CNN Inception V2. Contudo o YOLO não está
contemplado nesse estudo.
O modelo mais preciso usa R-CNN e é mais rápido usando o Inception ResNet com 300 propostas. É
executado a 1 segundo por imagem (Figura 31).
O modelo mais rápido é a SSD com MobileNet e oferece a melhor troca de precisão entre os detetores mais
rápidos.
A SSD é rápida, mas apresenta desempenho pior para objetos pequenos em comparação com outros.
Para objetos grandes, a SSD pode superar a Faster R-CNN e a R-FCN com precisão e com extratores mais
leves e mais rápidos.
Figura 31: Comparação de modelos para deteção de objetos
(Hui, 2018)
Para a implementação e desenvolvimento deste projeto, que se vai focar na deteção de objetos,
nomeadamente piscinas em imagens áreas, pretende-se usar a arquitetura e modelo que seja mais preciso.
Segundo (Benjdira, Khursheed, Koubaa, Ammar, & Ouni, 2019), num estudo feito na deteção de automóveis
em imagens aéreas com a FasterR-CNN e o YOLOv3, o YOLOv3 supera a Faster R-CNN em sensibilidade e
tempo de processamento, embora sejam comparáveis na precisão (Figura 32).
Figura 32: Comparação entre a Faster R-CNN e YOLOv3 (Benjdira et al., 2019)
Atualmente o modelo RetinaNet consegue alcançar uma precisão superior relativamente aos outros
modelos (T.-Y. Lin et al., 2017). Além disso, consegue balancear entre a velocidade e precisão de acordo com
diferentes tamanhos da rede. Na velocidade (ms) e precisão (AP) no dataset COCO (Figura 33), podemos ver
que o RetinaNet é superior a todos os outros detetores de corrente.
Figura 33: Performance do modelo da Retinanet (T.-Y. Lin et al., 2017)
A investigação levada a cabo neste estudo permitiu perceber os fundamentos de Machine Learning e Deep
Learning. Ao comparar vários tipos de modelos de Deep Learning para deteção de objetos, foi possível
escolher os três modelos que mais se adequam à investigação em curso, sendo eles o FasterR-CNN, o YOLOv3
e o Retinanet.
Classificação de imagens
O processo de classificação de imagens tem como principal objetivo identificar o(s) objeto(s) existente(s)
em determinada imagem, etiquetá-lo(s) e descrevê-lo(s) de forma semântica. Normalmente as plataformas que
permitem essa classificação recorrem a algoritmos de Machine Learning para etiquetar a imagem de forma
rápida e automática, atribuindo-lhe um determinado grau de confiança.
Existem várias abordagens tecnológicas na classificação de objetos em imagens assim como alguns estudos
comparativos (Abu, Indra, Abd Rahman, Sapiee, & Ahmad, 2019). Contudo, e no interesse do tempo que
existia para o desenvolvimento deste trabalho, decidimos escolher e analisar um conjunto reduzido de
abordagens e priorizar a análise apenas de algumas das suas caraterísticas. Embora a velocidade e precisão
possam ser dos critérios mais importantes num estudo desta natureza, existem muitos outros critérios de
sucesso que se poderiam confrontar. Contudo quisemos tornar este estudo simples Tabela 2.
Tabela 2: Sistemas de Classificação de Imagens