Implementando um detector de objetos (Single-Shot Detection) do zero mesmo.

Informações importantes

  1. Como pré-requisito, vocês devem ter conhecimento básico sobre o uso de python, Pytorch, CNN, funções de ativação e base sobre processos de treinamento de modelos. Não precisa ser expert para entender o exemplo proposto aqui. Mesmo que você não conheça tudo que eu tenha utilizado, eu deixo os links de materiais para te dar uma base.
  2. Eu utilizei a mesma base de projeto que eu venho utilizando nos posts anteroiores (aqui). Também não focarei demasiadamente em teoria; a minha ideia aqui é desmistificar algumas caixas pretas do processo de criação de arquiteturas de detecção de objetos.
  3. As imagens utilizadas em nosso exemplo veem de um subset do dataset apples-bananas-oranges (https://www.kaggle.com/sriramr/apples-bananas-oranges). Por que um subset e não todo o dataset? A primeira coisa a saber é que nós iremos criar, neste momento, um detector de objetos únicos (single object per image). Deixo aqui a promessa de escrever um post com um detector de múltiplos objetos — esse já está na lista. Então, em nosso exemplo, eu removi as imagens com mais de um objeto/detecção.
  4. O formato das anotações é Darknet. Por que? Porque eu gosto dele. Nada contra os demais formatos, mas eu o acho simples e intuitivo. O que você precisa saber sobre o formato:
  • classe = a classe a qual o objeto pertence;
  • x e y = ponto central do bbox;
  • w e h = largura e altura do bbox;
  • Os valores de x, y, w, h são normalizados pela largura (W) e altura (H) da imagem.

Um pouco de teoria

Modelo

AdrianoNet: nossa arquitetura de “brinquedo”.

Dataset

Funcoes auxiliares para pré-processamento dos dados.
Classe dataset.

Trabalhando com os dados

Funcão letterbox
Funcão de transformacão de imagens.

Treinamento

Código completo: https://github.com/adrianosantospb/detector_classificaodor_do_zero/blob/main/train.py

Testando o modelo treinado

Considerações finais

--

--

Senior Computer Vision Data Scientist at Conception Ro-Main (Quebec — CA). DSc in Computer Science. MTAC Brazil. https://github.com/adrianosantospb

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Adriano A. Santos

Adriano A. Santos

Senior Computer Vision Data Scientist at Conception Ro-Main (Quebec — CA). DSc in Computer Science. MTAC Brazil. https://github.com/adrianosantospb