Пояснення функції Yolo Loss


16

Я намагаюся зрозуміти функцію втрати Yolo v2:

λcoordi=0S2j=0B1ijobj[(xix^i)2+(yiy^i)2]+λcoordi=0S2j=0B1ijobj[(wiw^i)2+(hih^i)2]+i=0S2j=0B1ijobj(CiC^i)2+λnoobji=0S2j=0B1ijnoobj(CiC^i)2+i=0S21iobjcclasses(pi(c)p^i(c))2

Якщо будь-яка людина може деталізувати функцію.


5
ніхто не може допомогти вам без контексту ... принаймні скажіть нам, з чого це папір.
bdeonovic

1
"Я не розумію" і "деталізую функцію" надмірно широкі. Спробуйте визначити конкретні питання. Зауважте, що вже існує чимало питань, що стосуються Yolo , деякі з яких можуть забезпечити вам хоча б частину того, що ви шукаєте
Glen_b -Встановіть Моніку


1
У цьому блозі тут є детальне графічне пояснення йоло та йолов2. Це відповідає на питання щодо функції втрат. Ifind це дуже корисно для початківців та більш досвідчених користувачів.
MBoaretto

Відповіді:


18

Пояснення різних термінів:

  • Константи 3 це лише константи, які враховують ще один аспект функції втрат. У статті є найвищою для того, щоб мати більше значення в першому термініλ c o o r dλλcoord
  • Передбачення Yolo є вектором: BBOX пророкування для кожного осередку сітки і прогнозування класу для кожного осередку сітки (де являє собою кількість класів). П'ять вихідних виходів коробки j комірки i - координати центру tte bbox , висоти , ширини та індексу достовірностіB C C x i j y i j h i j w i j C i jSS(B5+C)BCCxij yijhijwijCij
  • Я уявляю, що значення з капелюхом - це справжнє, прочитане з етикетки, а значення без шапки - прогнозовані. То яка реальна цінність мітки для оцінки достовірності для кожного bbox ? Це перетин між об'єднанням передбачуваного обмежувального поля з посиланням на мітку.C^ij
  • 1i01iobj є , коли є об'єкт в осередку і в інших місцях1i0
  • ji1ij 1 n o o b j i j i1ijobj "позначає, що ої передбачувач граничного поля в комірці відповідає за це передбачення". Іншими словами, вона дорівнює якщо в комірці є об'єкт, а довіра го предикторів цієї клітини є найвищою серед усіх предикторів цієї комірки. майже те ж саме , за винятком його значення 1 , коли є якісь - які предмети в осередкуji1ij1ijnoobji

Зауважте, що я використовував два індекси і для кожного прогнозування bbox, це не так у статті, оскільки завжди є фактор або тому немає багатозначної інтерпретації: вибраний - це той, що відповідає найвищій довіри в цій комірці.j 1 o b j i j 1 n o o b j i j jij1ijobj1ijnoobjj

Більш загальне пояснення кожного члена суми:

  1. цей термін карає погану локалізацію вогнища клітин
  2. цей термін карає обмежувальну коробку з неточною висотою та шириною. Квадратний корінь присутній так, що помилки в невеликих обмежувальних полях більше покарання, ніж помилки у великих обмежувальних полях.
  3. цей термін намагається зробити показник довіри рівним IOU між об'єктом та прогнозуванням, коли є один об'єкт
  4. Намагається зробити показник довіри близьким до коли в комірці немає жодного об’єкта0
  5. Це проста класифікаційна втрата (не пояснюється в статті)

1
Чи повинен бути другий пункт B*(5+C)? Принаймні, так це стосується YOLO v3.
sachinruk

@sachinruk це відображає зміни в моделі між оригінальним YOLO та v2 та v3.
Девід

12

λcооrгi=0S2j=0Б1ijобj[(хi-х^i)2+(уi-у^i)2]+λcооrгi=0S2j=0Б1ijобj[(шi-ш^i)2+(годi-год^i)2]+i=0S2j=0Б1ijобj(Сi-С^i)2+λнообji=0S2j=0Б1ijнообj(Сi-С^i)2+i=0S21iобjccлассес(pi(c)-p^i(c))2

Чи не виглядає функція втрати YOLOv2 страшною? Це насправді! Це одна з найсміливіших, найрозумніших функцій втрат навколо.

Давайте спочатку розглянемо, що насправді прогнозує мережа.

Якщо ми резюмуємо, YOLOv2 прогнозує виявлення на карті розмірів 13x13, тож у нас 169 карт / комірок.

У нас є 5 анкерних ящиків. Для кожного ящика для прив’язки нам потрібний показник впевненості об'єкта (чи знайдено який-небудь об’єкт?), 4 координати ( і ) для анкерної коробки та 20 топ-класів. Це грубо можна зрозуміти, як 20 координат, 5 балів довіри та 100 ймовірностей класу для всіх 5 прогнозів вікна якоря.тх,ту,тш,тгод

У нас є кілька проблем, про які слід турбуватися:

  • хi,уi , що є розташуванням центроїда коробки якоря
  • шi,годi , що є шириною та висотою ящика для якоря
  • Сi , що є Об'єктністю , тобто оцінкою довіри того, є об’єкт чи ні, і
  • pi(c) , що є втратою класифікації.
  • Нам потрібно не тільки навчити мережу виявляти об'єкт, якщо в комірці є об'єкт, ми також мусимо покарати мережу, це якщо передбачити об'єкт у комірці, коли такого не було. Як ми це робимо? Ми використовуємо маску ( і ) для кожної комірки. Якщо спочатку існував об’єкт дорівнює 1, а інші клітини без об’єкта дорівнюють 0. просто обернено , де він 1 якщо в комірці не було жодного об'єкта і 0, якщо він був.𝟙iобj𝟙iнообj𝟙iобj 𝟙 n o o b j i 𝟙 o b j i𝟙iнообj𝟙iобj
  • Це потрібно зробити для всіх 169 комірок, і
  • Нам потрібно це зробити 5 разів (для кожного ящика для якоря).

Усі втрати - це середньоквадратичні помилки, крім класифікаційних втрат, в яких використовується функція перехресної ентропії .

Тепер давайте порушимо код на зображенні.

  • Нам потрібно обчислити втрати для кожного ящика з якоря (всього 5)

    • j=0Б являє собою цю частину, де B = 4 (5 - 1, оскільки індекс починається з 0)
  • Нам потрібно зробити це для кожної клітинки 13x13, де S = 12 (оскільки ми починаємо індекс з 0)

    • i=0S2 представляє цю частину.
  • 𝟙ijобj дорівнює 1, коли в комірці є об'єкт , інакше 0.i

  • 𝟙ijнообj дорівнює 1, коли в комірці немає об'єкта , інакше 0.i
  • 𝟙iобj дорівнює 1, коли передбачений конкретний клас, інакше 0.
  • λs - константи. λ найвищий за координатами, щоб більше зосередитись на виявленні (пам’ятайте, що в YOLOv2 ми спочатку готуємо його до розпізнавання, а потім для виявлення. Штраф сильно за розпізнавання - це марна трата часу, а ми зосереджуємось на тому, щоб отримати найкращі обмежувальні коробки!)
  • Можна також помітити, що знаходяться під квадратним коренем. Це робиться для покарання менших обмежувальних полів, оскільки нам потрібно краще прогнозувати на менших об'єктах, ніж на більших об'єктах (заклик автора). Перегляньте таблицю нижче та спостерігайте, як менші значення караються більше, якщо ми дотримуємось методу «квадратний корінь» (подивіться на точку перегину, коли у нас є вхідні значення 0,3 та 0,2) (PS: я зберегла співвідношення var1 і var2 те саме для пояснення):шi,годi

        var1 | var2 | (var1 - var2) ^ 2 | (sqrtvar1 - sqrtvar2) ^ 2

        0,0300 | 0,020 | 9,99е-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

Не так страшно, правда!

Читайте тут для отримання додаткової інформації.


1
Чи повинні i і j в \ sum починатись з 1 замість 0?
webbertiger

1
Так, це правильно Webertiger, відповіді оновили відповідно. Дякую!
RShravan

Isnt 1, коли в комірці i об'єктивного поля j є об'єкт j? і не для всіх j? як ми обираємо, який j встановити на один, а решту на нуль. тобто правильний масштаб / якор, де він включений. 1ijобj
sachinruk

1
Я вважаю, що S все ж має бути 13, але якщо підсумовування починається з 0, воно має закінчитисяS2-1
Джуліан,

3
@RShravan, ви говорите: "Усі втрати - це середньоквадратичні помилки, за винятком втрати класифікації, яка використовує функцію перехресної ентропії". Чи можете ви пояснити? У цьому рівнянні він також виглядає як MSE. Дякую заздалегідь
Джуліан

3

Ваша функція втрати призначена для YOLO v1, а не YOLO v2. Я також плутався з різницею двох функцій втрат і, схоже, багато людей: https://groups.google.com/forum/#!topic/darknet/TJ4dN9R4iJk

У роботі YOLOv2 пояснюється відмінність архітектури від YOLOv1 наступним чином:

Ми видаляємо повністю пов'язані шари з YOLO (v1) і використовуємо якірні коробки для прогнозування обмежувальних коробок ... Коли ми переходимо до ящиків прив’язки, ми також від'єднуємо механізм передбачення класу від просторового розташування і замість цього прогнозуємо клас та об'єктивність для кожного анкербокса.

Це означає, що вірогідність впевненості наведена вище, повинна залежати не тільки від і але і від індексу прив'язного поля, скажімо, . Тому збитки повинні відрізнятися зверху. На жаль, папір YOLOv2 прямо не визначає свою функцію втрат.pi(c)icj

Я намагаюся вгадати функцію втрати YOLOv2 і обговорити її тут: https://fairyonice.github.io/Part_4_Object_Detection_with_Yolo_using_VOC_2012_data_loss.html


1

Ось моя навчальна записка

  1. Функція втрати: помилка в квадраті

    а. Причина: легко оптимізувати b. Проблема: (1) Не ідеально відповідає нашій меті максимальної середньої точності. (2) У кожному зображенні багато комірок сітки не містять жодного об'єкта. Це підштовхує оцінки довіри цих комірок до 0, часто переважаючи градієнт від клітин, що містять об'єкт. c. Рішення: збільшити втрати від прогнозування координат обмежувального поля та зменшити втрати від прогнозування достовірності у вікнах, що не містять об'єктів. Ми використовуємо два параметри і = 0,5 д. Помилка у квадратній сумі також однаково зважує помилки у великих коробках та невеликих коробках

    λcооrг=5
    λнообj

  2. За кожний предмет повинен відповідати лише один обмежувальний ящик. Ми призначаємо одного передбачувача, який відповідає за передбачення об'єкта, на основі якого прогнозування має найвищий поточний IOU з основною істиною.

а. Втрата від пов'язаної координати поля (x, y) Зверніть увагу, що втрати відбуваються від одного обмежувального поля з однієї комірки сітки. Навіть якщо obj не в комірці сітки як основна правда.

{λcооrгi=0S2[(хi-х^i)2+(уi-уi^)2]відповідальний обмежувальний ящик0 інший

б. Втрати від ширини w та висоти h. Зауважте, що втрата відбувається через одне обмежувальне поле з однієї комірки сітки, навіть якщо об'єкт не знаходиться в комірці сітки як основна істина.

{λcооrгi=0S2[(шi-ш^i)2+(годi-год^i)2]відповідальний обмежувальний ящик0 інший

c. Втрата від впевненості у кожному зв'язаному полі. Мало того, що втрати виникають через одне обмежувальне поле з однієї сітки сітки, навіть якщо об'єкт не знаходиться в комірці сітки як основна істина.

{i=0S2(Сi-С^i)2obj у комірці сітки та відповідальному обмежувальному поліλнообji=0S2(Сi-С^i)2Obj не в комірці сітки та відповідальній обмежувальній коробці0інший
d. Втрата від імовірності класу комірки сітки , лише коли об'єкт знаходиться в комірці сітки як основний істини.

{i=0S2ccлассес(pi(c)-p^i(c))2obj у комірці сітки0інший

Функція втрати санкціонує лише класифікацію, якщо obj присутній у комірці сітки. Він також карає координату обмежувальної коробки, якщо це поле відповідає за заземлення (найвищий IOU)


Питання про "C", у статті, впевненість - це об'єктна величина об'єкта чи немає, що виводиться множиною на IOU; це тільки для тестового часу чи це також використовується для функції витрат на навчання? Я думав, ми просто віднімаємо значення C від виводу та мітки (як і ми зі значеннями сітки), але це неправильно?
moondra

0

Формула втрат, яку ви написали, - це оригінальна втрата паперу YOLO , а не втрата v2 або v3.

Існують деякі основні відмінності між версіями. Я пропоную прочитати статті або перевірити виконання коду. Документи: v2 , v3 .

Деякі основні відмінності я помітив:

  • Вірогідність класу обчислюється за обмежувальним вікном (отже, тепер вихід S ∗ S ∗ B * (5 + C) замість S S (B * 5 + C))

  • Координати обмежувального поля тепер мають інше зображення

  • У v3 вони використовують 3 поля в трьох різних "масштабах"

Ви можете спробувати потрапити до деталей збитковості збитків, дивлячись на реалізацію python / keras v2 , v3 (шукати функцію yolo_loss) або безпосередньо на c виконання v3 (шукайте delta_yolo_box та delta_yolo_class).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.