O que é a detecção de objeções com o Tensorflow? e como funciona [Exemplos]

Publicados: 2021-06-18

Índice

Detecção de Objetos – O que isso significa?

A detecção de objetos é um processo em que um objeto pode ser identificado ou localizado em uma imagem ou vídeo com a ajuda da visão computacional. Se tivermos uma imagem com um gato e uma pessoa e tivermos que classificar os objetos dentro de uma imagem, então a técnica de detecção de objetos, ou seja, a detecção de objetos, pode ser aplicada e os objetos necessários, ou seja, o gato e a pessoa podem ser localizados. Isso pode ser feito por meio de caixas delimitadoras que são desenhadas ao redor dos objetos detectados. Assim, a localização dos objetos desejados é conhecida.

A maioria das pessoas ainda se confunde com reconhecimento de objetos e reconhecimento de imagens. A diferença entre os dois está no fato de que, no caso de reconhecimento de imagem, uma imagem inteira é rotulada, enquanto no reconhecimento de objetos, os objetos dentro da imagem são rotulados.

A classe do objeto como pessoa, mesa, etc., e as coordenadas da localização dos objetos em uma determinada imagem podem ser identificadas através da técnica de detecção de objetos. O desempenho de um algoritmo de detecção de objetos depende de sua capacidade de localizar objetos dentro de uma imagem. Um exemplo de detecção de objetos é a detecção de rosto.

Por que Detecção de Objetos?

Devido aos recursos exclusivos pertencentes à detecção de objetos, o processo pode ser aplicado em muitas tarefas importantes, como:

  • Contagem de pessoas em uma multidão.
  • Condução no caso de carros autônomos.
  • Video vigilância.
  • Detecção do rosto.
  • Detecção de anomalia

Abordagens de Detecção de Objetos

Os algoritmos usados ​​para o método de detecção de objetos podem ser treinados antes de seu uso ou não supervisionados.

Duas abordagens, ou seja, abordagens baseadas em aprendizado de máquina e baseadas em aprendizado profundo são usadas para a detecção de objetos.

  • Vários recursos de uma imagem, como o histograma de cores ou bordas, etc., estão sendo observados pelas abordagens baseadas em ML. Modelos de regressão baseados nessas características são então gerados e a localização do objeto é prevista.
  • As redes neurais convolucionais (CNNs) são empregadas no caso de abordagens baseadas em aprendizado profundo para detectar um objeto por meio de métodos não supervisionados.

Funcionamento de um método de detecção de objetos

A tarefa de detecção de objetos pode ser realizada através das seguintes etapas:

  • A imagem de entrada é dividida em vários pequenos segmentos. Conjuntos de caixas unidas são criadas abrangendo toda a imagem.
  • Cada área segmentada é submetida ao processo de extração de características. Em seguida, ele prevê a presença de objetos válidos dentro da caixa. O processo determina se há algum recurso visual presente na caixa.
  • Uma única caixa é construída para as caixas sobrepostas.

Detecção de objetos usando o TensorFlow

O TensorFlow pode ser definido como uma biblioteca de código aberto para aprendizado de máquina e tem sido amplamente utilizada em várias aplicações, como reconhecimento de imagem, pesquisa por voz, reconhecimento de objetos, etc. As APIs Python e C++ são fornecidas pelo TensorFlow.

  • Tanto os algoritmos de aprendizado profundo quanto os algoritmos de aprendizado de máquina estão presentes no TensorFlow.
  • Python é empregado como linguagem de front-end e também é executado de forma eficiente em C++.
  • Um gráfico de computação é criado pelos desenvolvedores usando o TensorFlow.
  • As operações matemáticas são representadas por nós em um gráfico e os dados são representados por meio das conexões.

O TensorFlow foi desenvolvido para realizar pesquisas sobre aprendizado de máquina e redes neurais profundas pela equipe do Google Brain na organização de pesquisa de inteligência de máquina do Google.

Uma API (Application Programming Interface) impede que os desenvolvedores escrevam códigos do zero por meio do fornecimento de um conjunto de operações comuns. A API de detecção de objetos do TensorFlow é aplicada para treinar os modelos para detecção de objetos. A estrutura é construída sobre o TensorFlow. Os recursos pertencentes ao TensorFlow de detecção de objetos são:

  • Os modelos já treinados são chamados de “Model Zoo” e estão disponíveis no framework.
  • Os conjuntos de dados usados ​​para treinar os vários modelos treinados são:
  • Conjunto de dados COCO.
  • Conjunto de dados KITTI.
  • Conjunto de dados de imagens abertas

A estrutura TensorFlow de detecção de objetos consiste em vários modelos com arquitetura variada e, portanto, diferentes precisões de previsão. Os tipos de arquitetura dos modelos já treinados são:

1. MobileNet-SSD

Uma rede de convolução simples identifica a localização da caixa delimitadora em uma única passagem. A arquitetura consiste em uma camada base (MobileNet) com várias camadas de convolução. As localizações das caixas delimitadoras são previstas através da operação nos mapas de recursos. As informações presentes em cada caixa delimitadora estão listadas abaixo:

  • Localizações de deslocamento da caixa delimitadora nos quatro cantos (cx, cy, w, h).
  • Probabilidades da classe C (c1, c2, ...cp)

A forma da caixa não é prevista pelo SSD, mas sim as localizações da caixa. O número K de caixas delimitadoras é determinado para cada localização do mapa de feição. A forma da caixa delimitadora k já está definida antes do treinamento real.

A equação a seguir calcula a perda.

L=1/N (classe L + caixa L)

Onde, N: número das caixas combinadas, classe L: perda softmax, caixa L: erro associado às caixas combinadas.

2. Rede Móvel

Uma convolução padronizada é fatorada em uma convolução e uma convolução que é pontual, ou seja, 1*1 convoluções. A computação é reduzida com a redução do tamanho do modelo através da fatoração.

3. Início-SSD

O Inception-SSD tem a mesma arquitetura do MobileNet-SSD, porém, a base da arquitetura no caso do MobileNet-SSD foi o MobileNet, e aqui está o modelo Inception.

4. RCNN mais rápido

A previsão da localização do objeto é baseada em algoritmos de região proposta. As redes de detecção reduziram seu tempo de execução com o avanço do SSPnet e do Fast R-CNN. Um mapa de recursos convolucional é gerado quando uma imagem de entrada é alimentada na rede neural no caso do Faster RCNN.

A região proposta é então identificada através do mapa de características convolucionais e deformada em quadrados. Os quadrados são então remodelados em um tamanho que é fixado por meio de uma camada de pooling ROL (Camada Região de Interesse). Ele é então usado como uma entrada para uma camada que está totalmente conectada.

A camada softmax é usada para prever a classe de proposta de região a partir do vetor de recursos ROL. Os valores de deslocamento da caixa delimitadora também são previstos.

Seleção do modelo TensorFlow de detecção de objetos

O modelo correto do TensorFlow de detecção de objetos pode ser escolhido na API do TensorFlow com base nos requisitos específicos do usuário. A rede de detecção de disparo único, ou seja, a rede SSD pode ser usada se o usuário precisar de um modelo de alta velocidade. O modelo é bastante mais rápido e pode detectar o feed de vídeo em um fps alto.

No entanto, se for necessária mais precisão, o FasterRCNN pode ser uma escolha melhor, pois a precisão do modelo é alta, mas tem uma velocidade comparativamente mais lenta. Portanto, o usuário pode explorar as várias oportunidades disponíveis de acordo com suas necessidades.

Um exemplo do TensorFlow para detecção de objetos

O uso da API do TensorFlow para detecção de objetos não requer conhecimento prévio de aprendizado de máquina ou redes neurais. Os arquivos fornecidos pela API serão usados ​​principalmente. O único requisito é conhecer os fundamentos do python.

1. Baixando o TensorFlow

  • O TensorFlow pode ser baixado pelo git ou baixado manualmente.
  • Baixar o TensorFlow pelo git é uma das maneiras mais fáceis de baixar. Para baixar pelo git, o sistema já deve ter o git pré instalado nele. Uma vez instalado o git, o seguinte comando deve ser digitado no terminal.
  • O link a seguir deve ser visitado e o botão verde deve ser clicado. Os arquivos compactados devem ser baixados e extraídos.
  • A pasta deve ser renomeada em models de models-master.
  • Um ambiente tem que ser criado virtualmente. Um dos principais objetivos da criação de um ambiente virtual python é criar um ambiente python isolado. Ele deve ser usado para projetos em python. Portanto, as dependências de cada projeto serão diferentes.
  • Os seguintes comandos devem ser usados ​​no prompt do anaconda:

Neste caso, o ambiente virtual é denominado obj_detection

conda create -n obj_detection -> para configurar o ambiente virtualmente

conda ativar obj_detection -> para ativar o ambiente virtual

2. Instalando dependências

  • As dependências exigidas pela API devem ser instaladas no PC local.
  • As dependências podem ser instaladas após a ativação do ambiente virtual.
  • O seguinte comando deve ser digitado

pip instalar tensorflow

  • Se uma GPU estiver presente, o seguinte comando será necessário

pip instalar tensorflow-gpu

  • As outras dependências devem ser instaladas através do seguinte comando

pip instalar travesseiro Cython lxml jupyter matplotlib contextlib2 tf_slim

3. Baixando buffers de protocolo (Protobuff)

  • Os buffers de protocolo são determinados mecanismos para estruturar os dados serialmente como o XML.
  • 'Protobuff' deve ser baixado do link .
  • Extraia os arquivos e copie os arquivos para a subpasta chamada “research” na pasta “models” já baixada.
  • A pasta que contém os arquivos protobuf deve ser navegada e executando o seguinte comando

protoc object_detection/protos/*.proto –python_out=.

  • A execução bem-sucedida do comando criará um arquivo python em cada um dos arquivos proto na pasta protos sob detecção de objeto na pasta models.

Conclusão

A detecção de objetos é uma técnica amplamente aplicada em várias aplicações de tempo real. Aprendemos que a técnica pode ser alcançada através da aplicação de algoritmos de aprendizado de máquina ou aprendizado profundo.

Além disso, com a aplicação de uma API, ou seja, TensorFlow, os usuários precisam ter conhecimento prévio do conceito de programação python. Só então os métodos de detecção de objetos usando a API do TensorFlow poderão ser entendidos corretamente. O TensorFlow é uma plataforma de código aberto para aprendizado de máquina. Portanto, para entender o mecanismo de funcionamento do TensorFlow e sua aplicação, é melhor conhecer os conceitos de aprendizado de máquina.

Se você é um profissional de nível médio que deseja aprender programação python, implantar modelos de ML junto com computação em nuvem, pode conferir o curso “ Master of Science in Machine Learning & Artificial Intelligence ” fornecido pelo upGrad . O curso certificado em conjunto pelo IIIT Bangalore & LJMU alinhará seus objetivos com o treinamento especializado e permitirá que você se prepare para sua entrada nas empresas dos seus sonhos. Tudo que você precisa é ter um diploma de bacharel. Nossa equipe de assistência está disponível para entrar em contato com você se houver alguma dúvida relacionada ao curso do upGrad.

Lidere a revolução tecnológica orientada por IA

PROGRAMA EXECUTIVO DE PG EM APRENDIZAGEM DE MÁQUINA E INTELIGÊNCIA ARTIFICIAL
Aplique agora