Objektumészlelési következtetés a Pythonban YOLOv5-tel és PyTorch PlatoBlockchain adatintelligenciával. Függőleges keresés. Ai.

Objektumészlelési következtetés a Pythonban YOLOv5 és PyTorch segítségével

Bevezetés

Az objektumészlelés a számítógépes látás nagy területe, és a számítógépes látás egyik legfontosabb alkalmazása „vadon”. Egyrészt fel lehet vele építeni autonóm rendszereket, amelyek az ügynököket a környezeteken keresztül navigálják – legyen szó feladatokat ellátó robotokról vagy önvezető autókról, de ehhez más területekkel való kereszteződés szükséges. Az anomáliák észlelése (például a vonalon lévő hibás termékek), a képeken belüli objektumok helymeghatározása, az arcfelismerés és az objektumészlelés különféle egyéb alkalmazásai azonban elvégezhetők anélkül, hogy más mezőket metszenek.

Az objektumészlelés nem annyira szabványos, mint a képbesorolás, főleg azért, mert a legtöbb új fejlesztést jellemzően egyéni kutatók, karbantartók és fejlesztők végzik, nem pedig nagy könyvtárak és keretrendszerek. Nehéz a szükséges segédprogram-szkripteket olyan keretrendszerbe csomagolni, mint a TensorFlow vagy a PyTorch, és fenntartani az API-irányelveket, amelyek a fejlesztést eddig irányították.

Ez némileg bonyolultabbá, jellemzően bőbeszédesebbé (de nem mindig) teszi az objektumok észlelését, és kevésbé megközelíthetővé, mint a képosztályozás. Az ökoszisztémában való tartózkodás egyik fő előnye, hogy lehetőséget ad arra, hogy ne keressen hasznos információkat a bevált gyakorlatokról, eszközökről és megközelítésekről. Tárgyérzékeléssel – a legtöbb embernek sokkal többet kell kutatnia a terep táján, hogy jó fogást kapjon.

A tömegek szerencséjére – az Ultralytics egy egyszerű, nagyon hatékony és gyönyörű objektumészlelési API-t fejlesztett ki a YOLOv5 megvalósítása köré.

Ebben a rövid útmutatóban az objektumészlelést Pythonban, az Ultralytics által PyTorch-ban felépített YOLOv5-tel fogjuk végrehajtani, előre betanított súlyok segítségével, amelyeket MS COCO-n edzettek.

YOLOv5

YOLO (Csak egyszer nézel) egy módszertan, valamint egy objektumészlelésre épített modellcsalád. A 2015-ös indulás óta a YOLOv1, YOLOv2 (YOLO9000) és YOLOv3 változatot ugyanaz a szerző(k) javasolták – és a mélytanulási közösség nyílt forráskódú fejlesztésekkel folytatódott a következő években.

Az Ultralytics YOLOv5 a YOLO első nagyszabású implementációja a PyTorch-ban, ami minden eddiginél hozzáférhetőbbé tette, de a YOLOv5 ilyen irányú meghódításának fő oka a köré épített gyönyörűen egyszerű és hatékony API is. A projekt elvonatkoztatja a szükségtelen részleteket, miközben lehetővé teszi a testreszabhatóságot, gyakorlatilag az összes használható exportformátumot, és elképesztő gyakorlatokat alkalmaz, amelyek az egész projektet hatékonyvá és a lehető legoptimálisabbá teszik. Valójában ez egy példa a nyílt forráskódú szoftverek megvalósításának szépségére, és arra, hogy hogyan hat a világra, amelyben élünk.

A projekt előre betanított súlyokat biztosít az MS COCO-n, egy kontextusban lévő objektumokra vonatkozó alapadatkészleten, amely felhasználható az általános objektumészlelési rendszerek összehasonlítására és felépítésére – de ami a legfontosabb, felhasználható az objektumokkal kapcsolatos általános ismeretek kontextusban történő átvitelére is. adatkészletek.

Objektumészlelés a YOLOv5 segítségével

Mielőtt továbblépne, győződjön meg arról, hogy megvan torch és a torchvision telepítve:

! python -m pip install torch torchvision

A YOLOv5 részletes, értelmetlen dokumentációval és egy gyönyörűen egyszerű API-val rendelkezik, amint az magán a repón és a következő példán is látható:

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

A második érv a hub.load() metódus határozza meg a használni kívánt súlyokat. Bármelyik választással yolov5n nak nek yolov5l6 – berakjuk az MS COCO előre kiképzett súlyokat. Egyedi modellekhez:

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

Mindenesetre – miután átadta a bemenetet a modellen, a visszaadott objektum hasznos módszereket tartalmaz az eredmények értelmezéséhez, és úgy döntöttünk, hogy render() őket, ami egy NumPy tömböt ad vissza, amelyet egy an imshow() hívás. Ennek eredményeképpen egy szépen formázott:

Az eredmények mentése fájlként

A következtetés eredményeit fájlként mentheti el a results.save() eljárás:

results.save(save_dir='results')

Ez létrehoz egy új könyvtárat, ha még nincs jelen, és fájlként menti ugyanazt a képet, amelyet az imént ábrázoltunk.

Objektumok kivágása

Dönthet úgy is, hogy az észlelt objektumokat egyedi fájlként vágja ki. Esetünkben minden észlelt címkéhez számos kép kinyerhető. Ez könnyen elérhető a results.crop() módszer, amely létrehozza a runs/detect/ könyvtár, with expN/crops (ahol az N minden futtatásnál növekszik), amelyben minden címkéhez egy levágott képekkel rendelkező könyvtár készül:

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

A kimeneti fájl szerkezetét a következővel is ellenőrizheti:

Tekintse meg gyakorlatias, gyakorlati útmutatónkat a Git tanulásához, amely tartalmazza a bevált gyakorlatokat, az iparág által elfogadott szabványokat és a mellékelt csalólapot. Hagyd abba a guglizást a Git parancsokkal, és valójában tanulni meg!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Objektumszámlálás

Alapértelmezés szerint, amikor észlelést hajt végre vagy kinyomtatja a results objektum – megkapja azon képek számát, amelyeken a következtetést végrehajtották results objektum (a YOLOv5 képkötegekkel is működik), felbontása és az egyes észlelt címkék száma:

print(results)

Ennek eredményeként:

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)

Következtetés szkriptekkel

Alternatív megoldásként futtathatja az észlelési szkriptet, detect.py, a YOLOv5 adattár klónozásával:

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

És akkor futás:

$ python detect.py --source img.jpg

Alternatív megoldásként megadhat egy URL-t, videofájlt, egy több fájlt tartalmazó könyvtár elérési útját, egy globot az elérési útban, amely csak bizonyos fájlokhoz illeszkedik, egy YouTube-linket vagy bármely más HTTP-folyamot. Az eredmények mentésre kerülnek a runs/detect könyvtárban.

Továbblépve – Gyakorlati mélytanulás a számítógépes látáshoz

Érdeklődő természete arra készteti, hogy tovább menjen? Javasoljuk, hogy tekintse meg nálunk Tanfolyam: „Practical Deep Learning for Computer Vision with Python”.

Objektumészlelési következtetés a Pythonban YOLOv5-tel és PyTorch PlatoBlockchain adatintelligenciával. Függőleges keresés. Ai.

Újabb számítógépes látás tanfolyam?

Nem végezzük az MNIST számjegyek osztályozását vagy az MNIST divatot. Régen kiszolgálták a részüket. Túl sok tanulási erőforrás összpontosít az alapvető adatkészletekre és alapvető architektúrákra, mielőtt a fejlett feketedoboz-architektúrákra hagyná a teljesítmény terhét.

Mi arra szeretnénk koncentrálni demisztifikáció, gyakorlatiasság, megértés, intuíció és a valódi projektek. Tanulni akar hogyan tudsz változtatni? Elvezetjük Önt az agyunk képfeldolgozási módjától a mellrák kutatási szintű mélytanulási osztályozójának megírásáig a mély tanulási hálózatokig, amelyek „hallucinálnak”, gyakorlati munkán keresztül megtanítjuk az alapelveket és az elméletet, felkészítve a know-how és eszközök ahhoz, hogy szakértővé váljon a mélytanulás alkalmazásában a számítógépes látás megoldásában.

Mi van benne?

  • A látás első alapelvei és hogyan lehet a számítógépeket „látni” tanítani
  • A számítógépes látás különböző feladatai és alkalmazásai
  • A szakma eszközei, amelyek megkönnyítik a munkáját
  • Adatkészletek keresése, létrehozása és felhasználása számítógépes látáshoz
  • A konvolúciós neurális hálózatok elmélete és alkalmazása
  • Tartományeltolódás, együttes előfordulás és egyéb torzítások kezelése az adatkészletekben
  • Transzfer Tanulás és mások képzési idejének és számítási erőforrásainak felhasználása az Ön javára
  • Korszerű emlőrák osztályozó felépítése és betanítása
  • Hogyan alkalmazzunk egy egészséges adag szkepticizmust a mainstream ötletekhez, és hogyan értsük meg a széles körben elfogadott technikák következményeit
  • A ConvNet „koncepcióterének” megjelenítése t-SNE és PCA segítségével
  • Esettanulmányok arról, hogy a vállalatok hogyan használják a számítógépes látástechnikákat a jobb eredmények elérése érdekében
  • Megfelelő modellértékelés, látens tér vizualizáció és a modell figyelmének azonosítása
  • Domainkutatás végzése, saját adatkészletek feldolgozása és modelltesztek létrehozása
  • Élvonalbeli architektúrák, az ötletek fejlődése, mi teszi őket egyedivé és hogyan valósítsuk meg őket
  • KerasCV – WIP-könyvtár a legkorszerűbb csővezetékek és modellek létrehozásához
  • Hogyan elemezze és olvassa el a dolgozatokat, és saját maga hajtsa végre azokat
  • Modellek kiválasztása az alkalmazástól függően
  • Végpontok közötti gépi tanulási folyamat létrehozása
  • Tájkép és intuíció a tárgyfelismeréshez a gyorsabb R-CNN-ekkel, RetinaNetekkel, SSD-kkel és YOLO-val
  • Példány és szemantikai szegmentáció
  • Valós idejű objektumfelismerés a YOLOv5 segítségével
  • YOLOv5 objektumdetektorok képzése
  • Transzformátorokkal való munkavégzés KerasNLP-vel (ipari erősségű WIP-könyvtár)
  • Transformers integrálása ConvNetekkel a képek feliratainak létrehozásához
  • Deepdream

Következtetés

Ebben a rövid útmutatóban megvizsgáltuk, hogyan végezhet objektumészlelést a PyTorch használatával épített YOLOv5-tel.

Időbélyeg:

Még több Stackabus