Az arckifejezések végponttól végpontig rendszereinek újraképzésére
1. melléklet:
Darknet mélytanulási keretrendszer forráskód elemzése: Részletes kínai kommentár, amely a keretrendszer elveket és a megvalósítási szintaxiselemzést tárgyalja
https://github.com/hgpvision/darknet
a darknet egy viszonylag könnyű, nyílt forráskódú mélytanulási keretrendszer, amely teljes egészében C és CUDA alapja, fő funkciói könnyen telepíthetők, nincsenek függőségek (OpenCV használható), nagyon hordozható, és támogatja mind a CPU, mind a GPU számítási módszereket.
A TensorFlow-hoz képest a darknet nem olyan erős, de ez is előny a darknetnek:
- a darknet teljesen C nyelven van megvalósítva, függőség nélkül, természetesen használhatod az OpenCV-t, de csak képek megjelenítésére használod vele, a jobb vizualizáció érdekében;
- a darknet támogatja a CPU-t (szóval nem számít, ha nincs GPU) és GPU-t (CUDA/cuDNN, persze jobb GPU-t használni);
- Pontosan azért, mert viszonylag könnyű, és nincs olyan erős API-ja, mint a TensorFlow, ezért úgy érzem, van egy másik rugalmassága, ami alkalmas az alap tanulmányozására, és kényelmesebben fejleszthető és kiterjeszthető alulról.
- Vannak hasonlóságok a darknet és a caffe megvalósítása között, és ismerem a darknetet, és úgy gondolom, hasznos elkezdeni a caffe-val.
2. melléklet:
Szerző: Zhihu User Láncszem:https://www.zhihu.com/question/51747665/answer/145607615 Forrás: Zhihu A szerzői jog a szerző tulajdona. Kereskedelmi újranyomások esetén kérjük, vegye fel a kapcsolatot a szerzővel az engedélyért, és nem kereskedelmi újranyomások esetén kérjük, adja meg a forrást.
A Darknet három legfontosabb szerkezeti definíciója a network_state, hálózat és réteg; Az új network_state verziót integrálták a hálózatba.
A kód először figyelmen kívül hagyhatja a GPU részt, és különböző hálózati rétegek a funkciómutatókkal előre-visszafelé és frissítésen keresztül határozzák meg a végrehajtási szabályokat. Például három módszer létezik összekapcsolt rétegekre, például forward_connected_layer backward_connected_layer update_connected_layer gru réteg stb.;
Az atomműveletek csak a blas.c és gemm.c formátumban találhatók, a hálózati műveletek a network.c-ben, a legfontosabbak pedig a train_network_datum, train_networks, train_network_batch és network_predict;
train_network_datum az a float_pair, amelyet bemeneti adatokhoz használnak, vagyis a lebegő *x és lebegő *y párok;
train_networks a network_kernel.cu-ban egyidejű szálakozási módban van kiképezve, és a paraméter adat;
Egy pont, a darknet CPU módban egyszálú, többGPU grafikus módban pedig train_networks támogatja a többkártyás futtatást, és ez egyben a bejárat a disztribúciós több-host darknet művelet átalakításához is, ahol láthatjuk a betanított súlyadatok összevonását és skálázását.
train_network_datum Hajtsd végre forward_network { rétegenként előrehaladó hálózatot } backward_network { rétegenként fordított hálózatot }, és hajtson végre egy update_network (,,, sebesség, lendület, csökkenés az alosztások száma alatt (*net.seen %-osztások) teljesül;
A felhasználó által definiált hálózati profil feldolgozása esetén parse_network_cfg-ben a képzési eredményeket load_weights olvassák el
Ez a gerinc.
Ha speciális igényű adatforrásokkal kell foglalkoznod, a data.c oldalra kell kezdeni.
A CFG profil esetében a fókusz beállítása (természetesen minden paraméter fontos, módosítani kell), valamint a fókusz globális paramétere a képzés során: csökkenő lendület learning_rate Ezek a három összefüggő konvergencia sebességhez kapcsolódik. A politika a súlyozási politika, a bemenetek (és kapcsolódó alosztályok) az outputok az adatátviteli dimenzióhoz kapcsolódnak, és a legújabb verzióban úgy tűnik, vannak javítások az ouputokban.
|