Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 11241|Risposta: 0

Introduzione al framework Darknet

[Copiato link]
Pubblicato su 30/01/2019 12:51:44 | | | |
Per la riqualificazione di sistemi end-to-end per le espressioni facciali


Appendice 1:

Analisi del codice sorgente del Framework Deep Learning Darknet: commento dettagliato in cinese, che copre i principi del framework e l'analisi della sintassi dell'implementazione

https://github.com/hgpvision/darknet

darknet è un framework di deep learning open source relativamente leggero basato interamente su C e CUDA, le sue principali caratteristiche sono facili da installare, senza dipendenze (è possibile usare OpenCV), molto portatile e supporta sia metodi di calcolo CPU che GPU.



Rispetto a TensorFlow, il darknet non è così potente, ma questo è anche un vantaggio del darknet:

  • il darknet è completamente implementato in linguaggio C, senza dipendenze, ovviamente si può usare OpenCV, ma solo per visualizzare immagini, per una migliore visualizzazione;
  • darknet supporta CPU (quindi non importa se non hai una GPU) e GPU (CUDA/cuDNN, ovviamente è meglio usare GPU);
  • È proprio perché è relativamente leggero e non ha un'API potente come TensorFlow, quindi penso che abbia un'altra flessibilità, adatta per studiare il sottostante e che può essere migliorata ed estesa da fondo in modo più comodo.
  • Ci sono somiglianze tra l'implementazione del darknet e quella del caffe, e conosco il darknet e credo che sia utile iniziare con il caffe.





Appendice 2:

Autore: Utente Zhihu
Collegamento:https://www.zhihu.com/question/51747665/answer/145607615
Fonte: Zhihu
Il copyright appartiene all'autore. Per le ristampe commerciali, si prega di contattare l'autore per l'autorizzazione, e per le ristampe non commerciali, indicare la fonte.

Le tre definizioni di struct più importanti nel Darknet sono network_state, rete e livello; La nuova versione network_state è stata integrata nella rete.

Il codice può prima ignorare la parte GPU, e diversi tipi di livelli di rete definiscono le regole di esecuzione di questo tipo tramite i puntatori di funzione in avanti e aggiornati nel livello. Ad esempio, esistono tre metodi per i strati connessi, come forward_connected_layer backward_connected_layer update_connected_layer strato gru, ecc.;

Le operazioni atomiche sono solo in blas.c e gemm.c, le operazioni di rete sono in network.c, e le più importanti sono train_network_datum, train_networks, train_network_batch e network_predict;

train_network_datum è il float_pair utilizzato per i dati di input, cioè float *x e float *y coppie;

train_networks viene addestrato in network_kernel.cu in modalità threading concorrente, e il parametro è dati;

Un punto è che il darknet è single-threaded in modalità CPU e in modalità grafica multi-GPU train_networks supporta l'esecuzione multi-card, e questo è anche l'ingresso per trasformare l'operazione multi-host della distribuzione darknet, dove puoi vedere la fusione e la scala dei dati addestrati di peso.

train_network_datum Eseguire forward_network { rete avanzata a livello } backward_network { rete inversa a livello }, ed eseguire una update_network ( ,,, rate, quantità di moto e decadenza sotto il numero di volte (*net.seen %suddivisioni) è soddisfatto;

Per l'elaborazione dei profili di rete definiti dall'utente in parse_network_cfg, i risultati dell'addestramento vengono letti attraverso load_weights

Questa è la spina dorsale.

Se devi gestire fonti di dati con bisogni speciali, devi consultare data.c per iniziare.

Per il profilo CFG, l'aggiustamento della messa a fuoco (ovviamente, tutti i parametri sono importanti, potrebbe dover essere modificato) e il parametro globale della messa a fuoco durante l'allenamento: momento di decadimento learning_rate Questi tre sono collegati alla velocità di convergenza. La policy è quella dei pesi, le uscite di input batch (e suddivisioni correlate) sono correlate alla dimensione di throughput dei dati, e l'ultima versione sembra avere correzioni qui nelle outputs.







Precedente:Tutorial semplice mockJS
Prossimo:.net core FileProvider legge file di directory
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com