해결된 질문
21.09.15 06:20 작성
·
261
0
안녕하세요 강사님. 수업 항상 잘 듣고있습니다.
바쁘시겠지만.. detection 학습관련하여 계속 헷갈리는 부분 있어서.. 질문드립니다.
이번 강의 중간 부분에 faster RCNN의 문제점을 이야기 해주시면서
classification과 Bonding box rergression을 RPN 에서도 하고 뒷단의 detect부분에서도 똑같이 한다고 하셨습니다.
제가 이해하는 바로는 결국 마지막 부분에서 multi loss를 통해서 한번 역전파 시켜주는 것으로 알았는데,
RPN부분에서 따로 weight 갱신이 이루어지는지요..?
(inception의 auxiliary와 같은방식으로..)
아니면 FCN방식으로 9x(HW) 2x(HW)를 제안한 것 자체가 중복되는 구조라는 것인지요?
>> 요약 : loss를 두번 흘려줘서 학습이 2번 이루어진다고 생각하는 것인지, 아니면 구조만 두번 중복되고 마지막 loss로 다같이 학습이 되는 것인지 궁금합니다.
답변 1
0
2021. 09. 15. 19:26
안녕하십니까,
faster rcnn이 train이 좀 복잡합니다. 구현을 어떻게 했느냐에 따라서 차이가 날 수 있지만, 논문 대로 train을 시킨다면 마지막에 한번에 역전파로 loss를 구해서 update하지 않고, RPN Loss 계산 후 RPN Weight Update이 후 Faster RCNN Loss 계산 후 RPN 제외 Layer Weight Update 이런 방식을 취합니다.
Faster RCNN 을 학습 시킬 때
batch size 만큼의 image들이 있다면 RPN Loss계산 및 update -> Faster RCNN Loss 계산 및 Update 방식을 반복하면서 적용합니다. 이런 방식을 수행하려면 keras에서는 train_on_batch()라는 메소드를 지원 합니다.
그러니까, 아래와 같은 pseudo 코드로 학습 할 수 있습니다.
for epoch in epochs: # epoch 횟수만큼 반복
for step in steps: # batch size 만큼 step 반복
RPN.train_on_batch()
FasterRCNN.train_on_batch()
감사합니다.
2021. 09. 16. 07:20
감사합니다!