Objektdeteksjon og instanssegmentering i Python med Detectron2 PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Objektdeteksjon og instanssegmentering i Python med Detectron2

Introduksjon

Objektdeteksjon er et stort felt innen datasyn, og en av de viktigste bruksområdene for datasyn "i naturen". I den ene enden kan den brukes til å bygge autonome systemer som navigerer agenter gjennom miljøer – det være seg roboter som utfører oppgaver eller selvkjørende biler, men dette krever skjæring med andre felt. Imidlertid kan avviksdeteksjon (som defekte produkter på en linje), lokalisering av objekter i bilder, ansiktsdeteksjon og forskjellige andre bruksområder for objektdeteksjon gjøres uten å krysse andre felt.

Objektdeteksjon er ikke like standardisert som bildeklassifisering, hovedsakelig fordi de fleste av de nye utviklingene vanligvis gjøres av individuelle forskere, vedlikeholdere og utviklere, i stedet for store biblioteker og rammeverk. Det er vanskelig å pakke de nødvendige verktøyskriptene i et rammeverk som TensorFlow eller PyTorch og opprettholde API-retningslinjene som har ledet utviklingen så langt.

Dette gjør gjenstandsgjenkjenning noe mer kompleks, vanligvis mer detaljert (men ikke alltid), og mindre tilgjengelig enn bildeklassifisering. En av de største fordelene med å være i et økosystem er at det gir deg en måte å ikke søke etter nyttig informasjon om god praksis, verktøy og tilnærminger til bruk. Med gjenstandsdeteksjon – de fleste må gjøre mye mer forskning på landskapet i feltet for å få et godt grep.

Meta AIs Detectron2 – Forekomstsegmentering og objektdeteksjon

Detektor 2 er Meta AI (tidligere FAIR – Facebook AI Research) sin åpen kildekode-objektdeteksjons-, segmenterings- og poseestimeringspakke – alt i ett. Gitt et inndatabilde, kan det returnere etiketter, avgrensningsbokser, konfidenspoeng, masker og skjeletter av objekter. Dette er godt representert på depotets side:

Det er ment å brukes som et bibliotek der du kan bygge forskningsprosjekter på toppen. Det tilbyr en modell zoo med de fleste implementeringer som er avhengige av Mask R-CNN og R-CNN generelt, sammen med RetinaNet. De har også en ganske grei dokumentasjon. La oss kjøre et eksemplarisk slutningsskript!

Først, la oss installere avhengighetene:

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

Deretter importerer vi Detectron2-verktøyene – det er her ramme-domenekunnskap kommer inn i bildet. Du kan konstruere en detektor ved å bruke DefaultPredictor klasse, ved å sende inn et konfigurasjonsobjekt som setter det opp. De Visualizer tilbyr støtte for å visualisere resultater. MetadataCatalog og DatasetCatalog tilhører Detectron2s data-API og tilbyr informasjon om innebygde datasett samt deres metadata.

La oss importere klassene og funksjonene vi skal bruke:

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

Ved hjelp av requests, laster vi ned et bilde og lagrer det på vår lokale stasjon:

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

Dette resulterer i:

Objektdeteksjon og instanssegmentering i Python med Detectron2 PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Nå laster vi inn konfigurasjonen, vedtar endringer om nødvendig (modellene kjører på GPU som standard, så hvis du ikke har en GPU, vil du sette enheten til 'cpu' i konfigurasjonen):

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


Her spesifiserer vi hvilken modell vi ønsker å kjøre fra model_zoo. Vi har importert en forekomstsegmenteringsmodell, basert på Mask R-CNN-arkitekturen, og med en ResNet50-ryggrad. Avhengig av hva du ønsker å oppnå (nøkkelpunktdeteksjon, instanssegmentering, panoptisk segmentering eller objektdeteksjon), laster du inn den aktuelle modellen.

Til slutt kan vi konstruere en prediktor med dette cfg og kjør den på inngangene! De Visualizer klasse brukes til å tegne spådommer på bildet (i dette tilfellet segmenterte forekomster, klasser og avgrensningsbokser:

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

Til slutt resulterer dette i:

Sjekk ut vår praktiske, praktiske guide for å lære Git, med beste praksis, bransjeaksepterte standarder og inkludert jukseark. Slutt å google Git-kommandoer og faktisk lære den!

Objektdeteksjon og instanssegmentering i Python med Detectron2 PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Gå videre – praktisk dyp læring for datasyn

Din nysgjerrige natur gjør at du ønsker å gå lenger? Vi anbefaler å sjekke ut vår Kurs: "Praktisk dyplæring for datasyn med Python".

Objektdeteksjon og instanssegmentering i Python med Detectron2 PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Et annet datasynskurs?

Vi kommer ikke til å klassifisere MNIST-sifre eller MNIST-mote. De tjente sin del for lenge siden. For mange læringsressurser fokuserer på grunnleggende datasett og grunnleggende arkitekturer før de lar avanserte svartboksarkitekturer bære byrden av ytelse.

Vi ønsker å fokusere på avmystifisering, praktisk, forståelse, intuisjon og ekte prosjekter. Vil lære hvordan du kan gjøre en forskjell? Vi tar deg med på en tur fra måten hjernen vår behandler bilder på til å skrive en dyplæringsklassifiser for brystkreft til dyplæringsnettverk som "hallusinerer", lærer deg prinsippene og teorien gjennom praktisk arbeid, og utstyrer deg med kunnskap og verktøy for å bli en ekspert på å bruke dyp læring for å løse datasyn.

Hva er inni?

  • De første prinsippene for visjon og hvordan datamaskiner kan læres å "se"
  • Ulike oppgaver og anvendelser av datasyn
  • Verktøyene i bransjen som vil gjøre arbeidet ditt enklere
  • Finne, lage og bruke datasett for datasyn
  • Teorien og anvendelsen av konvolusjonelle nevrale nettverk
  • Håndtering av domeneskift, samtidig forekomst og andre skjevheter i datasett
  • Overfør Læring og bruk av andres treningstid og beregningsressurser til din fordel
  • Bygge og trene en toppmoderne brystkreftklassifiser
  • Hvordan bruke en sunn dose skepsis til mainstream ideer og forstå implikasjonene av vidt vedtatte teknikker
  • Visualisere et ConvNets "konseptrom" ved hjelp av t-SNE og PCA
  • Kasusstudier av hvordan bedrifter bruker datasynsteknikker for å oppnå bedre resultater
  • Riktig modellevaluering, latent romvisualisering og identifisering av modellens oppmerksomhet
  • Utføre domeneforskning, behandle egne datasett og etablere modelltester
  • Nyskapende arkitekturer, utviklingen av ideer, hva som gjør dem unike og hvordan de implementeres
  • KerasCV – et WIP-bibliotek for å lage toppmoderne rørledninger og modeller
  • Hvordan analysere og lese artikler og implementere dem selv
  • Velge modeller avhengig av din applikasjon
  • Opprette en ende-til-ende maskinlæringspipeline
  • Landskap og intuisjon på objektdeteksjon med raskere R-CNN, RetinaNets, SSD og YOLO
  • Forekomst og semantisk segmentering
  • Objektgjenkjenning i sanntid med YOLOv5
  • Trening av YOLOv5-objektdetektorer
  • Arbeide med transformatorer ved å bruke KerasNLP (bransjesterkt WIP-bibliotek)
  • Integrering av transformatorer med ConvNets for å generere bildetekster
  • Deepdream

konklusjonen

Forekomstsegmentering går ett skritt utover semantisk segmentering, og bemerker den kvalitative forskjellen mellom individuelle forekomster av en klasse (person 1, person 2, etc ...) i stedet for bare om de tilhører en. På en måte – det er klassifisering på pikselnivå.

I denne korte guiden har vi tatt en rask titt på hvordan Detectron2 gjør forekomstsegmentering og objektdeteksjon enkel og tilgjengelig gjennom deres API, ved hjelp av en Mask R-CNN.

Tidstempel:

Mer fra Stackabuse