Objektdeteksjonsslutning i Python med YOLOv5 og PyTorch PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Objektdeteksjonsslutning i Python med YOLOv5 og PyTorch

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.

Heldigvis for massene – Ultralytics har utviklet en enkel, veldig kraftig og vakker objektdeteksjons-API rundt deres YOLOv5-implementering.

I denne korte guiden skal vi utføre Objektdeteksjon i Python, med YOLOv5 bygget av Ultralytics i PyTorch, ved å bruke et sett med forhåndstrente vekter trent på MS COCO.

YOLOv5

YOLO (Du ser bare en gang) er en metodikk, samt familie av modeller bygget for gjenstandsdeteksjon. Siden oppstarten i 2015 har YOLOv1, YOLOv2 (YOLO9000) og YOLOv3 blitt foreslått av samme forfatter(e) – og dyplæringsfellesskapet fortsatte med fremskritt med åpen kildekode i de påfølgende årene.

Ultralytics' YOLOv5 er den første storskalaimplementeringen av YOLO i PyTorch, som gjorde den mer tilgjengelig enn noen gang før, men hovedårsaken til at YOLOv5 har fått et slikt fotfeste er også den vakkert enkle og kraftige APIen bygget rundt den. Prosjektet abstraherer bort de unødvendige detaljene, samtidig som det tillater tilpasning, praktisk talt alle brukbare eksportformater, og benytter utrolige fremgangsmåter som gjør hele prosjektet både effektivt og så optimalt som det kan bli. Virkelig, det er et eksempel på skjønnheten ved implementering av åpen kildekode, og hvordan den driver verden vi lever i.

Prosjektet gir forhåndstrente vekter på MS COCO, et stiftdatasett om objekter i kontekst, som kan brukes til både å benchmarke og bygge generelle objektdeteksjonssystemer – men viktigst av alt, kan brukes til å overføre generell kunnskap om objekter i kontekst til tilpasset datasett.

Objektdeteksjon med YOLOv5

Før du går videre, sørg for at du har torch og torchvision installert:

! python -m pip install torch torchvision

YOLOv5 har detaljert, intetsigende dokumentasjon og et vakkert enkelt API, som vist på selve repoen, og i følgende eksempel:

import torch

model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = 'https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg'  
results = model(img)
fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(results.render()[0])
plt.show()

Det andre argumentet til hub.load() metoden spesifiserer vektene vi ønsker å bruke. Ved å velge hvor som helst mellom yolov5n til yolov5l6 – vi laster inn MS COCO ferdigtrente vekter. For tilpassede modeller:

model = torch.hub.load('ultralytics/yolov5', 'custom', path='path_to_weights.pt')

I alle fall – når du sender inndataene gjennom modellen, inkluderer det returnerte objektet nyttige metoder for å tolke resultatene, og vi har valgt å render() dem, som returnerer en NumPy-matrise som vi kan kaste inn i en imshow() anrop. Dette resulterer i en pent formatert:

Lagre resultater som filer

Du kan lagre resultatene av slutningen som en fil ved å bruke results.save() metode:

results.save(save_dir='results')

Dette vil opprette en ny katalog hvis den ikke allerede er til stede, og lagre det samme bildet vi nettopp har plottet som en fil.

Beskjære ut objekter

Du kan også velge å beskjære de oppdagede objektene som individuelle filer. I vårt tilfelle, for hver etikett som oppdages, kan et antall bilder trekkes ut. Dette oppnås enkelt via results.crop() metode, som skaper en runs/detect/ katalog, med expN/crops (hvor N øker for hver kjøring), der det lages en katalog med beskårne bilder for hver etikett:

results.crop()
Saved 1 image to runs/detect/exp2
Saved results to runs/detect/exp2

[{'box': [tensor(295.09409),
   tensor(277.03699),
   tensor(514.16113),
   tensor(494.83691)],
  'conf': tensor(0.25112),
  'cls': tensor(0.),
  'label': 'person 0.25',
  'im': array([[[167, 186, 165],
          [174, 184, 167],
          [173, 184, 164],

Du kan også bekrefte utdatafilstrukturen med:

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!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Objekttelling

Som standard, når du utfører deteksjon eller skriver ut results objekt – du får antall bilder som slutningen ble utført på for det results objekt (YOLOv5 fungerer også med grupper av bilder), dets oppløsning og antallet av hver oppdaget etikett:

print(results)

Dette resulterer i:

image 1/1: 720x1280 14 persons, 1 car, 3 buss, 6 traffic lights, 1 backpack, 1 umbrella, 1 handbag
Speed: 35.0ms pre-process, 256.2ms inference, 0.7ms NMS per image at shape (1, 3, 384, 640)

Inferens med skript

Alternativt kan du kjøre deteksjonsskriptet, detect.py, ved å klone YOLOv5-depotet:

$ git clone https://github.com/ultralytics/yolov5 
$ cd yolov5
$ pip install -r requirements.txt

Og så løper:

$ python detect.py --source img.jpg

Alternativt kan du oppgi en URL, en videofil, en bane til en katalog med flere filer, en glob i en bane som bare samsvarer med bestemte filer, en YouTube-kobling eller en annen HTTP-strøm. Resultatene lagres i runs/detect katalogen.

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

Objektdeteksjonsslutning i Python med YOLOv5 og PyTorch 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

I denne korte veiledningen har vi tatt en titt på hvordan du kan utføre objektdeteksjon med YOLOv5 bygget ved hjelp av PyTorch.

Tidstempel:

Mer fra Stackabuse