Skip to content

RTMDet

RTMDet: An Empirical Study of Designing Real-Time Object Detectors

Abstract

  • YOLO 시리즈보다 real-time object detection 잘함
  • instance segmentation 과 같은 tasks에 쉽게 확장 가능
    • segmentation task는 detection task에 비해, output feature resolution이 너무 작으면 성능이 떨어집니다.
  • architecture
    • 아래의 구조 덕분에, backbone 과 neck에 호환 가능한 capacity를 가진 architecture를 제안(한 부분이 다른 부분의 성능이나 용량에 제한을 받지 않도록 고려된 구조)
  • soft labels 제안
    • (dynamic label assignment 문제에서,) matching cost를 계산할 때 soft labels를 도입함으로써, 정확도를 높임
  • 최고의 parameter-accuracy trade-off
  • real-time instance segmentation에서 SOTA!

Simple Example

MMDetection#Simple Example 항목 참조.

내부 테스트 결과

  • mmdetection으로 측정
  • NVIDIA GeForce RTX 2080 Ti
    • rtmdet-ins_x_8xb16-300e_coco 약 0.056초 (56 ms)
    • rtmdet-ins_s_8xb32-300e_coco 약 0.023초 (23 ms)
  • NVIDIA GeForce RTX 4090 실행 결과 X 모델
    • rtmdet-ins_x_8xb16-300e_coco_dongkuk_rolling_plate_cam1_2nd.py 모델 사용.
      • 3840x2160 (4K Original) - 0.0161s ~ 0.0176s (약 17ms)
      • 1660x1926 (ROI Crop) - 0.0159s ~ 0.0182s (약 18ms) - 그냥 이미지 크기에 영향 받지 않는다고 생각하면 될듯.

문제점: 계단 현상

  • Dongkuk Dangjin Rolling Mill#RTMDet Camber 카메라 결과 리뷰 항목 참조.
6-20250218_095924-layer20-DrawBounding-rtmdet.png

위 이미지를 보면 경계면이 계단진것처럼 (또는 SIN 그래프 처럼) 요동친다.

WARNING

아래 내용은 ChatGPT Deep Research 답변 내용이다.

RTMDet에서 계단 현상이 발생하는 원인: 업샘플링 구조의 영향

RTMDet(Real-Time Multi-Scale Detection)은 객체 탐지(Object Detection) 모델로서, 기본적으로 FCOS(Anchor-Free Detection) 아키텍처 기반입니다. 즉, 픽셀 단위로 예측하는 세그멘테이션 모델이 아니라, 박스 기반 탐지 후 마스크 생성 방식을 사용합니다. 이를 실시간 성능을 맞추기 위해 다중 해상도 피처 맵을 사용하며, 이 과정에서 업샘플링(Up-sampling)이 발생합니다.

업샘플링 과정과 계단 현상

일반적으로 객체 탐지 기반 세그멘테이션 모델(RTMDet 계열 포함)은 다음과 같은 업샘플링 단계를 거칩니다:

  1. 백본(Backbone) 다운샘플링
    • 기본적으로 ResNet, CSPNet 등의 백본을 사용하여 이미지를 1/16~1/32 크기로 축소.
    • 고해상도 정보 손실 발생.
  2. FPN/PAFPN을 통한 다중 해상도 피처 결합
    • 다중 크기의 피처맵을 결합해 정보를 보완.
    • 하지만 저해상도 피처를 업샘플링하여 고해상도를 복원해야 함.
  3. 업샘플링을 통한 마스크 생성:
    • FCN 계열의 Fully Convolutional 방식이 아니라, 기본적으로 ROI Align 또는 Deformable Convolution을 이용하여 마스크를 생성.
    • 마스크가 업샘플링(1/32 -> 1/16 -> 1/8 -> 원래 크기) 되는 과정에서 픽셀 간격이 보간법으로 메워지며 계단 현상 발생.
  4. Interpolation 방식의 영향:
    • 일반적으로 업샘플링 시 Bilinear Interpolation 또는 Deconvolution (Transpose Convolution)을 사용.
    • 하지만 Bilinear Interpolation은 픽셀 단위로 부드럽게 연결하지 못하고 경계를 흐리게 만들거나 계단 현상을 유발함.
    • Transpose Convolution(Deconv, Fractionally-strided Convolution)의 경우 Checkerboard Artifacts(체커보드 패턴, 블록 노이즈)가 발생할 수 있음.

RTMDet vs. 일반적인 Segmentation 모델 비교

세그멘테이션 전용 모델들은 고해상도를 유지하는 구조를 사용하여 계단 현상을 줄이지만, RTMDet은 객체 탐지 후 마스크를 생성하는 방식이라 고해상도 정보를 충분히 보존하지 못합니다.

모델

특징

업샘플링 방식

계단 현상 발생 가능성

RTMDet-Seg

객체 탐지 기반

Bilinear, Deconv

높음

BiSeNet V2

빠른 경량 세그멘테이션

Detail Branch 활용

낮음

PIDNet

경계 가지 추가

Boundary-aware Fusion

최소화됨

DDRNet

듀얼 해상도 구조

High-Resolution Path 유지

거의 없음

특히, PIDNet과 DDRNet은 업샘플링을 거의 사용하지 않거나 경계 가지를 따로 학습하여 계단 현상을 줄이는 방식이므로, RTMDet 대비 훨씬 부드러운 경계를 제공합니다.

RTMDet 계열에서 계단 현상을 줄이는 방법

하드웨어 업샘플링 보정
bicubic 업샘플링을 활용하여 후처리 보정 (PyTorch F.interpolate(mode='bicubic') 활용).
OpenCV의 cv2.GaussianBlur 등으로 업샘플링 후 노이즈 보정.
모델 자체 변경
Deformable Convolution 대신 High-Resolution Path를 유지하는 방식으로 모델 변경(DDRNet 구조 추가).
경계 기반 분리를 위해 Extra Boundary Branch 추가 (PIDNet 스타일).
모델 교체
실시간 처리를 유지하면서도 업샘플링 문제를 해결하려면, STDC, PIDNet, DDRNet과 같은 고해상도 구조를 유지하는 모델을 사용하는 것이 가장 효과적.

결론

RTMDet에서 계단 현상이 발생하는 주요 원인은 업샘플링 단계에서 해상도를 복원하는 과정 때문입니다. 일반적인 세그멘테이션 모델들은 업샘플링을 최소화하거나 별도 구조로 보완하지만, RTMDet은 객체 탐지 후 마스크를 보간하는 방식이라 이러한 문제가 발생합니다. PIDNet 또는 DDRNet을 활용하면 계단 현상을 줄이면서도 실시간 속도를 유지할 수 있습니다.

관련 문서

이후 관련 내용은 Segmentation Artifacts 로 정리하겠다.

Documentation

[2212.07784] RTMDet - An Empirical Study of Designing Real-Time Object Detectors
https://arxiv.org/abs/2212.07784

See also

Favorite site