본문 바로가기

AI 논문

[ 꼼꼼하게 논문 읽기 ]YOLOv9: Learning What You Want to LearnUsing Programmable Gradient Information ( 2024 )

728x90
반응형

논문이 나온지 꽤 되었는데,

이제야 review를 하네요.

시작할까요?


Abstract

  오늘날의 deep learning methes는 가장 적절한 objective functions을 설계하는 데 집중하는데 이는 모델의 예측 값이 정답에 가깝게 만들어 줄 수 있도록 하기 위해서죠. 동시에, 예측값을 위한 충분한 정보의 습득이 가능한 적절한 아키텍처가 설계되어야 하죠. 지배적인 방법들은 입력 데이터가 layer-by-layer extraction 과 spatial transformation을 지나갈 때, 많은 양의 정보가 소실될 수 있다는 사실을 무시합니다. 이 논문은 data가 deep network를 통해 전달될 때, data loss 문제를 깊게 파헤칩니다. 즉, information bottleneck 과 reversible functions 문제죠. 저자들은 programmable gradient information ( PGI ) 개념을 제안합니다. 이는 multiple objectives를 달성하기 위해 deep network에 의해 요구되는 다양한 변화에 대처하는 방법이죠. PGI는 완전한 input information을 objective function을 계산하는 target task에 제공할 수 있습니다. 때문에 신뢰할 수 있는 gradient information을 얻을 수 있죠. 이는 network의 weight를 update하는데 사용되죠. 게다가, gradient path planning에 기초한 새로운 lightweight network 아키텍처 ( Generalized Efficient Layer Aggergation Network, GELAN )가 설계되었죠. GELAN's 아키텍처는 PGI 가 lightweight models에서 우월한 결과를 보인다는 사실을 확인했죠.  저자들은 두 가지 제안에 대해 COCO 에서 실험했고 좋은 결과를 얻었다고 아래 쭉 써있네요.


Introduction

  Deep learning-based models는 과거 인공지능 시스템에 비해 더 좋은 성능을 보여왔고 그 분야는 다양하죠. 비전, 자연어, 언어 인식 모두에서 말이죠. 최근, 연구자들은 더 강력한 system 아키텍처와 learning methods를 개발하는 방법에 집중하고 있습니다. CNN, Transformers, Perceivers, Mambas 관련해서 많은 연구가 있죠. 게다가, 몇몇 연구자들은 general objective functions를 개발하고자 노력합니다. loss funtion, label assignment, auxiliary supervision 등에 대한 연구들이죠.  위에 언급된 연구들은 input과 target task간에 mapping을 정확하게 찾고자 노력하죠. 그러나, 많은 과거의 접근법들은 input data가 feedforward process 동안 소실되는 양이 무시할 만하지 않을 수도 있다는 사실을 무시해왔죠. 이 정보의 손실은 편향된 gradient flow를 야기할 수 있습니다. 이 문제들은 targets과 input간에 부정확한 associations를 도출하는 deep network를 만들어 낼 수 있죠. 그리고 이는 부정확한 예측값을 도출하는 trained model을 만들게 됩니다.

  deep network에서, feedforward process동안 데이터가 손실되는 현상은 information bottleneck으로 알려져 있습니다. 이는 Figure2에 나타나 있죠.

현재는, 이 현상을 완화할수 있는 지배적인 methods는 다음과 같습니다.: (1) reversible 아키텍처를 사용하는 겁니다. 이 방법은 주로 반복된 input data를 사용하고 input data의 정보를 명시적인 방법으로 유지합니다. (2) masked modeling의 사용입니다. 이 방법은 주로 reconstruction loss를 사용하고 extracted features를 maximize하고 input imformation을 retain하는 명시적인 방법을 적용합니다. (3) deep supervision concept의 도입입니다. 이 방법은 shallow features를 사용하는데 shallow features는 features을 targets에 mapping을 미리 설정한 중요한 정보를 잃지 않죠. mapping은 중요한 정보가 deeper layers까지 전달될 수 있음을 보장하죠. 그러나, 위의 방법들은 training process와 inference process에서  다른 결점이 있죠. 예를 들어, reversible architecture는 additional layers가 필요한데, 반복적으로 input data를 합치는 layer가 필요하고 이는 inference cost에 상당한 증가를 의미합니다. 게다가, input data layer에서 output layer 까지가 너무 깊기 때문에, 이 제한은 training process동안 high-order semantic information을 model하는 것을 어렵만 만들겁니다. masked modeleling에 대해서는, its reconstruction loss는 종종 target loss와 충돌을 일으키죠.게다가, 대부분 mask mechanisim은 부정확한 associaitions을 만들어내죠. deep supervision mechanism에 대해, error accumulation을 야기할 겁니다. 그리고 만약 shallow supervision이 training process동안 정보를 잃어버린다면, 이어지는 layers는 요구된 정보를 회수할 수 없죠. 이 현상은 작은 모델과 difficult tasks에대해 더 중요할 겁니다.

  위에 언급된 문제들을 해결하기 위해, 저자들은 새로운 concept, programmble gradient information을 제안합니다. 컨셉은 auxiliary reversible branch를 통해 reliable gradients를 생성하는 겁니다. 그렇게해서 deep features는 target task를 실행하는 데 있어 key characteristics를 유지할 수 있습니다. auxiliary reversibel branch의 설계는 multi-path feature를 합치는 일반적인 deep supervision process에 의해 야기될 수 있는 semantic loss를 피할 수 있습니다. 다른 말로, 저자들은 gradient information propagation을 다른 의미론적 levels에서 programming하고 그럼으로서 best training results를 달성합니다. PGI의 reversible 한 아키텍처는 auxiliary branch에 만들어집니다. 따라서 추가적인 cost가 없죠. PGI가 target task에 대해 적절한 loss function을 자유롭게 선택할 수 있기 때문에, 제안된 PGI mechanism은 다양한 size의 deep neural networks에 적용될 수 있습니다.  그리고 deep supervision mechanism보다 더 일반적이죠.

  이 논문에서 저자들은 generalized ELAN을 설계했습니다. ELAN에 기반하고 GELAN의 설계는 동시에 parameters의 수, computational complexity, accuracy 그리고 inference speed를 고려합니다.

   이 디자인은 사용자가 다른 inference devices에 대해 적합한 computational blocks를 선택하도록 해줍니다. PGI와 GELAN을 결합해서, YOLO series의 새로운 버전을 설계했고 이를 YOLOv9 이라고 합니다. 성능은 가장 뛰어나고요.


Related work

  Real-time Object Detection

  현재 실시간 객체 detector의 메인 stream은 yolo series인데요 대부분의 이 시리즈는 CSPNet 이나 ELAN 그리고 주요 computing unit이 살짝 변형된 models들을 사용합니다. feature integration관점에서, improved PAN 이나 FAN은 종종 tool로 사용되고 improved YOLOV3 head나 FCOS head이 prediction head로 사용되죠. 최근 몇몇 real-time obejct tetectors, RT DETR, 이 제안되기도 했습니다. 그러나, DETR은 해당 domain 에 맞춰진 pre-trained model 없이 새로운 domain을 적용하기가 어렵기 때문에, 가장 널리 사용되는 detector는 현재 YOLO series죠. 이 연구는 제안된 방법을 개발하기 위해 base로 YOLOv7을 선택합니다. PGI를 활용해 training process와 아키텍처를 향상시키는 GELAN을 사용하죠. 새로운 접근법은 YOLOv9을 SOTA로 만들었죠.

  Reversible Architectures

  reversibel 아키텍처의 operation unit은 반드시 reversible conversion의 특성들을 유지합니다. 그래서 각 layer의 output feature map 이 완전한 original information을 얻을 수 있다는 것을 보장하죠. RevCol 은 일반적인 reversible unit을 multiple level로 일반화하고 그렇게함으로써 다른 layer unit에 의해 표현되는 semantic levels를 확장할 수 있죠. 저자들은 다양한 정도의 reversibel properties를 가진 성능 좋은 아키텍처들을 찾았습니다. Res2Net module은 다른 input partitions를 다음 partition에 계층적으로 합치고 모든 변환된 partitions들을 concatenates합니다. 이는 backwards를 가기 전에 실행되죠. CBNet은 original input data를 composite backbone을 통해 재도입하는데 해당 backbone은 완전한 originla information을 얻을 수 있죠. 재도입한 뒤, multi-level reversible information이 다양한 composition methods를 통해 얻습니다. 이들 network 아키텍처는 일반적으로 훌륭한 parameter utilization을 가집니다. 그러나 여분의 composite layers은 slow inference speeds를 야기하죠.  DynamicDet은 CBNet 과 YOLOv7을 합칩니다. 이 논문은 DynamicDet architecture를 기초로 하는데 이는 reversibel branches를 설계하기 위해서죠. 게다가, reversible information은 더 나아가 PGI에 도입됩니다. 제안된 새 아키텍처는 inference동안 추가적인 connection을 요구하지 않기 때문에 속도, 파라미터 수, 정확도에 이점을 완전히 가져올 수 있죠. 

  Auxiliary Supervision

Deep supervision은 가장 일반적인 auxiliary supervision 방법입니다. 이는 중간 layer에서 추가적인 prediction layers를 넣어줌으로써 training을 수행합니다. 특히, transformer-based 방법으로 도입된 multi-layer decoers의 application은 중간 layers에서 생선된 feature maps를 가이드하고 target tasks에 의해 요구되는 특징들을 가지도록 하는 관련된 meta information을 사용하는 겁니다. 이 형태의 예시들은 segmentation loss를 사용하거나 depth loss를 사용하는 것인데 이들은 object detectors의 accuracy를 강화하죠. 최근, 다른 label assignment methos를 사용하는 많은 논문들이 있는데 이는 다른 auxiliary supervision mechanism을 사용합니다. 이는 model의 수렴속도를 빠르게하고 동시에 robustness를 향상하죠. 그러나, auxiliary supervision mechanism은 large model에서만 사용가능 합니다. 따라서 lightweight models에 적용될떄, under parameterization phenomenon을 야기하기 쉬운데, 성능 저하가 발생하죠. PGI는 multi-level semantic information을 reprogram하는 방식으로 설계되었고 때문에 이 design은 lightweight models가 auxiliary supevision mechanism으로부터 이점을 가질 수 있도록 하죠.


Probelm Statment

 대게, 사람들은 deep neural network convergence problem의 어려움을  gadient vanish나 gadient saturation과 같은 요인때문이라고 봅니다. 그리고 이런 현상은 전통적인 deep neural networks에서 발생하죠. 그러나, 현대 deep neural networks는 이미 본질적으로 언급된 문제를 해결해왔는데 다양한 normalization이나 activation fuction을 설계함으로써 해결해왔죠. 그럼에도 불구하고, deep neural networks는 여전히 slow convergence나 poor convergence results의 문제를 가지고 있죠.

  이 논문에서, 저자들은 위 문제의 본질을 탐구합니다. information bottleneck의 깊은 분석을 통해, 저자들은 이 문제의 근본적인 원인은 deep network로부터 오는 본래의 initial gradient가 전달된 이후에 목적을 달성하기위해 필요한 information 중 상당수를 잃어버리는 것 때문이라고 예상했죠. 이 추론을 확인하기 위해, initial weights를 가진 다양한 아키텍처의 deep network를 feddforward합니다. 그리고나서 그림 2에서 이를 설명하죠. 분명하게, PlainNet은 deep layer에서 object detection에 필요한 많은 정보들을 잃어버렸죠. ResNet, CSPNET, 그리고 GELAN에서 얻을 수 있는 중요한 정보의 proportion에 대해, 훈련 후 얻을수 있는 accuracy와 실제 긍정적으로 관련이 있죠. 저자들은 위에 언급된 문제를 해결하는 reversible network-based methods를 설계했습니다.

Information Bottleneck Principle

  Information bottleneck principle에 따르면, data X는 transformation을 겪으면서 information loss가 일어날 수 있습니다. 식은 아래와 같죠.

여기서 I는 mutual information을 나타내고 f와 g는 transformation functions을 나타냅니다. thetha와 pi는 f와 g의 parameter를 나타내죠,

  deep neural networks에서 f()와 g()는 각각 심층 신경망에서 두개의 연속된 layer의 operation을 나타냅니다. Eq1로부터, network layer의 수가 깊어질수록 original data는 일어버릴 가능성이 높겠다라는 사실을 예측할 수 있습니다. 그러나, 심층 신경망의 parameters들은 network의 output과 주어진 target에 기초합니다. 그런다음 loss function을 계산함으로써 새로운 gradient를 만들어낸 후 network를 update하죠. 누구나 예상할 수 있듯이, 심층 신경망의 output은 prediction target에 대한 완전한 information을 얻을 수 없죠. 이는 심층신경망이 학습동안 불완전한 정보를 사용하도록 할 수 있고 잘못된 수렴과 믿기 힘든 gradients를 만들어 내게됩니다.

  이 문제를 해결하기 위한 한 가지 방법은 model의 크기를 키우는 겁니다. 모델을 만드는데 많은 파라미터를 사용하면, data의 더 완전한 transformation을 수행할 수 있죠. 이 접근법은 정보가 data feedforward process동안 손실되더라도, target에 mapping하기에 충분한 정보을 얻을 수 있는 기회를 제공하죠. 위 현상은 width가 depth보다 중요한 이유를 설명합니다. 그러나, 위 결론이 문제를 근본적으로 해결할 수 없죠. 다음은, 저자들이 문제를 해결하는 reversibel functions을 사용하는 방법에 소개하고 상대적 분석을 시행합니다.

  Reversible Functions

  function gmma 가 inverse transformation function v를 가질 때, 저자들은 이 reversible function을 아래와 같이 표현합니다.

여기서 프시와 제타는 r과 v의 parameter입니다. Data X는 역함수에 의해 변환되고 이때 정보의 손실은 없죠.

network의 transformation function이 역함수로 구성될때, 더 믿을만한 ggradients를 얻을 수 있고 이 gradient는 모델을 update합니다. 요즘 유명한 심층 신경망들은 reversible property를 따르는 아키텍처이죠. 식으로 표현하면 아래와 같습니다.

여기서 l은 PreAct ResNet의 l-th layer 를 나타냅니다. 그리고 f는 transformation funtion을 나타내죠. PreAct ResNet은 original data X를 반복적으로 후속 layer에 명시적인 방식으로 전달합니다. 이런 design이 수천개의 layer를 가진 심층 신경망이 더 잘 수렴되도록 하지만, 심층 심경망이 필요한 중요한 이유를 부숩니다. 즉, difficult problem 에 대해, 우리가 직접적으로 data를 target에 map하는 simple mapping funtions을 찾는것을 어렵게 만들죠. 이는 PreAct ResNet이 ResNet보다 성능이 좋지 않은 이유를 설명하기도 합니다. 물론 layer수가 적을 때에 국한해서 말이죠.

  게다가, 저자들은 masked modeling을 사용하고자 시도했습니다. 저자들은 gamma의 v를 찾는 approximation methods를 사용했습니다. 그렇게함으로써 전달된 features는 sparse feature를 사용해 충분한 information을 얻을 수 있죠. 사용된 식은 아래의 식과 같죠.

여기서 M은 dynamic binary mask입니다. 일반적으로 위 task를 수행하는 데 사용되는 다른 방법들은 diffusion model과 variational autoencoder 그리고 둘 모두가 역함수를 찾는 기능을 가지게 하는 겁니다. 그러나, 저자들이 위 방법에 적용한다면( 작은 모델에 ) ,  작은 모델은 많은 양의 raw data에 under parameterized될 것이기 때문에 결함이 생길 겁니다. 위와 같은 이유로, X를 Y에 map하는 중요 정보 I (Y, X) 같은 문제에 직면할 겁니다.이 문제에 대해, 저자들은 information bottleneck의 컨셉을 사용합니다. information bottleneck에대한 공식은 아래와 같습니다.

일반적으로 말해서, I( Y, X )는 I( X, X )의 매우 작은 부분을 차지할 겁니다. 그러나, target mission에게는 매우 중요하죠. 따라서, information lost의 양이 중요하지 않더라도, training effect는 많은 영향을 미칠겁니다. 가벼운 모델은 그 자체로 under parameterized 상태입니다. 그래서, feedforward stage에서 중요한 정보의 많은 양을 쉽게 잃어버릴 수 있죠. 따라서, 저자들의 목표는 I( X, X)로부터 I(Y, X)를 정확하게 걸러내는 겁니다. X의 information을 온전히 보전하는 것은 달성하기 매우 어렵죠. 위 분석에 기반해, 저자들은 새로운 심층 신경망 학습법을 제안하길 원하죠. 이 학습법은 믿을만한 gradient를 생성할 뿐만 아니라, 작은 모델에게도 적합할 수 있어야하죠.


Methodology

  Programmable Gradient Information

  앞서 언급한 문제들을 해결하기 위해, 저자들은 새로운 auxiliary supervision framework를 제안하는데 Programmable Gradient Information이라고 불리고 Figure 3에 나타나 있죠.

PGI는 3 개의 요소를 포함합니다. 즉 (1) main branch, (2) auxiliary reversible branch, and (3) multi-level auxiliary information 입니다. Figure 3으로부터, PGI의 infernece process는 main branch만을 사용하는 것을 볼 수 있고 따라서 추가적인 inference cost를 발생시키지 않죠. 다른 두 개의 요소에 대해, 두 요소는 심층 신경망 methods에서 import issues를 완화하거나 해결하기 위해 사용됩니다. 이들 중, auxiliary reversibel branch는 신경망이 깊어짐으로써 야기되는 문제를 다루기 위해 고안되었죠. network depending은 information bottleneck을 야기할 수 있는데 이는 loss funtion이 믿을만한 gradient를 생성할 수 없도록 만들 수 있죠. multi-level auxiliary informations에 대해, error accumulation probelm을 해결하기 위해 고안되었고 해당 문제는 deep supervision에서 발생하고 특히, 여러 개의 prediction branch를 가진 작은 모델에서 발생하죠. 차례로 설명할 겁니다.

  Auxiliary Reversible Branch

PGI에서 저자들은 auxiliary reversible branch를 제안하고 이는 믿을만한 gradients를 생성하고 network parameter를 생성합니다. data부터 target까지 maps한 정보를 제공함으로써, loss function은 guidance를 제공할수 있고 target에 관련성이적은 불완전한 feedforward features로부터 잘못된 correlations를  찾는 것에 대한 가능성이 줄죠. 저자들은 reversible architecture를 도입함으로써 완전한 information을 유지할 것은 제안합니다. 하지만, reversible architecture에 main branch를 추가하는 것은 inference cost를 많이 잡아먹기 먹을 겁니다. 저자들은 Figure 3의 (b) 를 분석했고 deep에서 shallow layers까지 additional connections가 더해지면, inference time이 20% 증가한다는 것을 발견했죠. 반복적으로 input data를 high-resolution computting layer에 더해줄 때, inference time이 두배 이상 느려졌죠.

  목표는 reversible architecture를 사용하는 것이었고 이는 reliable gradients를 얻기 위함이었죠. "reversible"이 inference stage에 사용될 필요는 없습니다. 이 관점에서, 저자들은 deep supervision branch의 확장으로 reversible branch를 고려합니다. 그리고난뒤 auxiliary reversible branch를 Figure 3에서 보여지는것처름 고안했죠.  information bottleneck 때문에 중요한 정보가 손실될 수 있는 main branch deep features 에 대해, deep features들은 믿은만한 gradient information을 auxiliary reversible branch에게 받을 수 있죠. 이 gradient informaion은 올바르고 중요한 정보를 추출하는데 도움을 주는 parameter learning을 유도할 겁니다. 그리고 위의 actions는 main branch가 target task를 위한 더 효과적인 features를 얻을 수 있도록 합니다. 게다가, reversible architecture는 얕은 network에서 낮은 성능을 보이는데 이는 복잡한 task는 심층 심경망에서 conversion을 요구하기 때문이죠. 저자들이 제안한 방법은 main branch가 완전한 original information을 얻도록 강요하지 않지만 auxiliary supervision mechanism을 통해 유용한 gradient를 생성함으로써 main branch를 업데이트 합니다. 이 디자인의 이점은 얕은 모델에도 적용할 수 있다는 점이죠.

  마지막으로, auxiliary reversible branch가 inference phase에서 제거될 수 있기 때문에 본래 신경망의 inference capabilities를 얻을 수 있죠. 

  Multi-level Auxiliary Information

    이번 단락에서는 multi-level auxiliary information이 어떻게 동작하는지에 대해 논의합니다. deep supervision 아키텍처는 multiple prediction branch를 포함하고 이는 Figure 3 (c)에서 볼 수 있죠. obeject detection에 대해, 다른 feature pyramid는 다른 tasks를 수행할 수 있습니다. 예를 들어, 다른 사이즈의 objects를 탐지할 수 있습니다. 따라서, deep supervision branch와 연결된 후에, 얕은 features는 작은 물체 탐지를 위해 필요한 features를 학습하도록 가이드됩니다. 그리고 이 때, 시스템은 background로 다른 사이즈의 objects에 대한 위치를 고려할 겁니다. 그러나, 위에 언급된 행위는 deep feature pyramids가 많은양의 정보를 잃게 합니다. 이 문제에 대해, 저자들은 각 feature pyramid는 모든 target object에대한 정보를 받고 그럼으로써 main branch가 다양한 target을 위한 예측을 학습할 완전한 정보를 얻을 수 있다고 믿습니다.

  multi-level auxiliary information의 개념은 auxiliary supervision와 main branch 의 feature pyramid hierarchy layers 사이에 integration network를 끼워넣는 겁니다. 그런 다음 different prediction head로부터 returned gradients를 합칩니다. Multi-level auxiliary information은 그런다음 gradient informain을 aggregate하는데 이는 all target objects를 포함합니다. 그리고 그것을 main branch에 전달하고 parmeter를 업데이트 합니다. 이 때, main branch's feature pyramid hierarchy의 특징은 특정 object's information에 의해 지배되지 않죠. 결과적으로 저자들의 방법은 broken information problem을 완화하게 됩니다. 게다가 통합된 network는 multi-level auxiliary information에서 사용될 수 있습니다. 그럼으로 저자들은 required semantic levels를 계획하는 데 이는 다른 size의 network 아키텍처에 대한 learning을 가이드합니다.

  Genenralized ELAN

  이 단락에서 저자들은 GELAN에 대해 말합니다. 두 개의 신경망 아키텍처를 합쳤는데요, CSPNet과 ELAN 입니다. 이들은 gardinet path planning을 활용해 디자인되었죠. 저자들은 generalized efficient layer aggregation network를 설계했고 lighweight, inference speed, accuracy를 고려했죠. 전체적인 아키텍처는 Figure 4에 나와 있습니다. ELAN의 capability를 일반화했는데 이는 오직 convolutional layers를 쌓아 만들었죠. 어떤 computational blocks도 사용할 수 있는 새로운 아키텍처입니다. 


Experiments 

 - 원래 이부분은 다루지 않지만, 봐야할 부분이 있어 다룹니다.

  Implimentation Details

  YOLOv9의 일반적이고 확장된 버전은 YOLOv7과 Dynamic YOLOv7에 각각 기반해 설계됩니다. 신경망의 디자인에 대해, 저자들은 ELAN을 GELAN으로 바꿨는 데, GELAN은 CSPNet blocks를 사용했고 planned RepCon를 computational block으로 가지고 있죠. 저자들은 downsampling module을 간단하게 만들었고 acnhor-free prediction head를 최적화했죠. PGI의 auxiliary loss part에 대해, 저자들은 YOLOv7's auxiliary head setting을 따릅니다. 부록에서 자세히 설명한다고 하네요.


Appendix

  Implementation Details

  YOLOv9의 network topology 는 YOLOv7 AF를 완전히 따릅니다. 저자들은 ELAN을 CSP-ELAN blck으로 대체합니다. Table2에서 나열되어 있듯이, CSP-ELAN의 depth parameters는 ELAN depth와 CSP  depth를 각각 나타냅니다. CSP ELAN filters의 파라미터에 대해서는, ELAN output fillter, CSP output fillter 그리고 CSP 내부 filter로써 나타냅니다. downsampling module 부분은, CSP-DOWN module을 DOWN module로 대체합니다. DOWN module은 size=2, stride=1인 pooling layer와 size=3 stride=2 인 Conv layer로 구성되어 있습니다. 저자들은 prediction layer를 최적화했고 regression branch에서 top,left,bottom and right를 decoupled branch로 변경합니다.

 

여기까지 하겠습니다.

그럼 이만

728x90
반응형