Object Detection Inference Pythonissa YOLOv5:n ja PyTorch PlatoBlockchain Data Intelligencen kanssa. Pystysuuntainen haku. Ai.

Objektin havaitsemisen päättely Pythonissa YOLOv5:n ja PyTorchin kanssa

esittely

Objektien havaitseminen on laaja kenttä tietokonenäössä ja yksi tärkeimmistä tietokonenäön sovelluksista "luonnossa". Toisaalta sen avulla voidaan rakentaa autonomisia järjestelmiä, jotka navigoivat agentteja ympäristöissä – olipa kyse tehtäviä suorittavista roboteista tai itseohjautuvista autoista, mutta tämä vaatii risteyksiä muiden kenttien kanssa. Kuitenkin poikkeamien havaitseminen (kuten vialliset tuotteet linjalla), kohteiden paikantaminen kuvissa, kasvojen tunnistus ja monet muut esineentunnistuksen sovellukset voidaan tehdä leikkaamatta muita kenttiä.

Objektien tunnistus ei ole yhtä standardoitua kuin kuvien luokittelu, lähinnä siksi, että useimmat uudet kehitystyöt ovat tyypillisesti yksittäisten tutkijoiden, ylläpitäjien ja kehittäjien tekemiä suurten kirjastojen ja kehysten sijaan. Tarvittavia apuohjelmia on vaikea pakata TensorFlow- tai PyTorchin kaltaisiin puitteisiin ja ylläpitää kehitystä tähän asti ohjaaneita API-ohjeita.

Tämä tekee objektien havaitsemisesta jonkin verran monimutkaisempaa, tyypillisesti monisanaisempaa (mutta ei aina) ja vähemmän lähestyttävää kuin kuvien luokittelu. Yksi ekosysteemissä olemisen suurimmista eduista on, että se tarjoaa tavan olla etsimättä hyödyllistä tietoa hyvistä käytännöistä, työkaluista ja lähestymistavoista. Kohteen havaitseminen – useimpien ihmisten on tutkittava paljon enemmän kentän maisemaa saadakseen hyvän otteen.

Masojen onneksi – Ultralytics on kehittänyt yksinkertaisen, erittäin tehokkaan ja kauniin kohteen havaitsemissovellusliittymän YOLOv5-toteutuksensa ympärille.

Tässä lyhyessä oppaassa suoritamme objektien havaitsemisen Pythonissa Ultralyticsin PyTorchissa rakentaman YOLOv5:n avulla käyttämällä esikoulutettuja painoja, jotka on harjoitettu MS COCO:lla.

YOLOV5

YOLO (katsot vain kerran) on metodologia sekä malliperhe, joka on rakennettu kohteen havaitsemiseen. Vuoden 2015 alusta lähtien YOLOv1:tä, YOLOv2:ta (YOLO9000) ja YOLOv3:a ovat ehdottaneet samat kirjoittajat – ja syväoppimisyhteisö on jatkanut avoimen lähdekoodin kehitystyötä jatkuvien vuosien aikana.

Ultralyticsin YOLOv5 on ensimmäinen laajamittainen YOLO-toteutus PyTorchissa, mikä teki siitä helpomman kuin koskaan ennen, mutta tärkein syy YOLOv5:n jalansijalle on myös sen ympärille rakennettu kauniin yksinkertainen ja tehokas API. Projekti abstraktioi pois turhat yksityiskohdat, sallien samalla muokattavuuden, käytännössä kaikki käyttökelpoiset vientimuodot ja hyödyntää hämmästyttäviä käytäntöjä, jotka tekevät koko projektista sekä tehokkaan että mahdollisimman optimaalisen. Todellakin, se on esimerkki avoimen lähdekoodin ohjelmistojen toteutuksen kauneudesta ja siitä, kuinka se vaikuttaa maailmaan, jossa elämme.

Projekti tarjoaa valmiiksi koulutetut painot MS COCO:lle, nidontatietojoukolle objekteista kontekstissa, jota voidaan käyttää sekä vertaamaan että rakentamaan yleisiä objektientunnistusjärjestelmiä – mutta mikä tärkeintä, voidaan käyttää yleisen tiedon siirtämiseen objekteista kontekstissa mukautettuun. tietojoukot.

Objektin tunnistus YOLOv5:llä

Ennen kuin siirryt eteenpäin, varmista, että sinulla on torch ja torchvision asennettu:

! python -m pip install torch torchvision

YOLOv5:llä on yksityiskohtainen, järjetön dokumentaatio ja kauniin yksinkertainen API, kuten itse repossa ja seuraavassa esimerkissä näkyy:

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

Toinen argumentti hub.load() menetelmä määrittää painot, joita haluamme käyttää. Valitsemalla mistä tahansa yolov5n että yolov5l6 – lastaamme MS COCO:n esikoulutettuja painoja. Mukautetut mallit:

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

Joka tapauksessa – kun syötät syötteen mallin läpi, palautettu objekti sisältää hyödyllisiä menetelmiä tulosten tulkitsemiseen, ja olemme valinneet render() ne, mikä palauttaa NumPy-taulukon, jonka voimme liittää an imshow() soittaa puhelimella. Tuloksena on kauniisti muotoiltu:

Tulosten tallentaminen tiedostoina

Voit tallentaa päättelyn tulokset tiedostoksi käyttämällä results.save() menetelmä:

results.save(save_dir='results')

Tämä luo uuden hakemiston, jos sitä ei vielä ole, ja tallentaa juuri piirtämämme kuvan tiedostoksi.

Objektien rajaaminen

Voit myös päättää rajata havaitut kohteet yksittäisinä tiedostoina. Meidän tapauksessamme jokaisesta havaitusta etiketistä voidaan poimia useita kuvia. Tämä saavutetaan helposti käyttämällä results.crop() menetelmä, joka luo a runs/detect/ hakemisto, kanssa expN/crops (jossa N kasvaa jokaisessa ajossa), jossa kullekin tarralle tehdään hakemisto rajatuilla kuvilla:

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

Voit myös tarkistaa tulostiedoston rakenteen:

Tutustu käytännönläheiseen, käytännölliseen Gitin oppimisoppaaseemme, jossa on parhaat käytännöt, alan hyväksymät standardit ja mukana tuleva huijauslehti. Lopeta Git-komentojen googlailu ja oikeastaan oppia se!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Objektien laskeminen

Oletuksena, kun suoritat tunnistusta tai tulostat results objekti – saat g-määrän kuvia, joille päättely tehtiin results objekti (YOLOv5 toimii myös kuvaerien kanssa), sen resoluutio ja kunkin tunnistetun tarran määrä:

print(results)

Tämä johtaa:

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)

Päätelmät skriptien avulla

Vaihtoehtoisesti voit suorittaa tunnistuskomentosarjan, detect.py, kloonaamalla YOLOv5-tietovaraston:

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

Ja sitten juoksemaan:

$ python detect.py --source img.jpg

Vaihtoehtoisesti voit antaa URL-osoitteen, videotiedoston, polun hakemistoon, jossa on useita tiedostoja, maapallon polussa, joka vastaa vain tiettyjä tiedostoja, YouTube-linkin tai minkä tahansa muun HTTP-virran. Tulokset tallennetaan tiedostoon runs/detect hakemistoon.

Jatketaan – Käytännön syvällistä oppimista tietokonenäköön

Utelias luonteesi saa sinut haluamaan pidemmälle? Suosittelemme tutustumaan meidän Kurssi: "Käytännön syvällinen oppiminen tietokonenäön käyttöön Pythonilla".

Object Detection Inference Pythonissa YOLOv5:n ja PyTorch PlatoBlockchain Data Intelligencen kanssa. Pystysuuntainen haku. Ai.

Toinen tietokonenäkökurssi?

Emme luokittele MNIST-numeroita tai MNIST-muotia. He palvelivat osansa kauan sitten. Liian monet oppimisresurssit keskittyvät perustietosarjoihin ja perusarkkitehtuureihin, ennen kuin edistyneiden black-box-arkkitehtuurien annetaan kantaa suoritustaakka.

Haluamme keskittyä demystifikaatio, käytännöllisyys, ymmärtäminen, intuitio ja oikeita projekteja. Haluan oppia miten voitko vaikuttaa? Viemme sinut matkalle aivomme prosessoinnista kuvien tutkimiseen rintasyövän syväoppimisluokittajan kirjoittamiseen syväoppimisverkostoihin, jotka "halusinoivat", opettaen sinulle periaatteita ja teoriaa käytännön työssä ja varustamalla tietotaitoa ja työkaluja tullaksesi asiantuntijaksi syväoppimisen soveltamisessa tietokonenäön ratkaisemiseen.

Mitä on sisällä?

  • Näön ensimmäiset periaatteet ja kuinka tietokoneet voidaan opettaa "näkemään"
  • Tietokonenäön eri tehtävät ja sovellukset
  • Ammatin työkalut, jotka helpottavat työtäsi
  • Tietokokonaisuuksien etsiminen, luominen ja hyödyntäminen tietokonenäköä varten
  • Konvoluutiohermoverkkojen teoria ja sovellus
  • Verkkotunnuksen siirtymisen, samanaikaisen esiintymisen ja muiden vääristymien käsittely tietojoukoissa
  • Siirrä Oppiminen ja muiden koulutusajan ja laskennallisten resurssien hyödyntäminen hyödyksesi
  • Huippuluokan rintasyövän luokittelijan rakentaminen ja kouluttaminen
  • Kuinka soveltaa tervettä annos skeptisyyttä valtavirran ideoihin ja ymmärtää laajalti käytettyjen tekniikoiden vaikutukset
  • ConvNetin "konseptitilan" visualisointi t-SNE:n ja PCA:n avulla
  • Tapaustutkimuksia siitä, kuinka yritykset käyttävät tietokonenäkötekniikoita parempien tulosten saavuttamiseksi
  • Oikea mallin arviointi, piilevän tilan visualisointi ja mallin huomion tunnistaminen
  • Toimialuetutkimuksen suorittaminen, omien tietojoukkojen käsittely ja mallitestien laatiminen
  • Huippuluokan arkkitehtuurit, ideoiden eteneminen, mikä tekee niistä ainutlaatuisia ja miten ne toteutetaan
  • KerasCV – WIP-kirjasto uusimpien putkien ja mallien luomiseen
  • Kuinka jäsentää ja lukea papereita ja toteuttaa ne itse
  • Mallien valinta sovelluksesi mukaan
  • Luodaan päästä päähän koneoppimisputki
  • Maisema ja intuitio kohteen havaitsemisessa nopeampien R-CNN-, RetinaNet-, SSD- ja YOLO-verkkojen avulla
  • Instanssi ja semanttinen segmentointi
  • Reaaliaikainen objektintunnistus YOLOv5:n avulla
  • YOLOv5-objektitunnistimien koulutus
  • Työskentely Transformersin kanssa KerasNLP:n (teollisuuden vahvuus WIP-kirjasto) avulla
  • Transformersin integrointi ConvNet-verkkojen kanssa kuvien tekstitysten luomiseksi
  • Deepdream

Yhteenveto

Tässä lyhyessä oppaassa olemme tarkastelleet, kuinka voit suorittaa kohteen havaitsemisen YOLOv5:llä, joka on rakennettu PyTorchin avulla.

Aikaleima:

Lisää aiheesta Stackabus