Como usar o modelo VGG pré-treinado para classificar objetos em fotografias

Como usar o modelo VGG pré-treinado para classificar objetos em fotografias

As redes neurais convolucionais agora são capazes de superar os humanos em algumas tarefas de visão computacional, como a classificação de imagens.

Ou seja, dada a fotografia de um objeto, responda à pergunta sobre qual dos 1.000 objetos específicos a fotografia mostra.

Um modelo vencedor de competição para esta tarefa é o modelo VGG de pesquisadores de Oxford. O importante desse modelo, além de sua capacidade de classificar objetos em fotografias, é que os pesos do modelo estão disponíveis gratuitamente e podem ser carregados e usados ​​em seus próprios modelos e aplicativos.

Neste tutorial, você descobrirá os modelos de rede neural convolucional VGG para classificação de imagens.

Depois de concluir este tutorial, você saberá:

  • Sobre o conjunto de dados ImageNet e a competição e os modelos vencedores de VGG.
  • Como carregar o modelo VGG no Keras e resumir sua estrutura.
  • Como usar o modelo VGG carregado para classificar objetos em fotografias ad hoc.

Comece seu projeto com meu novo livro Deep Learning With Python, incluindo tutoriais passo a passo e a Código-fonte Python arquivos para todos os exemplos.

Vamos começar.

Visão geral do tutorial

Este tutorial é dividido em 4 partes; eles estão:

  1. ImageNet
  2. Os modelos Oxford VGG
  3. Carregue o modelo VGG em Keras
  4. Desenvolva um classificador de fotos simples

ImageNet

ImageNet é um projeto de pesquisa para desenvolver um grande banco de dados de imagens com anotações, por exemplo, imagens e suas descrições.

As imagens e suas anotações têm sido a base para um desafio de classificação de imagens denominado Desafio de Reconhecimento Visual em Grande Escala ImageNet ou ILSVRC desde 2010. O resultado é que as organizações de pesquisa batalham em conjuntos de dados predefinidos para ver quem tem o melhor modelo para classificação os objetos em imagens.

O Desafio de Reconhecimento Visual em Grande Escala da ImageNet é uma referência na classificação e detecção de categorias de objetos em centenas de categorias de objetos e milhões de imagens. O desafio foi executado anualmente de 2010 até o presente, atraindo a participação de mais de cinquenta instituições.

- Desafio de reconhecimento visual de grande escala ImageNet, 2015.

Para a tarefa de classificação, as imagens devem ser classificadas em uma das 1.000 categorias diferentes.

Nos últimos anos, modelos de rede neural convolucional muito profundos têm sido usados ​​para vencer esses desafios e os resultados nas tarefas têm excedido o desempenho humano.

Amostra de imagens do conjunto de dados ImageNet usado no Desafio ILSVRC

Amostra de imagens do conjunto de dados ImageNet usado no Desafio ILSVRC
Retirado do “Desafio de reconhecimento visual em grande escala da ImageNet”, 2015.

Os modelos Oxford VGG

Pesquisadores do Oxford Visual Geometry Group, ou VGG para breve, participam do desafio ILSVRC.

Em 2014, os modelos de redes neurais convolucionais (CNN) desenvolvidos pelo VGG venceram as tarefas de classificação de imagens.

Resultados do ILSVRC em 2014 para a tarefa de classificação

Resultados do ILSVRC em 2014 para a tarefa de classificação

Após a competição, os participantes escreveram suas descobertas no papel:

Eles também disponibilizaram seus modelos e pesos aprendidos online.

Isso permitiu que outros pesquisadores e desenvolvedores usassem um modelo de classificação de imagem de última geração em seus próprios trabalhos e programas.

Isso ajudou a alimentar uma onda de trabalho de aprendizagem de transferência onde modelos pré-treinados são usados ​​com pequenas modificações em tarefas de modelagem preditiva totalmente novas, aproveitando os recursos de extração de recursos de última geração de modelos comprovados.

... criamos arquiteturas ConvNet significativamente mais precisas, que não só alcançam a precisão de ponta nas tarefas de classificação e localização de ILSVRC, mas também são aplicáveis ​​a outros conjuntos de dados de reconhecimento de imagem, onde alcançam excelente desempenho mesmo quando usados ​​como uma parte de pipelines relativamente simples (por exemplo, recursos profundos classificados por um SVM linear sem ajuste fino). Lançamos nossos dois modelos de melhor desempenho para facilitar pesquisas futuras.

- Redes convolucionais muito profundas para reconhecimento de imagens em grande escala, 2014.

VGG lançou dois modelos CNN diferentes, especificamente um modelo de 16 camadas e um modelo de 19 camadas.

Consulte o jornal para obter os detalhes completos desses modelos.

Os modelos VGG não são mais modernos por apenas alguns pontos percentuais. No entanto, eles são modelos muito poderosos e úteis tanto como classificadores de imagens quanto como base para novos modelos que usam entradas de imagens.

Na próxima seção, veremos como podemos usar o modelo VGG diretamente no Keras.

Carregue o modelo VGG em Keras

O modelo VGG pode ser carregado e usado na biblioteca de aprendizado profundo Keras.

Keras fornece uma interface de aplicativos para carregar e usar modelos pré-treinados.

Usando essa interface, você pode criar um modelo VGG usando os pesos pré-treinados fornecidos pelo grupo Oxford e usá-lo como um ponto de partida em seu próprio modelo, ou usá-lo como um modelo diretamente para classificar imagens.

Neste tutorial, vamos nos concentrar no caso de uso de classificação de novas imagens usando o modelo VGG.

Keras fornece as versões de 16 e 19 camadas por meio das classes VGG16 e VGG19. Vamos nos concentrar no modelo VGG16.

O modelo pode ser criado da seguinte forma:

É isso.

Na primeira vez que você executar este exemplo, Keras irá baixar os arquivos de peso da Internet e armazená-los no ~ / .keras / models diretório.

Observação que os pesos são cerca de 528 megabytes, então o download pode levar alguns minutos dependendo da velocidade de sua conexão com a Internet.

Os pesos são baixados apenas uma vez. Na próxima vez que você executar o exemplo, os pesos serão carregados localmente e o modelo deverá estar pronto para uso em segundos.

Podemos usar as ferramentas padrão Keras para inspecionar a estrutura do modelo.

Por exemplo, você pode imprimir um resumo das camadas de rede da seguinte maneira:

Você pode ver que o modelo é enorme.

Você também pode ver que, por padrão, o modelo espera imagens como entrada com o tamanho 224 x 224 pixels com 3 canais (por exemplo, cor).

Você também pode estar interessado em