Για επανεκπαίδευση συστημάτων από άκρο σε άκρο για εκφράσεις προσώπου
Προσάρτημα 1:
Ανάλυση πηγαίου κώδικα Darknet Deep Learning Framework: Λεπτομερής κινεζικός σχολιασμός, που καλύπτει τις αρχές του πλαισίου και την ανάλυση σύνταξης υλοποίησης
https://github.com/hgpvision/darknet
Το darknet είναι ένα σχετικά ελαφρύ πλαίσιο βαθιάς μάθησης ανοιχτού κώδικα που βασίζεται εξ ολοκλήρου σε C και CUDA, τα κύρια χαρακτηριστικά του είναι εύκολα στην εγκατάσταση, χωρίς εξαρτήσεις (μπορεί να χρησιμοποιηθεί το OpenCV), πολύ φορητό και υποστηρίζει υπολογιστικές μεθόδους CPU και GPU.
Σε σύγκριση με το TensorFlow, το darknet δεν είναι τόσο ισχυρό, αλλά αυτό είναι επίσης ένα πλεονέκτημα του darknet:
- Το darknet υλοποιείται πλήρως σε γλώσσα C, χωρίς εξαρτήσεις, φυσικά μπορείτε να χρησιμοποιήσετε το OpenCV, αλλά να το χρησιμοποιήσετε μόνο για την εμφάνιση εικόνων, για καλύτερη οπτικοποίηση.
- Το darknet υποστηρίζει CPU (οπότε δεν έχει σημασία αν δεν έχετε GPU) και GPU (CUDA/cuDNN, φυσικά είναι καλύτερο να χρησιμοποιείτε GPU).
- Είναι ακριβώς επειδή είναι σχετικά ελαφρύ και δεν έχει ισχυρό API όπως το TensorFlow, οπότε πιστεύω ότι έχει μια άλλη γεύση ευελιξίας, η οποία είναι κατάλληλη για τη μελέτη του υποκείμενου και μπορεί να βελτιωθεί και να επεκταθεί από το κάτω μέρος πιο άνετα.
- Υπάρχουν ομοιότητες μεταξύ της εφαρμογής του darknet και της εφαρμογής του caffe, και είμαι εξοικειωμένος με το darknet και πιστεύω ότι είναι χρήσιμο να ξεκινήσετε με το caffe.
Προσάρτημα 2:
Συγγραφέας: Χρήστης Zhihu Σύνδεση:https://www.zhihu.com/question/51747665/answer/145607615 Πηγή: Zhihu Τα πνευματικά δικαιώματα ανήκουν στον συγγραφέα. Για εμπορικές ανατυπώσεις, επικοινωνήστε με τον συγγραφέα για εξουσιοδότηση και για μη εμπορικές ανατυπώσεις, αναφέρετε την πηγή.
Οι τρεις πιο σημαντικοί ορισμοί δομών στο Darknet είναι network_state, δίκτυο και επίπεδο. Η νέα έκδοση network_state έχει ενσωματωθεί στο δίκτυο.
Ο κώδικας μπορεί να αγνοήσει πρώτα το τμήμα GPU και διαφορετικοί τύποι επιπέδων δικτύου ορίζουν τους κανόνες εκτέλεσης αυτού του τύπου μέσω των δεικτών συνάρτησης προς τα εμπρός προς τα πίσω και ενημερώνονται στο επίπεδο. Για παράδειγμα, υπάρχουν τρεις μέθοδοι για συνδεδεμένα στρώματα, όπως forward_connected_layer backward_connected_layer update_connected_layer στρώμα gru κ.λπ.
Οι ατομικές λειτουργίες είναι μόνο στο blas.c και στο gemm.c, οι λειτουργίες δικτύου είναι στο network.c και οι πιο σημαντικές είναι οι train_network_datum, train_networks, train_network_batch και network_predict.
train_network_datum είναι το float_pair που χρησιμοποιείται για τα δεδομένα εισόδου, δηλαδή τα ζεύγη float *x και float *y.
train_networks εκπαιδεύεται στο network_kernel.cu σε λειτουργία ταυτόχρονου νήματος και η παράμετρος είναι δεδομένα.
Ένα σημείο, το darknet είναι single-threaded σε λειτουργία CPU και σε λειτουργία γραφικών πολλαπλών GPU, υποστηρίζει train_networks εκτέλεση πολλαπλών καρτών και αυτή είναι επίσης η είσοδος για τον μετασχηματισμό της λειτουργίας darknet πολλαπλών κεντρικών υπολογιστών διανομής, όπου μπορείτε να δείτε τα δεδομένα εκπαιδευμένου βάρους να συγχωνεύονται και να κλιμακώνονται.
train_network_datum Εκτελέστε forward_network { layerwise forward network } backward_network { layerwise reverse network } και εκτελέστε ένα update_network ( ,,, rate, momentum, decay κάτω από τον αριθμό των φορών (*net.seen %subdivisions) ικανοποιείται.
Για την επεξεργασία προφίλ δικτύου που ορίζεται από το χρήστη στο parse_network_cfg, τα αποτελέσματα της εκπαίδευσης διαβάζονται load_weights
Αυτή είναι η ραχοκοκαλιά.
Εάν πρέπει να ασχοληθείτε με πηγές δεδομένων με ειδικές ανάγκες, πρέπει να ανατρέξετε στο data.c για να ξεκινήσετε.
Για το προφίλ CFG, η ρύθμιση εστίασης (φυσικά, όλες οι παράμετροι είναι σημαντικές, μπορεί να χρειαστεί προσαρμογή) και η καθολική παράμετρος της εστίασης κατά τη διάρκεια της προπόνησης: ορμή διάσπασης learning_rate Αυτά τα τρία σχετίζονται με την ταχύτητα σύγκλισης. Η πολιτική είναι η πολιτική βαρών, οι έξοδοι παρτίδας εισόδων (και οι σχετικές υποδιαιρέσεις) σχετίζονται με τη διάσταση απόδοσης δεδομένων και η τελευταία έκδοση φαίνεται να έχει διορθώσεις εδώ στα Ouputs.
|