(2022-07-20) 현재에도 많이 사용하고 있는 방법인 CSP에 대한 논문이다 

CSP는 계속돼서 사용되어 지금은 Modified CSPv6까지 나왔다 

개인적인 생각으로는 기존 residual shortcut을 몇 개의(2~3개의) convolution마다 진행했다면 CSP shortcut은 그런 residual shortcut 몇 개마다 진행한다. 

 

Abstract 

  • CSP : Cross Stage Partial Network 
  • 기존의 CNN들의 computation이 많이 소모되는 이유는 네트워크 최적화 내의 중복 기울기 정보(Duplicated gradient information) 때문이다 
  • CSPNet은 시작과 끝에서 feature map을 통합하여 기울기의 variability를 respect 한다
  • 결과적으로, ImageNet dataset에서 동등한 정확도로 20% computations를 감소시켰다 
  • CSPNet은 쉽게 적용할 수 있고 기존 shortcut 방식들을 대체할 수 있는 일반적인 구조이다. 
    - transition layer : BN + 1x1 conv + 2x2 avg pooling 
    - growth rate : Dense Block을 지날 때마다 증가되는 feature map의 사이즈 

Dense connection

 

1. Introduction 

  • Neural Network가 더 깊고 넓어질 수 록 더 강력함을 보여줬다
  • 그러나 이런 확장 구조는 매우 많은 computations를 필요로 한다 
  • 이전의 몇몇 접근법에서는 모바일 GPU를 기준으로 설계되었다 ( depth-wise separable convolution) 
    depth-wise separable conv는 ASIC(Application-Specific Integrated Circuit)과 호환되지 않는다. 
  • 이 제안의 초점은 기본 layer의 featuer map을 두 부분으로 나누어 제안하는 cross-stage hierarchy에 따라 mergeing 한다 
  • 중요 개념은 gradient의 흐름을 다른 두 개의 네트워크 경로에 나누는 것이다 
  • CSPNet에서 주로 다루는 문제는 3가지이다 
    1. CNN의 학습능력(learning ability) 강화 
        - 경량화하면서도 충분한 정확도를 유지 
        - ResNet, ResNeXt, DenseNet등에 쉽게 적용 가능하고 computation effort를 10~20%가량 줄이지만 정확도는 거의 떨어지지 않거나 outperform 
    2. Removing computational bottlenecks 
        - 너무 많은 computational bottleneck은 inference process에서 더 많은 cycles이 필요하게 된다 
        - utilization을 더 효율적으로 높이고 필요 없는 에너지 소모를 줄인다 ( 저자 중에 College of Artificial Intelligence and Green Energy National Chiao Tung Univ가 있는데 친환경에너지 쪽이어서 그런지 이런 이야기가 좀 있다)
        - YOLOv3 기반 모델에서 computational bottleneck을 80%가량 감소시킨다 
    3. Reducing memory costs 
        - DRAN은 비싸고 크기도 큰데 DRAM사용량을 줄이면 ASIC의 비용을 감소시킬 수 있을 것이다 
        - 메모리 사용량을 줄이기 위해 cross-channel pooling을 이용 - feature pyramid 생성 과정에서 feature map의 compress를 수행한다 
        - PeleeNet에서 feature pyramids를 생성할 때 memory 사용량을 75% 감소할 수 있었다 
  • CSPNet은 CNN에서 학습 용량을 증가시킬 수 있고 작은 모델에서 더 좋은 정확도를 얻을 수 있다. 
    GTX 1080ti에서 109 FPS, 50%의 AP50을 얻었다 
    - 메모리 대역폭을 줄일 수 있었고 Nvidia jetson TX2에서 42% AP50, 49 FPS를 얻었다 

 

2. Related work 

  • CNN architectures design 
    ResNeXt 저자가 width, depth의 channel보다 cardinality(gradient의 다양성)를 늘리는 게 더 효과적일 수 있다 했다
    a. DenseNet 
        - 출력의 결과물을 그대로 concatenates 하여 다음 레이어의 인풋으로 사용했다 이러한 방식은 cardinality를 극대화할 수 있다
    b. SparseNet
        - dense connection은 exponentially spaced connection을 하여 parameter의 utilization을 효과적으로 개선할 수 있다 또한 높은 cardinality와 sparse connection이 gradient combination의 concept으로 왜 네트워크의 학습능력을 향상할 수 있는지 이유를 설명하고 partial ResNet(PRN)을 개발했다 

 

3. Method 

  • Cross Stage Partial Network 
    • DenseNet 
      아래 수식을 보면 DenseNet의 경우 역전파에서  $$ g_0, g_1,... g_{k-1} $$ 가 중복되어 사용됨을 볼 수 있다 
      이런 중복은 다른 레이어에서 같은 값을 중복해서 사용함을 의미한다 

 DenseNet에서의 순전파와 역전파 

 

  • 저자가 제안하는 CSPDenseNet은 입력 채널을 두 개의 파트로 분할한다 
    $$ x_0 = [x_0`, x_0``] $$ 두 개로 나누어진 파트는 스테이지의 마지막에서 직접적으로 연결된다 그리고 $$ x_0``$$ 는 dense block을 통과한다 
  • Dense layers의 출력 $$ [x_0``, x_1, ..., x_k]$$는 바로 transition layer를 통과하고 transition layer의 output $$x_t$$는 $$x_0``$$와 결합되고 바로 다른 transition layer를 통과하여 $$x_U$$를 생성한다. 

  • 위 공식을 보면 dense layer에서 들어오는 gradient 가 별도로 합쳐져 있음을 볼 수 있다 (gt) 
    또한 feature map x0`이 직접적으로 dense layers를 통과하지 않고 분리되어 통합된다 
    가중치 업데이트를 보면 두 갈래의 기울기 정보가 서로 중복되지 않는다. 
  • CSPDenseNet은 DenseNet의 feature reuse장점은 유지하면서 동시에 gradient flow를 truncation 하여 중복되는 gradient info의 과도한 양을 방지한다 
  • Partial Dense Blcok 
    - Incerease gradient path : feature map복사를 사용하여 gradient paths가 doubled 되는 것을 완화 
    - balance computations of each layer : 일반적으로 base layer의 채널의 개수는 growth rate보다 크다(input C 64, growth rate 32, 64,...) CSP는 base layer의 반절만 사용하기 때문에 계산 병목 현상의 절반 가까이를 효과적으로 해결할 수 있다 
    - reduce memory traffic : 총 m개의 dense layer가 있을 때
    $$ w\, \times \,h\, \times \, c,\, grouth\, rate\, :\, d, total \,m\, dense\, layers$$
    dense layer의 CIO(Convolution Input, Output)는
    $$ (c \times m ) + ((m^2 + m) \times d)/2 $$
    이고 partial dense block의 CIO는
    $$((c \times m)+(m^2 +m) \times d)/2$$
    일반적으로 m과 d는 C보다 매우 작기 때문에 partial block이 반절 가까이 네트워크 메모리 traffic을 절약할 수 있다 

 

 

  • 저자는 3가지 다른 방식의 Feature fusion 방식을 소개한다 
    1.  CSPDenseNet에 사용한 방식 두 갈래로 나누어진 경로에 하나는 Dense Block과 Transition layer를 지나고 그 뒤 두 갈래를 concatenate 한 후 다시 transition layer를 통과한다
    2. Fusion First는 두 갈래 중 하는 Dense Block을 통과하고 그 뒤 두 갈래를 합친 후 transition layer를 통과한다
    3. Fusion Last는 CSPDenseNet와 다르게 마지막에 두 갈래를 합치기만 하고 transition layer을 다시 지나가지 않는다
  • 위의 Fusion First와 Fusion Last는 다른 영향을 보여주는데 
    Fusion First는 두 갈래로 나뉜 기울기를 먼저 합친 다음 transition layer로 들어가기 때문에 많은 양의 기울기가 재사용된다 
    Fusion Last는 한 방향만 transition layer를 지나가고 그 뒤 두 갈래를 합치기 때문에 기울기의 흐름이 잘리기 때문에 기울기 정보가 재사용되지 않는다 
  • Fusion first는 실험 결과 Imagenet 데이터셋에서 computations는 효과적으로 감소되었고 정확도는 0.1% 밖에 감소되지 않았다
    Fusion Last 또한 computations는 감소되었지만 정확도가 1.5% 감소되었다 

일반 CNN에서의 CIO 계산 (출처 : HarDNet: A Low Memory Traffic Network )

  • 가정 1 
    - c 입력 채널 : 32 
    - m 몇개의 Dense layer : 3 
    - g growth rate : 32 
    $$ Dense \, layer :  (32 \times 3) + ((3^2 + 3) \times 32)/2 = (96 + (12 \times 32)/2 = 96 + 384 / 2 = 288 $$
    $$ partial \, dense \, block :  ((32 \times 3) + ((3^2 + 3) \times 32))/2 = ((96 + (12 \times 32))/2 = (96 + 384) / 2 =  240 $$
  • 가정 2 
    - c  : 4
    - m : 3 
    - g : 62
    $$ Dense \, layer :  (4 \times 3) + ((3^2 + 3) \times 64)/2 = (12 + (12 \times 64)/2 = 12 + 768 / 2 = 396 $$
    $$ partial \, dense \, block :  ((4 \times 3) + ((3^2 + 3) \times 64))/2 = ((12 + (12 \times 64))/2 = (12 + 768) / 2 =  390 $$
    - 채널과 growth rate의 차이가 매우 커야 Dense layer의 CIO가 더 커진다

ResNeXt에서 bottleneck 을 제거하고 transition layer을 사용하여 병목을 줄였다

 

4. Experiments 

  • Computational Bottleneck 
    기존의 ResXBlock에서 bottleneck layers를 제거하여 채널의 크기 변경을 감소시킴으로 인해 22%가량 computations를 감소시켰다 

PeleeNet에서 병목구간을 80% 가량 감소시켰다
ResNeXt에서 bottleneck layer를 제거함으로써 중간중간 아웃풋 채널의 개수가 일정하게 유지된다 ( computations 22% 감소 )

논문 : https://arxiv.org/pdf/1911.11929.pdf

 

최신 SOTA 모델인 YOLOX 논문이다 

기존 누구나 생각했던 YOLO의 문제점? 불편함이었던 사항들을 전부 수정한듯한 느낌이다 

기존 불편한점 : Anchor based model , Anchor 최적, ancho는 그저 mAP를 끌어올리기 위한 수단, 과연 coupled head는 regression loss와 classification loss, obj loss 중 어떤 게 더 많이 잘못됐는지 알고 있을까? end-to-end 학습을 위해 NMS를 없애고 싶다 

Abstract 

  • 기존의 YOLO 시리즈를 anchor-free로 변경하고 다른 디텍션 테크닉을 사용 
  • Decoupled head 
  • Leading label assignment strategy - SimOTA 
  • COCO 데이터셋에서 기존보다 3%정도 뛰어난 47.3%의 AP를 얻음 

Introduction 

  • 지난 2년간 객체인식 분야의 주된 관점은 anchor-free detectors와 end-to-end(NMS-free) detectors이다. 이런 기술들은 아직 YOLO시리즈에 접목되지 않았고 SOTA였던 YOLOv4와 YOLOv5 또한 anchor-based detector이어서 학습 시 hand-craft로 하이퍼 파라미터들을 수정해야 했다 
  • 저자는 기존의  YOLOv4와 5는 anchor-based에 과하게 최적화 되어있어 YOLOv3을 베이스 모델로 선택하였다 

YOLOX 

  • YOLOX-DarkNet53
    • YOLOv3 + DarkNet53을 베이스 라인으로 사용 
    • 300 epochs 학습 진행, 5 epochs는 COCO train2017로 warm-up 진행 
    • SGD momentum 0.9 사용 
    • Learning rate는 lr X BatchSize/64 ( linear scaling ), 초기 lr = 0.01
    • cosine scheduler 사용 
    • weight decay 0.0005 
    • batch size 128 ( 8-GPU) 
    • Input size = 448 ~ 832 ( 32 strides)
    • 모든 실험 FPS, latency는 모두 FP-16, batchsize 1 , Tesla V100으로 진행 
  • YOLOv3 baseline 
    • DarkNet53, SPP layer ( YOLOv3-SPP) 
    • 추가로 EMA weights updating 사용 ( EMA : Exponential Moving Average)
    • Cosine lr schedule 
    • IoU loss, IoU-aware branch
    • 학습때regression 브런치에 대해 IoU loss를 사용한 것이 큰 성능 향상을 불러왔다 한다 
    • Augmentations 
      • RamdomHorizontalFlip
      • ColorJitter
      • Multi-scale for data augmentation
      • Random Resized Crop은 Mosaic과 상충한다 생각되어 사용하지 않음 
  • Decoupled head 
    • 기존 객체인식에서 분류와 회귀의 잘 알려진 conflict가 있었다. 대부분의 decoupled head는 one-stage, two-stage에서 많이 사용되었지만 YOLO시리즈는 백본 및 feature pyramids가 지속적으로 변함에 따라 detection head는 coupled로 유지되었다 
    • 저자는 두가지 분석 실험을 통해 coupled detection head는 성능에 문제가 있단 걸 알았다 
    • YOLO의 head를 decoupled 로 변경하니 높은 성능 향상이 있었다 
      또한 decoupled head는 end-to-end 학습에 필수적이다 
    • Coupled head와 decoupled head를 비교한 결과 Coupled head에서는 4.2%의 성능 감소가 있었고 decoupled head에서는 0.8%의 성능 감소가 있어 YOLO detect head를 가벼운(lite) decoupled head로 대체하였다
      - 구체적으로 1x1 conv로 채널차원을 감소시키고 각각 두 개의 병렬 3x3 conv가 따른다

  • Strong data augmentation 
    • Mosaic과 MixUp 이용 – YOLOX의 성능을 boost함 
    • MixUp은 classification을 위해 design됐지만 객체 검출 학습에서 BoF(Bag of Freebies)로 수정되었다
    • MixUp과 Mosaic을 모델에 적용했고 마지막 15epochs에서는 close 하였다
    • Data augmentation을 사용한 후 ImageNet pre-training은 더 이상 효과를 보지 못했다 – 그래서 뒤의 모든 학습은 스크레치부터 학습하였다
  • Anchor-free
    • 기존의 YOLOv4, v5는 anchor-base 파이프라인으로 엥커 메커니즘은 많은 문제들이 있었다
      1. 검출 성능을 최적화하기 위해서는 엥커의 크기를 찾기 위해 클러스트링을 진행해야 한다. 이런 클러스트링은 학습 때마다 도메인을 특정(domain-specific)하게 되고 일반화에 좋지 않다
      2. anchor 메커니즘은 detection head의 복잡도와 이미지마다 예측하는 숫자를 증가시킨다. 이러한 메커니즘은 edge AI system에서 병목현상을 야기한다
    • Anchor-free detector는 디자인 파라미터의 수를 감소시키고 heuristic한 튜닝과 많은 트릭들(clustering, grid sensitive)이 필요하지 않게 된다
    • 기존의 YOLO를 anchor-free로 변경하는 것은 그렇게 어렵지 않다
      각 로케이션마다 3개씩 예측하던 것을 1개로 변경하고 직접 4개의 값을 예측하도록 하였다 (left-top corner, height, width)
    • location of each object as the positive sample and pre-define a scale range, as done in [29], to designate the FPN level for each object. – 이러한 수정이 파라미터와 GFLOPs를 감소시키고 성능을 증가시켰다
  • Multi positives 
    • 기존 YOLOv3의 할당 rule과 같게 anchor-free 버전 또한 하나의 positive sample을 할당하였다 ( 각 예측에 대해 다른 비슷하게 잘 예측한 예측은 무시)
      하지만 이러한 좋은 (할당하지 않는) 예측들은 가중치 update에 좋은 이득을 가져온다
      이러한 좋은 예측은 positive와 negetive와의 극심한 불균형을 완화시킨다
      저자는 간단하게 center에서 3x3 area를 positives로 정했다 – 이름은 center sampling이라고 했다
    • 결과적으로 45%로 성능이 향상됐고 ultralytics(YOLOv5 저자)의 yolov3의 성능을 이미 넘었다
  • SimOTA
    • Advanced label assignmetn는 객체 검출에 중요한 과정이다. 기존 저자의 연구인 OTA를 기준으로 4가지 insights를 정했다
      1. Loss/Quality aware 
      2. Center prior
      3. Dynamic number of positive anchors for each ground-truth
      4. Global view - 특히 OTA는 레이블 할당에 global 관점을 가지게 한다 
    • Optimal transport problem을 공식화할 수 있게 한다
    • 저자는 Sinkhorn-Knopp algorithm을 이용하여 OT problem을 해결한다.
      하지만 25%의 추가적인 학습 시간이 필요하다
      이것은 quite expensive 하기 때문에 OT(Optimal transport)를 간단히 한 SimOTA를 제안한다
    • Dynamic top-k starategy를 사용한다
    • SimOTA는 먼저 각 예측-GT 쌍에 대해 cost 또는 quality로 표시되는 pair 매칭 정도를 계산한다
    • Gt gi와 prediction pj와의 cost 계산은 다음과 같다 cij=LijclsLijreg 
      λ는 balancing coefficient
      LijclsLijreggt와 predictions의 classification loss와 regression loss를 뜻한다 
      그러고 나서 gt에 대해서 고정 중앙 영역 내에서 비용이 가장 적게 드는 Top-k 예측을 positive sample로 선택한다 
      마지막으로 이러한 positive prediction의 해당 grid는 positive로 할당된다
      k 값은 gt의 개수에 따라 다른 값을 가진다
    • SimOTA는 학습 시간만 감소시키는 것이 아닌 Simkhorn-Knopp algorithm의 solver 하이퍼파라미터들을 방지한다

  • End-to-End YOLO 
    • (Qiang Zhou, Chaohui Yu, Chunhua Shen, Zhibin Wang, and Hao Li. Object detection made simpler by eliminating heuristic nms. arXiv preprint arXiv:2101.11782, 2021)를 따라 두 개의 추가적인 conv, one-to-one label assignment, stop gradient를 추가한다
      1. 이러한 적용은 end-to-end 학습이 가능하게 하지만 약간의 성능 감소와 추론 속도 추가를 발생시킨다

  • Model size and data augmentation
    • 대부분의 모델에서 같은 룰을 적용했지만 augmentation 전략에서는 모델의 사이즈에 따라 몇 개의 차이가 있다 
    • 작은 모델의 경우(YOLOX-nano) 강한 data augmentation은 성능 감소가 따랐다 그렇기 때문에 MixUP의 경우 삭제하고 mosaic의 경우 scale range를 감소시켰다 [0.1,2.0] 🡪 [0.5,1.5]
    • 하지만 큰 모델의 경우 강한 augmentation이 성능 증가가 따랐다
      MixUP의 경우 기존의 버전보다 더 강하게 적용하였고
      Copypaste에서 영감을 받아 두 이미지를 혼합하기 전에 무작위로 샘플링된 scale factor로 두 이미지를 jittered 하였다
      MixUP에서 Scale jittering의 효과를 비교하기 위해 COPYpaste(YOLOX-L)와 비교하였다 ( Copypaste는 instance mask(segmentation)가 필요하지만 MixUP은 필요하지 않다)

 

이미지 시퀀스( 비디오) 입력을 받아 특징을 추출하는 방법 중 3D Conv를 이용한 방법에 대한 논문이다 

비디오를 사용하여 분석할 수 있는 분야는 행동인식, 추천, 검색, 순위, 이상행동 감지, 활동 이해 등이 있다 

 

Abstract 

  • 저자는 대용량 지도학습 데이터셋에 대하여 3D Conv를 이용하여 쉽고 효과적으로 시공간 특징을 학습함을 제안한다
  • 저자의 연구는 세가지 갈래를 찾았다 
    • 1.  3D conv와 2D Conv의  시공간 특징 학습을 비교 
    • 2. 3x3x3 conv kernel을 사용한 architectures가 가장 좋은 성능을 보임 
    • 3. 간단한 선형분류기를 이용하여 4개의 다른 밴치마크에서 SOTA를 달성 다른 2개의 밴치마크에서도 견줄만한 성과 달성 UCF101 데이터셋에 대하여 52.8% 정확도를 얻고 빠른 inference로 인해 계산에 매우 효율적이다. 
  • 최종적으로 C3D는 매우 간단하고 학습과 사용이 쉽다 

1. Introduction 

  • 인터넷이 빠르게 성장함에 따라 매분 수많은 비디오가 공유되고 있다. 정보의 폭발에서 비디오 분석은 다양하게 활용될 수 있다. 그렇기 때문에 비슷한 대용량 비디오 작업에 일반적인 비디오 설명기(descriptor)가 필요로 하게 되었다 
  • 저자는 효율적인 비디오 설명기에 4가지 속성이 있어야한다고 본다 
    • 1. Generic : 다양한 타입의 비디오를 잘 설명해야한다 
    • 2. Compact : millions 비디오를 작업할 수 있도록 딱 맞아야 한다
    • 3. efficient : 몇 천 개의 비디오는 real world시스템에 매분 적용될 수 있어야 한다 
    • 4. simple : 간단한 모델이 여야 한다 (ex : linear classifier - 저자는 linear SVM 사용)
  • 기존의 연구들의 대부분은 이미지를 이용한 분석이었다 해당 방법의 문제점은 시간적(temporal) 정보를 잃어버린다는 점이었다 그래서 저자는 시공간 특징을 학습하는 3D ConvNet을 제안한다
  • 이전에도 3D ConvNets을 이용한 연구가 있었지만 저자의 제안은 다양한 대용량 지도 학습 데이터셋 분석에서 좋은 성능을 보였다

2. Related Work 

  • Laptev and Lindeberg - spatio-temporal interest points ( STIPs) : Harris corner detector를 3D로 확장
  • SIFT and HOG : 3D로 확장함 SIFT-3D, HOG3D 
  • Dollar et al. - Cuboids features for behavior recognition
    (P. Dollar, V. Rabaud, G. Cottrell, and S. Belongie. Behavior recognition via sparse spatio-temporal features. In Proc. ICCV VS-PETS, 2005)
  • Sadanand and Corso - ActionBank for action recognition
    (S. Sadanand and J. Corso. Action bank: A high-level representation of activity in video. In CVPR, 2012.)
  • Wang et al. - Dense Trajectories (iDT) 'SOTA' 
    시간 정보와 공간정보를 따로 처리하여 SOTA 달성 Harris corner를 3D로 확장하고 Densely-sampled 된 특징 포인트들을 optical flow를 이용하여 추적한 후 수작업으로 만들어진 궤적을 추출
    성능은 좋지만 대규모 데이터 셋에서 다루기 어려움 - 계산량이 많음 
  • 강력한 병렬 처리기계로 인해 ConvNets는 좋은 성능을 보여왔고 human pose estimation에 대하여 이미지와 비디오에서도 좋은 성능을 보여왔다 
    A. Jain, J. Tompson, M. Andriluka, G. W. Taylor, and C. Bregler. Learning human pose estimation features with convolutional networks. In ICLR, 2014
  • ConvNets을 이용한 연구들은 좋은 성능을 보였지만 역시 다양하고 큰 데이터셋에서는 계산이 많이 필요하게 된다 
  • 3D ConvNet은 full 비디오를 입력으로 받기 때문에 대용량 데이터셋에도 scaling 이 쉽다 
  • 기존에도 3D Conv를 이용한 실험이 있었지만 저자는 3D Conv와 3D pooling을 이용하여 시공간 정보가 처음부터 끝까지 모든 레이어에 전파될 수 있도록 하였다 

3. Learning Features with 3D Convnets

2D Conv의 ouput과 3D Conv의 output에 대하여 3D Conv는 시공간 정보가 유지된다는 것을 보여주기 위한 그림 

  • 저자는 실험을 통해 어떤 kernel을 사용함이 최적의 성능을 보이는지를 실험한다 
  • Conv kernel의 표현 $$ c \times l \times h \times w  $$ 
    • c : 채널의 개수 
    • l : 프레임의 길이 
    • h , w : 프레임의 높이, 넓이 
  • pooling kernel의 표현 $$d \times k \times k $$ 
    • d : 시간적 깊이 ( frame 개수로 이해, 첫 번째 압축을 제외한 다음부터는 프레임 개수로 보기에는 무리가 있음)
  •  Common network settings
    • 101개의 다른 행동에 대하여 분류 
    • 모든 비디오는 128 X 171로 resize ( UCF101 데이터셋에 대하여 반절 정도임)
    • 비디오를 겹치지 않는 16개의 프레임으로 나누어서 네트워크에 인풋으로 사용 
    • $$ input : 3 \times 16 \times 128 \times 171 $$
    • jittering과 random crop(3x16x112x112) 사용 
    • 총 5개의 conv layers와 5개의 pooling와 2개의 FCL와 마지막에 softmax 사용 
    • 각 5개의 conv layers의 필터 개수는 64, 128, 256, 256, 256 사용 
    • 적절한 padding 사용 stride 1 사용 
    • 모든 pooing layer는 2x2x2 max pooling stride 1 사용 - 아웃풋은 인풋에 비해 8배 압축 
    • 가장 첫 번째 pooling layer는 시간적 정보를 너무 빠르게 합치지 않기 위해 1x2x2 사용 ( 2D pooling)
    • 두 개의 FCL은 2048의 아웃풋을 가지며
      학습은 scratch부터 학습
      mini-batches 30 사용
      init lr : 0.003  4 epochs마다 10씩 나눔 
      16번의 epochs가 지나고 학습 멈춤 
  • Varying network architectures
    • 저자가 메인으로 제안한 점은 어떤 커널이 가장 성능이 좋았냐다 그래서 Conv kernel에서 d에 해당하는 depth를 1~ 7로 변경하며 성능을 측정했다 ( depth 1은 2D와 같음)
    • $$ c \times d_i \times h \times w    $$
  • 실험 1
    • 모두 같은  kernel size  d : (1,1,1,1,1 ) ( 3,3,3,3,3) (5,5,5,5,5) (7,7,7,7,7)
  • 실험 2 
    • 증가와 감소 
    • (3-3-5-5-7) 증가 
    • (7-5-5-3-3) 감소
  • 각 실험에서 파라미터 개수의 차이는 마지막에 있는 FCL의 파라미터 개수 비중이 크기 때문에 너무 작아 별 상관하지 않았다는..... 

 

depth 3 이 가장 좋았다

 

  • 결론적으로 위 실험을 통해 depth는 3으로 고정하고 pooling도 첫 번째를 제외하고 2x2x2 사용하고 마지막 FCL들의 아웃풋을 4096으로 고정 
  • Dataset 
    • Sports-1M dataset에 학습 ( 가장 큰 비디오 분류 데이터셋 487개의 스포츠 종류 )
    • UCF101과 비교 - Sports-1M이 5배 많은 카테고리를 가지고 100배 정도 더 많은 데이터셋
  • Training
    • 렘덤으로 비디오에서 5개의 2초 길이 클립 추출 각 클립은 128x171로 resize 
    • 학습 시에는 공간, 시간적 jittering을 위해 16 x 112 x 112로 랜덤 크롭 , 50% 로 수평 반전
    • SGD mini-batch 30 사용 
      init lr 0.003 , 150K iter마다 2로 나눔 
      1.9M iter에서 학습 종료 ( 대략 13 epochs)
    • scratch 학습과 I380K에 대하여 pre-trained model을 fine-tuned 하여 사용 

최종 실험 아키텍쳐
기존 모델들과 성능 비교

  • What does C3D learn? 
    • 과연 3D conv가 어떤 것을 보고 판단하는지를 판별하기 위하여 deconvolution method를 이용하여 C3D를 설명함 
      (Visualizing and understanding convolutional networks. In ECCV, 2014)
    • C3D가 처음 몇 프레임에서는 모양에 초점을 맞추고 후속 프레임에서는 두드러지는 움직임을 추적한다는 것을 관찰함

  • 잘 보이지 않지만 첫 번째 체조 비디오의 경우 처음에는 사람에 대해 가중치가 활성화되어있고 후속 프레임으로 갈 수 록 사람의 행동에 가중치가 활성화됨을 볼 수 있음 
  • 두 번째 사진의 경우 눈에 활성화가 되어있고 후속 프레임에는 눈의 움직임에 가중치 활성화가 되어있음 

4. Action Recognition

  • C3D is compact
    • C3D의 compactness를 평가하기 위해 UCF101 데이터셋에 대하여 PCA를 사용하여 더 낮은 차원으로 projection 하여 linear SVM에 사용하여  정확도를 봄
    • 아래 그래프를 보면 더 낮은 차원에서 C3D의 정확도가 월등히 높은 것을 볼 수 있다 
    • fc6의 features를 추출하여 비디오에 대해서 좋은 일반적인 특징들을 학습하는지 보기 위해 t-SNE를 이용하여 시각화함

 

차원에 따른 정확도 그래프
t-SNE를 이용한 시각화

 

5. Action Similarity Labeling 

  • Dataset
    • ASLAN dataset 사용 - 3,631개의 비디오, 432개의 액션 클래스 
    • 두 개의 비디오를 보고 같은 행동인지 다른 행동인지 판별 
    • 데이터셋 10-fold 사용 
    • 테스트셋에는 한번도 본적없는 비디오를 이용하기 때문에 매우 도전적인 과제임 
  • Features 
    • 비디오를 8개의 프레임이 겹쳐지는 16프레임의 비디오 클립으로 자름 
    • C3D에서 prob 와 fc7, fc6, pool5 에서 특징을 추출함 - 각 feature를 평균한 뒤 L2 norm을 이용하여 계산
  • Classification model 
    • (A. Jain, J. Tompson, M. Andriluka, G. W. Taylor, and C. Bregler. Learning human pose estimation features with convolutional networks. In ICLR, 2014) 와 똑같은 설정 사용 
    • 4가지 타입 특징에 대하여 12개의 다른 distances를 제공( 48-차원 12 x 4 ) 
    • 각 distances는 서로 비교될 수 없기 때문에 각각이 0의 평균과 unit variance를 갖도록 독립적으로 정규화 

Action similarity 결과

 

6. Scene and Object Recognition 

  • Datasets
    • 다양한 장면 인식을 위해 두개의 벤치마크 데이터셋 사용 - YUPENN, Maryland
    • object recognition에는 egocentric dataset사용  일상용품 42종
    • YUPENN
      • 420개의 비디오 14개의 장면 카테고리
    • Maryland 
      • 130개의 비디오 13개의 장면 카테고리
    • Classification model 
      • 모든 데이터셋에 대하여 같은 특징 추출 설정 사용하고 선형 SVM으로 분류 
      • leave-one-out evaluation 사용 (leave-one-out evaluation protocol as described by the authors of these datasets.)
      • 비디오를 16개의 프레임으로 자르고 각 클립에서 가장 잘 발생하는 레이블을 정답 레이블로 설정
        클립에서 가장 자주 발생하는 레이블이 8 프레임 미만이라면 객체가 없는 negative 클립으로 간주하고 훈련과 테스팅 모두에서 버렸다

Imagenet과의 비교

7. Runtime Analysis

Method와 CPU GPU에 따른 속도 비교

Appendix 

  • 인풋 해상도의 효과 

  • C3D가 학습한 특징 시각화
    • conv2 a 
       - low-level motion pattenrns 학습 주로 움직임의 edges, blobs, short changes, edge orientation changes, color changes 
    • conv3b
       - 좀 더 큰 모서리 움직임 패턴, textures, body parts, trajectories 
    • conv5b
       - 움직이는 원형 물체, 자전거 타기와 같은, 움직임과 같은 더 복잡한 움직임 패턴을 학습함 

conv2a
conv3b
conv5b
conv5b
conv5b
optical flow와의 비교 - optical flow는 모든 픽셀에 집중하지만 C3D는 눈에 띄는 동작에만 주의를 기울임

 

기존 깊은 Convolution network의 vanishing gradient 문제는 Residual short cut을 통해 극복하였고 이제는 어떻게 하면 더 적은 파라미터로 좋은 성능을 낼 수 있는가가 되었다 

이후로는 어떻게 이전 레이어의 정보를 다음 레이어에 효율적으로 전달할 수 있는가? 가 주된 관심사가 되었다 

 

1. Abstract 

  • Cnn은 객체 인식 머신러닝에서 뛰어난 성과를 보였고 CNN에서 중요한 점은 네트워크의 깊이이다 LeNet부터 시작하여 Highway Networks, Residual Network들은 depth가 100이 넘게 레이어를 쌓았다 
  • CNN에서 네트워크가 점점 깊어지면서 생긴 문제점은 vanishing gradient와 washout이다. ResNet과 Highway Network는 Identity connection을 통하여 하나의 레이어에서 다음 레이어로 signal을 연결한다 
  • Stochastic depth shortens ResNet은 더 좋은 gradient flow를 위하여 학습중에 레이어를 무작위로 삭제하여 ResNet을 단축한다 
  • FractalNets은 네트워크에서 하나의 인풋에 대하여 여러 short paths로 나누어  Convolution을 적용하여 Residual을 학습하는 것과 비슷하게 네트워크를 깊게 쌓을 수 있
  • 위에서 설명한 네트워크들은 다양한 네트워크 구조와 트레이닝 절차에 대하여 다양한 접근법을 제시하지만 모두 같은 요점이 있다 - short path로 이전 레이어와 이후 레이어를 연결한다는 점이다 
  • 저자의 제안은 위에서 제안한 방식들에서 좋은 점만 빼서 네트워크안 레이어 사이의 최대의 정보 흐름을 보장한다 
    • 직접적으로 서로 다른 레이어를 연결한다 (feature map size를 amtching 한다 )
    • Feed-forward 특성을 유지하기 위해 각 레이어는 모든 이전 레이어에서 추가 입력을 얻고 모든 후속 레이어가 가진 feature-map을 전달한다 
    • ResNet과는 다르게 DenseNet은 Short cut을 summation하지 않고 concatenation 한다 
  • 이 연결패턴의 직관적이지 않는 부분은 기존 convolution net보다 더 적은 파라미터가 필요하다는 것이다 - 중복된 feature map을 다시 학습할 필요가 없기 때문에 
  • 각 계층은 이전 계층에서 상태를 읽고 후속 계층에 write 한다
    상태를 변경도 하지만 보존해야 하는 정보도 전달한다 
  • DenseNet은 네트워크에 추가되는 정보와 이전 레이어의 정보를 명시적으로 구분한다 
  • DenseNet은 매우 narrow 하다 ( 레이어당 12개의 필터 )
  • 각각의 레이어는 loss function과 원본 입력 signal의 gradients에 직접적으로 접근할 수 있다 
    또한 dense connection이 regularizing 효과도 있는 것을 관찰했다 
    overfitting을 감소시키고 학습 셋의 사이즈를 작게 가져갈 수 있다 

2. DenseNet

  • 기존의 ResNet의 공식은 \( x_L\) = \(H_L(x_L - 1) + x_L-_1) \)  이였다 
  • ResNet의 장점은 identity function을 통해 다음의 레이어에 이전 레이어의 가중치가 직접적으로 흐를 수 있다는 것이었다 하지만 여기서 identity function은 아웃풋 \(H_L\)은 summation울 포함하게 되는데 이는 정보의 흐름을 방해할 수 있다 
  • Dense Connectivity
  • 1) 모든 이후 레이어에 이전의 모든 레이어를 직접적으로 연결한다 

  • 2) \(x_L = H_L([x_0, x_1, ... , X_L-_1]\) 
  • 위의 수식은 x들끼리의 feature map의 size가 같지 않으면 실행될 수 없다 하지만 convolution network에서 필수적인 부분은 downsampling(pooling 레이어)이다. 
  • pooling을 가능하게 하기 위해 densely 연결된 dense block을 나눈다 ( 위 사진에서 Dense Block 1, 2, 3 ) 
  • 여기서 Dense Block 사이에 들어가는 Conv, Pooling을 transition layer라고 부르겠다 한다 
  • Batch norm과 1x1 conv, 2x2 avg pooling을 진행한다 

 

      • Growth rate 
      • 저자는 DenseNet에서 매우 narrow 한 레이어 구조를 갖기 위해 Growth rate라는 하이퍼파라미터를 추가하였다 
      • 해당 파라미터는 하나의 Dense Block을 지날 때마다 증가되는 feature map의 사이즈를 말한다 
      • 만약 \(H_L \) 이 k개의 feature map을 만든다면 다음 레이어는 \(k_0 + k x (L-1)\)의 input feature map을 가진다 

 

  • Bottleneck layers 
  • 각 레이어는 k개의 output feature-map을 가지지만 인풋은 더 크게 가질 수 있다 
  • 3x3 conv 이전에 1x1 conv를 이용하여 인풋 feature-maps의 개수를 줄일 수 있다 이는 또한 computational efficiency를 얻을 수 있다 - 이는 특히 narrow 한 DenseNet에 이점이 많다 
  • BN - ReLu - Conv(1x1) - BN - ReLu - Conv(3x3) 
  • 저자의 실험에 기반하여 각 1x1 conv가 4k의 feature-map을 생성하도록 한다 

 

  • Compression
  • 모델의 compactness(소형화)를 더 향상하기 위해 transition layer에서 feature-map의 개수를 감소시킨다 
  • Transition layer는 \(\theta m\)개의 output feature-map을 갖는다 0 < \(\theta\) < 1 
    DenseNet-C는 \(\theta\)를 0.5로 하였다 

 

  • Implementation Details 
  • 3x3 Conv는 입력에 대해 동일한 크기의 feature-maps를 유지하기 위해 zero padding 추가 
  • DenseBlock 사이에 transition layer추가 ( 1x1 conv, 2x2 avg pooling)
  • 마지막 레이어에는 global avg pooling 사용 
  • 각 3개의 Dense Block은 32x32, 16x16, 8x8의 feature map이 반복 
  • 기본 DenseNet 설정은 {L=40, k=12}, {L=100, k=12}, {L=100, k=24}
  • DenseNet-BC(B=bottleneck, C=Compression)는 {L=100, k=12}, {L=250, k=24}, {L=190, k=40}
  • ImageNet에서는 입력 이미지 224x224에 대하여 맨 처음 conv를 7x7 kernel에 stride 2 적용 

3. Experiments

  • 아래 그림에서 ResNet은 augmentation을 한것과 안한것의 정답률 차이가 컸는데 DenseNet에서는 작았다 이는 DenseNet이 보다 더 overfitting에 강하다는 것을 보여준다 
  • 파라미터 개수도 이전보다 작고 정답률이 향상됨을 볼 수 있다 

+는 augmentation한 것

  • Training 
  • 모든 데이터셋에 SGD 사용 
  • 초기 learning rate는 0.1로 하고 epochs가 50%, 75% 진행됐을 때 10씩 나눔 
  • ImageNet은 총 90 epochs에서 30, 60 때 10배씩 감소 
  • Weight decay 0.0001 이용, Nesterov momentum 0.9 사용 dampening 없이 
  • 다음에서 소개된 가중치 초기화 방식도 사용  ( K. He, X. Zhang, S. Ren, and J. Sun. Delving deep into rectifiers: Surpassing human-level performance on imagenet classification. In ICCV, 2015.)
  • Dropout 0.2 사용 ( 맨 처음 conv에서는 안 함)

4. Discussion 

  • 기존 ResNet과의 차이점은 단지 결합과 더함의 차이이다 하지만 이 작은 수정이 두 아키텍처의 동작을 크게 다르게 했다 
  • Input 결합의 직접적인 결과로 DenseNet은 이후의 모든 레이어의 feature map에 직접적으로 접근할 수 있었다 
  • 이는 네트워크 전체에서 feature reuse를 장려하고 더 딱 맞는(compact) 모델로 만들 수 있게 한다 
  • 모든 히든 레이어마다 classifier를 추가하는 Deeply-supervised Net과 비슷하고 차이는 하나의 loss function이 모든 레이어에 공유되므로 덜 복잡하다는 점이다 
  • 학습 중간에 무작위적으로 레이어를 삭제하는 stochastic depth regularization을 DenseNet에 이용하면 insight를 제공할 수 있을 거라 말한다 

  • 여기서 재밌는 그래프는 위의 feature reuse 그래프이다 
  • 실제로 모든 레이어가 이전 레이어의 feature-map에 접근하는지 알아보기 위해 레이어 s 와의 연결에 할당된 가중치 평균을 계산하였다 
  • 두 번째 세 번째 Dense block을 보면 맨 처음 source layer에서 뿌려지는 가중치가 일관되게 최소 가중치를 할당하는 것을 볼 수 있다 이는 transition layer에 의해 압축이 되었다는 것을 알 수 있다. 
  • 앞서 언급한 \(\theta\)에 의해 압축이 잘 됐다는 것을 알 수 있다 
  • 마지막 classification 레이어를 보면 Dense block 내부의 가중치를 전부 사용하지만 마지막 쪽 feature map에 집중하는 거로 보아 네트워크 후반에 생성된 더 높은 수준의 feature에 집중함을 알 수 있다

 

 

현재도 사용하는 방식은 Residual shortcut connection에 관한 내용이다.

다 읽고 나서 드는 생각은 논문이 정말 읽기 쉽고 다양한 실험들을 포함하고 있어 정말 좋은 논문인 것 같다

 

1. introduction

  • 이 시대에 깊은 convolution network가 이미지 분류 문제를 리드하고 있었고 대부분의 논문에서 네트워크의 깊이가 정답률과 error에 매우 깊은 상관이 있다고 본다.
  • 그럼 여기서 물음이 "더 좋은 네트워크를 만드는 것이 레이어를 더 쌓는거보다 쉬운가?"가 된다 
  • 당연히 그냥 레이어를 더 쌓는것이 더 쉬운 해결책이 될 것이다. 
  • 하지만 그냥 레이어를 쌓기만 한다면 어느 시점에서 부터 training error가 증가하게 된다. - degradation problem
  • 또한 제대로 초기화되지 않은 네트워크는 vanishing/exploding gradients가 발생했고 제대로 초기화가 됐더라도 학습이 수렴함에 따라 정확도가 포화되는(saturated) 문제가 발생하였다 이 문제는 overfitting 때문이 아니다. 
  • 저자는 더 깊은 신경망을 학습시키기 위한 deep residual learning framework를 소개한다
  • 몇개의 쌓인 레이어가 다음 레이어에 직접적으로 연결되는 대신 residual mapping에 맞도록 명시적으로 연결한다 
  • 공식으로는 F(x) := h(x)-x 가 되고 이는 F(x) + x := H(x)가 된다 
  • 이 논문에서 identity mapping이라는 말이 많이 나오는데 이 뜻은 residual mapping시에 다른 작업을 하지 않고 단지 더한다는 의미이다 
  • 본 논문에서는 shortcut connection을 identity mapping으로 하였다 
  • Identity shortcut connection은 추가적인 파라미터가 필요하지 않아 complexity가 증가하지 않고 모든 네트워크에 end-to-end 학습이 가능하다 
  • 또한 기존의 문제인 정확도 포화 문제에서 네트워크의 깊이가 증가함에 따라 쉽게 정확도의 증가를 얻을 수 있었다 

2. Related work 

  • - Residual Representations
    • 과거 논문에서 벡터 양자화의 경우 원본 벡터를 인코딩 하는 것보다 residual 백터를 인코딩하는 것이 더 효과적으로 나왔다
    • 이런 solvers는 솔루션의 residual nature을 인식하지 못하는 solver보다 더 빠르게 수렴한다 
    • residual을 이용한다면 더 좋은 reformulation과 더 쉬운 preconditioning 최적화를 보인다 
  • - Shortcut connection
    • 많은 실험과 이론이 있었고 오래 연구되어온 분야이다 
    • 이전의 실험에서는 MLP에서 네트워크 입력과 출력에 linear layer를 추가하는 것도 있었다

  • 또한 Vanishing/Exploding gradients를 피하기 위해 auxiliary classifier를 추가하기도 하였다 -(Inception network) 
    • 기존의 논문들은 shortcut connection에 의해 구현된 레이어 응답, gradients, propagated errors를 centering 하는 방법을 제안했다 
    • 저자의 작업과 비슷한 시기에 highway networks라는 shortcut connections와 gating function을 사용하는 것이 제안됐는데 이 gate(highway)들은 데이터에 의존하고 파라미터를 가지고 있다. 그에 반해 identity shortcuts는 추가적인 파라미터가 없고 gated shortcut이 0으로 근사될 때 highway networks는 non-residual function이 될 수 있지만 저자의 공식은 항상 residual function을 학습하게 된다 정대 closed 되지 않고 모든 정보는 항상 전달된다 
      - 아래의 그림을 보면 처음 값이 음수 일 때 H(x)가 ReLu라고 가정한다면 음수는 0이되어 해당 노드는 더이상 값을 전파하지 않는다 - 하지만 residual을 뒤에서 합쳐주게 되면 residual의 정보가 넘어가 0이 되지 않는다 
      하지만 0이 처음부터 입력으로 들어왔다면 해당 노드는 0으로 계속 유지된다 하지만 같은 계층의 다른 노드의 값이 0이 아니라면 해당 노드에서 전파된 값으로 인해 노드는 close 되지 않는다

3. Deep Residual Learning 

  • - Residual learning 
    • 여러 비선형 레이어가 복잡한 함수를 점근적으로 근사할 수 있다고 가정하면 H(Hypothesis)가 점근적으로 residual fucntion을 근사화할 수 있다 
    • F(x) := H(x) - x  -> F(x) + x := H(x) 다음 공식이 성립하고 이 공식은 학습의 용이함이 다를 수 있다 
    • 기존의 네트워크가 깊어지면서 성능이 감소되는 문제는 solvers가 많은 비선형 레이어에 의해 identity mapping을 근사하기 어렵다는 것을 의미하는 것으로 보인다 만약 identity mapping이 최적이라면 solvers는 identity mapping에 가까워지기 위해 단순히 많은 비선형 레이어의 가중치를 0이 되도록 할 수 있다 
    • Perturbation Theory : 해석적으로 풀 수 없는 문제의 해를 매우 작다고 여길 수 있는 매개변수들의 테일러 급수로 나타내는 이론, 파라미터들이 매우 작으므로 급수의 유한개의 항을 계산하여 근사적인 해를 얻을 수 있다 
    • 최적의 함수가 zero mapping 보다 identity mapping에 가깝다면 solver가 새로운 함수를 학습하는 것보다 identity mapping을 reference 하여 perturbation을 찾는 것이 더 쉬울 수 있다 

 

  • - Identity mapping by Shortcuts 
    • Shortcuts을 사용할 때는 일반 네트워크와 더해지는 부분을 제외한다면 complexity는 똑같다
    • 여기서 F와 x 의 차원은 반드시 같아야 하기 때문에 linear projection을 이용할 수 있다 (padding, 1x1 conv)
    • Residual function을 다양한 방법으로 적용할 수 있지만 이 논문에서는 2개 또는 3개 층에서만 Shortcut을 진행한다. 
    • 단 하나의 레이어에서 Shortcut을 이용한다면 이는 linear layer와 유사하기 때문에 y = W_1x + x의 이점은 관찰되지 않았다 

4. Network Architectures

  • - Plain network를 학습시킬 때는 두가지를 따랐다
    • 1. Output feature map의 size는 같다. 레이어는 같은 수의 필터를 갖는다 
    • 2. Feature map의 size가 절반으로 줄면 레이어당 복잡도를 유지하기 위하여 필터의 수가 두 배로 늘어난다
  • - Residual Network
  •  Plain network에서 shortcut connection을 추가하였다 
  •  Input과 output의 사이즈가 같다면 directly 연결하였고 dimensions가 다르다면 두 가지 옵션을 고려하였다 
    • 1. Shortcut이 여전히 identity mapping이라면 추가로 zero padding을 추가하여 diemnsions를 증가시켰고 이러한 방법은 추가적인 파라미터를 필요로 하지 않는다 
    • 2. 1x1 convolution을 사용하여 dimentions을 맞추었다 두 방법 모두 stride는 2로 수행된다 
  • - Implementaion
    • 256, 480 사이즈 이미지에서 랜덤하게 sampled 하였고 수평 반전, 픽셀 평균 빼기, color augmentation을 사용하였고 각 convolution과 activation 사이에 batch normalization을 사용하였다 
    • SGD를 사용하였고 mini batch size는 256 
      learning rate는 0.1 error가 변하지 않으면 10으로 나누었다 
      600000 iterations를 진행 
      weight decay는 0.0001
      momentur은 0.9 
      dropout은 사용하지 않음 
    • testing에서는 기존과 같이 10개의 crop에서 테스트 하고 fully-convolution form을 사용 결과 scores를 average 함
    • 18-layer의 plain/residual nets를 비교하였을 때 성공적으로 training error를 줄였고 정확도는 비슷하지만 18-layer ResNet이 더 빠르게 수렴하는 것을 보면 이는 최적화를 용이하게 한다는 것을 볼 수 있다 

  • Compare with zero-pad between projection 
    • A : zero padding 
    • B : 차원 증가시킬 때에만 projection 사용
    • C : 모두 projection 사용
    • A의 경우 다른 것보다 성능이 별로였는데 이유는 0으로 채워진 차원이 실제로 residual learning을 하지 않기 때문이라고 본다 
    • C의 경우 B보다 약간 좋은데 이것은 추가된 파라미터 때문이고 A/B/C 간의 차이는 projection shortcuts이 degradation problem을 해결하는데 필수적이지는 않다는 것을 나타낸다 
    • B/C의 경우 파라미터 증가에 따라 모델 사이즈와 복잡도, 메모리 사용량이 증가한다 

  • Deeper bottleneck Architectures 
    • 깊은 네트워크를 학습시키는 것은 트레이닝 시간에 대한 우려가 있다 
    • 그래서 깊은 네트워크를 학습시킬 때는 bottleneck design을 사용하였다 
    • 모든 residual fucntion을 3 layer마다 사용하였고 이 3개의 레이어는 1x1, 3x3, 1x1 convolution이다 
    • 1x1 conv는 차원을 늘리고 줄이는 데 사용되었고 3x3 레이어는 더 작은 입력/출력 차원으로 병목을 남긴다. 이 디자인은 비슷한 시간 복잡도를 갖는다 
    • Figure 5에서 identity connection은 bottleneck 구조에서 특히 중요한데 아래 그림에서 identity shortcuts을 projection shortcut으로 변경하면 shortcut은 두 개의 고차원으로 연결되므로 시간 복잡도와 모델 크기가 두배로 증가함을 알 수 있다 따라서 bottleneck architecture를 위한 설계는 projection shortcut보다 identity shortcuts이 더 효율적인 모델로 볼 수 있다 

  • 50-layer ResNet 
    • 기존 34-layer Resnet에서 3-layer bottleneck block으로 변경하였고 3.8 billion FLOPSs를 가진다
    • 3-layer bottleneck blocks을 사용하여 depth가 매우 증가하여 152개의 레이어를 쌓아도 VGG-16/19보다 더 작은 complexity를 가지고 더 정확하다 또한 기존의 네트워크의 깊이가 깊어짐에 따라 정확도가 감소하는 문제도 관측되지 않았다 

  • Analysis of Layer Responses
    • 각 3x3 laayer에서 BN뒤 non-linearity에 들어가기 전 레이어의 표준편차를 보았다
    • ResNet은 plainNet보다 더 작은 응답 강도(response strength)를 보여줬다 
    • 또한 ResNet-20,56,110간의 비교를 보면 더 깊은 ResNet이 더 작은 크기의 응답을 가짐을 알 수 있다
    • 레이어가 많을수록 ResNet의 레이어는 신호를 덜 수정하는 경향이 있다

  • Exploring Over 1000 Layers 
    • 1202-layer를 사용해도 최적화에 어려움은 없는 것을 보였지만 110-layer보다 더 낮은 결과를 보면 여전히 문제는 존재한다 
    • 두 네트워크가 비슷한 training error를 보이지만 정확도가 더 낮은 것을 보면 이것은 overfitting 때문이라고 보인다
    • 부족한 데이터셋으로 인해 불필요하게 레이어가 커졌다고 보인다 
    • maxout이나 dropout 같은 강력한 정규화 방식이 있지만 저자는 테스트를 진행하지 않았고 아마 효과가 있을 것이라고 생각한다 나온다

2014년 Imagenet Challenge에서 1등을 차지한 네트워크에 대한 논문이다 

 

요약

  • 이때 시대에 Inception 영화에서 나온 meme인 "We need to go deeper"에서 유래한 논문제목인가 보다 
  • 네트워크의 이름 또한 기존 neural net의 시조 격인 Le-Net에서 자신의 회사 이름 Google을 합쳐 냈다 보다
  • 중요한 내용은 어떻게 해서 좋은 performance와 computation을 가져왔는지 이다 
  • performance는 주로 네트워크의 depth와 width를 증가시켜는 추세인데 해당 과정은 계산 비용을 증가시켜 어떻게 하면 depth와 width를 늘리고 계산 비용을 최적화할 수 있을까? 
  • Hebbian principle이 나오는데 이 원리는 기본적인 neural network의 원리인 전파와 역전파의 토대가 된다 
    • Donald hebb이라는 캐나다의 심리학자가 시냅스의 연결강도 조정을 위한 생리학적 학습 규칙을 기술
    • 만약 연접(synapse)양쪽의 뉴런이 동시에 또 반복적으로 활성화되었다면 그 두 뉴런 사이의 연결 강도는 강화된다 
    • "Neurons that fire together wire together"
  • 22-layer의 GoogLeNet이라는 이름으로 ILSVRC14에 제출되었다

Introduction

  • 이 시기에 딥러닝은 dramatic한 성장이 이뤄지고 있었고 
  • 이것이 하드웨어의 성능향상, 큰 데이터셋, 큰 모델에 국한된 것이 아닌 몇 가지 새로운 아이디어와 알고리즘, 네트워크 아키텍처의 향상에서 비롯된 것이다
  • 본 논문에 제시된 네트워크는 2012년 같은 대회에서 1등을 차지한 AlexNet보다 12배 적은 파라미터를 사용하였고 정확도 또한 높았다 
  • Classification과 object detection 문제에 대해서 computation을 고려하기 위하여 이전에 나온 R-CNN을 참고하였다 나온다 
  • 모델은 추론시에 1.5 billion의 컴퓨팅 자원으로 곱셈, 덧셈 연산을 유지하도록 하였고 실환경에서 사용할 수 있도록 하였다
  • 모델의 구조는 기존에 나온 NiN(Network in Network)에서 파생하였다 
  • 주요 쟁점은 새로운 네트워크 구성을 소개하고 어떻게 네트워크의 depth를 증가시킬 수 있냐 이다 

 

Related work 

  • LeNet-5에서 시작된 CNN은 Conv layer를 쌓고 뒤를 따르는 FCL을 가지고 있다. 이러한 디자인은 여러 이미지 분류 대회에서 가장 좋은 결과를 가져오고 있고 최신 트렌드는 레이어 수의 증가와 레이어 사이즈의 증가이고 overfitting을 막기 위해 dropout을 사용한다 
  • Serre et al. [15]이 여러 스케일을 처리하기 위해 사용한 고정된 여러 사이즈를 가지는 Gabor filters 를 사용했듯이 
    • Gabor filter - 사람의 시각체계가 반응하는 것과 비슷한 외곽선을 검출하는 기능을 하는 필터 
  • Inception layers는 계속하여 반복되면서 22-layer의 deep model로 구성된다 
  • 기존의 Network in Network 모델은  1x1 conv layer를 이용하여 뉴럴넷의 표현력을 향상하고자 하였다 하지만 GoogLeNet의 경우 다른 의미로 제안한다 
    • 차원 축소 - 컴퓨팅 병목 제거 - 네트워크 사이즈 제한 
    • 이것은 네트워크의 성능 페널티 없이 depth만 증가시키는 것이 아닌 width 또한 증가시킬 수 있다 
  • R-CNN의 경우 색상과 superpixel(비슷한 영역끼리 묶은 하나의 픽셀)과 같은 저수준 신호를 우선 추정한 뒤 CNN 분류기를 통해 각 location별 카테고리를 정의한다 - 저자도 R-CNN과 같은 파이프라인으로 detection을 구성하였고 그 두 가지 단계를 강화하기 위해 앙상블과 다중 박스 예측을 사용헀다 

Motivation and High Level Considerations 

  • 정답률을 증가시키기 위한 가장 올바른 접근은 네트워크의 사이즈를 증가시키는 것인데 이런 경우 단점이 있다 
    • 큰 사이즈 라는것은 큰 파라미터를 말하고 특히 데이터셋은 제한되어있기 때문에 이것은 오버피팅 될 수 있다 
    • 큰 사이즈는 병목현상을 부를 수 있고 고급진 데이터셋은 만드는 것이 까다롭고 검수가 필요하고 전문지식이 없는 사람이 분류하기에 어려운 부분도 있다
    • 네트워크의 사이즈를 증가시키면 GPU 메모리 같은 Computational resources가 증가하게 된다 예를 들어 Conv layer가 chained 형태로 있다면 결과는 quadratic으로 증가되게 된다 - Quadratic growth - 제곱 형식으로 증가 - 이러한 용량의 증가는 대부분의 weight가 0이 된다면 많은양의 계산 자원이 낭비되게 된다 
    • 정답률을 올릴 때에도 size를 그냥 늘리는 것보다 컴퓨팅 자원을 효율적으로 분배하는 것이 좋다고 나오는데 해당 이유는 추측으로는 학습 속도이라고 생각된다 
    • 위 두가지 문제를 해결하기 위한 방법은 모든 레이어가 서로 Fully connected 된 것이 아닌 sparsely 연결되는 것이다 

Newwork in Network [12]에서 제시된 내용

Architectural Details 

  • Arora et al 이 제안한 마지막 레이어에서 layer 별로 통계 상관관계를 분석하여 상관관계가 높은 그룹으로 클러스터링 하는 구성을 제안한다 
  • Inception은 conv filter의 크기에 따라 다른 공간적 정보를 출력할 수 있다고 판단하여 여러 개의(1x1, 3x3, 5x5) conv filter를 사용하였고 또한 max pooling은 지금까지 많은 성공이 있었기에 사용했다 
  • 이러한 Inception module이 쌓이면서 출력되는 correlation statistics는 달라질 수 밖에 없다. 높은 추상화 features는 높은 layer에서 포착될 것이고 이는 더 높은 layer로 갈 수 록 3x3, 5x5 conv가 증가해야 한다는 것을 의미한다 
  • 큰 문제는 5x5는 자원을 많이 소모하는 것인데 이것은 pooling units를 추가하면 더욱 또렷해진다 pooling layer와 conv layer의 출력을 합치면 단계에서 단계로의 출력의 수가 증가고 이는 computational blow up을 부른다 
  • 비교적 큰 이미지 patch에서는 저차원의 embeddings도 많은양의 정보를 포함하고 있을 수 있다 하지만 embedding은 정보를 밀도가 높고 압축된 형태로 나타내며 압축된 정보는 모델링하기 더 어렵다 대부분의 영역에서의 표현이 희박하게 더 유지하기 위해 신호를 일괄적으로 합쳐야 할 때마다 압축한다 그렇기 때문에 컴퓨팅 자원이 많이 드는 3x3, 5x5 앞에 1x1 conv를 차원 축소를 목적으로 사용한다 
  • 낮은 레이어에서는 그냥 conv만을 이용하여 높은 레이어에서만 Inception module을 사용하였다

GoogLeNet 구조

GoogLeNet

  • competition에는 위와 같은 모델 7개 중에 6개를 앙상블 하였다 
  • 224x224 RGB 이미지를 일반적인 Normalization인 평균뺴기를 사용하였고 ReLu를 이용하였다 
  • 전체 레이어는 22개의 레이어인데 pooling까지 합치면 27개 모든 레이어를 합치면 100개 정도 된다 
  • 마지막에 linear는 fine-tuning을 위해 - label set에 맞게 하기 위해 사용하였다 
  • FCL(Linear)를 average pooling으로 변경하면 성능이 0.6%정도 향상됐다 
  • dropout의 사용은 FCL이던 average pooling이건 필수적이였다 
  • 중간에 auxiliary classifier라는 레이어를 추가하였다
    • 중간에 연결된 보조 classifier를 통해 낮은 단계에서 discrimination을 encourage 하고 다시 전파되는 기울기 신호를 증가시키며 추가 정규화를 제공할 것으로 예상 
    • 위 사진에서 inception 4a와 4b에 추가
    • 학습동안 해당 loss들은 total loss에 더해져 함께 weight를 줄이는 데 사용됐다 
    • Inference time에는 discarded 

 

Training Methodology

  • ASGD(Asynchronous stochastic gradient descent - 0.9 momentum)
  • Learning rate schedule - decreasing 4% every 8epochs 

2014년 Imagenet Challenge에서 GoogleNet 다음으로 2등을 차지한 네트워크에 대한 논문이다 

 

요약

  • 학습에 사용된 데이터셋 : ImageNet LSVRC-2010 1000classes - validation set을 test set으로 사용하였다
  • Convolution Network의 depth는 모델의 정확도에 영향을 주지만 데이터셋에 의존된다
  • 3x3 Convolution filter는 매우 효과적이다 
  • 4GPU를 활용한 병렬 학습 

1. Network configurations 

  • 이 논문에서는 동등한 설정(Hyperparameters)에서 네트워크의 depth를 증가시킴에 따라 어떤 변화가 있는지를 측정하였다 
  • Architecture 
    • 고정된 224x224 RGB 이미지를 사용 
    • 전처리는 각 픽셀을 트레이닝셋의 RGB 값 평균으로 나누는 작업만 진행 
    • 기존에는 5x5 7x7 11x11등의 receptive field를 사용하였지만 이 논문에서는 매우 작은(상, 하, 좌, 우, 중앙의 의미를 담기에 가장 작은) 3x3 receptive field를 사용하였다 
    • 1x1 receptive filter도 사용하였는데 이것은 input 채널에 대한 선형변환, 또는 Test time에서의 multi scale input을 위한 layer이다 
    • Stride는 1로 설정하고 padding은 3x3 conv 에 대하여 1로 하였다 - 차원의 수를 그대로 가져가기 위하여 
    • Max pooling은 2x2의 window를 사용하였고 stride는 2로 하였다 - Overlapping pooling을 사용하지 않음 
    • ConvNet의 최종단에는 3개의 FCL을 이용하였고 처음 2개의 FCL은 4096개의 노드를 가지고 마지막 FCL은 클래스의 개수만큼인 1000개의 노드를 가지고 있다 
    • Acivation은 ReLU를 사용하였다. 기존 AlexNet에서 사용한 LRN은 실험결과 효과가 없어서 앝은 네트워크(11 Layers)에서 한번 사용해 보고 그 뒤로는 메모리와 연산량만 늘어난다 판단외어 사용하지 않았다 

input size가 224일 때의 네트워크

2. Discussion

  • 기존에는 첫번째 layer에 사이즈가 큰 receptive field를 이용하여 공간적 특성을 최대한 많이 얻고자 했지만 저자는 3x3 receptive field만을 사용하였다. 사이즈가 큰 receptive field는 여러개의 3x3 receptive field로 대체될 수 있다. 해당 작업에 대한 이득은 다음과 같다 
    • 비선형성 레이어의 증가 
      1. 한번의 큰 사이즈의 RF(Receptive Field) Conv layer의 아웃풋에는 한번의 activation이 적용되지만 여러개의 3x3 RF를 사용하면 여러번의 activation이 적용되어 네트워크의 비선형성을 증가시켜 특징을 식별하기 좋게 한다 
    • 총 파라미터의 감소 \(R^2C^2\) 
      • 3x3 RF 3개와 7x7 RF 1개의 아웃풋은 동일하다.
      • 3x3은 3x3x3x\(C^2\) 인 \(27C^2\)
      • 7x7은 7x7x\(C^2\)인 \(49C^2\)이 된다
    • 기존에도 3x3 RF와 1x1을 사용해 왔지만 기존 네트워크는 VGGNet처럼 깊게 구축되지 않았고 데이터셋 또한 깊은 ConvNet을 구성하기에는 작았다.
    • 본 논문에서는 다른 네트워크와 다르게 첫번째 Conv layer부터 3x3 conv를 사용함으로써 더 계산량이 적고 깊은 네트워크를 구축하였다 
    •  같은 년도에 1등을 차지한 GoogleNet의 경우 여러가지 receptive field를 사용하여 1등을 하였지만 저자의 네트워크보다 연산량이 다소 많았다

3. Training

  • 입력 이미지의 사이즈는 224x224로 고정하였고 SGD의 iteration마다 하나의 이미지에 한번 crop하였고 랜덤 수평전환과 RGB 색상 변환을 사용하였다 
  • 학습에는 Single Scale과 Multi Scale 두가지로 학습을 진행했다 
    • Single Scale - Crop을 하기 전 이미지의 size가 256x256 과 384x384로 하였고 384 size의 이미지의 경우 학습의 속도를 빠르게 하기 위하여 기존 256 size로 학습한 가중치를 initialize 하는데 사용하였다. 이때 learning rate는 기존 0.01보다 작은 0.001에서 시작하였다 
    • Multi Scale - 256~512 size로 이미지의 사이즈를 다르게 하여 crop하여 scale jittering과 같은 효과를 가져왔다 - 이때도 학습속도를 빠르게 하기 위하여 위에서 384 size로 학습된 single scale 모델을 fine-tuning 하였다

4. Testing 

  • Training scale(S)에 따라 여러가지 testing scale(Q)를 이용하면 성능이 향상됐다 한다
  • 마지막 FCL들을 testing에서는 모두 conv layer로 변경을 하였는데 첫번째 4096 FCL을 7x7 conv로 변경하고 그 뒤 layer들을 1x1 layer로 변경하였다. 다음의 이득은 아래와 같다
    1. Input size에 제한이 없다 - 다양한 해상도에 따른 클래스 수와 동일한 채널 수를 가진 class score-map이 생성된다 - class score-map을 spartial average하여 최종 결과를 도출하는 pooling 개념
  • 테스트셋을 수평반전한 이미지와 원본 이미지 모두 예측하여 softmax의 결괏값을 평균하여 최종 결과를 산출했다 
  • FCN - Fully Convolution Network로 변경한 후 test time에서는 이미지를 crop할 필요가 없었다 

최종 FCL이 Conv로 변경됨

 

Multi scale 시 conv 의 아웃풋의 width 가 증가하니 global average pooling 같은 개념을 사용하여 최종 값 도출

5. Implementation details 

  • C++ Caffe Toolbox를 사용 
  • 병렬 컴퓨팅에서 각 GPU마다 batch를 하나씩 나누고 gradient가 계산되면 평균을 구해 전체 gradient를 구했다 이는 single GPU로 계산했을 때와 동일한 결과를 도출한다 
  • 학습시간은 아키텍쳐에 따라 2~3주 소모하였다 

6. Single scale evaluation 

  • LRN을 사용하지 않았다 - ReLU의 경우 AlexNet에서는 LRN을 사용하여 하나의 노드가 다음 노드로의 영향을 끼치는 현상을 방지하려 했다. 하지만 VGGNet의 경우 해당 Normalization을 적용했을 때와 아닐 때를 비교해보니 연산량은 증가되지만 정확도 부분에서는 차이가 없어 11 layer에서만 테스트 해보고 사용하지 않았다 
  • Convolution layer가 깊어질 수 록 에러율은 감소하였다 하지만 데이터셋의 부족으로 19 layer 이상에서는 변화가 없어 더이상 depth를 늘리지 않았다 
  • 테스트한 모델중에는 1x1 conv와 3x3 conv를 비교한 실험이 있는대 해당 결과 1x1 conv보다 3x3 conv의 에러율이 더 낮았다 그 이유는 conv layer가 추가됨으로 인해 비선형성이 증가함에는 도움이 되지만 공간적 맥락(spatial context)을 잡는 부분에는 3x3이 유리했다고 생각된다 
  • 테스트한 모델중 3x3 conv 와 5x5 conv를 비교한 실험이 있는데 3x3이 7%정도의 에러율 감소가 있었다. 이를 보면 작은 여러개의 filter가 넓은 하나의 filter보다 성능이 좋음을 알 수 있었다 
  • 다양한 scale의 이미지를 훈련 했을 때가 256 또는 384 하나로 학습했을 때 보다 테스트의 에러가 작았다 - augmentation 효과

7. Multi scale evaluation

  • Trainng시의 input size와 Test 때의 input size가 너무 차이가 심하면 정확도가 떨어지니 각각 256, 384, 512 size S에 대해서 {S-32, S, S+32}로 평가하였다
  • Training시에 multi scale이 적용된 모델에 대해서는 더 넓은 범위의 스케일에 적용할 수 있으므로 {Smin, 0.5(Smin+Smax), Smax}에 대해서 평가하였다
  • Densly ConvNet과 scale jittering을 동시에 이용할 때 에러율이 가장 낮았다 - Densly ConvNet은 깊은 신경망으로 생각된다
  • Multi scale training + multi scale evaluation에서 가장 높은 정확도를 얻었다 

8. Multi crop evaluation

  • 위에서 설명한 multi-crop evaluation과 dense ConvNet을 비교한다 - dense Convnet은 이미지에서 이미지를 잘라낸 후 그것들을 각각 convnet에 적용시키는 방식이 아니라 큰 이미지에 대해 곧바로 convNet을 적용하고 일정 픽셀 간격으로 마치 sliding window를 적용하듯이 결과를 끌어낼 수 있어 연산량 관점에서는 매우 효율적이지만 grid의 크기 문제로 인해서 학습 결과가 약간 떨어질 수 있다. 
  • multi-crop을 사용한것이 더 정확도가 좋았고 둘을 모두 사용한것이 가장 정확도가 좋았다
  • 그 이유는 different treatment of convolution boundary conditions 때문이라고 가정한다 

2012 Imagenet Challenge에서 1위를 차지한 네트워크에 대한 논문이다. 

 

요약 

  • 학습에 사용된 데이터셋 : 1.2 million high-resolution images, (ImageNet LSVRC-2010), 1000 classes,
  • 모델의 파라미터 : 60 million, 650,000 neurons
  • 모델의 구성 ; 5conv, maxx-pooling, 3 FCL(Fully-Connected Layers), 1000 softmax, dropout  with 2GPU

 

1. 데이터셋 

  • 대회에서 사용된 데이터셋은 ImageNet dataset에서 각 카테고리별 대략 1000장의 이미지를 이용하여 총 대략 1.2 million의 학습 이미지와 5만 장의 validation, 15만 장의 testset을 기준으로 한다 
  • 해당 데이터의 size는 256x256이다 
  • 해당 논문에서는 이미지에서 각 픽셀 별로 전체 픽셀의 평균값을 빼는 전처리를 제외하고는 다른 전처리를 하지 않았다 
  • 3 채널의 RGB 데이터를 사용하였다 

2. 아키텍처 

  • ReLu (Rectified Linear Unit : 정류 선형 유닛) : 이전의 모델의 경우 sigmoid나 tanh(x)를 사용하지만 이 모델에서는 ReLu를 사용하였다. 
    - 이런 대규모 데이터셋을 학습시킬 때는 빠른 학습 속도도 중요하다. ReLu 같은 Non-saturating non-linearities 함수가 기존의 saturating non-linearities 함수보다 빠른 학습 속도를 가진다. 
    - 여기서 Non-saturating Non-linearities 함수는 입력 X가 무한대로 갈 때 함수의 값이 무한대로 가는 것을 의미하고 
      saturating Non-linearities 함수는 입력 X가 무한대로 갈 때 함수의 값이 어떤 범위 내에서만 움직이는 것을 의미한다 
    - 추가적으로 ReLu는 위에서 설명했듯이 함수의 값이 어떤 범위 내에서만 움직이는 것이 아니기 때문에 Gradient Vanishing에 강하다. 이런 깊은 신경망을 학습시킬 때 좋다 
  • 병렬 GPU 사용 
    - 저자가 사용한 GPU는 GTX 580이고 3GB의 memory를 가지고 있다. 이런 대용량의 데이터를 하나의 GPU에서 학습시키기에는 너무 대용량이다 - 깊은 신경망을 학습시키기에 충분하다. 그렇기 때문에 병렬 GPU 처리를 사용하였다
    - 학습을 시작할 때 첫 convolution에서 kernel별로 절반씩 서로 다른 GPU에 할당하여 각각 다른 영역을 계산하고 특정 layer에서는 각 output을 합쳐서 계산을 진행한다.
  • LRN( Local Response Normalization )
    - ReLu의 특성상 입력에 대해 positive 한 input이 생성되지만 저자는 일반화에 더 집중하고 싶어 해당 기능을 추가하였다.
    - Kernel의 특정 좌표 x, y에 pixel이 주변의 값들보다 너무 크지 않게 정규화하는 작업이다. 모든 좌표에서 앞 2, 뒤 2 커널들에 해당 좌표의 값들의 제곱합을 이용하여 해당 좌표의 값을 주변보다 너무 튀지 않게 변경한다 
  • Overlapping Pooling 
    - 이전에는 stride와 kernel size를 같게 하여 겹치는 영역이 없이 pooling을 진행했지만 수많은 이미지와 ReLu에서 특정 영역에 치중한 학습(Overfit)할 수 있어 해당 기능을 사용한 것 같다 
    - 예 : 차량의 경우 밝은 헤드라이트만을 보고 그 이미지가 차량이라고 예측할 수 있지만 겹치는 영역을 사용하면 라이트와 주변 값들에 대해서 더 고려하여 예측할 것이다.
    Overlapping pooling
    LRN(Local Response Nomalization)
    Sigmoid tanh ReLu
    전체적인 네트워크 구조

첫번째 Conv의 Kernel의 가중치를 시각화한 모양


3. 오버 피팅 감소 

  • Data Augmentation 
    - 256x256 이미지를 224x224 이미지로 랜덤 하게 Crop 하여 데이터를 생성하고 수평 반전을 이용하였다 
    - 추론에서는 이미지에서 각 코너별로 4개, 중앙 1개의 patch를 생성한 후 수평 반전을 하여 총 10개 의 이미지를 예측한 후 output의 평균을 최종 예측으로 하였다 
  • Normalization 
    - 모든 트레이닝 셋에 대하여 각 픽셀 RGB에 대하여 PCA를 진행하여 고윳값, 고유 백터와 평균 0, 표준편차 0.1을 가지는 가우시안 분포를 따르는 랜덤 값을 각 픽셀에 더하여 Normalization 하였다 
    - p : 고유 벡터, λ : 고윳값, α : 가우시안 랜덤 값 
    각 픽셀별 Normalize 공식 - 모든 RGB에 해당 값을 합
  • Dropout - 해당 시대에는 최신 기법

4. 학습 파라미터 

  • SGD 사용 
  • batch size = 128
  • momentum = 0.9
  • weight decay = 0.0005
  • learning rate = 0.01 - validation error가 계속 변하지 않으면 10으로 나눔 - 실험 중 3번 변경됨 
  • epoch = 90
  • 2개의 GTX 580 3GB로 5~6일 걸림 

+ Recent posts