Za ponovno usposabljanje celovitih sistemov za obrazne izraze
Priloga 1:
Analiza izvorne kode Darknet Deep Learning Framework: Podroben kitajski komentar, ki zajema načela okvira in analizo sintakse implementacije
https://github.com/hgpvision/darknet
darknet je razmeroma lahkoten odprtokodni okvir za globoko učenje, ki temelji izključno na C in CUDA, njegove glavne funkcije so enostavne za namestitev, brez odvisnosti (OpenCV se lahko uporablja), zelo prenosljiv in podpira tako CPU kot GPU računalniške metode.
V primerjavi s TensorFlow darknet ni tako močan, a to je tudi prednost darkneta:
- darknet je popolnoma implementiran v jeziku C, brez kakršnihkoli odvisnosti, seveda lahko uporabljate OpenCV, vendar ga uporabljate le za prikaz slik, za boljšo vizualizacijo;
- darknet podpira CPU (torej ni pomembno, če nimaš GPU) in GPU (CUDA/cuDNN, seveda je bolje uporabljati GPU);
- Prav zato, ker je razmeroma lahek in nima zmogljivega API-ja, kot je TensorFlow, menim, da ima še eno obliko prilagodljivosti, ki je primerna za preučevanje osnove in jo je mogoče bolj priročno izboljšati in razširiti od spodaj.
- Obstajajo podobnosti med implementacijo darkneta in implementacijo caffe, poznam darknet in verjamem, da je koristno začeti s caffe.
Priloga 2:
Avtor: Zhihu uporabnik Povezava:https://www.zhihu.com/question/51747665/answer/145607615 Vir: Zhihu Avtorske pravice pripadajo avtorju. Za komercialne ponatise se obrnite na avtorja za dovoljenje, za nekomercialne ponatise pa navedite vir.
Tri najpomembnejše definicije struktur v Darknetu so network_state, omrežje in plast; Nova različica network_state je integrirana v omrežje.
Koda lahko najprej ignorira GPU del, različne vrste omrežnih plasti pa določajo izvršilna pravila te vrste preko funkcijskih kazalcev naprej nazaj in posodobitev v plasti. Na primer, obstajajo tri metode za povezane plasti, kot so forward_connected_layer backward_connected_layer update_connected_layer gru plast itd.;
Atomske operacije so le v blas.c in gemm.c, omrežne operacije v network.c, najpomembnejše pa so train_network_datum, train_networks, train_network_batch in network_predict;
train_network_datum je float_pair, ki se uporablja za vhodne podatke, torej pari float *x in float *y;
train_networks je treniran v network_kernel.cu v načinu sočasnega nitnega delovanja, parameter pa je podatek;
Ena točka, darknet je enonitni v CPU načinu, v multi-GPU grafičnem načinu pa train_networks podpira več kartic, kar je tudi vhod v transformacijo distribucijske večgostiteljske darknet operacije, kjer lahko vidite združevanje in skaliranje naučenih podatkov o težah.
train_network_datum Izvedite forward_network { layerwise forward network } backward_network { layerwise reverse network } in izvedite update_network ( ,,, hitrost, moment, upad glede na število delitev (*net.seen %-subdivisions);
Za uporabniško definirano obdelavo omrežnih profilov v parse_network_cfg se rezultati usposabljanja preberejo skozi load_weights
To je hrbtenica.
Če morate delati z viri podatkov s posebnimi potrebami, se za začetek obrnite na data.c.
Za CFG profil je prilagoditev ostrine (seveda so vsi parametri pomembni, morda jih je treba prilagoditi) in globalni parameter fokusa med treningom: momentum upada learning_rate Ti trije so povezani s hitrostjo konvergence. Politika je politika uteži, vhodni paketi (in sorodne razdelitve) so povezani z dimenzijo prepustnosti podatkov, najnovejša različica pa ima popravke tukaj v izhodih.
|