모델 구현
모델 구현 자체는 상당히 쉽습니다.
우선 Conv 부분을 먼저 만들어 줍니다.
아래와 같이 만들어 줍니다.
그리고 밑에 Dense를 사용합니다. 이때, gpu 메모리가 터진다고 경고를 할 때가 있는데 껐다 켜면 해결이 됩니다.
최종적으로 7*7*(3+5*2)로 나옵니다. 3은 클래스의 수입니다.
로스
로스를 구현해 보겠습니다. 우선 오브젝트가 있는 것과 없는 것으로 나눕니다.
오브젝트가 있는 각각의 셀을 박스 예측과 클래스 예측으로 나눕니다. 한 피쳐 픽셀 당 2개의 바운딩 박스를 예측하므보 5*2 개를 뽑아냅니다.
오브젝트가 없는 것에 대해 confidence score를 계산합니다.
예측한 바운딩 박스와 타겟의 바운딩 박스의 IOU를 구한 다음 가장 많이 겹치는 박스를 구합니다. 셀 당 2개의 박스를 가지고 있고 결과가 7*7 크기이므로 아래와 같이 구현됩니다.
어떤 녀것과 가장 많이 겹치는지 알아냈으므로 이를 위해 로스를 구현할 수 있습니다.
iou는 다음 함수로 계산할 수 있습니다. 이를 이용해서 위 식에 있는 compute_iou를 구현할 수 있습니다.