Detecção de Objetos em Imagens com Yolo

Detecção de Objetos em Imagens com Yolo

Olá

A ideia deste artigo é demonstrar como podemos implementar um sistema com detecção de objetos utilizando o Yolo, mais rápido que RCC e FAST-RCNN.

Para este laboratório, vamos criar um projeto windows forms no Visual Studio 2017.

Não foi fornecido texto alternativo para esta imagem

Feito isso, vamos criar uma tela, será simples, contendo um elemento picturebox e dois buttons, lembre-se de ajustar o dimensionamento do picturebox para StretchImage.

Não foi fornecido texto alternativo para esta imagem

Na ação do botão de Load, vamos adicionar o seguinte código para carregar a imagem.

var openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Image Files|*jpg;*.png";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
   picImage.Image = Image.FromFile(openFileDialog.FileName);
}

No botão detectar, adicione o seguinte código:

var configDetection = new ConfigurationDetector();
var config = configDetection.Detect();
var yolo = new YoloWrapper(config);
var memoryStream = new MemoryStream();
picImage.Image.Save(memoryStream,ImageFormat.Png);
var _items = yolo.Detect(memoryStream.ToArray()).ToList();
drawingPictureBox( picImage, _items);

E na mesma classe, vamos criar o método drawingPictureBox

void drawingPictureBox(PictureBox pictureBoxTorender,List<YoloItem> items)
		{
			var img = pictureBoxTorender.Image;
			var font = new Font("Arial",15,FontStyle.Bold);
			var brush = new SolidBrush(Color.Blue);
			var graphics = Graphics.FromImage(img);
			foreach (var item in items)
			{
				var x = item.X;
				var y = item.Y;
				var width = item.Width;
				var heigth = item.Height;
				var rect = new Rectangle(x, y, width, heigth);
				var pen = new Pen(Color.Red,5);
				var point = new Point(x,y);
				graphics.DrawRectangle(pen,rect);
				graphics.DrawString(item.Type,font,brush, point);
			}
			pictureBoxTorender.Image = img;
		}

Precisamos configurar a plataforma de destino para 64 bits, pois não funciona em 32.

Não foi fornecido texto alternativo para esta imagem

Agora vamos adicionar as bibliotecas ao projeto, abra o console nuget e procure por yolo, e adicione as bibliotecas indicadas na imagem abaixo.

Não foi fornecido texto alternativo para esta imagem

Feito isso, basta executar o projeto e testar:

Não foi fornecido texto alternativo para esta imagem

A aplicabilidade é ilimitada, mas é um ponto de partida para a ferramenta.

Obrigado pela visita!




Entre para ver ou adicionar um comentário

Outros artigos de Marcelo Buratti de Freitas

  • Neurônio Matemático - Conceitos iniciais com exemplo de stepFunction em Python

    Neurônio Matemático - Conceitos iniciais com exemplo de stepFunction em Python

    Este artigo tem como finalidade ser uma introdução a rede neurais artificiais, utilizando o Python. Estas redes neurais…

    2 comentários
  • ETL Básico com PowerCenter

    ETL Básico com PowerCenter

    O objetivo deste artigo é abordar alguns conceitos básicos sobre a ferramenta PowerCenter, uma poderosa ferramenta de…

    1 comentário
  • Spring Boot com Angular (1/2)

    Spring Boot com Angular (1/2)

    Este artigo ficou um pouco maior do que eu esperava, mas ficou bacana, no decorrer mantenha as IDE´s e os projetos…

  • Bot com IBM Watson e Node Express

    Bot com IBM Watson e Node Express

    Olá Este artigo tem como finalidade construir a estrutura inicial de um bot utilizando o Watson da IBM, um serviço de…

  • Visualização de Dados com Pyplot

    Visualização de Dados com Pyplot

    Basicamente o Matplotlib é uma biblioteca para visualização e plotagem de dados em Python, com gráficos, histogramas…

  • Ruby and Rails - Uma abordagem prática

    Ruby and Rails - Uma abordagem prática

    Olá, recentemente fiz algumas pesquisas sobre desempenho e acabei deparando-me com o Ruby, fiquei muito interessado com…

  • Uma forma de Deploy de Laravel em um WebApp Azure com AdminLite

    Uma forma de Deploy de Laravel em um WebApp Azure com AdminLite

    Particularmente gosto muito do PHP, tem suas restrições, suas vantagens, e a versão 7.2 tem melhorias no getclass() e…

    2 comentários
  • Exemplos de Azure Function com Trigger e com Requisições HTTP

    Exemplos de Azure Function com Trigger e com Requisições HTTP

    Aqui vou abordar dois exemplos de Azure Function, o primeiro vai ser um função que vai ser disparada sempre que um…

  • ETL Simples com Talend para uma Base SQLServer

    ETL Simples com Talend para uma Base SQLServer

    Olá, neste artigo vou abordar etapas sobre o processo de ETL, (Extract, Transform and Load) de dados de um documento…

  • Iniciando Detecção Objetos com OpenCV

    Iniciando Detecção Objetos com OpenCV

    O motivo da construção deste artigo é para realizar um teste e verificar a capacidade de detecção de objetos utilizando…

    3 comentários

Outras pessoas também visualizaram

Conferir tópicos