Til omtræning af end-to-end-systemer til ansigtsudtryk
Bilag 1:
Darknet Deep Learning Framework Source Code Analysis: Detaljeret kinesisk kommentar, der dækker rammeværkets principper og analyse af implementeringssyntaksen
https://github.com/hgpvision/darknet
darknet er et relativt letvægts open source deep learning-framework baseret udelukkende på C og CUDA, dets hovedfunktioner er nemme at installere, ingen afhængigheder (OpenCV kan bruges), meget bærbart og understøtter både CPU- og GPU-beregningsmetoder.
Sammenlignet med TensorFlow er darknet ikke så kraftfuldt, men det er også en fordel ved darknet:
- darknet er fuldstændig implementeret i C-sproget, uden nogen afhængigheder, selvfølgelig kan du bruge OpenCV, men kun til at vise billeder for bedre visualisering;
- darknet understøtter CPU (så det er ligegyldigt, hvis du ikke har et grafikkort) og grafikkort (CUDA/cuDNN, selvfølgelig er det bedre at bruge grafikkort);
- Det er netop fordi det er relativt let og ikke har et kraftfuldt API som TensorFlow, så jeg føler, at det har en anden form for fleksibilitet, som egner sig til at studere det underliggende og kan forbedres og udvides fra bunden mere bekvemt.
- Der er ligheder mellem implementeringen af darknet og implementeringen af caffe, og jeg er bekendt med darknet og mener, at det er nyttigt at komme i gang med caffe.
Bilag 2:
Forfatter: Zhihu User Sammenkæde:https://www.zhihu.com/question/51747665/answer/145607615 Kilde: Zhihu Ophavsretten tilhører forfatteren. For kommercielle genoptryk bedes du kontakte forfatteren for tilladelse, og for ikke-kommercielle genoptryk bedes du angive kilden.
De tre vigtigste strukturdefinitioner i Darknet er network_state, netværk og lag; Den nye version network_state er blevet integreret i netværket.
Koden kan først ignorere GPU-delen, og forskellige typer netværkslag definerer eksekveringsreglerne for denne type via funktionspegerne fremad bagud og opdaterer i laget. For eksempel findes der tre metoder for sammenhængende lag, såsom forward_connected_layer backward_connected_layer update_connected_layer gru-lag osv.;
Atomare operationer findes kun i blas.c og gemm.c, netværksoperationer er i network.c, og de vigtigste er train_network_datum, train_networks, train_network_batch og network_predict;
train_network_datum er den float_pair, der bruges til inputdata, det vil sige flydende *x og flydende *y-par;
train_networks trænes i network_kernel.cu i en samtidig tråding-tilstand, og parameteren er data;
For det første er darknet single-threaded i CPU-tilstand, og i multi-GPU grafiktilstand understøtter det train_networks multi-card kørsel, og dette er også indgangen til at transformere distributionen af multi-host darknet-operationen, hvor du kan se de trænede vægtdata smelte sammen og skalere.
train_network_datum Udfør forward_network { lagvis fremadrettet netværk } backward_network { lagvis omvendt netværk }, og udfør en update_network (,,, hastighed, momentum, henfald under antallet af gange (*net.seen %underdivisioner) er opfyldt;
For brugerdefineret netværksprofilbehandling i parse_network_cfg læses træningsresultaterne igennem load_weights
Det er rygraden.
Hvis du skal håndtere datakilder med særlige behov, skal du henvise til data.c for at komme i gang.
For CFG-profilen er fokusjusteringen (selvfølgelig er alle parametre vigtige, kan det være nødvendigt at justere) og den globale parameter for fokus under træning: decay momentum learning_rate Disse tre er relateret til konvergenshastigheden. Politikken er vægtpolitikken, inputbatch (og relaterede underopdelinger) udløsninger er relateret til datagennemstrømningsdimensionen, og den nyeste version ser ud til at have korrektioner her i udløsningerne.
|