Objekti tuvastamise järeldus Pythonis koos YOLOv5 ja PyTorch PlatoBlockchain Data Intelligence'iga. Vertikaalne otsing. Ai.

Objekti tuvastamise järeldus Pythonis koos YOLOv5 ja PyTorchiga

Sissejuhatus

Objektide tuvastamine on arvutinägemise suur valdkond ja üks olulisemaid arvutinägemise rakendusi "looduses". Ühest otsast saab selle abil ehitada autonoomseid süsteeme, mis navigeerivad agente läbi keskkondade – olgu selleks ülesandeid täitvad robotid või isejuhtivad autod, kuid selleks on vaja ristumist teiste valdkondadega. Anomaaliate tuvastamist (nt defektsed tooted liinil), objektide asukoha määramist piltidel, näotuvastust ja mitmesuguseid muid objekti tuvastamise rakendusi saab aga teha ilma teisi välju ristumata.

Objektide tuvastamine ei ole nii standardiseeritud kui piltide klassifitseerimine, peamiselt seetõttu, et enamiku uutest arendustest teevad tavaliselt üksikud teadlased, hooldajad ja arendajad, mitte suured raamatukogud ja raamistikud. Raske on pakkida vajalikke utiliidi skripte raamistikku, nagu TensorFlow või PyTorch, ja säilitada API juhiseid, mis seni arendust juhtisid.

See muudab objektide tuvastamise mõnevõrra keerukamaks, tavaliselt paljusõnalisemaks (kuid mitte alati) ja vähem ligipääsetavaks kui kujutiste klassifitseerimine. Üks ökosüsteemis viibimise peamisi eeliseid on see, et see annab teile võimaluse mitte otsida kasulikku teavet heade tavade, tööriistade ja kasutusviiside kohta. Objektide tuvastamisega – enamik inimesi peab hea haarde saamiseks palju rohkem uurima põllu maastikku.

Suurte inimeste õnneks – Ultralytics on oma YOLOv5 juurutuse ümber välja töötanud lihtsa, väga võimsa ja ilusa objektituvastuse API.

Selles lühikeses juhendis teostame Pythonis objektide tuvastamise YOLOv5-ga, mille on ehitanud Ultralytics PyTorchis, kasutades eelnevalt treenitud raskuste komplekti, mis on treenitud MS COCO-s.

YOLOv5

YOLO (sa vaatad ainult korra) on metoodika, samuti objektide tuvastamiseks loodud mudelite perekond. Alates loomisest 2015. aastal on YOLOv1, YOLOv2 (YOLO9000) ja YOLOv3 pakkunud sama(d) autor(id) – ja süvaõppekogukond jätkas jätkuvatel aastatel avatud lähtekoodiga edusammudega.

Ultralytics YOLOv5 on YOLO esimene suuremahuline juurutus PyTorchis, mis muutis selle ligipääsetavamaks kui kunagi varem, kuid peamine põhjus, miks YOLOv5 niisuguse jalad alla on saanud, on ka selle ümber ehitatud kaunilt lihtne ja võimas API. Projekt abstraheerib mittevajalikud üksikasjad, võimaldades samal ajal kohandamist, praktiliselt kõiki kasutatavaid ekspordivorminguid ja kasutab hämmastavaid tavasid, mis muudavad kogu projekti nii tõhusaks kui ka optimaalseks. Tõesti, see on näide avatud lähtekoodiga tarkvara rakendamise ilust ja sellest, kuidas see mõjutab maailma, milles me elame.

Projekt pakub MS COCO-le eelkoolitatud kaalusid, mis on kontekstis objektide põhiandmekogum, mida saab kasutada nii võrdlemiseks kui ka üldiste objektituvastussüsteemide loomiseks, kuid mis kõige tähtsam, saab kasutada üldiste teadmiste ülekandmiseks objektide kohta kontekstis kohandatud rakendustesse. andmestikud.

Objekti tuvastamine YOLOv5 abil

Enne edasiliikumist veenduge, et teil on torch ja torchvision paigaldatud:

! python -m pip install torch torchvision

YOLOv5-l on üksikasjalik ja mõttetu dokumentatsioon ja ilusti lihtne API, nagu on näidatud repos endas ja järgmises näites:

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

Teine argument hub.load() meetod määrab kaalud, mida soovime kasutada. Valides ükskõik millise vahel yolov5n et yolov5l6 – laadime MS COCO eelkoolitatud raskusi. Kohandatud mudelite jaoks:

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

Igal juhul – kui olete sisendi mudelist läbi viinud, sisaldab tagastatav objekt abistavaid meetodeid tulemuste tõlgendamiseks ja oleme valinud render() neid, mis tagastab NumPy massiivi, mille saame ühendada imshow() helistama. Tulemuseks on kenasti vormindatud:

Tulemuste salvestamine failidena

Järelduste tulemused saate salvestada failina, kasutades results.save() meetod:

results.save(save_dir='results')

See loob uue kataloogi, kui seda veel pole, ja salvestab sama pildi, mille just joonistasime failina.

Objektide välja lõikamine

Samuti saate otsustada kärpida tuvastatud objektid üksikute failidena. Meie puhul saab iga tuvastatud sildi kohta eraldada hulga pilte. Seda on lihtne saavutada, kasutades results.crop() meetod, mis loob a runs/detect/ kataloog, koos expN/crops (kus N suureneb iga käitamise korral), kus iga sildi jaoks luuakse kärbitud piltidega kataloog:

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

Samuti saate väljundfaili struktuuri kontrollida järgmiselt:

Tutvuge meie praktilise ja praktilise Giti õppimise juhendiga, mis sisaldab parimaid tavasid, tööstusharus aktsepteeritud standardeid ja kaasas olevat petulehte. Lõpetage Giti käskude guugeldamine ja tegelikult õppima seda!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Objektide loendamine

Vaikimisi tuvastamisel või printimisel results objekt – saate piltide arvu, mille kohta järeldus tehti results objekt (YOLOv5 töötab ka piltide partiidega), selle eraldusvõime ja iga tuvastatud sildi arv:

print(results)

Selle tulemuseks on:

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)

Järeldus skriptidega

Teise võimalusena võite käivitada tuvastamisskripti, detect.py, kloonides YOLOv5 hoidla:

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

Ja siis jookseb:

$ python detect.py --source img.jpg

Teise võimalusena saate esitada URL-i, videofaili, mitme failiga kataloogi tee, ainult teatud failide jaoks sobiva maakera, YouTube'i lingi või mõne muu HTTP-voo. Tulemused salvestatakse kausta runs/detect kataloog.

Edasiminek – praktiline süvaõpe arvutinägemise jaoks

Sinu uudishimulik loomus tekitab sinus soovi minna kaugemale? Soovitame tutvuda meiega Kursus: "Praktiline süvaõpe arvutinägemise jaoks Pythoniga".

Objekti tuvastamise järeldus Pythonis koos YOLOv5 ja PyTorch PlatoBlockchain Data Intelligence'iga. Vertikaalne otsing. Ai.

Veel üks arvutinägemise kursus?

Me ei klassifitseeri MNIST-i numbreid ega MNIST-moodi. Nad teenisid oma osa juba ammu. Liiga paljud õpperessursid keskenduvad põhiandmekogumitele ja põhiarhitektuuridele, enne kui lasevad täiustatud musta kasti arhitektuurid jõudluskoormuse enda kanda võtta.

Tahame keskenduda demüstifitseerimine, praktilisus, mõistmine, intuitsioon ja tõelisi projekte. Tahad õppida kuidas saate midagi muuta? Viime teid teele alates viisist, kuidas meie aju töötleb pilte, kuni rinnavähi süvaõppe klassifikaatori kirjutamiseni kuni süvaõppevõrgustikeni, mis "hallutsineerivad", õpetades teile põhimõtteid ja teooriat praktilise töö kaudu, varustades teid oskusteavet ja tööriistu, et saada eksperdiks süvaõppe rakendamisel arvutinägemise lahendamisel.

Mis seal sees on?

  • Nägemise esimesed põhimõtted ja see, kuidas arvuteid saab õpetada nägema
  • Arvutinägemise erinevad ülesanded ja rakendused
  • Tööriistad, mis muudavad teie töö lihtsamaks
  • Arvutinägemise andmestike otsimine, loomine ja kasutamine
  • Konvolutsiooniliste närvivõrkude teooria ja rakendus
  • Domeeni nihke, koosesinemise ja muude andmekogumite eelarvamuste käsitlemine
  • Teisaldage õppimine ja teiste koolitusaja ja arvutusressursside kasutamine teie kasuks
  • Kaasaegse rinnavähi klassifikaatori ehitamine ja väljaõpe
  • Kuidas rakendada tervet annust skepsist peavoolu ideede suhtes ja mõista laialdaselt kasutusele võetud tehnikate mõju
  • ConvNeti "kontseptsiooniruumi" visualiseerimine t-SNE ja PCA abil
  • Juhtumiuuringud, kuidas ettevõtted kasutavad arvutinägemise tehnikaid paremate tulemuste saavutamiseks
  • Mudeli nõuetekohane hindamine, varjatud ruumi visualiseerimine ja mudeli tähelepanu tuvastamine
  • Domeeniuuringu läbiviimine, oma andmekogumite töötlemine ja mudelitestide loomine
  • Tipptasemel arhitektuurid, ideede edenemine, mis teeb need ainulaadseks ja kuidas neid ellu viia
  • KerasCV – WIP-teek tipptasemel torujuhtmete ja mudelite loomiseks
  • Kuidas töid sõeluda ja lugeda ning neid ise rakendada
  • Mudelite valimine sõltuvalt teie rakendusest
  • Täieliku masinõppe torujuhtme loomine
  • Maastik ja intuitsioon objektide tuvastamisel kiiremate R-CNN-ide, RetinaNetside, SSD-de ja YOLO-ga
  • Eksemplar ja semantiline segmenteerimine
  • Reaalajas objektituvastus YOLOv5-ga
  • YOLOv5 objektidetektorite koolitamine
  • Transformeritega töötamine KerasNLP-ga (tööstuse tugev WIP-teek)
  • Transformerite integreerimine ConvNetsiga, et luua piltide pealdised
  • Deepdream

Järeldus

Selles lühikeses juhendis oleme vaatlenud, kuidas saate PyTorchi abil ehitatud YOLOv5 abil objekte tuvastada.

Ajatempel:

Veel alates Stackabus