Valós idejű objektumészlelési következtetés a Pythonban a YOLOv7 PlatoBlockchain adatintelligenciával. Függőleges keresés. Ai.

Valós idejű objektumészlelési következtetés Pythonban a YOLOv7 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”.

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:

Valós idejű objektumészlelési következtetés a Pythonban a YOLOv7 PlatoBlockchain adatintelligenciával. Függőleges keresés. Ai.

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:

Valós idejű objektumészlelési következtetés a Pythonban a YOLOv7 PlatoBlockchain adatintelligenciával. Függőleges keresés. Ai.

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.

Valós idejű objektumészlelési következtetés a Pythonban a YOLOv7 PlatoBlockchain adatintelligenciával. Függőleges keresés. Ai.

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

Valós idejű objektumészlelési következtetés a Pythonban a YOLOv7 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
  • Deep Learning modell optimalizálása számítógépes látáshoz

Időbélyeg:

Még több Stackabus