Yolo v2 손실 기능을 이해하려고합니다.
사람이 기능을 자세히 설명 할 수 있다면.
Yolo v2 손실 기능을 이해하려고합니다.
사람이 기능을 자세히 설명 할 수 있다면.
답변:
다른 용어에 대한 설명 :
각 bbox 예측에 대해 두 개의 인덱스 와 를 사용 했습니다. 항상 또는 요소가 있기 때문에이 기사에서는 그렇지 않습니다. 이므로 해석이 없습니다. 선택한 는 해당 셀에서 가장 높은 신뢰 점수에 해당하는 것입니다.j 1 o b j i j 1 n o o b j i j j
합계의 각 항에 대한보다 일반적인 설명 :
B*(5+C)
? 이것이 YOLO v3의 경우입니다.
YOLOv2 Loss 기능이 무섭지 않습니까? 실제로는 아닙니다! 그것은 가장 대담하고 똑똑한 손실 기능 중 하나입니다.
먼저 네트워크가 실제로 예측하는 것을 살펴 보겠습니다.
요약하면 YOLOv2는 13x13 기능 맵에서 탐지를 예측하므로 총 169 개의 맵 / 셀이 있습니다.
앵커 박스가 5 개 있습니다. 각 앵커 박스에 대해 우리는 Objectness-Confidence Score (객체가 발견되었는지 여부), 앵커 박스에 대한 4 개의 좌표 ( 및 ) 및 20 개의 최상위 클래스가 필요합니다. 이것은 5 개의 앵커 박스 예측 모두에 대해 20 개의 좌표, 5 개의 신뢰 점수 및 100 개의 클래스 확률로 대략적으로 볼 수 있습니다.
우리는 걱정할 것이 거의 없습니다 :
교차 엔트로피 기능 을 사용하는 분류 손실을 제외한 모든 손실은 평균 제곱 오차 입니다.
이제 이미지의 코드를 깨 뜨리겠습니다.
각 앵커 박스의 손실을 계산해야합니다 (총 5 개)
S = 12 인 각 13x13 셀에 대해이 작업을 수행해야합니다 (0부터 색인을 시작하므로)
셀 객체가 있으면 는 1 이고 그렇지 않으면 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
그 무서운 아니에요!
손실 함수는 YOLO v2가 아니라 YOLO v1에 대한 것입니다. 또한 두 손실 기능의 차이점과 혼동되어 많은 사람들이 다음과 같이 보입니다. https://groups.google.com/forum/#!topic/darknet/TJ4dN9R4iJk
YOLOv2 논문은 다음과 같이 YOLOv1과의 아키텍처 차이를 설명합니다.
YOLO (v1)에서 완전히 연결된 레이어를 제거하고 앵커 박스를 사용하여 경계 상자를 예측합니다. 앵커 박스로 이동할 때 클래스 예측 메커니즘을 공간 위치에서 분리하고 대신 모든 앵커 박스의 클래스와 객체를 예측합니다.
이것은 위 의 신뢰 확률 는 와 뿐만 아니라 앵커 박스 인덱스, 즉 에 의존해야 함을 의미합니다 . 따라서 손실은 위와 달라야합니다. 불행히도, YOLOv2 용지는 손실 기능을 명시 적으로 언급하지 않습니다.
나는 YOLOv2의 손실 함수를 추측하고 여기에서 논의하려고합니다 : https://fairyonice.github.io/Part_4_Object_Detection_with_Yolo_using_VOC_2012_data_loss.html
여기 내 연구 노트입니다
손실 함수 : 합계 제곱 오차
ㅏ. 이유 : 최적화가 용이함 b. 문제 : (1) 평균 정밀도 극대화 목표와 완벽하게 일치하지 않습니다. (2) 모든 이미지에서 많은 그리드 셀에는 객체가 포함되어 있지 않습니다. 이렇게하면 해당 셀의 신뢰도 점수가 0으로 밀리고 종종 객체를 포함하는 셀의 그라데이션을 압도합니다. 씨. 솔루션 : 경계 상자 좌표 예측으로 인한 손실을 늘리고 객체를 포함하지 않은 상자에서 신뢰 예측으로 인한 손실을 줄입니다. 와 = 0.5의 두 매개 변수를 사용 합니다. 큰 상자와 작은 상자의 합계 제곱 오류도 같은 가중치 오류
각 개체마다 하나의 경계 상자 만 담당합니다. 우리는 어떤 예측이 기본 진실과 현재 IOU가 가장 높은지를 기반으로 개체를 예측할 책임을 지도록 하나의 예측자를 지정합니다.
ㅏ. 경계 상자 좌표 손실 (x, y) 손실은 하나의 그리드 셀에서 하나의 경계 상자에서 발생합니다. obj가 그리드 셀에 있지 않은 경우에도 마찬가지입니다.
비. 너비 w 및 높이 h에서 손실 오브젝트가 그리드 셀에없는 경우에도 손실은 하나의 그리드 셀에서 하나의 경계 상자에서 발생합니다.
씨. 각 바운드 박스에 대한 신뢰 상실. 객체가 그리드 셀에 접지 사실이 아니더라도 하나의 그리드 셀에서 하나의 경계 상자에서 손실이 발생하는 것은 아닙니다.
손실 함수는 격자 셀에 obj가있는 경우에만 분류에 불이익을줍니다. 또한 해당 상자가 접지 상자 (최고 IOU)를 담당하는 경우 경계 상자 좌표에 불이익을줍니다.
작성한 손실 공식 은 v2 또는 v3 손실이 아닌 원래 YOLO 용지 손실입니다.
버전 간에는 몇 가지 주요 차이점이 있습니다. 논문을 읽거나 코드 구현을 확인하는 것이 좋습니다. 논문 : v2 , v3 .
내가 알아 차린 몇 가지 주요 차이점 :
바운딩 박스당 클래스 확률이 계산되므로 출력은 이제 S S (B * 5 + C) 대신 S * S * B * (5 + C )입니다.
경계 상자 좌표가 이제 다른 표현을 갖습니다.
v3에서는 3 가지 "스케일"에 걸쳐 3 개의 상자를 사용합니다.
python / keras 구현 v2 , v3 (yolo_loss 함수 찾기) 또는 c 구현 v3 (delta_yolo_box 및 delta_yolo_class 찾기) 을 통해 손실에 대한 세부 정보를 얻을 수 있습니다 .