인프런 커뮤니티 질문&답변

최용혁님의 프로필 이미지
최용혁

작성한 질문수

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

YOLO v3 의 이해 - 02

안녕하세요 강사님 FC가 적용되지 않는 경우 loss관련 질문드립니다.

해결된 질문

작성

·

199

1

안녕하세요 강사님. 수업 정말 잘 듣고있습니다.

지난 CNN강의부터 쭉 공부를 해보았는데도 직접 구현해보려고 하니까 계속 두루뭉실 이해가 되지 않는 부분이 있어서 질문드립니다.

 

마지막 출력단이 FC의 경우 loss라는 것이 결국 1차원의 긴 벡터의 요소의 각각의 오차를 구해서 쭉 합친것 혹은 평균낸 것 이라고 이해했는데,

yolo v3나, 그 외의 마지막을 convolution연산으로 바꾼 모델들은 마지막 출력이 2차원 평면(x배치수)인데, loss를 어떻게 계산하는지 궁금합니다. 

[질문]

2차원 각 셀 부분별로 나온 다양한 종류의 loss들을 multi loss로 통합하여, 각 셀별 오차를 구하고 = 오차가 (16x16x배치수)처럼 나오고,

FC오차와 같이 결국 모든 셀(16x16)의  개별 요소들의 합을 구하는 것이 맞는지요...?

 

 

바쁘실텐데 복잡한 질문 죄송합니다. 감사합니다.

 

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까, 

별 말씀을요, 질문은 당연한 걸요. 

예상하신 답변과  유사하게 loss를 계산합니다. 

Yolo v3는 예측 결과를 feature map으로 내놓습니다. 예를 들어 13x13 Grid 기반의 예측이라면 (13, 13, 3, 25) feature map으로 내놓습니다. 여기서 3의 anchor 수, 25는 x, y 좌표, width, height, object confidence로 5개, 나머지 20개는 class가 20개 일 경우의 개별 class 확률입니다. 

yolo v3 는 FPN 방식으로 예측을 내놓으니까, 416X416 Image를 학습 할 경우, 13X13, 26X26, 52X52 세개 Grid에서 각각 (13, 13, 3, 25), (26, 26, 3, 25), (52, 52, 3, 25) 3개 형태의 feature map을 기반으로 loss를 계산합니다. 

여기서 중요한 것은 loss를 계산하기 위해서는 ground truth 값을 위의 feature map과 유사한 형태로 변환을 시켜 주는 것이 필요합니다. 그러니까 주어진 좌표값과 class가 주어진 annotation을 기반으로 해서 13x13, 26x26, 52x52 cell 영역으로 매핑을 시켜 줘야 합니다. 이게 좀 복잡합니다. 실제 yolo 구현에서 크게 어려운 점이 Loss를 구하는 것과, 바로 ground truth annotation을 이렇게 (13, 13, 3, 25), (26, 26, 3, 25), (52, 52, 3, 25) 형태로 변경 시켜 줘야 합니다. 

이게 복잡도가 있어서 여기서 단숨에 설명드리기는 어렵습니다만, 개요적으로만 말씀 드리면,  개별 object들이 있는 위치와 클래스를 13x13 cell 영역에서 어떤 anchor가 담당하는지를 매핑해서 새로운 ground truth를 만들어 내어야 합니다.  그런 다음에 loss를 계산하는 방식을 적용합니다. 

감사합니다. 

최용혁님의 프로필 이미지
최용혁
질문자

생각보다 구현이 쉽지않네요... ㅜㅜ
감사합니다!

최용혁님의 프로필 이미지
최용혁

작성한 질문수

질문하기