<?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>Detecção de Objetos Archives - Visão Computacional</title>
	<atom:link href="https://visaocomputacional.com.br/tag/deteccao-de-objetos/feed/" rel="self" type="application/rss+xml" />
	<link>https://visaocomputacional.com.br/tag/deteccao-de-objetos/</link>
	<description>Tecnologias, teorias e testes.</description>
	<lastBuildDate>Thu, 28 Aug 2025 18:26:45 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://visaocomputacional.com.br/wp-content/uploads/2021/12/cropped-logo-150x150-1-32x32.png</url>
	<title>Detecção de Objetos Archives - Visão Computacional</title>
	<link>https://visaocomputacional.com.br/tag/deteccao-de-objetos/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 class="wp-block-paragraph">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 class="wp-block-paragraph"><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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 fetchpriority="high" 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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 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="(max-width: 457px) 100vw, 457px" /><figcaption>Figura 2 &#8211; YOLO Divisão da imagem em grades.</figcaption></figure></div>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph"></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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">Nos próximos posts, serão detalhadas estas 4 versões. Espero que tenha gostado do post, deixe seu comentário abaixo.</p>



<p class="wp-block-paragraph" id="refs"><strong>Referências:</strong></p>



<p class="wp-block-paragraph">[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 class="wp-block-paragraph">[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 class="wp-block-paragraph">[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 class="wp-block-paragraph">[RJFA2] Redmon, Joseph and  Farhadi, Ali, YOLO9000: Better, Faster, Stronger. <a href="https://arxiv.org/pdf/1612.08242v1.pdf">Artigo</a>.</p>



<p class="wp-block-paragraph">[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 class="wp-block-paragraph">[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 class="wp-block-paragraph">[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>
		<item>
		<title>Identificação, Detecção, Reconhecimento e Segmentação de Imagem e Objetos.</title>
		<link>https://visaocomputacional.com.br/identificacao-deteccao-reconhecimento-e-segmentacao-de-imagem-e-objetos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=identificacao-deteccao-reconhecimento-e-segmentacao-de-imagem-e-objetos</link>
		
		<dc:creator><![CDATA[Piemontez]]></dc:creator>
		<pubDate>Sun, 01 May 2022 01:07:24 +0000</pubDate>
				<category><![CDATA[Conceitos básicos]]></category>
		<category><![CDATA[Detecção de Objetos]]></category>
		<category><![CDATA[Identificação de objetos]]></category>
		<category><![CDATA[Reconhecimento]]></category>
		<category><![CDATA[Segmentação de imagem]]></category>
		<guid isPermaLink="false">https://visaocomputacional.com.br/?p=3127</guid>

					<description><![CDATA[<p>Uma das operações mais importantes em Visão Computacional é a Segmentação. A segmentação de imagens é a tarefa de agrupar partes de uma imagem que pertencem à mesma classe de objeto. Esse processo também é chamado de classificação em nível de pixel. Em outras palavras, envolve o particionamento de imagens (ou quadros de vídeo) em [&#8230;]</p>
<p>The post <a href="https://visaocomputacional.com.br/identificacao-deteccao-reconhecimento-e-segmentacao-de-imagem-e-objetos/">Identificação, Detecção, Reconhecimento e Segmentação de Imagem e Objetos.</a> appeared first on <a href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Uma das operações mais importantes em Visão Computacional é a Segmentação. A segmentação de imagens é a tarefa de agrupar partes de uma imagem que pertencem à mesma classe de objeto. Esse processo também é chamado de classificação em nível de pixel. Em outras palavras, envolve o particionamento de imagens (ou quadros de vídeo) em vários segmentos ou objetos.</p>



<p class="wp-block-paragraph">A operação de segmentação de imagens pode ser facilmente confundida pelas duas operações: identificação de objetos e regiões, e classificação e rotulação. A primeira operação busca extrair objeto da imagem sem saber o que ele é necessariamente, e a segunda classificar o tipo de objeto e região, saber o que é determinado elemento, a quem pertence o tipo do elemento identificado através de rótulos nomeados.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="575" src="https://visaocomputacional.com.br/wp-content/uploads/2022/03/seg_detec_recog-1-1024x575.jpg" alt="" class="wp-image-3134" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/03/seg_detec_recog-1-1024x575.jpg 1024w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/seg_detec_recog-1-300x168.jpg 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/seg_detec_recog-1-768x431.jpg 768w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/seg_detec_recog-1-1536x862.jpg 1536w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/seg_detec_recog-1.jpg 1925w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Ilustração de segmentação, reconhecimento e identificação de objetos.</figcaption></figure>



<p class="wp-block-paragraph">Para entender melhor estas operações, vamos analisar cenários diferentes e posteriormente mencionar algumas técnicas conhecidas para cada tipo de operação.</p>



<h2 class="wp-block-heading">Cenário 1 e 2 &#8211; Detectar objetos e regiões em veículos autônomos</h2>



<p class="wp-block-paragraph">Neste primeiro cenário, explanamos um dos vários problemas que os veículos autônomos precisam lidar, que é segregar/separar a imagem em regiões ou objetos detectados, porém sem a necessidade de saber o que eles são. Esta operação é necessária para que o veículo saiba todos os obstáculos que estão em seu caminho, se possui chão a sua frente ou uma parede, e assim saber como ele pode se descolocar no ambiente.</p>



<p class="wp-block-paragraph">A grande características desta operação, é que não se precisa saber neste momento, o que é determinada coisa a sua frente, se o elemento é um carro, uma pessoa, uma placa, um poste, um semáforo ou uma moto, por exemplo. Mas sim, saber que existe objetos e regiões, e saber onde estão.</p>



<p class="wp-block-paragraph">Este tipo de operação é denominado de <strong>segmentação de imagem</strong>, que consiste em separar a imagem em regiões de interesse com o objetivo de simplificar e/ou mudar a representação de uma imagem para facilitar a sua análise.</p>



<p class="wp-block-paragraph">Neste cenário, com a segmentação de imagem, o veículo autônomo ao se mover pode monitorar essas regiões e: verificar se são objetos fixos ou se estão se movendo; se estão se movendo e para qual direção estão se deslocando; e identificar se os objetos irão colidir com o veículo.</p>



<p class="wp-block-paragraph">Uma outra utilidade, para este tipo de operação, é possibilitar separar o solo da imagem para posteriormente analisá-lo, a fim de saber se é uma estrada ou calçada, se é subida ou descida, se é chão de barro ou asfalto.</p>



<p class="wp-block-paragraph">Para ilustrar este cenário, observe a imagem abaixo com uma segmentação de imagem. Existem diversas técnicas de segmentação e essas técnicas que detectam varias regiões, geralmente não agrupam por tipo de objeto, como foi realizado abaixo. Geralmente são grupos desconexos e não rotulados (sem classificação), porém, na imagem abaixo, os grupos foram rotulados apenas para facilitar o entendimento. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="788" src="https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_segmentation-1024x788.jpeg" alt="" class="wp-image-3145" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_segmentation-1024x788.jpeg 1024w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_segmentation-300x231.jpeg 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_segmentation-768x591.jpeg 768w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_segmentation.jpeg 1170w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Fig 01 &#8211; Segmentação de imagem.</figcaption></figure>



<p class="wp-block-paragraph">No segundo cenário, continuamos com o exemplo do veículo autônomo, porém, agora vamos analisar as situações em que precisamos identificar e rotular quais são os tipos de objetos a frente do veículo.  </p>



<p class="wp-block-paragraph">Sendo assim, digamos que o veículo precise identificar quais sinais de trânsito estão a sua frente, quais carros e pessoas. Esta operação é <strong>denominada de classificação e rotulação</strong>, e o resultado esperado é a extração de determinados tipos de objetos, qual sua localização e identificação.</p>



<p class="wp-block-paragraph">É imprescindível identificar, neste cenário, o que é determinado objeto para a tomada de decisões especiais, por exemplo, ao identificar uma placa de proibido virar a direita, o veículo deve saber que não poderá virar a direita, ao identificar um semáforo, saber se pode ou não prosseguir e se identificar veículos, pessoas ou outros seres, aumentar toda a segurança para não colidir com estes.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="769" src="https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_identification-1024x769.jpeg" alt="" class="wp-image-3148" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_identification-1024x769.jpeg 1024w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_identification-300x225.jpeg 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_identification-768x577.jpeg 768w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_identification.jpeg 1170w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Fig 02 &#8211; Classificação de imagem.</figcaption></figure>



<h2 class="wp-block-heading">Cenário 3 &#8211; Detectar documento para realinhamento</h2>



<p class="wp-block-paragraph">Em um cenário mais simples e controlado, digamos que precisamos extrair da imagem a região com determinado documento e identificar suas bordas para realizar alguma técnica de alinhamento.</p>



<p class="wp-block-paragraph">Neste caso, podemos converter a imagem em tons de cinza, detectar as bordas e linhas retas com técnicas de visão computacional e procurar por regiões retangulares para realizar uma extração do documento da imagem.</p>



<p class="wp-block-paragraph">As técnicas que detectam bordas e linhas retas, são técnicas de <strong>segmentação de imagem</strong>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="342" src="https://visaocomputacional.com.br/wp-content/uploads/2022/03/seg_text-1024x342.jpeg" alt="" class="wp-image-3179" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/03/seg_text-1024x342.jpeg 1024w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/seg_text-300x100.jpeg 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/seg_text-768x256.jpeg 768w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/seg_text-1536x513.jpeg 1536w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/seg_text-2048x684.jpeg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Fig 03 &#8211; Segmentar documento de imagem e recortar documento da imagem.</figcaption></figure>



<h2 class="wp-block-heading">Cenário 4 &#8211; Detectar rostos e realizar reconhecimento facial</h2>



<p class="wp-block-paragraph">Em nosso último cenário, vamos analisar superficialmente um sistema de portaria eletrônica com reconhecimento facial, que habilita a entrada de pessoas em seu apartamento. Neste tipo de sistema é preciso realizar ao menos duas etapas de classificação de imagem.</p>



<p class="wp-block-paragraph">A primeira etapa necessária é a detecção de rostos na imagem ou câmera digital e segmentação da imagem em subimagens, apenas com os rostos. Este tipo de operação é realizada em tempo real, onde o sistema fica monitorando toda a movimentação da câmera com o objetivo de identificar rostos na imagem, sem a necessidade de saber quem é a pessoa, apenas procurando por rostos.</p>



<p class="wp-block-paragraph">A segunda etapa a ser realizada, é feita após a identificação do rosto, onde o sistema irá comparar se o rosto identificado é de alguém habilitado a entrar no apartamento e então liberar o acesso. A imagem abaixo busca ilustrar esses dois tipos de problemas de classificação.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="472" src="https://visaocomputacional.com.br/wp-content/uploads/2022/03/fac_recog_sistem-1024x472.jpg" alt="" class="wp-image-3197" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/03/fac_recog_sistem-1024x472.jpg 1024w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/fac_recog_sistem-300x138.jpg 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/fac_recog_sistem-768x354.jpg 768w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/fac_recog_sistem.jpg 1080w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Fig 04 &#8211; Classificar se duas imagens pertencem a uma mesma pessoa.</figcaption></figure>



<p class="wp-block-paragraph">Apesar dessas duas etapas serem operações de classificação de imagem, seus objetivos são muito diferentes e para cada uma delas existem soluções diferentes. Para a primeira técnica, a de detecção, existem diversas soluções genéricas capazes de identificar determinado tipo de informação na imagem. Porém na segunda, a de reconhecimento, que exige uma precisão maior, geralmente precisa de uma solução específica para cada situação.</p>



<h2 class="wp-block-heading">Segmentação de imagem</h2>



<p class="wp-block-paragraph">A segmentação tem como objetivo dividir uma imagem em regiões ou objetos que a compõem. O nível de detalhe, que a divisão é realizada, depende do tipo de problema a ser resolvido. Em resumo, a segmentação deve parar quando os objetos e regiões são encontrados <a href="#refs">[GW]</a>.  </p>



<p class="wp-block-paragraph">A segmentação de imagens não triviais (não obvias), é uma das tarefas mais difíceis no processamento de imagens. A precisão da segmentação que identifique corretamente a localização, a forma dos objetos, a topologia é fundamental para o sucesso final dos procedimentos de análise computadorizadas <a href="#refs">[GW]</a>. </p>



<p class="wp-block-paragraph">A seguir são apresentadas as principais técnicas de segmentação de imagens, baseadas nos valores de intensidade dos pixels da imagem, com ênfase nas técnicas de detecção de descontinuidades, gradiente, limiarização, identificação de regiões e classificadores.</p>



<h3 class="wp-block-heading"><span style="font-size: revert; color: initial;">Detecção de Descontinuidades</span></h3>



<p class="wp-block-paragraph">Este tipo de técnica particiona a imagem a partir de alterações bruscas nas intensidades de imagens, como <strong>pontos, linhas bordas e junções</strong>. Uma maneira comum de identificação de descontinuidade, é por meio de aplicações de uma máscara por uma <a href="/tag/convolucao/">convolução espacial</a> <a href="#refs">[PS]</a>. </p>



<p class="wp-block-paragraph">Esta técnica analisa a variação de intensidade utilizando uma única camada de cor da imagem, geralmente uma camada em tons de cinza da imagem. Porém, a análise pode ser feita através da representação de uma das cores da imagem, da iluminação, do brilho ou da saturação da imagem. </p>



<p class="wp-block-paragraph">Observe na Figura 4, a representação A e B das variações de intensidade dos tons de cinza, note que na representação A a mudança de tons de cinza é muito mais abrupta que a representação B. É com base na análise deste variação abrupta que as técnicas de segmentação de imagem por descontinuidade funcionam.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://visaocomputacional.com.br/wp-content/uploads/2022/04/varicao_intensidade-1024x517.png" alt="" class="wp-image-3218" width="564" height="284" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/04/varicao_intensidade-1024x517.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/varicao_intensidade-300x151.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/varicao_intensidade-768x388.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/varicao_intensidade.png 1323w" sizes="auto, (max-width: 564px) 100vw, 564px" /><figcaption>Fig 4. Representação de variação de intensidade em tons de cinza.</figcaption></figure></div>



<p class="wp-block-paragraph">Veja na Figura 5 a aplicação desta técnica, ao aplicar o operador Laplaciano em duas imagens em tons de cinza. Com uma simples técnica de <a href="/tag/convolucao/">convolução</a> foi possível detectar as bordas de uma imagem.</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/04/laplaciano.png" alt="" class="wp-image-3221" width="331" height="506" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/04/laplaciano.png 440w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/laplaciano-196x300.png 196w" sizes="auto, (max-width: 331px) 100vw, 331px" /><figcaption>Fig 5. Aplicação do operador Laplaciano.</figcaption></figure></div>



<h3 class="wp-block-heading">Gradiente e Bordas</h3>



<p class="wp-block-paragraph">Existem diversas outras técnicas e também operadores capazes de detectar/destacar melhor as bordas em imagens como exemplo, Sobel, Roberts e Canny, e são conhecidos como operações de gradiente, pois realçam a maior variação de gradiente na imagem. Porém, são menos simples de aplicar e realizam operações de derivadas.</p>



<p class="wp-block-paragraph">Observe na Figura 6 o resultado da aplicação do filtro Sobel na imagem e como ele destacou as bordas na imagem.</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/04/sobel.png" alt="" class="wp-image-3226" width="291" height="378" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/04/sobel.png 440w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/sobel-231x300.png 231w" sizes="auto, (max-width: 291px) 100vw, 291px" /><figcaption>Fig 6. Aplicação do filtro Sobel.</figcaption></figure></div>



<h3 class="wp-block-heading">Limiarização</h3>



<p class="wp-block-paragraph">Limiarização é um processo de segmentação de imagens que se baseia na diferença dos níveis de cinza, que compõe diferentes regiões de uma imagem. A partir de uma limiar definida a imagem é separada em 2 grupos.</p>



<p class="wp-block-paragraph">A técnica mais simples de limiarização, consiste em varrer cada pixel da imagem e verificar se o valor do pixel é maior ou menor que uma limiar preestabelecida e gerar uma nova imagem com apenas duas cores. A Figura 7 ilustra a aplicação de uma limiarização simples, com uma limiar de 100.</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/04/limiarizacao.png" alt="" class="wp-image-3231" width="340" height="248" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/04/limiarizacao.png 657w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/limiarizacao-300x219.png 300w" sizes="auto, (max-width: 340px) 100vw, 340px" /><figcaption>Fig 7. Aplicação do filtro de Limiarização.</figcaption></figure></div>



<p class="wp-block-paragraph">Existem muitas técnicas de limiarização e todas elas utilizam o <a href="/tag/histograma">histograma</a> da imagem como tomada de decisão. Entre as técnicas mais conhecidas estão o método de Otsu, o método de Seleção Iterativa, a limiarização adaptativa média, a limiarização adaptativa gaussiana e a limiarização global simples. </p>



<h3 class="wp-block-heading">Segmentação de regiões</h3>



<p class="wp-block-paragraph">Como descrito no começo do post, o objetivo da segmentação é dividir a imagem em regiões e a seguir serão apresentadas as técnicas usadas com esse objetivo.</p>



<p class="wp-block-paragraph">A primeira técnica apresentada é a técnica de segmentação por crescimento de região. Os métodos de segmentação baseados em região visam reunir em um mesmo conjunto, pixels adjacentes que atendem a um dado critério de diversidade. Desta forma, regiões da imagem são agrupadas ou divididas, dependendo de seus pixels terem ou não características semelhantes em termos de cor, textura ou forma.</p>



<p class="wp-block-paragraph">Está técnica necessita de ao menos duas informações, uma limiar de similaridade e um conjunto de locais/pontos inicias, que serão utilizados para começar o agrupamento. Para ilustrar, observe a matriz da Figura 8.a, nela foram selecionados 4 pontos de forma aleatória, para iniciar o processo de agrupamento de região. Após selecionar os locais iniciais, foi comparada a vizinhança destes pontos com uma limiar de tamanho 2, caso o valor seja uma diferença igual a este tamanho, a vizinhança será agrupada, conforme ilustra a Figura 8.c. Este processo é repetido até percorrer todos os locais da Imagem.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://visaocomputacional.com.br/wp-content/uploads/2022/04/crescimento_regiao-1024x831.png" alt="" class="wp-image-3238" width="618" height="501" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/04/crescimento_regiao-1024x831.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/crescimento_regiao-300x243.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/crescimento_regiao-768x623.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/crescimento_regiao.png 1256w" sizes="auto, (max-width: 618px) 100vw, 618px" /><figcaption>Fig 8. Crescimento por região.</figcaption></figure></div>



<p class="wp-block-paragraph">Neste tipo de técnica existem dois grandes problemas, que são os problemas de todas as técnicas de segmentação, que são: identificar quantos pontos iniciais serão utilizados, ou qual nível/profundidade de segmentação é desejada,  e qual o critério ou limiar de similaridade que devemos utilizar.</p>



<p class="wp-block-paragraph">Observe na Figura 8.d que possuímos também um terceiro problema, que os valores 3 da matriz, não foram agrupados ainda. Porém, dependendo da ordem de processamento, estes valores poderiam ser agrupados com os valores 1 ou com os valores 5, conforme demonstrado nas figuras 8.g e 8.h. Para piorar a situação, talvez o ideal fosse que estes valores estivessem segmentados em uma única região, se tivesse sido iniciado o processo de segmentação com um ponto inicial a mais.</p>



<p class="wp-block-paragraph">Uma outra  técnica é a técnica de divisor de águas Watershed. O método de segmentação calcula o gradiente para todos os pixels da imagem. Imagine que os valores de gradiente formem uma superfície topográfica com vales e montanhas. As regiões mais baixas, conforme Figura 9.c seriam correspondentes as de menor gradiente e as mais altas as de maior gradiente. Os crescimentos de regiões seriam equivalentes a uma inundação feita a partir da abertura de um pequeno furo nas regiões mais baixas. Os segmentos seriam formados por regiões conforme se formam bacias hidrográficas, daí o nome divisor de águas.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="295" src="https://visaocomputacional.com.br/wp-content/uploads/2022/04/watershed-basics-1024x295.png" alt="" class="wp-image-3247" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/04/watershed-basics-1024x295.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/watershed-basics-300x87.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/watershed-basics-768x221.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/watershed-basics.png 1172w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Fig 9. Ilustração processo Watershed.</figcaption></figure>



<p class="wp-block-paragraph">E uma última técnica muito interessante, é a segmentação por movimento. O conceito desta técnica é simples, através da análise do deslocamento dos objetos são extraídas as regiões de interessa da imagem. Este tipo de técnica é uma ferramenta poderosa de segmentação em ambiente abertos e cenários não controlados. Não existe uma solução única ou genérica para esta técnica, mas existem diversos trabalhos na literatura com esse objetivo. Abaixo são demostrados os resultados de dois artigos a fim de ilustrar a técnica.</p>



<figure class="wp-block-gallery aligncenter columns-2 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="1024" height="867" src="https://visaocomputacional.com.br/wp-content/uploads/2022/04/segmentacao_movimento-1024x867.jpeg" alt="" data-id="3249" class="wp-image-3249" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/04/segmentacao_movimento-1024x867.jpeg 1024w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/segmentacao_movimento-300x254.jpeg 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/segmentacao_movimento-768x650.jpeg 768w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/segmentacao_movimento.jpeg 1080w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></li><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="618" height="564" src="https://visaocomputacional.com.br/wp-content/uploads/2022/04/segmentacao_movimento_carrro.jpeg" alt="" data-id="3252" data-full-url="https://visaocomputacional.com.br/wp-content/uploads/2022/04/segmentacao_movimento_carrro.jpeg" data-link="https://visaocomputacional.com.br/?attachment_id=3252" class="wp-image-3252" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/04/segmentacao_movimento_carrro.jpeg 618w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/segmentacao_movimento_carrro-300x274.jpeg 300w" sizes="auto, (max-width: 618px) 100vw, 618px" /></figure></li></ul><figcaption class="blocks-gallery-caption">Fig 10. Ilustração de segmentação por movimentação dos trabalhos <a href="https://visaocomputacional.com.br/wp-admin/post.php?post=3127&amp;action=edit#refs">[MSBTV]</a> e <a href="#refs">[VJ]</a></figcaption></figure>



<p class="wp-block-paragraph">Todas estas técnicas descritas até então, são técnicas que segmentam imagem sem rotulação, ou seja, como resultado da sua aplicação não se sabe o que é o objeto segmentado. A seguir será discutido brevemente o conceito de classificação de imagem, que tem com objetivo rotular a imagem.</p>



<h2 class="wp-block-heading">Classificação, Detecção e Identificação de objetos</h2>



<p class="wp-block-paragraph">A classificação de padrões ou imagens, visa determinar um mapeamento que relacione as propriedade extraídas de amostras com um conjunto de rótulos, e ao atribuir um mesmo rótulo a amostras distintas, diz-se que tais elementos pertencem a uma mesma classe <a href="#refs">[PS]</a>.</p>



<p class="wp-block-paragraph">O conceito de classificação está relacionado ao aprendizado de máquina, reconhecimento de padrões e inteligência artificial (IA) que se baseiam na ideia de que sistemas podem aprender com dados, identificar padrões e tomar decisões para uma variedades de possibilidades. Para simplificar, vamos nos limitar a ideia e ao conceito de classificar imagens através de rótulos, para identificar esse rótulos e detectar algo em outras imagens e vídeos.</p>



<p class="wp-block-paragraph">Antes de prosseguir, saiba que o conceito de classificação não é considerado parte da área de segmentação de imagens, porém é muito utilizado para este fim, com diversas soluções para segmentar imagens.</p>



<p class="wp-block-paragraph">Agora, vamos analisar o segundo cenário novamente, onde temos a imagem da vista de um carro para a rua e nela queremos identificar pedestres, carros e sinais de trânsito. Para isto, precisamos ao menos realizar três etapas: criar e coletar uma base de imagens, treinar algum algoritmos de classificação e utilizar o algoritmo treinado para classificar outras imagens.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_identification-1024x769.jpeg" alt="" class="wp-image-3148" width="355" height="266" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_identification-1024x769.jpeg 1024w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_identification-300x225.jpeg 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_identification-768x577.jpeg 768w, https://visaocomputacional.com.br/wp-content/uploads/2022/03/stree_identification.jpeg 1170w" sizes="auto, (max-width: 355px) 100vw, 355px" /><figcaption>Fig 11 &#8211; Classificação de imagem.</figcaption></figure></div>



<p class="wp-block-paragraph">A tarefa de criação de base de dados é a mais simples das três tarefas, porém muito onerosa, pois demanda muito tempo para se criar uma base de dados e dependendo da precisão desejada essa tarefa se torna uma tarefa continua.  Para o cenário 2, a base de dados deve ser criada com no mínimo três informações: a imagens com o que se deseja rotular, a localização de todos os objetos de interesse na imagem para todas as imagens e o nome do rótulo. Dependendo do algoritmo, mais informações são necessárias.</p>



<p class="wp-block-paragraph">A segunda tarefa de treinamento, de modo geral, consiste em informar a base de dados para ser treinada no algoritmo e aguardar seu treinamento. Esta tarefa costuma ser demorada para ser finalizada, pois exige muito processamento do computador, podendo levar horas ou dias. Caso não se tenha um computador com uma placa de vídeo, é recomendado que a tarefa seja feita em algum computador na nuvem que a tenha.</p>



<p class="wp-block-paragraph">A última etapa, consiste em utilizar o algoritmo treinado para identificar os rótulas na imagem. Estas três etapas são mais complexas do que isso que foi exposto, porém a ideia geral das técnicas de classificação é essa. </p>



<p class="wp-block-paragraph">Na Figura 12 é apresentado o resultado do algoritmo YOLO &#8211; You Only Look Once, que significa &#8220;Você só olha uma vez&#8221;. A ideia do YOLO é que ao receber uma imagem a ser rotulada, ele consiga identificar todos os rótulos treinados de uma única vez. </p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://visaocomputacional.com.br/wp-content/uploads/2022/04/yolo-1024x765.png" alt="" class="wp-image-3273" width="574" height="428" srcset="https://visaocomputacional.com.br/wp-content/uploads/2022/04/yolo-1024x765.png 1024w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/yolo-300x224.png 300w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/yolo-768x574.png 768w, https://visaocomputacional.com.br/wp-content/uploads/2022/04/yolo.png 1367w" sizes="auto, (max-width: 574px) 100vw, 574px" /><figcaption>Fig 12. Resultado da aplicação do algoritmo YOLO via <a href="https://pjreddie.com/darknet/yolo/">darknet</a>.</figcaption></figure></div>



<p class="wp-block-paragraph">O que &#8220;identificar todos os rótulos de uma única vez&#8221; quer dizer? Bom, para explicar isso, antes vamos precisar entender outro tipo de técnica. Observe na Figura 13 a ilustração de uma RNA &#8211; Rede Neural Artificial, técnica de IA inspirada no sistema nervoso central de um animal (em particular o cérebro). Esta rede neural foi treinada como objetivo de identificar, se na imagem existe um cachorro, um gato ou nenhum dos dois.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="406" src="https://visaocomputacional.com.br/wp-content/uploads/2022/04/1_oB3S5yHHhvougJkPXuc8og.webp" alt="" class="wp-image-3276"/><figcaption>Fig 13 &#8211; Classificação de imagem simples usando rede neural convolucional <a href="#refs">[VT]</a>.</figcaption></figure>



<p class="wp-block-paragraph">Porém, esta rede neural ilustrativa, foi criada de tal forma que só é possível confirmar se na imagem possuir apenas um gato ou um cachorro, caso a imagem possuir mais de um gato, ou um gato e um cachorro, por exemplo, ela não saberá identificar. Para resolver este tipo de problema, boa parte das técnicas de classificação tem como solução, percorrer a imagem em regiões menores, testando cada parte da imagem, a fim de identificar a existência de objetos rotulados, e localizar sua posição, conforme ilustra a figura abaixo.</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/04/sliding_window_example.gif" alt="" class="wp-image-3284" width="296" height="436"/><figcaption>Fig 14 &#8211; Percorrer a imagem em regiões menores.</figcaption></figure></div>



<p class="wp-block-paragraph">De volta ao YOLO, sua diferença com a técnica apresentada anteriormente, é que sua mecânica não necessita percorrer a imagem em regiões menores para identificar mais de um rótulo ou objeto, pois utilizando toda a região da imagem ele consegue identificar tantos objetos, quanto sua etapa de treinamento o ensinou. Porém, não quer dizer que dividir a imagem em regiões menores, também não possa ser feito com o YOLO, mas então entraríamos em outras questões, como performance, precisão e técnicas de treinamento. </p>



<p class="wp-block-paragraph">Existem diversas técnicas de classificação de imagem para rotulação, que utilizam estes dois conceitos apresentados,  cada uma com sua característica e vantagem, abaixo trago algumas conhecidas:</p>



<ul class="wp-block-list"><li>R-CNN – Region-based Convolutional Neural Networks</li><li>SPP-net – Spatial Pyramid Pooling</li><li>Fast R-CNN</li><li>Faster R-CNN</li><li>SSD &#8211; Single Shot Detector</li><li>R-FCN</li></ul>



<p class="wp-block-paragraph">Além das técnicas de classificação, para rotulação de objetos conhecidos, existem diversos estudos que utilizam IA para segmentar a imagem em regiões, conforme descrito no cenário 1 e não foram apresentadas neste post para não delongá-lo, pois seu objeto é transmitir uma visão geral sobre segmentação de imagens. </p>



<p class="wp-block-paragraph">Caso tenha dúvidas ou sugestões de melhorias no post, deixe seu comentário abaixo.</p>



<p class="wp-block-paragraph"><strong>Referencias:</strong></p>



<p class="wp-block-paragraph">[GW] GONZALEZ, R. C., WOODS, R. E. Processamento de Imagens Digitais. Editora Edgard Blucher, ISBN 978-85-8143-586-2, 3 ed., São Paulo, 2010</p>



<p class="wp-block-paragraph">[PS] Pedrini, H.; Schwartz, W. R.; Análise de Imagens Digitais: Princípios, Algoritmos e Aplicações. Thomson Learning, 2007</p>



<p class="wp-block-paragraph">[MSBTV]  M. Keuper, S. Tang, B. Andres, T. Brox and B. Schiele, &#8220;Motion Segmentation &amp; Multiple Object Tracking by Correlation Co-Clustering&#8221; in IEEE Transactions on Pattern Analysis &amp; Machine Intelligence, vol. 42, no. 01, pp. 140-153, 2020.<br>doi: 10.1109/TPAMI.2018.2876253</p>



<p class="wp-block-paragraph">[VJ] Vertens, Johan et al. “SMSnet: Semantic motion segmentation using deep convolutional neural networks.” 2017 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) (2017): 582-589.</p>



<p class="wp-block-paragraph">[VT] Venkatesh Tata. Simple Image Classification using Convolutional Neural Network — Deep Learning in python. <a href="https://becominghuman.ai/building-an-image-classifier-using-deep-learning-in-python-totally-from-a-beginners-perspective-be8dbaf22dd8">Acessado em 14/04/2022</a>.</p>



<p class="wp-block-paragraph">[DK] Darknet. YOLO: Real-Time Object Detection. <a href="https://pjreddie.com/darknet/yolo/">Acessado em 15/04/2022</a>.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://visaocomputacional.com.br/identificacao-deteccao-reconhecimento-e-segmentacao-de-imagem-e-objetos/">Identificação, Detecção, Reconhecimento e Segmentação de Imagem e Objetos.</a> appeared first on <a href="https://visaocomputacional.com.br">Visão Computacional</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
