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”.
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.
A tömegek szerencséjére – az Ultralytics egy egyszerű, nagyon erős és gyönyörű objektumészlelési API-t fejlesztett ki a YOLOv5 köré, amelyet más kutató-fejlesztő csapatok kiterjesztettek újabb verziókra, például a YOLOv7-re.
Ebben a rövid útmutatóban az objektumészlelést Pythonban, a legmodernebb YOLOv7-tel fogjuk végrehajtani.
YOLO Landscape és YOLOv7
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ú megvalósítása a PyTorch-ban, ami minden eddiginél hozzáférhetőbbé tette, de a fő oka annak, hogy a YOLOv5 ekkora lábra tett szert, a köré épült, 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.
A YOLOv5 továbbra is az a legfontosabb projekt, amellyel objektumészlelési modelleket készítenek, és sok olyan adattár, amelyek célja a YOLO módszer továbbfejlesztése, a YOLOv5-tel indul, és hasonló API-t kínálnak (vagy egyszerűen elágazzák a projektet, és építenek rá). Ilyen a helyzet YOLOR (Csak egy ábrázolást tanulsz) és a YOLOv7, amely a YOLOR-ra épült (ugyanaz a szerző). A YOLOv7 a YOLO módszertan legújabb fejlesztése, és ami a legjelentősebb, a YOLOv7 új modellfejeket biztosít, amelyek kulcspontokat (csontvázakat) tudnak kiadni, és példányszegmentálást hajtanak végre a csak határoló doboz regresszión kívül, ami a korábbi YOLO modelleknél nem volt szabványos.
Ez minden eddiginél gyorsabbá teszi a példányszegmentálást és a kulcspontok észlelését!
Ezenkívül a YOLOv7 gyorsabban és nagyobb pontossággal teljesít, mint a korábbi modellek a csökkentett paraméterszámnak és a nagyobb számítási hatékonyságnak köszönhetően:
Magát a modellt építészeti változtatások, valamint a képzés szempontjainak optimalizálása révén hozták létre, amelyet „zsákos ajándéknak” neveztek, ami növelte a pontosságot a következtetési költségek növelése nélkül.
A YOLOv7 telepítése
A YOLOv7 telepítése és használata a GitHub-tárhely letöltésében és a hozzá csomagolt szkriptek futtatásában merül ki.
Jegyzet: Sajnos az írás pillanatában a YOLOv7 nem kínál tiszta programozási API-t, például a YOLOv5-öt, amelyet általában innen töltenek be. torch.hub()
, átadja a GitHub adattárat. Úgy tűnik, ez egy olyan szolgáltatás, amelynek működnie kell, de jelenleg nem működik. Amint megoldódik, frissítem az útmutatót, vagy közzéteszek egy újat az automatizált API-n. Egyelőre a tárolóban található következtetési szkriptekre fogunk összpontosítani.
Ennek ellenére valós idejű észlelést végezhet videókon, képeken stb., és könnyen mentheti az eredményeket. A projekt ugyanazokat a konvenciókat követi, mint a YOLOv5, amely kiterjedt dokumentációval rendelkezik, így valószínűleg több réskérdésre is választ találhat a YOLOv5 adattárában, ha van.
Töltsük le a tárolót, és vonjunk le néhány következtetést:
! git clone https://github.com/WongKinYiu/yolov7.git
Ez létrehozza a yolov7
könyvtárat az aktuális munkakönyvtárban, amelyben a projekt található. Lépjünk be ebbe a könyvtárba, és nézzük meg a fájlokat:
%cd yolov7
!ls
/Users/macbookpro/jup/yolov7
LICENSE.md detect.py models tools
README.md export.py paper train.py
cfg figure requirements.txt train_aux.py
data hubconf.py scripts utils
deploy inference test.py runs
Jegyzet: A Google Colab-jegyzetfüzeten futtatnia kell a varázslatot %cd
parancsot minden cellában, amelyre módosítani kívánja a könyvtárát yolov7
, míg a következő cella visszaviszi az eredeti munkakönyvtárba. Helyi Jupyter notebookokon a könyvtár módosítása egyszer benne tart, így nem kell többször kiadni a parancsot.
A detect.py
az a következtetési szkript, amely észleléseket futtat, és az eredményeket a következő alá menti runs/detect/video_name
, ahol megadhatja a video_name
miközben felhívta a detect.py
szkripteket. export.py
exportálja a modellt különböző formátumokba, például ONNX, TFLite stb. train.py
használható egy egyedi YOLOv7 detektor betanítására (egy másik útmutató témája), és test.py
detektor tesztelésére használható (súlyfájlból töltve).
Számos további könyvtár tárolja a konfigurációkat (cfg
), példa adat (inference
), modellek és COCO konfigurációk építési adatai (data
), Stb.
YOLOv7 Méretek
A YOLO-alapú modellek jól méretezhetők, és általában kisebb, kevésbé pontos modellként és nagyobb, pontosabb modellként exportálják őket. Ezeket azután gyengébb vagy erősebb eszközökre telepítik.
A YOLOv7 többféle méretet kínál, és összehasonlította őket az MS COCO-val:
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!
Modell | Teszt méret | APteszt | AP50test | AP75test | köteg 1 fps | köteg 32 átlagos idő |
---|---|---|---|---|---|---|
YOLOv7 | 640 | 51.4% | 69.7% | 55.9% | 161 fps | 2.8 ms |
YOLOv7-X | 640 | 53.1% | 71.2% | 57.8% | 114 fps | 4.3 ms |
YOLOv7-W6 | 1280 | 54.9% | 72.6% | 60.1% | 84 fps | 7.6 ms |
YOLOv7-E6 | 1280 | 56.0% | 73.5% | 61.2% | 56 fps | 12.3 ms |
YOLOv7-D6 | 1280 | 56.6% | 74.0% | 61.8% | 44 fps | 15.0 ms |
YOLOv7-E6E | 1280 | 56.8% | 74.4% | 62.1% | 36 fps | 18.7 ms |
Attól függően, hogy milyen hardveren szeretné futtatni a modellt, és a szükséges pontosságtól – választhat ezek közül. A legkisebb modell több mint 160 FPS-t ér el 640-es méretű képeken V100-on! A gyakoribb fogyasztói GPU-kon is kielégítő valós idejű teljesítményre számíthat.
Videó következtetés a YOLOv7 segítségével
Létrehozása inference-data
mappába az észlelni kívánt képek és/vagy videók tárolására. Feltéve, hogy ugyanabban a könyvtárban van, futtathatunk egy észlelési szkriptet a következővel:
! python3 detect.py --source inference-data/busy_street.mp4 --weights yolov7.pt --name video_1 --view-img
Ez egy Qt-alapú videót jelenít meg az asztalon, amelyben láthatja az élő folyamatot és a következtetést, képkockánként, valamint kiadhatja az állapotot a szabványos kimeneti csőbe:
Namespace(weights=['yolov7.pt'], source='inference-data/busy_street.mp4', img_size=640, conf_thres=0.25, iou_thres=0.45, device='', view_img=True, save_txt=False, save_conf=False, nosave=False, classes=None, agnostic_nms=False, augment=False, update=False, project='runs/detect', name='video_1', exist_ok=False, no_trace=False)
YOLOR 🚀 v0.1-112-g55b90e1 torch 1.12.1 CPU
Downloading https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt to yolov7.pt...
100%|██████████████████████████████████████| 72.1M/72.1M [00:18<00:00, 4.02MB/s]
Fusing layers...
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
Convert model to Traced-model...
traced_script_module saved!
model is traced!
video 1/1 (1/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1071.6ms) Inference, (2.4ms) NMS
video 1/1 (2/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1070.8ms) Inference, (1.3ms) NMS
Vegye figyelembe, hogy a projekt lassan fut CPU-alapú gépeken (például 1000 ms következtetési lépésenként a fenti kimenetben, Intel-alapú 2017-es MacBook Pro-n fut), és lényegesen gyorsabban GPU-alapú gépeken (közelebb a ~5 ms/kocka értékhez). V100-on). Még az olyan CPU-alapú rendszereken is, mint ez yolov7-tiny.pt
-nél fut 172ms/frame
, amely bár távol áll a valós idejűtől, mégis nagyon alkalmas ezeknek a műveleteknek a CPU-n történő kezelésére.
A futás végeztével az eredményül kapott videót az alatt találjátok runs/video_1
(az általunk megadott név a detect.py
hívás) néven mentve .mp4
:
Következtetés a képekre
A képekre vonatkozó következtetések ugyanerre a folyamatra vezethetők vissza – a fájlrendszerben lévő kép URL-jének megadása és detect.py
:
! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt
Jegyzet: Íráskor a kimenet nem méretezi a címkéket a kép méretéhez, még akkor sem, ha beállította --img SIZE
. Ez azt jelenti, hogy a nagy képeken nagyon vékony keretvonalak és kis címkék lesznek.
Következtetés
Ebben a rövid útmutatóban – röviden áttekintettük a YOLOv7-et, a YOLO család legújabb fejlesztését, amely a YOLOR-ra épül. Megnéztük, hogyan telepítheti a tárat a helyi gépére, és hogyan futtathat objektumészlelési következtetési szkripteket egy előre betanított hálózaton videókon és képeken.
A további útmutatókban a kulcspont-észlelésről és a példányszegmentálásról lesz szó.
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
- Deep Learning modell optimalizálása számítógépes látáshoz