본문 바로가기

개발/딥러닝

[논문 구현] You Only Look Once:Unified, Real-Time Object Detection(YOLO v1) 구현

모델 구현

모델 구현 자체는 상당히 쉽습니다.

우선 Conv 부분을 먼저 만들어 줍니다.

아래와 같이 만들어 줍니다.

 

그리고 밑에 Dense를 사용합니다. 이때, gpu 메모리가 터진다고 경고를 할 때가 있는데 껐다 켜면 해결이 됩니다.

 

최종적으로 7*7*(3+5*2)로 나옵니다. 3은 클래스의 수입니다.

로스

로스를 구현해 보겠습니다. 우선 오브젝트가 있는 것과 없는 것으로 나눕니다.

 

오브젝트가 있는 각각의 셀을 박스 예측과 클래스 예측으로 나눕니다. 한 피쳐 픽셀 당 2개의 바운딩 박스를 예측하므보 5*2 개를 뽑아냅니다.

 

오브젝트가 없는 것에 대해 confidence score를 계산합니다.

 

예측한 바운딩 박스와 타겟의 바운딩 박스의 IOU를 구한 다음 가장 많이 겹치는 박스를 구합니다. 셀 당 2개의 박스를 가지고 있고 결과가 7*7 크기이므로 아래와 같이 구현됩니다.

 

어떤 녀것과 가장 많이 겹치는지 알아냈으므로 이를 위해 로스를 구현할 수 있습니다.

 

iou는 다음 함수로 계산할 수 있습니다. 이를 이용해서 위 식에 있는 compute_iou를 구현할 수 있습니다.