Última atualização em 27 de janeiro de 2021
Pode ser um desafio para iniciantes distinguir entre diferentes tarefas de visão computacional relacionadas.
Por exemplo, a classificação da imagem é direta, mas as diferenças entre a localização de objetos e a detecção de objetos podem ser confusas, especialmente quando as três tarefas podem ser igualmente referidas como reconhecimento de objetos.
A classificação de imagens envolve a atribuição de uma etiqueta de classe a uma imagem, enquanto a localização de objetos envolve o desenho de uma caixa de delimitação em torno de um ou mais objetos em uma imagem. A detecção de objetos é mais desafiadora e combina essas duas tarefas e desenha uma caixa de delimitação ao redor de cada objeto de interesse na imagem e atribui a eles uma etiqueta de classe. Juntos, todos estes problemas são referidos como reconhecimento de objetos.
Neste post, você vai descobrir uma introdução suave ao problema de reconhecimento de objetos e modelos de aprendizagem profunda de última geração desenhados para tratá-lo.
Após ler este post, você vai saber:
- O reconhecimento de objetos se refere a uma coleção de tarefas relacionadas para identificação de objetos em fotografias digitais.
- Region-Based Convolutional Neural Networks, ou R-CNNs, é uma família de técnicas para endereçamento de tarefas de localização e reconhecimento de objetos, projetada para desempenho de modelos.
- You Only Look Once, ou YOLO, é uma segunda família de técnicas para reconhecimento de objetos projetada para velocidade e uso em tempo real.
>
Dê início ao seu projeto com meu novo livro Deep Learning for Computer Vision, incluindo tutoriais passo a passo e os arquivos de código fonte Python para todos os exemplos.
Dê início ao seu projeto.
A Gentle Introduction to Object Recognition With Deep Learning
Photo by Bart Everson, alguns direitos reservados.
>
Visão Geral
Este tutorial está dividido em três partes; elas são:
- O que é Reconhecimento de Objetos?
- Família de Modelos R-CNN
- Família de Modelos YOLO
Quer Resultados com Aprendizagem Profunda para Visão por Computador?
Tomar meu curso de 7 dias grátis por e-mail (com código de exemplo).
Clique para se inscrever e também obter uma versão PDF Ebook grátis do curso.
Download Your FREE Mini-Course
O que é Reconhecimento de Objetos?
O reconhecimento de objetos é um termo geral para descrever uma coleção de tarefas relacionadas à visão por computador que envolvem a identificação de objetos em fotografias digitais.
A classificação de imagens envolve a previsão da classe de um objeto em uma imagem. Localização de objetos refere-se à identificação da localização de um ou mais objetos em uma imagem e desenho de uma caixa abundante em torno de sua extensão. A detecção de objectos combina estas duas tarefas e localiza e classifica um ou mais objectos numa imagem.
Quando um utilizador ou praticante se refere ao “reconhecimento de objectos”, eles significam muitas vezes “detecção de objectos”.
… vamos usar o termo reconhecimento de objetos de forma ampla para abranger tanto a classificação de imagens (uma tarefa que requer um algoritmo para determinar quais classes de objetos estão presentes na imagem) quanto a detecção de objetos (uma tarefa que requer um algoritmo para localizar todos os objetos presentes na imagem
– ImageNet Large Scale Visual Recognition Challenge, 2015.
– Como tal, podemos distinguir entre estas três tarefas de visão por computador:
- Classificação da imagem: Prever o tipo ou classe de um objecto numa imagem.
- Input: Uma imagem com um único objeto, como uma fotografia.
- Saída: Uma etiqueta de classe (por exemplo, um ou mais inteiros que são mapeados para etiquetas de classe).
- Object Localization: Localize a presença de objetos em uma imagem e indique sua localização com uma caixa de delimitação.
- Input: Uma imagem com um ou mais objectos, como uma fotografia.
- Saída: Uma ou mais caixas delimitadoras (por exemplo, definidas por um ponto, largura e altura).
- Detecção de objectos: Localizar a presença de objetos com uma caixa de delimitação e tipos ou classes dos objetos localizados em uma imagem.
- Input: Uma imagem com um ou mais objetos, como uma fotografia.
- Saída: Uma ou mais caixas delimitadoras (por exemplo, definidas por um ponto, largura e altura), e uma etiqueta de classe para cada caixa delimitadora.
Uma outra extensão para esta quebra de tarefas de visão por computador é a segmentação de objetos, também chamada “segmentação de instância de objeto” ou “segmentação semântica”, onde instâncias de objetos reconhecidos são indicadas destacando os pixels específicos do objeto em vez de uma caixa delimitadora grosseira.
A partir desta quebra, podemos ver que o reconhecimento de objetos se refere a um conjunto de tarefas de visão computacional desafiadoras.
Overview of Object Recognition Computer Vision Tasks
A maior parte das inovações recentes em problemas de reconhecimento de imagens vieram como parte da participação nas tarefas do ILSVRC.
Esta é uma competição acadêmica anual com um desafio separado para cada um destes três tipos de problemas, com a intenção de promover melhorias independentes e separadas em cada nível que possam ser alavancadas de forma mais ampla. Por exemplo, veja a lista dos três tipos de tarefas correspondentes abaixo tirada do documento de revisão do ILSVRC de 2015:
- Classificação de imagens: Algoritmos produzem uma lista de categorias de objetos presentes na imagem.
- Localização de um único objeto: Algoritmos produzem uma lista de categorias de objetos presentes na imagem, juntamente com uma caixa de delimitação alinhada por eixos indicando a posição e escala de uma instância de cada categoria de objeto.
- Detecção de objetos: Algoritmos produzem uma lista de categorias de objetos presentes na imagem, juntamente com uma caixa de delimitação alinhada por eixo indicando a posição e a escala de cada instância de cada categoria de objeto.
Vemos que “Single-object localization” é uma versão mais simples da definição mais ampla de “Object Localization”, restringindo as tarefas de localização a objetos de um tipo dentro de uma imagem, o que podemos supor ser uma tarefa mais fácil.
Below é um exemplo comparando a localização de um único objeto e a detecção de objetos, extraído do documento ILSVRC. Note a diferença nas expectativas de verdade em cada caso.
Comparação entre Localização de Objeto Único e Detecção de Objeto.Tirado de: ImageNet Desafio de reconhecimento visual em grande escala.
A performance de um modelo para classificação de imagens é avaliada usando o erro de classificação médio através das etiquetas de classe previstas. O desempenho de um modelo para localização de um único objeto é avaliado usando a distância entre a caixa de delimitação esperada e a caixa de delimitação prevista para a classe esperada. Enquanto o desempenho de um modelo para reconhecimento de objetos é avaliado usando a precisão e recall através de cada uma das caixas de delimitação de melhor correspondência para os objetos conhecidos na imagem.
Agora estamos familiarizados com o problema de localização e detecção de objetos, vamos dar uma olhada em alguns modelos recentes de aprendizagem profunda de alto desempenho.
R-CNN Família de modelos
A família de métodos R-CNN refere-se ao R-CNN, que pode significar “Regions with CNN Features” ou “Region-Based Convolutional Neural Network”, desenvolvido por Ross Girshick, et al.
Inclui as técnicas R-CNN, Fast R-CNN, e Faster-RCNN concebidas e demonstradas para localização de objectos e reconhecimento de objectos.
Vejamos mais de perto os destaques de cada uma destas técnicas por sua vez.
R-CNN
O R-CNN foi descrito no trabalho de 2014 por Ross Girshick, et al. de UC Berkeley intitulado “Rich feature hierarchies for accurate object detection and semantic segmentation”
Pode ter sido uma das primeiras grandes e bem sucedidas aplicações de redes neurais convolucionais ao problema de localização, detecção e segmentação de objetos. A abordagem foi demonstrada em conjuntos de dados de referência, alcançando então resultados de última geração no conjunto de dados VOC-2012 e no conjunto de dados de detecção de objetos de 200 classes ILSVRC-2013.
O modelo R-CNN proposto é composto de três módulos; eles são:
- Módulo 1: Proposta da Região. Gerar e extrair propostas de região independentes de categoria, por exemplo, caixas de delimitação de candidatos.
- Módulo 2: Extractor de características. Extrair recurso de cada região candidata, por exemplo, usando uma rede neural convolucional profunda.
- Módulo 3: Classificador. Classifique os recursos como uma das classes conhecidas, por exemplo, modelo classificador linear SVM.
A arquitetura do modelo está resumida na imagem abaixo, extraída do papel.
Sumário da Arquitetura do Modelo R-CNN
Uma técnica de visão por computador é usada para propor regiões candidatas ou caixas de delimitação de potenciais objetos na imagem chamada “busca seletiva”, embora a flexibilidade do design permita que outros algoritmos de proposta de regiões sejam usados.
O extrator de características usado pelo modelo foi a profunda CNN AlexNet que ganhou o concurso de classificação de imagens ILSVRC-2012. A saída da CNN foi um vetor de 4.096 elementos que descreve o conteúdo da imagem que é alimentada a um SVM linear para classificação, especificamente um SVM é treinado para cada classe conhecida.
É uma aplicação relativamente simples e direta dos CNNs ao problema de localização e reconhecimento de objetos. Uma desvantagem da abordagem é que ela é lenta, exigindo um passe de extração de características baseado na CNN em cada uma das regiões candidatas geradas pelo algoritmo de proposta de região. Este é um problema, pois o artigo descreve o modelo operando em aproximadamente 2.000 regiões propostas por imagem em tempo de teste.
Python (Caffe) e o código fonte do MatLab para R-CNN, conforme descrito no artigo, foi disponibilizado no repositório GitHub do R-CNN.
R-CNNN rápido
Dado o grande sucesso do R-CNN, Ross Girshick, então na Microsoft Research, propôs uma extensão para abordar os problemas de velocidade do R-CNN num artigo de 2015 intitulado “Fast R-CNNN”
O artigo abre com uma revisão das limitações do R-CNN, que podem ser resumidas da seguinte forma:
- O treinamento é um pipeline multi-estágio. Envolve a preparação e operação de três modelos separados.
- O treinamento é caro em espaço e tempo. Treinar uma CNN profunda em tantas propostas de região por imagem é muito lento.
- A detecção de objectos é lenta. Fazer previsões usando uma CNN profunda em tantas propostas de região é muito lento.
Um trabalho prévio foi proposto para acelerar a técnica chamada redes de agrupamento em pirâmide espacial, ou SPPnets, no documento “Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition”, de 2014. Isso acelerou a extração de recursos, mas essencialmente utilizou um tipo de algoritmo de cache forward pass caching.
O R-CNN rápido é proposto como um modelo único ao invés de um pipeline para aprender e sair regiões e classificações diretamente.
A arquitetura do modelo tira a fotografia de um conjunto de propostas de regiões como entrada que são passadas através de uma rede neural convolucional profunda. Uma CNN pré-treinada, como uma VGG-16, é usada para extração de características. O final da CNN profunda é uma camada personalizada chamada Region of Interest Pooling Layer, ou RoI Pooling, que extrai características específicas para uma determinada região candidata a input.
A saída da CNN é então interpretada por uma camada totalmente conectada e o modelo bifurca em duas saídas, uma para a previsão da classe através de uma camada softmax, e outra com uma saída linear para a caixa de delimitação. Este processo é então repetido várias vezes para cada região de interesse numa determinada imagem.
A arquitectura do modelo é resumida na imagem abaixo, retirada do papel.
Resumo da Arquitectura do Modelo R-CNN Rápido.
Tirado de: Fast R-CNN.
O modelo é significativamente mais rápido para treinar e para fazer previsões, mas ainda requer um conjunto de regiões candidatas a serem propostas juntamente com cada imagem de entrada.
Código fonte Python e C++ (Caffe) para o Fast R-CNNN como descrito no artigo foi disponibilizado em um repositório GitHub.
Faster R-CNN
A arquitetura do modelo foi melhorada tanto para a velocidade de treinamento quanto para a detecção por Shaoqing Ren, et al. na Microsoft Research no artigo de 2016 intitulado “Faster R-CNNN”: Towards Real-Time Object Detection with Region Proposal Networks”
A arquitetura foi a base para os resultados do primeiro lugar alcançado tanto no ILSVRC-2015 como no MS COCO-2015 object recognition and detection competition tasks.
A arquitetura foi projetada tanto para propor como para refinar propostas regionais como parte do processo de treinamento, referido como uma Rede de Propostas Regionais, ou RPN. Estas regiões são então utilizadas em conjunto com um modelo Fast R-CNN em um único modelo de design. Estas melhorias reduzem o número de propostas de região e aceleram a operação em tempo de teste do modelo para quase em tempo real com um desempenho de última geração.
… nosso sistema de detecção tem uma taxa de quadros de 5fps (incluindo todos os passos) em uma GPU, ao mesmo tempo em que alcança uma precisão de detecção de objetos de última geração nos conjuntos de dados PASCAL VOC 2007, 2012, e MS COCO com apenas 300 propostas por imagem. Nas competições ILSVRC e COCO 2015, Faster R-CNN e RPN são os alicerces dos trabalhos vencedores do 1º lugar em várias pistas
– Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, 2016.
>
Embora seja um modelo unificado, a arquitectura é composta por dois módulos:
- Módulo 1: Rede de Propostas Regionais. Rede neural convolucional para propor regiões e o tipo de objeto a considerar na região.
- Módulo 2: Fast R-CNN. Rede neural convolucional para extração de recursos das regiões propostas e saída da caixa delimitadora e etiquetas de classe.
Bambos módulos operam na mesma saída de uma CNN profunda. A rede de regiões propostas atua como um mecanismo de atenção para a rede Fast R-CNN, informando à segunda rede onde olhar ou prestar atenção.
A arquitetura do modelo está resumida na imagem abaixo, retirada do papel.
Sumário da Arquitectura do Modelo R-CNNN mais rápido.Extraído de: Faster R-CNN: Towards Real-Time Object Detection With Region Proposal Networks.
O RPN funciona pegando a saída de uma CNN profunda pré-treinada, como a VGG-16, e passando uma pequena rede sobre o mapa de características e produzindo propostas de múltiplas regiões e uma previsão de classe para cada uma. As propostas de região são caixas de delimitação, baseadas nas chamadas caixas de ancoragem ou formas pré-definidas, concebidas para acelerar e melhorar a proposta de regiões. A previsão de classe é binária, indicando a presença de um objeto, ou não, a chamada “objetividade” da região proposta.
Um procedimento de treinamento alternado é usado onde ambas as subredes são treinadas ao mesmo tempo, embora intercaladas. Isto permite que os parâmetros no detector de características profundas CNN sejam adaptados ou afinados para ambas as tarefas ao mesmo tempo.
Na altura da escrita, esta arquitectura R-CNNN mais rápida é o auge da família de modelos e continua a alcançar resultados próximos do estado da arte em tarefas de reconhecimento de objectos. Uma outra extensão adiciona suporte à segmentação de imagens, descrita no paper 2017 “Mask R-CNN”
Código fonte Python e C++ (Caffe) para Fast R-CNN como descrito no paper foi disponibilizado em um repositório GitHub.
Família de modelos YOLO
Outra família popular de modelos de reconhecimento de objetos é referida coletivamente como YOLO ou “You Only Look Once”, desenvolvido por Joseph Redmon, et al.
Os modelos R-CNN podem ser geralmente mais precisos, contudo a família de modelos YOLO são rápidos, muito mais rápidos que o R-CNN, conseguindo a detecção de objectos em tempo real.
YOLO
O modelo YOLO foi descrito pela primeira vez por Joseph Redmon, et al. no artigo de 2015 intitulado “You Only Look Once: Unified, Real-Time Object Detection” (Você só olha uma vez: Detecção de objectos unificada, em tempo real). Note que Ross Girshick, criador do R-CNN, também foi autor e colaborador deste trabalho, depois no Facebook AI Research.
A abordagem envolve uma única rede neural treinada de ponta a ponta que tira uma fotografia como entrada e prevê caixas delimitadoras e etiquetas de classe para cada caixa delimitadora diretamente. A técnica oferece menor precisão preditiva (por exemplo, mais erros de localização), embora opere a 45 quadros por segundo e até 155 quadros por segundo para uma versão com velocidade otimizada do modelo.
Nossa arquitetura unificada é extremamente rápida. O nosso modelo base YOLO processa imagens em tempo real a 45 fotogramas por segundo. Uma versão menor da rede, Fast YOLO, processa um surpreendente 155 quadros por segundo …
– Você só olha uma vez: Unified, Real-Time Object Detection, 2015.
O modelo funciona dividindo primeiro a imagem de entrada em uma grade de células, onde cada célula é responsável por prever uma caixa de delimitação se o centro de uma caixa de delimitação cair dentro da célula. Cada célula da grade prevê uma caixa de delimitação envolvendo a coordenada x, y, a largura e a altura e a confiança. Uma previsão de classe também é baseada em cada célula.
Por exemplo, uma imagem pode ser dividida em uma grade 7×7 e cada célula da grade pode prever 2 caixas de delimitação, resultando em 94 propostas de previsão de caixas de delimitação. O mapa de probabilidades de classe e as caixas de delimitação com confidências são então combinados em um conjunto final de caixas de delimitação e etiquetas de classe. A imagem retirada do trabalho abaixo resume as duas saídas do modelo.
Resumo de previsões feitas pelo Modelo YOLO.Extraído de: You Only Look Once: Unified, Real-Time Object Detection
YOLOv2 (YOLO9000) e YOLOv3
O modelo foi actualizado por Joseph Redmon e Ali Farhadi num esforço para melhorar ainda mais o desempenho do modelo no seu trabalho de 2016 intitulado “YOLO9000: Better, Faster, Stronger.
Embora esta variação do modelo seja referida como YOLO v2, é descrita uma instância do modelo que foi treinada em dois conjuntos de dados de reconhecimento de objectos em paralelo, capaz de prever 9.000 classes de objectos, daí o nome “YOLO9000″.”
Um número de treinamento e alterações arquitetônicas foram feitas no modelo, como o uso de normalização de lotes e imagens de entrada de alta resolução.
Like Faster R-CNN, o modelo YOLOv2 faz uso de caixas de ancoragem, caixas de delimitação pré-definidas com formas e tamanhos úteis que são adaptadas durante o treinamento. A escolha das caixas de delimitação para a imagem é pré-processada usando uma análise de k significaans no conjunto de dados do treinamento.
Importante, a representação prevista das caixas de delimitação é alterada para permitir que pequenas alterações tenham um efeito menos dramático nas previsões, resultando em um modelo mais estável. Ao invés de prever diretamente a posição e o tamanho, os offsets são previstos para mover e remodelar as caixas de ancoragem pré-definidas em relação a uma célula de grade e amortecidos por uma função logística.
Exemplo da Representação Escolhida ao Prever Posição e Forma da Caixa de Ancoragem: YOLO9000: Melhor, Mais Rápido, Mais Forte
Outras melhorias ao modelo foram propostas por Joseph Redmon e Ali Farhadi em seu trabalho de 2018 intitulado “YOLOv3: Uma Melhoria Incremental”. As melhorias foram razoavelmente menores, incluindo uma rede de detecção de características mais profunda e pequenas mudanças de representação.
Outras Leituras
Esta seção fornece mais recursos sobre o tópico se você estiver procurando ir mais fundo.
Paper
- Desafio de Reconhecimento Visual em Grande Escala da ImageNet, 2015.
R-CNN Family Papers
- Rich feature hierarchies for accurate object detection and semantic segmentation, 2013.
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition, 2014.
- Fast R-CNN, 2015.
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, 2016.
- Mask R-CNNN, 2017.
YOLO Family Papers
- You Only Look Once: Unified, Real-Time Object Detection, 2015.
- YOLO9000: Melhor, mais rápido, mais forte, 2016.
- YOLOv3: Uma melhoria incremental, 2018.
Projetos de código
- R-CNN: Regiões com Características de Rede Neural Convolucional, GitHub.
- R-CNN rápido, GitHub.
- Código Python R-CNN mais rápido, GitHub.
- YOLO, GitHub.
Recursos
- Ross Girshick, Homepage.
- Joseph Redmon, Homepage.
- YOLO: Real-Time Object Detection, Homepage.
Artigos
- Um Breve Histórico de CNNs em Segmentação de Imagens: De R-CNN a Máscara R-CNN, 2017.
- Detecção de objectos para chupetas Parte 3: Família R-CNNN, 2017.
- Detecção de objectos Parte 4: Modelos de detecção rápida, 2018.
Sumário
Neste post, você descobriu uma introdução suave ao problema do reconhecimento de objectos e modelos de aprendizagem profunda de última geração desenhados para o resolver.
Especificamente, você aprendeu:
- O reconhecimento de objetos refere-se a uma coleção de tarefas relacionadas para a identificação de objetos em fotografias digitais.
- Region-Based Convolutional Neural Networks, ou R-CNNs, é uma família de técnicas para endereçamento de tarefas de localização e reconhecimento de objetos, projetada para desempenho de modelos.
- You Only Look Once, ou YOLO, é uma segunda família de técnicas para reconhecimento de objetos projetada para velocidade e uso em tempo real.
>
Você tem alguma pergunta?
Saber suas perguntas nos comentários abaixo e farei o meu melhor para responder.
Desenvolva Modelos de Aprendizagem Profunda para Visão Hoje!
Desenvolva Seus Próprios Modelos de Visão em Minutos
…com apenas algumas linhas de código python
Descubra como no meu novo Ebook:
Deep Learning for Computer Vision
Propõe tutoriais de auto-estudo sobre tópicos como:
classificação, detecção de objectos (yolo e rcnn), reconhecimento facial (vggface e facenet), preparação de dados e muito mais…
Finally Bring Deep Learning to your Vision Projects
Skip the Academics. Just Results.
Veja o que há dentro