Detecção de objetos e segmentação de instâncias em Python com Detectron2 PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Detecção de objetos e segmentação de instâncias em Python com Detectron2

Introdução

A detecção de objetos é um grande campo em visão computacional e uma das aplicações mais importantes da visão computacional “na natureza”. Por um lado, ele pode ser usado para construir sistemas autônomos que navegam agentes através de ambientes – sejam robôs executando tarefas ou carros autônomos, mas isso requer interseção com outros campos. No entanto, detecção de anomalias (como produtos defeituosos em uma linha), localização de objetos dentro de imagens, detecção facial e várias outras aplicações de detecção de objetos podem ser feitas sem cruzar outros campos.

A detecção de objetos não é tão padronizada quanto a classificação de imagens, principalmente porque a maioria dos novos desenvolvimentos é normalmente feita por pesquisadores, mantenedores e desenvolvedores individuais, em vez de grandes bibliotecas e estruturas. É difícil empacotar os scripts utilitários necessários em uma estrutura como TensorFlow ou PyTorch e manter as diretrizes da API que orientaram o desenvolvimento até agora.

Isso torna a detecção de objetos um pouco mais complexa, geralmente mais detalhada (mas nem sempre) e menos acessível do que a classificação de imagens. Um dos principais benefícios de estar em um ecossistema é que ele oferece uma maneira de não procurar informações úteis sobre boas práticas, ferramentas e abordagens de uso. Com a detecção de objetos – a maioria precisa fazer muito mais pesquisas sobre a paisagem do campo para obter uma boa aderência.

Meta AI's Detectron2 – Segmentação de instâncias e detecção de objetos

Detectron2 é o pacote de detecção, segmentação e estimativa de pose de objetos de código aberto da Meta AI (anteriormente FAIR – Facebook AI Research) – tudo em um. Dada uma imagem de entrada, ela pode retornar os rótulos, caixas delimitadoras, pontuações de confiança, máscaras e esqueletos de objetos. Isso está bem representado na página do repositório:

Ele deve ser usado como uma biblioteca sobre a qual você pode construir projetos de pesquisa. Ele oferece um zoológico modelo com a maioria das implementações contando com Mask R-CNN e R-CNNs em geral, juntamente com RetinaNet. Eles também têm um bastante decente documentação. Vamos executar um script de inferência de exemplo!

Primeiro, vamos instalar as dependências:

$ pip install pyyaml==5.1
$ pip install 'git+https://github.com/facebookresearch/detectron2.git'

Em seguida, importaremos os utilitários Detectron2 – é aqui que o conhecimento do domínio do framework entra em ação. Você pode construir um detector usando o DefaultPredictor class, passando um objeto de configuração que a configura. o Visualizer oferece suporte para visualização de resultados. MetadataCatalog e DatasetCatalog pertencem à API de dados do Detectron2 e oferecem informações sobre conjuntos de dados integrados, bem como seus metadados.

Vamos importar as classes e funções que usaremos:

import torch, detectron2
from detectron2.utils.logger import setup_logger
setup_logger()

from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog, DatasetCatalog

utilização requests, faremos o download de uma imagem e a salvaremos em nossa unidade local:

import matplotlib.pyplot as plt
import requests
response = requests.get('http://images.cocodataset.org/val2017/000000439715.jpg')
open("input.jpg", "wb").write(response.content)
    
im = cv2.imread("./input.jpg")
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))

Isto resulta em:

Detecção de objetos e segmentação de instâncias em Python com Detectron2 PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Agora, carregamos a configuração, fazemos alterações se necessário (os modelos são executados em GPU por padrão, portanto, se você não tiver uma GPU, deverá definir o dispositivo como 'cpu' na configuração):

cfg = get_cfg()

cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")


Aqui, especificamos qual modelo gostaríamos de executar a partir do model_zoo. Importamos um modelo de segmentação de instâncias, baseado na arquitetura Mask R-CNN, e com backbone ResNet50. Dependendo do que você deseja alcançar (detecção de ponto-chave, segmentação de instância, segmentação panóptica ou detecção de objeto), você carregará o modelo apropriado.

Finalmente, podemos construir um preditor com este cfg e execute-o nas entradas! o Visualizer classe é usada para desenhar previsões na imagem (neste caso, instâncias segmentadas, classes e caixas delimitadoras:

predictor = DefaultPredictor(cfg)
outputs = predictor(im)

v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(out.get_image()[:, :, ::-1])

Por fim, isso resulta em:

Confira nosso guia prático e prático para aprender Git, com práticas recomendadas, padrões aceitos pelo setor e folha de dicas incluída. Pare de pesquisar comandos Git no Google e realmente aprender -lo!

Detecção de objetos e segmentação de instâncias em Python com Detectron2 PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Indo além - Aprendizado profundo prático para visão computacional

Sua natureza curiosa faz você querer ir mais longe? Recomendamos verificar nosso Para: “Aprendizado Profundo Prático para Visão Computacional com Python”.

Detecção de objetos e segmentação de instâncias em Python com Detectron2 PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Outro curso de visão computacional?

Não faremos classificação de dígitos MNIST ou moda MNIST. Eles cumpriram sua parte há muito tempo. Muitos recursos de aprendizado estão se concentrando em conjuntos de dados básicos e arquiteturas básicas antes de permitir que arquiteturas de caixa preta avançadas carreguem o fardo do desempenho.

Queremos focar em desmistificação, praticidade, compreensão, intuição e projetos reais. Quero aprender como você pode fazer a diferença? Vamos levá-lo em um passeio desde a maneira como nossos cérebros processam imagens para escrever um classificador de aprendizado profundo de nível de pesquisa para câncer de mama até redes de aprendizado profundo que “alucinam”, ensinando os princípios e a teoria por meio de trabalho prático, equipando você com o know-how e ferramentas para se tornar um especialista na aplicação de aprendizado profundo para resolver a visão computacional.

O que tem dentro?

  • Os primeiros princípios da visão e como os computadores podem ser ensinados a “ver”
  • Diferentes tarefas e aplicações de visão computacional
  • As ferramentas do comércio que facilitarão seu trabalho
  • Encontrar, criar e utilizar conjuntos de dados para visão computacional
  • A teoria e aplicação das Redes Neurais Convolucionais
  • Lidar com mudança de domínio, coocorrência e outros vieses em conjuntos de dados
  • Transferir Aprendizagem e utilizar o tempo de treinamento e recursos computacionais de outros para seu benefício
  • Construindo e treinando um classificador de câncer de mama de última geração
  • Como aplicar uma dose saudável de ceticismo às ideias dominantes e entender as implicações de técnicas amplamente adotadas
  • Visualizando o “espaço conceitual” de um ConvNet usando t-SNE e PCA
  • Estudos de caso de como as empresas usam técnicas de visão computacional para obter melhores resultados
  • Avaliação adequada do modelo, visualização do espaço latente e identificação da atenção do modelo
  • Realizando pesquisas de domínio, processando seus próprios conjuntos de dados e estabelecendo testes de modelo
  • Arquiteturas de ponta, a progressão das ideias, o que as torna únicas e como implementá-las
  • KerasCV – uma biblioteca WIP para criar pipelines e modelos de última geração
  • Como analisar e ler artigos e implementá-los você mesmo
  • Selecionando modelos dependendo da sua aplicação
  • Criando um pipeline de aprendizado de máquina de ponta a ponta
  • Paisagem e intuição na detecção de objetos com R-CNNs, RetinaNets, SSDs e YOLO mais rápidos
  • Segmentação de instância e semântica
  • Reconhecimento de objetos em tempo real com YOLOv5
  • Treinamento de detectores de objetos YOLOv5
  • Trabalhando com Transformers usando KerasNLP (biblioteca WIP de força da indústria)
  • Integrando Transformers com ConvNets para gerar legendas de imagens
  • Deepdream

Conclusão

A segmentação de instâncias vai um passo além da segmentação semântica e observa a diferença qualitativa entre instâncias individuais de uma classe (pessoa 1, pessoa 2 etc.) em vez de apenas se elas pertencem a uma. De certa forma – é a classificação em nível de pixel.

Neste pequeno guia, analisamos rapidamente como o Detectron2 torna a segmentação de instâncias e a detecção de objetos fácil e acessível por meio de sua API, usando uma máscara R-CNN.

Carimbo de hora:

Mais de Abuso de pilha