Rilevamento di oggetti e segmentazione di istanze in Python con Detectron2 PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Rilevamento di oggetti e segmentazione di istanze in Python con Detectron2

Introduzione

Il rilevamento di oggetti è un ampio campo nella visione artificiale e una delle applicazioni più importanti della visione artificiale "in natura". Da un lato, può essere utilizzato per costruire sistemi autonomi che navigano gli agenti attraverso gli ambienti, che si tratti di robot che svolgono attività o di auto a guida autonoma, ma ciò richiede l'intersezione con altri campi. Tuttavia, il rilevamento di anomalie (come prodotti difettosi su una linea), l'individuazione di oggetti all'interno delle immagini, il rilevamento facciale e varie altre applicazioni di rilevamento di oggetti possono essere eseguiti senza intersecare altri campi.

Il rilevamento degli oggetti non è standardizzato come la classificazione delle immagini, principalmente perché la maggior parte dei nuovi sviluppi viene in genere eseguita da singoli ricercatori, manutentori e sviluppatori, piuttosto che da grandi librerie e framework. È difficile impacchettare gli script di utilità necessari in un framework come TensorFlow o PyTorch e mantenere le linee guida API che hanno guidato lo sviluppo finora.

Ciò rende il rilevamento degli oggetti un po' più complesso, in genere più dettagliato (ma non sempre) e meno accessibile rispetto alla classificazione delle immagini. Uno dei principali vantaggi dell'essere in un ecosistema è che fornisce un modo per non cercare informazioni utili su buone pratiche, strumenti e approcci da utilizzare. Con il rilevamento degli oggetti, la maggior parte deve fare molte più ricerche sul paesaggio del campo per avere una buona presa.

Detectron2 di Meta AI: segmentazione di istanze e rilevamento di oggetti

Rilevatore2 è il pacchetto open source di rilevamento, segmentazione e stima della posa di Meta AI (precedentemente FAIR – Facebook AI Research), tutto in uno. Data un'immagine di input, può restituire etichette, riquadri di delimitazione, punteggi di affidabilità, maschere e scheletri di oggetti. Questo è ben rappresentato nella pagina del repository:

È pensato per essere utilizzato come una libreria in cima alla quale è possibile costruire progetti di ricerca. Offre un modello zoo con la maggior parte delle implementazioni che si basano su Mask R-CNN e R-CNN in generale, insieme a RetinaNet. Hanno anche una discreta qualità documentazione. Eseguiamo uno script di inferenza di esame!

Innanzitutto, installiamo le dipendenze:

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

Successivamente, importeremo le utilità Detectron2: è qui che entra in gioco la conoscenza del dominio del framework. È possibile costruire un rilevatore utilizzando il DefaultPredictor class, passando un oggetto di configurazione che lo configura. Il Visualizer offre supporto per la visualizzazione dei risultati. MetadataCatalog ed DatasetCatalog appartengono all'API dei dati di Detectron2 e offrono informazioni sui set di dati integrati e sui relativi metadati.

Importiamo le classi e le funzioni che useremo:

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

utilizzando requests, scaricheremo un'immagine e la salveremo sulla nostra unità locale:

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))

Questo risulta in:

Rilevamento di oggetti e segmentazione di istanze in Python con Detectron2 PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Ora carichiamo la configurazione, apportiamo modifiche se necessario (i modelli funzionano su GPU per impostazione predefinita, quindi se non hai una GPU, ti consigliamo di impostare il dispositivo su "cpu" nella configurazione):

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")


Qui specifichiamo da quale modello vorremmo eseguire model_zoo. Abbiamo importato un modello di segmentazione dell'istanza, basato sull'architettura Mask R-CNN e con una dorsale ResNet50. A seconda di ciò che desideri ottenere (rilevamento di punti chiave, segmentazione dell'istanza, segmentazione panottica o rilevamento di oggetti), caricherai il modello appropriato.

Infine, possiamo costruire un predittore con questo cfg ed eseguilo sugli ingressi! Il Visualizer class viene utilizzata per disegnare previsioni sull'immagine (in questo caso, istanze segmentate, classi e riquadri di delimitazione:

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])

Infine, ciò si traduce in:

Dai un'occhiata alla nostra guida pratica e pratica per l'apprendimento di Git, con le migliori pratiche, gli standard accettati dal settore e il cheat sheet incluso. Smetti di cercare su Google i comandi Git e in realtà imparare esso!

Rilevamento di oggetti e segmentazione di istanze in Python con Detectron2 PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Andare oltre - Apprendimento profondo pratico per la visione artificiale

La tua natura curiosa ti fa venire voglia di andare oltre? Ti consigliamo di dare un'occhiata al nostro Portata: "Apprendimento profondo pratico per la visione artificiale con Python".

Rilevamento di oggetti e segmentazione di istanze in Python con Detectron2 PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Un altro corso di visione artificiale?

Non faremo la classificazione delle cifre MNIST o della moda MNIST. Hanno servito la loro parte molto tempo fa. Troppe risorse di apprendimento si stanno concentrando su set di dati di base e architetture di base prima di lasciare che le architetture black-box avanzate si assumano il peso delle prestazioni.

Vogliamo concentrarci demistificazione, praticità, e una comprensione reciproca, intuizione ed progetti reali. Vuoi imparare come Puoi fare la differenza? Ti porteremo in un viaggio dal modo in cui il nostro cervello elabora le immagini alla scrittura di un classificatore di apprendimento profondo per la ricerca per il cancro al seno alle reti di apprendimento profondo che "allucinano", insegnandoti i principi e la teoria attraverso il lavoro pratico, fornendoti il know-how e strumenti per diventare un esperto nell'applicazione del deep learning per risolvere la visione artificiale.

Cosa c'è dentro?

  • I primi principi della visione e come si può insegnare ai computer a "vedere"
  • Diversi compiti e applicazioni della visione artificiale
  • Gli strumenti del mestiere che ti semplificheranno il lavoro
  • Trovare, creare e utilizzare set di dati per la visione artificiale
  • La teoria e l'applicazione delle reti neurali convoluzionali
  • Gestione del cambio di dominio, della co-occorrenza e di altri pregiudizi nei set di dati
  • Trasferisci l'apprendimento e utilizza il tempo di formazione e le risorse di calcolo degli altri a tuo vantaggio
  • Costruire e formare un classificatore di cancro al seno all'avanguardia
  • Come applicare una sana dose di scetticismo alle idee tradizionali e comprendere le implicazioni delle tecniche ampiamente adottate
  • Visualizzazione dello "spazio concettuale" di una ConvNet utilizzando t-SNE e PCA
  • Casi di studio su come le aziende utilizzano le tecniche di visione artificiale per ottenere risultati migliori
  • Valutazione corretta del modello, visualizzazione dello spazio latente e identificazione dell'attenzione del modello
  • Esecuzione di ricerche di dominio, elaborazione dei propri set di dati e creazione di test di modello
  • Architetture all'avanguardia, la progressione delle idee, cosa le rende uniche e come realizzarle
  • KerasCV – una libreria WIP per la creazione di pipeline e modelli all'avanguardia
  • Come analizzare e leggere documenti e implementarli da soli
  • Selezione dei modelli in base all'applicazione
  • Creazione di una pipeline di machine learning end-to-end
  • Paesaggio e intuizione sul rilevamento di oggetti con R-CNN, RetinaNet, SSD e YOLO più veloci
  • Istanza e segmentazione semantica
  • Riconoscimento di oggetti in tempo reale con YOLOv5
  • Formazione dei rilevatori di oggetti YOLOv5
  • Utilizzo di Transformers tramite KerasNLP (libreria WIP di livello industriale)
  • Integrazione di Transformers con ConvNets per generare didascalie di immagini
  • Deepdream

Conclusione

La segmentazione delle istanze va un passo oltre la segmentazione semantica e rileva la differenza qualitativa tra le singole istanze di una classe (persona 1, persona 2, ecc...) piuttosto che solo se appartengono a una. In un certo senso, è una classificazione a livello di pixel.

In questa breve guida, abbiamo dato una rapida occhiata a come Detectron2 rende la segmentazione delle istanze e il rilevamento degli oggetti facili e accessibili tramite la loro API, utilizzando una maschera R-CNN.

Timestamp:

Di più da Impilamento