현재 다른 페이지에 작성하고 있습니다.

6월 11일 안으로 작성이 완료되는대로 글을 옮겨적도록 하겠습니다.

안녕하세요.

이번 글에서는 아래 논문을 리뷰해보도록 하겠습니다.(아직 2차 검토를 하지 않은 상태라 설명이 비약적이거나 문장이 어색할 수 있습니다.)

 

※덧 분여 제가 medical image에서 tranasfer learning을 적용했을 때 유효했던 방법론들도 공유하도록 하겠습니다.

 

 

"Bag of Tricks for Image Classification with Convolutional Neural Networks"

 

Conference: 2019 CVPR

Authors: Amazon Web Servies

 

https://openaccess.thecvf.com/content_CVPR_2019/papers/He_Bag_of_Tricks_for_Image_Classification_with_Convolutional_Neural_Networks_CVPR_2019_paper.pdf

 

 

 

 

 

0. Abstract 

  • Data augmentation과 optimization 같은 training procedure refinements (학습 절차 개선)은 image classification 성능 향상에 큰 기여를 했습니다.
    • training procedure refinements라는 말이 모호하긴 한데, 이 논문에서는 CNN 구조(모델링) 관점에서 CNN 성능을 향상시키는 방법이 아니라, CNN을 학습시킬 때 어떠한 방법 (= training procedure) 을 사용해야 CNN 성능을 개선 (refinments) 시킬 수 있는지에 대한 방법론들을 의미하는 용어로 이해했습니다.
  • 지금까지 언급된 training procedure refinements 방법론들은 간략하게 detail한 정도로 언급되거나, source 코드를 들여다 봐야 알 수 있는 경우가 있었습니다.
  • 이 논문에서는 지금까지 언급된 training procedure refinements 방법들을 모두 모아 empirically (경험적으로) 실험하고 accuracy를 평가했습니다. 
  • 그 결과, ResNet-50 모델에 training procedure refinements 방법론들을 적용시켰을 때, top-1 accuracy는 75.3%에서 79.29% 까지 향상됐습니다.
  • 이렇게 향상된 CNN 모델은 transfer learning, object detection, semantic segmentation의 성능을 향상시키는데 좋은 영향을 미쳤습니다.
    • Transfer learning, object detection, semantic segmentation 모두 CNN을 backbone으로 사용하고 있습니다.
  • 즉, abstract 내용을 아래와 같이 요약정리 할 수 있습니다.

 

 

"우리 논문에서는 training precedure refinements를 위한 방법론들을 모두 적용시켜 CNN 성능을 향상시켰어!"

 

 

 

 

 

1. Introduction

1-1. 첫 번째 문단

→ CNN 모델 구조들의 간략한 history

  • AlexNet이라는 CNN 모델이 처음 등장한 후 VGG, Inception, ResNet, DenseNet, NasNet과 같은 여러 CNN 모델이 출현했습니다.
  • 이러한 CNN 모델은 image classification 분야에서 top-1 accuracy를 62.5%에서 82.7%까지 향상시켰습니다. 

 

(↓↓↓CNN 관련 내용 정리한 카테고리↓↓↓)

https://89douner.tistory.com/category/Deep%20Learning%20for%20Computer%20Vision/Convolution%20Neural%20Network%20%28CNN%29

 

'Deep Learning for Computer Vision/Convolution Neural Network (CNN)' 카테고리의 글 목록

#Interest: World History (The past) #Work: Deep Learning (The future) #Hobby: Music, Sports

89douner.tistory.com

 

 

 

 

 

 

1-2. 두 번째 문단

→ 모델링 위주의 CNN 연구도 중요하지만, CNN 학습 방법론들도 중요하다고 언급

  • 앞서 언급한 Top-1 accuracy의 향상은 대부분 CNN 구조를 모델링하는 연구에서 기인했습니다.
  • CNN 모델링을 하는 것 외에, training procedure refinements (ex: loss function, data preprocessing, optimization) 방법론들도 굉장히 중요하지만, 덜 주목을 받고 있습니다.

 

 

 

1-3. 세 번째 문단

→ "CNN 학습방법론들 적용 + 약간의 모델링 수정"을 통해 CNN 성능의 변화를 테스트

  • 이 논문에서는 아래 두 가지 방법을 기준으로 CNN 모델 성능 향상을 꾀했습니다.
    • Training procedure refinements
      • stride size, learning rate schedule 과 같은 요소들을 적절하게 변경해주는 방법 → 이 논문에서는 이러한 방법들을 trick이라고 표현 함 → "bag of = plenty of" 이므로, 다양한 tricks(=training procedure refinements)을 사용한다고 해서, 논문 제목을 "Bag of Tricks for Image Classification with Convolutional Neural Networks"라고 명명했습니다. 
    • Model architecture refinements
  • 객관적인 evaluation을 위해 다양한 CNN 아키텍쳐와 다양한 dataset을 기반으로 실험을 진행했습니다.
    • 예를 들어, 특정 dataset이나 특정 모델에서만 "Bag of tricks"가 적용되는건 의미가 없기 때문입니다.

 

 

 

1-4. 네 번째 문단

→ "CNN 학습방법론들 적용 + 약간의 모델링 수정"을 통해 CNN 성능의 변화를 테스트

 

  • 여러 trick들을 결합시키면 accurcy를 크게 향상시킬 수 있습니다.
    • ResNet-50을 기준으로 top-1 accuracy가 75.3에서 79.29까지 향상된 것을 확인 할 수 있습니다.
    • 이러한 training procedure refinements를 적용시켰을 때, 새로운 CNN 모델링 연구를 통해 개발된 SE-ResNeXt-50 모델보다 더 accuracy 성능이 좋은 것으로 나타났습니다. → 그러므로, CNN 모델링 연구 뿐만 아니라 training procedure refinements관련 연구도 중요하다는 것을 입증했습니다.
  • 이러한 training procedure refinements 방법론들은 ResNet-50 모델의 성능만 향상시킨 것이 아니라, 다른 CNN 모델들의 성능도 향상시켰으므로, 이 논문에서 제시한 "training procedure refinements" 방법론들이 특정 CNN 모델에 국한되지 않았다는 것을 보여줍니다.
  • 추가적으로, 이렇게 향상된 CNN 모델은 transfer learning, object detection, semantic segmentation 의 성능도 향상시켰습니다.
    • 왜냐하면 CNN이 backbone network 역할을 하기 때문입니다.

 

(↓↓↓CNN과 object detection 관계가 궁금하시다면↓↓↓)

https://89douner.tistory.com/81?category=878735 

 

3. Object Detection과 CNN의 관계

안녕하세요~ 이번글에서는 Object Detection과 CNN의 관계에 대해서 알아보도록 할거에요. CNN분야가 발전하면서 classification 영역에 엄청난 영향을 미친것처럼 동시에 Object detection 영역에도 굉장한 영

89douner.tistory.com

 

 

 

 

1-5. 다섯 번째 문단

→ 이 논문에서 앞으로 어떤 순서로 내용을 전개할지 언급

  • 이 논문은 다른 논문들 처럼 related work, method, experiment, result 순서를 따르지 않고 있습니다.
  • Section 2에서는 실험을 위한 기본적인 세팅들을 설명합니다. → 대조군(control group) 역할을 하는 모델을 설명한다고 볼 수 있겠네요. 
  • 이 논문에서는 크게 세 가지 방향(목적)을 갖는 개별 실험들 (Section3, 4, 5) 이 존재합니다.
    • Section 3: 몇몇 tricks들이 hardware 관점에서 효과적인 것을 보여주기 위한 실험들
    • Section 4: ResNet 모델의 구조를 약간 수정하면서 성능 효과를 꾀한 실험들
    • Section 5: 4가지 training procedure refinements를 적용해 성능 효과를 꾀한 실험들
  • 마지막 Section 6에서는 앞서 적용한 기술들로 성능 향상이 된 CNN이 transfer learning, object detection, segmentation에서 얼마만큼 좋은 영향을 끼쳤는지 볼 수 있습니다.

https://github.com/dmlc/gluon-cv

 

dmlc/gluon-cv

Gluon CV Toolkit. Contribute to dmlc/gluon-cv development by creating an account on GitHub.

github.com

 

 

 

2. Training Procedures

→ 여러 학습 방법론을 적용시키기 위한 baseline 모델이 있어야 한다. 여기서는 이러한 baseline 모델을 어떻게 training시키고, validation 했는지 설명한다. 

  • 이 논문에서는 아래와 같은 Batch 전략을 따르기로 했습니다.
    • Mini Batch 전략
    • b개수 만큼의 이미지를 하나의 batch로 설정 → 이 때, 뽑히는 이미지들은 uniformly distribution에 기반한 확률로 선별됩니다. (비복원 추출로 선별되는 듯 합니다)
    • K번의 epoch을 거치고 나면 학습을 종료합니다.

 

이미지 출처: https://m.blog.naver.com/qbxlvnf11/221449297033

 

(↓↓↓ Mini-Batch 관련 설명 ↓↓↓)

https://89douner.tistory.com/43?category=868069 

 

9. Mini-Batch (데이터가 많은 경우에는 학습을 어떻게 시키나요?)

Q. 굉장히 많은 데이터를 학습시키려고 한다면 어떻게 학습시켜야 하나요? 데이터 하나하나 단계적으로 학습시켜야 하나요? 안녕하세요~ 이번시간에도 DNN(Deep Neural Network) 모델을 좀 더 효율적

89douner.tistory.com

 

 

 

 

2-1. Baseline Training Procedure

  • 실험을 위해 ResNet을 baseline CNN 모델로 선정했습니다.
  • training을 위한 이미 전처리 or data augmentation 전략은 아래와 같이 설정했습니다.
  • 해당 전략들을 순차적으로 설명하도록 하겠습니다.

 

 

  • Step1: 이 부분은 Section 3에서 "3.2 Low-precision Training" 부분을 통해 더 자세히 설명 하도록 하겠습니다.

 

  • Step2: ImageNet의 원본 이미지 size는 굉장히 큰데, 이 크기에서 8%~100% 비율에 맞게 랜덤하게 crop 합니다. 이 때, 가로 세로의 비율은 3:4 or 4:3으로 설정합니다. 이렇게 crop된 이미지는 ResNet 입력 사이즈인 224x224로 resize됩니다.
  • Step3: 50%의 확률로 horizontal flip augmentation 기법을 적용합니다.
  • Step4: Scale hue, saturation, brightness의 정도(강도)를 결정하는 coefficients 를 [0.6~1.4] 범위로 설정해 줍니다.

 

 

  • Step5: PCA augmentation은 AlexNet에서 사용된 data augmentation 기법입니다.
    • PCA noise의 정도(강도)를 결정하는 인자 값은 normal distribution (확률분포) 를 기반으로 선별합니다.

(↓↓↓PCA augmentation에 대한 설명은 아래 글을 참고하세요!↓↓↓)

https://89douner.tistory.com/60?category=873854 

 

6. AlexNet

안녕하세요~ 이제부터는 CNN이 발전해왔던 과정을 여러 모델을 통해 알려드릴까해요. 그래서 이번장에서는 그 첫 번째 모델이라 할 수 있는 AlexNet에 대해서 소개시켜드릴려고 합니다! AlexNet의 논

89douner.tistory.com

 

https://github.com/koshian2/PCAColorAugmentation

 

koshian2/PCAColorAugmentation

PCA Color Augmentation in TensorFlow/Keras. Contribute to koshian2/PCAColorAugmentation development by creating an account on GitHub.

github.com

 

 

Step6: 이 부분은 normalization 전처리 기법인데, 해당 기법에 대한 자세한 설명은 아래 글을 참고해주세요!

 

https://89douner.tistory.com/42?category=868069 

 

8. 데이터 전처리 (Data Preprocessing and Normalization)

Q. DNN을 학습시키기 전에 왜 데이터를 전처리해주어야 하나요? 안녕하세요~ 이번시간에는 DNN 모델이 학습을 효율적으로 하기위해 필요한 정규(Noramlization; 정규화) 대해서 알아보도록 할거에요~

89douner.tistory.com

 

 

 

※ 여기서는 실제 논문에서 기재된 문단 순서를 조금 변경했습니다 (개인적으로 training 관련 내용들을 다 적어주고, validation을 언급해주는게 좋다고 봐서....) 

 

  • 가중치 초기화: Xavier → [-a, a] 범위에서 uniform sampling
  • Batch norm layer의 hyper-parameter인 값들을 다음과 같이 설정 (gamma=1, beta=0)
    • 이 부분은 "3.1 Large-bath training"에서 "Zero \(\gamma\)를 설명할 때 더 자세히 말씀드리겠습니다.
  • Optimizer: Nesterove Accelerated Gradient (NAG) descent
  • Epoch: 120
  • batch size: 256
  • Learning rate: 0.1
    • 30, 60, 90번째 epoch에 도달할 때마다 10을 나눠줌
      • epoch=30→0.01, epoch=60→0.001, epoch=90→0.0001
  • GPU: 8 NVIDIA V100 GPUs

(↓↓↓Volta가 궁금하시다면↓↓↓)

https://89douner.tistory.com/159?category=913897 

 

4.NVIDIA GPU 아키텍처(feat.FLOPS)

안녕하세요~ 이번글에서는 NVIDIA에서 출시했던 GPU 아키텍처들에 대해 알아볼거에요. 가장 먼저 출시됐던 Tesla 아키텍처를 살펴보면서 기본적인 NVIDIA GPU 구조에 대해서 알아보고, 해당 GPU의 스펙

89douner.tistory.com

 

 

 

  • Validation 할 때는 아래와 같은 방식으로 진행합니다.
    • ImageNet 원본 이미지에서 가로, 세로 중 길이가 짧은 쪽을 기준으로 256 pixel(길이)로 만듭니다. 이때, 더 긴쪽의 길이 또한 aspect ratio (가로, 세로 비율)을 유지해주면서 변경해 줍니다.
    • 이렇게 변경된 이미지에서 224x224 만큼 크기로 center crop 해주고, normalization 전처리 작업을 해줍니다.
    • 최종적으로 전처리가 된 이미지를 기반으로 validation을 진행합니다.

 

 

 

 

2-2. Experiment Results

  • 위에서 baseline으로 설정한 값들을 기준으로 ResNet-50, Inception V3, MobileNet 을 학습시키고 validation 했습니다.
  • Dataset은 ISLVRC2012 challenge에 사용된 데이터를 이용했습니다.
  • Inceptoin V3는 본래 입력 사이즈가 299x299이기 때문에, 앞서 언급한 224x224 resize 방식을 299x299 resize 방식으로 변경해 적용했습니다.
  • 아래 테이블은 실제 paper(←reference)에서 제시한 결과들과 자신들이 적용한 baseline을 토대로 얻은 결과값을 비교한 것입니다.
  • 이 후부터 적용할 여러 학습방법론들은 reference가 아닌 baseline과 비교해가면서 성능변화를 살펴볼 예정입니다. (당연히 자신들이 실험하는 환경의 baseline(=대조군)을 기반으로 여러 학습방법론들을 적용해야 유의미한 실험군이 되므로, 대조군과 실험군간에 비교가 유의미해집니다)

 

 

 

 

 

 

3. Efficient Training

→ Accuracy 성능을 떨어뜨리지 않으면서 빠르고 효과적으로 training 시키는 방법을 소개

  • 보통 하드웨어에서 말하는 trade-off는 speed와 accurcay의 관계를 의미합니다. 
    • speed를 키우기 위해서 하는 행위들이 accuracy를 낮추는 행위가 되기도 하기 때문에 서로 trade-off 관계가 성립이 됩니다.
    • 그래서 speed와 accuracy를 모두 취할 수 있는 적절한 지점 (optimal choices) 을 잘 찾아야 하죠.
  • 이 논문에서는 lower numerical precision과 larger batch sizes를 이용하여 model의 accuracy가 떨어지지 않으면서도 좀 더 빠르고 효율적으로 CNN을 training 시키는 방법을 제안하고 있습니다.

 

 

3-1. Large batch training

  • 이 글에서는 이미지 하나를 batch size로 잡기보단, 여러 이미지를 batch size로 잡는 mini-batch 전략을 세울 때 얻을 수 있는 장점과 단점을 이야기 하고 있습니다. → 즉, batch size를 키워줄 때 발생하는 장점과 단점을 설명하고 있습니다.
  • 먼저, 장점에 대해서 알아보고 단점을 알아보도록 하겠습니다.

 

[장점] Large Batch size → Increase parallelism and decrease communication costs

  • Parallelism과 communication costs에 대한 이해를 위해서는 CNN이 weight를 업데이트할 때 GPU내에서 어떻게 동작하는지 알고 있어야 합니다.
  • Parallelism과 Multi-GPU 
    • Step1. 각각의 GPU 딥러닝 모델을 복사해서 올린다. → 예를 들어, 3개의 GPU가 있고 각각 9GB라고 가정하고, 3G 크기의 딥러닝 모델이 복사되어 각각의 GPU에 업로드 된다고 하면, 현재 각각의  GPU (A, B, C)의 용량은 6GB의 여유 용량이 있다.
    • Step2. 자신이 잡은 batch size (mini-batch) 99라고 한다면, 각각의 A, B, C GPU 33개씩 이미지 데이터를 VRAM(비디오 메모리)에 할당한다. → 만약, 33개의 이미지 용량의 6GB를 넘는다면 GPU memory 에러가 발생한다.
    • Step3. 각각의 GPU는 자신들이 할당 받은 (해당 GPU 고유의) 33개의 error 값에 대한 (평균) loss 값을 계산한다.
    • Step4. 각각의 GPU에서 얻은 loss값을 다시 합산하여 GPU 개수 (여기에서는 3) 만큼 나누면 mini-bath size 만큼의 데이터에 대한 loss 값이 계산이 된다.
    • Step5. Mini-batch size loss 값을 각각의 GPU에 전달하면 mini-batch size 이미지들에 대한 gradient 값을 갖을 수 있게 된다.
    • Step6. 이후 같은 gradient 값으로 각각의 GPU에 있는 모델 parameter가 업데이트 되게 된다.
    • 결국, mini-bath size를 크게 잡을 수록 다수의 GPU를 (동시에) 최대한 활용하게 되며, 이를 통해 parallelism을 증가시킨다고 볼 수 있다.

 

  • Parallelism과 Single-GPU 
    • Batch size 만큼의 데이터가 GPU에 올라갑니다.
    • GPU를 활용한다는 것은 그만큼 병렬처리를 잘하기 위함인데, GPU 당 이미지 데이터를 하나만 cover하는 것 보다, 2개의 이미지 데이터를 cover하는 것이 GPU를 더 잘 활용한다고 할 수 있죠.
    • 즉, batch size를 크게 잡아줄 수록 그만큼 병렬성(parallelism)을 증대시킨 것이라고 할 수 있습니다.

 

(↓↓GPU 내부동작 살펴보기↓)

https://89douner.tistory.com/157?category=913897 

 

2.내장그래픽과 외장그래픽 그리고 GPU 병목현상(feat. Multi-GPU)

안녕하세요~ 이번글에서는 내장그래픽과 외장그래픽에 대해서 알아보면서 그래픽카드의 내부구조 동작 방식에 대해 간단히 알아보도록 할거에요. 그리고 딥러닝을 돌리시다보면 CUDA memory alloca

89douner.tistory.com

 

  • Communication cost와 GPU
    • Multi-GPU 측면에서 보면, 만약 각각의 GPU에 하나의 이미지만 할당된다고 하면 나중에 각각의 GPU에서 발생한 loss 값들 (=3개의 loss 값들) 을 최종 합산 해야 하는 빈도가 많아집니다. → 또한, 각 GPU에 평균으로 계산된 loss 값들이 전달이 되겠죠.
    • 각 GPU에 평균 loss 값을 전달하는 거리와, 33개의 데이터를 하나의 GPU 안에서 병렬처리 했을 때, 서로의 물리적 거리를 고려한다면 당연히 후자의 경우 communication cost가 적다고 할 수 있습니다.
    • Single-GPU 측면에서 봤을 때도, update 횟수가 잦아질 수록 communication cost가 커지겠죠. (딥러닝 모델이 GPU에 업로드 되어있다는 것을 상상해보세요! 업데이트가 잦을 수록 gradient 값들이 GPU 내에서 이동하는 횟수도 증가하겠죠?)

 

 

[단점] Large batch size → Slow down training progress + convergence rate decrease + degraded validation accuracy

  • Batch size를 키운다는 것은 speed 면에서 좋을 수 있지만, accuracy 면에서는 좋지 못할 수 있습니다.
  • "slow down training progress"라는 말은  global minimum loss에 도달하기까지 걸리는 training epoch의 횟수가 크다는 것을 말합니다.
    • 즉, GPU에서 학습하는 물리적인 속도를 의미하는 것이 아니고, optimization 측면에서 봤을 때의 학습속도를 의미합니다.
    • 예를 들어, batch size=1 인경우에는 training epoch=20 이라고 했을 때, batch size=20 으로 늘려주면 training epoch=40 이 되는 개념입니다. (→관련링크)
  • 이러한 근거로 convex problem이라는 용어를 사용했는데, convex problem 관점에서 봤을 때, batch size를 키워주면 convergence rate 이 좋지 않아지는데, 이것이 validation accuracy를 악화시키는 요인이 된다고 합니다. 
    • 이 부분은 convex optimization 관점에서 SGD를 이해하고 있어야 하는데, 추후에 convex optimization 정리가 다끝나면 해당 링크를 추가하도록 하겠습니다.
    • 이미 개념을 알고 있으시다면, "DON’T DECAY THE LEARNING RATE, INCREASE THE BATCH SIZE" 논문의 section 2를 참고하시면 될 것 같습니다.

 

(↓↓↓현재까지 정리되어 있는 convex optimization 내용들 ↓↓↓)

https://89douner.tistory.com/category/%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%88%98%ED%95%99/Convex%20Optimization 

 

'딥러닝수학/Convex Optimization' 카테고리의 글 목록

#Interest: World History (The past) #Work: Deep Learning (The future) #Hobby: Music, Sports

89douner.tistory.com

 

 

[Four heuristic methods]

  • 이 논문에서는 앞서 언급한 단점을 커버하는 4가지 heuristic한 방법들을 제시합니다.
    • Linear scaling learning rate
    • Learning rate warm-up
    • Zero gamma
    • No bias decay
  • 즉, batch size를 키우면서도 accuracy를 악화시키지 않고, training 효율성은 증가시키는 방식들을 제안합니다.

 

3-1-1. Linear scaling learning rate

→ batch size를 키워줄 때, learning rate을 어떻게 변화시켜주면 좋을지 설명하는 내용

  • (아래 그림과 같이 봐주시면 좋을 것 같습니다)
  • Mini-batch 방식으로 학습하면, Mini-batch  parameter updating 하게 되는데, 첫 번째 mini-batch에서 업데이트해서 조정된 parameter(weight)값들은 첫 번째 mini-batch에 특화되어 있을 가능성이 큽니다.
  • 예를 들어, 아래 그림에서 첫 번째 미니배치 업데이트 수식을 보면 해당 미니배치에 할당된 이미지들을 classification error값을 평균 냅니다. , 해당 미니배치에서 구성되어 있는 이미지들이 problem space가 되었을 것이고, 해당 problem space에서 SGD 방식이 진행되었을 것입니다.
  • 하지만, 두 번째 미니배치는 또 다른 이미지들의 집합이기 때문에 해당 이미지들을 평균적으로 잘 classification하기 위해 학습 할 것입니다. , SGD 방식은 같으나 첫 번째 미니배치에서의 problem space와는 다른 problem space에서 SGD 방식이 진행될 것 입니다.
  • 만약, mini-batch size가 커진다면 즉, 극단적으로 모든 이미지를 하나의 mini-bath size로 잡는다면 epoch당 학습하는 problem space는 매번 동일할 것입니다. → 배치 size가 커지면 커질 수록 mini-batch간의 error 값들이 서로 차이가 많이 안날 것이고 이에 따라 우측과 같은 표현을 할 수 있게 됩니다   "Increasing batch size does not change the expectation of the SGD but reduces its variance" 
  • 다른 관점에서 보면, batch size가 커질 수록 많은 데이터를 sampling 하기 때문에 결국 데이터 평균에 수렴한다는 중심극한정리 관점에서도 해석해 볼 수 있을 듯 합니다.

 

  • 일반적으로 batch size가 커질 수록 안전하게 학습이 됩니다. 안전하다는 말을 수학적으로 풀어 설명하려면 위에서 언급한 것처럼 convex optimization 관점에서 설명해야 하는데, 너무 길어질 듯하여 생략하도록 하겠습니다.
  • 개인적으로는 batch size를 크게 잡아주면 problem space(loss landscape)가 좀 더 global minimum을 찾기 쉽게 smooth해지는게 아닌가 싶습니다. (← 주관적인 해석이라 그냥 넘어가셔도 좋을 듯 합니다)

이미지 출처: https://arxiv.org/abs/1712.09913

 

  • 결국 안정화된 problem space 에서는 learning rate을 크게 잡아줘도 올바른 방향으로 학습을 할거라 생각합니다. (←이 부분도 주관적인 해석이니 넘어가셔도 좋습니다)

 

  • "Accurate, large minibatch SGD: training imagenet in 1 hour." 논문에서는 경험적으로 batch size가 증가하면, linear하게 learning rate도 증가시켜주는게 좋다고 합니다.
  • "Deep residual learning for image recognition" 논문에서는 batch size 256 일 때, learning rate 값을 0.1로 설정했고, 256 batch size 보다 크면 learning rate를 0.1보다 증가시켜주고, 256 batch size보다 작으면 learning rate를 0.1보다 감소시켜주는것이 좋다고 합니다.

 

  • 결과적으로 이야기하면, batch size를 키워주면 GPU를 최대한 활용할 수 있어 speed는 빨라집니다. 하지만, accuracy 성능이 크게 떨어질 수 있는데, learning rate을 linear하게 키워준다면 그나마 accuracy 성능이 감소하는 것을 상쇄해줄 수 있다는 것이 이 논문에서 주장하는 바 입니다.

 

 

 

3-1-2. Learning rate warmup

  • 초기에는 layer의 가중치 값들이 굉장히 불안정하기 때문에 너무 큰 learning rate를 적용하면 loss값이 지나치게 커저 gradient exploding 할 수 있습니다.
  • 그래서 학습 초기에는 learning rate를 낮게 설정해주고, 특정한 학습 단계에 도달할때 까지는 천천히 learning rate을 증가시켜주는것이 좋다고 합니다.
  • 이 논문에서는 아래와 같이 5 epoch에 해당하는 "m"개의 batch까지는 learning rate을 서서히 증가시켜줍니다.

 

 

(↓↓↓Warm-up 관련 github code↓↓↓)

https://github.com/ildoonet/pytorch-gradual-warmup-lr

 

ildoonet/pytorch-gradual-warmup-lr

Gradually-Warmup Learning Rate Scheduler for PyTorch - ildoonet/pytorch-gradual-warmup-lr

github.com

 

 

 

 

3-1-3. Zero gamma

→ Residual block에 위치한 Batch Normalization layer의 zero gamma 값을 0으로 초기화 시켜주면 초기학습 단계에서 더 적은 layer로 효과적으롤 학습할 수 있음 → Speed도 증가시키면서, accuracy 성능도 악화시키지 않음

  • 위에서 설명한 "All BN layers that sit at the end of a residual block"의 위치는 아래와 같습니다.

    • 첫 training에서는 gamma와 beta 부분이 0으로 설정되어 있기 때문에, block(x)값은 0이 됩니다.
    • 즉, 첫 training 시에는 학습에 관여하지 않게 된다는 말과 같습니다.
    • 결과적으로, 초기에는 "identity ResNet block" 부분이 관여를 하지 않기 때문에 layer 수를 급격히 줄인 상태에서 학습시키는 것과 같은 방식이 됩니다.
    • 개인적으로 봤을 때 layer들도 단계별로 warm-up 시켜 학습시킨게 아닌가 싶습니다.
    • 아무리 residual block으로 vanishing gradient 문제를 개선시켰다고 하더라도 그 문제를 완전히 해결 한 것이 아닙니다. 즉, vanishing gradient로 인해 초기 layer 부분에서 학습이 잘 안된 상태에서   layer 위주로 학습이 됐을 가능성도 있습니다.
    • 그래서, 초기에는 적은 수의 layer로 학습시켜 해당하는 8개의 layer를 안정화 시켰던 것 같습니다.
    • Gamma 값은 아래와 같이 업데이트 됩니다.

 

  • Batch Normalization 관련 설명도 제 블로그에 다루었으나, 최근에 나오는 paper들이 기존 BN 이론을 반박하는 내용들이 많아, 이 부분은 batch normalization 파트를 따로 개설해 정리하도록 하겠습니다.

 

3-1-4. No bias decay

→ bias, bath normalization's gamma and beta 에는 regularization을 적용하지 않는 것이 좋다

  • “Highly Scalable Deep Learning Training System with Mixed-Precision(Training ImageNet in Four Minutes)”논문에서 사용된 regularization 방식을 사용했습니다.
  • Weight에만 regularization을 적용하고, bias나 batch layer에서는 regularization을 적용하지 않았다고 합니다.
  • bias에도 regularization을 적용하면 모든 파라미터들의 값들이 0으로 수렴한다고 하는데, 이 부분에 대해서는 아직 명확한 이유를 모르겠어서 추후에 더 공부한 후 설명을 하려고 합니다 (뭔가.. 되게 기초적인 내용 같은데;;)
  • 위와 같은 이유 외에 bias에 regularziation을 적용하지 않는 다른 이유를 설명해보겠습니다.
    • Y=WX+B
    • Regularization is based on the idea that overfitting on Y is caused by W being "overly specific", so to speak, which usually manifests itself by large values of X's elements.
    • B merely offsets the relationship and its scale therefore is far less important to this problem. Moreover, in case a large offset is needed for whatever reason, regularizing it will prevent finding the correct relationship.

https://stackoverflow.com/questions/12578336/why-is-the-bias-term-not-regularized-in-ridge-regression

 

Why is the bias term not regularized in ridge regression?

In most of classifications (e.g. logistic / linear regression) the bias term is ignored while regularizing. Will we get better classification if we don't regularize the bias term?

stackoverflow.com

  • 결론적으로 말하자면, bias batch normalization gamma, beta overfitting에 기여도가 낮습니다.
  • 오히려, 이 부분에 regularization을 주면, underfitting이 일어날 확률이 더 커질 수 있다고 하니 regularization을 적용 할거면 weight에 대해서만 적용하는 것이 바람직하다고 설명하고 있습니다 (Ian goodfellow 저서인 Deep Learning 책을 보시면 설명이 나온다고 하니 참고하시면 좋을 것 같습니다).

 

 

 

3-1-5. Low-precision training

 

  • Votal 관련한 FP16 설명은 아래 글을 참고해주세요.

(↓↓↓FP에 대한 개념과 Volta 아키텍처에서의 Mixed precision 설명 ↓↓↓)

https://89douner.tistory.com/159?category=913897 

 

4.NVIDIA GPU 아키텍처(feat.FLOPS)

안녕하세요~ 이번글에서는 NVIDIA에서 출시했던 GPU 아키텍처들에 대해 알아볼거에요. 가장 먼저 출시됐던 Tesla 아키텍처를 살펴보면서 기본적인 NVIDIA GPU 구조에 대해서 알아보고, 해당 GPU의 스펙

89douner.tistory.com

 

 

  • 위의 설명은 아래 그림으로 도식화 할 수 있습니다. (FWD: ForWarD, BWD: BackWarD)
  • 간단히 설명하면 연산과정에서 forwarding하는 것과, gradient값을 구하는 과정에는 곱셈연산이 다수 포함되기 때문에 이러한 부분들은 FP16으로 처리하고, updating 시에는 이전 weight에 gradient값을 단순히 더해주기만 하면 되기 때문에 이 때만 FP32를 적용해 low-precision의 단점을 커버했습니다.

이미지 출처: https://arxiv.org/pdf/1710.03740.pdf

 

 

  • "Multiplying a scalar to the loss" 관련 내용은 loss scaling을 말하는 것으로써 자세하 설명하자면 아래와 같습니다.
  • Weight를 FP16으로 변환시켰을 때, 소수의 weight gradeint 값만 FP16으로 표현이 불가능하여 0값으로 설정된다고 합니다.

이미지 출처: https://arxiv.org/pdf/1710.03740.pdf

 

  • 하지만, activation gradient값들은 FP16으로 표현될 시 대부분 표현불가능해 진다고 합니다. 즉, activation gradeint 값들이 대부분 0이 되는 것이죠. (아래 Become zero in FP16으로 표현되어 있는 부분이 FP16으로 표현했을 때 activation gradeint 값들 대부분이 0됩니다.)

  • 이 때, loss값을 scalar만큼 곱해주면 당연히 gradient값도 커지게 되집니다.
  • 즉, loss scaling(=multiplying scalar to loss) 을 통해, activation gradeint 값을 조금씩 증가시켜주면 
    • ex) activation gradient = 0.00000000000000000000000000000001 FP16 표현 불가 → by loss scaling, activation gradient = 0.000000000000001 FP16으로 표현 가능

이미지 출처: https://nvlabs.github.io/eccv2020-mixed-precision-tutorial/files/dusan_stosic-training-neural-networks-with-tensor-cores.pdf

 

 

(↓↓↓loss sacling 참고할만한 사이트↓↓↓)

https://hoya012.github.io/blog/Mixed-Precision-Training/

 

Mixed-Precision Training of Deep Neural Networks

NVIDIA Developer Blog 글을 바탕으로 Deep Neural Network를 Mixed-Precision으로 학습시키는 과정을 글로 작성하였습니다.

hoya012.github.io

 

(↓↓↓Mixed precision and loss scaling 참고할만한 사이트↓↓↓)

https://nvlabs.github.io/eccv2020-mixed-precision-tutorial/files/dusan_stosic-training-neural-networks-with-tensor-cores.pdf

 

 

  • Batch size를 크게 키우면서 low-precision을 적용시킨 결과입니다. 학습은 빠르게 되면서 accuracy 또한 감소되지 않은 것을 볼 수 있습니다.
  • 특히 이러한 결과는 특정모델에 국한된 결과가 아니라 다양한 CNN 모델에서 발견됐기 때문에, 굉장히 유의미한 결과라고 볼 수 있습니다.

 

 

 

 

 

3-3. Experiment Results

  • 앞서 batch size를 키워줄 때 적용시켜줄 4가지 heuristic methods(="3-1"에서 언급)와 "3-2"에서 언급한 low-precision을 적용시켰을 때, accurcay의 변화에 대한 결과 입니다.
  • 논문에서는 이 결과에 대해 해석을 내놓고 있기는 한데, 개인적으로는 위와 같은 결과는 큰 의미가 없어보입니다.
  • 통계적으로 이러한 변화를 보려면 random seed 값을 다르게 해준 후, 적어도 30개의 결과 sample을 통해 비교해줘야 통계적 해석이 가능합니다.
  • 여기서는 seed 값을 어떻게 설정해줬는지 설명도 안나와 있는데, 만약 하나의 seed 값만 활용했던거라면, 다른 seed 값을 적용했을 0.xx% 의 차이는 충분히 바뀔 수 있습니다. (random seed에 따라 batch에 포함되는 이미지 순서도 바뀔 수 있으니.... → 참고로 학습하는 이미지 순서도 validation accuracy 결과에 굉장한 영향을 미칠 수 있습니다) 
  • 뒤에서 더 이야기 하겠지만, 개인적으로 Zero gamma와 FP16 부분이 흥미로웠는데, FP16은 Volta GPU 아니라 적용 못 시켜봤고, zero gamma 부분은 transfer learning에 맞게 변경시켜 적용시키니 유의미한 결과를 얻기도 했습니다. (→ 맨 뒤에서 간단히 추가 설명하도록 하겠습니다) 

 

 

 

 

4. Model Tweaks

  • Model tweaks 부분은 단순히 ResNet의 일부 구조를 변경시킨 것이라 특별히 설명할 부분이 없어서, 아래 사이트 링크를 걸어두었습니다.
  • 아래 사이트를 참고하셔도 되고, 충분히 논문의 그림만 보셔도 이해가 수월 하실거라 생각합니다.

https://phil-baek.tistory.com/entry/CNN-%EA%BF%80%ED%8C%81-Bag-of-Tricks-for-Image-Classification-with-Convolutional-Neural-Networks-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0

 

CNN 꿀팁 모음 (Bag of Tricks for Image Classification with Convolutional Neural Networks) 논문 리뷰

논문 제목 : Bag of Tricks for Image Classification with Convolutional Neural Networks 오늘은 Bag of Tricks for Image Classification with Convolutional Neural Networks에 대해 리뷰를 해볼까..

phil-baek.tistory.com

 

  • 만약, 해당 논문에 제시된 모델 중에 사용해보고 싶으신 모델이 있으시다면 아래 사이트에서 ResNet 부분을 참고하시고, pre-trained model을 이용하면 될 것 같습니다 (MXNET 기반입니다. Pytorch 버전은 추후에 추가할거라고 하네요)

https://cv.gluon.ai/model_zoo/classification.html#id239

 

Classification — gluoncv 0.11.0 documentation

 

cv.gluon.ai

 

 

 

 

 

 

 

 

5. Training Refinements

  • 앞서 배운내용을 잠시 정리하면 다음과 같습니다.
    • Section3: batch size를 키워주어 학습을 빠르게 진행하되 accuracy를 악화시키지 않는 방법들 소개
    • Section4: ResNet의 모델을 조금씩 바꿔주면서 accuracy를 향상
  • 이번 section5에서는 4가지 학습 방법론 (training refinements) 을 소개하면서 accuracy를 향상시키는 방법에 대해서 설명해보겠습니다. 

 

 

5-1. Cosine Learning Rate Decay

  • 앞서 특정 batch 까지는 learning rate warm-up 적용시킨다고 언급했습니다.
  • learning rate warm-up 이후에는 learning rate decay를 하게 됩니다.
  • 아래 그리처럼 epoch 마다 특정 learning rate 값을 설정해주면 step decay가 되고, batch마다 꾸준히 cosine annealing function을 이용해 learning rate 값을 줄여주면 cosine decay가 됩니다.
  • 이 논문에서는 처음 warm-up 단계에서의 batch 동안에는 이 함수가 적용되지 않기 때문에 실제 t값은 아래의 범위를 갖습니다.
    • t > total_number_of_batches_for_warm_up

 

(↓↓↓ Cosine learning rate 관련 github코드↓↓↓)

https://github.com/katsura-jp/pytorch-cosine-annealing-with-warmup

 

katsura-jp/pytorch-cosine-annealing-with-warmup

Contribute to katsura-jp/pytorch-cosine-annealing-with-warmup development by creating an account on GitHub.

github.com

 

(↓↓↓ Cosine learning rate 관련 pytorch코드↓↓↓)

https://pytorch.org/docs/stable/optim.html

 

torch.optim — PyTorch 1.8.1 documentation

torch.optim torch.optim is a package implementing various optimization algorithms. Most commonly used methods are already supported, and the interface is general enough, so that more sophisticated ones can be also easily integrated in the future. How to us

pytorch.org

  • 개인적으로 Medical imaging transfer learning을 위해 cosine annealing 기법을 적용시켜 봤을때, 큰 효과는 없었습니다. (Warm-up은 약간의 성능향상을 가져오긴 했습니다)

 

 

 

 

5-2. Labeling smoothing

  • 해당 논문에서 언급하는 label smoothing에 대한 직관적인 개념은 아래와 같습니다.
  • 보통 one-hot encoding labeling을 사용하게 되면 [0, 0, 0, 1, 0, 0, 0] 이런 식으로 실제 정답에 1을 부여하는 식으로 q분포를 설정해줍니다. 그리고, 딥러닝이 예측하는 p분포와 cross entropy 수식을 통해 점점 p분포와 q분포의 gap을 줄여주게 되죠.
  • 하지만 이러한 one-hot encoding 방식에는 직관적으로 봤을 때 여러 문제가 있습니다.
    • 예를 들어, 우리가 아래 이미지 대해서 정답 labeling을 한다고 해보겠습니다.
    • 여러분은 아래 이미지가 고양이다라고 100% 확신할 수 있으신가요?
    • 아래 이미지에는 안경, 책 같은 물체들도 포함되어 있는데 아래 이미지의 제목을 100% 고양이라고 붙이긴 힘들거라고 생각합니다.
    • 결과적으로, 딥러닝 모델에게 "이러한 이미지가 100% 고양이다"라고 하는 것 자체가 잘 못된 학습을 시켜주는게 될 수 도 있습니다. (실제로 "From ImageNet to Image classification" 이라는 논문에서는 ImageNet labeling에 대한 문제점도 제기하고 있죠)
    • 그 외에 다른 측면에서보면, 특정 label에 100%의 확률을 할당하는 건 딥러닝 모델이 해당 label 이미지에 overfitting하게 학습시킬 우려가 있습니다.
    • 위와 같은 이유로 [0, 0, 0, 1, 0, 0] → [0.1, 0.1, 0.1, 0.5, 0.1, 0.1] 와 같이 label smoothing을 적용시켜주어 위와 같은 문제를 피하려고 하고 있습니다. 

이미지 출처: https://all-free-download.com/free-photos/beautiful-cat-images.html

  • 논문에 있는 labeling smoothing을 적용시키는 q부분은 이해하기 어렵지 않습니다.
  • 하지만, 개인적으로 logPy에서 log와 exponential 함수가 합성함수 형태로 되어 있는 부분과, z에 대한 optimal solution 부분이 이해가 잘 안되어 이 부분에 대한 설명은 추후로 미뤄야 할 것 같습니다. (P분포와 Q분포의 차이를 줄여주는 관점을 또 다른 식으로 표현한 거 같긴한데, KL divergence 관점에서의 수식도 아닌거 같고.. 기본 지식에 대한 이해가 안되어 있는건지, 논문에서 설명이 부족한건지.. ;;)
  • 어떻게 적용하는지는 수식만 따라하면 하겠지만, 해당 수식에 대한 직관적인 이해가 잘 안되고 있어서 나중에 알게 되면 다시 수정하도록 하겠습니다.
  • 하지만, 논문에서 언급한 Labeling smoothing 적용 방법은 어렵지 않으니 논문을 보시면 쉽게 적용하실 수 있으실 겁니다.

 

 

 

 

5-3. Knowledge distillation

  • Knowledge Distillation에 대한 부분은 아래 카테고리에서 여러 Knowledge distillation 모델을 다룬 논문들을 게재하고 있으니 참고해주시면 감사하겠습니다.
  • 본래 Knowledge distllation은 Network compression에서 자주 사용되던 개념이었지만, 최근에는 KD를 학습방법론에 이용하기도 하고, 앙상블 관점에서도 응용해서 적용시키기도 하기 때문에 배워두시면 여러 방면에서 도움이 될거라 생각합니다.

https://89douner.tistory.com/category/Network%20Compression%20for%20AI/Knowledge%20Distillation

 

'Network Compression for AI/Knowledge Distillation' 카테고리의 글 목록

#Interest: World History (The past) #Work: Deep Learning (The future) #Hobby: Music, Sports

89douner.tistory.com

 

 

5-4. Mix-up training

  • Mix-up에 관한 설명은 "MixMatch; A Holistic Approach to Semi-Supervised Learning" 논문을 리뷰한 곳에서 자세히 설명되어 있으니, 아래 링크를 참고해주시면 감사하겠습니다. 

(↓↓↓MixMatch 논문에서 Mix-up 개념 설명↓↓↓)

https://89douner.tistory.com/249

 

1.MixMatch; A Holistic Approach to Semi-Supervised Learning

현재 다른 페이지에 작성하고 있습니다. 6월 11일 안으로 작성이 완료되는대로 글을 옮겨적도록 하겠습니다.

89douner.tistory.com

 

 

 

  • 지금까지의 언급한 내용을 다양한 CNN 모델에 적용한 결과가 Table 6입니다.
  • ImageNet이 아닌 다른 dataset(=MIT Places 365)으로 test한 결과는 Table7 입니다.
  • 개인적으로 1%이상 차이가 나지 않는 결과들에 대해서는 회의적으로 보는 경향이 있습니다.
  • Seed를 어떻게 설정해주느냐에 따라서도 결과가 바뀔 수 도 있고, 가끔씩 자신들에게 유리한 실험결과들만 올리는 듯한 느낌을 받기도 하기 때문입니다.
  • 하지만, 실제로 다른 도메인에 trasnfer learning 관점에 맞춰 적절하게 방법을 변경하거나, object detection, segmentation 모델에 적용해보면 큰 achievement를 달성하는 경우도 있기 때문에, 해당 방법론들을 경우에 따라 잘 적용하려는 노력과 연구가 필요하다고 생각합니다.

 

 

 

6. Transfer Learning (for Object detection, Segmentation) 

 

  • Table8은 bag of tricks를 CNN에 적용한 후, Faster RCNN(object detection model)의 backbone으로 사용했을 때 결과들을 보여주고 있습니다. 최대 대략 4%까지 성능이 향상되는 것을 보면 꾀 유의미한 결과라고 볼 수 있을 듯 합니다.
  • Table9는 FCN (segmentation model)에 해당 trick들을 적용한 결과입니다. 그래도 1% 이상의 성능향상을 이끄는 것을 보면 유의미한 결과라고 볼 수 있을 듯 합니다.

 

 

 

 

[개인적인 경험 글]

  1. 위에서 언급 한 방법론 들을 medical 연구를 진행할 시 적용시켜 보았습니다 (KD, Mix-up, low precision을 제외).
  2. 해당 방법론들 중에서 warm-up 부분과 batch normalization zero gamma 방법들이 성능향상에 기여했습니다.
  3. 개인적인 경험에서는 batch normalizatioin에 zero gamma 부분을 적절하게 세팅해주는게 유용할 때가 많았습니다.
    • 예를 들어, X-ray 이미지 domain에 transfer learning을 적용할 시, 이 논문에서 제시된 모든 BN layer에 zero gamma를 적용해주는 것 보다, 뒷 쪽에 conv layer에 위치한 BN layer 중 적절한 위치에 zero gamma 또는 one gamma로 세팅해주는게 유의미한 결과를 가져올 때가 많았습니다 (현재 해당 방법을 COVID-19 X-ray데이터 적용한 논문이 under review 중이라 결과가 나오면 따로 논문을 review하도록 하겠습니다)
  4. Mix-up은 Medical data에 적용시키기가 조심스러운 부분이 있을거라 판단해서 적용하지 않았습니다.
  5. KD 관련 방법론은 올해 GAN과 CNN을 융합할 때 같이 적용해보려고 하고 있습니다.
  6. Low precision or Mixed precision 방법은 GCP 기반으로 volta GPU를 세팅한 후, GCP 베이스로 학습을 시킬 때 적용해보려고 하고 있습니다.

 

 

(↓↓↓Bag of Tricks for Image Classification with ~ 관련 Tensorflow 2 코드↓↓↓)

https://www.dlology.com/blog/bag-of-tricks-for-image-classification-with-convolutional-neural-networks-in-keras/

 

Bag of Tricks for Image Classification with Convolutional Neural Networks in Keras | DLology

Posted by: Chengwei 2 years, 6 months ago (Comments) This tutorial shows you how to implement some tricks for image classification task in Keras API as illustrated in paper https://arxiv.org/abs/1812.01187v2. Those tricks work on various CNN models like

www.dlology.com

 

 

 

지금까지 읽어주셔서 감사합니다!  

 

안녕하세요.

 

이번 글에서는 아래 논문을 리뷰해보려고 합니다. (아직 2차 검토를 하지 않은 상태라 설명이 비약적이거나 문장이 어색할 수 있습니다.)

※ 덧붙여 제가 medical imaging에 적용한 다른 전처리(or data augmentation) 방식들을 같이 공유하도록 하겠습니다. 

 

ImageNet-Trained CNNs are Biased Towards Texture; Increasing Shape Bias Improves Accuracy And Robustness

 

Conference: 2019 ICLR

Authors: 영국의 Edinburgh 대학, IMPRS-IS (International Max Planck Research School for Intelligent Systems), 독일의 Tubingen 대학 간의 협동연구

 

 

 

 

 

 

 

0. Abstract

 

[요약]

1. Question (노란색 부분)

  • 물체를 인식할 때 어떤 특징을 기반으로 해당 물체를 판별하나? → 즉, "갓난 아이 or 딥러닝 모델"이 해당 물체를 인식하기 위해 어떤 특징을 우선순위로 두고 학습을 하나?  
  • 일반적으로 물체를 인식하기 위해 CNN 모델들은 물체의 shape을 기반으로 학습한다고 한다. 
  • 하지만 몇몇 연구에서는 image textures를 기반으로 학습한다고 한다.
  • 위와 같은 주장 중에 무엇이 맞는지 판단하기 위해, texture-shape cue conflict 이미지를 기반으로 사람과 CNN 모델들을 정성적으로 평가했습니다.
    • "texture-shape cue conflict"라는 용어는 abstract 부분만 보면 무엇인지 파악하기 힘듭니다. (abstract만 읽었을 때는 무슨 말인지 몰랐는데, 바로 아래 figure1을 보니까 바로 알겠더군요!) 
  • 예를 들어, 아래 그림과 같이  "코끼리 texture로만 이루어져있는 (a) 이미지"에서는 ResNet-50가 코끼리라고 올바르게 분류했고, "texture and shape"이 혼합된 (b) 이미지"에서는 고양이라고 옳게 분류했습니다. 그런데, "texture-shape cue conflict" (c) 이미지 (→ 객체에 특정 texture를 입힌 경우) 에서는 코끼리라고 분류했습니다.
  • 그렇다면, (c) 이미지에서 ResNet-50 모델은 올바르게 분류한 것일까요? 
  • 올바르게 분류했다고 하시는 분들은 texture를 근거로 삼았을 것이고, 잘 못 분류했다고 하시는 분들은 shape을 근거로 삼았을 것입니다.

 

2. 실험방법 (파란색 부분)

  • 위와 같은 질문에 답하기 위해 아래와 같이 실험 세팅을 했습니다.
    • 실험을 위한 CNN 모델로 ResNet-50을 사용했습니다.
    • Stylized-ImageNet 이미지를 이용해 CNN을 학습시킵니다.
      • Figure1에서 (c)를 보면 CNN은 texture를 기반으로 분류한다는 사실을 파악할 수 있습니다.
      • ImageNet에 Style Transfer 기술을 이용하면 실제 객체들의 shape은 유지된 채로 texture만 변경됩니다. (Style Transfer 기술을 뒷 부분에서 더 자세히 설명하도록 하겠습니다)
      • 예를 들어, CNN이 다양한 texture가 적용된 고양이 이미지들 (← 해당 이미지들은 고양이라고 labeling 되어있음) 을 학습하게 되면, texture에 민감하게 반응하지 않을 거라고 추측해볼 수 있습니다. 즉, shape을 중요 특징으로 삼고 classification 할 수 도 있을거라고  추론할 수 있게 되는 것이죠.
    • 사람은 어떤 특징(texture or shape)으로 물체를 판단하는지 알아내기 위해 psychophysical lab에서 96명의 사람들(observers)을 대상으로 psychophysical trail을 했다고 합니다.

 

3. Result (분홍색 부분)

  • 실험결과 아래와 같은 해석을 내놓았습니다.
    • Classifcaiton할 때, CNN은 texture를 기반으로 학습하고, 사람들은 shape을 기반으로 학습한다
  • 추가적으로 shape 기반으로 학습을 진행하면 CNN을 기반으로 하고 있는 object detection의 성능이 올라간다고 합니다.
    • 그 이유는 distorted image (왜곡된 이미지들) 또는 shape-based representation image(shape의 특징이 강하게 묻어나는 이미지들) 에 robust(→민감하지 않게)하게 작동하기 때문이라고 합니다. → 즉, 이 부분이 실험을 통해 주장한 또 하나의 해석(analysis)입니다.

 

 

 

 

1. Introduction

 

1-1) 첫 번째 문단

기존 연구들에서는 CNN이 shape 특징을 기반으로 하고 있는 가설 소개

  • Introduction의 시작은 "어떻게 CNN이 object recognition, semantic segmentation에 좋은 성능을 보일 수 있었을까?"라는 질문으로 시작됩니다.
  • 윗 질문에 대한 가장 보편적인 답으로 "CNN은 low-level features (edge=simple shape)에서 좀 더 복잡한 shape으로 결합해 나가기 때문이라고 합니다.
    • CNN 구조를 보면 첫 번째 layer에 있는 CNN filter들이 edge 정보를, 마지막 layer에 위치한 CNN filter들은 좀 더 abstract한 정보를 추출한다는 뜻으로 이해해도 좋을 것 같습니다.)

(↓↓↓이해가 어려우신 분들은 아래 글을 참고해주세요↓↓↓)

https://89douner.tistory.com/57?category=873854 

 

3. CNN(Convolution Neural Network)는 어떤 구조인가요?

안녕하세요~ 이번글에서는 Convolution Neural Network(CNN)의 기본구조에 대해서 알아보도록 할거에요. CNN은 기본적으로 Convolution layer-Pooling layer-FC layer 순서로 진행이 되기 때문에 이에 대해서 차..

89douner.tistory.com

 

  • High-level units은 CNN의 마지막 layer에 있는 CNN filter들을 이야기 하고 있고, 이러한 high-level units들은 이미지들의 shape을 학습할 것이라고 언급하고 있습니다 (이전에 언급한 complex shape을 shape과 동의어로 쓴 듯 합니다. 굳이 구분하자면 edge=simple shape, shape=complex shape) 
  • 첫 번째 문단을 정리하자면 아래와 같습니다.

"기존의 연구들은 CNN이 shape을 기반해서 classification을 하고 있었다"

 

 

 

1-2) 두 번째 문단

첫 번째 문단에서 주장한 가설근거가 되는 논문들 나열

  • 앞서 언급한 "기존 연구들은 CNN이 shape을 기반해서 classification 하고 있다"라는 주장의 근거를 뒷 받침해주는 논문들을 소개하고 있습니다 (related work 느낌이네요).

 

 

1-3) 세 번째 문단

첫 번째, 두 번째 문단에서 주장한 shape 기반의 classification을 반박하는 texture 기반의 classification 가설 소개

  • 세 번째 문단에서는 앞서 주장한 내용들을 반박하는 근거들이 나옵니다. 즉, CNN 모델이 shape이 아닌 texture를 기반해 classification 한다는 주장입니다. 
    • Gatys (2017) 논문에서는 shape 특징이 거의 없는 객체들도 잘 인식할 수 있다고 언급했습니다 (Thanks to texturised features.
    • Ballester (2016) 논문에서는 CNN 모델이 sketch한 객체들을 인지하는데 좋지 않은 성능을 보여주고 있다고 언급하고 있습니다. (예를 들어, 아래와 같은 이미지는 스케치로만 그려졌기 때문에 texture 정보가 없다고 할 수 있죠)

이미지 출처: https://in.pinterest.com/pin/615022892849294322/

 

  • Gatys (2015) 논문에서는 texture와 같은 local 정보(=객체기준에서는 texture는 local 정보에 해당합니다) 만 가지고도 충분히 ImageNet 객체를 인식할 수 있다고 주장합니다. → texture representation, gram matrix와 같은 설명을 위해서는 "Texture synthesis using convolutional neural networks" 논문을 전반적으로 이해 해야합니다. 해당 논문은 style-transfer 분야에 중추적인 역할을 하는 논문인기 때문에 style-transfer 카테고리를 따로 만들어 올릴 때 자세히 설명하도록 하겠습니다 (정리된 내용은 있는데 다른 논문들 먼저 정리하고 빠르게 올리도록 할게요!)

이미지 출처: https://unsplash.com/wallpapers/animals/elephant

 

  • Brendel (2019) 논문에서는 receptive field sizes에 제약을 걸어도 좋은 성능을 보인다고 합니다. 해당논문(아래 그림)을 보니 여기서 말하는 receptive fields size란 입력 이미지 크기를 의미하는 듯 했습니다. → 즉, texture 정보만 이용해도 높은 accuracy를 보여준다는 것을 말하고자 한듯 합니다.

  • 결국, 세 번째 문단을 요약하자면 아래와 같습니다.

 

"기존에 주장한 것(두 번째 문단: shape기반의 CNN 분류)과 달리, CNN은 texture 기반으로 classification 한다. 그리고 이것을 texture hypothesis라 하겠다" 

 

 

 

1-4) 네번째 문단

→ 앞서 주장한 대립되는 두 가설중에 어떤것이 맞는지 실험 and 해당 실험 결과가 주는 contribution

  • 앞서 언급한 두 가지 가설 (Shape-base VS Texture base) 중에 어떤 가설이 맞는지 입증하는 건 딥러닝, human vision, neuroscience 분야에서 모두 중요한 일입니다.
  • 이것을 입증하기 위해 사람과 CNN 모델들이 shape biase한지, texture biase 한지 psychophysical 실험을 통해 정성적으로 평가했습니다.
    • 이러한 실험을 위해 style transfer 기술을 사용했습니다.
    • style transfer를 이용해 texture-shape cue conflict 이미지들을 생성하고, 해당 이미지를 이용해 정성적인 평가에 이용했습니다 (→자세한건 실험 부분에서 설명이 되겠죠?)
  • 이러한 실험은 두 가지 main contribution이 있습니다.
    • changing biases: 하나는 texture bias의 CNN 모델들을 shape bias로 변경해준 것
    • discovering emrgent benefits of chanaged biases
      • shape bias가 가미된 CNN은 왜곡된 이미지들에 더 robust하게 작동된다는 것
      • classification과 object recognition tasks에 더 뛰어난 성능을 보여줬다는 점

 

"실험을 통해 shape bias하게 CNN을 training 시킬 수 있었으며, shape bias가 가미된 CNN 모델은 classification, object recognition 성능에 긍정적인 영향을 미쳤다" 

 

 

 

 

 

 

2. Method

→ Method에서 앞서 언급한 실험들에 대해 ouline을 잡아 줄 예정 + Extensive details들은 Appendix를 참고 할 것 + 데이터, 코드들은 아래 github 사이트 참고

https://github.com/rgeirhos/texture-vs-shape

 

rgeirhos/texture-vs-shape

Pre-trained models, data, code & materials from the paper "ImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy and robustness" (ICLR 2019 Oral) -...

github.com

 

 

 

2-1) Psychophysical experiments

Psychophysical experiments 설명

  • 사람이 shape기반으로 판단하는지, texture 위주로 판단하는지 알아보기 위해서는 사람들을 대상으로 실험해야 합니다.
  • 첫 번째 문단은 사람을 대상을 어떻게 실험을 진행했는지 설명해줍니다.
  • 간단하게 설명하자면 사람과 AlexNet, GoogLeNet, VGG-16, ResNet-50 에게 다양한 사진들을 보여주고, 해당 사진이 무엇인지 classification하는 실험입니다. (→"2-2. dataset" 부분을 보면 더 자세히 이해하실 수 있습니다)
  • 해당 문단만 읽으면 실험이 어떻게 진행 됐는지 모르고, "appendix A.1~A.4" 부분을 보시면 어떻게 Psychophysical experiments 가 진행됐는지 알 수 있습니다. → Appendix 내용까지 다 설명하면 너무 길어질 듯하여 생략했습니다.

 

 

2-2) Dataset sets

2-2-1) 첫 번째 문단

→ 이 실험이 6개의 실험으로 구성되어 있는데, 각각의 실험들은 개별적인 dataset을 기반으로 진행

  • texture bias인지 shape bias인지 테스트 하기 위해 6개의 main 실험들을 진행했습니다.
    • 그 중 5개의 실험은 아래와 같습니다.
      • 앞서 2-1에서 설명한 것처럼 AlexNet, GoogLeNet, VGG-16, ResNet-50, 사람에게 아래 다섯 종류(=5개의 실험)의 이미지들을 보여주고, 어떤 이미지인지 맞추도록 합니다.

 

2-2-2) 두 번째 문단

→ "shape VS texture"를 입증 할 6번째 실험 소개

  • 6번째 실험을 진행하기 위한 데이터 셋을 생성해야 했습니다.
    • 우선, 4개의 CNN 모델 (AlexNet, GoogLeNet, VGG, ResNet-50) 이 모두 올바르게 분류한 이미지들을 수집했습니다. 
    • 16개의 카테고리 마다 80개의 이미지를 선별해 총 1280개 데이터 셋을 구축했습니다. 
    • 그리고, 해당 이미지들(=1280개)에 cue conflict를 적용시키기 위해 style transfer를 적용했습니다.
    • 만약, CNN 모델들이 cue conflict가 적용된 이미지들을 잘 못 분류한다면 "shape VS texture" 중에 어느 특징을 기반으로 학습하는지 알려줄 수 있게 됩니다. → 왜냐하면, cue conflict가 적용되기 이전 4개의 CNN 모델에서는 모두 올바르게 분류했기 때문

 

 

 

2-2-3) 세 번째 문단

→ 이 논문에서 주장하는 shape의 정의texture의 정의

  • "2-2-1"을 보면 silhouette 기반의 데이터를 볼 수 있습니다. 
  • 이 논문에서는 silhouette을 bounding contour라고 정의했는데 이것이 shape과는 조금 다르다고 합니다.
  • silhouette보다는 객체의 broader 부분을 shape으로 봐야한다고 언급하고 있습니다.
  • 또한, 어떤 이미지가 texture 기반이라고 말할 때에는 'spatially stationary statistics' 특성을 갖고 있어야 한다고 주장합니다. → "Texture and art with deep neural networks"라는 논문에서 좀 더 수학적으로 texture에 대한 정의를 설명하고 있습니다.
    • All images with equal Nth-order joint pixel histograms are preattentively indistinguishable for human observers and therefore samples from the same texture.
    • A joint histogram is a multidimensional histogram created from a set of local pixel features.
    • 즉, 아래 그림처럼 pixel histogram이 유사하게 나온다면 texture가 같다고 정의합니다.

 

  • 그런데 이 논문에서는 아래 그림처럼 여러 bottle(병)을 기반으로 texture를 변경했습니다. 아래 그림에서 두 번째 이미지를 보면 very local level은 local shape이 될 수 있기 때문에 non-stationary 특성을 갖는다고 할 수 있습니다. 
  • 예를 들어, 아래 두 번째 이미지에서 개별 bottle만 비교하면, 서로 texture가 다를 것입니다. 하지만, 여러 bottle을 기준으로 봤을 때는 서로 texture가 비슷할 수 있습니다. 

 

 

 

Fig 7

 

 

 

 

2-3) Dataset sets

  • 앞서 언급한 cue conflict 이미지를 만들기 위해 imageNet에 style transfer 기술을 적용시켜 SIN (Stylized-ImageNet) 데이터 셋을 구축했습니다.
  • 이 논문에서는 style transfer 기술을 적용시키기 위해, AdaIN style transfer 모델을 사용했고, AdaIN을 학습시키기 위해 Kaggle에 있는 "painter by numers"라는 데이터 셋을 활용했습니다.

https://www.kaggle.com/c/painter-by-numbers

 

Painter by Numbers

Does every painter leave a fingerprint?

www.kaggle.com

 

  • AdaIN Fast style transfer 모델을 사용한 이유는 두 가지가 있습니다.
    • Training은 SIN 데이터 (made by AdaIN)로 하고, test는 cue conflict 데이터(maybe, made by existing iterative stylization)에서 함으로써, 특정 stylization 기법에 의해 결과가 바뀌지 않는 다는 것을 보여주기 위함
    • ImageNet에 기존 iterative stylization 기법을 적용하면 너무 오랜 시간이 걸리기 때문   

https://github.com/rgeirhos/Stylized-ImageNet

 

rgeirhos/Stylized-ImageNet

Code to create Stylized-ImageNet, a stylized version of standard ImageNet (ICLR 2019 Oral) - rgeirhos/Stylized-ImageNet

github.com

 

  • 생성된 이미지는 아래와 같습니다.

 

 

  • 위의 데이터들을 pre-trained 시킨 CNN 모델은 아래 github 주세에서 제공되고 있습니다.

https://github.com/rgeirhos/texture-vs-shape

 

rgeirhos/texture-vs-shape

Pre-trained models, data, code & materials from the paper "ImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy and robustness" (ICLR 2019 Oral) -...

github.com

 

 

 

 

 

3. Result

3-1. Texture VS Shape bias in humans and ImageNet-Trained CNNs

→ Figure2, Figure4 기반으로 CNN과 사람이 shape 기반으로 classification 하는지, texture 기반으로 classifcation 하는지 보여줌

 

 

3-3-1) 첫 번째 문단 

→ Figure2의 결과: Original, Greyscale, Silhouette, Edge 이미지 분류 결과 (CNN VS 사람)

  • Graysacle은 shape과 texture의 특징을 모두 갖고 있다고 주장합니다.
  • silhouette에서는 CNN이 사람보다 accuracy가 떨어집니다.
  • edge에서는 그 차이(=CNN이 사람보다 accuracy가 떨어지는 정도)가 더 심합니다.
    • 이러한 결과는 사람이 texture 정보가 없는 이미지에 더 잘 대응(=잘 classification)하는 것을 보여줍니다.
  • 특히 CNN은 domain shift에 취약한 것으로 드러났습니다.
    • CNN 입장에서는 학습한 데이터가 natural images입니다.
    • Texture가 없는 sketch 이미지는 training 때 사용되지 않은 이미지입니다.
    • 즉, sketch 이미지를 inference 할 때는 완전히 다른 domain을 inference한다고 볼 수 있습니다.  

 

 

3-3-1) 두 번째 문단 

→ Figure4의 결과: Texture, Cue conflict 이미지 분류 결과 (CNN VS 사람)

  • Fig 2를 보면 Texture 베이스의 그림이 있습니다.
  • 사람은 texture 베이스의 이미지만 보고서는 정확히 분류하지 못하고, CNN은 cue conflict (Shape 기반) 이미지를 잘 분류하지 못하는 것을 볼 수 있습니다.
    • 수직라인들은 CNN 모델들과 사람의 16개 모든 카테고리 classification 평균 결과입니다. 
    • 좌측에 위치할 수록 shape을 기반으로 classification하고, 우측에 위치할수록 texture에 기반해서 classification 한다고 해석하고 있습니다.

Figure 4

 

 

""3-1" 실험 결과를 통해 CNN은 texture bias 하다고 할 수 있습니다"

 

 

 

3-2. Overcoming the texture bias of CNNs

→ Style transfer를 적용시킨 data를 기반으로 학습 시켰을 때, texture 기반의 CNN 모델을 shape 기반의 CNN 모델로 변경할 수 있는지를 보여주는 결과들

 

3-2-1) 첫 번째 문단

  • 앞선 실험에서 CNN 모델은 texture bias하다고 했습니다.
  • 그래서, 이 논문에서는 CNN이 많은 local texture features을 기반으로 classification 한다고 추론하고 있습니다.
  • "3.2" 실험에서는 texture bias 성향을 갖은 CNN 모델을 uninformative style( shape base인 듯 합니다) 성향으로 바꾸려는 시도를 했습니다.
  • 이를 위해, ResNet-50을 베이스로 하고, SIN (Stylized-ImageNet) data set을 사용했습니다. 

 

 

3-2-2) 두 번째 문단

→ Table 1에서 첫 번째 행에 해당하는 결과들 설명

  • SIN 데이터만으로 training, evaluation한 결과 top-5 79% accuracy를 달성했습니다.
  • IN 데이터만으로 training, evaluation한 결과 top-5 92.9% accuracy를 달성했습니다.
  • 이러한 차이는 SIN 데이터로 학습된 CNN은 더이상 texture 정보가 predictive하지 않기 때문에 SIN으로만 학습하고 evaluation 하는 것이 더 어려운 task임을 보여줍니다. 
    • You use predictive to describe something such as a test, science, or theory that is concerned with determining what will happen in the future.
  • SIN feature(including only shape feature)으로 학습된 CNN들은 ImageNet feature (texture feature + other features(=shape feature + etc..) 에도 잘 대응(부합)하지만, ImageNet features들로 학습된 CNN 모델들은 SIN feautre에 부합하지 않은 것으로 보입니다. 
  • 결과론적으로 해석하자면 ImageNet features들로 학습한 CNN 모델들은 texture bias하다고 할 수 있습니다.

 

 

 

3-2-3) 세 번째 문단

→ Table 1에서 2,3,4 번째 행에 해당하는 결과들 설명

  • BagNets을 이용해 local texture features (Fig1에서 (c)이미지) 만 training하고 evaluation 해봤습니다.
    • "1-3) 세 번째 문단"에서 receptive field에 대해 소개했습니다.
    • 즉, local path image를 receptive field로 갖는 ResNet-50은 학습 시 전체 이미지에서 제한적인 부분만 학습하는 것과 같기 때문에 long-range spatial relationships를 고려하지 않은채 학습하게 됩니다.
    • 이러한 네트워크(BagNet)는 ImageNet에는 높은 성능을 보이지만, SIN데이터에는 좋지 못한 성능을 보입니다.
  • 쉽게 말해 아래 테이블의 결과를 다음과 같이 정리 할 수 있습니다.
    1. IN→SIN (ResNet-50보다 BagNet에서 성능이 더 떨어지는 이유)
      • ImageNet으로 학습한 CNN 모델은 texture 정보외에 spatial relationship 같은 정보들도 학습하게 됩니다.
      • SIN 데이터에는 texture 정보가 없는데, 여기에 receptive field크기에 제약까지 걸어버리면 spatial relationship 같은 정보도 잃어버리기 때문에 성능이 더 안 좋아집니다. 
      • 결국, SIN data를 만든다는 건 local texture feature 정보도 없앤다는 것과 같기 때문에, local texture feature들이 중요한 요소가 되는 기존 CNN (on ImageNet) 모델들의 성능이 현저히 떨어지게 되는 것입니다.

 

 

 

3-2-4) 네 번째 문단

→ Figure 5 설명하는 문단

  • Figure 5를 보면, SIN data로 학습된 ResNet-50은 Figure 4와 비교했을 때, 좀 더 shape bias하게 변한 것을 확인할 수 있습니다.

 

 

 

 

3-3. Robustness and accuracy of shape-based representations

  • "3-3"에서는 3가지 실험을 진행 했습니다.
  • 이 실험에서 중요한 부분은 SIN, IN data를 다 같이 학습시킨 모델의 성능이 더 좋아질 수 있는지 입니다.

 

  • 첫 번째 실험은 Classification performance 관점입니다.
    • SIN+IN을 동시에 학습시킨 후, IN을 다시 fine-tuning 시킨 결과가 기존 IN으로만 학습시간 ResNet(=vanilla ResNet) 모델보다 좋습니다.
  • 두 번째 실험은 Transfer Learning 관점입니다.
    • CNN 모델은 Object detection 모델의 backbone 역할을 하는데, SIN+IN으로 학습시킨 CNN을 Object detection의 backbone으로 사용하면 object detection 성능이 5%나 향상되는 것을 볼 수 있습니다.
    • 그 이유는 object detection의 성능 지표인 mAP에는 bounding box가 얼마나 fit하게 잡히는지도 포함되는데, 보통 bounding box가 fit하게 잡으려면 객체의 윤곽(=shape) 부분을 잘 포착해야합니다. 
    • 그래서, shape feature도 잘 학습한 shape-ResNet 모델을 backbone으로 사용하면 object detection 성능이 큰 폭으로 향상되는 것이라고 주장합니다. 

 

 

  • 세 번째 실험은 Robustness against distortions 관점입니다.
    • 사람들은 왜곡된 이미지를 classification 할 때 accuracy 결과에 편차가 있습니다. (by box plot)
    • CNN 모델들은 일정한 accuracy 결과를 보여주는데 (← 아마 모든 seed값을 동일하게 고정했다고 가정한 것이 아닌가 싶습니다), 특히 SIN 데이터로 학습한 CNN 모델은 다양한 noise or distortion에 robust하게 동작하는 것을 확인할 수 있습니다.

 

 

  • ImageNet-C 데이터들은 기존 ImageNet에 다양한 nosie를 섞어서 만든 dataset입니다.
  • SIN 데이터와 IN 데이터를 동시에 학습시킨 경우 ImageNet-C 데이터셋에서 더 좋은 성능을 보여줍니다. → 즉, noise에 더 robust하다고 할 수 있죠.
  • 결국 SIN 데이터를 함께 학습시킨다는 건, CNN 입장에서 다양한 augmentation이 적용된 데이터들을 학습시키는 것이라고도 볼 수 있습니다.

  • 아래 테이블을 봤을 때 주목할 부분은 SIN+IN을 학습시킨 후 IN 데이터로 fine-tuning 한 것보다, SIN+IN으로만 학습시킨 CNN 모델이 훨씬 더 noise에 robust하다는 것을 확인할 수 있습니다.

 

 

 

 

 

4. Conclusion

 

 

"Shape-based Representation can be beneficial for recognition tasks."

 

"Shape-based CNN is the better backbone for Object detection"

 

"Shape-based training is robust to distortion(noises)"

 

 

 

 

 

 

 

5. 개인적인 경험 및 생각

아무래도 의료 이미지를 CNN에 적용시킨적이 많아서 아래와 같은 경험 및 생각을 하게 됐습니다.

 

  • Super Resolution (SR) 을 전처리 작업으로 사용할 경우
    • SR을 이용하면 저화질을 고화질로 만들 수 있다. 
    • 그럼 texture가 좋아질 수 있고, SR을 통해 생성된 이미지들은 좀 더 textue feature를 갖고 있을 수 있다.
    • SR이 적용된 이미지를 사용한다면 texture가 정말 중요한 feature로 여겨지는 domain에서는 유용할 수 있다.
    • 하지만, SR이 적용되기 전의 이미지 크기가 CNN의 크기인 224x224를 넘는다면 사용하는것이 무의미하다.
    • 왜냐하면, SR을 적용해 224x224를 448x448로 만들어 준다고 해도, 다시 입력 이미지 크기에 맞게 224x224로 줄여줘야 하기 때문이다. → 즉, texture 변화가 없을 수 있다는 뜻이다. 
    • 하지만, 마지막 layer에 GAP (global Average Pooling)을 적절하게 이용해준다면 입력 이미지 크기를 굳이 축소시킬 필요가 없으므로, SR을 전처리 or data augmentation 기법으로 이용해볼 수 있다.
  • Medical imaging에 적용시킬 경우
    • 의료 이미지에서 texture가 중요한 feature일 수 도 있기 때문에 함부로 SIN+IN 적용된 모델을 사용하는건 위험할 수 있습니다.
    • 하지만, medical imaging에서도 noise 문제가 존재하기 때문에, SIN+IN (without fine-tuning IN data) 데이터로 학습시킨 모델을 이용해 transfer learning을 적용한다면 noise에 robust한 모델을 만들 수 도 있을거라 생각합니다.

 

 

 

 

 

 

 

 

이상으로 논문리뷰를 마치겠습니다!

아래 영상은 style-transfer 공부하다가 만든 영상입니다.

무성영화에 Fast style transfer를 적용시킨 후, 노래영상을 입혔습니다.

즐겁게 봐주세요^^~

 

 

(Stylized soundless video +"12:45" song)

 

 

원본영상

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

 

원본노래

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

 

안녕하세요.

이번 글에서는 왜 CNN 학습 방법론에 대해 관심을 갖게 됐는지에 대해 설명해보도록 하겠습니다.

 

 

1. CNN 학습 방법론에 주목한 이유 

 

CNN을 연구한다고 했을 때, 대부분 CNN 구조를 모델링하는 것을 연상할 것입니다.

 

(↓↓↓CNN 아키텍처들↓↓↓)

https://89douner.tistory.com/category/Deep%20Learning%20for%20Computer%20Vision

 

'Deep Learning for Computer Vision' 카테고리의 글 목록

#Interest: World History (The past) #Work: Deep Learning (The future) #Hobby: Music, Sports

89douner.tistory.com

 

모델링을 한다는 것은 정말 멋지고 대단한 일이지만, 지나친 CNN 모델링 연구 또한 문제가 될거라고 생각합니다.

 

1-1. 방대한 자원과 시간이 필요

CNN을 모델링 하는 것은 오랜 시간을 요구합니다.

즉, 다양한 모델들을 섭렵하기도 해야하고, 자신만의 창의적인 방법을 적용시키면서 독특한 모델을 만들어야 하기 때문이죠.

 

이미지 출처: https://www.researchgate.net/figure/Architecture-of-building-block-of-MobileNet-7-ShuffleNetV2-9-and-this-work-a-The_fig1_335642305

 

이러한 독창적인 CNN 모델을 만들었다고 끝이 아닙니다. 왜냐하면 방대한 ImageNet을 통해 해당 CNN 모델을 학습시키는 것도 오랜 시간이 걸리기 때문이죠.

 

이미지 출처: https://sherryl93.github.io/training-imagenet-with-caffe/

 

추가적으로, 최적의 Hyper-parameter를 찾는 것도 고려해야 한다면, 모델링 연구는 개인이 하기에 시간/비용적으로 너무 부담이 되는 것도 사실입니다. 

 

이미지 출처: https://blog.floydhub.com/guide-to-hyperparameters-search-for-deep-learning-models/

 

아카데믹(학계)에서는 이러한 연구를 할 수 있는 시간이 충분히 주어지겠지만, 산업현장 같은 곳에서는 빠르게 비지니스 모델을 출시해야 하므로 무작정 모델링 연구를 기다려 주는 것도 어렵습니다. 

 

 

1-2. 다양한 Vision 모델들

2012년 AlexNet의 등장이후 이미지 classifiction, segmentation, detection과 같은 분야에서 대부분 CNN 기반 모델들이 적용되어 왔습니다.

 

학습 방법론에 대해 관심을 갖게 된것은 2019년부터인데, 그 이유는 ResNet이후 다양하게 나온 CNN 모델들을 사용해도 별반 차이가 나지 않았기 때문입니다. 해당 논문들에서는 ResNet 보다 훨씬 뛰어난 performance를 보여줬으나 실제로 transfer learning을 통해 다른 domain에 적용해봤을 때는 생각만큼 뛰어나 보이지 않았기 때문입니다 (물론 좋은 성능을 보인 모델도 있었으나 평균적으로 ResNet 모델과 차이가 나지 않은 경우가 많았습니다)

 

하지만 2020년 Transformer의 등장과, 2021년 MLP로만 구성된 모델이 기존 CNN 기반의 모델들의 성능을 뛰어넘는 모습을 보면서 학습 방법론에 관심갖길 잘했다는 생각을 했습니다.

 

또한, AutoML과 같은 기술이 도입되면서 우리가 적용시키려는 domain에 맞는 모델을 자동적으로 만들어주려는 연구가 진행되는 것을 보면서, 아래와 같은 생각을 했습니다. 

 

 

"CNN 모델을 이해하는 것은 필수적이지만, 모델링을 연구하는건 연구자로써 수명이 그리 길지 않을 수도 있겠구나"

 

"차라리 모델에 치우친 연구를 하기보다는 여러 모델에 적용시켜볼 수 있는 학습 방법론에 대해서 연구하는것이 더 실용적이겠다"

 

 

 

 

2. 여러가지 딥러닝 학습방법론

위와 같은 문제를 않고 여러 딥러닝 학회 논문을 살펴봤습니다.

 

정말 다양한 학습방법론을 다룬 내용들이 많았습니다. 

대충 내용을 정리하면 아래와 같습니다.

 

  1. CNN을 독특하게 학습시키는 방법
  2. Transfer learning 관점에서 CNN을 학습시키는 방법
  3. Fine tuning을 적절하게 하는 방법

 

(b) Partial fine-tuning of pre-trained CNN.  (c) Complete fine-tuning of pre-trained CNN

이미지출처: https://www.mdpi.com/2079-9292/8/3/256/htm

 

이미지 출처: https://velog.io/@chy0428/DL-Transfer-learning

 

사실 위에서 CNN이라고 적시했지만 해당 방법론들은 MLP, Transformer 같은 모델에서도 충분히 적용 가능한 insight를 줄거라고 생각합니다.

 

과거 딥러닝 모델을 개발하는 것에만 몰두했다면, 최근에는 여러 기술들을 접목해 딥러닝 모델을 효과적으로 학습시키려는 노력을 더 많이 하는듯 보입니다. (물론 딥러닝 모델 개발을 게을리 해서도 안되겠죠)

 

 

그럼 다음 글에서부터는 다양한 학습 방법론들을 소개시켜 드리도록 하겠습니다.

 

 

안녕하세요.

이번 글에서는 semi-supervised learning에 대한 간략한 개념과 왜 이러한 기술이 필요한지 설명해보도록 하겠습니다.

 

 

1. 기존 딥러닝 학습 방식 (Supervised-learning)

  • 기존 딥러닝에서는 supervised learning 방식을 통해 분류작업(classification)을 수행합니다.
  • 학습과정에서 딥러닝이 예측하는 값이 실제 정답(label 정보)에 가까워 지도록 학습을 유도하는 방식이 supervised learning 방식입니다.
  • 즉, supervised learning 방식으로 학습을 시키기 위해서는 training data에 labeled data 정보를 포함하고 있어야 하죠.

 

이미지 출처: https://medium.com/data-science-bootcamp/understand-cross-entropy-loss-in-minutes-9fb263caee9a

 

이미지 출처: https://amitness.com/2020/03/fixmatch-semi-supervised/

 

 

 

 

 

2. 의료 분야에서 supervised learning 학습의 한계

  • 앞서 언급했듯이, supervised learning의 성능을 극대화 시키기 위해서는 방대한 양의 label 데이터를 필요로 합니다.
  • 하지만, 의료 분야에서 이러한 방대한 양의 labeled data를 획득하는 것이 쉽지만은 않습니다.
  • 예를 들어, 의료 영상에서 어떤 label 데이터를 얻기 위해서는 다수의 수준급 전문의들이 모여서 각자 소견을 내고 진단을 위한 토론과정을 거쳐야 하는데, 이러한 과정은 굉장한 시간과 비용을 요구합니다.

이미지 출처: https://www.teachingmedicine.com/Modules.aspx?mid=1041

 

 

 

 

 

3. Unlabeled data에 대한 Needs

  • 상대적으로 labeled data를 얻는 것 보다 unlabeled data를 얻는 것이 더 수월합니다. 
  • 현재는 이러한 데이터들이 활용이 되지 않고 있습니다만, 최근 딥러닝에서는 이러한 데이터를 이용해 딥러닝 분류 정확도를 높이는 시도를 하고 있습니다.
  • 특히, COVID-19 같은 신종바이러스 발병 초기에는 해당 바이러스의 데이터가 부족하기 때문에 unlabeled data를 잘 활용하는 것이 매우 중요할 수 있습니다.
  • Semi-supervised learning에서는 기존 labeled data와 unlabeled data를 모두 활용하여 학습시키는 방식이기 때문에, unlabeled data에 대한 활용도가 높아질 것으로 기대하고 있습니다.

 

이미지 출처: https://www.kaggle.com/altprof/basic-semi-supervised-learning-models

 

 

 

 

4. Future Work

  • 해당 카테고리에서는 앞으로 semi-supervised learning 방식을 도입한 모델들을 소개할 예정입니다.
  • 관심이 더 있으신 분들은 아래 uc berkeley unsupervised learning 강의에서 아홉번째 lecture를 참고하시면 도움이 될거라 생각합니다.

https://sites.google.com/view/berkeley-cs294-158-sp20/home

 

CS294-158-SP20 Deep Unsupervised Learning Spring 2020

About: This course will cover two areas of deep learning in which labeled data is not required: Deep Generative Models and Self-supervised Learning. Recent advances in generative models have made it possible to realistically model high-dimensional raw data

sites.google.com

 

안녕하세요.

이번 글에서는 Adversarial Attack이 무엇인지 간단히 설명하고 왜 이러한 분야들을 알고 있어야 하는지 설명해보겠습니다. 

 

1. Adversarial Attack이란?

  • 우선 adversarial attack이 무엇인지 간단히 알아보겠습니다.
  • 딥러닝에서는 일반화 성능을 높이기 위해 여러 Data augmentation 기법을 적용해서 학습을 시키곤 합니다. 
  • 가끔 인간도 동물의 각도나 색이 다른 경우 정확히 구분하지 못하기 때문에, 딥러닝 역시 이러한 오류를 범하기 쉽습니다.
  • 그래서, 하나의 클래스를 학습시키기 위해 다양한 각도로 data를 augmentation 시켜 학습시킵니다. (Augmentation 기법에는 각도 뿐만 아니라, 색을 변조시키는 등 다양한 기법들이 존재합니다) 

https://blog.naver.com/PostView.nhn?blogId=syg7949&logNo=221883248994&parentCategoryNo=27&categoryNo=41&viewDate=&isShowPopularPosts=false&from=thumbnailList

 

  • 그런데, 아래 그림을 한 번 보도록 하겠습니다. 우선 제일 왼쪽의 이미지와 제일 오른쪽의 이미지가 다르게 보이시나요? 사람들이 봤을 땐 아무리봐도 같은 판다로 보일 거에요. 실제로 왼쪽 이미지에 어떤 noise를 입힌 결과가 오른쪽 이미지라고 해도, 사람눈엔 그저 별반 다를게 없어보이죠.

  • 하지만, 딥러닝 입장에서는 이러한 noise에 민감합니다.
  • 그래서, 아래 그림을 보면 딥러닝이 예측한 왼쪽 이미지의 결과와 오른쪽 이미지의 결과는 전혀 다릅니다. 
  • 위 그림의 중간 위치에 있는 어떤 noise 같은 것을 입력 했을 때 전혀 결과가 다르게 나오게 하는 기법을 'Adversarial attack'이라고 합니다. 즉, 딥러닝 모델이 잘 못 예측하도록 공격을 하는 것이죠. (Adversarial attack에 대한 개념은 앞으로 게재될 글에서 설명하도록 하겠습니다)

 

  • 그렇다면, 이러한 adversarial attack으로 인해 어떤 문제가 발생할 수 있을까요? 여러 답이 있을 수 있겠지만, 여기에서는 미국의 의료 시스템 관점에서 발생할 수 있는 문제들에 대해 알아보도록 하겠습니다.  

 

 

 

2. Medical imaging에서의 adversarial attack 사례

 

아래 논문을 바탕으로 딥러닝 모델이 adversarial attack에 얼마나 취약한지 살펴 보도록 하겠습니다.

 

https://arxiv.org/abs/1804.05296

 

Adversarial Attacks Against Medical Deep Learning Systems

The discovery of adversarial examples has raised concerns about the practical deployment of deep learning systems. In this paper, we demonstrate that adversarial examples are capable of manipulating deep learning systems across three clinical domains. For

arxiv.org

 

  • 하버드 의대의 Finlayson 등(36)은 흉부 X선 영상, 안저 영상, 피부 영상 등 3가지의 대표적인 의료 영상 분석에 딥러닝이 활용된 사례에 대해 적대적 공격을 시도하여 성공한 결과를 제시했습니다.
    • Retina (안질환 예측)
    • Chest X-ray (Pneumonia(폐렴) 예측)
    • Dermoscopy (피부질환 예측)
  • 공격 대상이 되는 모델에 대한 구조파악 정도에 따라 두 가지 공격방식이 존재 합니다. (더 다양한 종류에 대해서는 앞으로 게재될 글에서 설명하도록 하고, 여기에서는 간단하게 두 가지 종류만 설명하겠습니다.)
    • White box attack: 공격자(or 해커)가 공격의 대상이 되는 모델 구조(모델의 아키텍쳐, 파라미터 및 하이퍼 파라미터 등) 및 학습 데이터를 알고 있는 상황에서 adversarial attack을 수행하는 공격 방식
    • Black box attack: 공격자가 모델에 대한 내부구조를 파악하지 못한 상태에서 수행하는 블랙박스(black box) 공격 방식

 

  • 아래 결과를 보면 adversarial attack 을 통해 얻은 결과(accuracy)는 충격적인 수준입니다. 

 

 

 

 

4. Adversarial Attack에 의해 발생할 문제

 

의료산업에서 딥러닝 모델을 사용한다고 했을 때, adversarial attack은 산업전반에 치명적인 타격을 줄 수 있습니다. 아래 두 논문을 기반으로 발생할 수 있는 문제들에 대해서 알아보도록 하겠습니다. 

 

https://arxiv.org/abs/1804.05296

 

Adversarial Attacks Against Medical Deep Learning Systems

The discovery of adversarial examples has raised concerns about the practical deployment of deep learning systems. In this paper, we demonstrate that adversarial examples are capable of manipulating deep learning systems across three clinical domains. For

arxiv.org

https://ir.ymlib.yonsei.ac.kr/handle/22282913/173346

 

YUHSpace: 딥러닝 기반 의료 영상 인공지능 모델의 취약성: 적대적 공격

딥러닝 기반 의료 영상 인공지능 모델의 취약성: 적대적 공격

ir.ymlib.yonsei.ac.kr

 

 

 

4-1. 의료소송 문제

  • 미국 병원은 의료소송으로 망하는 경우가 많다고 합니다. 그렇다면, adversarial attack으로 인해 병원이 타격을 받을 수 있는 시나리오를 설명해보겠습니다.
  • 우선, 원격의료 시스템 기반에서 deep learning 모델이 병원에서 사용되고 있다고 가정해보겠습니다.
  • 사용하는 도중에 누군가가 adversarial attack을 시도했고, 이로 인해 딥러닝이 잘 못 된 진단을 하게된다면 분명 의료 소송이 발생할 것입니다. 이런 경우 딥러닝 모델을 제공한 회사에서 보상을 해주어야 할까요? 병원에서 보상을 해주어야 할까요? 이 문제에 대해서 확실하게 답을 할 수는 없지만, 병원 측에서는 이미지 하락을 통한 경제적 타격을 피할 수는 없을 겁니다.
  • Adversarial attack이 법정에서 사기로 금방 판명 될 수 있다는 보장도 없고, 항상 사각지대가 있기 때문에 deep learning 제품 자체가 adversarial attack에 robustness 하게 만들지 않는 이상 병원에서는 항상 adversarial attack과 관련된 리스크를 안고 갈 수 밖에 없을 것 입니다.

https://arxiv.org/abs/1804.05296

 

 

4-2. 의료 사기 (Upcoding)

  • 미국에서 보험 사기는 매해 'hundreds of billions of dollars (천억 달러 → 원화 환산: 110조)의 비용을 유발하고 있고, 2011년에는 $272 billion of dollars (원화 환산 → 300조) 의 비용이 발생했던 것으로 추정된다고 합니다.
  • 의료보험 사기는 large institutions (조직)과 individual actors (ex: physician (전문의))이 주로 일으키는 데, 이들은 자신들의 수익을 증대시키기 위해 의료청구비용을 증가시킨다고 합니다.
  • 미국의 의료는 민영화 시스템이기 때문에 병원에서 비용을 청구하기 때문에, 병원에서 upcoding 하는 경우도 발생합니다. 만약, 자체적으로 adversarial attack을 이용한다면 병의 중증도를 왜곡해 쉽게 upcoding을 할 수 도 있겠죠. (미국 의료시스템과 upcoding에 대한 설명은 아래 글을 참고해주세요!)

https://89douner.tistory.com/195

 

1. 미국의 Healthcare환경 및 의료시스템

안녕하세요. 이번 글에서는 미국의 healthcare환경 및 의료 시스템에 대해서 알아보도록 하겠습니다. 사실, 각 나라마다 의료환경이 다릅니다. 예를 들어, 유럽의 의료환경, 한국의 의료환경, 미국

89douner.tistory.com

 

 

4-3. 약물 임상시험 대상자 선별을 위한 적대적 사례 사용

  • 일반적으로, 개발된 신약의 임상적 효능을 제대로 검증하기 위해서 임상시험 참가자가 적절한 대상이었는지 평가합니다.
  • 이때 adversarial attack을 이용하면 환자의 상태를 임상시험의 참여 조건에 적절하도록 변조시킬 수 있습니다. 즉, 변조된 의료 영상 자료를 제출하여 제대로된 검증시도를 회피할 가능성이 있습니다.
  • Papangelou 등은 임상시험 참가자 선별을 위한 적대적 환자(adversarial patient)의 개념을 제시하기도 했습니다.

(↓↓↓적대적 환자 개념 제시 논문↓↓↓)

https://link.springer.com/chapter/10.1007/978-3-030-10925-7_3

 

 

 

4-4. 딥러닝 모델 학습 교란

  • 현재 의료 영상에 적용되는 딥러닝 네트워크 구조는 대부분 유사한 것으로 알고 있습니다 (보통 ResNet 또는 DenseNet과 같은 CNN 구조를 기반으로 했던 것 같습니다).
  • 특히 문제에 따라 충분한 수의 환자 데이터 확보가 어려운 경우 전이학습(transfer learning)을 위해 미리 학습된 딥러닝 모델 (pre-trained model)을 이용하는 경우가 많습니다.
  • 위와 같이, 딥러닝 학습모델 구조의 다양성이 부족하다는 점은 공격자(or 해커)가 그 구조를 미리 파악하고 수행하는 white box 공격이 가능하게 할 확률을 높여줍니다.
  • 또한, 연구자들을 위해 의료 데이터를 공개하는 경우가 많은데, 학습 데이터가 공개 된다는 것은 공격자에 입장에서 적대적 공격의 성공 확률을 높일 수 있는 여건이 될 수 있습니다.

 

 

4-5. 의료용 소프트웨어의 업데이트 한계

  • 프로그램으로 진단을 할 경우 adversarial attack과 관련한 문제가 지속적으로 발전한다면, 이를 예방하기 위해 프로그램 업데이트를 자주 해야합니다.
  • 하지만, 의료용 소프트웨어는 수정 및 업데이트에 많은 시간과 비용이 소요됩니다.
  • 일반적으로, 밤에 모두가 퇴근하면 원격으로 프로그램 업데이트를 해주면 되지만, 응급환자인 경우 이러한 업데이트 시간을 기다리는 것도 쉬운 일이 아닐 것입니다.
  • 그렇기 때문에 미리 adversarial attack을 방지하는 딥러닝 모델을 만드는 노력이 필요합니다.

 

 

 

 

 

5. Future work

 

앞서 언급한 adversarial attack은 딥러닝 모델을 상용화 시키는데 큰 걸림돌이 될 수 있습니다. 그러므로, adversarial attack에 robust한 딥러닝 모델을 만들기 위한 노력도 수반되어야 합니다.

 

앞으로, 해당 카테고리에서는 adversarial attack과 관련된 연구들이 뭐가 있는지 알아볼 예정입니다.

 

읽어주셔서 감사합니다.

 

 

 

 

 

 

 

 

안녕하세요~


이번엔 딥러닝 응용이라는 chapter를 개설하게 되었어요~


딥러닝에 대한 기본 지식을 넘어서 실제 현실에 맞게 이용하거나 좀 더 효율적으로 학습시키기 위한 방법론들에 대한 개념들을 다루어보려고해요.


저는 최근에 Edge device 같은 곳에 딥러닝 모델을 올려보기 위해 딥러닝 모델을 compression하는데 관심을 갖게 되었는데, 이를 위해 사용될 수 있는 응용개념들을 다루어 보려고 합니다!

+ Recent posts