Yüz ifadeleri için uçtan uca sistemlerin yeniden eğitimi için
Ek 1:
Darknet Derin Öğrenme Çerçevesi Kaynak Kodu Analizi: Çerçeve ilkeleri ve uygulama sözdizimi analizini kapsayan ayrıntılı Çince yorumu
https://github.com/hgpvision/darknet
darknet, tamamen C ve CUDA'ya dayalı nispeten hafif açık kaynaklı derin öğrenme framework'üdür, ana özellikleri kurulumu kolaydır, bağımlılık yoktur (OpenCV kullanılabilir), çok taşınabilir ve hem CPU hem de GPU hesaplama yöntemlerini destekler.
TensorFlow ile karşılaştırıldığında, darknet o kadar güçlü değil, ancak bu da darknet'in bir avantajı:
- darknet tamamen C dilinde uygulanmış, herhangi bir bağımlılık olmadan, tabii ki OpenCV kullanabilirsiniz ama sadece görselleri görüntülemek için kullanabilirsiniz, daha iyi görselleştirme için;
- darknet, CPU'yu (yani GPU'nun olmaması önemli değil) ve GPU'yu (CUDA/cuDNN, tabii ki GPU kullanmak daha iyi) destekliyor;
- Bunun nedeni, nispeten hafif olması ve TensorFlow gibi güçlü bir API'ye sahip olmaması, bu yüzden temel alanı incelemek için uygun ve alt tabandan daha kolay geliştirilip genişletilebilen başka bir esneklik türünün olduğunu düşünüyorum.
- Darknet'in uygulanması ile caffe'nin uygulanması arasında benzerlikler var ve darknet'e aşinayım ve caffe'ye başlamanın faydalı olduğuna inanıyorum.
Ek 2:
Yazar: Zhihu Kullanıcı Bağlantı:https://www.zhihu.com/question/51747665/answer/145607615 Kaynak: Zhihu Telif hakkı yazara aittir. Ticari yeniden baskılar için lütfen yetkilendirme için yazarla iletişime geçin, ticari olmayan yeniden baskılar için ise kaynağı belirtin.
Darknet'teki en önemli üç yapı tanımı network_state, ağ ve katmandır; Yeni network_state sürümü ağa entegre edildi.
Kod önce GPU kısmını görmezden gelebilir ve farklı ağ katmanları bu türdeki yürütme kurallarını fonksiyon işaretçileri aracılığıyla ileri geri ve katmanda güncellenerek tanımlar. Örneğin, bağlı katmanlar için üç yöntem vardır, örneğin forward_connected_layer backward_connected_layer update_connected_layer gru katmanı vb.;
Atomik işlemler sadece blas.c ve gemm.c'de, ağ işlemleri network.c'de ve en önemlileri train_network_datum, train_networks, train_network_batch ve network_predict'dir;
train_network_datum, giriş veri için kullanılan float_pair, yani float *x ve float *y çiftleri;
train_networks, network_kernel.cu'da eşzamanlı iş parçacılığı modunda eğitilir ve parametre veridir;
Bir nokta, darknet CPU modunda tek iş parçacıklıdır ve çoklu GPU grafik modunda çok kartlı çalışmayı train_networks destekliyor ve bu aynı zamanda dağıtım çoklu host darknet işlemini dönüştürmek için giriştir; burada eğitilmiş ağırlık verilerinin birleşip ölçeklendiğini görebilirsiniz.
train_network_datum { katmanlı ileri ağ } backward_network { katmanlı ters ağ } forward_network çalıştırın ve bir update_network çalıştırın ( ,,, hız, momentum, azalma sayısı altında (*net.seen %alt bölmeler) sağlanır;
parse_network_cfg'de kullanıcı tanımlı ağ profili işleme için, eğitim sonuçları load_weights
İşte omurga bu.
Özel ihtiyaçları olan veri kaynaklarıyla uğraşmanız gerekiyorsa, başlamak için data.c'ye başvurmalısınız.
CFG profili için, odak ayarı (elbette tüm parametreler önemlidir, ayarlanması gerekebilir) ve eğitim sırasında odağın küresel parametresi: azalma momentumu learning_rate Bu üçü yakınsama hızıyla ilişkilidir. Politika ağırlık politikasıdır, girdiler partisi (ve ilgili alt bölümler) ouputlar veri aktarım boyutuyla ilişkilidir ve en son sürümde ouputlarda düzeltmeler var gibi görünüyor.
|