TCC Nicolas 2023

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 54

SERVIÇO PÚBLICO FEDERAL

MINISTÉRIO DA EDUCAÇÃO
INSTITUTO FEDERAL DE MATO GROSSO
CAMPUS CUIABÁ – CEL. OCTAYDE JORGE DA SILVA
DEPARTAMENTO DE COMPUTAÇÃO
BACHARELADO EM ENGENHARIA DA COMPUTAÇÃO

Nicolas Timoteu Cuerbas

ESTUDO DE CASO DA DETECÇÃO DE LOGOMARCA DO


IFMT UTILIZANDO DEEP LEARNING

Cuiabá - MT
Junho 202
Nícolas Timoteu Cuerbas

ESTUDO DE CASO DA DETECÇÃO DE LOGOMARCA DO


IFMT UTILIZANDO DEEP LEARNING

Trabalho de Conclusão de Curso apresentado


ao Curso Engenharia de Computação do
campus Cuiabá – Octayde Jorge da Silva do
Instituto Federal de Educação, Ciência e
Tecnologia de Mato Grosso como requisito
para a obtenção do título de Bacharel em
Engenharia da Computação.

Orientador: Prof. Me. Matheus Candido Teixeira

Cuiabá - MT
Junho 2023
Dados internacionais de catalogação na fonte

T585e Timoteu Cuerbas, Nicolas


Estudo De Caso Da Detecção De Logomarca Do Ifmt Utilizando Deep Learning
/ Nicolas Timoteu Cuerbas – Cuiaba – MT, 2023.
54 f. : il. color.

Orientador(a) Prof. Me. Matheus Candido Teixeira


TCC (Graduação). (CBA - Bacharel em Engenharia da Computação) – Instituto
Federal de Educação, Ciência e Tecnologia de Mato Grosso, Campus Cuiabá, 2023.
Bibliografia incluída

1. YOLO. 2. Deep Learning. 3. Detecção de objetos. I. Título.

Ficha catalográfica elaborada automaticamente de acordo com os dados fornecidos pelo(a) autor(a).

Bibliotecário(as): Jorge Nazareno Martins Costa (CRB1-3205)


Nícolas Timoteu Cuerbas

ESTUDO DE CASO DA DETECÇÃO DE LOGOMARCA DO


IFMT UTILIZANDO DEEP LEARNING

Trabalho de Conclusão do Curso de Engenharia da Computação, submetido à Banca


Examinadora composta pelos professores do Departamento de Informática do Instituto
Federal de Educação, Ciência e Tecnologia de Mato Grosso, Campus Cuiabá – Octayde Jorge
da Silva, como parte dos requisitos necessários à obtenção do título de Tecnólogo.

Aprovado em: 23 de junho de 2023.

______________________________________
Prof. Me. Matheus Cândido Teixeira – Orientador
Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso

______________________________________
Prof. Dr. Constantino Dias da Cruz Neto
Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso

______________________________________
Prof. Dr. Juliana Fonseca Antunes
Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso

Cuiabá - MT

Junho 2023
DEDICATÓRIA

À Adrielle, pessoa com quem amo partilhar a


vida. Com você tenho me sentido mais vivo de
verdade. Obrigado pelo carinho, a paciência e
por sua capacidade de me trazer paz na
correria de cada semestre.
AGRADECIMENTOS

Não posso deixar de agradecer aos meus amigos e entes queridos que me apoiaram
emocionalmente durante todo o processo de pesquisa e redação deste trabalho. Os
encorajamentos foram fundamentais para superar os desafios. Por fim, expresso minha
profunda gratidão a todos os que contribuíram direta ou indiretamente para este trabalho. Seu
apoio e incentivo desempenharam um papel vital na minha jornada acadêmica.
RESUMO

Este trabalho apresenta uma abordagem para detecção de objetos utilizando a rede neural
YOLOv8, com foco na detecção da logo da instituição IFMT. A metodologia envolveu a
aquisição de imagens de uniformes para a construção de um conjunto de dados, seguida pela
anotação das imagens e treinamento do modelo. Posteriormente, foi realizada a implantação
do modelo utilizando FastAPI. Os resultados obtidos indicaram que não houve diferença
significativa em termos de precisão entre as versões YOLOv8n e YOLOv8s. No entanto,
observou-se que o YOLOv8n apresentou uma vantagem em relação ao tamanho, sendo quase
4 vezes menor que o YOLOv8s. E o tempo de inferência do YOLOv8n sendo quase a metade
do tempo. Este trabalho contribui fornecendo um guia prático para a construção de um banco
de imagens, treinamento de modelos de detecção de objetos e sua implantação.

Palavras-chaves: YOLOv8, Detecção de objetos, FastAPI.


ABSTRACT

This work presents an approach to object detection using the YOLOv8 neural network,
focusing on detecting the logo of the IFMT institution. The methodology involved acquiring
uniform images to build a dataset, followed by image annotation and model training.
Subsequently, the model was deployed using FastAPI. The results obtained indicated no
significant difference in accuracy between the YOLOv8n and YOLOv8s versions. However, it
was observed that YOLOv8n had an advantage in terms of size, being nearly 4 times smaller
than YOLOv8s. Additionally, the inference time of YOLOv8n was almost half the time. This
work contributes by providing a practical guide for building an image database, training
object detection models, and their deployment.

Keywords: YOLOv8, Object detection, FastAPI.


LISTA DE ILUSTRAÇÕES

Figura 1 A hierarquia URI …………………………………………………….. 16

Figura 2 Sintaxe da URI .……………………………………………………….. 17

Figura 3 Comparação com pooling e WebSocket ……………………………… 19

Figura 4 Neurônio de McCullock e Pitts ………………………………………. 19

Figura 5 Operação de filtro convolucional …………………………………… .. 21

Figura 6 Exemplo de rede Neural Convolucional …………………………… . . 21

Figura 7 A imagem mostra quatro objetos com as caixas delimitadoras ……… . 22

Figura 8 O cálculo do IoU …………………………………………………….. 24

Figura 9 Previsão com limite definido em 0,5 ………………………………… . 24

Figura 10 Detecção de multi-escala do algoritmo YOLOv3 ……………………. 26

Figura 11 Composição da arquitetura YOLOv5 ……………………………… . 27

Figura 12 Fluxograma do trabalho …………………………………………… …. 29

Figura 13 Seção álbuns do site do Instituto Federal Mato Grosso Campus


Cuiabá-MT ………………….…………………………………………. 30
Figura 14 Secção álbum da página na Rede Social Facebook ………………… .. 30

Figura 15 Interface da ferramenta RoboFlow no processo de anotação . . . . . . … 31


Figura 16 Estrutura de divisão da base de dados para o treinamento do modelo
antes do argumentos …………………………………………………… 32
Figura 17 Conjunto de Dados após a adição dos argumentos ………………… … 32

Figura 18 Código inserido para baixar o conjunto de dados criados ………… …. 32

Figura 19 Interface da plataforma de desenvolvimento Google Colab ……… ….. 33

Figura 20 Implementação de reconhecimento de objetos para imagem…............. 34


Figura 21 Implementação de reconhecimento de objetos para vídeo …………… 34

Figura 22 Implementação de reconhecimento de objetos em tempo real com a


Webcam. …………………………… …………………………………. 35
Figura 23 Trecho de código para utilização da API do Comet ………………..…. 36

Figura 24 Matriz de confusão do modelo YOLOv8n (a), YOLOv8s (b)................ 38

Figura 25 Predição da imagem nos modelos YOLOv8n(a), e YOLOv8s(b) .…… 38

Figura 26 Diferença das caixas delimitadoras identificadas erroneamente entre os


modelos. YOLOv8n(a), e YOLOv8s(b) ……………………………… 39
Figura 27 Diferença na duração do vídeo de saída .…………………………….. 40
LISTA DE SIGLAS

ANN Artificial Neural Networks (redes neuronais artificiais)


AP Average Precision (precisão média)
API Application Programming Interface (Interface de Programação de Aplicação)
CNN Convolutional neural networks (rede neural convolucional)
CSP Cross Stage Partial Networks
DL Deep learning (aprendizado profundo)
DNN Redes neurais profundas
DP Deep learning (aprendizagem profunda)
FN False Negative (falso negativo)
FP False Positive (Falso positivo)
FPN Feature Pyramid Networks
HTML HyperText Markup Language
HTTP Hypertext Transfer Protocol (Protocolo de Transferência de Hipertexto)
IA Inteligências Artificiais
IFMT Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso
IoU Intersection over Union (Interseção sobre a União)
JIFMT Jogos do Instituto Federal de Mato Grosso
mAP Mean Average Precision (média da precisão média)
NMS Non-Maximum Suppression
PAN Path Aggregation Network
R-CNN Region-based Convolutional Neural Networks
REST Representational State Transfer (Transferência de Estado Representacional)
RGB RED, GREEN, BLUE (Vermelho, Verde, Azul)
SPP Spatial Pyramid pooling
TN True Negative (verdadeiro negativo)
TP True Positive (verdadeiro positivo)
UDI Universal Document Identifier (Identificador de recursos uniforme)
URI Uniform Resource Identifier (Identificador Uniforme de Recursos)
URL Uniform Resource Locator (localizador uniforme de recursos)
WWW World Wide Web (Rede Mundial de Computadores)
XML eXtensible Markup Language
XOR Exclusive OR (OU Exclusivo)
YOLO You only look once
LISTA DE TABELAS

Tabela 1 Matriz de confusão………………………………………………… 23

Tabela 2 Comparativo de métricas entre os modelos YOLOv8n e YOLOv8s 37


SUMÁRIO

1 INTRODUÇÃO 13
1.1 PROBLEMA DE PESQUISA 13
1.2 OBJETIVO GERAL 14
1.3 OBJETIVO ESPECÍFICO 14
1.4 CONTRIBUIÇÕES 14
1.5 ORGANIZAÇÃO DO TRABALHO 15
2 FUNDAMENTAÇÃO TEÓRICA 16
2.1 PYTHON 16
2.2 API REST 16
2.3 WEB SCRAPING 17
2.4 WEBSOCKET 18
2.5 APRENDIZADO PROFUNDO 19
2.6 REDE NEURAL CONVOLUCIONAL 21
2.7 DETECÇÃO DE OBJETOS 22
2.8 MATRIZ DE CONFUSÃO 22
2.9 INTERSECTION OVER UNION 23
2.10 MEAN AVERAGE PRECISION 24
2.11 YOLO 25
3 METODOLOGIA 29
3.1 AQUISIÇÃO DAS IMAGENS 29
3.2 ANOTAÇÃO DAS IMAGENS 31
3.3 TREINAMENTO DO MODELO 32
3.4 IMPLEMENTAÇÃO 33
4 RESULTADOS E DISCUSSÕES 36
4.1 RESULTADOS DO TREINO 36
4.2 RESULTADOS DA IMPLEMENTAÇÃO 39
4.3 LIMITAÇÕES 40
41
5 CONCLUSÃO 42
6 TRABALHOS FUTUROS 43
REFERÊNCIAS 44
ANEXO 49
ANEXO A - Diagrama da arquitetura YOLOv8 50
APÊNDICE 51
Apêndice A - Link para código fonte da aplicação 52
13

1 INTRODUÇÃO

Segundo Formiga (2014), mesmo o uniforme sendo utilizado desde os primórdios da


história, não existem muitos estudos sobre. Estudos apontam que o primeiro desenho de um
uniforme escolar surgiu em 1855. Sua implantação tinha como objetivo barrar a entrada do
fora para dentro da escola. O uniforme também tem como objetivo de aproximação dos alunos
com a história da instituição e da memória da instituição.

O uniforme também tem como objetivo um controle disciplinar dos alunos. O


uniforme é obrigatório na instituição por decreto (IFMT, 2018), pensando em uma aplicação
que seja capaz de identificar se os alunos estão vestindo o uniforme adequado.

A identificação do logo de uma instituição de ensino no uniforme escolar é um fator


importante para fortalecer a sua identidade visual. Nesse contexto, a aplicação de
processamento de algoritmo de detecção de objetos em tempo real pode ser uma solução
eficaz para automatizar esse processo de identificação do logo no uniforme dos discentes.

Com a tecnologia ficando cada vez mais sofisticada, com o rápido crescimento das
Inteligências Artificiais (IA), a área que mais se beneficiou foi a de aprendizagem profunda,
deep learning (DP). A qual foi possível memorizar e identificar padrões em texto, imagens, e
outros dados. Podendo estabelecer conexões entre dados por meio da análise e processar uma
grande quantidade de informações (Wu, 2021). Em termos de reconhecimento de objetos, o
algoritmo de deep learning tem como representante a rede neural convolucional,
convolutional neural networks (CNNs), que tem um maior precisão e velocidade de detecção
se comparada a outros métodos em dados espaciais (imagens, vídeos, etc). As CNNs se
dividem em dois tipos de algoritmos. Algoritmo de dois estágios baseados em detecção de
frame e classificação, como o algoritmo R-CNN, que tem alta precisão, mas a estrutura da sua
rede é mais lenta e com isso não tem o requisito para um reconhecimento de tempo real. O
outro é algoritmo de primeira ordem baseado em regressão, como SDD e You Only Look
Once(YOLO), com inferência mais rápida e praticabilidade mais forte, podendo detectar e
reconhecer objetos em tempo real (YAO, 2021).

1.1 PROBLEMA DE PESQUISA


O intuito de uniformização é de aproximação dos alunos com a história da instituição
e da comunidade, controle de entrada de alunos e não alunos na instituição. Além de
promover a promoção da igualdade, já que os alunos estão vestidos de forma semelhante.
14

Reduzir a pressão sobre a aparência e fazê-los focar no aprendizado. No contexto de violência


que assola a sociedade, o qual assegura a partir da caracterização do aluno e da identificação
de sua escola correspondente, um ambiente mais seguro para todos(ALMEIDA, 2017).

Para identificação das logos seja em tempo real, pensando no caso da instituição.
Existem muitos uniformes feitos pelos alunos do Ensino Médio e Curso Superior. Além
daquele que a instituição tem como padrão de uniforme e vestimenta. Estes uniformes têm em
comum que é a logo da instituição. Então foi pensado que para identificar os uniformes
adequados, seria preciso achar a logo da instituição. E por consequência o sistema vai
identificar a logo em outros lugares. Como paredes e cartazes, mas para o escopo do trabalho
esta identificação é o suficiente.

1.2 OBJETIVO GERAL


Este trabalho tem como objetivo desenvolver um protótipo capaz de identificar a
logomarca da instituição presente nos uniformes por meio da utilização do algoritmo
YOLOv8, utilizando uma implantação via aplicação web.

1.3 OBJETIVO ESPECÍFICO


● Desenvolver um conjunto de dados com a logo do uniforme da instituição em vários
ambientes.
● Treinar um modelo YOLOv8 com este conjunto de dados criado.
● Implementar uma aplicação web utilizando o modelo treinado.

1.4 CONTRIBUIÇÕES
As contribuições deste trabalho estão na abordagem prática adotada para o desafio de
detecção de logotipos da instituição. Devido a ausência de um conjunto de dados para a tarefa
específica de reconhecimento da logotipo da instituição, surgiu a necessidade de criar uma
base de dados personalizada. Atualmente, esse conjunto de dados é composto por 1.525
imagens.
Devido a limitação de tempo máquina no Google Colab e a restrição de memória da
GPU na versão gratuita fornecida, essa base está limitada em tamanho. Essa iniciativa
permitiu superar uma lacuna significativa no campo de reconhecimento de objetos fornecendo
uma base sólida para futuras pesquisas e aplicações práticas.
15

1.5 ORGANIZAÇÃO DO TRABALHO


Esta obra está organizada em seis seções: a introdução; fundamentação teórica que
apresenta os principais conceitos teóricos utilizados; Metodologia onde foi descrito os
detalhes realizados. Resultados e discussões que apresenta os resultados obtidos; e a
Conclusão.
16

2 FUNDAMENTAÇÃO TEÓRICA

2.1 PYTHON

Segundo Martelli (2023), Python é uma linguagem de propósito geral. O seu criador
Guido van Rossum começou a desenvolvê-la em 1990. Ela é uma linguagem estável e de alto
nível, dinâmica, orientada a objetos e multiplataforma. Python é executada nas principais
plataformas de hardware e sistemas operacionais.

Python oferece alta produtividade em todas as fases do ciclo de vida do software:


análise, design, prototipagem, desenvolvimento, teste, debugação, tuning, documentação,
deploy, e manutenção. A sua produtividade está ligada a sua consistência e sua rica biblioteca
que tem como padrão e muitos outros módulos desenvolvidos pela comunidade. Python é
fácil de aprender, mas ao mesmo tempo, é poderoso.

2.2 API REST

Transferência de Estado Representativo (Rest) é uma arquitetura baseada em modelo


de comunicação web. REST tem interface flexibilizada. Tem suporte para todos os tipos de
dados. Rest é baseado no conceito de cliente e servidor. E Restful APIs podem ser
consumidas com uma simples requisição GET. É independente de linguagem e plataforma.
(MANUABA, 2018).
O REST funciona sobre o protocolo HTTP. Cada Uniform Resource Identifier (URI)
funciona como um recurso de API. Em REST, o endpoint é um URI exclusivo que representa
um recurso1. A URI é uma sequência de caracteres que identifica um recurso baseado em sua
localização, nome, ou ambos. Existem dois tipos de URIs, o Uniform Resource Locator
(URL) e o Uniform Resource Name (URN).(SHARMA, 2021).

Figura 1: A hierarquia URI.

Fonte: SHARMA (2021).


Segundo Library of Congress (2007), a estrutura básica de um URI é a seguinte:

1
A URI "https://localhos:800/video/?link=https://www.video.com/video.mp4" é um exemplo de um endpoint
REST. O caminho do endpoint é "/video" e o recurso é representado por
"?link=https://www.video.com/video.mp4". Essa URI é usada para acessar um recurso específico relacionado a
vídeos por meio de uma solicitação HTTP.
17

● Todo URI começa com um scheme name(nome do esquema), que se refere a uma
especificação para atribuir identificadores dentro do esquema.

● Seguido por uma coluna com“:”.

● Seguido por uma coluna com barra dupla “//”, se e apenas se o authority
component(componente de autoridade) estiver presente.

● A barra dupla se presente é seguido pelo authority component (implicitamente termina


com “/”, “?”, ou “#” ou pelo final da URI)

● O caminho segue após o componente de autoridade, se presente(ou se não, os dois


pontos após o nome do esquema) é seguido pelo caminho; componentes dentro do
caminho são separados por “/”.

● Um ponto de interrogação: “?”, segue o caminho, se e somente se a consulta estiver


presente, componente opcional

● Um hashtag: “#”, segue a requisição ou se não tiver segue o caminho, se e somente se


o identificador de fragmentos estiver presente, componente opcional

Os elementos mencionados são organizados em uma ordem específica, e essa


disposição é apresentada visualmente na Figura 2.
Figura 2: Sintaxe da URI.

[nome do esquema]:[//autoridade]caminho[?requisição][#fragmento]
Fonte: Adaptado de SHARMA (2021).
Exemplos de URI:

● ftp://192.168.15.1:21/

● maito:[email protected]

● https://ifmt.edu.br/

● https://localhost:8000/video/index.html?link=https://video.com/video.mp4

Uma URL refere-se ao subconjunto de URI que identifica recursos por meio de uma
representação de seu mecanismo de acesso, ele representa um recurso web. URL identifica
uma página web correspondente na World Wide Web (WWW) (Lee, 2023).

2.3 WEB SCRAPING

Web Scraping, também conhecido como web extrator, é a técnica de extrair dados da
World Wide Web (WWW) e salvar em um arquivo de sistema ou em um banco de dados para
18

recuperação ou uma análise. O processo de extração de dados da Internet pode ser dividido
em dois passos: aquisição de recursos web e então extrair as informações desejadas.
Especificamente, o programa web scraping inicializa começa compondo uma requisição
HTTP para adquirir os recursos de um site desejado. Esta requisição pode ser formada por
uma URL conteúdo uma requisição GET ou um pedaço de mensagem HTTP com uma
requisição do tipo POST. (ZHAO, 2017).

Selenium é um programa que serve para compor uma solicitação HTTP, fornece
extensões para emular a interação do usuário com navegadores. Com ele é possível a
automatização de ações do usuário em um navegador real, WebDriver. Outra ferramenta é
Beautiful Soup faz a extração de informações em um HTML e XML, fornecendo funções
Pythonic convenientes para navegar, pesquisar e modificar(ZHAO, 2017; SELENIUM, 2023).

2.4 WEBSOCKET

Segundo Wang(2013), as conexões WebSocket são full-duplex, ou seja, permitem uma


comunicação bidirecional simultânea entre o cliente e o servidor. Além disso, as conexões
Websocket utilizam um único socket (single-socket), o que significa que é possível abrir uma
única solicitação HTTP para abrir uma conexão WebSocket e reutilizar a mesma conexão para
troca de mensagens entre cliente e servidor.

Devido a essa característica, o WebSocket apresenta uma redução significativa na


latência. Ao estabelecer uma conexão WebSocket, o servidor tem a capacidade de enviar
mensagens assim que estiverem prontas, sem a necessidade de o cliente iniciar uma nova
solicitação. Isso difere das abordagens de polling, em que o cliente precisa realizar várias
solicitações periódicas para verificar se há novas mensagens disponíveis, como mostrado na
Figura 3.
19

Figura 3: Comparação com pooling e WebSocket.

Fonte: Wang (2013).

2.5 APRENDIZADO PROFUNDO

Segundo Furtado (2019), o neurônio realiza o processamento de uma ou várias


entradas para produzir uma saída. O neurônio artificial é uma estrutura lógico-matemática que
busca imitar as características e funções de um neurônio biológico. Analogamente, os
dendritos correspondem às entradas, a soma representa o processamento e o axônio representa
a saída, tornando o neurônio uma unidade fundamental de processamento de informações. Os
dendritos estão conectados ao corpo celular do neurônio artificial por canais de comunicação
ponderados, simulando as sinapses. Os estímulos captados pelas entradas são processados
pela função do soma, substituindo o limiar de disparo do neurônio biológico pela função de
transferência. Na figura 4 apresenta o esquema do neurônio de McCullock e Pitts.

Figura 4: Neurônio de McCullock e Pitts.

Fonte: Almeida Junior e Barros (2018).


No neurônio de McCullock e Pitts sinais são apresentados a entrada Xp; e a cada sinal
de entrada p conecta ao um neurônio que é multiplicado por um peso sináptico Wkp. No
neurônio k, ocorre a soma ponderada dos sinais recebidos, resultando em um determinado
20

nível de atividade. Se esse nível de atividade exceder um limite específico, a unidade


processadora, a função ativação podendo ser uma função limiar, linear por parte, sigmóide e
tangente hiperbólica, que produzirá uma resposta de saída determinada. O modelo da Figura 4
pode ser representado matematicamente pelas Equações 1 e 2.
𝑚
𝑢𝑘 = ∑ 𝑊𝑘𝑝 * 𝑋𝑝 (1)
𝑝=1

𝑦𝑘 = 𝞿(𝑢𝑘 + 𝑏𝑘) (2)

Onde:

Xj : sinais de entrada

Wkj : pesos sinápticos ou pesos

yk : sinais de saída

𝞿 (0) : função de ativação

bk : bias

Embora cada neurônio realize um processamento simples, uma rede neural com
múltiplos neurônios é capaz de executar operações complexas através da interconexão
sináptica e do processamento em paralelo. E inspirado nele que nasceu o perceptron.

O Perceptron foi a primeira arquitetura de Artificial Neural Networks (ANN) a ser


descrita em forma de algoritmo capaz de realizar aprendizado supervisionado. Mas o modelo
se mostrou incapaz de classificar dados não lineares. O problema XOR é um dos mais
conhecidos que uma rede de perceptron simples não é capaz de criar uma modelo. Que foi
superado adicionando mais uma camada na arquitetura. Essa nova arquitetura passou a ser
denominada de perceptron de múltiplas-camadas (SANTOS JUNIOR, 2018).

O conceito de aprendizado profundo (Deep learning - DL) nasceu na pesquisa de redes


neurais. Redes neurais Feed-forward ou também conhecido como redes perceptron de
múltiplas-camadas que também são chamadas de redes neurais profundas (DNNs). Além dos
problemas de reconhecer padrão em distribuições não lineares. Com DL é possível resolver
problemas mais complexos como: reconhecimento de fala, análise de textos e outros
problemas não-lineares. Também tem obtido sucesso na área de computação visual e
linguagem natural, superando até a precisão dos seres humanos. (DENG; YU, 2014;
BUDUMA, 2017).
21

2.6 REDE NEURAL CONVOLUCIONAL

Rede neural convolucional (Convolutional Neural Network - CNN) é um tipo


específico de redes neurais que processa os dados em uma topologia em grade, que se inspira
na área de neurociência como aprendizado profundo. Invés de usar transformação linear sobre
todas as entradas, ela executa a transformada linear em grade de entrada. A matriz de peso
convolucional, também chamada de kernel, que passa sobre toda entrada gerando uma matriz
de saída (SALVI, 2021). Como na Figura 5, é utilizado um kernel de matriz de ordem 3 com o
filtro Laplaciano para detectar as bordas da imagem de entrada.

Figura 5: Operação de filtro convolucional.

Fonte: Figura adaptada de Neto (2023).


Os neurônios nas camadas de uma CNN são arranjados em três dimensões: largura,
altura e profundidade, conforme pode ser observado na Figura 6. Na saída, as imagens da rede
são reduzidas a um único vetor. Ao invés de precisar de um neurônio para cada pixel da
imagem, a camada irá processar a imagem e produzir uma transformação dessa imagem por
meio de uma combinação linear dos pixels vizinhos. Se fosse utilizar uma DNNs e tivéssemos
uma imagem RGB de tamanho 640x640x3, teríamos que cada neurônio para cada entrada,
teria 1.228.800 pesos, um para cada valor de entrada. Ao contrário, é definido um filtro de
2x2x3, assim teríamos que cada neurônio teria 12 de peso (SERRANO; PEÑA; MANUEL,
2017; VIEIRA, 2017).

Figura 6: Exemplo de rede Neural Convolucional.

Fonte: Serrano, Peña e Manuel (2017).


22

2.7 DETECÇÃO DE OBJETOS

A detecção de objetos é um problema de importância em computação visual que teve


uma explosão em aplicações e pesquisas nos últimos anos. Similar a classificação de imagem,
utilizar redes profundas tem uma melhor performance na detecção. A detecção de objetos é
uma tarefa que combina dois problemas: a regressão, para criar uma caixa delimitadora que
limita cada objeto dentro da cena, e a classificação, para classificar cada caixa delimitadora,
conhecida como retângulo de coordenadas (rectangular coordinates), em uma das classes
conhecidas, como mostrado da Figura 7 (SHANMUGAMANI, 2018; SALVI, 2021).

Figura 7: A imagem mostra quatro objetos com as caixas delimitadoras.

Fonte: SHANMUGAMANI (2018).

2.8 MATRIZ DE CONFUSÃO

De acordo com Castro (2011), normalmente a métrica utilizada é a acurácia, mas ela é
ineficaz para cenários desbalanceados, uma forma melhor de avaliar é através da distinção dos
erros, que pode ser obtido por meio de uma matriz de confusão. Onde os elementos da
diagonal principal, que representa as decisões corretas, número de verdadeiro negativo (TN -
True Negative) e verdadeiro positivo (TP - True Positive). Enquanto na diagonal secundária
representa os erros cometidos, número de falso positivo (FP - False Positive) e falso negativo
(FN - False Negative).
23

Tabela 1: Matriz confusão.

Verdadeiro Falso

Verdadeiro Positivo Falso Negativo (FN)


É a Logo
(TP)

Falso Positivo Verdadeiro Negativo


Não é a Logo
(FP) (TN)
Fonte: Adaptada de Castro (2011).

A partir da matriz de confusão podemos extrair outras métricas. Por exemplo, a


acurácia pode ser calculada utilizando a seguinte Equação 3, mas, conforme discutido acima,
ela não é adequada quando não tem balanceamento de classes.
𝑇𝑃 + 𝑇𝑁
𝐴𝑐𝑢𝑟á𝑐𝑖𝑎 = 𝑇𝑃 + 𝐹𝑃 + 𝑇𝑁 + 𝐹𝑁
(3)

A sensibilidade (do inglês, recall), é uma métrica que mede a porcentagem do grupo
positivo que foi corretamente classificada, conforme pode ser observado na Equação 4, onde
TP é dividido pela soma de TP + FN. A precisão mede a porcentagem de amostras
classificadas como positivas que realmente são positivas, a expressão é dada na Equação 5,
onde o TP é dividido pela soma de TP com FP. (LUCHI; ADAMI, 2020). Ambas as métricas
variam no intervalo de [0, 1], onde o valor 1 indica 100% de acerto e 0 indica 100% de erro, a
porcentagem aceitável de acerto depende da dificuldade do conjunto de dados.
𝑇𝑃
𝑆𝑒𝑛𝑠𝑖𝑏𝑖𝑙𝑖𝑑𝑎𝑑𝑒 = 𝑇𝑃 + 𝐹𝑁
(4)

𝑇𝑃
𝑃𝑟𝑒𝑐𝑖𝑠ã𝑜 = 𝑇𝑃 + 𝐹𝑃
(5)

2.9 INTERSECTION OVER UNION

Uma das métricas utilizadas na detecção de objetos é a Interseção sobre a União,


Intersection over Union (IoU). Que é da razão da sobreposição da área verdadeira, caixa
delimitadora verdadeira, e da área prevista, caixa delimitadora preditiva, sobre a união dessas
áreas (ROSEBROCK 2016). Demonstrado na Figura 8 como é o cálculo da IoU.
24

Figura 8: O cálculo do IoU.

Fonte: Elaborado pelo autor (2023).

Com a ajuda do limiar de IoU, podemos decidir se a previsão é Verdadeiro Positivo


(TP), Falso Positivo (FP) ou Falso Negativo (FN). A Figura 9 mostra previsões com o limiar
de IoU ɑ definido em 0,5 (Kukil, 2022).

Figura 9: Previsão com limite definido em 0,5.

Fonte: Adaptado de Kukil (2022).

2.10 MEAN AVERAGE PRECISION

A precisão média, Average Precision AP, é o cálculo da média para cada classe.
Significa que podemos ter muitos valores de AP. E este valores AP tem um média que pode
ser obtida pela média da precisão média, Mean Average Precision (mAP). O IoU é calculado
para cada classe, equação 3. A mAP é padrão como uma para medir a precisão de um sistema
de detecção de objetos de todas as classes, obtendo a média de todos os APs, equação 4.
(SKÖLD, 2023).
1
𝐼𝑛𝑡𝑒𝑟𝑠𝑒𝑐𝑡𝑖𝑜𝑛 𝑜𝑣𝑒𝑟 𝑈𝑛𝑖𝑜𝑛 (𝐼𝑜𝑈) 𝑜𝑢 𝐴𝑃 = ∫ 𝑝(𝑟)𝑑𝑟 (3)
0

𝑛
1
𝑚𝐴𝑃 = 𝑛
∑ 𝐴𝑃(𝑘) (4)
𝑘=1

AP@0,5k representa a precisão média da classe k quando o limite da taxa de


interseção é 0,5, n representa a categoria do rótulo, mAP@0,5 representa a precisão média
25

quando o limite da taxa de interseção é 0,5, equação 5. mAP@0,5:0,95 representa o valor


médio de mAP no limite de diferentes taxas de interseção com um tamanho de passo de 0,05,
equação 6 (REN, 2023).

𝑛
1
𝑚𝐴𝑃@0. 5 = 𝑛
∑ 𝐴𝑃@0. 5𝑘 (5)
𝑘=1

𝑚𝐴𝑃@0.5 + 𝑚𝐴𝑃@0.55 + . . . + 𝑚𝐴𝑃@0.95


𝑚𝐴𝑃@0. 5: 0. 95 = 10
(6)

2.11 YOLO
Segundo YAO (2021), o algoritmo YOLO, vê a imagem como um problema de
regressão linear com um pipeline simples e de alta performance. Conseguindo processar um
streaming de vídeo com um atraso de menos de 25s. Durante o processo de treinamento ele
consegue examinar toda a imagem com mais atenção, junto com as informações globais na
detecção de objetos. A ideia central é usar a imagem inteira como entrada da rede, e retornar
diretamente a posição da caixa delimitadora, bounding box, e a categoria à qual a caixa
delimitadora pertence na saída. No YOLO, cada caixa delimitadora é prevista pelas
características de toda a imagem, e cada caixa delimitadora contém cinco previsões e
confianças, que são relativas à unidade de grade no centro da caixa delimitadora de fronteira.
O quadro básico do YOLO são os seguintes: w e h são predições de largura e altura de toda
imagem (em relação a imagem inteira). YOLO é composto principalmente por três
componentes:

● Backbone: Uma rede neural convolucional que agrega e forma recursos de imagens
em diferentes tipos de granularidade de imagem;

● Neck: Uma série de camadas de redes que mistura e combina recursos de imagens e
passa os recursos de imagens para a camada de predição;

● Head: Ele pode prever recursos de imagem, gerar caixas delimitadoras e prever
categorias. A confiança indica a precisão da classificação sob a condição específica;

Para melhorar a precisão e acurácia do YOLO, foi proposto uma nova versão YOLOv2
em 2017. A nova estrutura de rede Darknet-19 foi projetada removendo completamente as
camadas de conexão da rede, e a normalizando em lote foi aplicada a cada camada.
Referenciado ao mecanismo de ancoragem do Faster R-CNN, o agrupamento k-means foi
usado para obter as caixas de ancoragem. Além disso, as caixas de predição foram treinadas
26

com predição direta, comparando com o YOLO, o YOLOv2 melhora muito a precisão e a
velocidade de detecção de objetos (SANG, 2018).

Na versão YOLOv3, ele tem uma camada de detecção em várias escalas para detectar o
alvo final, e a sua estrutura de rede é mais complexa do que o YOLOv2, o YOLOv3 prevê
caixas delimitadoras em diferentes escalas tornando-o mais eficaz para detectar alvos
pequenos que o YOLOv2 (TIAN, 2019). Ao fazer isso, recurso de diferentes escalas
(resolução) que podem ser efetivamente extraídas da imagem de entrada, excede assim o
limite da resolução única nos resultados da detecção (TENG, 2022). Como mostrado na
Figura 10, a camada de detecção utilizada dos mapas de recursos, feature maps, de três
tamanho diferentes, se utilizando de um fator de divisão conhecido como downsampling, de
32, 16 e 8 vezes o seu tamanho respectivamente. Se foi utilizada uma imagem de entrada com
resolução de 416 x 416, temos os mapas de recursos de 13x13, 26x26 e 52x52
respectivamente, dessa forma beneficiando a detecção de pequenos objetos (CHENG, 2020).

Figura 10: Detecção de multi-escala do algoritmo YOLOv3.

Fonte: CHENG (2020).


No algoritmo YOLOv4, ele integra as características do YOLOv1, YOLOv2 e YOLOv3,
alcançado uma ótima velocidade de detecção em equilíbrio com a precisão. O modelo é
estruturado em 3 partes: Backbone, Neck e Prediction. O YOLOv4 mantém a parte principal
do YOLOv3 mudando o Darknet53, por CSPDarkNet53 (YU, 2021). A rede CSPDarkNet53 é
utilizada como backbone, a parte chamada de Neck é composta de SPP e Path Aggregation
Network (PAN) e a Prediction, também conhecida como Head, é a parte de predição do
modelo (GAI; CHEN; YUAN, 2021) .

YOLOv5 é o algoritmo de reconhecimento de alvo de estágio único proposto por Glenn


Jocher em 2020 (CHEN, 2022), a sua velocidade de detecção das caixas delimitadas consegue
predizer todas elas ao mesmo tempo. Isso traz uma desvantagem de ser menos precisa que um
algoritmo de dois estágios (DE CASTRO, 2022).
27

YOLOv5 é dividido em 5 modelos de redes de diferentes tamanhos: s, m, l, x e n.


Dentre eles, a rede YOLOv5n tem uma alta precisão de detecção e uma resposta rápida. O
tamanho dos arquivos do modelo YOLOv5n é de aproximadamente 75% menor que o
YOLOv5s, então YOLOv5n é ideal para dispositivos embarcados de detecção em tempo real
(LIU et al., 2022). A estrutura do YOLOv5, como demonstrado na Figura 11, o Backbone
consiste na estrutura de foco e nas redes parciais de estágio cruzado, Cross Stage Partial
Networks (CSP), esta estrutura diminui a dimensão dos dados enquanto mantém as
informações originais. A rede CSP extrai informações úteis, o que melhora a capacidade de
aprendizagem e reduz o custo da memória. A Neck combina aos recursos adquiridos e as
encaminha para a camada de previsão usando na rede de pirâmides de recursos (FPM - do
inglês Feature Pyramid Networks), e a na rede agregação de caminho (PAN - do inglês Path
Aggregation Network) (ALI, 2022).A FPN realiza um downsampling contínuo para extrair
recursos de baixo para cima, resultando em um mapa de recursos menor enquanto mantém o
valor dos pixels. Em seguida, realiza um upsampling contínuo de cima para baixo para
restaurar o tamanho do mapa de recursos e fundi-lo com um mapa de recursos de tamanho
equivalente da esquerda, resultando em um mapa de recursos de múltiplas escalas. Essa
abordagem da FPN permite fazer previsões em várias escalas, o que melhora a capacidade de
reconhecimento do modelo, possibilitando detecção mais precisa de um mesmo objeto em
diferentes escalas (MARTINS, 2019; CORREIA, 2021).

Figura 11: Composição da arquitetura YOLOv5.

Fonte: ALI (2022).

No YOLOv8 é um modelo anchor-free (livre de âncoras em tradução livre), isso


significa que, como observado no Anexo A, ao invés de prever o deslocamento de uma caixa
de ancoragem conhecida, ele prevê diretamente o centro do objeto. Com essa abordagem
28

diminui o número de previsões de caixa e, assim, acelera o processo de Non-Maximum


Suppression (NMS) da etapa de pós-processamento usada para filtrar detecção de objetos
redundantes após a inferência (MUNIN, 2023).
29

3 METODOLOGIA

Neste capítulo serão descritos os principais métodos no desenvolvimento da aplicação


de detecção da logo do IFMT nos uniformes dos docentes da instituição. Para desenvolver os
passos da aquisição das imagens, criação de um conjunto de dados, treinar o modelo, e
implantação do modelo treinado, é necessário seguir um processo sequencialmente.
Começando pela aquisição de um conjunto de imagens relevantes, em seguida, fazer as
anotações com as caixas delimitadoras referente a classe. O próximo passo é treinar o modelo
utilizando o conjunto de dados criado e avaliar o desempenho do modelo. Finalmente, o
modelo treinado pode ser implantado. As etapas estão sintetizadas na Figura 12.
Figura 12: Fluxograma do trabalho.

Fonte: Elaborado pelo autor (2023).

3.1 AQUISIÇÃO DAS IMAGENS

O banco de imagens foi obtido pelo autor utilizando a linguagem Python utilizando
das técnicas de Web Scraping. Uma parte das imagens foram obtidas no site do Instituto
Federal Mato Grosso Campus Cuiabá-MT na seção galeria. O padrão observado foi que se no
link para o álbum não tivesse uma imagem, então este álbum não tem imagens.

Na Figura 13, como dito, o link “4º JIFMT – Jogos do Instituto Federal de Mato
Grosso” não tem imagens. Então o primeiro filtro foi capturar apenas links com fotos e após
isso entrar nessas páginas e salvar as imagens.
30

Figura 13: Seção álbuns do site do Instituto Federal Mato Grosso Campus Cuiabá-MT.

Fonte: Elaborado pelo autor (2023).

Para obter as imagens, foi realizada uma segunda etapa que envolveu o acesso à
página do Facebook, mais especificamente ao álbum intitulado "IFMT - Instituto Federal de
Mato Grosso's Photos". A Figura 14 apresenta uma visualização parcial desta página, que
continha várias imagens relevantes para o estudo em questão. Com o objetivo de evitar a
necessidade de abrir e salvar manualmente cada imagem, foi desenvolvido um script
utilizando a biblioteca Selenium. Esse script automatizou o processo, permitindo a obtenção
das imagens de forma mais eficiente e rápida. Essa abordagem foi adotada para agilizar a
coleta das imagens necessárias, garantindo a integridade do conjunto de dados e facilitando a
análise posterior.

Figura 14: Secção álbum da página na Rede Social Facebook.

Fonte: Elaborado pelo autor (2023).


Para obter o link de todas as imagens, utilizamos a biblioteca Selenium para carregar a
página do álbum no Facebook na versão mobile. Em seguida, os links das imagens foram
salvos em um arquivo para posterior utilização. Durante o processo, enfrentamos um
problema em que o Facebook bloqueava a conexão após um certo número de requisições.
31

Para contornar essa limitação, implementamos um mecanismo de delay de uma hora. Caso a
conexão fosse bloqueada, o programa aguardava uma hora antes de retomar a coleta dos links
das imagens, recomeçando a partir do último link salvo.

Ao final do processo, obtivemos um total de 6.000 imagens. Dentre essas,


selecionamos 1.525 imagens para o processo de anotação, que consiste na criação das caixas
delimitadoras para identificação dos objetos de interesse nas imagens. Essas etapas foram
essenciais para a formação do conjunto de dados utilizado no projeto, permitindo a realização
das análises e experimentos necessários.

3.2 ANOTAÇÃO DAS IMAGENS


No processo de anotação das imagens foi utilizada a ferramenta de anotação
disponível no RoboFlow, a anotação das classes é o processo de criar uma caixa delimitadora
dos objetos da classe, conforme pode ser observado na Figura 15.

Figura 15: Interface da ferramenta RoboFlow no processo de anotação.

Fonte: Elaborado pelo autor (2023).


A seguir foi feito o versionamento do conjunto de dados, a resolução das imagens
foram normalizadas para 640x640, e foram transformadas em monocromáticas, preto e
branco, e seguindos as recomendações do Solawetz (2020), as imagens foram divididas em
70% para treinamento, 20% para validação e 10% para teste, antes de inserir os argumentos,
como mostrado na Figura 16.
32

Figura 16: Estrutura de divisão da base de dados para o treinamento do modelo antes do argumentos.

Fonte: Elaborado pelo autor (2023).

As imagens alteradas foram as imagens de treinamento, totalizando 3.042 imagens


para treino e, ao final, o conjunto de dados ficou com 3.503 imagens, como mostrado na
Figura 17. Os aprimoramentos ajudam a melhorar a média de precisão do modelo, segundo
Zoph. (2019). Portanto, neste trabalho foram utilizados os seguintes aprimoramentos:

● Cortar área da caixa delimitadora


● Alterar o ângulo da área da caixa delimitadora
● Adicionar ruído na área da caixa delimitadora

Figura 17: Conjunto de Dados após a adição dos argumentos.

Fonte: Elaborada pelo autor(2023).

Para utilizar o conjunto de dados criado no RoboFlow, é preciso apenas de algumas


linhas de código, como mostrado na Figura 18.

Figura 18: Código inserido para baixar o conjunto de dados criados.

from ultralytics import YOLO


from roboflow import Roboflow

#Baixando o Dataset criado no Roboflow


rf = Roboflow(api_key="YOUR_API_KEY")# inserir a api fornecida
project = rf.workspace("ifmt").project("uniforme")# workspace criado e qual projeto
dataset = project.version(11).download("yolov8")# versão do projeto e arquitetura
Fonte: Elaborado pelo autor (2023).

3.3 TREINAMENTO DO MODELO


O Colaboratory, também conhecido como "Colab", é um produto desenvolvido pelo
Google Research, a divisão de pesquisa científica do Google. Ele oferece uma plataforma que
permite a escrita e execução de código Python diretamente no navegador, sendo
33

especialmente adequado para tarefas de aprendizado de máquina, análise de dados e


educação. O Colab é baseado nos notebooks do Jupyter, fornecendo um ambiente de
desenvolvimento hospedado que dispensa a necessidade de configurações complexas. Além
disso, ele oferece acesso gratuito a recursos de computação, como GPUs, proporcionando
maior poder de processamento para as tarefas(Google, s.d.). A interface do Colab pode ser
visualizada na Figura 19.

Figura 19: Interface da plataforma de desenvolvimento Google Colab.

Fonte: Elaborado pelo autor (2023).

3.4 IMPLEMENTAÇÃO

O hardware utilizado foi um Notebook Lenovo, modelo T420, processador Intel®


Core™ i7-3610QM, com armazenamento de 200GB, 16GB de memória RAM e uma GPU
Intel® HD Graphics 4000, foi utilizado uma framework Python, FastAPI, para a construção
da API REST. Para mais detalhes do código fonte, o link para o repositório está disponível no
Apêndice A.

Na página inicial, o usuário pode enviar quantas imagens quiser, os formatos de


imagem aceito são: Microsoft BMP File Format (.bmp), Adobe DNG (dng), Joint
Photographic Experts Group (jpeg, jpg), Multi Picture Object (.mpo), Portable Network
Graphics (png), Tag Image File Format (tif, tiff), WebP (.webp), Portable FloatMap (.pfm).
Após enviar as imagens, o resultado é apresentado para cada imagem com a caixa
delimitadora e uma tabela com as coordenadas e de confiança, como mostrado na Figura 20.
34

Figura 20: Implementação de reconhecimento de objetos para imagem.

Fonte: Elaborado pelo autor (2023).

Além disso, foi implementado o reconhecimento de objetos em vídeos. É possível


enviar arquivos com formatos como Advanced Systems Format (.asf), Audio Video Interleave
(.avi), Graphics Interchange Format (.gif), MP4 (.mp4, .m4a), Matroska (.mkv), QuickTime
File Format (.mov), MPEG-1 (.mpeg, .mpg), MPEG transport stream (.ts), Windows Media
Video (.wmv) e WebM Project (.webm). Além disso, é possível utilizar links do YouTube,
stream RTSP, RTMP e HTTP.

Ao enviar o arquivo de vídeo, o vídeo de saída é completo, mas não possui áudio. Ele
é convertido para o codec H.264, permitindo a visualização no navegador sem a necessidade
de baixá-lo e reproduzi-lo em um vídeo player no computador. A Figura 21 ilustra a página,
com o vídeo de saída sendo exibido à direita e a parte inferior da página mostrando o vídeo.

Figura 21: Implementação de reconhecimento de objetos para vídeo.

Fonte: Elaborado pelo autor (2023).

Para demonstrar o reconhecimento de objeto em tempo real, foi implementado o


reconhecimento de objetos utilizando a webcam do servidor. O servidor recebe essas imagens
da webcam e as envia para o preditor do modelo que as envia para o cliente via Websocket. O
Websocket só fornece as imagens para apenas uma conexão por vez, e quando outra conexão
35

se tenta abrir outra conexão, quando já tem uma mensagem de aviso. A conexão termina
quando o usuário sai da página e o tempo de espera para abrir a próxima conexão com o
cliente é de 20 segundos, como mostrado na Figura 22, à esquerda mostra a imagem da
webcam enviada do servidor para o cliente, e na direita quando o socket está ocupado.

Figura 22: Implementação de reconhecimento de objetos em tempo real com a Webcam.

Fonte: Elaborado pelo autor (2023).


36

4 RESULTADOS E DISCUSSÕES

Nesta seção, serão apresentados os resultados obtidos pelo treinamento dos modelos
YOLOv8n e YOLOv8s, com as métricas obtidas foi feito um comparativo entre eles, também
será apresentado a implementação do modelo utilizando FastAPI e quais foram os resultados
obtidos e suas discussões.

4.1 RESULTADOS DO TREINO

Ao treinar o modelo, ele fornece um registro no console das métricas do treinamento,


essas métricas incluem mAP50, mAP50-95, consumo do sistema, tempo de processamento e
outras variáveis. Mas para salvar essas métricas do momento que o modelo estava treinando o
YOLO da Ultralytics fornece suporte para três tipos de registradores - Comet, ClearML e
TensorBoard.

A coleta das métricas foi automatizada utilizando o registrador da Comet, o qual


registra e armazena os resultados obtidos ao longo do treinamento. Para inicializá-lo, é
necessário inserir a chave da API juntamente com o nome do projeto antes do início do treino,
conforme apresentado na Figura 23. E as métricas então disponibilizadas e salvas na página
do projeto criada na Comet, assim permitindo a análise detalhada delas.

Figura 23: Trecho de código para utilização da API do Comet.

Fonte: Elaborado pelo autor (2023).


Os resultados do treinamento dos modelos YOLOv8n e YOLOv8s do conjunto de
dados criado são apresentados na Tabela 2. O modelo YOLOv8n obteve um mAP50-95 igual
a 0.506, já o modelo YOLOv8s obteve um mAP50-95 igual a 0,529, o que significa que, em
média, os modelos são capaz de detectar corretamente mais de 50% dos objetos presentes nas
imagens com uma confiança que varia de 50% a 95%. Além disso a métrica mAP50 que foi
igual a 0.664 para o YOLOv8n e 0,676 para YOLOv8s, indica que os modelos são capazes de
detectar corretamente mais de 66% dos objetos com uma confiança acima de 50%. E Também
na precisão o YOLOv8n tem 0,729 e o YOLOv8s 0,749, significa que os modelos foram
capazes de acertar mais de 72% das detecções realizadas.
37

Comparando os dois modelos, podemos observar que o YOLOv8n obteve um


desempenho um pouco inferior em relação ao YOLOv8s, mAP50-95 a diferença é de 4,54%,
no mAP50 é de 1,8% e na Precisão é de 2,74%, em todas as métricas.

No entanto, qualitativamente, o YOLOv8n se destaca por ser um modelo menor em


tamanho, cerca de 3,6 vezes menor que o YOLOv8s. Isso significa que o YOLOv8n é mais
compacto e requer menos recursos de armazenamento, tem um tempo de inferência mais
rápido, quase a metade do tempo do YOLOv8s.

Tabela 2: Comparativo de métricas entre os modelos YOLOv8n e YOLOv8s.

Métricas

Tempo de
Modelo mAP50-95 mAP50 Precisão Parâmetros Tamanho
inferência

YOLOv8n 0,506 0,664 0,729 3011043 6,239Mb 87,430ms

YOLOv8s 0,529 0,676 0,749 11135987 22,508Mb 168,832ms


Fonte: Elaborado pelo autor (2023).

A matriz de confusão é uma tabela que é comumente utilizada para avaliar o


desempenho de um modelo de classificação. Ela apresenta um resumo das predições feitas
pelo modelo em relação às classes dos dados. Neste caso é um modelo de detecção de objetos,
como caso do YOLOv8 ele mostra a contagem das detecções corretas e incorretas para cada
classe específica.

Como neste caso o modelo trabalha apenas com uma classe, o que é considerado
fundo e é detectado como fundo não será contado pois não tem uma amostra de outra classe
(Jocher 2023). Então em ambos os modelos ele sempre será zero como mostrado na Figura
24.
38

Figura 24: Matriz de confusão do modelo YOLOv8n (a), YOLOv8s (b).

Fonte: Elaborado pelo autor (2023).

Para verificar a diferença entre os modelos, uma imagem do conjunto de treinamento


foi utilizado para demonstrar a capacidade dos dois modelos. Na Figura 25, o modelo
YOLOv8s foi capaz de identificar o logo no IFMT no canto inferior esquerdo e no centro dos
entrevistados presentes na figura, enquanto que o modelo YOLOv8n não detectou essas duas
imagens.

Figura 25: Predição da imagem nos modelos YOLOv8n(a), e YOLOv8s(b).

Fonte: Elaborado pelo autor (2023).


Com o intuito de demonstrar que o modelo YOLOv8n pode obter bons resultados, foi
utilizado outra imagem do conjunto de treinamento. Na Figura 26, o modelo YOLOv8n não
identificou erroneamente as caixas delimitadoras no canto superior esquerdo do painel de cor
preta que se encontra no canto superior direito da imagem ao fundo, como aconteceu no
modelo YOLOv8s.
39

Figura 26: Diferença das caixas delimitadoras identificadas erroneamente entre os modelos. YOLOv8n(a), e
YOLOv8s(b).

Fonte: Elaborado pelo autor (2023).

4.2 RESULTADOS DA IMPLEMENTAÇÃO


FastAPI é um framework de desenvolvimento web em Python que se destaca por sua
velocidade e eficiência. Ele é especialmente projetado para criar APIs rápidas e escaláveis,
combinando a facilidade de uso do Python com um desempenho de alto nível. A
implementação em FastAPI do modelo YOLOv8n viabilizou a criação de um sistema
abrangente para detecção de objetos em imagens, vídeos e transmissões ao vivo da webcam.

Quanto ao envio de link para inferência de vídeo, a saída não entrega o vídeo por
completo saltando quadros, pois na implementação da biblioteca da Ultralyrics ele recebe o
link como um streaming de vídeo, e não como um arquivo. Se o vídeo tem 60fps significa que
cada quadro tem 16,667ms e se a inferência for feita em uma máquina leva cerca de 50
milissegundos. Significando que a 4 quadros do vídeo ele processaria um desses. E que ele
salva apenas o quadro que passou pela inferência. E se o tempo de inferência for menor ele
repete o quadro fazendo que a duração do vídeo seja maior.

A diferença do tempo de duração mostrada na Figura 27, ambos receberam um vídeo


de entrada com 29 segundos, está relacionado ao tempo de inferência, como dito
anteriormente. Na imagem da esquerda foi alterado o parâmetro do tamanho da imagem de
entrada para inferência para 128 pixels, que fez que a inferência levasse um tempo médio 20,2
milissegundos. Resultando em um vídeo com uma duração de 1 minuto e 17 segundos.
Utilizando o tamanho utilizado no treino do modelo que é de 640 pixels, o tempo médio de
inferência é 111,6 milissegundos que retorna um vídeo de 13 segundos.
40

Figura 27: Diferença na duração do vídeo de saída.

Fonte: Elaborado pelo autor (2023).


Como dito na seção anterior, na parte da implementação de enviar a imagens da
webcam via Websocket o tempo de espera para outra seção, após a outra ser fechada, é de 20
segundos. O autor deste trabalho não encontrou nenhuma forma de diminuir este tempo de
espera para outra conexão. É importante ressaltar que, mesmo durante esse período de espera,
o servidor continua enviando imagens da webcam para inferência e isto consome recursos da
máquina.

4.3 LIMITAÇÕES

Uma das principais limitações deste trabalho reside na ausência de uma GPU local
para treinar os modelos de detecção de objetos. Tendo a dependência exclusiva da CPU para
treinamento local, resultando em tempos de treinamento significativamente mais longos e na
impossibilidade de explorar todo o potencial de aceleração oferecido por uma GPU dedicada.
Tornando o autor deste trabalho dependente da máquina disponível no Google Colab para
treinar os modelos, sendo extremamente desafiador treinar um modelo mais robusto como o
YOLOv8m. Além disso, a restrição de horas máquina disponíveis impossibilita o treinamento
dos modelos propostos por mais de 100 épocas, e explorar outras variáveis que o treinamento
de um modelo possui.

Os modelos treinados neste trabalho apresentaram limitações em relação à sua


precisão. Os resultados obtidos não ultrapassaram 75% de acurácia, ficando abaixo de 70% no
mAP50 (média de precisão para objetos com sobreposição de 50%) e não excedendo 55% no
mAP50-95 (média de precisão para objetos com sobreposição variando de 50% a 95%). Esses
números indicam que os modelos ainda possuem margem para melhorias em termos de sua
capacidade de detecção e classificação de objetos.
41

Uma outra limitação a ser considerada é a falta de uma GPU para acelerar as
inferências realizadas pela máquina de implementação. Afetando o desempenho e a
velocidade das inferências, uma vez que a GPU é capaz de processar cálculos paralelos de
forma mais eficiente. Como resultado, as inferências podem ser mais demoradas em
comparação com um sistema equipado com uma GPU adequada.
42

5 CONCLUSÃO

Este trabalho teve como objetivo a implementação de reconhecimento de logo em


uniformes do IFMT utilizando YOLOv8. Ao longo do texto foram apresentados detalhes da
criação de um banco de imagens e a aquisição das imagens, anotação dos objetos nas
imagens, pós-processamento e normalização de imagens e os argumentos utilizados. O
treinamento do modelo foi na plataforma Colab devido a superioridade dos hardwares
disponíveis para o experimento em comparação aos que estão disponíveis localmente para o
autor.
Dois modelos foram treinados: YOLOv8n e YOLOv8s. O YOLOv8n foi mais
eficiente do que o YOLOv8s e é carregado na memória 3,607 vezes mais rápido do que o
YOLOv8s. O tempo médio de inferência também é inferior, ou seja, é mais rápido
(aproximadamente a metade do tempo do YOLOv8s).

Além disso, também foi criada uma API que fornece um serviço de detecção de logo
em uniformes. A API utiliza o modelo desenvolvido neste trabalho para fazer a detecção do
logo na imagem. Uma das funcionalidades da API consiste em receber e retornar imagens
juntamente com as coordenadas da caixa delimitadora da posição da logo na imagem. Outra
funcionalidade é receber um vídeo, sendo ele um arquivo ou link, e retornar o vídeo com as
predições das caixas delimitadoras. Os resultados mostram que o sistema é capaz de detectar
logos presentes em vídeos e imagens, porém é necessário hardware com uma capacidade
elevada para melhorar a precisão do modelo e para acelerar o processo de inferência.

Em relação a utilização da webcam através do uso de WebSockets, há uma limitação


de tempo de para encerrar a conexão, pois quando o usuário encerra a comunicação com o
servidor, ainda é necessário aguardar cerca de 20 segundos até que o servidor libere os
recursos da conexão anterior e esteja disponível para atender à novas requisições.

Em resumo, este trabalho contribui para área acadêmica ao abordar a ausência de um


conjunto de dados específico para detecção de logotipos do IFMT, além de apresentar uma
implementação prática no campo de reconhecimento de objetos. Essas contribuições são
valiosas tanto para a comunidade científica quanto para a instituição, fornecendo recursos e
inspiração relevantes para futuros estudos e aplicações no campo de reconhecimento de
objetos e da identificação de logotipos de instituições específicas.
43

6 TRABALHOS FUTUROS

Para trabalhos futuros, seria interessante explorar alternativas para ajustar o tempo de
Keep-alive da conexão. Isso pode ajudar a otimizar a comunicação entre o servidor e o
cliente, melhorando a eficiência e a estabilidade do sistema. Uma outra sugestão é investigar o
desempenho de modelos mais avançados, como o YOLOv8m ou versões superiores, esses
modelos têm arquiteturas mais complexas e podem oferecer melhores resultados em termos
de precisão e detecção de objetos.

Para aprimorar o poder de generalização do modelo, pode-se incluir imagens de


diferentes contextos, condições de iluminação e variações de objetos. Uma base de dados
mais abrangente ajudará a fortalecer o modelo e melhorar sua capacidade de detecção em
cenários diversos, além de utilizar uma base de dados mais ampla para aperfeiçoar o poder de
generalização do modelo.

E para inferências mais rápidas podendo explorar a possibilidade de utilizar uma


máquina com GPU para melhorar o desempenho dos modelos e reduzir o tempo de
processamento. E uma outra implementação para este modelo ou futuros é identificar a
logomarca da instituição em pontos estratégicos.

Essas sugestões visam aprimorar o sistema de detecção de logomarca nos uniformes,


proporcionando melhorias no desempenho, generalização, eficiência e aplicabilidade do
modelo em diferentes cenários e contextos.
44

REFERÊNCIAS

ALI, L.; ALNAJJAR, F.; PARAMBIL, M. M. A.; et al. Development of YOLOv5-Based


Real-Time Smart Monitoring System for Increasing Lab Safety Awareness in Educational
Institutions. Sensors, v. 22, n. 22, p. 8820, 2022. MDPI AG. DOI
http://dx.doi.org/10.3390/s22228820. Disponível em:
<https://www.mdpi.com/1424-8220/22/22/8820>. Acesso em: 1 jun. 2023.

ALMEIDA, W. R. A. Uniforme escolar e uniformização dos corpos. Revista Tempos e


Espaços em Educação, v. 10, n. 22, p. 09-22, 4 maio 2017. Disponível em:
<https://seer.ufs.br/index.php/revtee/article/view/6134>. Acesso em: 1 fev. 2023.

ALMEIDA JUNIOR, Israel Nunes de; BARROS, Pedro Henrique Guimarães. Data Mining.
In: ALMEIDA JUNIOR, Israel Nunes de; BARROS, Pedro Henrique Guimarães. Análise dos
Tipos de Gravação Sonora para Identificação da Doença de Parkinson Utilizando
Machine Learning. 2018. Relatório de Projeto de Pesquisa (Doutorado) - Universidade
Federal do Rio de Janeiro, [S. l.], 2018. Disponível em:
<https://www.researchgate.net/publication/326546843_Analise_dos_Tipos_de_Gravacao_Son
ora_para_Identificacao_da_Doenca_de_Parkinson_Utilizando_Machine_Learning>. Acesso
em: 2 jun. 2023.

BUDUMA, Nithin; BUDUMA, Nikhil; PAPA, Joe. Fundamentals of deep learning. 2. ed.
Sebastopol: O‘Really Media, Inc., 2017.

CASTRO, C. L. DE .; BRAGA, A. P.. Aprendizado supervisionado com conjuntos de dados


desbalanceados. Sba: Controle & Automação Sociedade Brasileira de Automatica, v. 22,
n. 5, p. 441–466, set. 2011. Disponível em:
<https://www.scielo.br/j/ca/a/pXMZjzHJcJtkLVYLLDHHTxw/>. Acesso em: 4 jun. 2023.

CHENG, Zhe et al. YOLOv3 Object Detection Algorithm with Feature Pyramid Attention for
Remote Sensing Images. Sensors & Materials, v. 32, 2020. Disponível em:
<https://doi.org/10.18494/SAM.2020.3130>. Acesso em: 7 mar. 2023.

CHEN, Zhaoyi et al. Plant disease recognition model based on improved YOLOv5.
Agronomy, v. 12, n. 2, p. 365, 2022. Disponível em:
<https://doi.org/10.3390/agronomy12020365>. Acesso em: 10 mar. 2023.

CORREIA, Igor Bispo de Moraes Coelho. Redes neurais profundas. In: CORREIA, Igor
Bispo de Moraes Coelho. Detecção de desmatamento em imagens de SAR usando redes
neurais profundas. 2021. Adicionais: Trabalho de conclusão de curso (Bacharelado) -
Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da
Computação, [S. l.], 2021. Disponível em: <https://bdm.unb.br/handle/10483/31188>. Acesso
em: 24 maio 2023.

DE CASTRO, Angelo, SY, Michael A ; CASTAÑEDA, John A. Development of a Detection


System for Endangered Mammals in Negros Island, Philippines Using YOLOv5n. Disponível
em: <osf.io/62vje>. Acesso em: 20 maio 2023.
45

DENG, Li; YU, Deng. Deep Learning: Methods and Applications. Foundations and
Trends® in Signal Processing, [S. l.], v. 7, p. 197-387, 30 jun. 2014. DOI
http://dx.doi.org/10.1561/2000000039. Disponível em:
<https://nowpublishers.com/article/Details/SIG-039>. Acesso em: 1 maio 2023.

DIRETOR GERAL DO INSTITUTO FEDERAL DE EDUCACAO, CIÊNCIA E


TECNOLOGIA DE MATO GROSSO DO CAMPUS CUIABA – CEL OCTAYDE JORGE
DA SILVA. PORTARIA NÚMERO 474, DE 3 DE DEZEMBRO DE 2018. Dispõe sobre
documentos sobre a obrigatoriedade do uso de uniforme para os estudantes do IFMT –
CAMPUS CUIABA – CEL OCTAYDE JORGE DA SILVA. 2018. Disponível. <
https://cba.ifmt.edu.br/media/filer_public/74/23/7423f087-7e36-4512-aef9-cc083c93f0d0/port
aria_no_4742018_-_regulamentar_o_uso_obrigatorio_do_uniforme_1_1.pdf >

FORMIGA, Verônica Ivone. Uniforme escolar: qual seu significado na construção da


identidade dos alunos a partir da sua relação com a cultura escolar?. 2014. Trabalho de
Conclusão de Curso (Graduação) - Universidade Federal de Santa Catarina. Centro de
Ciências da Educação, 2014. Disponível em:
<https://repositorio.ufsc.br/handle/123456789/196488>. Acesso em: 20 jan. 2023.

FURTADO, Maria Inês Vasconcellos. Redes Neurais Artificiais: Uma Abordagem Para
Sala de Aula. [S. l.: s. n.], 2019. ISBN 978-85-7247-326-2. Disponível em:
<http://educapes.capes.gov.br/handle/capes/432794>. Acesso em: 1 jul. 2023.

GAI, Rongli; CHEN, Na; YUAN, Hai. A detection algorithm for cherry fruits based on the
improved YOLO-v4 model. Neural Computing and Applications, [S. l.], v. 35, p.
13895–13906, 26 jun. 2021. DOI https://doi.org/10.1007/s00521-021-06029-z. Disponível
em: <https://link.springer.com/article/10.1007/s00521-021-06029-z>. Acesso em: 25 maio
2023.

GOOGLE, Google Colab.Disponível em:


<https://research.google.com/colaboratory/intl/pt-BR/faq.html>. Acesso em: 20 maio 2023.

SERRANO, Albert Soto i; PEÑA, López; MANUEL, Antonio. YOLO Object Detector for
Onboard Driving Images. 2017. Trabalho de conclusão de curso (Graduação em Engenharia
de Computação) - Universitat Autonoma de Barcelona, [S. l.], 2017. Disponível em:
<https://ddd.uab.cat/record/181557>. Acesso em: 17 maio 2023.

JOCHER, Glenn. 2023. Yolov5 confusion matrix with background FP=1 and TN=0
Disponível em: <https://github.com/ultralytics/yolov5/issues/11194>. Acesso em: 8 jun. 2023.

SANTOS JUNIOR, Juarez Monteiro dos. Analisando a viabilidade de deep learning para
reconhecimento de ações em datasets pequenos. 2018. Dissertação de Mestrado. Pontifícia
Universidade Católica do Rio Grande do Sul. Disponível em:
<https://tede2.pucrs.br/tede2/handle/tede/8036>. Acesso em: 18 mai. 2023.

KUKIL. 2022. “Intersection over Union (IoU) in Object Detection & Segmentation.”
Disponível em:
<https://learnopencv.com/intersection-over-union-iou-in-object-detection-and-segmentation/>
. Acesso em: 8 jun. 2023.
46

LEE, Sang Ho; KIM, Sung Jin; HONG, Seok Hoo. On URL normalization. In: International
Conference on Computational Science and Its Applications. Berlin, Heidelberg: Springer
Berlin Heidelberg, 2005. p. 1076-1085.Disponível em
<https://doi.org/10.1007/11424826_115> .Acesso em: 16 jun. 2023.

Library of Congress. URI Generic Syntax -- Summary: URI Resource Pages - IFLA
CDNL Alliance for Digital Standards (ICABS) (Standards - Library of Congress). 2007.
Disponível em: <https://www.loc.gov/standards/uri/generic.html> Acesso em: 16 jun. 2023.

LIU, Yang; WANG, Yongfu; LI, Yang; LI, Qiansheng; WANG, Jian. SETR-YOLOv5n: A
Lightweight Low-Light Lane Curvature Detection Method Based on Fractional-Order Fusion
Model. IEEE Access, [S. l.], p. 93003 - 93016, 1 set. 2022. Disponível em:
<https://ieeexplore.ieee.org/abstract/document/9874851>. Acesso em: 10 abr. 2023.

LUCHI, Lucas; ADAMI, Andre. (2020). Deep Learning aplicado a inspeção visual da
presença de um componente de conjunto de eixo. Scientia cum Industria. 8. 135-144. 2020 .
Disponível em: <http://dx.doi.org/10.18226/23185279.v8iss2p135>. Acesso em: 8 jun. 2023.

MARTELLI, Alex, et al. Python in a Nutshell. O'Reilly Media, Inc., 2023.

MANUABA, I. B. P.; RUDIASTINI, E. API REST web service and backend system of
lecturer’s assessment information system on politeknik negeri bali. In: Journal of Physics:
Conference Series. IOP Publishing, 2018. p. 012069. Disponível em:
<https://iopscience.iop.org/article/10.1088/1742-6596/953/1/012069>. Acesso em: 8 mar.
2023.

MARTINS, Roberto Augusto Philippi. API REST Web service and backend system Of
Lecturer’s Assessment Information System on Politeknik Negeri Bali. In: MARTINS,
Roberto Augusto Philippi. Aplicação de Redes Convolucionais Profundas para Detecção
de Massas em Mamografias. 2019. Trabalho de conclusão de curso (Graduação) -
Universidade Federal de Santa Catarina. Centro Tecnológico. Engenharia Eletrônica., [S. l.],
2019. Disponível em: <https://repositorio.ufsc.br/handle/123456789/197793>. Acesso em: 9
abr. 2023.

MUNIN, Alicia, et al. Real Time Vessel Detection Model Using Deep Learning
Algorithms for Controlling a Barrier System, 2023. Disponível em:
<https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4423353>. Acesso em: 9 abr. 2023.

NETO, Manuel M. n.d. Fundamentos de processamento de imagens. Disponível em:


<https://www.inf.ufrgs.br/~cwaraujo/inf01046/laboratorio1.html>. Acesso em: 8 mai. 2023.

REN, Z.; ZHANG, H.; LI, Z. Improved YOLOv5 Network for Real-Time Object Detection in
Vehicle-Mounted Camera Capture Scenarios. Sensors, v. 23, n. 10, p. 4589, 9 mai 2023.
Disponível em: <https://www.mdpi.com/1424-8220/23/10/4589>. Acesso em: 12 mai. 2023.

ROSEBROCK, Adrian. 2016. Intersection over Union (IoU) for object detection.
Disponível em:
<https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/>.
Acesso em: 8 jun. 2023.
47

SALVI, Andrey de Aguiar. Ciência da computação. In: SALVI, Andrey de Aguiar.


Convolutional neural networks compression for object detection. 2021. Dissertação
(Mestrado) - Pontifícia Universidade Católica do Rio Grande do Sul, 2021. Disponível em:<
https://tede2.pucrs.br/tede2/handle/tede/9890>. Acesso em: 19 abr. 2023.

SANG, Jun et al. An improved YOLOv2 for vehicle detection. Sensors, v. 18, n. 12, p. 4272,
2018. Disponível em: <https://www.mdpi.com/1424-8220/18/12/4272>. Acesso em: 9 mar.
2023.

SELENIUM. The Selenium Browser Automation Project. Disponível em:


<https://www.selenium.dev/documentation/>. Acesso em: 8 jun. 2023.

SHANMUGAMANI, Rajalingappaa. Deep Learning for Computer Vision. Packt


Publishing Ltd, 2018.

SHARMA, Sourabh. Modern API Development with Spring and Spring Boot: Design
highly scalable and maintainable APIs with REST, gRPC, GraphQL, and the reactive
paradigm. Packt Publishing Ltd, 2021.

SKÖLD, Jesper. Automatic quality assessment of formed fiber products via Computer
Vision and Artificial Intelligence. Dissertation, 2023. Disponível em:
<https://urn.kb.se/resolve?urn=urn:nbn:se:hh:diva-50376>. Acesso em: 5 jun. 2023.

SOLAWETZ, Jacob. Train, Validation, Test Split for Machine Learning. [S. l.], 4 set.
2020. Disponível em: <https://blog.roboflow.com/train-test-split/>. Acesso em: 2 jul. 2023.

TENG, Shuai; LIU, Zongchao; LI, Xiaoda. Improved YOLOv3-Based Bridge Surface Defect
Detection by Combining High-and Low-Resolution Feature Images. Buildings, v. 12, n. 8, p.
1225, 2022. Disponível em: <https://www.mdpi.com/2075-5309/12/8/1225>. Acesso em: 2
abr. 2023.

TIAN, Yunong et al. Apple detection during different growth stages in orchards using the
improved YOLO-V3 model. Computers and electronics in agriculture, v. 157, p. 417-426,
2019. Disponível em: <https://dl.acm.org/doi/abs/10.1016/j.compag.2019.01.012>. Acesso
em: 21 mar. 2023.

VIEIRA, Vaninha et al. Tópicos em Gerenciamento de Dados e Informações: Minicursos do


SBBD 2017. Tópicos, v. 2, p. 10, 2017. Disponível em:
<https://sol.sbc.org.br/livros/index.php/sbc/catalog/book/31>. Acesso em: 20 mar. 2023.

WANG, V., Salim, F., & Moskovits, P. (2013). The Definitive Guide to HTML5
WebSocket. New York: Apress, 2013.

YAO, Jia et al. A real-time detection algorithm for Kiwifruit defects based on YOLOv5.
Electronics, v. 10, n. 14, p. 1711, 2021. Disponível em:
<https://www.mdpi.com/2079-9292/10/14/1711>. Acesso em: 21 jan. 2023.

YU, Jimin; ZHANG, Wei. Face mask wearing detection algorithm based on improved
YOLO-v4. Sensors, v. 21, n. 9, p. 3263, 2021. Disponível em:
<https://doi.org/10.3390/s21093263>. Acesso em: 20 jan. 2023.
48

ZHAO, Bo. Web scraping. Encyclopedia of big data, p. 1-3, 2017.

ZOPH, Barret et al. Learning data augmentation strategies for object detection. In: Computer
Vision–ECCV 2020: 16th European Conference, Glasgow, UK, August 23–28, 2020,
Proceedings, Part XXVII 16. Springer International Publishing, 2020. p. 566-583.
Disponivel: <https://arxiv.org/abs/1906.11172> Acesso em: 15 jun. 2023.
49

ANEXO
50

ANEXO A - Diagrama da arquitetura YOLOv8

Fonte:“Brief summary of YOLOv8 model structure · Issue #189 · ultralytics/ultralytics.”


2023. GitHub. disponível em https://github.com/ultralytics/ultralytics/issues/189. Acesso em:
15 maio 2023.
51

APÊNDICE
52

Apêndice A - Link para código fonte da aplicação

Fonte: Repositorio da aplicação FastAPI. Disponível em:


https://github.com/limonheiro/-ifmt-uniforme-yolov8 Acesso em: 5 julho. 2023.

Você também pode gostar