본문 바로가기
데이터 과학 관련 스터디/cs231n

cs231n 2강 Image classification pipeline 요약

by inhovation97 2020. 10. 17.

cs231n 2강 주제는 Image classifiacation pipe line입니다.

강의 대략 아래 목차대로 진행됩니다.

 

  overview
  • Semantic Gap & Image data의 구조
  • Data - driven approach : Nearest Neighbor & K-NN, Linear clssifier

 

<Semantic Gap & Image data 구조>

 

 

  • 이미지 데이터에서는 Semantic Gap이라는 문제가 발생합니다. Semantic Gap이 뭔지 알기 전에 이미지 데이터의 구조를 알아봅시다. 
  • 이미지 데이터는 위 사진처럼 각 픽셀의 값을 정보로 입력값을 받습니다. (가로, 세로, 채널)로 표기하므로 위 고양이 사진은 (800,600,3)으로 표기하고 총 480000의 픽셀을 가진 Red, Green, Blue의 채널을 가진 컬러 사진이라고 해석합니다. 이미지 데이터는 input 할 때에 이 픽셀 값들을 1차원 array값으로 배열을 바꾸어 input 해줍니다.

 

 

 

 

  • Semantic Gap을 직역하면 의미상의 차이인데, 이는 우리가 이미지를 눈으로 받아들이는 방식과는 달리 컴퓨터는 픽셀 값으로 받아들이기 때문에 생기는 문제들을 일컫는 것입니다. Semantic Gap이 발생하면서 생기는 문제들을 강의에서는 6가지로 분류합니다.

     1) Viewpoint variation : 객체를 보는 시각에 따른 차이

     2) Illumination : 객체에 쏘인 조명에서 발생되는 차이

     3) Deformation : 객체의 형태 변화에 발생되는 차이

     4) Occlusion : 객체가 가려져서 발생되는 차이

     5) Background clutter : 객체와 배경의 패턴이나 색이 구분이 안되면서 나오는 차이

     6) Intraclass variation : 같은 객체들도 여러 class로 나뉘는 문제

 

 

<Data - driven approach>

Semantic Gap으로 이미지 데이터의 특성을 알아봤습니다. 그렇다면 우리는 이미지를 분류하는 모델을 어떻게 만들 수 있을까요? 

  • 2번째 함수처럼 데이터 중심으로 접근하여 모델을 학습시키고 이를 토대로 이미지를 분류해야 할 것입니다.

<Nearest Neighbor & K-NN>

 

CIFAR10 데이터로 NN의 원리를 살펴봅시다.
  • NN은 학습단계에서 training의 정보를 모두 memory에 저장합니다.
  • test 셋을 집어넣고 test의 데이터와 50,000개의 training데이터와의 L1 distance값을 전부 구합니다.(행렬 계산법)
  • 그렇게 50,000개의 L1값 중 가장 작은 값의 training 이미지의 라벨을 해당 test값의 class로 분류합니다.

 

이번에는 K-NN을 살펴봅시다.

K-NN은 가장 가까운(Ditance값이 작은) 이미지의 라벨을 부여해주는 NN과는 달리 Distance 가장 작은 K개의 이미지들 중에서 다수결을 통해 class를 부여해주는 방식입니다.

심지어 하이퍼 파라미터도 2개나 생겼고, 이를 통해 모델 성능을 높일 수 있게 되었기 때문에 NN보다는 훨씬 합리적인 방식으로 보입니다.

 

일단 하이퍼 파라미터는 몇개의 distance값들 중에서 투표를 할지 정할 수 있고, 어떤 distance 값(L1 or L2)을 이용할지를 정할 수 있습니다.

이제 가장 좋은 성능을 내는 best 하이퍼 파라미터 조합을 세팅하는 기법을 봅시다.

  • test셋으로 성능을 비교하면, 과적합의 여부를 확인할 수 없으므로 절대로 test셋은 성능비교에 쓰면 안됩니다.
  • train셋에서 validation셋을 만들어 성능을 비교하며, best 조합을 찾아줍니다.
  • train셋에 validation셋 까지 만들기 때문에 데이터가 부족하면 cross-validation기법을 이용할 수 있습니다.

cross-validation을 5로 지정했기 때문에 위 그래프에서는 K값을 변경할 때마다 5개의 결과를 비교하기에 점이 5개씩 찍혀있습니다.
최종 결과는 K=7일 때 평균 정확도가 가장 높게 나오네요. (하지만 정확도가 개판이다.)

 

<NN & K-NN을 안쓰는 이유>

 

사실 Distance 방식을 이미지 데이터에 이용하는 것은 굉장히 비합리적인 방식입니다. 이미지는 이미지 자체가 가지고 있는 공간 정보들도 있고, 컬러, 배경 등등 고려해야할 요소가 굉장히 많은데 Distance를 이용하여 이미지를 분류하는 것은 위에서 말했던 6가지의 Semantic Gap을 전부 해결할 수 없는 것이죠...

 

<Linear classification>

그래서 슬슬 딥러닝 단계로 접어듭니다.
Neural Network의 가장 기본적인 단위인 Linear Classifier를 생각해 볼 수 있습니다.
오른쪽 예시로 원리를 살펴봅시다. 
  • 픽셀이 2x2이며 class가 3개인 고양이 사진이 있습니다.
  • 위에서도 말한대로 1차원 array 형태로 이미지 데이터의 배열을 바꿔서 input해줍니다.
  • 각 픽셀마다 또 클래스마다, 가중치 w가 배정되어 해당 가중치를 곱한 뒤, bias값을 더해주어 class별 결과값이 도출 됩니다. (행렬의 곱셈법)
  • 이미지는 가장 높은 점수의 class로 분류됩니다. 

<Linear classifier의 한계>

 

Linear classifier는 NN기법에서의 분류시간의 단점을 극복할 수 있으며, 각 클래스별로 가중치가 배정되기 때문에 이미지 분류에 있어서는 NN기법보다는 합리적인 방식인 것 같습니다. 하지만 아직도 정확도가 낮은 이유가 있습니다.

바로 공간 정보를 활용할 수 없다는 단점을 극복하지 못한 것입니다. 

아직도 픽셀값들의 계산만으로 의존하여 컬러에만 너무 민감한 모델입니다.

위 슬라이드에 dog를 보면 갈색이지만 개의 형태는 잘 보이지 않습니다. 아직은 많이 미흡한 것이죠.

 

따라서 이 고질적인 문제점을 해결해주는 CNN기법은 바로 다음 강의에서부터 다루게 되네요!

 

 

*cs231n 강의자료

cs231n.stanford.edu/2017/syllabus.html

 

Syllabus | CS 231N

Lecture 8 Thursday April 27 Deep Learning Software Caffe, Torch, Theano, TensorFlow, Keras, PyTorch, etc [slides] [video]

cs231n.stanford.edu

*k-cross validation 참고자료

inhovation97.tistory.com/12?category=833809

 

[모두의 딥러닝] 13장 과적합 피하기

13장은 제가 잠깐 언급했던 과적합(overfitting)에 대한 챕터입니다. 과적합이 무엇인지에 대해서 정확히 짚어보고 그 해결방안을 주제로 포스팅 하겠습니다. 이번 데이터는 이진분류로 광석과 돌��

inhovation97.tistory.com

 

댓글