<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Caixa delimitadora Archives - Visão Computacional</title>
	<atom:link href="https://visaocomputacional.com.br/tag/caixa-delimitadora/feed/" rel="self" type="application/rss+xml" />
	<link>https://visaocomputacional.com.br/tag/caixa-delimitadora/</link>
	<description>Tecnologias, teorias e testes.</description>
	<lastBuildDate>Thu, 28 Aug 2025 18:27:16 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://visaocomputacional.com.br/wp-content/uploads/2021/12/cropped-logo-150x150-1-32x32.png</url>
	<title>Caixa delimitadora Archives - Visão Computacional</title>
	<link>https://visaocomputacional.com.br/tag/caixa-delimitadora/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>YOLO Versões 3 e 4 (Arquitetura)</title>
		<link>https://visaocomputacional.com.br/yolo-versoes-3-e-4-arquitetura/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=yolo-versoes-3-e-4-arquitetura</link>
		
		<dc:creator><![CDATA[Piemontez]]></dc:creator>
		<pubDate>Sat, 30 Mar 2024 14:23:25 +0000</pubDate>
				<category><![CDATA[Visão computacional]]></category>
		<category><![CDATA[Anchor Box]]></category>
		<category><![CDATA[Caixa delimitadora]]></category>
		<category><![CDATA[Caixas de âncora]]></category>
		<category><![CDATA[Camada Convolucional]]></category>
		<category><![CDATA[Darknet]]></category>
		<category><![CDATA[Feature Pyramid Networks]]></category>
		<category><![CDATA[FPN]]></category>
		<category><![CDATA[PAN]]></category>
		<category><![CDATA[Path Aggregation Network]]></category>
		<category><![CDATA[ResNet]]></category>
		<category><![CDATA[Spatial Pyramid Polling]]></category>
		<category><![CDATA[SSP]]></category>
		<category><![CDATA[YOLO]]></category>
		<guid isPermaLink="false">https://visaocomputacional.com.br/?p=5157</guid>

					<description><![CDATA[<p>Este artigo, explana o funcionamento das versões 3 e 4 do YOLO, conforme descrito em seus artigos científicos, com foco no detalhamento de suas redes neurais. Detalhando quais são as camadas ocultas destas duas redes neurais e uma breve descrição de como é o funcionamento destas camadas. </p>
<p>The post <a href="https://visaocomputacional.com.br/yolo-versoes-3-e-4-arquitetura/">YOLO Versões 3 e 4 (Arquitetura)</a> appeared first on <a href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Este artigo, explana o funcionamento das versões 3 e 4 do YOLO, conforme descrito em artigos científicos, com foco em suas redes neurais, detalhando quais são as camadas ocultas destas duas redes neurais e uma breve descrição de como é o funcionamento dessas camadas. </p>



<p>Alguns dos comportamentos realizados pela rede neural do YOLO v3 e v4 são idênticos ao das suas versões 1 e 2, que serão apresentadas de forma resumida neste artigo, destacando assim as melhorias das versões 3 e 4. Antes de prosseguir, recomendo a leitura dos artigos:  <a href="https://visaocomputacional.com.br/yolo-para-deteccao-de-objetos-visao-geral/">YOLO para Detecção de Objetos – Visão Geral</a> e <a href="https://visaocomputacional.com.br/yolo-versoes-1-e-2-arquitetura/">YOLO Versões 1 e 2 (Arquitetura)</a>.</p>



<h2 class="wp-block-heading">Como funciona?</h2>



<p>O YOLO utiliza uma rede neural profunda (DNN – Deep Neural Network), rede neural convolucional, cuja a arquitetura é chamada de Darknet, com o mesmo nome do framework utilizado para implantá-la. Sua implementação foi desenvolvida na linguagem C, porém, com a ajuda da comunidade e empresas, já está disponível em várias outras linguagens de programação.</p>



<p>O YOLO cria diversas caixas delimitadoras, para cada caixa é atribuído um valor de confiança, com a porcentagem (0 até 1) de existir um objeto, também é realizada a predição de que tipo de objeto existe na caixa. O valor de confiança para a caixa delimitadora e a predição da classe são combinados em uma pontuação final, que vai informar a probabilidade dessa caixa conter um objeto específico. Por fim, é realizado o processo de supressão não máxima, a fim de “filtrar”/”eliminar” falsos objetos e mesclar regiões de um mesmo objeto <a href="https://visaocomputacional.com.br/yolo-para-deteccao-de-objetos-visao-geral/#refs">[AG]</a>. </p>



<p>Nem todo o processo do YOLO é realizado dentro da Rede Neural, como por exemplo, a supressão não máxima, que elimina detecções repetidas de um mesmo objeto, é realizada fora da rede neural. O redimensionamento da imagem também é realizado fora da rede neural, assim como normalizar a quantidade e ordem de canais de cores da imagem.</p>



<p>É Importante lembrar, que atualmente a função de perda, responsável por treinar a rede neural YOLO, faz parte da biblioteca DarkNet, ou seja, independente de qual tecnologia for utilizada para usar o YOLO, será necessária a biblioteca DarkNet para treinar os classificadores. </p>



<h2 class="wp-block-heading">YOLO V3</h2>



<p>Em relação às suas versões anteriores, a versão 3 não possui grandes mudanças segundo o próprio autor, ao mencionar o seguinte texto na introdução do seu artigo <a href="https://pjreddie.com/media/files/papers/YOLOv3.pdf">YOLO v3</a>: <em>&#8220;Consegui fazer algumas melhorias no YOLO. Mas, honestamente, nada como super interessante, apenas um monte de pequenas mudanças que o tornam melhor.&#8221;</em> </p>



<p>Uma das principais melhorias no YOLO v3 é o uso de uma nova arquitetura CNN chamada Darknet-53. O Darknet-53 é uma variante com arquitetura ResNet que foi projetada especificamente para tarefas de detecção de objetos. Possui 53 camadas convolucionais, capaz de alcançar melhores precisões na detecção de objetos <a href="#refs">[KR]</a>.</p>



<p>Outra melhoria no YOLO v3 são as caixas de âncora (anchor boxes) com diferentes escalas e proporções. No YOLO v2, as caixas de âncora eram todas do mesmo tamanho, o que limitava a capacidade do algoritmo de detectar objetos de diferentes tamanhos e formas. No YOLO v3, as caixas de âncora são dimensionadas e suas proporções são variadas, para melhor corresponder ao tamanho e à forma dos objetos que estão sendo detectados <a href="#refs">[KR]</a>.</p>



<p>YOLO v3 também introduz o conceito de &#8220;redes de pirâmide de recursos&#8221; (FPN). FPNs são arquiteturas CNN usadas para detectar objetos em múltiplas escalas. Elas constroem uma pirâmide de mapas de características, com cada nível da pirâmide sendo usado para detectar objetos em uma escala diferente. Isso ajuda a melhorar o desempenho de detecção em objetos pequenos, pois o modelo é capaz de perceber objetos em escalas maiores <a href="#refs">[KR]</a>. No final deste artigo, o FPN, é melhor descrito.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="570" src="https://visaocomputacional.com.br/wp-content/uploads/2024/02/yolov3-1024x570.webp" alt="" class="wp-image-5588" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/02/yolov3-1024x570.webp 1024w, https://visaocomputacional.com.br/wp-content/uploads/2024/02/yolov3-300x167.webp 300w, https://visaocomputacional.com.br/wp-content/uploads/2024/02/yolov3-768x427.webp 768w, https://visaocomputacional.com.br/wp-content/uploads/2024/02/yolov3.webp 1100w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Figura 1 &#8211; Arquitetura YOLO v3</figcaption></figure>



<h3 class="wp-block-heading" id="3888">Detecção em três escalas</h3>



<p id="c4e0">A arquitetura mais recente possui conexões de salto residuais (ResNet) e aumento da resolução<span class="has-inline-color has-black-color"> <a href="#refs">[KA]</a></span>.  Essas conexões de salto permitem que informações de gradiente passem pelas camadas, criando &#8220;rodovias&#8221; de informações, onde a saída de uma camada/ativação anterior seja adicionada à saída de uma camada mais profunda <a href="#refs">[DST]</a>. Isto permite que as informações das partes anteriores da rede sejam passadas para as partes mais profundas da rede, ajudando a manter a propagação do sinal mesmo em redes mais profundas. As conexões de salto são um componente crítico que permitiu o treinamento bem-sucedido de redes neurais mais profundas.</p>



<p>Você pode observas nas Figuras 1, os saltos residuais pelas camadas 36 e 61. Note que no final de cada salto existe o simbolo &#8220;*&#8221;, indicando que as informações do início do salto foram adicionadas (normalizadas) às informações da última camada dentro do bloco.</p>



<p id="c4e0">A característica mais notável da v3 é que ela faz detecções em três escalas diferentes, fornecidas precisamente pela redução da resolução das dimensões da imagem de entrada em 32, 16 e 8, respectivamente. A detecção é feita aplicando kernels de detecção 1 x 1 em mapas de recursos de três tamanhos diferentes em três locais diferentes na rede<span class="has-inline-color has-black-color"> <a href="#refs">[KA]</a></span><strong>.</strong></p>



<p id="dc79">A forma do kernel de detecção do YOLO v3 é <strong>1 x 1 x (B x (5 + C) )</strong>, onde B é o número de caixas delimitadoras que uma célula no mapa de recursos pode prever, o “5” corresponde aos 4 primeiros atributos da caixa delimitadora mais a confiança de um objeto, e o C é o número de classes treinadas. Por exemplo, na rede neural YOLO v3 treinado com COCO DataSet, com 3 caixas delimitadoras(B=3) e capacidade pra classificar 80 objetos (C=80),  teremos o tamanho de um kernel de 1 x 1 x (3 * (5 + 80)) = 255 <a href="#refs">[KA]</a>.</p>



<p id="99dd">A primeira detecção é feita pela 82ª camada. Para as primeiras 81 camadas, a imagem é amostrada pela rede, de modo que a 81ª camada tenha um passo(Stride) de filtro de 32. Se tivermos uma imagem de 416 x 416, o mapa de características resultante teria o tamanho de 13 x 13. Uma detecção é feito aqui usando o kernel de detecção 1 x 1, fornecendo um mapa de recursos de detecção de 13 x 13 x 255 <a href="#refs">[KA]</a>.</p>



<p id="6736">Em seguida, o mapa de características da camada 79 é submetido a algumas camadas convolucionais antes de ser amostrado em 2x para dimensões de 26 x 26. Este mapa de características é então concatenado em profundidade com o mapa de características da camada 61. Em seguida, os mapas de características combinados são novamente submetidos a algumas camadas convolucionais 1 x 1 para mesclar os recursos da camada anterior (61). Então, a segunda detecção é feita pela 94ª camada, produzindo um mapa de características de detecção de 26 x 26 x 255 <a href="#refs">[KA]</a>.</p>



<p id="2ccf">Um procedimento semelhante é seguido novamente, onde o mapa de características da camada 91 é submetido a algumas camadas convolucionais antes de ser concatenado em profundidade com um mapa de características da camada 36. Como antes, algumas camadas convolucionais 1 x 1 seguem para fundir as informações da anterior camada (36). A terceira e ultima detecção na 106ª camada é realizada, produzindo um mapa de características de tamanho 52 x 52 x 255 <a href="#refs">[KA]</a>.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img decoding="async" src="https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida1-1024x500.png" alt="" class="wp-image-5928" width="840" height="410" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida1-1024x500.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida1-300x146.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida1-768x375.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida1-1536x750.png 1536w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida1.png 1602w" sizes="(max-width: 840px) 100vw, 840px" /><figcaption>Figura 2 &#8211; Primeira saída YOLO v3 [DPB].</figcaption></figure></div>



<p>Cada kernel de detecção corresponde a apenas a um bloco de cada saída do Yolo. Observe na Figura 2, o tensor da primeira saída, onde cada célula da <strong>grade 13&#215;13</strong>, é responsável por prever <strong>3 caixas delimitadoras</strong>, que possuí as informações de suas <strong>coordenas</strong>, nas suas 4 primeiras posições,  seguida da <strong>pontuação de confiança</strong> (probabilidade da caixa conter um objeto), e uma <strong>pontuação de predição para cada classe</strong> de objeto treinado. </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="501" src="https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida2-1024x501.png" alt="" class="wp-image-5929" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida2-1024x501.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida2-300x147.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida2-768x375.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida2-1536x751.png 1536w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida2.png 1604w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Figura 3 &#8211; Segunda saída YOLO v3 <a href="#refs">[DPB]</a>.</figcaption></figure>



<p>A mesma estrutura de classificação ocorre na segunda saída, porém agora com uma <strong>grade de 26&#215;26</strong>, maior que a saída anterior, pois nesta houve um aumento de resolução.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="500" src="https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida3-1024x500.png" alt="" class="wp-image-5930" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida3-1024x500.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida3-300x146.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida3-768x375.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida3-1536x750.png 1536w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov3_saida3.png 1602w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Figura 4 &#8211; Terceira saída YOLO v3 <a href="#refs">[DPB]</a>.</figcaption></figure>



<p>Não diferente das saídas anteriores, ocorre a mesma estrutura de classificação, porém com uma <strong>grade de 52&#215;52</strong>.</p>



<p><strong>Caixas de âncora</strong></p>



<p>Assim como a versão 2, a versão 3 também usa caixas de âncora. Caixas de âncora são um conjunto de caixas predefinidas com altura e largura específicas; eles atuam como uma estimativa. São múltiplas caixas delimitadoras predefinidas com diferentes proporções e tamanhos centralizados em cada píxel&nbsp;<a href="#refs">[SA]</a>. As caixas de ancoragem contêm a proporção de determinado objeto conforme ilustrado na Figura 9 e 10.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="554" height="404" src="https://visaocomputacional.com.br/wp-content/uploads/2023/09/image-1.png" alt="" class="wp-image-5042" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/09/image-1.png 554w, https://visaocomputacional.com.br/wp-content/uploads/2023/09/image-1-300x219.png 300w" sizes="auto, (max-width: 554px) 100vw, 554px" /><figcaption>Figura 5 – Caixas âncora&nbsp;<a href="#refs">[DPB2]</a>.</figcaption></figure></div>



<p>A versão do YOLO v2 não prevê diretamente as caixas delimitadoras, mas sim as probabilidades que correspondem às caixas âncoras lado a lado, e retorna um conjunto exclusivo de previsões para cada caixa de âncora definida. O uso de caixas de âncora permite que uma rede detecte vários objetos, podendo ser de diferentes escalas ou sobrepostos&nbsp;<a href="https://visaocomputacional.com.br/yolo-versoes-1-e-2-arquitetura/#refs">[DPB]</a>.</p>



<p>Para gerar as detecções finais de objetos, as caixas de âncora lado a lado que pertencem à classe de fundo são removidas, e as demais são filtradas por sua pontuação de confiança. As caixas de âncora com a maior pontuação de confiança são selecionadas usando supressão não máxima <a href="#refs">[DPB]</a>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="864" height="208" src="https://visaocomputacional.com.br/wp-content/uploads/2023/09/image.png" alt="" class="wp-image-5041" srcset="https://visaocomputacional.com.br/wp-content/uploads/2023/09/image.png 864w, https://visaocomputacional.com.br/wp-content/uploads/2023/09/image-300x72.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2023/09/image-768x185.png 768w" sizes="auto, (max-width: 864px) 100vw, 864px" /><figcaption>Figura 6 – Caixas de ancoragem com supressão não máxima&nbsp;<a href="#refs">[DPB2]</a>.</figcaption></figure>



<h3 class="wp-block-heading" id="a3f8">Mais caixas delimitadoras por imagem</h3>



<p id="b947">Para uma imagem de entrada do mesmo tamanho, o YOLO v3 prevê mais caixas delimitadoras do que o YOLO v2. Por exemplo, com sua resolução nativa de 416 x 416, o YOLO v2 previu 13 x 13 x 5 = 845 caixas. Em cada célula da grade, 5 caixas foram detectadas utilizando 5 âncoras.</p>



<p id="ba89">Por outro lado, o YOLO v3 prevê caixas em 3 escalas diferentes. Para a mesma imagem de 416 x 416, o número de caixas previstas é 10.647. Isso significa que&nbsp;<strong>o YOLO v3 prevê 10x o número de caixas previstas pelo YOLO v2.</strong>&nbsp;Você pode facilmente imaginar por que é mais lento que o YOLO v2. Em cada escala, cada grade pode prever 3 caixas usando 3 âncoras. Como existem três escalas, o número de caixas de ancoragem utilizadas no total é 9, 3 para cada escala <a href="#refs">[KA]</a>.</p>



<h3 class="wp-block-heading">Remoção da função SoftMax</h3>



<p id="bc13">Anteriormente no YOLO, os autores costumavam suavizar as pontuações da classe e considerar a classe com pontuação máxima, como a classe do objeto contido na caixa delimitadora. Isso foi modificado no YOLO v3 <a href="#refs">[KA]</a>.</p>



<p id="f1c0">As classes Softmaxing baseiam-se na suposição de que as classes são mutuamente exclusivas, ou seja, se um objeto pertence a uma classe, então ele não pode pertencer à outra <a href="https://visaocomputacional.com.br/wp-admin/post.php?post=5157&amp;action=edit#refs">[KA]</a>. Isso funciona bem para determinadas bases de dados<a href="#refs">.</a> No entanto, quando temos classes semelhantes, como&nbsp;homem&nbsp;e mulher, em um conjunto de dados, esta suposição falha. Esta é a razão pela qual os autores do YOLO se abstiveram de usar softmaxing nas classes. Em vez disso, cada pontuação de classe é prevista e um limite é usado para prever vários rótulos para um objeto. As classes com pontuação superior a esse limite são atribuídas à caixa <a href="#refs">[KA]</a>.</p>



<h3 class="wp-block-heading">Diferença da arquitetura YOLO v2 e YOLO v3</h3>



<p>Para facilitar o entendimento na mudança de arquitetura do yolo v2 e v3, observe na figura 5, a arquitetura do YOLO v2, descrita no artigo <a href="http://yolo-versoes-1-e-2-arquitetura">YOLO Versões 1 e 2</a>, ao lado da arquitetura do YOLO v3.</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov2_x_yolov3-964x1024.png" alt="" class="wp-image-5927" width="840" height="892" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov2_x_yolov3-964x1024.png 964w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov2_x_yolov3-282x300.png 282w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov2_x_yolov3-768x816.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov2_x_yolov3-1445x1536.png 1445w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov2_x_yolov3.png 1594w" sizes="auto, (max-width: 840px) 100vw, 840px" /><figcaption>Figura 5 &#8211; Comparação arquitetura YOLO v2 e YOLO v3 <a href="#refs">[DPB]</a>.</figcaption></figure>



<h2 class="wp-block-heading">YOLO v4</h2>



<p>O YOLO v4, passou a ser desenvolvido por outros desenvolvedores, pois o autor original parou suas pesquisas em visão computacional, devido a percepção do impacto dela na sociedade. Quem assumiu a continuadade do YOLO foram os autores Alexey Bochkovskiy, Chien-Yao Wang e Hong-Yuan Mark Liao.</p>



<p>O objetivo desta versão foi projetar um sistema rápido para funcionar em ambientes produdivos e otimizado para computação paralela, para que qualquer pessoa com uma GPU (Processador gráfico) convencional possa treinar e testar com resultados satisfatórios <a href="#refs">[ACH]</a>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="303" src="https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov4_arquitetura-1024x303.png" alt="" class="wp-image-6000" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov4_arquitetura-1024x303.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov4_arquitetura-300x89.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov4_arquitetura-768x227.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov4_arquitetura-1536x454.png 1536w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov4_arquitetura.png 1691w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Figura 6 &#8211; Arquitetura YOLO v4 <a href="#refs">[ACH]</a>. </figcaption></figure>



<p>Podemos dizer que o YOLO v4, em essência, consiste em três pilares principais, o backbone (espinha dorsal) para extração de recursos, o neck (pescoço) focado na agregação de recursos e a head (cabeça) para gerar detecções.</p>



<h4 class="wp-block-heading">Backbone (Espinha dorsal)</h4>



<p>O backbone YOLO é uma pilar de rede neural convolucional que agrupa pixels de imagem para formar recursos em diferentes granularidades. O Backbone normalmente é pré-treinado em um conjunto de dados de classificação, normalmente ImageNet. Backbone é a arquitetura de aprendizagem profunda que atua basicamente como um extrator de recursos. Todos os modelos de backbone são basicamente modelos de classificação.</p>



<p>Três backbones diferentes foram selecionados, durante o estudo do YOLO v4. Após análise rigorosa de diferentes parâmetros em benchmarks padrão, os autores finalizaram o CSPDarknet53 como a espinha dorsal e extrator de características da arquitetura YOLO v4 <a href="#refs">[ACH]</a>.</p>



<h4 class="wp-block-heading">Neck (Pescoço)</h4>



<p>O Neck do YOLO combina e mistura as representações da camada ConvNet antes de passar para o pilar de previsão Head. Neck é um subconjunto do pilar backbone, basicamente coleta mapas de recursos de diferentes estágios do backbone. Em termos simples, é um agregador de recursos.</p>



<p>Neste pilar, os autores acoplaram camadas SPP (Spatial Pyramid Pooling) modificadas para aumentar o campo receptivo da rede, e PAN (Path Aggregation Networks) modificado para melhor concatenação de texturas locais e características globais da CSPDarknet53. No final do artigo, SSP e PAN, são melhor descritos. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="727" src="https://visaocomputacional.com.br/wp-content/uploads/2024/03/YoloV4_simplificado-1024x727.png" alt="" class="wp-image-6028" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/03/YoloV4_simplificado-1024x727.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/YoloV4_simplificado-300x213.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/YoloV4_simplificado-768x545.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/YoloV4_simplificado.png 1242w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Figura 7 &#8211; Fluxo simplificado do YOLO v4 <a href="#refs">[DPB3]</a>.</figcaption></figure>



<h4 class="wp-block-heading">Head (Cabeça)</h4>



<p>Esta é a parte da rede que faz a caixa delimitadora e a previsão da classe. É guiado pelas três funções de perda YOLO para classe, caixa e objetividade.</p>



<p>Head também é conhecido como detector de objetos, encontra basicamente a região onde o objeto pode estar presente, mas não informa qual objeto está presente naquela região. No YOLO v4, temos detectores de dois estágios e detectores de um estágio, que são subdivididos em detectores baseados em âncora e detectores sem âncora.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="824" height="1024" src="https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov4_simplificado_02-824x1024.jpeg" alt="" class="wp-image-6029" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov4_simplificado_02-824x1024.jpeg 824w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov4_simplificado_02-241x300.jpeg 241w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov4_simplificado_02-768x955.jpeg 768w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov4_simplificado_02-1235x1536.jpeg 1235w, https://visaocomputacional.com.br/wp-content/uploads/2024/03/yolov4_simplificado_02.jpeg 1554w" sizes="auto, (max-width: 824px) 100vw, 824px" /><figcaption>Figura 8 &#8211; Fluxo simplificado do YOLO v4  <a href="#refs">[DPB3]</a></figcaption></figure>



<p>Se observar na imagem acima, a versão 4 é bastante semelhante ao YOLO v3. A maior diferença é que CSPDarknet é usado no Backbone e SPP e PANet são usados ​​no Neck, e todo o resto é quase igual. Se você analisar isso com muita profundidade, poderá ver uma pequena diferença, mas no geral, se você entender as três coisas acima corretamente, poderá entender o YOLO v4 <a href="#refs">[DPB]</a>.</p>



<h3 class="wp-block-heading">Diferença da arquitetura YOLO v3 e YOLO v4</h3>



<p>Para facilitar o entendimento na mudança de arquitetura do YOLO v2 e v3, a seguir, a Figura 9 ilustra as duas arquiteturas.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="947" height="1024" src="https://visaocomputacional.com.br/wp-content/uploads/2024/04/yolov3_x_yolov4-947x1024.png" alt="" class="wp-image-6119" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/04/yolov3_x_yolov4-947x1024.png 947w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/yolov3_x_yolov4-278x300.png 278w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/yolov3_x_yolov4-768x830.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/yolov3_x_yolov4-1421x1536.png 1421w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/yolov3_x_yolov4.png 1604w" sizes="auto, (max-width: 947px) 100vw, 947px" /><figcaption>Figura 9 &#8211; Comparação arquitetura YOLO v3 e YOLO v4 <a href="#refs">[DPB]</a>.</figcaption></figure>



<h2 class="wp-block-heading">Material Complementar</h2>



<h3 class="wp-block-heading">FPN &#8211; Feature Pyramid Networks</h3>



<p>Ao fazer previsões para uma escala específica, o FPN aumenta a amostragem (2×) do fluxo descendente anterior e o adiciona à camada vizinha do fluxo ascendente, conforme Figura 11 <a href="#refs">[ST]</a>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="898" src="https://visaocomputacional.com.br/wp-content/uploads/2024/04/fpn-1024x898.webp" alt="" class="wp-image-6126" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/04/fpn-1024x898.webp 1024w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/fpn-300x263.webp 300w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/fpn-768x674.webp 768w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/fpn.webp 1100w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Figura 11 &#8211; Estrutura da FPN original <a href="#refs">[ST]</a>.</figcaption></figure>



<p>A FPN é composta por um caminho ascendente e descendente. O caminho bottom-up é a rede convolucional usual para extração de características. À medida que subimos, a resolução espacial diminui. Com mais estruturas de alto nível detectadas, o valor semântico de cada camada aumenta <a href="#refs">[JH]</a>.</p>



<p>No caminho de cima para baixo, para construir camadas de resolução mais alta a partir de uma camada semântica rica. Embora as camadas reconstruídas sejam semânticas fortes, as localizações dos objetos não são precisas após toda a redução e aumento da resolução. Para contornar isto, são adicionadas conexões laterais entre as camadas reconstruídas e os mapas de características correspondentes para ajudar o detector a prever melhor a localização <a href="#refs">[JH]</a>. </p>



<p>No YOLOv4, o conceito FPN é gradualmente implementado/substituído pelo SAM, PAN e SPP modificados.</p>



<h3 class="wp-block-heading">SPP &#8211; Spatial Pyramid Pooling</h3>



<p>A camada Spatial Pyramid Pooling permite gerar recursos de tamanho fixo, qualquer que seja o tamanho de nossos mapas de recursos. Para gerar um tamanho fixo, ele usará camadas de pooling (exemplo Max Pooling) e gerará diferentes representações dos mapas de recursos.</p>



<p>Observe na figura 10, e suponha que a saída da camada convolicional (parte preta da figura) tenha 256 mapas de recursos.</p>



<ol class="wp-block-list"><li>Primeiro, cada mapa de características é agrupado para se tornar um valor único (parte cinza). Então, o tamanho do vetor é (1, 256)</li><li>Em seguida, cada mapa de características é agrupado para ter 4 valores (par verde). Então, o tamanho do vetor é (4, 256)</li><li>Da mesma forma, cada recurso é agrupado para ter 16 valores (parte azul). Então, o tamanho do vetor é (16, 256)</li><li>Os 3 vetores criados nas 3 etapas anteriores são então concatenados para formar um vetor de tamanho fixo que será a entrada da próxima camada conectada.</li></ol>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="567" height="402" src="https://visaocomputacional.com.br/wp-content/uploads/2024/04/ssp.png" alt="" class="wp-image-6122" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/04/ssp.png 567w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/ssp-300x213.png 300w" sizes="auto, (max-width: 567px) 100vw, 567px" /><figcaption>Figura 10. Uma estrutura de rede com uma camada de pooling de pirâmide espacial &#8211; SSP <a href="#refs">[KXSJ]</a>.</figcaption></figure></div>



<p>YOLOv4 usa um bloco SPP após CSPDarknet53 para aumentar o campo receptivo e separar os recursos mais importantes do backbone. O pool de pirâmide espacial consiste em pegar uma imagem de entrada e usar camadas convolucionais para extrair seu mapa de recursos, em seguida, usar o pool máximo de tamanho de janela 1 para gerar um conjunto de recursos e, em seguida, usar novamente o pool máximo de tamanho de janela 2. Repetindo este processo n vezes, você terá mapas de recursos de diferentes alturas e larguras, formando uma pirâmide. YOLO v4, em vez de aplicar SPP em uma única camada, divide o recurso ao longo da dimensão de profundidade da rede, aplica SPP em cada parte e, em seguida, combina-o novamente para gerar um mapa de recursos de saída <a href="#refs">[DPB]</a>.</p>



<h3 class="wp-block-heading">PAN &#8211; Path Aggregation Network</h3>



<p>O PANet, semelhante ao FPN, segue um caminho ascendente adicional ao caminho descendente seguido pela FPN. Isso ajuda a encurtar esse caminho usando conexões laterais limpas das camadas inferiores às superiores. Isso é chamado de conexão de&nbsp;<strong><em>“atalho”</em></strong>.</p>



<p>Na imagem abaixo, tirada do artigo Path Aggregation Network (PAN), um caminho de baixo para cima (b) é aumentado para tornar as informações da camada inferior mais fáceis de propagar para o topo. Na FPN, a informação espacial localizada viaja para cima na seta vermelha. Não está claramente demonstrado na imagem, mas o caminho vermelho passa por cerca de mais de 100 camadas. O PAN introduziu um caminho de atalho (o caminho verde) que leva apenas cerca de dez camadas para chegar à camada N₅ superior. Esses conceitos de curto-circuito disponibilizam informações localizadas refinadas para as camadas superiores.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="341" src="https://visaocomputacional.com.br/wp-content/uploads/2024/04/pan_original-1024x341.png" alt="" class="wp-image-6131" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/04/pan_original-1024x341.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/pan_original-300x100.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/pan_original-768x256.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/pan_original.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Figura 12 &#8211; Figura 1. Ilustração do nosso framework. (a) Estrutura principal da FPN. (b) Aumento do caminho de baixo para cima. (c) Agrupamento de recursos adaptativos. (d) Caixa filial. (e) Fusão totalmente conectada <a href="#refs">[SLHJJ]</a>.</figcaption></figure>



<p>PANet convencionalmente adiciona as camadas vizinhas para fazer previsões de máscara usando o pool de recursos adaptativos. No entanto, esta abordagem é ligeiramente distorcida quando o PANet é empregado no YOLOv4, de modo que, em vez de adicionar as camadas vizinhas, uma operação de concatenação é aplicada a elas, o que melhora a precisão das previsões <a href="#refs">[MR]</a>.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="720" height="355" src="https://visaocomputacional.com.br/wp-content/uploads/2024/04/panmodificado_concat.png" alt="" class="wp-image-6134" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/04/panmodificado_concat.png 720w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/panmodificado_concat-300x148.png 300w" sizes="auto, (max-width: 720px) 100vw, 720px" /><figcaption>Figura 13 &#8211; PAN modificado para o YOLO v4 <a href="#refs">[ACH]</a></figcaption></figure></div>



<p>Os PANs funcionam de forma semelhante aos FPNs, mas adicionaram um caminho de aumento de baixo para cima, como mostrado na Figura. 12, para que respostas de textura fortes de níveis baixos possam ser fundidas diretamente com respostas semanticamente ricas presentes em N5 usando um caminho de atalho <a href="#refs">[DPB]</a>.</p>



<p>No YOLO v4, <strong>o PAN Neck</strong> modificado é usado para agregação de recursos. Em vez de adição, a abordagem de concatenação é usada entre cada camada ascendente. Isso ajuda a conservar os recursos perdidos conforme Figura 15.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="867" src="https://visaocomputacional.com.br/wp-content/uploads/2024/04/panmodificado_yolo4-1024x867.png" alt="" class="wp-image-6124" srcset="https://visaocomputacional.com.br/wp-content/uploads/2024/04/panmodificado_yolo4-1024x867.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/panmodificado_yolo4-300x254.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/panmodificado_yolo4-768x651.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2024/04/panmodificado_yolo4.png 1400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Figura 14 &#8211; Estrutura do PAN original e modificado <a href="#refs">[DPB]</a>.</figcaption></figure></div>



<p><strong>Referências:</strong></p>



<p>[RJFA] YOLOv3: Redmon, Joseph and Farhadi, Ali, YOLO: An Incremental Improvement. <a href="https://pjreddie.com/media/files/papers/YOLOv3.pdf">Artigo.</a></p>



<p>[ACH] Alexey Bochkovskiy; Chien-Yao Wang; Hong-Yuan Mark Liao. YOLOv4: Optimal Speed and Accuracy of Object Detection. <a href="https://arxiv.org/pdf/2004.10934.pdf">Artigo</a></p>



<p>[KA] Kathuria, Ayoosh What’s new in YOLO v3? <a href="https://towardsdatascience.com/yolo-v3-object-detection-53fb7d3bfe6b">Acessado em 09/06/2024</a></p>



<p>[KR] Kundu, Rohit. YOLO: Algorithm for Object Detection Explained. <a href="https://www.v7labs.com/blog/yolo-object-detection#:~:text=In%20YOLO%20v2%2C%20the%20anchor,of%20the%20objects%20being%20detected.">Acessado em 08/02/2024</a>.</p>



<p>[DPB] Deep Learning Bible. Yolo V1 – EN –&nbsp;<a href="https://wikidocs.net/177719">Acessado em 15/02/2024</a>.</p>



<p>[DPB2] Deep Learning Bible. Anchor Boxes EN  <a href="https://wikidocs.net/188051">Acessado em 20/03/2024,</a></p>



<p>[DST] Data Science Team. Uma Visão Geral da ResNet e suas Variantes &#8211; <a href="https://datascience.eu/pt/aprendizado-de-maquina/uma-visao-geral-da-resnet-e-suas-variantes/">Acessado em 15/02/2024</a></p>



<p>[DPB3] Deep Learning Bible. V4 explicado em todos os detalhes <a href="https://wikidocs.net/167833">Acessado em 25/03/2024</a></p>



<p>[SA] Sharma, Aditya. Um detector de objetos melhor, mais rápido e mais forte (YOLOv2).&nbsp;<a href="https://pyimagesearch.com/2022/04/18/a-better-faster-and-stronger-object-detector-yolov2/">Acessado em 16/09/2023</a>.</p>



<p>[KXSJ] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognitio. <a href="https://arxiv.org/abs/1406.4729v4">Artigo</a>.</p>



<p>[ST] Shreejal Trivedi; DetectoRS — A Comprehensive Review. <a href="https://medium.com/visionwizard/detectors-state-of-the-art-object-detector-from-google-research-e0b89abdd1fc">Acessado em 11/04/2024</a>.</p>



<p>[JH] Jonathan Hui. Understanding Feature Pyramid Networks for object detection (FPN). <a href="https://jonathan-hui.medium.com/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c">Acessado em 12/04/2024.</a></p>



<p>[SLHJJ] Shu Liu; Lu Qi; Haifang Qin; Jianping Shi; Jiaya Jia†; Path Aggregation Network for Instance Segmentation. <a href="https://arxiv.org/pdf/1803.01534v4.pdf">Artigo</a>.</p>



<p>[MR] Milagre R. PANet: Path Aggregation Network In YOLOv4. <a href="https://medium.com/clique-org/panet-path-aggregation-network-in-yolov4-b1a6dd09d158">Acessado em 12/04/2024.</a></p>
<p>The post <a href="https://visaocomputacional.com.br/yolo-versoes-3-e-4-arquitetura/">YOLO Versões 3 e 4 (Arquitetura)</a> appeared first on <a href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>YOLO para Detecção de Objetos  &#8211; Visão Geral</title>
		<link>https://visaocomputacional.com.br/yolo-para-deteccao-de-objetos-visao-geral/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=yolo-para-deteccao-de-objetos-visao-geral</link>
		
		<dc:creator><![CDATA[Piemontez]]></dc:creator>
		<pubDate>Wed, 07 Sep 2022 22:45:45 +0000</pubDate>
				<category><![CDATA[Visão computacional]]></category>
		<category><![CDATA[Anchor Box]]></category>
		<category><![CDATA[Âncoras]]></category>
		<category><![CDATA[Bounding box]]></category>
		<category><![CDATA[Caixa delimitadora]]></category>
		<category><![CDATA[Detecção de Objetos]]></category>
		<category><![CDATA[Non maximum suppression]]></category>
		<category><![CDATA[Redes Neurais]]></category>
		<category><![CDATA[Supressão não máxima]]></category>
		<category><![CDATA[YOLO]]></category>
		<guid isPermaLink="false">https://visaocomputacional.com.br/?p=3305</guid>

					<description><![CDATA[<p>Neste primeiro post de 5, é abordado uma visão geral sobre o YOLO, como é a estrutura base de seu funcionamento e um pouco de sua história. Nos próximos posts serão detalhados como são as arquiteturas de cada uma das 4 primeiras versões do YOLO e, como Bônus, textos e materiais de apoio ensinando a [&#8230;]</p>
<p>The post <a href="https://visaocomputacional.com.br/yolo-para-deteccao-de-objetos-visao-geral/">YOLO para Detecção de Objetos  &#8211; Visão Geral</a> appeared first on <a href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Neste primeiro post de 5, é abordado uma visão geral sobre o YOLO, como é a estrutura base de seu funcionamento e um pouco de sua história. Nos próximos posts serão detalhados como são as arquiteturas de cada uma das 4 primeiras versões do YOLO e, como Bônus, textos e materiais de apoio ensinando a utilizar e treinar está técnica com diversos frameworks diferentes.  </p>



<p><strong>Observação: </strong>Para melhor entender este Post e os demais sobre YOLO, é necessário ter uma conhecimento geral sobre Inteligência Artificial e Redes Neurais.</p>



<p>O YOLO foi lançado em 2015,  por Joseph Redmon e Ali Farhadi, durante o seu doutorado e em uma demonstração da sua primeira versão no&nbsp;<em>TED Talks</em>. O YOLO foi reconhecido como uma técnica inovadora, que foi capaz de obter uma precisão igual ou superior a de outros métodos de detecção de objetos da época <a href="#refs">[AG]</a>.</p>



<p>Durante a apresentação, ele faz uma demonstração ao vivo, provando que o detector é capaz de executar em sua GPU a detecção de até 80 categorias de objetos simultaneamente, a uma taxa de mais ou menos 30 FPS, e mantendo uma ótima precisão, o que foi revolucionário para a época <a href="#refs">[AG]</a>.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class="ratio ratio-16x9"><iframe loading="lazy" title="How computers learn to recognize objects instantly | Joseph Redmon" width="800" height="450" src="https://www.youtube.com/embed/Cgxsv1riJhI?start=1&#038;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></div>
</div><figcaption>Video 1. Como os computadores aprendem a reconhecer objetos instantaneamente.</figcaption></figure>



<p>Durante esta exposição, foi apresentado a versão V3 do YOLO v3. Caso tenha curiosidade, os artigos científicos referentes as suas 3 primeiras versões são os seguintes: <a href="https://pjreddie.com/media/files/papers/yolo_1.pdf" rel="noreferrer noopener" target="_blank">YOLO v1</a>; <a href="https://pjreddie.com/media/files/papers/YOLO9000.pdf" rel="noreferrer noopener" target="_blank">YOLO v2</a> e <a href="https://pjreddie.com/media/files/papers/YOLOv3.pdf">YOLO v3</a>. </p>



<h2 class="wp-block-heading">O Diferencial YOLO</h2>



<p>Os sistemas de detecção de objetos anteriores ao YOLO, redirecionam classificadores ou localizadores para realizar a detecção. Eles aplicam o modelo (IA) a uma imagem em vários locais e escalas, onde as regiões de alta pontuação da imagem são consideradas detecções <a href="#refs">[RJPA2]</a>. Essas regiões menores, extraídas da imagem, são denominadas Bounding Box &#8211; &#8220;Regiões Delimitadoras&#8221; e cada uma dessas regiões detecta um único objeto. A Figura 1, ilustra como as técnicas de classificação, normalmente, percorrem a imagem em varias regiões e escalas diferentes para realizar a classificação do objeto.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="256" height="377" src="https://visaocomputacional.com.br/wp-content/uploads/2022/04/sliding_window_example.gif" alt="" class="wp-image-3284"/><figcaption>Fig 1 – Exemplo de como os Bounding Box percorrem a imagem em regiões menores para identificar um objeto.</figcaption></figure></div>



<p>Diferente dos algoritmos que percorrem a imagem, em busca dos objetos treinados, o YOLO apenas precisa olhar pela imagem uma única vez e enviá-la para a rede neural. Foi a partir desse conceito que ele ganhou seu nome You Only Look Once (YOLO), que significa &#8220;Você só olha uma vez&#8221;.</p>



<p>O YOLO usa uma abordagem totalmente diferente, onde é aplicado uma única rede neural à imagem completa. Para isso a rede neural divide a imagem em regiões menores e prevê caixas delimitadoras, probabilidades de existir um objeto naquela caixa e também qual a probabilidade de ser determinado objeto <a href="#refs">[RJPA2</a>]. Todo este processo é descrito a seguir.</p>



<h2 class="wp-block-heading">Como Funciona?</h2>



<p>O YOLO utiliza uma rede neural profunda (DNN &#8211; Deep Neural Network), uma rede neural convolucional, cuja a arquitetura é chamado de Darknet, com o mesmo nome do framework utilizado para implantá-lo. Sua implementação foi desenvolvida na linguagem C, porém, com a ajuda da comunidade e empresas, já é disponível em várias outras linguagens de programação.</p>



<p>Existem diversas versões do YOLO publicadas, a seguir demonstraremos o funcionamento básico/geral do YOLO, e nos próximos posts o funcionamento detalhado de cada uma das primeiras versões dele. </p>



<p>O primeiro passo que o YOLO executa é dividir a imagem em uma grade de S por S células. A grade utilizada nas primeiras versões é de 13&#215;13, 13 colunas e 13 linhas, contendo 169 células, conforme exemplo na Figura 2 abaixo. Nas versões mais recentes esse tamanho é de 19&#215;19 <a href="http://%refs">[AG]</a>.</p>



<div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" src="https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_dog_grid.png" alt="" class="wp-image-3454" width="457" height="457" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_dog_grid.png 457w, https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_dog_grid-300x300.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_dog_grid-150x150.png 150w" sizes="auto, (max-width: 457px) 100vw, 457px" /><figcaption>Figura 2 &#8211; YOLO Divisão da imagem em grades.</figcaption></figure></div>



<p>Cada uma destas células é responsável por realizar a predição/detecção de 5 caixas delimitadoras, pois podem existir mais de um objeto nesta célula. Cada caixa é responsável por analisar um pedaço da imagem e extrair informações da região. Na versão do YOLO utilizado como exemplo, existem um total de 845 (13x13x5) caixas delimitadoras.</p>



<h3 class="wp-block-heading">Caixas delimitadoras/Bounding box</h3>



<p>O retângulo que contém a localização do objeto é chamado de caixa delimitadora (bounding box). Durante o processo de detecção de objetos, podem ser encontradas diversas caixas delimitadoras para um mesmo objeto. Estas caixas também podem possuir diversos tamanhos diferentes. </p>



<p>Cada caixa possui uma pontuação de confiança, indicando a quantidade de certeza que o algoritmo tem que aquela caixa possui um objeto. Porém, esta pontuação não identifica qual tipo é esse objeto.</p>



<p>Na Figura 3 abaixo, foram destacadas as caixas detectadas pelo algoritmo YOLO. Também foi destacado na imagem a pontuação de confiança através da espessura da caixa, ou seja, quanto maior a confiança que o YOLO tem que existe um objeto naquela caixa maior é a borda da caixa. A quantidade de possíveis objetos identificados nesta etapa do algoritmo é imensa.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="466" height="466" src="https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_boundingboxes_black.png" alt="" class="wp-image-3470" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_boundingboxes_black.png 466w, https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_boundingboxes_black-300x300.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_boundingboxes_black-150x150.png 150w" sizes="auto, (max-width: 466px) 100vw, 466px" /><figcaption>Figura 3 &#8211; Resultado da detecção das caixas delimitadoras.</figcaption></figure></div>



<p>Para cada caixa delimitadora encontrada, também é executado o processo classificação dos objetos. Esse processo consiste em fornecer um valor de probabilidade para cada uma das possíveis classes/objetos que o algoritmo foi treinado a encontrar. Na Figura 4 abaixo, foram destacados em cores diferentes os possíveis objetos de cada caixa.  </p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="#refs"><img loading="lazy" decoding="async" width="458" height="458" src="https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_boundingboxes.png" alt="" class="wp-image-3464" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_boundingboxes.png 458w, https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_boundingboxes-300x300.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_boundingboxes-150x150.png 150w" sizes="auto, (max-width: 458px) 100vw, 458px" /></a><figcaption>Figura 4 &#8211; Resultado da classificação das caixas delimitadoras.</figcaption></figure></div>



<p>A combinação da confiança da caixa, com a probabilidade da classe, geram a pontuação final. Essa pontuação indica qual a probabilidade de uma determinada caixa delimitadora conter um objeto <a href="#refs">[JO]</a>.</p>



<p>Boa parte das caixas detectadas, possuem um grau de confiança muito baixo. Para eliminar a maioria das caixas podemos atribuir uma limiar de confiança, de 70% por exemplo, e remover o que estiver abaixo deste valor. Nesta etapa a confiança atribuída é de 30%.</p>



<p>A rede neural usa recursos de toda a imagem para prever cada caixa delimitadora, ela também prevê todas as caixas delimitadoras em todas as classes para uma imagem simultaneamente. Isso significa que a rede raciocina globalmente sobre a imagem completa e todos os objetos na imagem <a href="#refs">[MC].</a></p>



<h3 class="wp-block-heading">Resultado caixas delimitadoras:</h3>



<p>Cada caixa delimitadora no YOLO contém 3 grupos de informações/atributos:</p>



<ul class="wp-block-list"><li><strong>Probabilidade de confiança</strong>: Atributo com a probabilidade de existir um objeto na determinada caixa;</li><li><strong>Coordenadas</strong>: Contém a localização da caixa delimitadora/objeto. A localização no YOLO é representada com posição  central do objeto, sua altura e sua largura;</li><li><strong>Probabilidade da classe</strong>: Atributo com a probabilidade de ser determinado objeto. Para cada tipo de objeto que a rede neural do YOLO foi treinada é acrescentado um novo atributo.</li></ul>



<p>Na Figura 5 abaixo, é representado esses 3 grupos de atributos.</p>



<div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" src="https://visaocomputacional.com.br/wp-content/uploads/2022/07/yolo_mapa_filtro_precisao.png" alt="" class="wp-image-3437" width="395" height="521" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/07/yolo_mapa_filtro_precisao.png 600w, https://visaocomputacional.com.br/wp-content/uploads/2022/07/yolo_mapa_filtro_precisao-228x300.png 228w" sizes="auto, (max-width: 395px) 100vw, 395px" /><figcaption>Figura 5 &#8211; Mapa de saída do YOLO <a href="#refs">[AG2]</a>.</figcaption></figure></div>



<p>Finalizada a coleta/predição das probabilidades de cada caixa delimitadora, agora é preciso decidir quais caixas de fato são ou não são objetos. Para realizar esta decisão/predição, em sua última etapa de detecção, o YOLO realiza o processo de supressão não máxima.  </p>



<h3 class="wp-block-heading">Supressão não máxima/Non maximum suppression</h3>



<p>Durante o processo de detecção de objetos, são identificadas varias caixas delimitadoras contendo objetos. Porém, a maioria das caixas não vai conter um objeto, ou compartilham a mesma região de um mesmo objeto. Portanto é necessário realizar uma etapa para remover as caixas com baixas probabilidade e/ou que possuem uma área compartilhada.</p>



<p>A Figura 6 abaixo, ilustra esse processo de tomada de decisão realizada pelo YOLO e diversas outras redes neurais.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="629" height="419" src="https://visaocomputacional.com.br/wp-content/uploads/2022/08/supressao_nao_maxima.png" alt="" class="wp-image-3447" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/08/supressao_nao_maxima.png 629w, https://visaocomputacional.com.br/wp-content/uploads/2022/08/supressao_nao_maxima-300x200.png 300w" sizes="auto, (max-width: 629px) 100vw, 629px" /><figcaption>Figura 6 &#8211; Supressão não máxima.</figcaption></figure></div>



<h3 class="wp-block-heading">Âncoras/Anchor Box</h3>



<p>As ancoras são retângulos de tamanhos pré-definidos, que foram incluídas a partir da versão 2 do YOLO. Estes retângulos são utilizados, para que as caixas delimitadoras previstas, possuam maior relação com as caixas delimitadoras esperadas como resultado. </p>



<p>Estas âncoras possuem tamanhos altura e largura próximos aos tamanhos dos objetos identificados. Elas são criadas durante o processo de treinamento da rede neural, com base nas classes de objetos. </p>



<p>A partir das coordenadas das caixas dos objetos detectadas, são selecionadas as âncoras de cada objeto, redimensionadas para a proporção dos objetos identificados e utilizadas como saída da rede neural YOLO.  </p>



<p>A rede neural YOLO não prevê o tamanho final do objeto, ela apenas ajusta o tamanho da âncora mais próxima ao tamanho do objeto.</p>



<p>Na Figura 7 abaixo, é exibido o resultado de todo o processo de detecção com o YOLO.</p>



<div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" src="https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_result.jpg" alt="" class="wp-image-3511" width="456" height="342" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_result.jpg 768w, https://visaocomputacional.com.br/wp-content/uploads/2022/08/yolo_result-300x225.jpg 300w" sizes="auto, (max-width: 456px) 100vw, 456px" /><figcaption>Figura 7 &#8211; Resultado da detecção com YOLO.</figcaption></figure></div>



<h2 class="wp-block-heading">Resumo</h2>



<p>O YOLO cria diversas caixas delimitadoras. Para cada caixa, é atribuido um valor de confiaça, com a porcentagem (0 até 1) de existir uma objeto. Também é realizado a predição de que tipo de objeto existe na caixa.&nbsp;O valor de confiança para a caixa delimitadora e a predição da classe são combinados em uma pontuação final, que vai informar a probabilidade dessa caixa conter um objeto específico. Por fim é realizada o processo de supressão não máxima afim de &#8220;filtrar&#8221;/&#8221;Eliminar&#8221; falsos objetos e mesclar regiões de um mesmo objeto que assumem o tamnho conforme o tamanho da âncora <a href="#refs">[AG]</a>.</p>



<p>O processo de predição do YOLO é realizado a partir de uma grid de 13×13 células, o que no final resulta em 169 células. Para cada uma dessas células, são detectadas 5 caixas delimitadoras, o que resulta em 845 caixas com possíveis objetos <a href="#refs">[AG]</a>.&nbsp;</p>



<p></p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://cdn.shortpixel.ai/spai/w_722+q_+ret_img+to_webp/https://iaexpert.academy/wp-content/uploads/2020/10/processo-yolo.jpg" alt="" class="wp-image-21488"/><figcaption>Figura 8 &#8211; Resumo das operações YOLO.</figcaption></figure></div>



<h2 class="wp-block-heading">Um pouco de história</h2>



<p>Joseph Redmon introduziu a primeira versão em seu paper publicado em junho de 2015:&nbsp;<a href="https://arxiv.org/pdf/1506.02640.pdf">You Only Look Once: Unified, Real-Time ObjectDetection</a>.</p>



<p>Em dezembro de 2016, Redmon e Ali Farhadi introduziram o YOLOv2 com o paper: “<a href="https://arxiv.org/abs/1612.08242">YOLO9000: Better, Faster, Stronger</a>, mais preciso e mais rápido que a versão anterior <a href="#refs">[AG]</a>.</p>



<p>Em abril de 2018, o YOLOv3 (“<a href="https://arxiv.org/pdf/1804.02767.pdf">YOLOv3: An Incremental Improvement</a>“) demonstrou uma grande melhora na eficiência da predição. No entanto, no geral ele não é mais rápido que a versão anterior. A principal novidade é a predição da imagem em 3 diferentes escalas, o que resolveu o principal problema da versão anterior, que era a dificuldade para reconhecer objetos muito pequenos na imagem. Essa novidade também é o principal motivo de não ser mais rápido que o seu antecessor, já que tal função exigiu mudanças na arquitetura e funcionamento, que tornaram o processo mais pesado <a href="#refs">[AG]</a>.</p>



<p>A quarta versão do YOLO foi lançada em abril de 2020, sendo oficializada após a publicação do paper<em>&nbsp;“YOLOv4: Optimal Speed and Accuracy of Object Detection”</em>&nbsp;por Alexey Bochkovskiy, Chien-Yao Wang e Hong-Yuan Mark Liao<em>.</em></p>



<p>As principais características que podem ser destacadas nessa versão são melhorias na velocidade e precisão. Outra característica importante é o fato de ser mais eficiente para rodar em GPUs, pois foi otimizado para utilizar menos memória <a href="#refs">[AG]</a>.</p>



<p>Nos próximos posts, serão detalhadas estas 4 versões. Espero que tenha gostado do post, deixe seu comentário abaixo.</p>



<p id="refs"><strong>Referências:</strong></p>



<p>[AG] Alvez, Gabriel. Detecção de Objetos com YOLO – Uma abordagem moderna. <a href="https://iaexpert.academy/2020/10/13/deteccao-de-objetos-com-yolo-uma-abordagem-moderna/">Acessado em 15/07/2022</a>.</p>



<p>[RJFA] Redmon, Joseph and Farhadi, Ali, YOLO: Real-Time Object Detection. <a href="https://pjreddie.com/darknet/yolo/">Acessado em 29/06/2022,</a></p>



<p>[MC] Manish Chablani, YOLO — You only look once, real time object detection explained<a href="https://towardsdatascience.com/yolo-you-only-look-once-real-time-object-detection-explained-492dc9230006">. Acessado em 29/06/2022.</a></p>



<p>[RJFA2] Redmon, Joseph and  Farhadi, Ali, YOLO9000: Better, Faster, Stronger. <a href="https://arxiv.org/pdf/1612.08242v1.pdf">Artigo</a>.</p>



<p>[AK] Ayoosh Kathuria &#8211; What’s new in YOLO v3.  <a href="https://towardsdatascience.com/yolo-v3-object-detection-53fb7d3bfe6b">Acessado em 26/07/2022.</a></p>



<p>[AK2] Ayoosh Kathuria &#8211; How to implement a YOLO (v3) object detector from scratch in PyTorch: Part 1. <a href="https://blog.paperspace.com/how-to-implement-a-yolo-object-detector-in-pytorch/">Acessado em 26/07/2022</a></p>



<p>[JP] Jilvan Pinheiro; Módulo OCR de leitura e reconhecimento de documentos. Acessado em <a href="https://medium.com/softwrap/m%C3%B3dulo-ocr-de-leitura-e-reconhecimento-de-documentos-dbe8703f6bb5">12/08/2022</a></p>
<p>The post <a href="https://visaocomputacional.com.br/yolo-para-deteccao-de-objetos-visao-geral/">YOLO para Detecção de Objetos  &#8211; Visão Geral</a> appeared first on <a href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
