EfficientNet과 마찬가지로 EfficientDet은 모델 사이즈를 최소화하고 성능을 최대화하는 효율성에 초점을 맞춘 object detection 모델이다. 이 논문은 EfficientNetbackbone 네트워크로 사용하였고 bi-directional feature pyramid network (BiFPN)을 이용하여 특징을 쉽고 빠르게 융합하는 방식을 제안하였다. 기존의 object detectorregion-of-interest proposal 단계를 가지는지 여부에 따라 two-stage 방식과 one-stage 방식으로 구분되었다. Two-stage detector가 더 정확하고 유연한 반면, one-stage detector는 사전에 정의된 anchor를 이용하여 간단하며 효과적인 방식으로 detection을 수행한다. Object detection에서 어려운 점 중에 하나는 상황에 따라 object의 크기가 달라지는 것을 고려해야 한다는 점이다. 따라서 멀티-스케일링 기법이 중요하며, feature pyramid network (FPN)을 시작으로 multi-scale feature를 합치는 방법이 연구되고 있다. M2det은 특징 합성을 위한 U-shape 모듈을 사용하였고, G-FRNet은 특징 정보를 컨트롤하기 위한 gate units을 도입하였다. 더 나은 성능을 얻기 위해, 베이스라인 detector의 스케일을 키우는 방식을 많이 사용하며 backbone 네트워크로 ResNet, ResNeXt, AmoebaNet을 사용하기도 한다.

아래의 그림은 EfficientDet의 전체적인 구조로, 전체적으로 one-stage detector의 패러다임을 따르고 있다. Backbone 네트워크인 EfficientNetlevel 3-7 features {P3, P4,P5,P6,P7} 를 추출하여 top-downbottom-up 양방향으로 특징 융합을 수행한다. 융합된 특징은 class/box 예측 네트워크로 전달되어 객체의 클래스와 바운딩 박스를 예측한다.

Figure 5. EfficientDet architecture

 

정확도와 효율성의 trade off를 최적화하는 baseline 모델을 선택하는 것은 매우 중요하다. 기존 연구는 ResNeXtAmoebaNet를 기반으로 큰 이미지를 대상으로 했다. 이러한 방법은 하나의 스케일링 차원에만 집중하기 때문에 효율적이지 못하다. 이러한 문제를 해결하기 위해. EfficientDetEfficientNet과 마찬가지로 효율적인 compound scaling 방식을 사용하였다. BiFPN을 구성할 때, 채널의 수는 지수적으로 증가시키고 레이어의 수는 선형적으로 증가시켰다.

Wbifpn=64∙1.35,  Dbifpn=2+

Feature level3-7 layerBiFPN이 사용되므로, 입력 이미지의 해상도를 27 로 나눠야 하며 해상도를 선형적으로 증가시키기위해 다음과 같음 방식으로 해상도를 결정하였다.

Rinput=512+∅∙128

Object locationclass를 예측하는 네트워크도 compound coefficient를 사용한다. 그 중 너비(width)BiFPN과 동일하고 (Wpred=Wbifpn ), 레이어 수는 다음과 같은 방식으로 결정한다.

Dbox=Dclass=3+∅∙128

위의 식에서 compound coefficient 에 따라 EfficientDet-D0(∅=0 ) 부터 D6(∅=6) 까지 정리한 결과는 다음의 표와 같다.

Table 2. Scaling configs for EfficientDet D0-D7

 

아래의 표에서 #Params와 #FLOPS는 모델 파라미터와 연산의 수를 나타낸다. LAT는 배치 크기가 1일때의 의 추론 지연 시간을 나타내고, AA는 autoaugmentation 을 의미한다. EfficientDet은 mAP 성능이 유사한 object detection 모델과 비교하여 파라미터 수와 필요 연산량이 훨씬 적은 것을 확인할 수 있다. 따라서, 추론 속도도 동일 성능의 다른 모델에 비해 2배 가량 빠르다.

Table 3. EfficientDet performance on COCO

 

결론적으로, EfficientDet은 복합 스케일링 (compound scaling) 기법을 이용하여 효율적으로 성능을 향상시키고 #Params#FLOPS를 줄였다. Object detection 모델을 이용한 좌표 보정 알고리즘에서도 EfficientDet을 사용하여 부품의 위치와 레이블을 추론함으로써, 기존 detector 보다 정확도와 처리속도를 향상시킬 수 있었다.

Figure 5. Model FLOPS vs. COCO Accuracy

[참조] TAN, Mingxing; PANG, Ruoming; LE, Quoc V, “Efficientdet: Scalable and efficient object detection.” arXiv preprint arXiv:1911.09070, 2019.

EfficientNet 논문은 ConvNets의 스케일을 높이는 기존 접근법을 다시 한번 짚고 넘어가자는 의미의 ‘Rethinking’을 논문의 타이틀로 사용하였다. 이 논문은 기존 ConvNets들이 성능을 향상시키기 위해 사용한 방법들을 구분하여 소개하고, 성능을 향상시키면서 모델 연산량을 최대화하는 효율적인 ConvNets을 제안한다.

2012년 AlexNet (Krizhevsky et al., 2012)을 시작으로 ImageNet 대회에서 정확도는 큰 폭으로 향상되었다. GoogleNet (Szegedy et al., 2015)는 6.8M의 파라미터 수를 가진 모델로 74.8%의 top-1 accuracy를 달성했으며, SENet (Hu et al., 2018)은 145M의 파라미터 수를 가진 모델로 82.7%의 top-1 accuracy를 달성했다. GPipe (Huang et al., 2019)는 557M의 파라미터 수를 가진 모델로 84.3%의 top-1 accuracy를 달성했다. 일반적으로 대부분의 어플리케이션에서는 정확도가 가장 중요하지만, 메모리의 한계도 존재하기 때문에 앞으로 높은 성능을 얻기 위해서는 효율성도 반드시 고려해야한다.

효율을 향상시킨 ConvNets은 SqueezeNet(Iandola et al., 2016; Gholami et al., 2018), MobileNets (Howard et al., 2017; Sandler et al., 2018), ShuffleNets (Zhang et al., 2018; Ma et al., 2018)이 있다. 효율적인 네트워크 구조에 대한 연구로 네트워크의 너비, 깊이, 커널 사이즈의 튜닝을 통한 효율성을 향상시킨 모델이 등장하였고, ResNet (He et al., 2016)은 네트워크의 깊이(#layer)를 조절한 ResNet-18, ResNet-200를 발표하였다. 반면, 너비(#channels)를 조절하여 스케일링한 WideResNet (Zagoruyko & Komodakis, 2016)MobileNets (Howard et al., 2017)은 더 큰 사이즈의 이미지를 활용하여 성능을 향상시킨 모델이다.

Figure 1. Model Scaling

 

EfficientNet은 이러한 모델 스케일링 기법을 중점적으로 다뤄 새로운 스케일링 기법을 제안한다. 우선, 깊이(depth)를 증가시키는 방법은 많은 ConvNets에서 사용되었다. 레이어 수가 많아질수록 ConvNet은 더 다양하고 복잡한 특징을 잡아낼 수 있고, 새로운 이미지에 대한 일반화 성능도 좋아진다. 하지만 레이어 수가 많아질수록 기울기 소실 등의 문제로 학습이 어려워지는 문제가 발생한다. 너비(width)를 스케일하는 방법은 작은 사이즈의 모델에 주로 사용되며, 너비의 확장은 더욱 미세한 특징을 잡아낼 수 있고 네트워크 학습을 쉽게 만든다. 하지만, 과도한 스케일링은 고수준의 특징을 잡아내기 어렵게 하는 경향이 있다. 해상도(resolution)을 증가시키는 방법은 더욱 미세한 패턴을 잡아낼 수 있다. ConvNet의 입력 크기는 224 x 224를 시작으로 299, 331, 480 과 같이 점점 커졌고 더 높은 정확도를 보였다. Object detection ConvNets에서는 600 x 600이 가장 많이 사용된다. 해상도도 마찬가지로 해상도가 높아짐에 따라 성능 향상 폭은 감소한다.

아래의 그림은 베이스라인 모델을 각기 다른 Width(w), Depth(d), Resolution(r)를 바꿔가며 실험한 결과이다. 결과적으로 더 큰 깊이와 너비, 해상도를 가질수록 높은 성능을 달성한다. 하지만, 정확도가 80%에 도달하게 되면, FLOPS 증가에 비해 정확도 향상이 어려워진다.

Figure 2. Scaling Up a Baseline Model with Different Network Width (w), Depth (d), and Resolution (r) Coefficients

 

일반적으로 해상도가 높아질수록 네트워크의 레이어도 많아져야 하고, 너비도 증가해야한다. 이처럼, 너비, 깊이, 해상도와 같은 스케일링 차원들은 서로 독립적이지 않으며, 균형을 잘 맞춰야 한다. 아래의 실험은 스케일링을 복합적으로 실험한 결과이다.

 

Figure 3. Scaling Network Width for Different Baseline Networks

 

우선, 너비는 고정한 채로 깊이와 해상도를 변경한 경우 정확도가 빠르게 포화되는 현상을 보였다. 깊이를 증가시키고 (d=2.0) 해상도를 높인 (r=1.3) 경우, 동일한 FLOPS에서 더 높은 성능을 달성했다.

EfficientNet 논문에서는 새로운 복합 스케일링 기법을 제시하기 위해 compound coefficient  를 이용하여 스케일링 차원을 정의하였다.

α, β, γ  grid search를 통해 결정한 상수이고, compound coefficient 사용 가능한 리소스에따라 사용자가 결정하는 계수이다. 일반적인 컨볼루션 연산의 FLOPSd,w2, r2 에 비례한다. 예를 들어, 깊이를 증가시켜 레이어 수를 두 배로 하면, FLOPS도 두 배가 된다. 반면, 네트워크의 너비나 해상도를 두 배 증가시키면, FLOPS는 네 배 증가한다. 일반적으로 ConvNets의 연산 비용은 컨볼루션 연산이 대부분을 차지하므로 FLOPS(α∙β2γ2)^  로 추정할 수 있다. 위 수식에서는 α∙β2γ2≈2  라는 제한조건을 설정함으로써, FLOPS2 로 추정할 수 있도록 했다.

 

Table 1. EfficientNet-B0 baseline network

위의 표는 EfficientNet-B0의 구조이며, 주요 blockmobile inverted bottleneck MBConv (Sandler et al., 2018; Tan et al., 2019)로 구성되어 있고 squeeze-and-excitation optimization (Hu et al., 2018)을 적용하였다. 실험은 이 베이스라인 모델로 시작하여 복합 스케일링 기법을 다음과 같이 두 단계로 적용하였다.

  • STEP 1: 1로 고정하고 제한 조건을 만족하는 범위 내에서 grid searchα, β, γ 를 구한다. EfficientNEt-B0의 경우 α=1.2,  β=1.1,  γ=1.15  이 최적의 값이었다.

  • STEP 2: α, β, γ 를 상수로 고정하고 를 증가시켜가며 네트워크의 스케일을 확장하고, 그 네트워크는 EfficientNet-B1부터 B7이 된다.

사이즈가 큰 모델도 마찬가지로 파라미터 최적화를 통해 스케일링 차원을 구할 수 있지만, 모델의 크기가 클수록 탐색 비용이 매우 크다. 반면, 제안된 기법은 작은 네트워크에서 α, β, γ 가 균형을 이루는 적절한 값을 찾고 compound coefficient를 증가시킴으로써 효율적인 스케일링 차원(깊이, 너비, 해상도 값) 탐색을 가능하게 한다.

결과적으로 본 논문에서 제안한 기법을 사용하여 EfficientNet-B1부터 B7을 학습시켜 ImageNet 결과를 보면, 다른 ConvNets과 비교하여 파라미터 수와 FLOPS이 훨씬 작으며 높은 성능을 보인다. 특히, EfficientNet-B784.4% top1 / 97.1%top-5 accuracy를 보였으며, 66M의 파라미터 수와 37B FLOPS, GPipie (Huang et at., 2018)와 비교하여 더 높은 정확도에 파라미터 수는 8.4 배 적다.

Figure 4. Model Size vs. ImageNet Accuracy

 

[참조] TAN, Mingxing; LE, Quoc V, “Efficientnet: Rethinking model scaling for convolutional neural networks.” arXiv preprint arXiv:1905.11946, 2019.

그래프 구조를 가지는 데이터의 분석에 Graph Neural Network(GNN)이 언급되면서 관심을 받고 있다. 사실 그래프 이론자체가 쉽게 와닿는 내용이 아니고, 이해하기 위해 여러 자료도 봤지만 한 번에 이해를 하지 못했다. 그 중 Medium 의 블로그를 참고하여 이해한 내용을 바탕으로 번역과 요약을 하였다. 우선, 그래프 구조의 데이터가 무엇인지, 왜 사용하는 지 알아보려고 한다.

 

그래프 이론

그래프란 노드(아래 그림의 원)들이 다양한 연결관계를 갖고 있는 자료 구조이다. 아래 그림의 원으로 표시된 노드(nodes)와 선 엣지(edges)로 이루어져 있다. 노드를 vertices라고도 한다. 그래프는 수학적으로 개체 간의 관계를 나타내는데 쓰이며 G = (V, E)와 같이 정의된다. V는 노드의 집합, E는 엣지이다.

source: Ouyang, B., Jiang, L., & Teng, Z. (2016). A noise-filtering method for link prediction in complex networks.

그래프를 왼쪽 그림과 같이 네트워크로 표현할 수도 있지만, 인접행렬(Adjacency matrix)로도 표현가능하다. 그래프가 N개의 노드를 가지고 있다면, (N x N)의 행렬로 나타낼 수 있다. 행렬의 원소는 두 노드 간 간선(엣지)이 있으면 1 없으면 0이다. 대각 행렬을 기준으로 대칭이라는 특징이 있다. 

feature matrix는 왜 만들까? 빨간색으로 표시한 2, 3번 노드는 자신을 제외한 모든 노드와 연결되어있다. 노란색으로 표시된 4, 5번 노드는 1번을 제외한 모든 노드와 연결되어 있다. 자기 자신을 제외한 다른 노드들 간의 관계를 보면 빨간색과 노란색은 같은 집합으로 묶을 수 있다. 하지만, 인접행렬로 나타내면 두 집합의 원소가 다르다. 빨간색은 [1 0 1 1 1], [1 1 0 1 1]이다. 여기에 단위 행렬 I를 더해주면 2번 노드의 특징 행렬(feature matrix)는 [1 1 1 1 1]이로 3번 노드도 [1 1 1 1 1]로 같아진다.

정리하자면, 2번과 3번은 자기 자신을 제외한 모든 노드와 연결되어 있다는 점에서 같은데 이를 나타내기 위한 방법이 feature matrix를 만드는 것이다.   

 

그래프 구조는 왜 분석하기가 어려울까?

우선, 그래프는 유클리디안 공간에 있다고 말할 수 없다. 즉, 우리가 사용하는 좌표계로 나타낼 수 없다는 말과 같다. 이런 특징 때문에 그래프 구조를 해석하는 것은 이미지나 시계열 데이터와 같은 데이터를 해석하는 것보다 훨씬 어렵다. 

분자 구조나 토끼의 형태를 2차원과 3차원으로 나타낼 수는 있지만 기존의 좌표계로 나타내기는 매우 어렵다.

두 번째로, 그래프는 고정된 형태를 가지고 있지 않을 수 있다. Social 그래프의 예시를 보면 관계만 동일하다면 네트워크 구조로 표현하는 방법은 무수히 많다. 각 노드에 번호가 있다면 인접행렬은 하나겠지만, 아니라면 회전, 대칭에 의해 다른 인접행렬이 나올 수 있다. 만약, 인접행렬이 같으면 두 그래프를 같다고 말할 수 있을까? 아마 아닐 것이다. 분자의 경우 위 예시처럼 분자 구조를 표현한다고 해도 실제 3차원 공간 상에서는 1가지 이상의 경우가 나올 수 있다. 관계만 봐도 안되고 구조만 봐도 안되고.. 어려운 문제다..

 

왜 그래프를 사용할까?

1. 그래프는 관계나 상호관계와 같은 추상적인 개념을 구조화 하여 다루기에 좋다. 또한, 시각적으로 나타낼 수도 있다. 

2. 복잡한 관계나 구조를 단순한 형태로 바꿨을 때 쉽게 문제가 해결되기도한다.

3. 사회적 관계 모델이나 사기 패턴, 에너지 소비 패턴 등 그래프 이론에 기반한 연구가 이미 되어있다. 

 

전통적인 그래프 분석(탐색) 기법

1. 탐색 알고리즘 : BFS, DFS 등

2. 최단 경로 알고리즘 : 다익스트라 알고리즘, 최근접 이웃 등

3. spanning-tree 알고리즘: Prim's algorithm 등

4. 클러스터링 기법: k-means 등

 

Graph Neural Network(GNN)

GNN은 그래프 형태의 데이터에 바로 적용 가능한 신경망이다. GNN은 노드 레벨, 엣지 레벨, 그래프 레벨의 예측이 가능하다. 대표적으로 아래와 같은 neural network 들이 있다.

1. Recurrent Graph Neural Network

2. Spatial Convolutional Network

3. Spectral Convolutional Network

 

이어서 위의 neural network 들에 대해 알아보겠다.

 

 

(참고: https://medium.com/datadriveninvestor/an-introduction-to-graph-neural-network-gnn-for-analysing-structured-data-afce79f4cfdc)

+ Recent posts