꺼내먹는지식 준

EfficientDet 본문

AI/CV

EfficientDet

알 수 없는 사용자 2022. 3. 23. 14:07

object detection 의 성능은 

1) mAP

2) Speed 

두가지로 결정된다. 

 

EfficientDet은 성능도 높고, 속도도 빠르게 하기 위한 연구 (사실 모든 연구가 그렇다. SSD도 그렇고.)

 

Efficient in Object Detection 

  • DL model은 키우면 키울 수록 성능이 증가하는 경향, 그러다보니 계속해서 점점 더 깊어지고, 복잡
  • 하지만, 단순하게 깊게 쌓는 것이 성능적인 gain에 한계가 있다. 즉 모델의 복잡도 대비 성능향상이 비효율적
  • 이에 따라 모델을 쌓을 때 잘 쌓는 법에 대한 연구가 진행

3가지 방향의 scaling 

  • width scaling: 채널을 더 크게 주기 
  • depth scaling: 모델을 더 깊게 쌓기 
  • resolution scaling: input 이미지의 resolution 키우기

$\rightarrow$ compound scaling: 깊고, 넓고, resolution 도 크게 주는 것

 

width scaling  예시 

 

depth scaling 예시 

 

더 높은 정확도 효율성을 가지면서 ConvNet의 크기를 키우는 방법 (scale up)은 없을까? 

 

EfficientNet 

낮은 FLOPs 대비 엄청난 성능

성능적으로도 우수하며, 속도도 빠른 EfficientDet 

 

 EfficientNet

EfficientDet의 기반이 되는 연구 

 

연구 동기 

25배의 복잡도 대비 8% 성능 향상 

동일 파라미터 대비 엄청난

$\rightarrow$ EfficientNet 은 이 모두를 사용한 compound scaling 

 

  • 모델의 Accuracy를 최대로 하는 d,w,r을 찾는 것이 목표 (d,w,r = depth, width, resolution)
  • 단, model의 memory는 target_memory 보다 작거나 같고, 
  • model의 FlOPssms taget_flops보다 작아야 한다. 
  • 다음 조건 하에, d,w,r 조절하면서 모델의 Accuracy 최대화 
  • 각각의 Conv layer가 $F_i$

d,w,r 을 변화해가며 여러 실험 진행 

네트워크의 폭, 깊이, 해상도는 정확도를 향상시키나, 커지는 속도에 비해 성능 향상이 낮다. 

w,d,r 각각에 대해 증가폭 감소 확인 가능 (한가지 실험시 다른 factor 은 고정)

 

3가지 factor 를 한번에 조절해가며 실험 진행 

$\rightarrow$ 네트워크 폭, 깊이, 해상도의 균형을 잘 맞춰주는 것이 중요하다. 

 

실험 결과에 따라 compound scaling method에 대한 간단한 수식 생성 

resolution 은 가로 세로가 동시에 늘어나서 2배가 4배 크기 증가의 효과가 있다. 따라서 $\sqrt{r^2}$

$\alpha, \beta, \gamma$ constant  

$\theta$ : scaling up factor 

 

정리하면, compound scaling 을 통해 d,w,r 을 정의하고, 이를 기반으로 model architecture 생성 

 

d,w,r 을 계산하기 위해서는 $\alpha, \beta, \gamma$  값을 찾아야 하고, 왼쪽 식을 참고하면 base module이 되는 layer $F$를 계산해야 한다. 

 

Layer 찾는법

Nas 기반으로 model architecture 를 찾고자 함 

Nas 기반 Efficient B-0

$\alpha, \beta, \gamma$ 찾는법

이를 통해 layer depth, resolution, channel의 크기를 늘림 

$\alpha, \beta, \gamma$는 constant 로 고정하고, $\theta$ 값을 고정해보면서 scale up 

 

성능

오른쪽 figure 가 각각 feature 를 증가시켜가며 관측한 성능 

 

EfficientDet

Detection PipeLine

EfficientDet은 1 stage detector  

그 동안의 YOLO, SSD, RetinaNet, CornetNet(anchor free)

$\rightarrow$ Accuracy 가 너무 낮았다. 

 

Motivation 

 

자원의 제약이 있는 상태에서 더 높은 정확도와 효율성을 가진 detection 구조를 만드는 것이 가능할까? 

backbone, featuremap, FPN, Box Classification Head, Class Classification Head 를 동시에 scale up.

 

그동안 성능 향상을 위해 노력했지만, 유의미 하지 않았던 것

 

가중합 하는 BiFPN 제안 

 

해당 글 참고 

https://itforfun.tistory.com/116?category=915230 

 

Object Detection Neck

Object Detection Neck 그간 Object Detection 논문들 읽으면서 Neck 에 해당되는 개념들을 아주아주 간단하게 작성하고 넘어갔는데, 드디어 한번 살펴본다. NECK 이 나오기 전, backbone의 마지막 feature map..

itforfun.tistory.com

BiFPN

 

가중합 

 

 

$\rightarrow$ size 를 효과적으로 키우기 위하여 width, depth, resolution 세가지 측면으로 기존 모델 정의 Scaling 한 factor 를 $\rightarrow$ $\phi$ 로 두고, $\phi$를 점점 업 시켜나가며 compound scaling 

$\rightarrow$ 1.35 는 grid search 로 찾은 값 

$\rightarrow$ $\phi$ 를 키워나가며 실험 

 

성능

 

'AI > CV' 카테고리의 다른 글

1 stage Detectors  (0) 2022.03.23
Object Detection Neck  (0) 2022.03.22
MMdetection  (0) 2022.03.22
COCO data 처리  (0) 2022.03.22
mAP란? FLOPs 란?  (0) 2022.03.21
Comments