Objektdetektionsinferens i Python med YOLOv5 og PyTorch PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Objektdetektionsinferens i Python med YOLOv5 og PyTorch

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 en måde, hvorpå du ikke kan søge efter nyttig information om god praksis, værktøjer og tilgange til brug. Med objektdetektering - de fleste mennesker er nødt til at forske meget mere i markens landskab for at få et godt greb.

Heldigvis for masserne – Ultralytics har udviklet et simpelt, meget kraftfuldt og smukt objektdetektions-API omkring deres YOLOv5-implementering.

I denne korte guide udfører vi objektdetektion i Python, med YOLOv5 bygget af Ultralytics i PyTorch, ved hjælp af et sæt præ-trænede vægte trænet på MS COCO.

YOLOv5

YOLO (Du ser kun én gang) er en metode såvel som en familie af modeller bygget til objektdetektion. Siden starten i 2015 er YOLOv1, YOLOv2 (YOLO9000) og YOLOv3 blevet foreslået af samme forfatter(e) – og deep learning-fællesskabet fortsatte med open source-fremskridt i de fortsatte år.

Ultralytics' YOLOv5 er den første storstilede implementering af YOLO i PyTorch, som gjorde det mere tilgængeligt end nogensinde før, men hovedårsagen til at YOLOv5 har fået sådan fodfæste er også den smukt enkle og kraftfulde API bygget op omkring det. Projektet abstraherer de unødvendige detaljer væk, samtidig med at det tillader tilpasningsmuligheder, praktisk talt alle brugbare eksportformater og anvender en fantastisk praksis, der gør hele projektet både effektivt og så optimalt, som det kan være. Det er virkelig et eksempel på skønheden ved implementering af open source-software, og hvordan den driver den verden, vi lever i.

Projektet giver forudtrænede vægte på MS COCO, et hæftedatasæt om objekter i kontekst, som kan bruges til både at benchmarke og bygge generelle objektdetektionssystemer – men vigtigst af alt kan bruges til at overføre generel viden om objekter i kontekst til brugerdefinerede datasæt.

Objektdetektion med YOLOv5

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

! python -m pip install torch torchvision

YOLOv5 har detaljeret, no-nonsense dokumentation og et smukt simpelt 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 andet argument af hub.load() metoden angiver de vægte, vi gerne vil bruge. Ved at vælge et sted imellem yolov5n til yolov5l6 – vi læsser MS COCO fortrænede vægte. Til brugerdefinerede modeller:

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

Under alle omstændigheder – når først du passerer input gennem modellen, indeholder det returnerede objekt nyttige metoder til at fortolke resultaterne, og vi har valgt at render() dem, som returnerer et NumPy-array, som vi kan smide ind i en imshow() opkald. Dette resulterer i en pænt formateret:

Gem resultater som filer

Du kan gemme resultaterne af inferensen som en fil ved hjælp af results.save() metode:

results.save(save_dir='results')

Dette vil oprette en ny mappe, hvis den ikke allerede er til stede, og gemme det samme billede, som vi lige har plottet, som en fil.

Udskæring af objekter

Du kan også beslutte at beskære de fundne objekter som individuelle filer. I vores tilfælde kan der udtrækkes et antal billeder for hver mærket detekteret. Dette opnås nemt via results.crop() metode, som rskaber en runs/detect/ bibliotek, med expN/crops (hvor N stiger for hver kørsel), hvori der laves en mappe med beskårne billeder for hver etiket:

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å verificere outputfilstrukturen med:

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!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Optælling af objekter

Som standard, når du udfører detektering eller udskriver results objekt – du får antallet af billeder, som inferens blev udført på for det results objekt (YOLOv5 fungerer også med batches af billeder), dets opløsning og antallet af detekterede mærker:

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 scripts

Alternativt kan du køre detektionsscriptet, detect.py, ved at klone YOLOv5-lageret:

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

Og så kører:

$ python detect.py --source img.jpg

Alternativt kan du angive en URL, en videofil, en sti til en mappe med flere filer, en glob i en sti, der kun passer til bestemte filer, et YouTube-link eller en hvilken som helst anden HTTP-stream. Resultaterne gemmes i runs/detect mappe.

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

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

I denne korte guide har vi taget et kig på, hvordan du kan udføre objektdetektering med YOLOv5 bygget ved hjælp af PyTorch.

Tidsstempel:

Mere fra Stablemisbrug