해결된 질문
작성
·
31
답변 2
1
안녕하십니까,
ROI Head와 Dense Head는 mmdetection에서 RPN을 구성할 때 사용하는 용어 같군요.
RPN 즉 최종 ROI 즉 Object가 있을 만한 위치와 Object 여부(이진 분류)를 판별해주는 네트웍에서(그러니까, 이전에 Selective Search에서 하던 역할을 수행) 마지막 Layer 부분을 의미합니다. ROI Head에서 RPN의 최종 Loss 계산 및 Object가 있을 만한 위치를 기반으로 roi 매핑을 feature map에 시켜주고 Object 여부를 최종 예측하는 걸로 보입니다.
Dense Head에서는 이렇게 ROI Head에서 매핑된 Feature Map을 기반으로 실제 Object의 위치와 Object 클래스값(멀티 클래스 분류)를 학습 및 예측해 주는 역할을 수행해 줍니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. jcy4023님, 질문해 주셔서 감사합니다.
MMDetection에서 ‘densehead’와 ‘roihead’는 둘 다 객체의 위치와 클래스를 찾기 위한 모듈이지만, 그 사용 방식이 다르기 때문에 조금 헷갈릴 수 있습니다.
DenseHead: 이 모듈은 주로 One-Stage Detectors에서 사용되며, 모든 feature map의 위치에서 객체를 추론합니다. RetinaNet이나 SSD와 같은 모델에서 많이 활용됩니다. 특징적으로 모든 위치에서 동시에 객체를 탐지하므로 빠른 추론 속도를 자랑합니다.
ROIHead: 이는 주로 Two-Stage Detectors에서 사용됩니다. Faster R-CNN이나 Mask R-CNN과 같은 모델에서 사용하는 방식으로, 먼저 객체 후보 영역(Regions of Interest)을 예측하고, 그 후보 영역 내에서 객체의 세밀한 위치와 클래스를 예측합니다. 이로 인해 더 정확한 결과를 제공할 수 있지만, 속도가 상대적으로 느립니다.
기본적으로 두 방식은 다양한 객체 탐지 요구사항에 맞춰 사용되며, 속도와 정확도의 트레이드오프를 고려해 선택할 수 있습니다.
추가로, mmdetection 관련 질문이시라면 다음 링크들도 도움을 받을 수 있습니다:
- “mmdetection에서의 mask-rcnn에 대해서 질문이 있습니다”
- “mmdetection 모델 생성 원리가 궁금합니다.”
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
뒤에 또 질문이 있는 걸 몰랐군요.
제 생각에는 Faster RCNN 강의영상을 다시 한번 보시면 어떨 까 싶습니다. 조금 보신지가 오래 되어서 논문 내용과 강의 내용 매핑이 헷갈리실 수 있을 것 같습니다. 그리고 어떤 논문을 의미하신 건지요? Faster RCNN 논문에는 roiextractor라는 용어가 없습니다.
그리고 roiextractor는 따로 그림에 명시가 안되어있던데 라고 하셨는데, 그림이 강의의 그림인가요? roiextractor가 어떤 의미로 사용하신건지 다시 확인 부탁드립니다(제 생각엔 roi mapping하는 부분을 의미하신 것 같습니다만.. )
빠른 답변 감사드립니다.
MMDetection architecture 부분에서 궁금증이 생겼었습니다.
위에서 two-stage-detector를 살펴보면 densehead와 roihead가 저런 식으로 연결되어있는데 https://arxiv.org/pdf/1906.07155 이 논문에서 살펴봤을 때 densehead와 roihead의 의미가 헷갈려서 질문 드린 겁니다!
또한, 위 논문에서 model architecture를 설명하는 부분에서 roi extracture가 있다고 나오는데 그림에는 나오지 않아서 질문드렸습니다.
항상 좋은 강의 감사드립니다.
mmdetection이 소스 코드가 넘 방대해서 100% 정확하진 않지만,
DenseHead는 1 stage와 2 stage에서는 다르게 적용되는 군요.
예를 들어 Faster RCNN이라면 Dense Head가 RPN의 Head 역할을 합니다. 그리고 ROIHead가 최종 bbox 예측을 수행하게 됩니다. 1 stage의 경우는 Dense Head가 최종 bbox를 담당하는 걸로 보입니다. Dense Head의 경우 Feature map에서 바로 연결해서 수행하는 작업들을 모아놓은 걸로 보입니다. ROI Extractor는 Dense Head의 ROI Mapping을 추출하고 ROI Head 모듈에서 이를 받아서 처리하는 걸로 보입니다.
감사합니다.
그런데 논문을 보면 two-stage-detection에서 densehead와 roihead 모두 쓰이더라고요.
one-stage-detection에서는 densehead만 사용되는 것은 알겠으나 two-stage-detection에서는 어떻게 사용되는 건지 궁금합니다!
그리고 roiextractor는 따로 그림에 명시가 안되어있던데 architecture의 어느 부분에서 사용되는 지 궁금합니다. two-stage-detection에서 roihead부분에 속해있는 건가요?