We-Co

[We-Co] Training - YOLO, Tensorflow논문 본문

AI논문

[We-Co] Training - YOLO, Tensorflow논문

위기의코딩맨 2021. 10. 19. 11:21
반응형

안녕하세요. 위기의 코딩맨입니다.

오늘은 YOLOTraining 부분을 한번 간단하게 알아보도록 하겠습니다.

YOLO

 

[We-Co] Unified Detection, Network Design - YOLO, Tensorflow 논문

안녕하세요. 위기의 코딩맨입니다. 오늘은 YOLO의 Unified Detection, Network Design에 대해 간단하게 알아보도록 하겠습니다. Method 부분에 해당하며, 본 논문의 모델을 나타내는 부분이라고 생각할 수있

we-co.tistory.com

[ Training ]

YOLO Training

약 1000개의 ImageNet 1000-Class의 데이터를 약 일주일간 학습을 진행시켰다고합니다.

약 88%정도의 정확도의 Image CNN 모델을 만들었다고 합니다.

 

학습된 CNN 모델을 다시 학습을 진행하는데

Detection에 맞도록 4개의 Convolutional을 추가하고

Fully connected Layer를 2개 추가하여 학습을 진행했다고 합니다.

그리고 작은 객체도 찾아내기위해 224*224 사이즈에서 448*448로 변경했다고 합니다.

또한, 마지막 Layer에서 Class Pobabilities, Bouding Box의 포지션 좌표를 한번에 예측을합니다. 

Bouding Box의 width와 height의 크기를 0~1사이의 값으로 변경해 주는 작업을 진행한다고 합니다. 

즉, Bounding Box의 크기에 대한 작업을 진행하는것입니다.

Bounding Box의 위치도 Grid Cells을 기준으로 왼쪽은 0 우측은 1, 위는0 아래는 1로 설정해줍니다.

해당 작업은 Bounding Box가 이미지에 위치하는 곳을 정하는 작업을 진행합니다.

 

Loss Function은 sum-squrared error를 간단해서 사용하지만,

Object Detection과의 목적과는 맞지 않고, 

대부분의 Cells은 객체가 존재하지 않을수 있어 confidence의 값이 0으로 수렴할 수 있다고 합니다.

 

Also, in every image many grid cells do not contain any object.

 

This can lead to model instability, causing training to diverge early on.

 

학습이 불안정하고, 정확한 학습이 안될 수 있다고 위험성을 나타내고 있습니다.

 

그래서 YOLO는 임의로 bounding Box Coordinate와 Object가 없는 부분의 Confidence Predictions 앞에

λcoord and λnoobj의 임의 가중치 값을 대입하여 객체가 있는 곳은 5, 객체가 없는곳은 0.5로 중요도를 표시합니다.  

 

Sum-Squared Error는 큰 Box와 작은 Box는 같은 가중치를 갖는다고 합니다.

여기서 문제는 이미지 Bounding Box가 300인데 305를 예상한것과, 10인데  15로 예상한 결과는 

300에서 5는 큰차이가 아니지만 10인데 15는 엄청난 차이를 갖고있습니다.

그러나 Sum-Squared Error는 같은 가중치로 보는 문제가 있습니다.

 

To partially address this we predict the square root of the bounding box width and height instead of the width and height directly

 

YOLO는 이러한 문제를 해결하기위해 square root(제곱근)을 width와 height에 씌어서 비교한다고 합니다.

생성되는 Bounding Box 중, 믿을만한 Bounding Box를 하나를 비교대상으로 삼는다고 하는데

그 기준은 가장 높은 IOU를 갖고있는 Bounding Box를 기준으로 잡는다고 합니다.

기준이 된 Bounding Box를 학습 과정에서 Loss Function 비교에 사용이 됩니다.

이러한 방법을 사용하면 더 높은 정확도를 얻을 수 있다고합니다.

 

YOLO Loss Function

 

 

 

위에서 설명한 내용들을 Loss Function의 연산을 통해서 더 자세하게설명하고 있는 부분입니다.

앞에 2부분은 λcoord의  X, Y, W, H의 예측 값을 정답과 비교하는 부분이고,

아까 말했듯이 λcoord의 부분에는 5가 곱해져서 조금 더 강조되는 부분입니다. 

3,4 번째 부분은 Object가 있는 부분과 없는 부분의 Confidence의 예측 값과 정답을 비교하는 부분입니다.

 

그리고 Object가 없는 부분엔 0의 값을 갖게되어 그 부분에 Confidence가 많이 반영 되지 않도록 λnoobj,

즉 0.5의 가중치를 곱해서 계산을 진행합니다. 

 

PASCAL VOC 2007 and 2012 Dataset을 135 Epochs만큼 학습을 진행했으며

2007 Test Data도 학습을 진행했으며, 2012 Data로 테스트를 진행했다고 합니다.

Batch Size는 64, Optimizer는 momoentum 0.9, decay는 0.0005

Learning Rate는 처음은 안정적인 학습을 위해 0.001, 0.01로 점진적을 증가시켰다고합니다.

2번째~75째까지는 0.01로 진행했고, 다음 30번은 0.001로, 남은 30번은 0.0001로 진행했다고 합니다.

 

그리고 Dropout을 예방하기 위해, Data Augmentation을 사용했다고 합니다.

 

 

오늘은 YOLO의 Training 부분에 대해 간단하게 알아보았습니다.

 

1. Bounding Box의 좌표 예측

2. Confidence 예측

3. Class 정보 예측

 

그리고 λcoord, λnoobj의 가중치를 곱해야 되는 부분이 조금 중요해보입니다.

Epochs마다 Learning Rate를 다르게 주는 것도 구현할 때 조심해야 할 것같습니다!

반응형