Objektdetektionsinferens i Python med YOLOv5 och PyTorch PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Objektdetektionsinferens i Python med YOLOv5 och PyTorch

Beskrivning

Objektdetektering är ett stort fält inom datorseende och en av de viktigaste tillämpningarna för datorseende "i det vilda". Å ena sidan kan den användas för att bygga autonoma system som navigerar agenter genom miljöer – oavsett om det är robotar som utför uppgifter eller självkörande bilar, men detta kräver korsning med andra fält. Avvikelsedetektering (som defekta produkter på en linje), lokalisering av objekt i bilder, ansiktsdetektering och olika andra tillämpningar av objektdetektering kan dock göras utan att skära andra fält.

Objektdetektering är inte lika standardiserad som bildklassificering, främst eftersom de flesta av de nya utvecklingarna vanligtvis görs av enskilda forskare, underhållare och utvecklare, snarare än stora bibliotek och ramverk. Det är svårt att paketera de nödvändiga verktygsskripten i ett ramverk som TensorFlow eller PyTorch och behålla API-riktlinjerna som väglett utvecklingen hittills.

Detta gör objektdetektering något mer komplex, vanligtvis mer omfattande (men inte alltid) och mindre lättillgänglig än bildklassificering. En av de stora fördelarna med att vara i ett ekosystem är att det ger dig ett sätt att inte söka efter användbar information om god praxis, verktyg och metoder att använda. Med objektdetektering – de flesta människor måste forska mycket mer om landskapet i fältet för att få ett bra grepp.

Lyckligtvis för massorna – Ultralytics har utvecklat ett enkelt, mycket kraftfullt och vackert objektdetekterings-API kring deras YOLOv5-implementering.

I den här korta guiden kommer vi att utföra Objektdetektion i Python, med YOLOv5 byggd av Ultralytics i PyTorch, med hjälp av en uppsättning förtränade vikter tränade på MS COCO.

YOLOv5

YOLO (Du tittar bara en gång) är en metodik, såväl som en familj av modeller byggda för objektdetektering. Sedan starten 2015 har YOLOv1, YOLOv2 (YOLO9000) och YOLOv3 föreslagits av samma författare – och djupinlärningsgemenskapen fortsatte med framsteg med öppen källkod under de pågående åren.

Ultralytics YOLOv5 är den första storskaliga implementeringen av YOLO i PyTorch, vilket gjorde den mer tillgänglig än någonsin tidigare, men den främsta anledningen till att YOLOv5 har fått ett sådant fotfäste är också det vackert enkla och kraftfulla API som är byggt runt det. Projektet abstraherar bort de onödiga detaljerna, samtidigt som det tillåter anpassningsbarhet, praktiskt taget alla användbara exportformat, och använder fantastiska metoder som gör hela projektet både effektivt och så optimalt som det kan bli. Det är verkligen ett exempel på skönheten med implementering av öppen källkod och hur den driver världen vi lever i.

Projektet tillhandahåller förtränade vikter på MS COCO, en stapeldatauppsättning om objekt i sammanhang, som kan användas för att både benchmarka och bygga allmänna objektdetektionssystem – men viktigast av allt, kan användas för att överföra allmän kunskap om objekt i sammanhang till anpassade datauppsättningar.

Objektdetektion med YOLOv5

Innan du går vidare, se till att du har torch och torchvision installerat:

! python -m pip install torch torchvision

YOLOv5 har detaljerad, no-nonsens dokumentation och ett vackert enkelt API, som visas på själva repet och i följande exempel:

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 andra argumentet för hub.load() metoden anger vikterna vi vill använda. Genom att välja någonstans mellan yolov5n till yolov5l6 – vi laddar in MS COCO förtränade vikter. För anpassade modeller:

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

I alla fall – när du väl skickar indata genom modellen, innehåller det returnerade objektet användbara metoder för att tolka resultaten, och vi har valt att render() dem, vilket returnerar en NumPy-array som vi kan kasta in i en imshow() ringa upp. Detta resulterar i en snyggt formaterad:

Spara resultat som filer

Du kan spara resultatet av slutledningen som en fil med hjälp av results.save() metod:

results.save(save_dir='results')

Detta kommer att skapa en ny katalog om den inte redan finns, och spara samma bild som vi precis har ritat som en fil.

Beskär ut objekt

Du kan också välja att beskära de upptäckta objekten som enskilda filer. I vårt fall kan ett antal bilder extraheras för varje etikett som upptäcks. Detta uppnås enkelt via results.crop() metod, som skapar en runs/detect/ katalog, med expN/crops (där N ökar för varje körning), där en katalog med beskurna bilder skapas för varje 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 också verifiera utdatafilens struktur med:

Kolla in vår praktiska, praktiska guide för att lära dig Git, med bästa praxis, branschaccepterade standarder och medföljande fuskblad. Sluta googla Git-kommandon och faktiskt lära Det!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Objekträkning

Som standard, när du utför detektering eller skriver ut results objekt – du får antalet bilder som slutsatsen utfördes på för det results objekt (YOLOv5 fungerar också med bildsatser), dess upplösning och antalet upptäckta etiketter:

print(results)

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

Slutledning med skript

Alternativt kan du köra detektionsskriptet, detect.py, genom att klona YOLOv5-förvaret:

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

Och så springer:

$ python detect.py --source img.jpg

Alternativt kan du tillhandahålla en URL, en videofil, en sökväg till en katalog med flera filer, en glob i en sökväg som bara matchar för vissa filer, en YouTube-länk eller någon annan HTTP-ström. Resultaten sparas i runs/detect katalog.

Going Further – Praktisk djupinlärning för datorseende

Din nyfikna natur gör att du vill gå längre? Vi rekommenderar att du kollar in vår Kurs: "Praktisk djupinlärning för datorseende med Python".

Objektdetektionsinferens i Python med YOLOv5 och PyTorch PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Ännu en kurs i datorseende?

Vi kommer inte att göra klassificering av MNIST-siffror eller MNIST-mode. De tjänade sin del för länge sedan. Alltför många inlärningsresurser fokuserar på grundläggande datamängder och grundläggande arkitekturer innan de låter avancerade blackbox-arkitekturer bära bördan av prestanda.

Vi vill fokusera på avmystifiering, praktiskhet, förståelse, intuition och riktiga projekt. Vill lära sig hur du kan göra skillnad? Vi tar dig med på en tur från hur våra hjärnor bearbetar bilder till att skriva en klassificerare för djupinlärning för bröstcancer i forskningsklass till nätverk för djupinlärning som "hallucinerar", lär dig principer och teorier genom praktiskt arbete, och utrustar dig med kunskap och verktyg för att bli expert på att tillämpa djupinlärning för att lösa datorseende.

Vad är inuti?

  • De första principerna för syn och hur datorer kan läras att "se"
  • Olika uppgifter och tillämpningar av datorseende
  • Branschens verktyg som gör ditt arbete enklare
  • Hitta, skapa och använda datauppsättningar för datorseende
  • Teorin och tillämpningen av Convolutional Neural Networks
  • Hantera domänskifte, samtidig förekomst och andra fördomar i datamängder
  • Överför Lärande och utnyttja andras träningstid och beräkningsresurser till din fördel
  • Bygga och träna en toppmodern klassificerare för bröstcancer
  • Hur man applicerar en hälsosam dos av skepsis på mainstream idéer och förstår implikationerna av allmänt använda tekniker
  • Visualisera ett ConvNets "konceptutrymme" med t-SNE och PCA
  • Fallstudier av hur företag använder datorseendetekniker för att uppnå bättre resultat
  • Korrekt modellutvärdering, latent rumsvisualisering och identifiering av modellens uppmärksamhet
  • Utföra domänforskning, bearbeta dina egna datamängder och upprätta modelltester
  • Banbrytande arkitekturer, utvecklingen av idéer, vad som gör dem unika och hur man implementerar dem
  • KerasCV – ett WIP-bibliotek för att skapa toppmoderna pipelines och modeller
  • Hur man analyserar och läser uppsatser och implementerar dem själv
  • Välja modeller beroende på din applikation
  • Skapa en komplett maskininlärningspipeline
  • Landskap och intuition på objektdetektering med snabbare R-CNN, RetinaNets, SSD och YOLO
  • Instans och semantisk segmentering
  • Objektigenkänning i realtid med YOLOv5
  • Träning av YOLOv5-objektdetektorer
  • Arbeta med transformatorer med KerasNLP (industristarkt WIP-bibliotek)
  • Integrering av Transformers med ConvNets för att generera bildtexter
  • DeepDream

Slutsats

I den här korta guiden har vi tagit en titt på hur du kan utföra objektdetektering med YOLOv5 byggd med PyTorch.

Tidsstämpel:

Mer från Stackabuse