Pour la rééducation des systèmes de bout en bout pour les expressions faciales
Annexe 1 :
Analyse du code source du cadre d’apprentissage profond Darknet : commentaires chinois détaillés, couvrant les principes du cadre et l’analyse syntaxique de l’implémentation
https://github.com/hgpvision/darknet
darknet est un framework d’apprentissage profond open source relativement léger basé entièrement sur C et CUDA, ses principales fonctionnalités sont faciles à installer, sans dépendances (OpenCV peut être utilisé), très portable, et prend en charge à la fois les méthodes de calcul CPU et GPU.
Comparé à TensorFlow, le darknet n’est pas très puissant, mais c’est aussi un avantage du darknet :
- Le darknet est entièrement implémenté en langage C, sans aucune dépendance, bien sûr on peut utiliser OpenCV, mais seulement pour afficher des images, pour une meilleure visualisation ;
- Le darknet supporte le CPU (donc peu importe si vous n’avez pas de GPU) et le GPU (CUDA/cuDNN, bien sûr il vaut mieux utiliser le GPU) ;
- C’est précisément parce qu’il est relativement léger et ne dispose pas d’une API puissante comme TensorFlow, donc je pense qu’il offre une autre forme de flexibilité, adaptée à l’étude de la base et qui peut être améliorée et étendue à partir de bas plus facilement.
- Il existe des similitudes entre la mise en œuvre du darknet et celle du caffè, et je connais bien le darknet et je pense qu’il est utile de commencer avec le caffè.
Annexe 2 :
Auteur : Utilisateur Zhihu Lien:https://www.zhihu.com/question/51747665/answer/145607615 Source : Zhihu Le droit d’auteur appartient à l’auteur. Pour les réimpressions commerciales, veuillez contacter l’auteur pour obtenir une autorisation, et pour les réimpressions non commerciales, veuillez indiquer la source.
Les trois définitions de structure les plus importantes dans le Darknet sont network_state, réseau et couche ; La nouvelle version network_state a été intégrée au réseau.
Le code peut d’abord ignorer la partie GPU, et différents types de couches réseau définissent les règles d’exécution de ce type via les pointeurs de fonction vers l’arrière et les mises à jour dans la couche. Par exemple, il existe trois méthodes pour les couches connectées, comme forward_connected_layer backward_connected_layer update_connected_layer couche gru, etc. ;
Les opérations atomiques sont uniquement dans blas.c et gemm.c, les opérations réseau sont dans network.c, et les plus importantes sont train_network_datum, train_networks, train_network_batch et network_predict ;
train_network_datum est la float_pair utilisée pour les données d’entrée, c’est-à-dire les paires float *x et float *y ;
train_networks est entraîné en network_kernel.cu en mode threading concurrent, et le paramètre est data ;
Un point, le darknet est monothread en mode CPU, et en mode graphique multi-GPU, il supporte train_networks l’exécution multi-cartes, et c’est aussi l’entrée pour transformer l’opération multi-hôte darknet de distribution, où l’on peut voir la fusion et l’échelle des données de poids entraînés.
train_network_datum Exécuter forward_network { layer forward network } backward_network { layer layer reverse network }, et exécuter une update_network ( ,,, débit, momentum, décroissance sous le nombre de fois (*net.seen %subdivisions) est satisfait ;
Pour le traitement du profil réseau défini par l’utilisateur en parse_network_cfg, les résultats de l’entraînement sont lus à travers load_weights
C’est la colonne vertébrale.
Si vous devez traiter avec des sources de données ayant des besoins spécifiques, vous devez vous référer à data.c pour commencer.
Pour le profil CFG, l’ajustement de la mise au point (bien sûr, tous les paramètres sont importants, il peut parfois devoir être ajusté), et le paramètre global de la mise au point pendant l’entraînement : la quantité de mouvement de désintégration learning_rate Ces trois sont liés à la vitesse de convergence. La politique correspond à la politique des poids, les sorts de lots d’entrées (et subdivisions associées) sont liés à la dimension de débit des données, et la dernière version semble comporter des corrections ici dans les sorties.
|