Saya mencoba memahami fungsi kehilangan Yolo v2:
Jika ada orang yang bisa memerinci fungsinya.
Saya mencoba memahami fungsi kehilangan Yolo v2:
Jika ada orang yang bisa memerinci fungsinya.
Jawaban:
Penjelasan dari berbagai istilah:
Perhatikan bahwa saya menggunakan dua indeks dan untuk setiap prediksi bbox, ini tidak terjadi dalam artikel karena selalu ada faktor atau sehingga tidak ada interpretasi ambigus: dipilih adalah yang sesuai dengan skor kepercayaan tertinggi dalam sel itu.j 1 o b j i j 1 n o o b j i j j
Penjelasan yang lebih umum tentang setiap istilah jumlah:
B*(5+C)
? Atleast itulah yang terjadi untuk YOLO v3.
Bukankah fungsi Kehilangan YOLOv2 terlihat menakutkan? Sebenarnya tidak! Ini adalah salah satu fungsi kehilangan paling berani dan paling cerdas di sekitar.
Pertama mari kita lihat apa yang diprediksi oleh jaringan.
Jika kami rekap, YOLOv2 memprediksi deteksi pada peta fitur 13x13, jadi secara total, kami memiliki 169 peta / sel.
Kami memiliki 5 kotak jangkar. Untuk setiap kotak jangkar, kita memerlukan Skor Keberatan-Keyakinan (apakah ada benda yang ditemukan?), 4 Koordinat ( dan ) untuk kotak jangkar, dan 20 kelas atas. Ini secara kasar dapat dilihat sebagai 20 koordinat, 5 skor kepercayaan, dan 100 probabilitas kelas untuk semua 5 prediksi kotak jangkar disatukan.
Kami memiliki beberapa hal yang perlu dikhawatirkan:
Semua kerugian adalah kesalahan kuadrat-rata , kecuali kerugian klasifikasi, yang menggunakan fungsi lintas-entropi .
Sekarang, mari kita pecahkan kode pada gambar.
Kita perlu menghitung kerugian untuk setiap Kotak Anchor (total 5)
Kita perlu melakukan ini untuk masing-masing sel 13x13 di mana S = 12 (karena kita mulai indeks dari 0)
adalah 1 ketika ada objek di dalam sel , kalau tidak 0.
var1 | var2 | (var1 - var2) ^ 2 | (sqrtvar1 - sqrtvar2) ^ 2
0,0300 | 0,020 | 9.99e-05 | 0,001
0,0330 | 0,022 | 0,00012 | 0,0011
0,0693 | 0,046 | 0,000533 | 0,00233
0,2148 | 0,143 | 0,00512 | 0,00723
0,3030 | 0,202 | 0,01 | 0,01
0.8808 | 0,587 | 0,0862 | 0,0296
4.4920 | 2.994 | 2.2421 | 0,1512
Tidak seram itu, benar!
Baca DI SINI untuk detail lebih lanjut.
Fungsi kerugian Anda adalah untuk YOLO v1 dan bukan YOLO v2. Saya juga bingung dengan perbedaan dalam dua fungsi kerugian dan sepertinya banyak orang adalah: https://groups.google.com/forum/#!topic/darknet/TJ4dN9R4iJk
Makalah YOLOv2 menjelaskan perbedaan arsitektur dari YOLOv1 sebagai berikut:
Kami menghapus lapisan yang sepenuhnya terhubung dari YOLO (v1) dan menggunakan kotak jangkar untuk memprediksi kotak yang terikat ... Ketika kami pindah ke kotak jangkar, kami juga memisahkan mekanisme prediksi kelas dari lokasi spasial dan sebagai gantinya memprediksi kelas dan objek untuk setiap kotak jangkar.
Ini berarti bahwa probabilitas kepercayaan atas harus bergantung tidak hanya pada dan tetapi juga indeks kotak jangkar, katakanlah . Karena itu, kerugiannya harus berbeda dari yang di atas. Sayangnya, kertas YOLOv2 tidak secara eksplisit menyatakan fungsi kerugiannya.
Saya mencoba menebak fungsi kehilangan YOLOv2 dan membahasnya di sini: https://fairyonice.github.io/Part_4_Object_Detection_with_Yolo_using_VOC_2012_data_loss.html
Ini Catatan Belajar saya
Fungsi kerugian: jumlah kesalahan kuadrat
Sebuah. Alasan: Mudah dioptimalkan b. Masalah: (1) Tidak sejajar dengan tujuan kami untuk memaksimalkan presisi rata-rata. (2) Di setiap gambar, banyak sel kotak tidak mengandung objek apa pun. Ini mendorong skor kepercayaan sel-sel tersebut ke 0, seringkali mengalahkan gradien dari sel yang memang mengandung objek. c. Solusi: tingkatkan kerugian dari prediksi kotak terikat dan kurangi kerugian dari prediksi kepercayaan dari kotak yang tidak mengandung objek. Kami menggunakan dua parameter dan = 0,5 d. Sum-kuadrat kesalahan juga sama-sama bobot kesalahan dalam kotak besar dan kotak kecil
Hanya satu kotak berlari yang harus bertanggung jawab untuk setiap obejct. Kami menetapkan satu prediktor untuk bertanggung jawab dalam memprediksi objek berdasarkan prediksi mana yang memiliki IOU tertinggi saat ini dengan kebenaran dasar.
Sebuah. Kehilangan dari koordinat kotak terikat (x, y) Perhatikan bahwa kerugian berasal dari satu kotak pembatas dari satu sel kisi. Bahkan jika obj tidak di sel jaringan sebagai kebenaran dasar.
b. Kehilangan lebar w dan tinggi h. Perhatikan bahwa kerugian berasal dari satu kotak pembatas dari satu sel kotak, bahkan jika objek tidak dalam sel kotak sebagai kebenaran dasar.
c. Kehilangan kepercayaan diri di setiap kotak terikat. Bukan berarti kerugian berasal dari satu kotak pembatas dari satu cel grid, bahkan jika objek tidak dalam sel grid sebagai kebenaran dasar.
Fungsi kerugian hanya menghukum klasifikasi jika obj ada dalam sel grid. Ini juga menghukum koordinat kotak pembatas jika kotak itu bertanggung jawab atas kotak dasar (IOU tertinggi)
Rumus kehilangan yang Anda tulis adalah kehilangan kertas YOLO asli , bukan kerugian v2, atau v3.
Ada beberapa perbedaan utama antar versi. Saya sarankan membaca surat kabar, atau memeriksa implementasi kode. Makalah: v2 , v3 .
Beberapa perbedaan utama yang saya perhatikan:
Probabilitas kelas dihitung per kotak pembatas (karenanya output sekarang S ∗ S ∗ B * (5 + C) bukan S S (B * 5 + C))
Koordinat kotak batas sekarang memiliki representasi yang berbeda
Di v3 mereka menggunakan 3 kotak di 3 "skala" yang berbeda
Anda dapat mencoba masuk ke detail seluk-beluk kerugian, baik dengan melihat implementasi python / keras v2 , v3 (mencari fungsi yolo_loss) atau langsung di c implementasi v3 (mencari delta_yolo_box, dan delta_yolo_class).