낼름낼름 동동이

[ASAC 0621] Yolo 이론 2 본문

데이터분석/머신&딥러닝

[ASAC 0621] Yolo 이론 2

인죠인간 2024. 6. 24. 08:10

✅Training Stage

YOLO의 inference동작 원리에 초점이 맞춰져서 설명을 했다면, 이제는 학습이 어떻게 이루어지는지 알아보자.

inference 과정에서는 바운딩 박스가 여러 개 등장했지만 학습과정에 참여하는 바운딩 박스는 딱 하나!

그 하나의 바운딩박스를 선정하는 과정을 살펴봐야 한다.

 

특정 객체에 설명할 수 있는 cell을 찾아야 할텐데, 이는 Ground truth(줄여서 GT) 박스의 중심 좌표가 위치하는 셀로 할당한다.

위 그림에서는 하늘색 그리드 셀이 강아지를 찾는데 의미를 가지는 셀이 된다. (why? 강아지의 Ground truth 박스의 중앙이 위치하기 때문이다.

그럼, 하늘색 셀의 영역에서 두개의 노란색과 남색 박스를 예측했다고 가정하자.(남색 박스와 노란색 박스는 conv layers를 거쳐 나온 예측된 박스를 의미)

하나의 바운딩 박스를 고르는 기준은 IOU 값이다. GT와 겹치는 IOU 값이 더 높은 노란색 바운딩 박스만이 학습에 참여하게 된다.

그럼 여기서 예측한 노란색 박스, GT박스와 loss function을 어떻게 계산하는지 확인하자.

✅Loss Function (손실 함수)

training 단계에서 사용하는 loss는 (SSE) Sum of Squared Error를 사용한다.

손실 함수는 인공 신경망 모델을 학습할 때 사용된다. 예측값과 정답 레이블 간의 오차를 측정하기 위해 사용되며, 이 오차를 최소화함으로써 인공 신경망 모델의 성능을 향상시킨다.

Loss Function

yolo의 loss를 3가지로 볼 수 있는데, b-box regression loss, confidence loss, classification loss 이렇게 3가지가 존재 한다.

파란 박스는 regression loss인데, 모든 grid cell에서 예측한 B개의 바운딩 박스의 좌표 (x, y, width, height)와 GT box 좌표의 오차를 구하는 공식이며,

빨간 박스는 confidence loss인데 모든 grid cell에서 예측한 B개의 클래스에 속할 확률값과 GT 값의 오차를 구하는 공식이다.

초록 박스는 classification loss인데 cell 내에 클래스가 존재할 확률을 구하는 공식이다.

📌 B-box regression Loss

S²: 시그마 윗부분에 S²에서 S는 (s, s) 즉 feature map의 grid 수이다.

B: 두 번째 시그마 윗부분에서 B는 Anchor Box의 수이다.

 

 

위의 이녀석은 obj라고 되어 있으니 object와 관련이 있는 것이다 생각이 들 수 있다. 이게 논문에서 말하는 responsible이나 아니냐를 나타내는 것이다. i번째 cell 안에 2개의 detector 중에서 j 번째 detector가 responsible이면 1이고, not responsible이면 0이다.

 

 

다시 말해 object의 중심이 속하는 i번째 cell 이면서 해당 cell의 예측된 bbox 2개 중 objet와 가장 높은 IOU를 갖는 1개의 bbox가 responsible이 된다. 이것은 모든 grid cell에 대해 loss를 연산하지 않고 object에 해당하는 셀, b-box에 대해서만 연산을 함으로 효율적으로 연산하도록 한 것이다.

 

대괄호 안의 식은 예측한 바운딩 박스의 중심 좌표 x i hat, y i hat과 ground truth의 중심 좌표 x i , y i의 오차 제곱을 나타내는 식이다.

 

idth, height 도 마찬가지로 오차 제곱으로 나타나 있다. 하지만 루트가 씌여져 있는데 이는 object의 절대적인 값이 큰 경우에 절대적인 오류도 커지는 곡을 막기 위해 나타낸 것이다.

 

가장 앞의 람다는 스케일링을 적용한 것인데, 이는 뒤에 나오는 다른 로스들과 일종의 균형을 맞춰주기 위한 벨런싱 파라미터라고 볼 수 있다. (보통 5로 설정된다)

📌 Object Confidence Loss

 

Object Confidence Loss

Object Confidence Loss는 예측한 object의 loss를 나타낸다.

Ci : 모델에서 구한 object일 확률 값과 IOU를 곱해 얻게 된다.

 

Ci hat : Ground truth confidence score 로써 값은 1이다.

 

 여기서 눈 여겨봐야할 점! object가 없어야 하는 확률에 대해서도 b-box의 confidence loss를 구해서 포함 함 시킨다는 점이다

 

 

noobj loss 에는 람다 가중치를 곱해준다 보통 값은 0.5이다. object 객체가 탐지되지 않은 영역에 대한 loss를 0.5를 곱해주서 낮춰 주는 이유는 클래스 불균형 문제를 해소하기 위함이다. 대부분의 b box는 오브젝트를 포함하고 않을 것이기 때문에 배경에 대해서도 가중을 똑같이 1로 주게 된다면 모델은 배경 학습에 더 집중할 수 있기 때문이다.

 

📌 Classification Loss

Classification Loss

classification loss는 말 그대로 클래스별 확률 값에 대한 오차 제곱으로 구해 주게 된다.

pi(c): 해당 cell i 내부에 존재하는 object가 c class 일 확률이다.

✅ Inference stage

이제 어떤 사물인지 추론하는 단계에 대해 알아보자.

 

아웃풋 텐서의 하나의 그리드를 확대해 보면 총 크기 30의 아웃풋이 들어가있다. 여기서 추론을 할 때는 class specific confidence score이라는 것을 계산하게 된다.

첫 번째 바운딩 박스의 confidence score와 각 클래스일 확률을 곱해 준다.

 

이과정을 예측한 바운딩 박스의 개수만큼 32번 (16 cell 개수 x 2개 바운딩 박스) (위 동작원리 예시에서 가정한 개수)  해주게 된다. 그런데 여기까지 진행하게 되면 하나의 오브젝트 마다 바운딩 박스 개수가 너무 많아지게 된다. 이들 중 제일 확실한 하나를 고르기 위해 NMS라는 알고리즘을 사용하게 된다.

📌 NMS (Non-Maximum Suppression)

NMS 란 object detection이 예측한 바운딩 박스들 중에서 가장 정확한 하나의 박스만 선택하도록 하는 알고리즘이다. 각 cell마다 confidence score 이 가장 큰 박스를 고르고 선택한 박스와의 IOU가 임계값 보다 큰 박스는 모두 제거한다.

\최종적으로 가장 적절한 하나의 박스만 남을 때까지 이 과정을 반복적으로 실행하는 것

✅Limitation (한계점)

YOLO의 한계점으로는 작은 물체에 대해 탐지 성능이 낮다는 것이다.

object 가 크면 bbox 간에 IOU값의 차이가 커져서 적절한 predictor을 선택할 수 있지만, object가 작으면 bbox간 IOU값의 차이가 작아서 근소한 차이로 predictor가 결정되어 정확하지가 않다.

그리고 object비율이 달라지면 detection 성능이 낮아진다는 것이다.

여기까지 이론에 대해서 공부를 해보았고, 내일 부터는 실습을 통해서 이어가보자!

내용은 https://dotiromoook.tistory.com/24 여기서 참고를 하며 공부하였다!

별 확률 값에 대한 오차 제곱으로 구해 주게 된다.

pi(c): 해당 cell i 내부에 존재하는 object가 c class 일 확률이다.

✅Inference stage

이제 어떤 사물인지 추론하는 단계에 대해 알아보자.

아웃풋 텐서의 하나의 그리드를 확대해 보면 총 크기 30의 아웃풋이 들어가있다. 여기서 추론을 할 때는 class specific confidence score이라는 것을 계산하게 된다.

첫 번째 바운딩 박스의 confidence score와 각 클래스일 확률을 곱해 준다.

이과정을 예측한 바운딩 박스의 개수만큼 32번 (16 cell 개수 x 2개 바운딩 박스) (위 동작원리 예시에서 가정한 개수)  해주게 된다. 그런데 여기까지 진행하게 되면 하나의 오브젝트 마다 바운딩 박스 개수가 너무 많아지게 된다. 이들 중 제일 확실한 하나를 고르기 위해 NMS라는 알고리즘을 사용하게 된다.

📌 NMS (Non-Maximum Suppression)

NMS 란 object detection이 예측한 바운딩 박스들 중에서 가장 정확한 하나의 박스만 선택하도록 하는 알고리즘이다. 각 cell마다 confidence score 이 가장 큰 박스를 고르고 선택한 박스와의 IOU가 임계값 보다 큰 박스는 모두 제거한다. 하나의 박스만 남을 때까지 이 과정을 반복적으로 실행하는 것

✅Limitation (한계점)

YOLO의 한계점으로는 작은 물체에 대해 탐지 성능이 낮다는 것이다.

object 가 크면 bbox 간에 IOU값의 차이가 커져서 적절한 predictor을 선택할 수 있지만, object가 작으면 bbox간 IOU값의 차이가 작아서 근소한 차이로 predictor가 결정되어 정확하지가 않다.

그리고 object비율이 달라지면 detection 성능이 낮아진다는 것이다.

 

 

여기까지 이론에 대해서 공부를 해보았고, 내일 부터는 실습을 통해서 이어가보자!

내용은 https://dotiromoook.tistory.com/24 여기서 참고를 하며 공부하였다!