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”.
Ú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.