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

교육몬드리안님의 프로필 이미지
교육몬드리안

작성한 질문수

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

faster RCNN 질문

작성

·

238

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요?
faster RCNN에 궁금한 점이 있어 문의드립니다.
1) 3*3 conv를 통해 나온 피쳐맵 --> 1*1 conv --> 앵커박스 매핑 까지의 단계를 말씀하시는 건가요??
2) 그렇게 해서 나온 18개 채널 (https://www.inflearn.com/questions/109566 참고했습니다)이
앵커박스와 매핑해서 결과값을 가지고 softmax를 한다고 했는데 1*1conv 통과한 피쳐맵에 각 픽셀마다 앵커박스를 9개 생성하고 아래 그림처럼 매핑하여 loss를 계산하는건가요..?

답변 1

0

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

안녕하십니까, 

1) 3*3 conv를 통해 나온 피쳐맵 --> 1*1 conv --> 앵커박스 매핑 까지의 단계를 말씀하시는 건가요??

=> 어떤 단계를 얘기하시는 건지 모르겠지만,  RPN을 말씀하시는 걸로 판단하겠습니다. 

3x3 conv -> 1x1 conv 시 anchor box 갯수 만큼 channel 수를 가지는 conv 연산을 적용합니다. 

2) 그렇게 해서 나온 18개 채널 (https://www.inflearn.com/questions/109566 참고했습니다)이
앵커박스와 매핑해서 결과값을 가지고 softmax를 한다고 했는데 1*1conv 통과한 피쳐맵에 각 픽셀마다 앵커박스를 9개 생성하고 아래 그림처럼 매핑하여 loss를 계산하는건가요..?

말씀하신것이 대략적으로 맞습니다. 다만 캡처해주신 그림이 작아서 보이질 않습니다. 

RPN의 Object 여부 Classification은 개정판에서는 softmax가 아닌 sigmoid, 즉 object인가 아닌가로 설명드리고 있습니다. 그래서 filter수가 18개가 아니라 9개로 설명 드리고 있습니다. 이게 softmax일 경우에는 18개 입니다.  아래와 같은 1x1 Conv를 적용하여 RPN의 Object 여부를 출력합니다.

Conv2D(filters=앵커갯수, kernel_size=(1,1), activation='sigmoid')(3x3 feature map 결과)

RPN의 Bounding box 좌표는 filters수 앵커갯수 x 4 입니다. 그래서 36개 입니다. 

Conv2D(filters=앵커갯수*4 , kernel_size=(1,1), activation='linear')(3x3 feature map 결과)

이렇게 해서 PRN의 Object여부와 bounding box 좌표를 예측합니다. 

그런데 정확히 얘기하자면 이 예측값과 anchor값을 매핑하지는 않습니다. anchor는 고정되어 있기 때문입니다. 이 고정된 anchor box와 Ground truth bounding box값이 얼마나 떨어져 있는지를 기반으로 예측 bounding box를 생성하는 것입니다. 

교육몬드리안님의 프로필 이미지
교육몬드리안

작성한 질문수

질문하기