Sklepanje zaznavanja predmetov v Pythonu z YOLOv5 in PyTorch PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Sklepanje zaznavanja objektov v Pythonu z YOLOv5 in PyTorch

Predstavitev

Zaznavanje predmetov je obsežno področje računalniškega vida in ena pomembnejših aplikacij računalniškega vida »v naravi«. Na eni strani se lahko uporablja za gradnjo avtonomnih sistemov, ki krmarijo agente skozi okolja – naj bodo to roboti, ki opravljajo naloge, ali samovozeči avtomobili, vendar to zahteva presečišče z drugimi področji. Vendar pa je zaznavanje nepravilnosti (kot so okvarjeni izdelki na liniji), lociranje predmetov na slikah, zaznavanje obrazov in različne druge aplikacije zaznavanja predmetov mogoče izvesti brez presekanja drugih področij.

Zaznavanje objektov ni tako standardizirano kot klasifikacija slik, predvsem zato, ker večino novega razvoja običajno opravijo posamezni raziskovalci, vzdrževalci in razvijalci, ne pa velike knjižnice in ogrodja. Težko je zapakirati potrebne pomožne skripte v ogrodje, kot sta TensorFlow ali PyTorch, in vzdrževati smernice API-ja, ki so usmerjale dosedanji razvoj.

Zaradi tega je zaznavanje objektov nekoliko bolj zapleteno, običajno bolj podrobno (vendar ne vedno) in manj dostopno kot klasifikacija slik. Ena od glavnih prednosti bivanja v ekosistemu je, da vam omogoča, da ne iščete koristnih informacij o dobrih praksah, orodjih in pristopih za uporabo. Z zaznavanjem predmetov – večina ljudi mora veliko bolj raziskati pokrajino polja, da se dobro znajdejo.

Na srečo za množice – Ultralytics je razvil preprost, zelo zmogljiv in lep API za zaznavanje predmetov okoli svoje implementacije YOLOv5.

V tem kratkem vodniku bomo izvajali zaznavanje objektov v Pythonu z YOLOv5, ki ga je zgradil Ultralytics v PyTorchu, z uporabo nabora vnaprej pripravljenih uteži, treniranih na MS COCO.

YOLOv5

YOLO (pogledaš samo enkrat) je metodologija, pa tudi družina modelov, zgrajenih za odkrivanje objektov. Od ustanovitve leta 2015 so YOLOv1, YOLOv2 (YOLO9000) in YOLOv3 predlagali isti avtorji – in skupnost za globoko učenje je v naslednjih letih nadaljevala z odprtokodnim napredkom.

Ultralytics' YOLOv5 je prva obsežna implementacija YOLO v PyTorch, zaradi katere je postal bolj dostopen kot kdaj koli prej, vendar je glavni razlog, da je YOLOv5 pridobil tako oporo, tudi čudovito preprost in zmogljiv API, zgrajen okoli njega. Projekt abstrahira nepotrebne podrobnosti, hkrati pa omogoča prilagodljivost, praktično vse uporabne izvozne formate in uporablja neverjetne prakse, zaradi katerih je celoten projekt hkrati učinkovit in čim bolj optimalen. Resnično, to je primer lepote implementacije odprtokodne programske opreme in kako napaja svet, v katerem živimo.

Projekt zagotavlja vnaprej pripravljene uteži na MS COCO, rezanem naboru podatkov o objektih v kontekstu, ki se lahko uporablja za primerjavo in gradnjo splošnih sistemov za odkrivanje objektov – kar je najpomembneje, lahko se uporablja za prenos splošnega znanja o objektih v kontekstu v prilagojene nabori podatkov.

Zaznavanje predmetov z YOLOv5

Preden nadaljujete, se prepričajte, da imate torch in torchvision nameščen:

! python -m pip install torch torchvision

YOLOv5 ima podrobno dokumentacijo brez neumnosti in čudovito preprost API, kot je prikazano na samem repoju in v naslednjem primeru:

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

Drugi argument od hub.load() metoda določa uteži, ki jih želimo uporabiti. Z izbiro kjerkoli med yolov5n do yolov5l6 – nakladamo vnaprej pripravljene uteži MS COCO. Za modele po meri:

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

V vsakem primeru – ko podate vhod skozi model, vrnjeni objekt vključuje uporabne metode za razlago rezultatov, mi pa smo se odločili, render() jih, ki vrne matriko NumPy, ki jo lahko vržemo v imshow() klic. Posledica tega je lepo oblikovano:

Shranjevanje rezultatov kot datotek

Rezultate sklepanja lahko shranite kot datoteko z uporabo results.save() metoda:

results.save(save_dir='results')

To bo ustvarilo nov imenik, če še ni prisoten, in shranilo isto sliko, ki smo jo pravkar izrisali, kot datoteko.

Obrezovanje predmetov

Odločite se lahko tudi, da zaznane predmete izrežete kot posamezne datoteke. V našem primeru je za vsako zaznano oznako mogoče ekstrahirati več slik. To je enostavno doseči prek results.crop() metoda, ki ustvarja a runs/detect/ imenik, z expN/crops (kjer se N poveča za vsako vožnjo), v katerem je za vsako oznako narejen imenik z obrezanimi slikami:

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

Strukturo izhodne datoteke lahko preverite tudi z:

Oglejte si naš praktični, praktični vodnik za učenje Gita z najboljšimi praksami, standardi, sprejetimi v panogi, in priloženo goljufijo. Nehajte Googlati ukaze Git in pravzaprav naučiti it!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Štetje predmetov

Privzeto, ko izvedete zaznavanje ali natisnete results predmet – dobili boste število slik, na katerih je bilo za to izvedeno sklepanje results objekt (YOLOv5 deluje tudi s serijami slik), njegovo ločljivost in število vsake zaznane oznake:

print(results)

Rezultat tega je:

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)

Sklepanje s skripti

Druga možnost je, da zaženete skript za odkrivanje, detect.py, s kloniranjem repozitorija YOLOv5:

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

In potem teče:

$ python detect.py --source img.jpg

Lahko pa navedete URL, video datoteko, pot do imenika z več datotekami, globus v poti, ki se ujema samo z določenimi datotekami, povezavo YouTube ali kateri koli drug tok HTTP. Rezultati se shranijo v runs/detect imenik.

Naprej – Praktično poglobljeno učenje za računalniški vid

Ali zaradi vaše radovedne narave želite iti dlje? Priporočamo, da si ogledate naše Tečaj: »Praktično poglobljeno učenje za računalniški vid s Pythonom«.

Sklepanje zaznavanja predmetov v Pythonu z YOLOv5 in PyTorch PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Še en tečaj računalniškega vida?

Ne bomo izvajali klasifikacije števk MNIST ali načina MNIST. Svojo so že zdavnaj odslužili. Preveč učnih virov se osredotoča na osnovne nabore podatkov in osnovne arhitekture, preden prepusti naprednim arhitekturam črnih skrinjic breme zmogljivosti.

Želimo se osredotočiti na demistifikacija, praktičnosti, razumevanje, intuicija in pravi projekti. Želim se naučiti kako lahko kaj spremeniš? Popeljali vas bomo od načina, na katerega naši možgani obdelujejo slike, do pisanja raziskovalnega klasifikatorja globokega učenja za raka dojke do omrežij globokega učenja, ki »halucinirajo«, vas naučijo načel in teorije s praktičnim delom ter vas opremijo z znanje in izkušnje ter orodja, da postanete strokovnjak za uporabo globokega učenja za reševanje računalniškega vida.

Kaj je notri?

  • Prva načela vida in kako lahko računalnike naučimo "videti"
  • Različne naloge in aplikacije računalniškega vida
  • Strokovna orodja, ki vam bodo olajšala delo
  • Iskanje, ustvarjanje in uporaba naborov podatkov za računalniški vid
  • Teorija in uporaba konvolucijskih nevronskih mrež
  • Obravnava premikov domene, sopojavljanja in drugih pristranskosti v nizih podatkov
  • Prenos učenja in uporaba časa za usposabljanje in računalniških virov drugih v vašo korist
  • Izdelava in usposabljanje najsodobnejšega klasifikatorja raka dojke
  • Kako uporabiti zdrav odmerek skepticizma za glavne ideje in razumeti posledice splošno sprejetih tehnik
  • Vizualizacija »konceptnega prostora« ConvNet z uporabo t-SNE in PCA
  • Študije primerov o tem, kako podjetja uporabljajo tehnike računalniškega vida za doseganje boljših rezultatov
  • Pravilno vrednotenje modela, vizualizacija latentnega prostora in prepoznavanje pozornosti modela
  • Izvajanje domenskih raziskav, obdelava lastnih naborov podatkov in vzpostavljanje testov modelov
  • Vrhunske arhitekture, razvoj idej, kaj jih dela edinstvene in kako jih uresničiti
  • KerasCV – knjižnica WIP za ustvarjanje najsodobnejših cevovodov in modelov
  • Kako razčleniti in brati prispevke ter jih implementirati sami
  • Izbira modelov glede na vašo aplikacijo
  • Ustvarjanje cevovoda strojnega učenja od konca do konca
  • Pokrajina in intuicija pri zaznavanju predmetov s hitrejšimi R-CNN, RetinaNets, SSD in YOLO
  • Instančna in pomenska segmentacija
  • Prepoznavanje predmetov v realnem času z YOLOv5
  • Usposabljanje detektorjev predmetov YOLOv5
  • Delo s transformatorji z uporabo KerasNLP (industrijska knjižnica WIP)
  • Integracija Transformers s ConvNets za ustvarjanje napisov slik
  • Deepdream

zaključek

V tem kratkem vodniku smo si ogledali, kako lahko izvedete zaznavanje predmetov z YOLOv5, zgrajenim s PyTorch.

Časovni žig:

Več od Stackabuse