Object Detection Library
MMdetection
MMDetection의 주요 config 구성
- model: 모델 구조 정의
- data: 데이터 관련 설정
- optimizer: 최적화 방법 설정
- scheduler: learning rate 스케줄링
- runtime: 학습 환경 설정
MMdetection pipeline

Backbone
: 입력 이미지를 특징 맵으로 변형한다
→ Backbone은 입력 이미지로부터 hierarchical한 feature map을 추출하는 역할을 수행함.Neck
- Backbone에서 추출된 feature map들을 재구성하고 보강함
- FPN(Feature Pyramid Network)과 같은 구조가 대표적임
- Anchor 생성은 DenseHead(RPN)의 역할임
DenseHead
: 특징 맵의 dense location을 수행하는 부분이다
→ 올바른 설명임. Dense prediction을 수행하며, RPN(Region Proposal Network)이 여기에 해당함.RoIHead
: RoI 특징을 입력으로 받아 box 분류, 좌표 회귀 등을 예측하는 부분이다
→ RoI pooling/align을 통해 얻은 특징을 바탕으로 최종 객체 분류와 box 위치를 예측함.Backbone
: 예시로는 ResNet, VGG 등이 있다
→ 대표적인 CNN 백본 네트워크들
간단한 코드 분석
register_all_modules()
from mmdet.utils import register_all_modules
register_all_modules()
# 이후 MMDetection의 다른 기능들을 사용...
register_all_modules() 함수는 MMDetection 프레임워크에서 중요한 역할을 하는 함수임…
- 모듈 등록: MMDetection에서 사용되는 다양한 모듈들(예: 백본 네트워크, 디텍션 헤드, 로스 함수 등)을 자동으로 등록함
- 동적 임포트: 필요한 모듈들을 동적으로 임포트하여 시스템에 로드함
- 설정 용이성: 사용자가 직접 모든 모듈을 수동으로 임포트하지 않아도 되게 해줌
- 확장성: 새로운 모듈을 추가했을 때 자동으로 인식되도록 함
이 함수를 호출함으로써, MMDetection의 모든 컴포넌트들이 시스템에 등록되어 설정 파일에서 쉽게 사용할 수 있게 됨.
일반적으로 MMDetection을 사용하는 스크립트의 시작 부분에서 이 함수를 호출하여 필요한 모든 모듈을 초기화함
setup_cache_size_limit_of_dynamo()
from mmdet.utils import setup_cache_size_limit_of_dynamo
setup_cache_size_limit_of_dynamo()
- PyTorch의 DynamoCache 크기를 제한하는 데 사용된다
- 메모리 사용을 최적화하기 위해 DynamoCache의 크기를 제한함
- 메모리 최적화가 필요한 경우에 사용된다
- PyTorch의 Dynamo 컴파일러 캐시에 특화된 기능
Runner.from_cfg(cfg) vs RUNNERS.build(cfg)
결과적으로는 두 방법 모두 동일한 Runner 인스턴스를 생선함
→ cfg(설정)이 같다면 생성된 내용도 같을 것!
메서드 출처
- Runner.from_cfg(cfg): Runner 클래스의 클래스 메서드
- RUNNERS.build(cfg): RUNNERS 레지스트리의 build 메서드
유연성
- Runner.from_cfg(cfg): 특정 Runner 클래스에 종속적
- RUNNERS.build(cfg): 더 유연하며, 설정에 따라 다양한 Runner 유형을 생성할 수 있음
사용 방식
- Runner.from_cfg(cfg): 직접 Runner 클래스를 통해 인스턴스를 생성
- RUNNERS.build(cfg): 레지스트리를 통해 간접적으로 Runner 인스턴스를 생성
확장성
- Runner.from_cfg(cfg): Runner 클래스 확장 시 새로운 메서드 구현이 필요할 수 있음
- RUNNERS.build(cfg): 새로운 Runner 유형을 쉽게 추가하고 레지스트리에 등록할 수 있음
설정 의존성
- Runner.from_cfg(cfg): 설정에 특정 Runner 클래스가 명시되어 있어야 함
- RUNNERS.build(cfg): 설정에 Runner 유형이 지정되어 있으면, 그에 따라 적절한 Runner를 생성
일반적인 사용
# Runner.from_cfg(cfg) 사용 from mmdet.engine import Runner runner = Runner.from_cfg(cfg) # RUNNERS.build(cfg) 사용 from mmdet.registry import RUNNERS runner = RUNNERS.build(cfg)
→ RUNNERS.build(cfg)는 최근 MMDetection 버전에서 더 선호되는 방식이라고 함. 이 방법은 모듈화와 확장성을 개선하며, 다양한 Runner 구현을 더 쉽게 지원할 수 있게 해준다
Detectron2
Detectron2의 주요 config 구조
- MODEL: 모델 구조 관련 설정
- SOLVER: 학습 관련 설정
- DATASETS: 데이터 관련 설정
- INPUT: 입력 처리 관련 설정
solver
: 모델 관련 config가 아닌 학습 관련 config
- 학습률, optimizer 등 학습 관련 설정을 포함
- MODEL이 아닌 SOLVER 카테고리에 속함
- 모델의 구조나 파라미터와는 직접적인 관련이 없음
- IMS_PER_BATCH : 배치당 이미지 수
- BASE_LR : Learning Rate
- MAX_ITER : 최대 학습 iteration 수
'Study - AI > Object Detection' 카테고리의 다른 글
Object Detection Wrap-Up (0) | 2025.04.05 |
---|---|
Advanced Object Detection (0) | 2025.04.02 |
EfficientNet & EfficientDet (0) | 2025.02.04 |
Neck (0) | 2025.01.27 |
Object Detection Overview (0) | 2025.01.17 |