인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

유영재님의 프로필 이미지
유영재

작성한 질문수

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

RetinaNet Focal Loss에 관해서 개념이 잘 이해가 되지 않습니다

작성

·

443

0

안녕하세요 

RetinaNet의 이해 - Focal Loss 강의를 보다가 의문이 생겨서 질문을 드립니다

Cross Entropy 손실함수를 구할 때 이미지 전체에 대한 Anchor box에서 나온 Loss를 모두 더한 것을 말하는 것 같습니다. 정의에 Summation 기호가 붙여져 있어서요. 그리고 강의자료 234 페이지에는 "약 10 배 차이로 10000개의 easy exampl들이 더 Loss가 크다"고 표현하면서 합에 대한 것을 강조했습니다

그런데 적용은 각 Anchor box의 손실에 따라서 적용해야 하는데, 왜 굳이 Summation으로 표현하는 것인지 모르겠습니다. 제가 모르는 regression 방법이 따로 있는 것인지요? 전체 summation과 각 Anchor box의 loss 값 비율을 구해서 regression을 하는 것인가요?

그리고 추가로 Focal Loss에서 CE, FL, foreground, background 용어가 나오는데, CE, FL은 아는데 뒤에 for, back을 나누는 이유가 있을까요? 간단하게 설명이 가능하신가요?

답변 3

1

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

안녕하십니까,

먼저 대부분의 손실함수는 학습중 발생한 데이터 셋의 예측 오류를 합산한것입니다. (보통 Tensorflow는 배치 데이터 셋의 예측 오류를 합산하고, Keras는 배치 데이터 셋의 예측 오류 합산한 것을 다시 배치 데이셋의 갯수로 나눈, 즉 평균 예측 오류를 라이브러리로 제공합니다)

세부적인 가중치나 공식은 다를 수 있지만 손실함수는  전체 데이터에 대해서 예측 오류 합산의 개념으로 만들어져야 합니다

crossentropy 손실 역시 공식만 다를뿐 결국은 예측 오류를 합산해서 계산합니다. 즉 10000개의 데이터에서 10개를 배치 데이터 세트로 예측을 하고 이 예측 오류를 실제 데이터와 비교해서 10개 배치 데이터 전체에 대한 예측 오류를 계산하고, 이를 1000번 수행하면서 결국 전체 데이터에 대한 예측 오류를 합산하는 것입니다.

그리로 focal loss를 classification을 위한 것이며 Retinanet regression은 smooth L1 loss를 이용합니다.

foreground, background를 구분하는 이유는 background는 다 Object Detection 대상이 아니므로 object이냐 아니냐를 구분할 때 보통 사용 됩니다.

감사합니다.

0

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

궁극적으로는 deep learning loss함수가 그런 역할을 하지만, 직접 loss가 작은 object에 대해서 가중치 조절을 덜 하지는 않습니다. gradient descent로 loss 함수를 감소 시키는 방향으로 update를 하다보면 긍극적으로는 최대한 그렇게 적용될 수 있도록 Optimizer가 유도합니다.

그리고 두번째 질문은 제가 잘 이해하지 못했습니다. regression이 어떤 상황과 어떤 상황을 비교해서 차이가 난다는 말씀인지 다시 한번 정의해 주시기 바랍니다.

0

유영재님의 프로필 이미지
유영재
질문자

감사합니다. 그러면 손실함수가 background loss가 0.1, object에 대한 loss가 0.01이라면 합산은 0.11이 된다고 가정을 하면, 상대적으로 loss가 작은 object에 대해서는 가중치 조절을 덜 하게 되나요? 아직 궁금한 것이 합산으로 했을 때 둘에 대한 regression이 저런 상황에서 차이가 있는지에 대해서 궁금합니다. 감사합니다

유영재님의 프로필 이미지
유영재

작성한 질문수

질문하기