본문 바로가기

AI 논문

[ 꼼꼼하게 논문 읽기 ] yolov7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors 1( 2022 )

728x90
반응형

안녕하세요! WH입니다.

오늘은 매우 따끈따근한 논문입니다.

22년 6월에 나온 논문이자,

코드로는 오늘 기준 7일 내에 나온 논문입니다.

반응형

Abstract

  yolov7 은 알려진 모든 object detectors를 speed 와 accuracy 측면에서 뛰어넘었는데요. 5 FPS에서 160 FPS 까지 속도가 나오고, 가장 높은 정확도는 30FPS로 56.8% AP 가 나온다고 하네요( v100에서는 더 빠를거라고 하네요 ). YOLOv7-E6 는 transformer-based detector SWIN-L cascade-Mask R-CNN 모델과 convolutional-based detector ConvNeXt-XL cascade-Mask R-CNN 모델 모두를 뛰어넘는 성능을 보여줍니다. 물론 YOLOR, YOLOX, Scaled-YOLOv4, YOLOv5, DETR, Deformabel DETR, DINO-5scale-R50, ViT-Adapter-B 등 모든 object detector를 성능과 속도 측면에서 넘어서죠. 심지어 추가 데이터나 pre-trained weight 없이 넘어선다고 합니다. 

Introduction

  Real-time object detection는 computer vision에서 매우 중요한 주제죠. 때문에 이 주제는 computer vision system에서 필수적인 구성요소입니다. 예를 들면, multi-object tracking이나, autonomous driving, robotics, medical image analysis 등에 필수적이죠. real-time object detection을 수행하는 computing devices는 대게 mobile CPU나 GPU 죠. major manufacturer에 의해 개발된 NPU ( neural processing units ) 기도 하죠. 예를 들어,( Apple ) Apple neural engine , ( Intel ) neural compute stick, ( Nvidia ) Jetson AI edge devices , ( Google ) the edge TPU, neural processing engine ( Qualcomm ), the AI processing unit( MediaTek ), AI SoCs( Kneron ) 등이 모두 NPU죠. 방금 언급된 edge devieces 중 몇몇은 vanilla convolution, depth-wise convolution, 혹은 MLP operations와 같은 different operation 속도를 올리는 데 초점을 맞춥니다. 저자들이 제안한 이 detector가 edge에서부터 cloud까지 mobile GPU 와 GPU devices 모두에 지원 되길 바란답니다.

  최근, real-time object detector는 different edge device에 대해 개발되었죠. 예를 들면, MCUNet, NanoDet의 개발은 low-power single-chip을 생산하고 edge CPU에서 추론 속도를 향상시키는 데에 초점이 맞춰졌죠. YOLOX 과 YOLOR과 같은 방법들은, 다양한 GPU의 추론 속도를 높이는 데 초점을 맞췄고요. 더 최근에는, real-time object detector의 개발은 efficient architecture 의 설계에 초점이 맞춰져있지요. CPU 에 사용될 수 있는 real-time object detectors에 관해, MobileNet, ShuffleNet, 혹은 GhostNet에 기반한 desing들이 있죠. 다른 main stream은 GPU에 대해 개발되었는데요. ResNet, DarkNet 혹은 DLA를 usually 사용하죠.  그리고 나서 CSPNet strategy를 architecture를 최적화하기 위해 사용합니다. 이 논문에서 proposed method의 development direction은 current main stream과 다릅니다. ( 어떤 device에 초점을 맞추고 있지 않습니다 ). architecture operation에서 역시, proposed method는 training process의 optimization에 초점을 맞춥니다. 저자들의 focus는 optimized modules 과 object detection의 accuracy를 향상시키기 위한 training cost를 줄여주는 optimization에 있습니다. 물론 inference cost는 늘어나지 않죠. 저자들은 proposed modules와 optimization methods를 trainable bag-of-freebies라고 칭합니다.

  최근, model re-parameterization과 dynamic label assignment 가 network training과 object detection에서 중요한 주제가 되고 있습니다. 위의 new concept가 제안된 이후에, object detector의 training은 많은 새로운 issues가 나왔는데요. 이 논문에서는, 저자들은 자신들이 발견한 new issues에 대해 다루고 이 issues를 다루기 위한 efficient methods를 보여준다고 하네요. re-parameterization model에 대해, 저자들은 gradient propagation path의 concept로 different networks에서 layer에 적용 가능한 re-parameterization strategyes에 대해 분석합니다. 그리고 planned re-parameterized model을 제안합니다. 더불어, dynamic label assignment technology를 활용해 multiple output layers를 가진 model의 training하는 것은 new issues를 야기한다는 사실을 발견했다고합니다. 그 문제는 " different branches의 ouputs 에 대한 dynamic targets를 할당하는 방법 " 입니다. 이 문제에 대해, 저자들은 new label assignment method, label assignment가 guided된 coarse-to-fine lead라 불리는 방법을 제안합니다.

  이 논문의 contributions를 요약하면 아래와 같은데요.

 

    1. several trainable bag-of-freebies method를 design 했습니다. real-time object detection이 inference cost의 증가 없이

        detection accuray를 greatly improve 할 수 있도록하죠.

    2. object detection methods의 혁신을 위해, 저자들은 두 가지 issues를 찾았습니다. 즉, re-parameterized module을

        original module로 대체하는 방법, 그리고 different output layer에 assignment를 다루기 위한 dynamic label

        assignment strategy 방법. 더불어, 저자들은 이 issues로 부터 발생하는 difficulties를 다루기 위해 methods를 제안합

        니다.

    3. 저자들은 parameters와 computation을 효과적으로 사용하는 real-time object detector를 위하 "extend" 그리고

         "compound scaling" methods 제안합니다.

    4. 저자들이 제안한 methods는 parameters를 40% 그리고, computation의 50%를 효과적으로 줄일 수 있습니다. 

 

Related work

  Real-time object detectors

  SOTA real-time object detectors는 YOLO나 FCOS에 기반하는데요. SOTA real-time object detector가 되기 위해 다음의 characteristics를 요구합니다. (1) faster and stronger network architecture. (2) a more effective feature integration method (3) a more accurate detection method (4) a more robust loss function (5) a more efficient label assignment method (6) a more efficient training method. 이 논문에서, 저자들은 self-supervised learning data 나 large model을 사용하지 않았습니다. 대신에, 저자들은 (4), (5), (6)과 연관된 SOTA method로부터 야기되는 문제를 위한 new trainable bag-of-freebies method를 design 합니다. 

  Model re-parameterization

  Model re-parametrization techniques는 multiple computational medules를 snference stage에 하나로 합칩니다. model re-parameterization technique은 emsemble technique으로 여겨질 수 있는데요. 저자들은 이 techniques를 두 가지 categories로 나눴다고 하네요. ( i.e. module-level ensemble 과 model-level ensemble 로 말이죠 ) final inference model을 얻기 위한 model-level re-parameterization 에 대한 two common practices 가 있는데요. 하나는 different training data로 multiple identical models를 학습하는 것입니다. 그런 다음, multiple trained models의 weights를 평균내죠.  다른 방법으로는 different iteration number에서 models의 weights의 weighted average를 perform하는 겁니다. Module-level re-parameterization은 최근 더 popular research issue 인데요. method의 type은 training 동안 module이 multiple identical 나 different module branches로 나눠집니다. 그런 다음 inference 동안 multiple branched modules가 completely equivalent module로합쳐지죠. 그러나, all proposed re-parameterized module이 different architectures에 완전히 적용될 수 있는 것은 아니죠. 이 사실을 염두에 두면, 저자들은 new re-parameterization module을 개발한 것이고 다양한 architectures에 대한 realated application strategies를 designed 한 것이죠.

  Model scaling

 Model scaling은 이미 designed model scale up이나 down하는 방식인데요. Model scaling은 designed model을 different computing device에 맞도록 해주죠. model scaling method는 대게 different scaling factors를 사용하는데요. resolution( size of input size ), depth( number of layers ), width( number of channel ), 그리고 stage ( number of feature pyramid ) 같은 것들이 있죠. network parameters, compuation, inference speed, 그리고 accuracy의 amount를 위한 good trade-off를 달성하는 요소들이기도 하고요. NAS ( Network architecture search )는 model scaling methods에 가장 흔희 사용되는 방식 중 하나인데요.  NAS는 자동으로 suitable scaling factor를 too compicated rules 없이 search space에서 찾아주죠. NAS의 단점은 model scaling factors 를 위한 search를 완선하기 위해서 very expensive한 computation이 요구된다는 점이죠. 한 연구에서는, scaling factors와 parameters와 operations의 amount 간의 상관관계를 분석했습니다. some rules를 직접 추정하고자 시도했고, 그럼으로써 model scaling에 의해 요구되는 scaling factor를 얻고자 했죠. 저자들은 거의 모든 scaling methods가 individual scaling factor를 독립적으로 분석한다는 사실을 알게 되었다고 해요. 심지어 compoind scaling category의 methods는 또한 scaling factor를 독립적으로 optimized 한다는 사실도 알게 되었고요. 이렇게 하는 이유는 가장 popular NAS architectures가 correlated되지 않은 scaling factors를 다뤘기 때문이죠. 저자들은 모든 concatenation-based models ( DenseNet or VoVNet 같은 )은 그와 같은 models의 depth가 scaled 될 때, some layers의 input width가 바뀔 것이라는 사실을 관찰했다고 해요. proposed architecture는 concatenation-based 이기 때문에, 저자들은 이 모델을 위해 new compund scaling method를 design 해야만 했다고 하네요.

Architecture

  Extended efficient layer aggregation network

  efficient architectures를 design한 거의 모든 문헌에서, main considerations는 더 이상 number of parameters, amount of computation 그리고 computational density 가 아니었습니다. memory access cost의 characteristics에서 시작하는데요. Ma et al의 연구는 input/output channel ratio, architecture의 the number of branches 그리고 network inference speed에 대한 element-wise operation의 influnece를 분석했다고 합니다. Dollar 의 연구는 model scaling을 수행할 때 activation을 추가적으로 고려했다고 하죠. 즉, convolutional layers의 output tensor에서 elements의 number에 대한 고려를 넣었다고 해요. CSPVoVNet 의 design은 아래 그림에서 볼 수 습니다. 

이 design은 VoVNet의 variation인데요.  aforementioned basic designing concerns를 고려해서, CSPVoVNet의 architecture는 더 다양한 features를 학습하는 different layter의 weights가 가능하도록 하기 위해 gradient path를  분석했죠. gradient analysis approach는 inferences를 더 빠르고 더 정확하게 해주는데요. ELAN은 다음의 design strategy를 고려했습니다.- "efficient network를 design하는 방법" 그리고 결론에 도달하죠. : shortest longest gradient path를 controlling함으로써 deeper networks는 효과적으로 학습하고 converge 할 수 있다고 말이죠. 이 논문에서는, 저자들은 Extended-ELAN을 제안합니다. ELAN에 기반했으며, Figrue 2의 (d)에서 볼 수 있죠.

  large-scale ELAN에서 computational blocks의 stacking numbers와 gradient path length에도 불구하고, 안정된 상태에 도달하는 되요. 더 많은 computational blocks 가 쌓아진다면, 이 안정된 state는 파괴될 수 있죠. 그리고 parameter utilization rate는 감소할 겁니다. proposed E-ELAN은 original gradient path를 파괴하는 것 없이 network의 learning ability를 강화하기위한 ability를 성취하기 위해 expand, shuffle, merge cardinality 를 사용합니다. architecture의 관점에서, E-ELAN은 오직 computational block에서 architecture만이 바뀝니다. transition layer는 아예 바뀌지 않죠. 저자들의 strategy는 computation blocks의 channels와 cardinality를 expand 하기 위해 group convolution 을 사용하는 겁니다. 저자들은 same group parameter와 channel multiplier를 computational layer의 모든 computational blocks에 적용합니다. 그리고 나서, each computational block에 의해 계산된 feature map은 set group parameter g에 따라 g groups로 shuffled됩니다. 그리고 그들은 concatenate되죠. 이 때, feature map의 각 group에서 channels의 numbers는 original architecture에서의 number of channels와 같습니다. 최종적으로 저자들은 cardinality를 merge하는 feture mapdml g group을 add하죠. ELAN design architecture를 유지함은 물론, E-ELAN은 다양한 features를 학습하는 computational blocks의 different group을 guide할 수 있습니다.

  Model scaling for concatenation-based models

  model scaling의 주요한 목적은 model의 some attributes를 adjust 하는 것과 different inference speeds의 nedds를 충족시키는 different sclaes의 model을 생성하는 것입니다. 예를 들자면, EfficientNet의 scaling model은 width, depth, resolution을 고려합니다. scaled-YOLOv4에 대해, scaling model은 stages의 number를 adjust하는 것이고요. Dollar 연구는 width와 depth를 scaling할 때 parmeter와 computation의 amount에 대해 vanilla convolution 과 group convolution의 영향을 분석했습니다. 그리고 이것을 해당 model scaling method를 design 하는 데 사용했죠. 이 method는 PlainNet 이나 ResNet 같은 architectures에서 주요하게 사용되었죠. 이 architectures과 scaling up and down 을 시행할 때, 각 layer의 in-degree와 out-degree는 변하지 않을 겁니다. 따라서 저자들은 parameter와 computation의 amount에 대해 각 scaling factor의 영향을 독립적으로 분석할 수 있었죠. 그러나 이 방법들이 concatenation-based architecture에 적용된다면, 저자들은 scaling up or scaling down이 depth에 대해 수행될 때, concatenation-based computational block 후에 바로 나오는translation layer의 in-degree가 decrease 하거나 increase 할 것이라는 사실을 알게 되었죠. 아래 Figure 3 (a) 와 (b)에 나타나 있답니다.

  위 현상으로 부터, 저자들은 concatenation-based model에 대해 different scaling factors를 독립적으로 분석할 수 없고 대신에 반드시 함께 고려해야한다는 사실을 추론할 수 었었다고 합니다. 예로써 scaling-up depth를 고려해보죠. 해당 과정은 translation layer의 input channel과 output channel 간에 ratio change를 야기할 겁니다. 이것은 model의 hardware usage의 감소를 야기하죠. 그럼으로 저자들은 concatenation-based model에 대한 해당 compound model scaling method를 제안해야만 합니다. 저자들이 computational block의 depth factor을 scale 할때, 저자들은 그 black의 output channel의 change를 계산해야합니다. 그런 뒤에, 저자들은 transition layers에서 chage의 same amout로 width factor scaling을 수행할 겁니다. 그리고 그에 대한 결과는 Figure 3 ( c )가 되죠. proposed compound scaling method는 초기 design에서  model이 가졌던 properties를 유지할 수 있고, optimal structure을 유지합니다.

 

이번 글을 architecture까지 다뤘는 데요.

다루고자 하는 내용이 많아 글을 나누게 되었습니다.

다음 리뷰에서 뵈요!

728x90
반응형