늦깎이 공대생의 인공지능 연구실

Oriented R-CNN: 영상내에서 회전된 물체를 탐지하는 모델 본문

논문

Oriented R-CNN: 영상내에서 회전된 물체를 탐지하는 모델

Justin T. 2024. 5. 31. 19:13

 비전 AI 분야에서 물체 탐지(Object Detection) 모델의 결과는 보통 해당 물체의 위치를 직사각형 모양의 Bounding Box로 둘러싸 직접 표현합니다. 이러한 방법은 단지 이미지 내에 원하는 물체가 어느 위치에 있는지 파악하는 것이 목적이라면 더없이 충분합니다. 그러나 Bounding Box 내에는 찾고자 하는 물체 뿐 아니라 물체 주변의 배경(Background)정보도 포함되기 때문에 대각선으로 긴 물체가 탐지된 경우 실제 물체가 Bounding Box에서 차지하는 비중이 배경보다 픽셀 갯수가 적기 때문에 오히려 배경 정보가 원하는 물체의 정보보다 더 비중이 클 수 있습니다. 실제 우리가 접하는 사진들은 의도대로 찍히지 않는 경우가 많기 때문에 자연 상태의 이미지에서는 Bounding Box에 딱 들어맞는 물체는 직사각형의 물체 외에 없다고 봐야겠지요.
 
 이러한 문제를 해결하기 위한 방법 중 하나로 회전 물체 탐지(Rotated Object Detection)모델이 있습니다. 회전 물체 탐지 모델은 이미지 내에 물체를 찾아내고, 해당 물체가 향하는 방향에 맞추어 Bounding Box를 기울여 물체의 비중이 배경보다 많아지도록 합니다. 아래 사진은 공항 터미널을 인공위성으로 촬영한 장면으로, AI모델이 공항에 주기중인 항공기를 찾아내고, Bounding Box가 항공기가 향하는 방향대로 회전되어 있습니다. 아래의 사진과 같이 이미지 내의 물체 정보와 방향을 찾아내는 것이 회전 물체 탐지 모델의 목적이라 할 수 있습니다.
 

 
 딥러닝 모델 중 위와 같이 Bounding Box를 기울여 물체의 비중을 최대한으로 찾아내는 모델들이 있습니다. 이번 포스팅에서는 회전 물체 탐지 모델중 하나인 Oriented R-CNN을 소개해드리고자 합니다.
 

Introduction


 대부분의 회전 물체 탐지 모델의 개발은 RPN(Resoin Prolosal Network) 기반의 Fast/Faster R-CNN에서부터 시작됩니다. Fast/Faster R-CNN은 Regional Proposal(위치 제안)과 Classification(분류)가 별개의 단계로 분리되어 순차적으로 이루어지는 Two-Stage 모델이라는 특징이 있습니다. 이는 YOLO 계열 모델의 특징인 Regional Proposal과 Classification이 동시에 이루어지는 Single-Stage 모델과 달리 Two-Stage 모델은 연산 수행을 두 번 수행하여 Single-Stage 모델에 비해 연산속도가 느리지만, 각 단계별로 성능을 고도화시키는 것이 용이하여 Single-Stage 모델에 비해 좋은 성능을 나타내는 편입니다.

 Two-Stage 기반의 회전 물체 탐지 모델에서는 첫 번째 단계인 Regoinal Proposal에서 회전된 방향을 제안하며, 다음 단계에서는 제안된 영역들을 구체화 한 다음 해당 영역에 해당되는 Class를 찾아냅니다. 이러한 회전 탐지 모델의 가장 큰 걸림돌은 Regional Proposal 단계에서 회전 방향까지 추가로 연산하는데 많은 시간이 소요된다는 점입니다. 

Rotated RPN

 저자들은 Oriented R-CNN 공개 이전에 공개되었던 회전 물체 탐지 모델들의 특징들을 설명합니다. 그 중 하나인 Rotated RPN 모델은 총 54개의 Anchor들(3 scales ⨉ 3 ratios ⨉  6 angles)을 도입해서 물체의 방향을 추정하는 시도를 하였습니다. Rotated RPN은 이를 기반으로 회전된 물체를 감지하는데 상당히 좋은 성능을 나타내었으나, 54개의 Anchor들의 연산 수행에 상당히 많은 시간이 소요되었다고 합니다.

RoI Transformer


이러한 문제점을 해결하기 위해 RoI Transformer 모델이 공개되었습니다. 이 모델은 Mask R-CNN에서 도입되었던 RoI Alignment 와 RPN, Regression을 도입한 복잡한 프로세스를 통해 수평 방향의 3개 Anchor로부터 물체의 방향 제안을 시도합니다. RoI Transformer 전략은 회전 Anchor수를 줄여 계산량을 줄이려 시도하였으나 여전히 상당한 계산비용이 소모할 수 밖에 없는 구조입니다. 

 

 저자들은 위에서 설명하였던 모델들의 단점에 대해 짚어본 결과, Region Proposal 기반 방향 탐지의 효율성이 떨어지는 이유는 Proposal 생성 단계에서 많은 연상량이 발생하는 것을 원인으로 파악하였습니다. 즉, 방향 정보가 포함된 RPN을 효율적으로 계산하는 방법을 찾으면 해결되는 것으로 판단하였고, 저자는 위의 그림과 같이 경쟁력 있는 효율성은 유지하면서 검출 정확도를 향상 시킨 간단한 Two-Stage 회전 물체 탐지 프레임워크인 Oriented R-CNN을 제안하였습니다. 저자들은 Oriented R-CNN을 도입하여 기존 모델에 비해 파라미터 갯수를 Rotated RPN에 비해 1/3000, RoI Transformer에 비해 1/15로 줄였다고 합니다.

 

Oriented R-CNN

 저자들이 소개하는 Oriented R-CNN은 1단계에 Oriented RPN을, 2단계에 Oriented R-CNN Head를 도입하였습니다. 1단계인 Oriented RPN에서는 적은 연산량으로 고수준의 방향 제안을 하며 2단계인 Oriented R-CNN Head에서는 1단계에서의 결과로 Classification 및 Regression이 수행됩니다. 각 단계는 아래 그림과 같이 구성되어 있습니다.

 

 

FPN backbone

 Oriented RPN은 FPN(Feature Pyramid Networks)로부터 5개의 특성값{ \(P_2\), \(P_3\), \(P_4\), \(P_5\), \(P_6\), }을 얻습니다. 이 때 P값은 이미지가 FPN에 입력되었을 때 아래의 그림과 같이 각 Level로부터 얻은 값이며, 두 번째 Level로부터 특성값을 받습니다. 첫 번째 Level(conv1)의 경우 메모리 사용량이 상당하여 제외합니다.

그림에서 P6는 생략되어 있음. 출저: jonathan-hui.medium.com

 

 혹시 Feature Pyramid Networks에 대해 좀 더 자세히 알고 싶으신 분은 아래의 포스팅을 참조해주시기 바랍니다.

https://herbwood.tistory.com/18

 

FPN 논문(Feature Pyramid Networks for Object Detection) 리뷰

이번 포스팅에서는 FPN 논문(Feature Pyramid Networks for Object Detection)을 리뷰해보도록 하겠습니다. 이미지 내 존재하는 다양한 크기의 객체를 인식하는 것은 Object dection task의 핵심적인 문제입니다. 모

herbwood.tistory.com

 

Oriented RPN

 위에서 설명드린 FPN 과정을 통해 얻은 특성값 { \(P_2\), \(P_3\), \(P_4\), \(P_5\), \(P_6\), }을 Oriented RPN에 적용해보도록 합니다.

 먼저 비율이 각각 {1:2, 1:1, 2:1}로 구성된 3개의 Anchor를 모든 5개의 Level에 적용합니다. 각 Anchor들은 특성값의 각 단계 { \(P_2\), \(P_3\), \(P_4\), \(P_5\), \(P_6\), }마다 { \(32^2\), \(64^2\), \(128^2\), \(256^2\), \(512^2\), } 크기의 픽셀 영역을 갖고 있습니다. 각 Ancher \(a\)는 4차원의 벡터 \(a = (a_x, a_y, a_w, a_h)\)로 구성되어 있으며, (\(a_x, a_y)\)는 Anchor의 정중앙 좌표값을, \(a_w\)와 \(a_h\)는 각각 Anchor의 width와 height값을 나타냅니다.

출저: jonathan-hui.medium.com

 그리고 RPN에서 각 Level의 특성값마다 3x3 Convolutional layer와 2개의 1x1 Convolutional layer를 사용하여 감지된 물체(Objectness)에 대한 Classification을 수행하고, Bounding Box 위치에 대한 Regression을 수행하는데 그 중 하나인 Regression에서는 Anchor를 기준으로 제안 offset값 \({\delta}=(\delta_x,\delta_y,\delta_w,\delta_h,\delta_a,\delta_b)\)을 출력합니다. 각 Feature map에 대한 위치를 나타내기 위해 A개의 Proposal(A는 Anchor의 갯수로서, 여기서는 A=3)생성합니다. 그러므로 Regresson에서는 총 6A개의 출력값이 있습니다. 

  Regression 출력값이 Decoding을 거치면서 우리는 Oriented proposal(방향 제안값)을 얻을 수 있습니다. Decoding 단계는 아래와 같이 연산이 진행됩니다.

$$\left\{ 
\begin{array}{l}
\Delta \alpha=\delta_a\cdot w, \qquad \Delta\beta=\delta_\beta\cdot h \\
w=a_w\cdot e^{\delta_w},\qquad h=a_h\cdot e^{\delta_h} \\
x=\delta_x\cdot a_w+a_x,\qquad y=\delta_y\cdot a_h+a_y
\end{array} 
\right.$$

 여기서 \((\x,\y)\)는 제안된 Proposal의 중심값이고, \(w\)와 \(h\)는 제안된 직사각형 박스의 Width와 Height입니다. \(\Delta\alpha\)와 \(\Delta\beta\)는 제안된 직사각형 박스의 윗변과 오른쪽변의 정중앙으로부터의 Offset을 나타냅니다. 정리하자면, 우리는 이를 통해 물체의 방향이 제안된 Oriented proposal값 \((x,y,w,h,\Delta\alpha,\Delta\beta)\)을 얻었습니다.

 

 Regression 이외에 또다른 Convolutional layer는 위에서 언급한 각각의 Oriented proposal마다 해당 물체가 해당되는 클래스의 확률을 나타내는 objectness score를 추정합니다. Oriented RPN은 사실 자연스럽고 직관적인 아이디어이지만, 그 핵심은 물체의 방향성을 표현하는 데 있습니다. 이러한 상황에서 저자들은 중간점 Offset 표현이라는 새롭고 간단한 방향성 객체 표현 체계를 설계했습니다.

중간점 Offset(Midpoint Offset)

 저자들은 중간점 Offset이라는 물체의 방향성을 나타내는 새로운 표현 방식을 제안합니다. 위의 그림에서 검은 점들이 수평 직사각형의 중간점을 나타내며, 녹색 직사각형은 방향성 Bounding Box인 \(O\)를 나타내며 오랜지색 점으로 표시된 것이 녹색 직사각형 \(O\)의 꼭지점입니다.

 Oriented RPN에서 설명드렸던 수식을 통해 Bounding Box \(O\)는 총 6개의 파라미터를 갖게 됩니다. 이 6개의 파라미터를 가지고 4개의 꼭지점으로 구성된 집합 \(v=(v1,v2,v3,v4)\)를 구할 수 있습니다. 꼭지점 V는 아래의 수식으로 계산할 수 있습니다.

$$\left\{ 
\begin{array}{l}
v1=(x,y-\frac{h}{2})+(\Delta\alpha,0) \\
v2=(x+\frac{w}{2},y)+(0,\Delta\beta) \\
v3=(x,y+\frac{h}{2})+(-\Delta\alpha,0) \\
v4=(x-\frac{w}{2},y)+(0,-\Delta\beta)
\end{array} 
\right.$$

손실함수

 Oriented RPN을 학습시키기 위해, 다음과 같이 Positive와 Negative을 정의합니다. 먼저, 이진 Label로 \(p^*\in \left\{0,1 \right\}\)를 각 Anchor에 적용합니다. 여기서 0과 1은 Anchor가 Positive인지 Negative인지 구분하는 역할을 수행합니다. 구체적으로 설명드리자면 다음과 같습니다.

Positive 조건:
1) 하나의 Anchor가 어떤 Ground Truth든 상관 없이  IoU값이 0.7 이상일것
2) 하나의 Anchor가 하나의 Ground Truth와 IoU값이 0.3 이상일것
Negative 조건:
1) 하나의 Anchor가 Ground Truth와 IoU값이 0.3 이하일것

 위에서 설명드린 Positive와 Negative 그 어떤 것에도 속하지 않는 Sample의 경우 학습 과정에서 해당 데이터는 제외시킵니다. 

 지금까지 설명드린 조건으로 손실 함수 \(L_1\) 수식을 다음과 같이 나타낼 수 있습니다.

$$L_1=\frac{1}{N}\sum_{i=1}^{N}F_{cls}(p^i,p_i^*)+\frac{1}{N}p_i^*\sum_{i=1}^{N}F_{reg}(\delta_i,t_i^*)$$

 여기서 \(i\)는 Anchor의 index를 나타내며, \(N\)은 Mini-batch 내 전체 샘플의 갯수로서 기본값은 256입니다. \(p_i^*\)은 i번째 Anchor의 Ground Truth의 Label값입니다. \(p_i\)는 Oriented RPN의 Classification(Objectness)의 출력값으로, Anchor가 물체를 예측한 확률입니다. \(t_i^*\)는 i번째 Anchor에 대한 Ground Truth의 Supervision offset으로, Oriented RPN의 Regression에서 파라미터화된 6차원 벡터 \(t_i^*=( t_x^* , t_y^* , t_w^* , t_h^* , t_{\alpha}^* , t_{\beta}^* ) \)로, i번째 Anchor에 대한 예측된 Proposal offset을 나타냅니다. \(F_{cls}\)는 크로스 엔트로피 손실값입니다. \(F_{reg}\)는 Smooth L1  손실값입니다. 

(a): Anchor (b): Ground-truth box (c): Predicted box

 

위의 그림에서 Box regression은 아래의 Affine transoform 수식으로 구합니다.

 

$$\begin{cases}
\delta_{\alpha}=\Delta\alpha/w, & \delta_\beta=\Delta\beta/h \\
\delta_{w}=log(w/w_a), & \delta_h=log(h/h_a) \\
\delta_{x}=(x-x_a)/w_a, & \delta_y=(y-y_a)/h_a \\
t_{\alpha}^*=\Delta\alpha_g/w_g, & t_\beta^*=\Delta\beta_g/h_g \\
t_{w}^*=log(w_g/w_a), & t_h^*=log(h_g/h_a) \\
t_x^*=(x_g-x_a)/w_a, & t_y^*=(x_g-x_a)/h_a
\end{cases}$$

 

 여기서 \((x_g,y_g)\), \((w_g, h_g)\)는 직사각형의 중간좌표, width, height를 나타냅니다. \(\Delta\alpha_g\)와 \(\Delta\beta_g\)는 윗쪽 변과 오른쪽 변의 정중앙 좌표로부터의 거리를 나타냅니다.

 

Oriented R-CNN Head

 Oriented R-CNN Head는 특성 맵 \({P_2, P_3,P_4,P_5}\)과 방향 제안 Oriented Proposal을 입력으로 받습니다. 각각의 Oriented Proposal에 대해, 저자들은 Rotated RoIAlign(회전된 RoI 정렬, Rotated RoI alignment)를 사용하여 해당 특성 맵에서 고정된 크기의 특성 벡터를 추출합니다. 각각의 특성 벡터는 두개의 FC Layer에 입력됩니다. 하나의 FC Layer는 K+1개(K개의 Object와 1개의 배경) 클래스의 확률값을 출력하며, 또 하나의 FC Layer는 K개의 Obejct 클래스 각각의 위치값을 출력합니다.

Rotated RoIAlign

 Rotated RoIAlign은 각 방향 제안에서 회전 변수에 대한 특성을 추출하는 작업입니다. 위의 그림에서 Oriented RPN으로부터 생성된 회전 제안 Oriented Proposal은 대개 평행사변형 모양(파란색 박스 모양)으로 나타내는데, 이는 파라미터 \(v=(v1,v2,v3,v4)\)로 나타냅니다. 이때 \(v1,v2,v3,v4\)는 평행사변형의 꼭지점 좌표입니다. 계산을 쉽게 하기 위해 각 평행사변형을 방향이 있는 직사각형으로 조정해야 합니다. 구체적으로, 평행사변형의 짧은 대각선(\(v2\)에서 \(v4\)까지의 선)을 긴 대각선과 같은 길이가 되도록 연장하여 만드는 것입니다. 위와 같이 간단한 연산을 수행하여 기울어진 직사각형 \((x,y,w,h,\theta)\) (빨간색 박스 모양)을 만듭니다. 여기서 \(\theta \in [-\pi/2,\pi/2]\)은 수평축과 직사각형의 긴 변 사이의 각도를 의미합니다.

 다음으로, 기울어진 직사각형 \((x,y,w,h,\theta)\)을 stride값이 \(s\)인 특성 맵 F에 투영하여 아래의 수식을 통해 Rotated RoI값 \((x_r,y_r,w_r,h_r,\theta)\) 을 얻습니다.

$$\begin{cases}w_r=w/s, & h_r=h/s \\x_r=\lfloor x/s\rfloor, & y_r=\lfloor y/s\rfloor\end{cases}$$

 그 다음, 고정된 사이즈인 \(m \times m \times C\) 크기의 특성 맵 F'를 얻기 위해 각 Rotated RoI를 \(m\times m\) 크기의 Grid로 나누어줍니다(\(m\)값은 7로 기본 설정됨). 인덱스값 \((i,j)\) 내에 c번째 채널 \(0\leq i,j \leq m-1, 1\leq c <C\) 각각의 grid에 대해 각 값들은 아래의 같은 식으로 구할 수 있습니다.

$$F'_c(i,j)=\sum_{(x,y)\in area(i,j)}F_c(R(x,y,\theta))/n$$

 여기서 \(F_c\)는 c번째 채널의 특성값을, n은 각 Grid 내에서 지정된 위치에 있는 Sample의 개수를, \(area(i,j)\)는 Grid에 포함된 좌표 집합으로 인덱스값\( (i, j)\)를 갖습니다. R(·)은 회전변환을 나타냅니다.

구현 세부 정보

Oriented R-CNN은 Oriented RPN과 Oriented R-CNN Head를 공동으로 최적화하여 end-to-end 방식으로 학습됩니다. 추론 과정에서 Oriented RPN에 의해 생성된 방향성 제안은 일반적으로 중복성이 높습니다. 중복을 줄이기 위해 첫 번째 단계에서는 FPN 레벨당 2000개의 제안을 유지하고, 그 다음 단계에서는 NMS(Non-Maximum Suppression)를 사용합니다.  추론 속도를 고려하여 IoU 임계값이 0.8인 수평 NMS를 채택합니다. 모든 레벨의 나머지 제안을 병합하고 분류 점수를 기준으로 상위 1000개의 제안을 2단계의 입력으로 선택합니다. 두 번째 단계에서는 각 물체의 클래스 확률이 0.05보다 높은 예측된 방향성 바운딩 박스에 대해 각 물체 클래스에 대한 Ploy NMS를 수행합니다. Ploy NMS IoU 임계값은 0.1입니다.

Experiment

Oriented R-CNN을 평가하기 위해 저자들은 DOTA와 HRSC2016 데이터셋을 사용하였습니다. 실험 결과에 대해 자세히 확인하고 싶으신 분께서는 참고논문을 확인해주시기 바랍니다.

 

Evaluation of Oriented RPN

리콜(recall) 측면에서 Oriented RPN의 성능을 평가합니다. Oriented RPN의 결과는 DOTA validation Dataset을 기준으로 ResNet-50-FPN이 백본으로 사용됩니다. 프로세스를 단순화하기 위해 원본 이미지에서 잘라낸 패치를 병합하지 않고 이를 기반으로 리콜을 계산합니다. Groundtruth 박스를 사용한 IoU 임계값은 0.5로 설정됩니다. 각 이미지 패치에서 각각 상위 300개, 상위 1000개, 상위 2000개의 제안을 선택하여 R300, R1000, R2000으로 표시된 리콜 값을 산출합니다. 2000개의 제안을 사용할 때 Oriented RPN은 92.80%의 리콜을 달성할 수 있습니다. 제안수가 2000개에서 1000개로 변경될 때 Recall은 0.6%로 매우 약간 떨어지지만, 300개의 제안을 사용할 때는 급격히 떨어집니다. 따라서 추론 속도와 탐지 정확도의 균형을 맞추기 위해 두 Dataset 모두에 대해 테스트 시점에 Oriented R-CNN HEAD의 입력으로 1000개의 제안을 선택했습니다.

Conclusion

이 논문에서는 이미지에서 임의의 지향성 객체를 감지하기 위한 실용적인 2단계 검출기, 즉 oriented R-CNN을 제안합니다. 두 가지 까다로운 방향성 객체 검출 벤치마크에 대해 광범위한 실험을 수행했습니다. 실험 결과, 이 방법은 1단계 방향 검출기와 비교해 비슷한 효율성을 유지하면서 현재의 고급 2단계 검출기와 경쟁할 수 있는 정확도를 보였습니다.

 
참고논문: https://arxiv.org/abs/2108.05699

 

Oriented R-CNN for Object Detection

Current state-of-the-art two-stage detectors generate oriented proposals through time-consuming schemes. This diminishes the detectors' speed, thereby becoming the computational bottleneck in advanced oriented object detection systems. This work proposes a

arxiv.org

 

반응형