Untuk pelatihan ulang sistem end-to-end untuk ekspresi wajah
Lampiran 1:
Analisis Kode Sumber Kerangka Kerja Pembelajaran Mendalam Darknet: Komentar bahasa Mandarin terperinci, mencakup prinsip-prinsip kerangka kerja dan analisis sintaks implementasi
https://github.com/hgpvision/darknet
darknet adalah kerangka kerja pembelajaran mendalam open source yang relatif ringan yang sepenuhnya didasarkan pada C dan CUDA, fitur utamanya mudah dipasang, tidak ada dependensi (OpenCV dapat digunakan), sangat portabel, dan mendukung metode komputasi CPU dan GPU.
Dibandingkan dengan TensorFlow, darknet tidak terlalu kuat, tetapi ini juga merupakan keunggulan dari darknet:
- darknet sepenuhnya diimplementasikan dalam bahasa C, tanpa dependensi apa pun, tentu saja Anda dapat menggunakan OpenCV, tetapi hanya menggunakannya untuk menampilkan gambar, untuk visualisasi yang lebih baik;
- darknet mendukung CPU (jadi tidak masalah jika Anda tidak memiliki GPU) dan GPU (CUDA/cuDNN, tentu lebih baik menggunakan GPU);
- Justru karena relatif ringan dan tidak memiliki API yang kuat seperti TensorFlow, jadi saya merasa memiliki rasa fleksibilitas lain, yang cocok untuk mempelajari yang mendasarinya dan dapat ditingkatkan dan diperluas dari bawah dengan lebih nyaman.
- Ada kesamaan antara implementasi darknet dan implementasi caffe, dan saya akrab dengan darknet dan percaya bahwa memulai dengan caffe akan sangat membantu.
Lampiran 2:
Penulis: Pengguna Zhihu Tautan:https://www.zhihu.com/question/51747665/answer/145607615 Sumber: Zhihu Hak cipta adalah milik penulis. Untuk cetak ulang komersial, silakan hubungi penulis untuk otorisasi, dan untuk cetak ulang non-komersial, harap cantumkan sumbernya.
Tiga definisi struktur terpenting di Darknet adalah network_state, jaringan, dan lapisan; Versi baru network_state telah diintegrasikan ke dalam jaringan.
Kode dapat mengabaikan bagian GPU terlebih dahulu, dan berbagai jenis lapisan jaringan menentukan aturan eksekusi jenis ini melalui penunjuk fungsi maju mundur dan memperbarui di lapisan. Misalnya, ada tiga metode untuk lapisan yang terhubung, seperti lapisan gru forward_connected_layer backward_connected_layer update_connected_layer, dll.;
Operasi atom hanya ada di blas.c dan gemm.c, operasi jaringan ada di jaringan.c, dan yang paling penting adalah train_network_datum, train_networks, train_network_batch dan network_predict;
train_network_datum adalah float_pair yang digunakan untuk data input, yaitu pasangan float *x dan float *y;
train_networks dilatih dalam network_kernel.cu dalam mode threading bersamaan, dan parameternya adalah data;
Satu titik, darknet adalah single-thread dalam mode CPU, dan dalam mode grafis multi-GPU, ini train_networks mendukung multi-kartu berjalan, dan ini juga merupakan pintu masuk untuk mengubah operasi darknet multi-host distribusi, di mana Anda dapat melihat penggabungan dan skala data bobot terlatih.
train_network_datum Eksekusi forward_network { layerwise forward network } backward_network { layerwise reverse network }, dan jalankan update_network ( ,,, rate, momentum, defay di bawah berapa kali (*net.seen %subdivisions) terpenuhi;
Untuk pemrosesan profil jaringan yang ditentukan pengguna di parse_network_cfg, hasil pelatihan dibaca melalui load_weights
Itulah tulang punggungnya.
Jika Anda perlu berurusan dengan sumber data dengan kebutuhan khusus, Anda perlu merujuk ke data.c untuk memulai.
Untuk profil CFG, penyesuaian fokus (tentu saja, semua parameter penting, mungkin perlu disesuaikan), dan parameter global fokus selama pelatihan: momentum peluruhan learning_rate Ketiganya terkait dengan kecepatan konvergensi. Policy adalah kebijakan bobot, input batch (dan subdivisi terkait) yang terkait dengan dimensi throughput data, dan versi terbaru tampaknya memiliki koreksi di sini di ouputs.
|