Yolo v2 kaybı işlevini anlamaya çalışıyorum:
Herhangi bir kişi işlevi detaylandırabilirse.
Yolo v2 kaybı işlevini anlamaya çalışıyorum:
Herhangi bir kişi işlevi detaylandırabilirse.
Yanıtlar:
Farklı terimlerin açıklaması:
Her bbox tahminleri için iki indeks ve j kullandığımı unutmayın , bu makalede geçerli değildir, çünkü her zaman 1 o b j i j veya 1 n o o b j i j faktörü vardır, bu nedenle belirsiz bir yorum yoktur: j seçilen o hücrede yüksek güven puanı tekabül biridir.
Toplamın her bir teriminin daha genel açıklaması:
B*(5+C)
mı? En azından YOLO v3 için durum böyle.
YOLOv2 Kaybı işlevi korkutucu görünmüyor mu? Aslında değil! Çevresindeki en cesur, en akıllı kayıp işlevlerinden biridir.
İlk olarak ağın gerçekte ne öngördüğüne bakalım.
Özetlersek, YOLOv2 13x13 özellik haritasında tespitleri tahmin eder, bu yüzden toplamda 169 harita / hücremiz var.
Endişelenecek birkaç şey var:
Çapraz entropi fonksiyonunu kullanan sınıflandırma kaybı hariç tüm kayıplar ortalama karelerdeki hatalardır .
Şimdi görüntüdeki kodu kıralım.
Her bir Anchor Box için kayıpları hesaplamamız gerekiyor (toplamda 5)
Bunu S = 12 olan 13x13 hücrenin her biri için yapmamız gerekiyor (endeksi 0'dan başlattığımız için)
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
Korkutucu değil, değil mi?
Daha fazla bilgi için BURAYI okuyun .
Kayıp fonksiyonunuz YOLO v1 için değil, YOLO v1 içindir. Ayrıca iki kayıp fonksiyonundaki farkla karıştırıldım ve birçok insan gibi görünüyor: https://groups.google.com/forum/#!topic/darknet/TJ4dN9R4iJk
YOLOv2 makalesi, YOLOv1'den mimarideki farkı şu şekilde açıklıyor:
Tamamen bağlı katmanları YOLO'dan (v1) kaldırır ve sınırlayıcı kutuları tahmin etmek için bağlantı kutuları kullanırız ... Bağlantı kutularına geçtiğimizde, sınıf tahmin mekanizmasını mekansal konumdan ayırırız ve bunun yerine her bağlantı kutusu için sınıf ve nesneyi tahmin ederiz.
YOLOv2'nin kayıp işlevini tahmin etmeye ve burada tartışmaya çalışıyorum: https://fairyonice.github.io/Part_4_Object_Detection_with_Yolo_using_VOC_2012_data_loss.html
İşte Eğitim Notum
Kayıp fonksiyonu: toplam kare hatası
Her obejct için sadece bir sınırlayıcı kutu sorumlu olmalıdır. Bir öngörücüyü, temel öngörüyle en yüksek akım IOU'suna sahip bir nesneyi tahmin etmekten sorumlu olacak şekilde atarız.
a. Sınırlı kutu koordinatından kayıp (x, y) Kaybın bir ızgara hücresinden bir sınırlayıcı kutudan geldiğini unutmayın. Nesne ızgara hücresinde yer gerçeği olarak olmasa bile.
b. Genişlik w ve yükseklik h'den kayıp. Nesne, ızgara hücresinde zemin gerçekliği olarak olmasa bile, kaybın bir ızgara hücresinden bir sınırlayıcı kutudan geldiğini unutmayın.
c. Her bağlı kutuya olan güven kaybı. Nesne, ızgara hücresinde zemin gerçeği olarak olmasa bile, kaybın bir ızgara hücresinden bir sınırlayıcı kutudan geldiği anlamına gelmez.
Kayıp fonksiyonu sadece ızgara hücresinde obj varsa sınıflandırmayı cezalandırır. Ayrıca, bu kutunun zemin kutusundan sorumlu olması durumunda sınırlayıcı kutu koordinatını da cezalandırır (en yüksek IOU)
Yazdığınız kayıp formülü , v2 veya v3 kaybından değil , orijinal YOLO kağıt kaybından kaynaklanır.
Sürümler arasında bazı büyük farklılıklar vardır. Makaleleri okumanızı veya kod uygulamalarını kontrol etmenizi öneririm. Makaleler: v2 , v3 .
Fark ettiğim bazı büyük farklılıklar:
Sınıf olasılık sınırlayıcı kutusu başına hesaplanan (ve bu nedenle çıkış şimdi S'dir * S * B * yerine S (+ 5 ° C) S (B * 5 + C))
Sınırlayıcı kutu koordinatları artık farklı bir temsile sahip
V3'te 3 farklı "ölçek" boyunca 3 kutu kullanırlar
Sen kaybının asıl mesele ayrıntılarına girmeden deneyebilirsiniz, ya piton bakarak / uygulama keras v2 , v3 (fonksiyon yolo_loss için göz) veya doğrudan c uygulaması en v3 (delta_yolo_box için görünüm ve delta_yolo_class).