Objektdetektion og instanssegmentering i Python med Detectron2 PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Objektdetektion og instanssegmentering i Python med Detectron2

Introduktion

Objektdetektion er et stort felt inden for computersyn og en af ​​de mere vigtige anvendelser af computersyn "i naturen". I den ene ende kan det bruges til at bygge autonome systemer, der navigerer agenter gennem miljøer - det være sig robotter, der udfører opgaver eller selvkørende biler, men det kræver krydsning med andre felter. Anomalidetektion (såsom defekte produkter på en linje), lokalisering af objekter i billeder, ansigtsdetektion og forskellige andre anvendelser af objektdetektion kan dog udføres uden at krydse andre felter.

Objektdetektion er ikke så standardiseret som billedklassificering, hovedsagelig fordi de fleste af de nye udviklinger typisk udføres af individuelle forskere, vedligeholdere og udviklere i stedet for store biblioteker og rammer. Det er svært at pakke de nødvendige hjælpescripts i en ramme som TensorFlow eller PyTorch og vedligeholde API-retningslinjerne, der har været styret af udviklingen indtil videre.

Dette gør genkendelse af objekter noget mere kompleks, typisk mere omfattende (men ikke altid) og mindre tilgængelig end billedklassificering. En af de største fordele ved at være i et økosystem er, at det giver dig mulighed for ikke at søge efter nyttig information om god praksis, værktøjer og tilgange til brug. Med genstandsdetektering – de fleste er nødt til at forske meget mere i markens landskab for at få et godt greb.

Meta AI's Detectron2 – Instance Segmentation and Object Detection

Detektor 2 er Meta AI (tidligere FAIR – Facebook AI Research)'s open source-objektdetektions-, segmenterings- og poseestimeringspakke – alt i én. Givet et inputbillede kan det returnere etiketter, afgrænsningsfelter, konfidensresultater, masker og skeletter af objekter. Dette er velrepræsenteret på depotets side:

Det er beregnet til at blive brugt som et bibliotek, hvorpå du kan bygge forskningsprojekter. Det tilbyder en model zoo med de fleste implementeringer afhængige af Mask R-CNN og R-CNN'er generelt, sammen med RetinaNet. De har også en ret anstændig dokumentation. Lad os køre et eksemplarisk inferensscript!

Lad os først installere afhængighederne:

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

Dernæst importerer vi Detectron2-værktøjerne – det er her framework-domæneviden kommer i spil. Du kan konstruere en detektor ved hjælp af DefaultPredictor klasse, ved at indsætte et konfigurationsobjekt, der sætter det op. Det Visualizer tilbyder support til visualisering af resultater. MetadataCatalog , DatasetCatalog tilhører Detectron2's data API og tilbyder information om indbyggede datasæt samt deres metadata.

Lad os importere de klasser og funktioner, vi skal bruge:

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 brug af requests, downloader vi et billede og gemmer det på vores lokale drev:

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:

Objektdetektion og instanssegmentering i Python med Detectron2 PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Nu indlæser vi konfigurationen, foretager ændringer, hvis det er nødvendigt (modellerne kører på GPU som standard, så hvis du ikke har en GPU, skal du indstille enheden til 'cpu' i konfigurationen):

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 specificerer vi, hvilken model vi gerne vil køre fra model_zoo. Vi har importeret en instanssegmenteringsmodel baseret på Mask R-CNN-arkitekturen og med en ResNet50-rygrad. Afhængigt af hvad du gerne vil opnå (nøglepunktsdetektion, instanssegmentering, panoptisk segmentering eller objektdetektering), indlæser du den relevante model.

Endelig kan vi konstruere en prædiktor med dette cfg og kør det på inputs! Det Visualizer klasse bruges til at tegne forudsigelser på billedet (i dette tilfælde segmenterede forekomster, klasser og afgrænsningsfelter:

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

Endelig resulterer dette i:

Tjek vores praktiske, praktiske guide til at lære Git, med bedste praksis, brancheaccepterede standarder og inkluderet snydeark. Stop med at google Git-kommandoer og faktisk lærer det!

Objektdetektion og instanssegmentering i Python med Detectron2 PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Gå videre – Praktisk dyb læring til computersyn

Din nysgerrige natur giver dig lyst til at gå længere? Vi anbefaler at tjekke vores Kursus: "Praktisk dyb læring til computersyn med Python".

Objektdetektion og instanssegmentering i Python med Detectron2 PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Endnu et kursus i computersyn?

Vi laver ikke klassificering af MNIST-cifre eller MNIST-mode. De tjente deres del for længe siden. For mange læringsressourcer fokuserer på grundlæggende datasæt og grundlæggende arkitekturer, før de lader avancerede black-box-arkitekturer bære byrden af ​​ydeevne.

Vi ønsker at fokusere på afmystificering, praktisk, forståelse, intuition , rigtige projekter. Vil gerne lære hvordan kan du gøre en forskel? Vi tager dig med på en tur fra den måde, vores hjerner behandler billeder på, til at skrive en deep learning-klassificerer for brystkræft i forskningsklasse til deep learning-netværk, der "hallucinerer", lærer dig principperne og teorien gennem praktisk arbejde, og udstyrer dig med knowhow og værktøjer til at blive ekspert i at anvende dyb læring til at løse computervision.

Hvad er der indenfor?

  • De første principper for vision og hvordan computere kan læres at "se"
  • Forskellige opgaver og anvendelser af computersyn
  • Branchens værktøjer, der vil gøre dit arbejde lettere
  • Finde, skabe og bruge datasæt til computervision
  • Teorien og anvendelsen af ​​​​konvolutionelle neurale netværk
  • Håndtering af domæneskift, samtidige forekomster og andre skævheder i datasæt
  • Overfør Læring og udnyttelse af andres træningstid og beregningsressourcer til din fordel
  • Opbygning og træning af en avanceret brystkræftklassificering
  • Hvordan man anvender en sund dosis skepsis til mainstream ideer og forstår implikationerne af vidt anvendte teknikker
  • Visualisering af et ConvNets "konceptrum" ved hjælp af t-SNE og PCA
  • Casestudier af, hvordan virksomheder bruger computervisionsteknikker til at opnå bedre resultater
  • Korrekt modelevaluering, latent rumvisualisering og identifikation af modellens opmærksomhed
  • Udførelse af domæneforskning, bearbejdning af dine egne datasæt og etablering af modeltest
  • Banebrydende arkitekturer, udviklingen af ​​ideer, hvad der gør dem unikke, og hvordan man implementerer dem
  • KerasCV – et WIP-bibliotek til at skabe state of the art pipelines og modeller
  • Hvordan man analyserer og læser papirer og implementerer dem selv
  • Valg af modeller afhængigt af din applikation
  • Oprettelse af en end-to-end machine learning pipeline
  • Landskab og intuition på objektdetektion med hurtigere R-CNN'er, RetinaNets, SSD'er og YOLO
  • Forekomst og semantisk segmentering
  • Objektgenkendelse i realtid med YOLOv5
  • Træning af YOLOv5 objektdetektorer
  • Arbejde med transformere ved hjælp af KerasNLP (industristærkt WIP-bibliotek)
  • Integrering af transformere med ConvNets for at generere billedtekster
  • Deepdream

Konklusion

Forekomstsegmentering går et skridt ud over semantisk segmentering og bemærker den kvalitative forskel mellem individuelle forekomster af en klasse (person 1, person 2, osv...) snarere end blot om de tilhører en. På en måde – det er klassificering på pixelniveau.

I denne korte guide har vi taget et hurtigt kig på, hvordan Detectron2 gør instanssegmentering og objektdetektering let og tilgængelig via deres API ved hjælp af en Mask R-CNN.

Tidsstempel:

Mere fra Stablemisbrug