anchor based 방식의 흐름


왼쪽 그래프의 성능을 보게 되면 SOTA 모델인 EfficientDet 모델보다 성능이 월등히 높게 나온것을 알 수 있습니다.

(먼저 간단하게 YOLO의 역사에 대해서 언급하고 시작하겠습니다.)

 

2개의 branch로 나눈 다음에

1. Introduction / brief history of YOLO

- YOLO(You Only Look Once)는 이미지 전체를 한번에 처리하는 Object Detection의 대표적인 1-Stage Approach
- Real-time Object Detection으로 큰 주목
- 그 후 해를 거듭하며 발전 ( YOLOv1, v2, v3, v4, v5, PP-YOLO, ... )
- 최근에 트랜스포머 계열의 모델들이 Object Detection 태스크에 들어오기 전에는 대부분의 Object Detection 모델들은 CNN개반으로 수행했는데, 이번에 다루는 YOLO 역시 대표적인 CNN 기반의 네트워크 

 

오른쪽에 보시면 citation수를 나타내고 있는데, 이는 YOLO 시리즈 모델들이 얼마나 널리 쓰이고 있는가에 대한 반증이기도 합니다.

 

해당 모델이 어떻게 발전했는지를 간단하게만 소개해 드리자면,

한번에 바운딩 박스를 그리고 물체를 분류하는 YOLOv1이 제안

 

.미리 정해둔 형태의 박스를 바운딩 박스의 후보로 사용하는 anchor 박스 개념을 제안

 

작은 물체도 탐지가 가능한 모델 아이디어를 제안

1. Introduction / YOLOX Overview

- 최근 2년동안 연구자들은 Anchor-Free Detector, Advanced Label Assignment Strategy, End-to-end Detector의 연구에 주목하였지만 YOLO 시리즈에는 적용되지 않음
- 따라서 본 논문에서는 그러한 좋은 기법들을 적용하여 성능 개선에 목적을 두었다.
  • Key concepts
    1. Anchor-free 방식의 Yolo구조
    2. Object Detection을 위한 발전 기술 적용 :
      • Decoupled head ( head를 분리 )
      • 발전된 Label assignment 기법 적용 : SimOTA
      • 강력한 data augmentation : Mosaic, Mixup
  • YOLOv3 baseline
    • YOLOv4, v5가 anchor-based 파이프라인에 과도하게 최적화 될 수 있음을 고려하여 YOLOv3-SPP를 base architecture로 선정

각 기법을 사용할 때 성능이 개선되고 있음

 

2. Network Design / Architecture

  • Architecture
    • Backbone : Darknet53
    • Neck :SPP(Spatial Pyramid Pooling) + FPN(Feature Puramid Network)
    • Head : YOLOv3 + Decoupled head

공간구조의 정보를 유지하는 SPP Layer

해당 관련 논문 : https://arxiv.org/abs/1903.08589 참고 바랍니다.

 

 

- 먼저 Backbone인 DarkNet에서 feature map을 추출합니다.
- Neck에서는 위에 그림과 같이 공간구조의 정보를 유지는 SPP Layer를 사용합니다. ( 이와 관련된 내용은 추후 추가적으로 다룰 예정)
- 그리고 FPN을 통해 멀티 스케일 Feature map을 얻을 수 있습니다.
- Feature에 대한 성숙도가 낮은 아래의 Feature map의 문제를 개선할 수 있는데요.  high level의 extraction 정보를 더함으로써 아래의 Feature map이 지니고 있는 위치정보를 같이 활용할 수 있습니다.
- Dense Prediction을 보게 되면 위에서부터 큰 물체, 중간 물체, 작은 물체 순으로 detection하는 feature map

 

2. Network Design / Anchor-free

가운데 그림이 Backbon network를 거친 최종 피쳐맵을 의미합니다,
좌측의 경우 Anchor-free 우측의 경우가 Anchor-based 방법을 나타내고 있습니다.

Anchor-based

위의 그림을 보게 되시면 검은 점에서 prediction을 진행한다고 가정을 했을 때, 해당 Cell에서 Regression을 진행 후 나온 output값을 바탕으로 Anchor의 중심점과 가로와 세로의 길이를 결과적으로 bounding box의 가로 세로 길이와 중심점을 학습한다고 보시면 됩니다. ( 이는 네트워크마다 조금씩 다를 순 있습니다.) 여기서 예시를 보게 되면 하나의 Anchor box가 빨간색 박스와 파란색 박스를 만들었다는 걸 의미합니다. 여기서는 초로색 GT box와 초록색 box의 iou값이 높기 때문에 파란색 bounding box가 Positive 샘플로 분류가 됩니다. 빨간색 box는 학습에 참여하지 않음

 

Anchor-free

위와는 조금 다르게 Anchor-free에서는 GT box안에 있는 Cell들이 전부 Positive 샘플이 됩니다. 예를 들어 위에 그림과 같이 검은 점에서 prediction을 진행 한다고 했을 때, 해당 Cell에서부터 Ground Truth의 각 모서리까지의 길이를 학습하게 됩니다. 이를 바탕으로 Detectiion Task를 수행하게 됩니다.

 

 

  • Anchor-based design의 단점
    • 도메인에 specific해서 다른 데이터에 generalization 어려움 ( 최적의 anchor box 배치가 그 도매인에 specific하게 만듬 ) - ex) 데이터 셋에 따라서 aspect ratio 비율이 달라질 수 있음
    • head의 복잡성과 예측의 수를 증가
  • FCOS 방식의 Anchor-free design 적용
    • FCOS[1]는 anchor-based detector의 단점을 개선한 anchor-free detector
    • Bounding box regression의 범위를 feature level에 따라 pre-define
    • 같은 위치에서 여러 개의 bounding box detect 가능

어떤 point가 예측이 되면 그 point에서 실제 GT의 top,left,right,bottom의 차이를 학습

위의 그림을 추가적으로 설명하자면 YOLOX에서는 같은 포인트에서 두개의 Bounding box를 예측할 수 있는데, 그 이유는 낮은 feature level에서 하나만 예측하도록 ranage를 제한. 즉, feature level에 따라 range가 pre-define

 

 

 

 

2. Network Design / Architecture

  • Object detection에서 Classification과 Regression이 서로 상충하는 문제가 존재함[1](아래 논문 참고)
 

Rethinking Classification and Localization for Object Detection

Two head structures (i.e. fully connected head and convolution head) have been widely used in R-CNN based detectors for classification and localization tasks. However, there is a lack of understanding of how does these two head structures work for these tw

arxiv.org

  • Head를 Classification과 Regression으로 분리하고 IoU를 추가
    • feature map의 결과를 256 Channel로 줄이고  3x3 Conv를 지나는 2개의 branch를 추가
    • Classification에는 Binary Cross Entropy Loss를 사용해서 각각의 clss에 대한 확률이 나옴
    • Localization에서는 IOU Loss를 사용하여 Bounding Box에 대한 종횡거리가 나오게 됨
      • Loclization의 경우 Regression과 Objectness를 포함
        • Regression Bounding Box에 대한 종횡거리
        • Objectness의 경우 해당 cell이 백그라운드를 나타내는지 아니면 어떠한 오브젝트라도 포함하는지를 0~1사의 value로 표현
  • YOLOv3~v5에서 1개였던 기존 head를 분리하면서 수렴 속도와 end-to-end의 AP를 항샹시킴

 

3. Training Strategies / Strong data augmentation

저자는 여기서 총 4가지의 Data augmentation의 방법을 적용하였습니다.
1. Random horizon flip
2. Color jitter ( 원본 영상의 hsl을 변경하여 증강시키는 클러스터라는 방법 )
3. Mosaic ( 원본 이미지외에 3개의 추가적인 사진을 섞는 방법 )
4. Mixup ( 이미지랑 레이블에 다른 거를 조금씩 섞는 방법 )
( 강력한 Data aumentation을 사용해서 그런지 몰라도 pre-trained weight를 사용해도 성능향상이 별로 일어나지 않아서 scratch 학습을 진행했다고 하는데 일반적인 데이터 셋인 코코 데이터 셋에서 이러한 현상이 발견된 점은 신기합니다. )

3. Training Strategies / Multi-positive

기본적인 Ancor free 방법만으로는 Anchor-based의 정확성을 따라잡기 힘듬에 따라 여러 방법들을 적용하게 됨
1. Center-ness ( FCOS 논문에서 처음 제안)
  - 위의 사진과 같이 동그라미 점의 cell이 prediction하고자 하는 cell이라면 오브젝트 레이블이 좀 불분명한 점이 있습니다. 이러한 문제 때문에 detection ratio가 떨어진다고 생각해서 FCOS 저자는 positive한 셀들중에서 오브젝트의 중심에 해당하는 셀들만 positive로 할당하는  Center-ness 방법을 사용해서 정확도를 좀 더 항샹 시킴
2. Multi-positive
   - 중앙에 있는 셀 말고도 그 주위에서도 좋은 prediction을 할 수 있는 셀들을 사용하는 방법. 센터 말고 주위의 셀들도 prediction하는 방법
3. simOTA
   - 각 cell의 loss를 구해서, 각 Cell에서 Loss가 조금 낮은 애들만 top k를 뽑아서 학습시키는 방법. 예를 들어 그림에서처럼 사람 cell에 해당하는 9개의 sample중에서 5개는 loss가 낮은데 이 낮은 친구들을 positive sample로 사용하자는 의미. 라켓에 해당하는 cell의 경우도 파란색으로 5개가 loss가 낮음 이 친구들을 positive sample로 사용하자!!

 

4. Experimental results

5. Conclusion

  • 이 논문에서 anchor-free detector를 사용하여 YOLO 시리즈의 업데이트 버전을 제안
  • 최근 고도화된 detection 기술인 decoupled head, advanced label assigning strategy등을 사용해 속도와 정확성이 전반적으로 훌륭한 성능을 보임
  • 전반적으로 널리 쓰이는 YOLOv3의 아키텍쳐를 사용해서 AP(COCO)를 SOTA 최고로 개선시킴

'논문' 카테고리의 다른 글

Pose Estimation - HRNet 논문리뷰  (0) 2022.05.02
ResNet - 논문리뷰  (0) 2021.12.23
Pose Estimation
  • 주어진 영상 속 Human Object의 자세(pose)를 추정하는 것
  • 해당 과제는 아래와 같이 불리기도 함
    • Key-point detection, Pose recognition
      • Key-points : 사람의 자세를 구성하는 주요 관절 포인트 지칭
  • pose estimation : 특정 Pose를 만들어내는 Key-points들을 찾아내는 tast (= "Key-points Localiztion")
  • Task (Single Person)

1. HPE(Human Pose Estimation )Task의 경우 크게 2D, 3D로 나누어 집니다. ( 여기서는 2D만 다루도록 하겠습니다.)
2. 2D를 크게 Single Person과 Multi Person으로 나눌 수 있습니다.
3. 신체의 머리, 어깨 등의 keypoint를 예측하는 방법으로 Direct Regression 그리고 HeatMap Regression으로 나눌 수 있습니다.

 

Direct Regression : 2차원 이미지 픽셀 값을 입력으로 이용하여 바로 좌표를 추정하는 방법으로 빠른 학습이 가능합니다. 하지만 사람이 복수로 존재하는 경우 적용하기 어렵고 키포인트 위치가 매우 비선형적이고 적합하게 매핑하기 어렵다는 것이 한계점을 가지고 있습니다.

 

 

 

 

 

 

HeatMap Regression : 신체 부위 중 키포인트가 존재할만한 위치를 확률적으로 HeatMap를 계산하고 HeatMap을 기반으로 키포인트 위치를 추정하는 방법입니다. 보다 시각적으로 직관적이고 동시에 사람이 다수일 경우도 적용이 가능하다고 합니다. ( 대부분 HeatMap 베이스로 예측하는 것이 성능이 훨씬 좋다고 알려져 있습니다.) 따라서 논문 마지막 부분에서도 Heatmap 방식을 적용했다고 합니다.

 

 

 

 

 

 

  • Task (Multi Person)

1. Multi Person은 Top-down과 Bottom-up 방식으로 나누어 집니다.

 

  • Top-down
    • Top-down 방식은 먼저 사람을 찾고 그 각각의 사람을 대상으로 키포인트 디텍션을 진행하게 됩니다.
    • 왼쪽부터 오른쪽 순서대로 바운딩 박스로 각각의 사람을 디텍션 하게 되고 그 뒤에 바운딩 박스 내에 있는 사람의 키포인트를 찾는 방식
    • 바텀업 방법에 비해 속도가 느리지만 정확도가 높음

 

 

  • Bottom-up
    • Top-down 방식과 반대로 먼저 모든 키포인트들을 찾은 뒤에 그 각각의 키포인트들을 이어서 각 사람에 맞게끔 연결하는 방법
    • 일반적으로 바텀업 방법이 속도가 빠르지만 정확도가 떨어짐

HR-Net에 본격적으로 들어가기 전에 이전 방법들에 대해서 간단하게 설명하도록 하겠습니다.

 

위의 그림을 보게 되면 대부분 기존 방법들은 이미지를 고해상도에서 저해상도로 압축을 하고 저해상도에서 고해상도로 복원하는 과정을 거칩니다. 그리고 키포인트를 마지막 고해상도에서 찾습니다. 이러한 방법들을 이 논문에서는 직렬적인 시퀀셜한 구조라고 표현합니다.
왼쪽의 모델은 Stacked hourglass 모델로 symmetric하게 high-to-low에서 low-to-high로 진행되는 것을 볼 수 있으며 down sampleing 되기 전에 skip connection이 연결되어 feature 값이 전달되고 있음을 알 수 있습니다.
오른쪽의 모델 Simple Baseline의 경우 Strided Convolution으로 압축을 하고 Upsampling을 하는 과정에서 Transposed Convilution을 적용하게 됩니다.
이러한 직렬적인 구조는 압축하는 과정에서 지엽적인 정보들의 손실을 가져오게 되고 모든 프로세스가 upsampling에 의존하고 있다는 한계점이 있습니다.

HR Net도 위에 방법들과 기본적으로는 비슷하다. 근본적으로는 scale에 변화를 주면서 다양한 resolution에서 정보를 추출한다. 그럼에도 불구하고 다른 모델들보다 성능이 좋은 이유와 차별성에는 2가지가 있다.

1. High-to-low resolution을 Serially(X) Parallel(O)하게 적용한다. 이게 무슨 의미인지는 아래에 나와있다.

      기존 : Input받은 strand가 downsample 됨.

       HR : Input 받은 strand의 해상도는 쭉 유지가 되고 거기서 평행하게 downsample되는 strand가 분리된다.

 

이렇게 되면 최종적으로 predicted된 heatmap에 한번도 downsample/upsample되지 않은 input해상도 feature map이 영향을 주기 때문에 훨씬 정확하다.

 

2. Repeats multi-scale fusions

      기존 : 존재하는 대부분의 기법은 low-level and high-level representation을 더한다.

       HR : parallel한 sub-network간에 계속 정보를 주고 받는다. (그림을 보면 쉽게 알 수 있음)

 

같은 depth와 유사한 level의 low-resolution representation을 보조로 사용한다. predicted heatmap도 더 정확한 결과를 보인다.


결과적으로 HRNet의 경우 다양한 해상도의 subNet을 병렬적으로 유지함과 동시에 exchange unit을 통해서 전체적인 맥락과 국소적인 정보를 지속해서 교환하는 특성이 있다.


Parallel multi-resolution subnetworks (HR)

 

 

  • Nsr에서 앞자리는 stage, r은 downsample된 단계를 의미한다. \
  • Nsr은 첫번째 subnetwork(N11)의 해상도의 12r−1 
  • high-resolution subnetwork을 처음 stage로 시작한다.
  • high-to-low resolution subnetworks을 하나씩 추가한다.

 

Repeated multi-scale fusion

 

다양한 scale을 반복적으로 fusion하는 괴정에서 Exchage Unit이란게 사용된다.

Exchange Unit이란 병렬 subnetowrk간에 정보를 전달해주는 역할을 하는 유닛이다.

how Exchage unit aggregated info for high, medium and low resolutions

서로 다른 resulution의 정보를 합칠때는 적절하게 upsampling / downsampling이 필요하다. 

 

아래 그림은 stage 3를 여러 exchange block으로 나눈 그래프이다. Csrb는 r번째 resultion, sth stage, bth block의 convolution unit을 의미한다.

 

 

  • Csrb에서 s,b를 무시하고 r만 남겨놓는다. (resolution에 따른 차이만 보겠다는 의미)
  • Input response maps: {} (resolution 단계는 1~S)
  • Output response maps: {} (resolutions and widths = input)
  • Yk=∑i=1sa(Xi,k)   Each output is an aggregation of the input maps
  • Ys+1=a(Ys,s+1) → Last Exchange Unit

 

Heatmap Estimation

최종적으로 heatmap은 Last exchange unit Ys+1으로부터 나온 high-resolution representations output 으로 regress한다.

Loss Function은 평균 제곱 오차 MSE를 사용한다. 여기에 사용되는 GT heatmap은 각 keypoint에 2D 가우시안 분포를 적용해서 구한다.

 

Network Instantiation

ResNet 사용, resolution이 반으로 줄어들때마다 channel은 2배로 증가시킴.

 

 

3. Experiments

  • COCO dataset 사용
  • Evaluation Metric : OKS

 

OKS = ∑iexp(−di2/2s2ki2)δ(vi>0)∑iδ(vi>0)

 

 

RESULTS ON COCO

 



출처 :

https://www.youtube.com/watch?v=w39bjQxm1eg 

https://www.youtube.com/watch?v=GmANBttiHx4 

 

'논문' 카테고리의 다른 글

YOLOX 논문리뷰  (0) 2022.05.09
ResNet - 논문리뷰  (0) 2021.12.23

0. Abstarct

(0-1) Residual Learning Framework 제안

  • 특징 1 : 기존 Neural Network(ex : VGG)보다 Layer 수가 더 많아도 학습(train) 및 최적화(optimize)가 쉬움
  • * 학습 및 최적화가 쉽다 = Loss 값이 쉽게 떨어진다 = 최적의 딥러닝 모델 파라미터를 찾기 쉽다
  • 특징 2 : Residual Learning Framework의 깊이가 깊어져도(=Layer 수가 더 많아져도), 정확도가 꾸준하게 향상
  • * 정확도 : 이미지 내 클래스 분류 정확도 등등...
  • 특징 3 : 기존 Neural Network보다 더 많은  Layer 수를 가져도, 파라미터 수는 더 적음
  • * ResNet-152(layers)는 VGG-19보다 Layer 수는 8배 더 많으나, 더 적은 모델 파라미터 수(lower complexity)를 가짐

 

1. Introduction

(1-1) 네트워크의 깊이는 성능에 중요한 영향을 끼침

  • Deep Neural Network는 low/mid/high level features를 통합하고, 여러 개의 Layer에서 end-to-end 방식으로 class를 분류함

Layer에 따른 Feature map의 변화 도식도

  • 이때 feature의 level은 stacked layers 갯수(= Depth)에 영향을 받음
  • -> Neural Network의 Layer 수가 많아질수록 근사화(Approximation)가 강력해짐
  • * 본문에서는 근사화를 Identity Mapping 표현으로 대체
  • 최근 연구(본문의 참고 문헌 : 41, 44)에 따르면 Neural Network의 Depth는 성능(정확도) 향상에 영향을 줌

(1-2) 네트워크의 깊이가 깊어지면 발생하는 문제 : Gradient Vanishing/Exploding (소멸/발산)

  • Gradient Vanishing, Exploding 문제의 정의는 아래와 같음

Gradient Vanishing & Exploding ( 출처 : 위키독스 ) 

  • 그러나! 이러한 문제는 normalized initialization, iintermediate normalization layers, SGD 등을 통해 대부분 해결

    (1-3) 그럼에도 해결되지 않은 문제 : Degradation (성능 저하)
    • Degradation 문제 : Neural Network의 깊이가 증가할수록, 정확도는 포화되다가 급격하게 정확도 감소
    • -> Layer 수를 증가시키는 것은 딥러닝 모델에 높은 학습 에러값을 발생
    • 이러한 저하 문제는 오버피팅에 의해 발생되는 것이 아니며, 최적화가 쉽지 않다는 것을 보여줌
    • 단순하게 Layer 수를 증가하는 것은 성능 향상을 위한 해결책이 아님
     그림 1. Layer 깊이에 따른 train(좌)/test(우) error 비교 // 출처 : 원문
    • Neural Networks는 Layer의 이(Depth)가 깊어질수록 error가 증가하고, 그림 1에서 그 현상을 볼 수 있음
    • 왼쪽 그림 1 : CIFAR-10 데이터에 대한 Tranning Error
    • 오른쪽 그림 1 : CIFAR-10 데이터에 대한 Test Error
    • 빨간색 그래프 :  56-layer (비교적 깊이가 깊은 네트워크)
    • 노란색 그래프 :  20-layer (비교적 깊이가 얕은 네트워크)
    • * 번외 : iter과 epoch의 차이
    iter과 epoch의 차이


    (1-4) 본문의 핵심 아이디어
    • 핵심 아이디어 : Deep Residual Learing Framework를 소개함으로써 degradation 문제를 해결
    그림 2. 기존 Neural Network's Block VS Residual Network's Block

    • Underlying Mapping (기존 매핑) : 기존 Neural Network의 Output -> H(x)
    • Residual Mapping (잔차 매핑) : H(x) = F(x) + x               // x : Layer's input
    • 본 연구의 가정 : residual mapping이 unreferenced mapping보다 최적화하기 쉬움

    (1-5) Residual Mapping의 구현 : Short Connections
    • residual mapping(=F(x) + x)은 short connection에 의해 구현 가능
    • 그림 2의 오른쪽(residual block)에서 'identity'에 해당하는 곡선이 short connection에 해당
    • Short Connection의 역할 : Layer를 하나 혹은 그 이상을 skip & identity mapping 수행
    • * short connection에 layer 추가가 대신 identity short connection(layer의 입력을 그대로 출력부에 전송)을 사용하면, 추가적인 파라미터 수 혹은 computational complexity에 영향을 거의 주지 않음

    (1-6) 본문의 기여점
    • (1) Layer 수가 많아져도 최적화하기 쉬운 Deep Residual Learning Framework 제안 
    • (2) Layer 수가 많아져도 정확도 향상이 보증
    • (3) 특정한 데이터셋(ex : ImageNet) 뿐만 아니라 다양한 데이터셋(ex : CIFAR-10 등등)에서도 높은 성능을 보이며, 이는 범용적인 아이디어로 증명됨
    • (4) 기존 Network보다 Layer 수가 많아도, 파라미터 수는 적음 (=Lower Complexity)

    2. Related Work
    • * 해당 파트는 제가 전통 컴공생이 아닌 관계로... 깊숙하게 들어가지는 않고, 대략적인 흐름만 케치해보겠습니다!
    2-1. Residual Representations
    • 기존 image recognition에서 VLAD, Fisher Vector 개념이 등장
    VLAD // 출처 : 원문의 참고문헌 18
    • 이 개념을 적용하기 위해 편미분 방정식(PDE : Partial Differential Equations)을 풀어야함 (이미지는 2차원이니깐!)
    • 이 편미분 방정식을 풀기위해 residual 기법이 적용됐으며, 이는 기존의 풀이보다 최적화가 간단해짐

    2-2. Shortcut Connections
    • 기존의 gradient vanishing/exploding 문제를 해결하기 위해 몇몇 중간의 layer를 최종 layer(classifiers)에 연결함으로써 성능 향상을 시도
    • 본문과 비슷한 연구 주제로 "Highway networks // 참고문헌 42, 43"이 있으나, layer 깊이에 따른 성능 향상에 대한 지표를 제시하지 않음

    3. Residual Learning
    • 이 절의 내용은 (1-3), (1-4) 내용과 유사합니다.
    • 내용 요약 : 단순하게 Layer를 쌓는 형태는 identity mapping에 적합하지 않으므로(=Degradation 문제 발생), Residual Mapping을 통해 Degradation 문제를 해결할 것이다! 

    3-2. Identity Mapping by shortcuts
    • Residual Block을 다음과 같이 정의
    Residual Block 도식도
    Residual Block 수식
    Residual Block 수식 변형
    • x, y : Layer의 input, output
    • F(x, {W_i}) : Residual Mapping
    • W_1, W_2 : 첫, 두번째 layer의 가중치(=모델 파라미터)
    • σ : ReLU (Activation Function)
    • * Bias(편향)은 수식의 간략화를 위해 생략

    3-2.-(2) Shortcut Connection
    • F + x : shortcut connection에 의해 구현 가능
    • F와 x의 차원이 다르므로, 차원을 맞춰줘서 element-wise addition(단순한 행렬 합)을 진행해야 함
    • 본문에서는 1*1 conv layer를 활하여 Layer의 중간 output인 F와 차원을 맞춰줌
    W_s : 1*1 conv의 weight
    • 번외 : Residual Block의 Layer 수를 2개, 3개 혹은 그 이상으로 해도 상관 없으나, Layer 수를 1개만 했을 때는 효과가 거의 없었음
    번외에 대한 논문의 내용 // 출처 : 원문
    3-3. Network Architectures
    네트워크 아키텍쳐 예시 (좌 : VGG19, 중 : 34-layer Plaint, 우 : 34-layer Residual) // 출처 : 원문(1) Plain Network
    • VGG-19 아키텍쳐에 영감을 받음 & 3*3 conv filter 사용
    • VGG와의 차이점 1 : Max Pooling 대신 Conv layer에서 Stride 2를 사용하여 Feature Map의 size를 절반으로 감소
    • VGG와의 차이점 2 : Feature Map의 size가 절반으로 감소하면, 필터의 수는 2배로 증가시켜서, 레이어마다의 time complexity를 보존
    • VGG와의 차이점 3 : 위의 테크닉을 적용하여, VGG보다 레이어 수는 15개 더 많지만, 파라미터 수는 VGG19의 18%에 해당

    (2) Residual Network
    • Plain Network에 Shortcut Connection을 
    identity shortcuts을 적용한 수식
    • Identity Shortcuts은 input과 output이 동일한 차원일때 사용 가능
    • 차원의 증가하면, 2가지 옵션을 선택할 수 있음
    • (옵션 1) : 차원 증가를 위해 zero padding 적용 -> identity shortcuts 효과
    • (옵션 2) : 차원 증가를 위해 projection shortcut 적용 -> 1*1 conv를 활용

    3-4. Implementation
    • 데이터 증강을 위해 학습 데이터는 256~480 pixel 중 랜덤하게 resize된 후, 224*224 crop 적용
    • 혹은 horiziontal flip 적용
    horiziontal flip

    • 데이터 전처리를 위해 pixel mean subtracted 적용
    • 각 Conv layer와 activation function 사이에 Batch Normalization 적용
    • mini-batch 256으로 SGD 최적화 사요
    • 학습률은 0.1로 시작하다가, error가 감소되지 않으면 10으로 나눔
    • 학습 횟수 : 60*10^4 iter
    • weight decay : 0.0001
    • momentum : 0.9
    • No Dropout
    <테스트>
    • 테스트 방법 : standard 10-crop testing 적용
    10 crop test

    • multiple scales(224, 256, 384, 480, 640)에서 평균 점수를 사용

    4. Experiments(1) ImageNet Dataset
    • ResNet을 ImageNet 2012 classification dataset에서 top-1, top-5 error rate에 대해 평가(evaluate) 진행
    • * top-1, top-5 error에 대한 깔끔하게 정리된 설명이 얼마 없어서... accuracy로 대체합니다~
    top-1, top-5 accuracy의 정의

    • class 개수 : 1,000개 
    • 학습 데이터 수 : 128만개 (1.28 million)
    • 검증 데이터 수 : 5만개 (50k)
    • 테스트 데이터 수 : 10만개 (100k)

    (2) Architectures for ImageNet
    표 1. Architectures for ImageNet
    • ResNet 아키텍쳐 : conv 3_1, conv 4_1, conv 5_1에서 다운 샘플링 (with stride 2)
    그림 5. Basic Block(좌) VS Bottleneck Block(우)

    • Basic Block (그림 5의 왼쪽) : 한 블록에 stacked된 layer 2개 -> ResNet 18/34
    • Bottleneck Block (그림 5의 오른쪽) : 한 블록에 stacked된 layer 3개 -> ResNet 50/101/152

    (3-1) Plain Network for ImageNet
    그림 4. ImageNet 데이터에 대한 학습, 검증 에러 (Plain Net)

    표 2. ImageNet 검증 데이터에 대한 Top-1 error %

    • 표 2를 보면, PlainNet은 더 깊은 34-layer가 더 얕은 18-layer보다 더 큰 validation error를 가지고 있는 것을 보여줌
    • 그림 4에서도 plain-34가 plain-18보다 더 큰 train/val error를 가지고 있음을 보여줌
    • * 그림 4에서 굵은 선이 val error, 얇은 선이 train error
    • 결론 : plain에서는 degradation 문제가 관찰

    • 가설 1 : Gradient Vanishing에 의해 Degradation 발생
    • 가설 1에 대한 반박 1 : PlainNet은 Batch Normalization에 의해 학습되어, forward propagation은 0이 아닌 분산을 가짐
    • 가설 1에 대한 반박 2 : Backward Propagated Gradients는 BN과 함께 healty norms으로 보임
    • 결론 1 : forward 혹은 backward 신호(값)은 소멸(vanish)되지 않음!! -> Gradient Vanishing은 Degradation의 원인이 아님
    • 정확한 원인은 추후에 연구될 예정...
    • * Batch Normalization이란? : https://sacko.tistory.com/44
     

    문과생도 이해하는 딥러닝 (10) - 배치 정규화

    2017/09/27 - 문과생도 이해하는 딥러닝 (1) - 퍼셉트론 Perceptron 2017/10/18 - 문과생도 이해하는 딥러닝 (2) - 신경망 Neural Network 2017/10/25 - 문과생도 이해하는 딥러닝 (3) - 오차 역전파, 경사하강..

    sacko.tistory.com


    (4-1) Residual Networks for ImageNet
    그림 4. ImageNet 데이터에 대한 학습, 검증 에러 (ResNet)
    표 2. ImageNet 검증 데이터에 대한 Top-1 error %
    • 그림 4, 표 2에서 볼 수 있듯이, ResNet-34는 ResNet-18보다 성능이 향상
    • * Top-1 error 기준, 약 2.8% 향상
    • 이는 ResNet이 Degradation 문제를 해결했으며, Depth가 증가해도 정확도가 향상된다는 점을 보여줌

    • ResNet-34는 Plain-34보다 top-1 error가 약 3.5% 감소함 -> ResNet은 성공적으로 error를 줄일 수 있음
    • 반면, ResNet-18과 plain-18은 정확도가 비슷하지만,  그림 4를 비교하면 수렴 속도는 ResNet-18이 더 빠름
    • * 제 눈에는 둘다 비슷비슷 해보이는데... 논문에선 그렇다고 하니깐... 넘어가봅시다 ㅋㅋ
    • 즉, ResNet은 초기에 빠르게 수렴함으로써 최적화를 용이하게 함

    (5) Identity VS Projection Shortcuts
    표 3. ImageNet 검증 데이터에 대한 error 비율
    • Shortcut Connections에 3가지 옵션을 부여한 후, 성능을 비교
    • 옵션 A 
    • - 차원 증가를 위한 shorcut : zero-padding
    • - 그 외 : identity (parameter-free, 단순히 layer의 input을 더함)
    • 옵션 B 
    • - 차원 증가를 위한 shortcut : projection shortcut
    • - 그 외 : identity (parameter-free, 단순히 layer의 input을 더함)
    • 옵션 C :
    • - 모든 shortcut : projection shortcut
    projection shortcuts 예시 : 차원 수를 맞춰주기 위해 x와 내적되는 가중치 파라미터 존재<비교 1 : 옵션 A vs 옵션 B (표 3 기준)>
    • 옵션 B의 성능이 옵션 A보다 살짝 높음 (top-1 error 기준, 약 0.5%)
    • 이는 옵션 A의 zero-padding으로 추가된 차원이 실제로 residual learning이 없기 때문이라고 추측됨 (값이 0이기 때문)
    <비교 2 : 옵션 B vs 옵션 C (표 3 기준)>
    • 옵션 C의 성능이 옵션 B보다 살짝 높음 (top-1 error 기준, 약 0.3%)
    • 이는 projections shortcut에 의해 추가된 파라미터(W_s) 때문이라고 추측됨
    <표 3을 바탕으로 한 결론>
    • 옵션 A/B/C 간의 성능 차이가 작기 때문에, degradation 문제를 해결하기 위해 projection shortcuts이 필수적이 아니라는 것을 볼 수 있음
    • 따라서 본문의 후반에서는 memory/time complexity와 모델 사이즈를 줄이기 위해, 옵션 C를 사용하지 않을 예정

    (6) Deeper Bottleneck Architectures
    • Basic Block은 Layer가 50층 이상으로 깊어지면, 연산 효율이 좋지 않음
    • 연산 효율을 좋게 하기 위해, bottleneck block을 새로 디자인
    그림 5. Basic Block(좌) VS Bottleneck Block(우) // 출처 : 원문
    • Bottleneck Block은 3개의 Layer를 쌓음 -> 1*1, 3*3, 1*1 convolution으로 구성
    • Bottleneck Block은 Basic Block 보다 Layer 수가 1개 더 많지만, time complexity는 비슷
    • Bottleneck Block에는 옵션 B(차원 증가 shortcut : projection, 그 외 : identity)를 적용
  • (4-2) Plain Networks VS Residual Networks for ImageNet
  • (3-2) Plain Network에서 발생하는 Degradation의 원인 분석
  • 4-1. ImageNet Classification
  • <학습 관련 인자>
  • 3-2.-(1) Residual Blcok
  • 3-1. Residual Learning
  • * 1x1 conv이 연산 효율이 좋은 이유 : https://hwiyong.tistory.com/45
     

    1x1 convolution이란,

    GoogLeNet 즉, 구글에서 발표한 Inception 계통의 Network에서는 1x1 Convolution을 통해 유의미하게 연산량을 줄였습니다. 그리고 이후 Xception, Squeeze, Mobile 등 다양한 모델에서도 연산량 감소를 위해 이..

    hwiyong.tistory.com


    4-2. CIFAR-10 and Analysis
    • class 수 : 10개
    • 학습 데이터 수 : 5만개 (50k) -> 학습 45k, 검증 5k로 split
    • 검증 데이터 수 : 1만개 (10k)

    (2) ResNet Architecture For CIFAR-10
    • 네트워크 input : 32*32 pixel (pixel mean subtracted 전처리 적용)
    • * 이미지 크기가 작기 때문에, 첫번째 레이어는 7*7 -> 3*3 conv layer로 변경
    • 레이어 구성 : 6n + 2 
    • * 6n : 3*3 convolutions
    • * 2 : Global average pooling layer & 10-way Fully-Connected Layer
    ResNet architecture For CIFAR-10
    Global Average Pooling 설명 // 출처 : https://gaussian37.github.io/dl-concept-global_average_pooling/
    • weight decay : 0.0001
    • momentum : 0.9
    • weight initialization 적용
    • Batch Normalization 적용
    • Dropout 미적용
    • mini-batch size : 128
    • GPU 2개 사용
    • 학습률 : 0.1 -> 32k iter에서 0.01, 48k iter에서 0.001, 64k iter에서 학습 종료
    • Data 증강 : 학습 데이터의 각 사이드에 4픽셀 씩 패딩 후, 랜덤하게 32*32 crop

    그림 6. CIFAR-10에 대한 학습/검증 에러 결과 비교 (좌 : plain, 우 : ResNet)
    • n = 3, 5, 7, 9, 18을 적용하여 20, 32, 44, 56, 110 layer를 생성
    • * ex) n=3일 때, 6*n + 2 = 6*3 + 2 = 20 layer
    • CIFAR-10 데이터에서도, plainNet은 layer 수가 증가함에 따라 error가 증가하는 것을 볼 수 있음
    • * 점선 : train error, 굵은 실선 : test error
    • * Plain-110 layer는 error가 60% 이상이여서, 비교 대상에서 제거
    • 반면 ResNet은 Layer 수가 110개까지 증가해도, error가 감소하는 것을 볼 수 있음
    •  ResNet은 데이터셋 종류와 관계없이, 범용적인 알고리즘이라는 것을 증명

    (3) Analysis of Layer Responses
    그림 7. CIFAR-10에 대한 layer responses의 표준 편차(std)
    • 그림 7 layer responses의 표준 편차(std)를 보여줌 (after Batch Normalization, before activation function)
    • * 표준 편차의 정의 : 분산의 제곱근 -> 표준 편차가 작을 수록 평균 값에서 데이터(변량)들의 거리가 가까움
    • 결과 분석 1 : ResNet은 PlainNet보다 전반적으로 std가 작음
    • 결과 분석 2 : 깊은 ResNet(56, 110)이 얕은 ResNet(20)보다 std가 작음
    • 이러한 관찰로 봤을 때, ResNet은 PlainNet보다 최적화가 용이하고, Depth가 깊어져도 성능 향상이 보증

    (4) Exploring Over 1000 Layers
    그림 6. CIFAR-10에 대한 학습/검증 에러 결과 비교
    • n=200으로 하면, 1202-layer가 생성됨
    • * 위 그림 6 역시, 점선이 train error, 굵은 실선이 test error
    • ResNet 110과 1202를 비교했을 때, train error은 거의 유사
    • 그러나 test error는 ResNet 110이 더 낮음
    • ResNet 1202가 ResNet 110 보다 성능이 안좋은 이유는 overfitting이 원인이라고 추측됨
    • 이러한 overfitting은 DropOut등을 통해 해결할 수 있음
    DropOut 


    4-3. Object Detection on PASCAL and MS COCO
    • Object Detection에서 Backbone으로 ResNet을 사용하면, 성능 향상 가능
  • <결과 분석 1 : Depth에 따른 error 비교>
  • <그 외 학습 인자>
  • (1) CIFAR-10 Dataset

'논문' 카테고리의 다른 글

YOLOX 논문리뷰  (0) 2022.05.09
Pose Estimation - HRNet 논문리뷰  (0) 2022.05.02

+ Recent posts