Nosso blog

Reconhecimento de objetos x Detecção de objetos x Segmentação de imagens

O reconhecimento de objetos é a técnica de identificação do objeto presente em imagens e vídeos. É uma das aplicações mais importantes de aprendizado de máquina e aprendizado profundo. O objetivo deste campo é ensinar as máquinas a entender (reconhecer) o conteúdo de uma imagem assim como os humanos.


Fluxo de reconhecimento de objeto
Reconhecimento de objeto


Reconhecimento de objetos usando aprendizado de máquina
- Extrator de recursos HOG (Histogram of oriented Gradients/Histograma de gradientes orientados) e modelo SVM (Support Vector Machine/Máquina de Vetores de Suporte): antes da era do aprendizado profundo, era um método de última geração para detecção de objetos. Ele pega descritores de histograma de amostras positivas (imagens que contêm objetos) e negativas (imagens que não contêm objetos) e treina nosso modelo SVM sobre isso.

- Modelo "Bag of Features": assim como "Bag of Words" considera o documento como uma coleção, sem ordem, de palavras, essa abordagem também representa uma imagem como uma coleção, sem ordem, de recursos de imagem. Exemplos disso são SIFT, MSER, etc.

- Algoritmo Viola-Jones: este algoritmo é amplamente utilizado para detecção de rosto na imagem ou em tempo real. Ele executa a extração de recursos do tipo Haar da imagem. Isso gera um grande número de recursos. Esses recursos são então passados ​​para um classificador de reforço. Isso gera uma cascata do classificador reforçado para realizar a detecção de imagem. Uma imagem precisa passar para cada um dos classificadores para gerar um resultado positivo (face encontrada). A vantagem do Viola-Jones é que ele tem um tempo de detecção de 2 fps que pode ser usado em um sistema de reconhecimento facial em tempo real.

Reconhecimento de objetos usando aprendizado profundo
A Rede Neural de Convolução (CNN) é uma das formas mais populares de fazer reconhecimento de objetos. É amplamente utilizado e a maioria das redes neurais de última geração usaram esse método para várias tarefas relacionadas ao reconhecimento de objetos, como classificação de imagens. Essa rede CNN recebe uma imagem como entrada e gera a probabilidade das diferentes classes. Se o objeto presente na imagem, sua probabilidade de saída for alta, caso contrário, a probabilidade de saída do resto das classes é insignificante ou baixa. A vantagem do aprendizado profundo é que não precisamos fazer extração de recursos dos dados em comparação com o aprendizado de máquina.


Ilustração de machine e deep learning para carros



Desafios do reconhecimento de objetos
- Como pegamos a saída gerada pela última camada (totalmente conectada) do modelo CNN, ela é um rótulo de classe única. Portanto, uma abordagem simples de CNN não funcionará se mais de um rótulo de classe estiver presente na imagem.
- Se quisermos localizar a presença de um objeto na caixa delimitadora, precisamos tentar uma abordagem diferente que não apenas produza o rótulo da classe, mas também as localizações da caixa delimitadora.


Fluxo de reconhecimento de objetos
Visão geral das tarefas relacionadas ao reconhecimento de objetos



Classificação da imagem
Na classificação de imagem, o modelo recebe uma imagem como entrada e gera o rótulo de classificação dessa imagem com alguma métrica (probabilidade, perda, precisão, etc). Por exemplo: uma imagem de um gato pode ser classificada como um rótulo de classe "gato" ou uma imagem de cão pode ser classificada como um rótulo de classe "cachorro" com alguma probabilidade.


Foto de um cachorro e um gato
Classificação de imagem



Localização de objetos: este algoritmo localiza a presença de um objeto na imagem e o representa com uma caixa delimitadora. Ele recebe uma imagem como entrada e exibe a localização da caixa delimitadora na forma de (posição, altura e largura).

Detecção de objetos
Os algoritmos de detecção de objetos atuam como uma combinação de classificação de imagens e localização de objetos. Ele recebe uma imagem como entrada e produz uma ou mais caixas delimitadoras com o rótulo de classe anexado a cada caixa delimitadora. Esses algoritmos são capazes o suficiente para lidar com classificação e localização multiclasse, bem como para lidar com objetos com múltiplas ocorrências.

Desafios da detecção de objetos
- Na detecção de objetos, as caixas delimitadoras são sempre retangulares. Portanto, não ajuda na determinação da forma dos objetos se o objeto contiver a parte da curvatura.
- A detecção de objetos não pode estimar com precisão algumas medidas, como a área de um objeto, o perímetro de um objeto da imagem.


Imagens de gato, cachoro e pato com retângulos em volta
Diferença entre classificação, localização e detecção de objetos



Segmentação de imagem
A segmentação de imagem é mais uma extensão da detecção de objetos na qual marcamos a presença de um objeto por meio de máscaras pixel a pixel geradas para cada objeto na imagem. Essa técnica é mais granular do que a geração de caixas delimitadoras, pois isso pode nos ajudar a determinar a forma de cada objeto presente na imagem, pois, em vez de desenhar caixas delimitadoras, a segmentação ajuda a descobrir os pixels que estão formando esse objeto. Essa granularidade nos ajuda em vários campos, como processamento de imagens médicas, imagens de satélite, etc. Existem muitas abordagens de segmentação de imagens propostas recentemente. Uma das mais populares é a Máscara R-CNN proposta por K He et al . em 2017.


Ilustração de detecção e segmentação de objetos
Detecção de objeto vs segmentação



Existem basicamente dois tipos de segmentação:
- Segmentação de instâncias: várias instâncias da mesma classe são segmentos separados, ou seja, objetos da mesma classe são tratados como diferentes. Portanto, todos os objetos são coloridos com cores diferentes, mesmo que pertençam à mesma classe.

- Segmentação semântica: todos os objetos da mesma classe formam uma única classificação, portanto, todos os objetos da mesma classe são coloridos pela mesma cor.


Ilustração sobre Segmentação semantica vs segmentação da instância
Segmentação semantica vs segmentação da instância



Aplicações
As técnicas de reconhecimento de objetos discutidas acima podem ser utilizadas em muitos campos, tais como:

- Carros sem motorista: o reconhecimento de objetos é usado para detectar sinais de trânsito, outros veículos, etc.

- Processamento de imagens médicas: técnicas de reconhecimento de objetos e processamento de imagens podem ajudar a detectar doenças com mais precisão. A segmentação da imagem ajuda a detectar a forma do defeito presente no corpo. Por exemplo, o Google AI para detecção de câncer de mama detecta com mais precisão do que os médicos.

- Vigilância e segurança: como reconhecimento facial, rastreamento de objetos, reconhecimento de atividades, etc.

comments powered by Disqus