안녕하세요.

 

이번 글에서는 아래 논문을 리뷰해보려고 합니다. (아직 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를 줄거라고 생각합니다.

 

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

 

 

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

 

 

 

Q1. 딥러닝 관점에서 왜 Network Compression 기술들이 필요한지?

  1. Memory Limitation
    • 가끔씩 성능을 높이기 위해 굉장히 큰 딥러닝 모델을 사용하는 경우가 있습니다.
    • 이런 경우 멀티GPU 또는 분산시스템 기반의 학습기법을 사용해야합니다.
    • 하지만, GPU 가격이 싼 것도 아니고, 분산 시스템을 구축하는 것도 쉬운게 아니기 때문에 큰 딥러닝 모델을 학습시키거나 사용하는건 (실용적인 관점에서) 문제가 됩니다.
  2. Worse Performance
    • 딥러닝 모델이 크다는 것은 굉장히 많은 모수(parameter)들이 존재한다는 것입니다. 
    • 딥러닝 이론에서 보면 알 수 있듯이 parameter(weight)가 지나치게 많다면, curse of dimension에 빠질 수 있습니다.
    • 그러므로, 충분한 학습 데이터가 없다면 마냥 큰 모델을 이용하는 것은 좋지 않습니다.
  3. Training/Inference Speed
    • 연구를 하다보면 새로운 모델링을 하는 것도 중요하지만 hyper parameter를 최적으로 setting 해주는 것도 필요합니다.
    • 오히려, 산업에서는 빠르게 모델을 적용해야 하기 때문에 hyper-parameter를 튜닝해서 기존 모델을 최적화 시키는 작업을 진행하는 경우가 더 많죠.
    • 하지만, 딥러닝 모델이 크다면 다양한 조합의 hyper-parameter들을 테스트 해보기 힘들어지는 경우가 발생합니다.

 

 

Q2. Network Compression에 쓰이는 기술들에는 무엇이 있는지? (해당 내용들은 관련 카테고리에서 자세히 설명하도록 하겠습니다)

  1. Pruning
  2. Weight Factorization
  3. Knowledge Distillation
  4. Weight sharing
  5. Quantization

이미지 출처: https://www.researchgate.net/figure/Different-types-of-compression-techniques-for-DNN-and-traditional-ML-methods-Here-the_fig1_339129502

 

 

(↓↓↓위의 내용들은 아래 블로그를 기반으로 작성했습니다↓↓↓)

https://blog.est.ai/2020/03/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-%EC%95%95%EC%B6%95-%EB%B0%A9%EB%B2%95%EB%A1%A0%EA%B3%BC-bert-%EC%95%95%EC%B6%95/

 

딥러닝 모델 압축 방법론과 BERT 압축

딥러닝(Deep Learning)은 뛰어난 성능과 높은 모델의 확장성(Scalability)으로 인해 많은 주목을 받았고, 요즘 산업계에서도 활발하게 적용되고 있습니다. 하지만 모델의 높은 확장성은 또 다른 문제를

blog.est.ai

 

'Network Compression for AI' 카테고리의 다른 글

2. Edge Computing이란?  (0) 2021.06.04
1. AIoT란? (Feat. IoT 개발 프로세스)  (0) 2021.06.04
이 글을 쓰게 된이유  (0) 2021.06.04

안녕하세요

이번 글에서는 Edge Computing에 대해 설명드리려고 합니다.

 

 

1. Edge Computing 등장 배경

 

1-1. 클라우드 서버의 과부하

지난 AIoT 글에서 언급했던 것 처럼, "5G 기슬의 발전 + AI 기술(영상처리, 음성처리)과 접목한 IoT"로 인해 대용량 데이터들이 빠르게 클라우드 서버로 전송된다고 말씀드린바 있습니다.

 

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

 

1. AIoT란? (Feat. IoT 개발 프로세스)

안녕하세요. 이번 글에서는 제 경험을 먼저 이야기한 후, AIoT에 대해서 설명해보려고 합니다. 0. AIoT에 관심을 갖게 된 계기 제가 전기전자컴퓨터(EECS) 소속으로 석사를 할 당시에 다양한 연구실

89douner.tistory.com

 

이미지 출처: https://medium.com/gowombat/iot-simple-iot-with-free-cloud-solutions-tutorial-76ac5cf6e5a0

 

 

기본적으로 AI 기반 모델들은 연산량이 많아 고성능 컴퓨터 기반으로 모델링 되었습니다. 

그렇기 때문에, device(하드웨어: 센서 등)에서 얻은 데이터들은 클라우드에 위치한 고성능 서버 컴퓨터로 전송되고, 전송된 데이터는 해당 컴퓨터에 탑재된 AI 모델을 이용해 처리하게됩니다.  

 

물론 Cloud에서 데이터 과부하가 발생하는 것을 막기위해 FOG라는 것을 두어, 중요한 데이터를 선별하는 변화를 꾀했지만, 이 역시 완전한 해결책은 아니었습니다. → Fog 컴퓨팅 관련링크

 

이미지 출처:  https://www.imagimob.com/blog/edge-computing-needs-edge-ai

 

결국, 클라우드 서버에 몰리는 방대한 데이터로 인해 발생하는 트래픽 문제를 해소하기 위해 Edge Computing이라는 용어가 등장하게 됩니다.

 

 

 

1-2. 느린 Response time

기본적으로 데이터 양이 많으면 클라우드까지 왔다갔다 하기에 시간이 오래 걸릴 수 있습니다.

 

이미지 출처: https://www.researchgate.net/figure/Computing-devices-accessing-cloud-applications-may-face-slow-response-time_fig1_301784764

 

그런데, 단말기(edge)에서 AI 기법을 적용시키는 경우 고속 reponse time이 필요합니다.

 

예를들어, 아이의 이상행동을 감지하거나, 자율주행자동차의 경우 기기 자체에서 AI모델을 training(학습)하고 inference(추론)할 수 있게 해주어야 합니다.

 

이미지 출처: https://www.banggood.com/Xiaovv-C1-1080P-WIFI-H_265-IP-Camera-Baby-Infants-Monitor-2MP-150-Super-Wide-Angle-Baby-Sleep-Care-Crying-Alarm-Push-Two-way-Audio-IP-Camera-p-1765180.html

 

이미지 출처: https://www.dreamstime.com/stock-illustration-autonomous-driverless-car-automobile-sensors-use-self-driving-cars-camera-data-pictures-radar-lidar-image69567133

 

 

 

 

 

2. Edge Computing 이란

위에서 언급한 것처럼, edge device 자체에서 AI모델을 training(학습)하고 inference(추론)할 수 있게 해주는 기술을 edge computing이라고 합니다.

 

이미지 출처:  https://www.imagimob.com/blog/edge-computing-needs-edge-ai

 

 

이러한 Edge computing을 가능하게 했던건 역시 하드웨어 기술의 발달 때문이었습니다.

  • 집적기술의 발달로 인한 AI chip 발전이 가능해짐
  • IoT와 같은 Device AI chip (ex; Tegra X)이 들어갈 수 있기 때문에, 머신러닝이 가능
  • 이러한 추세는 sensing과 관련된 IoT 디바이스들을 좀 더 intelligent하게 만들 수 있게 됨
  • Smart phone에서는 GPU, CPU 통합 개념인 AP(Application Processor)라는 on-device가 있다.
  • Qualcomm, Apple, Samsung, TSMC, NVIDIA 같은 회사들이 얽히고 얽혀 있으며, 이러한 회사들의 기술개발 트렌드를 따라가지 못하면 결국 Edge computing을 연구하려는 연구자들은 엉뚱한 연구를 할 가능성이 높아짐

 

(↓↓ 위의 회사들 간의 관계가 궁금하다면↓)

https://89douner.tistory.com/category/%EC%BB%B4%ED%93%A8%ED%84%B0%20%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4

 

'컴퓨터 하드웨어' 카테고리의 글 목록

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

89douner.tistory.com

 

 

 

위와 같은 하드웨어의 발전은 더욱 Edge computing 기술을 앞당기고 decentralization을 가속화 시키고 있습니다.

 

 

 

이러한 Edge computing 덕분에 클라우드 뿐만 아니라 기계자체(edge or on-device)에서 AI 기술(ex; CNN)을 적용시킬 수 있게 되었습다

 

또한, 딥러닝 학계에서도 고성능 PC를 기반으로 만든 딥러닝 모델을 축소시키려는 network compression 분야에 많은 노력을 기울이고 있습니다.

 

 

현재는 Jetson Nano와 같은 디바이스에서 딥러닝을 구현하는 edge computing 교육이 보편적으로 자리잡고 있습니다. Edge Computing API도 보기 쉽게 구성함으로써 많은 개발자들이 해당 기술을 배우는데 진입 장벽을 낮추고 있습니다.

 

 

(↓↓↓Edge computing과 Jetson Nano↓↓↓)

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

 

 

최근에는 DPU라는 개념도 등장했으니 한 번 참고해보세요!

(↓↓↓DPU↓↓↓)

https://www.youtube.com/watch?v=G-Cd50OVcyc

 

 

 

3. Edge Computing을 주목해야 하는

가트너(Gartner) 주식회사는 미국의 정보 기술 연구 및 자문 회사입니다.

 

가트너의 고객은 정부기관 및 IT 기업, 투자 회사 등 다양한데,

매해 가트너에서 전략 기술 트렌드(Gartner Top Strategic Technology Trends)를 발표할때면,

제시된 기술 트렌드를 놓치지 않기 위해 세계적인 IT 회사들이 노력을 기울입니다.

 

이미지 출처: https://www.gartner.com/smarterwithgartner/gartner-top-10-strategic-technology-trends-for-2020/

 

 

 

가트너는 2018, 2019, 2020 3년 연속으로 Edge Computing을 주요 키워드로 뽑을 정도로 중요한 기술이라고 주장했습니다.

 

때문에 많은 IT 기업들이 edge computing을 주목하고, edge computing으로 인해 파생될 효과들을 선점하기 위해 지속해서 주목 할거라 생각합니다. 

 

2018

 

2019

 

2020

 

 

 

 

'Network Compression for AI' 카테고리의 다른 글

3. Network Compression 기술  (0) 2021.06.04
1. AIoT란? (Feat. IoT 개발 프로세스)  (0) 2021.06.04
이 글을 쓰게 된이유  (0) 2021.06.04

안녕하세요.

이번 글에서는 제 경험을 먼저 이야기한 후, AIoT에 대해서 설명해보려고 합니다.

 

 

0. AIoT에 관심을 갖게 된 계기

 

제가 전기전자컴퓨터(EECS) 소속으로 석사를 할 당시에 다양한 연구실들이 있었습니다.

보통 딥러닝이나 인공지능 연구를 하는 랩실들은 따로 모여 있는 경우가 많았죠.

 

하지만, 저희 랩실은 교수님께서 오래전부터 하드웨어도 같이 하고 있으셔서 광학, 센서, 집적기술을 다루는 랩실들과 같이 있었습니다. 이러한 랩실들이 보통 하드웨어 장비를 만들어내는 원천 기술들을 연구개발 하고 있었죠.

 

 

 

 

특정 도메인(의료, 패션 등)에서 딥러닝을 수단으로만 사용하는 경우나 딥러닝 자체만 연구하는 경우에는 앞서 언급한 하드웨어 장비들의 필요성을 못느끼는 경우가 대부분입니다 (자체 연구만 하기도 바쁘니까요;;ㅎ)

 

저 또한 하드웨어 장비에는 크게 관심을 갖지 않았죠.

그런데, 석사를 졸업하고 딥러닝을 이용해 사업을 한다는 마인드를 가지고 연구를 해보려고 했을 때 처음 부딪힌 것이 하드웨어 장비였습니다.

 

연구실에서는 이미 갖춰진 장비로 실험하면 됐지만, 아무것도 갖춰지지 않은 밑바닥 상태에서부터 시작하려니까 하드웨어에 대한 이해가 필수더라구요. 

 

(↓↓↓제가 하드웨어 관련 장비들을 정리한 내용들 입니다↓↓↓)

https://89douner.tistory.com/category/%EC%BB%B4%ED%93%A8%ED%84%B0%20%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4

 

'컴퓨터 하드웨어' 카테고리의 글 목록

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

89douner.tistory.com

 

 

또한 IoT 기기에서 얻는 데이터를 기반해 딥러닝을 접목하는 연구를 해보려고 했을 때, IoT(하드웨어) 장비들로부터 얻는 데이터가 굉장히 중요하다는 것을 알게 됐습니다.

 

하드웨어 장비들이 좋지 않으면 데이터의 상태가 좋지 않기 때문에 전처리 하는데 대부분의 시간을 보내게 된다는 점을 깨달았죠. (이러한 점을 미리 알았다면 하드웨어 연구실에 있던 연구원 분들과 더 많은 이야기를 하면서 더 친하게 지낼 수 있었을 텐데...)

 

하드웨어 소재와 같은 것을 공부하는건 시간 상 불가능했지만, IoT에 쓰이는 하드웨어 장비가 무엇이 있고, 내 아이디어를 위해서는 어떤 장비들을 쓰면 좋은지 알아가는 것만으로 충분하다고 판단했습니다.

 

이미지 출처: https://towardsdatascience.com/a-comprehensive-guide-to-start-building-an-iot-product-ba32dfb91c7a

 

 

이 과정에서 집적기술의 발달로 AI를 뒷받침 해주는 하드웨어 장비들이 점점 등장하기 시작했고, 이러한 장비들과 인공지능 기술을 이용해 데이터들을 분석하는 붐이 일어나기 시작했죠.

 

AIoT라는 기술이 위에서 언급한 개념들을 총괄할 수 있을 겁니다. 

하지만, AIoT라는 개념을 이해하기 위해서는 IoT에 대한 전반적인 이해가 선행되어야 합니다. 

그럼, 지금부터 IoT에 대한 개념을 먼저 살펴보고, AIoT가 무엇인지 알아보도록 하겠습니다.

 

이미지 출처: https://www.datadriveninvestor.com/2019/12/10/aiot-the-new-technology-powerhouse-for-new-age-businesses/

 

 

 

 

 

 

1. IoT란?

IoT는 Internet of Things의 약자로 센서가 부착된 사물들을 인터넷 통신 기능을 통해 연결하는 기술을 의미합니다.

  • 여기서 말하는 사물은 device, 객체, object라는 용어와 혼합해서 사용하기도 합니다.
  • 센서의 종류로는 조도센서, 습도센서, 감지센서 등이 있습니다.
  • 보통 IoT에서 통신기능은 무선통신(wireless)을 의미합니다

 

이미지 출처: https://www.pinterest.co.kr/pin/432767845444273959/

 

이미지 출처: https://www.istockphoto.com/kr/%EC%9D%B4%EB%AF%B8%EC%A7%80/smart-home

 

 

 

정말 간단한 예시를 들면, 아래와 같은 흐름으로 IoT가 실행된다고 할 수 있습니다. (굳이 Node-RED를 이해하지 않으셔도 됩니다!)

 

 

 

 

 

 

2. IoT 개발 프레임워크

여러분이 IoT를 이용해서 어떤 서비스를 제공한다고 가정해보겠습니다.

그렇다면 어떤 순서로 IoT를 개발해야 할까요? 

 

물론 동시에 다양한 관점이 필요할 수 있겠지만, 굳이 순서를 나누자면 아래와 같다고 할 수 있습니다.

 

 

2-1. 하드웨어장비 선별하기

  • 제일 먼저 해야할 일은 나의 아이디어를 구현시켜줄 적합한 IoT 장비를 선별하는 것입니다.
  • IoT 장비들은 여러가지가 있는데 일반적으로 나누자면 메인보드 역할을 하는 부품과 메인보드에 연결된 센서(sensor) 또는 액츄에이터(actuator) 장비들이 있습니다.
    • 메인보드 장비: 아두이노, 라즈베리 파이
    • 센서: 조도센서, 열센서, 감지센서, 등....
    • 액츄에이터: LED, Fan 등...

 

① 먼저, 아두이노와 센서장비를 연결 시킵니다. (보통 브레드보드를 사용하여 테스트하기도 하지만, 여기에서는 아두이노와 관련된 설명은 최대한 자제하도록 하겠습니다)

 

② 센서(오른쪽에 있는 기기)는 지속해서 아두이노(왼쪽에 있는 기기)에게 온도 정보를 전달합니다.

이미지 출처: https://create.arduino.cc/projecthub/TheGadgetBoy/ds18b20-digital-temperature-sensor-and-arduino-9cc806

 

 

 

 

 

 

③ 컴퓨터와 아두이노는 USB로 연결할 수 있습니다.

④ 컴퓨터에서 프로그래밍을 작성해줍니다 (아두이노로부터 전달되는 온도 정보를 화면에 출력하는 프로그램)

⑤ 해당 프로그램을 컴파일시켜주고, 아두이노에 이식시켜줍니다.

 

(좀더 정확한 순서 "프로그래밍 입력" → "컴파일러를 통해 기계어로 변환" → "기계어를 하드웨어에 임베딩")

이미지 출처: https://www.instructables.com/Arduino-Temperature-Sensor-Using-LM35/

 

 

정리하자면, 아두이노 또는 라즈베리 파이는 센서 또는 액추에이터와 상호작용하면서 서로 정보를 주고 받게 됩니다.

이미지 출처: https://codedragon.tistory.com/7083

 

 

 

위에서 언급한 장비들은 아래 사이트에서 찾아볼 수 있습니다. (아래 사이트 외에 다양한 사이트들이 있으니 비교해보고 구매 사이트를 결정하시면 될 것 같아요!)

※ 좋은 장비일 수록 비싸겠지만, 그만큼 더 좋은 데이터들을 받아볼 수 있는 것 또한 사실입니다!

 

https://www.icbanq.com/#

 

전자부품쇼핑몰 아이씨뱅큐 - 전자부품, 오픈소스 하드웨어의 모든 것

국내 최대 전자부품 쇼핑몰. 아두이노/마이크로비트/라즈베리파이 등 오픈 H/W , LCD,리튬배터리, 반도체 부품, 코딩교육키트 등 판매 및 PCB/SMT/아트웍 임가공 서비스 제공. 다양한 마케팅 채널(블

www.icbanq.com

 

※ 아두이노 프로그래밍 관련 내용은 추후에 따로 업로드 하도록 하겠습니다. (정리는 되어 있는데 옮길 시간이ㅜㅜ;;;;)

 

 

 

 

 

2-2. QoS(Quality of Service)와 MQTT(Message Queing Telemetry Transport) 통신

보통 PC에서는 TCP/IP라는 통신 프로토콜이 존재하지만 IoT 환경은 고성능 PC 환경과는 조금 다르기 때문에, MQTT라는 별도의 프로토콜을 이용해 IoT 기기간의 통신을 지원합니다.

 

 

ⓐ TCP/IP 프로토골에서도 Packet format이 있듯이 MQTT 프로토콜에서도 아래와 같은 Packet format이 있습니다.

이미지 출처: https://openlabpro.com/guide/mqtt-packet-format/

 

 

흔히 IoT에서 적용하는 QoS 에는 MQTT 프로토콜(=protocol: 합의된 규약)이 있습니다.

 

Q. Qos란?

  • QoS(Quality of Service)는 다른 응용 프로그램, 사용자, 데이터 흐름 등에 우선 순위를 정하여, 데이터 전송에 특정 수준의 성능을 보장하기 위한 능력을 말합니다.
  • 이러한 우선순위는 국제표준기관에서 표준으로 정하며, 모든 국가가 해당 표준을 따릅니다.
  • QoS가 구현되지 않아서 TV나 전화, 그리고 인터넷이 똑같은 우선순위로 케이블망을 사용하게 되면 인터넷 사용자가 다운로드를 동시에 여러 개 시도할 경우, TV는 당장 볼 수 없는 지경에 이르고, 전화는 불통에 이르고 맙니다

 

※MQTT에 대한 더 자세한 설명은 추후 아두이노 편에서 다로도록 하겠습니다 (이 역시 옮길 시간이 없어서..ㅜㅜ;;;;;)

 

이미지 출처: https://wnsgml972.github.io/mqtt/2018/03/05/mqtt/

 

 

그렇다면, IoT 환경에는 어떤 특징들이 있을까요?

 

[IoT 환경]

  1. IoT 환경에서는 무선과 같은 단거리 통신 (Bluetooth, Zigbee ..)을 사용하기 때문에, 유선 통신에 비해 연결이 비교적 불안정하다.
  2. IoT 기기들은 전원을 통해 상시 충전되는 경우보다 배터리를 통해 기기들 작동시키는 경우가 많습니다. 그렇기 때문에, 종종 연결이 끊기기도 합니다. 이러한 문제들을 해결하기 위해 저전력으로 IoT 시스템을 운용해야할 필요가 있다.
  3. IoT 기기들은 수집한 데이터들을 서로 공유하기도 하며, 실시간으로 보내는 데이터 양이 많기 때문에 이를 처리하기 위해 많은 시간이 소모될 가능성이 높다.
  4. 이러한 불안정함을 프로토콜 상에서 안정적으로 보내주기 위해 별도의 QoS 기술(=MQTT)적용이 필요하다

 

 

위와 같은 문제들을 극복하고자 IoT 환경에 적합한 MQTT라는 프로토콜을 이용해 기기들간의 통신을 지원해줍니다.

 

이미지 출처: https://velog.io/@bmh8993/MQTT-%ED%86%B5%EC%8B%A0-PubSub-python%EC%9C%BC%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

 

 

 

2-3. Cloud server and IoT data

앞서 언급한 내용을 토대로 데이터가 어떤 흐름으로 흘러가는지 알아보도록 하겠습니다.

 

  1. 프로그램을 만들고, 컴파일을 한다.
    • 프로그램 내용: MQTT 통신을 이용해 해당 정보(data)들을 클라우드 서버에 전송
  2. 컴파일을 통해 번역된 기계어를 아두이노에 이식시킨다.
  3. 아두이노에 해당 정보(data)와 관련된 센서를 연결시킨다.
  4. 해당 센서로부터 실시간 정보(data)가 아두이노에게 전송된다.
  5. 아두이노에 탑재된 통신장비(기기)가 해당 데이터를 와이파이로 전송한다.
  6. 전송된 데이터는 클라우드 서버에 저장된다.

 

이 후, 클라우드 서버에 모인 방대한 데이터들을 기반으로 분석합니다. (보통 이렇게 모인 데이터를 기반으로 데이터 사이언스 기술을 적용시킵니다)

 

그리고, 분석한 내용들을 user들에게 전송하게 됩니다.

 

이미지 출처: https://www.avsystem.com/blog/iot-cloud-platform/

 

 

이미지 출처: https://www.youtube.com/watch?v=SIn917VvkmE

 

 

 

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

 

 

 

 

AWS, GCP와 같은 기업에서는 IoT 환경에 최적화된 클라우드 서비스를 제공해주기도 하고, 관련 경험들을 매년 개발자회의 같은 곳에서 공유하기도 합니다. 

 

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

 

 

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

 

 

 

※ 최근에는 아래와 같은 두 가지 요소로 인해 클라우드 서버를 대체할 만한 방법을 찾고 있습니다.

  • IoT가 방대한 데이터들(ex: 멀티미디어 데이터)을 다루기 시작했다. → 데이터 용량 증가
  • 5G와 집적기술이 지속적으로 발달하고 있다 → 한 번에 방대한 데이터를 빠른속도로 보내는 것이 가능

즉, 클라우드 서버가 너무 많은 데이터를 받아야 하기 때문에, 과부하 상태에 걸릴 것이라는 우려가 나오고 있습니다.

 

그래서, 몇 년 전부터는 Edge Computing과 같은 용어도 나오게 됐는데, 해당 내용은 다음글에서 다루도록 하겠습니다.

 

 

 

 

3. IoT 플랫폼 (user 관점)

 

앞서 언급한 내용들이 IoT 생태계를 만들어 나가는 내용들이라면,

이제부터는 연구자들이 만들어 놓은 IoT 생태계를 어떻게 이용하고 사용하는지 user 관점에서 알아보도록 하겠습니다.

 

IoT 제조사들은 한 분야에만 특화 되어있는 경우가 많습니다. 그렇기 때문에, 소비자들은 불필요하게 다양한 기기들을 사야되는 경우가 발생하죠.

 

예를 들어, IoT를 이용해 스마트 홈을 구성할 때, 커튼이나 조명을 핸드폰 어플로 조절할 수 있습니다. 그런데 이러한 경우 커튼과 조명의 제조사가 다르면 각각 다른 2개의 어플로 따로 조절해줘야하죠.. 여간 불편한 일이 아닐 겁니다.

 

그렇기 때문에 이러한 IoT 기기들을 어떻게 통합하고 관리할건지도 사용자 측면에서 굉장히 중요한 요소가 됩니다.

 

이러한 개념들을 잘 설명해주는 영상을 아래 첨부하도록 하겠습니다.

 

 

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

 

 

제 개인적으로는 윗 영상을 보고나서 느낀 점은 아래와 같습니다.

 

통합플랫폼을 구축하는 것을 봤을 때 IoT의 가장 큰 적은 폐쇠성이다!”

 

통합플랫폼의 trend가 어떻게 변화하는가, 어떤 통합플랫폼을 이용하는 것이 좋은가에 대한 질문을 지속적으로 던지는 것이 좋으며, 관련 학회를 예의 주시 해야한다!”

 

[학회예시1 - Consumer Electronics Show(CES)]

  • CES에서 선정한 키워드로 가전 Trend를 알 수 있음
  • 2019 CES가 선정한 5가지 키워드 중 하나가 smarthome
  • 이번 기조연설에는 Samsung, 아방카, Quibi, Delta, Daimler, 미국 교통부가 발표

 

[학회예시2 - 사물인터넷 학회(ICIoTC: International Conference on IoT&Convergence)]

 

 

 

 

 

또한 연구자들은 아래 영상에서 처럼 사용자들이 불편해 할 만한 부분들이 무엇인지 파악하는 것이 굉장히 중요할거에요!

 

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

 

 

 

 

※ IoT 기기들을 이용해 스마트 홈을 구축하고 싶으신 분들은 아래 유튜브 채널을 구독하시면 좋을 것 같습니다~

 

https://www.youtube.com/watch?v=8Hu1KNPubJE&list=PLdmN8aAKRnIy3lgei1YNrOdlazt1wnaDv 

 

 

 

 

 

4. AIoT

AIoT(=AI+IoT)는 AI와 IoT의 합성어입니다. 

간단히 말해, 앞서 말한 IoT와 AI 기술 (machine learning, deep learning)들을 접목시킨 것이죠. 

 

지난 몇 년간 사물인터넷(IoT)으로 집, 자동차, 가전제품 등이 서로 연결된 스마트 홈 구축에 쏠렸던 관심이 지금은, 서로 연결된 각각의 제품에 인공지능 기술을 탑재하는 방향으로 변하고 있는 추세입니다.

 

예를 들어, 클로바 같은 것도 딥러닝을 이용한 음성인식 기술을 IoT 기기에 탑재한 케이스이고, 딥러닝 모델을 CCTV에 인식시킨 후 이상감지가 발생하면 실시간으로 알려줄 수 있게 됩니다.

 

(↓↓↓Smart home 예시↓↓↓)

https://www.youtube.com/watch?v=909Nn9_hrlM 

 

 

이렇게 딥러닝 기술들을 IoT 기기에 올리기 위해서는 큰 딥러닝 모델(network)를 압축(compression) 시켜야할 기술이 꼭 필요하겠죠? (굳이 IoT 기기가 아니더라도, 드론, 위급상황시 투입되는 로봇들 등에 딥러닝 모델을 올리기 위해 network compression 기술이 필요하기도 합니다)

 

 

(↓↓↓JTBC에서 소개된 신동의 스마트홈, 3:30초 부터↓↓↓)

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

 

 

 

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

 

 

 

 

 

5. Smart 시장

이 글을 마무리하면서 AIoT가 가장 활발하게 적용될 만한 Smart 시장의 예시들을 다룬 영상들을 첨부하면서 마무리 하도록 하겠습니다!

 

 

1) Smart Farm

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

 

 

2) Smart City

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

 

 

3) Smart Factory

https://www.youtube.com/watch?v=r3dAZnztn-Q 

 

4) Smart home

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

 

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

 

 

 

 

 

[참고 래퍼런스]

https://dalkomit.tistory.com/111

 

'Network Compression for AI' 카테고리의 다른 글

3. Network Compression 기술  (0) 2021.06.04
2. Edge Computing이란?  (0) 2021.06.04
이 글을 쓰게 된이유  (0) 2021.06.04

안녕하세요.

 

 

"Network Compression for AI" 카테고리에서는 AI 모델을 압축시키는 여러 방법에 대해서 이야기 하려고 합니다.

 

실제로 AI모델 (ex:딥러닝, 머신러닝 모델 등) 들은 하드웨어에 임베딩 하기 힘든 큰 용량을 갖고 있습니다.

 

그래서 몇 년전부터 이러한 AI 모델을 압축시키는 여러 기술들 ("Knowledge distillation, Pruning, etc.) 이 출현하고 있었죠. 

 

 

이미지 출처: https://blog.est.ai/2020/03/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-%EC%95%95%EC%B6%95-%EB%B0%A9%EB%B2%95%EB%A1%A0%EA%B3%BC-bert-%EC%95%95%EC%B6%95/

 

 

그렇다면 왜 AI 모델을 하드웨어에 올려서 사용하려는 노력이 왜 필요할까요?

 

 

이미지 출처: https://kr.mathworks.com/company/events/webinars/upcoming/deep-learning-with-raspberry-pi-and-matlab-3251374.html

 

 

 

그 이유는 당연히 산업에 적극적으로 활용하기 위해서 입니다.

 

 

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

딥러닝 모델이 실제 하드웨어 기기에 배포되는 프로세스 예시

 

 

딥러닝 연구를 하다보면 드는 아래와 같은 생각들 종종 하게 됩니다.

 

"아카데믹하게 공부하는 거 같긴한데, 이게 그래서 상업적으로 가치가 있는건가?" 

 

예를 들어, 굉장히 좋은 저널과 학회에 논문들이 쏟아져 나오고 있지만, 종종 "이러한 기술들이 우리 일상생활을 어떻게 바꿀 수 있을까?"라는 생각이 드는 경우가 있습니다. 물론, 논문에서 introduction을 읽다보면 어느 분야에 기여할 수 있는지 파악할 수 있지만, 개인적으로는 내 일상에서 너무 멀리 떨어진 것 같다는 생각을 하기도 합니다.

 

연구라는 것이 굉장히 독창적인 측면도 좋지만,

결국 산업에 기여하고 투자를 받아야 오래 동안 할 수 있습니다.

 

또한, 바로 내 주위 사람들에게 영향을 미칠만한 연구를 하고 있다는 느낌을 받아야 동기부여도 더 잘 될거라고 생각합니다.

 

 

이미지 출처: https://journals.plos.org/plosmedicine/article/figure?id=10.1371/journal.pmed.1001953.g001

 

이미지 출처: https://aeneas-office.org/2018/11/20/penta-project-creates-secured-digital-connected-healthcare-devices/

 

 

이러한 노력의 일환으로 딥러닝 분야에서는 큰 딥러닝 모델 용량을 하드웨어 수준에 맞추도록 줄여주는데, 이를 Network Compression 이라 합니다.

 

우선 Network Compression 기술들에 대해 알아보기 전에, 이러한 기술들의 needs가 커질 수 밖에 없었던 여러 현상들과 관련 용어들을 다루는 글을 기재하도록 하겠습니다. 왜냐하면...

 

"기술을 배운다라는 것은 주변 산업의 트랜드를 따라가는 것부터 시작이기 때문이죠!" 

 

 

 

'Network Compression for AI' 카테고리의 다른 글

3. Network Compression 기술  (0) 2021.06.04
2. Edge Computing이란?  (0) 2021.06.04
1. AIoT란? (Feat. IoT 개발 프로세스)  (0) 2021.06.04

※시간이 충분하지 않아 필기로 정리한 내용을 아직 블로그 글로 옮기지 못해 이미지로 공유하는점 양해부탁드립니다.

아래 내용의 키워드는 다음과 같습니다.

 

Keywords:

 

(글의 순서는 왼쪽부분부터 읽으시고, 오른쪽 부분으로 넘어가시면 됩니다)

 

 

 

.

.

.

.

 

 

.

.

.

.

 

 

※시간이 충분하지 않아 필기로 정리한 내용을 아직 블로그 글로 옮기지 못해 이미지로 공유하는점 양해부탁드립니다.

아래 내용의 키워드는 다음과 같습니다.

 

Keywords:

 

(글의 순서는 왼쪽부분부터 읽으시고, 오른쪽 부분으로 넘어가시면 됩니다)

 

 

 

.

.

.

.

 

※시간이 충분하지 않아 필기로 정리한 내용을 아직 블로그 글로 옮기지 못해 이미지로 공유하는점 양해부탁드립니다.

아래 내용의 키워드는 다음과 같습니다.

 

Keywords: Jacobian matrix

 

(글의 순서는 왼쪽부분부터 읽으시고, 오른쪽 부분으로 넘어가시면 됩니다)

 

 

 

.

.

.

.

 

 

 

.

.

.

.

 

 

.

.

.

.

 

 

.

.

.

.

 

※시간이 충분하지 않아 필기로 정리한 내용을 아직 블로그 글로 옮기지 못해 이미지로 공유하는점 양해부탁드립니다.

아래 내용의 키워드는 다음과 같습니다.

 

Keywords: 삼중적분, 원통좌표계, cylindrical coordinate, 구면좌표계, spherical coordinate system

 

(글의 순서는 왼쪽부분부터 읽으시고, 오른쪽 부분으로 넘어가시면 됩니다)

 

 

 

.

.

.

.

 

 

.

.

.

.

 

 

.

.

.

.

 

.

.

.

.

 

 

 

+ Recent posts