cs231n 강의

cs231n 2강 정리

삼선차니 2022. 4. 9. 17:11

▶ 초심공룡을 아는가, 그 모임엔 막내가 정말 치명적이다.

2강의 주제는 Image Classfication Pipeline 이다.

 

Image Classification컴퓨터 비전 분야핵심작업이다.

이 작업을 어떻게 수행하는지 알아보자.

 

1. Semantic gap

- Semantic gap은 하나의 이미지를 입력받을때 다양한 영향로 인해 받아들이는 의미가 다르다는 걸 뜻한다.

- 컴퓨터는 이미지를 하나의 큰 격자 모양에 숫자들로 보기 때문에 Semantic gap이 발생한다.

컴퓨터는 이미지를 큰 격자 모양의 숫자로 인식

- 이러한 Semantic gap을 유발시키는 다양한 영향들이 있다. (이러한 영향을 강의에선 Challenges 라고함)

  1. Viewpoint Variation(보는 각도의 변형)
  2. illumination(조명)
  3. Deformation(형태의 변형)
  4. Occlusion(은폐, 은닉)
  5. Background clutter(객체와 배경이 구분 안가는 경우)
  6. intraclass variation(Ex : 다양한 생김새의 고양이들이 모인 이미지)

 

2. Image Classifier  

- 말그대로 이미지 분류하는 방법이다. (Semantic gap을 잘 해결하여 이미지를 잘 분류하는게 핵심)

- 이미지의 고양이나 다른 클래스들을 인식하기 위한 알고리즘을 짤 명확한 방법이 없다

- 그 알고리즘을 짤 시도는 해왔다, 근데 안된다.

- 그래서 Data-driven approach 이라는 접근방식이 있다

  •  Data-driven approach
    1) 여러 이미지와 Labels의 데이터 셋을 모은다
    2) 머신러닝을 이용해 이미지 분류기를 학습 시킨다
    3) 보류해놓은 테스트용 이미지들로 학습시킨 분류기를 평가한다.

- Data-driven approach를 이용한 Image Classifier 로는 Nearest Neighbor, k-Nearest Neighbor 이 있다

(근데 이 방법들을 실제론 사용안함)

 

{1} Nearest Neighbor

 1) 트레이닝 단계 - 모든 이미지와 labels들을 메모리에서 기억하게 함

 2) 예측 단계 - 테스트 이미지를 모든 트레이닝 이미지들과 하나하나 비교하여 가장 비슷한 이미지가 나오면 테스트   이미지가 그 트레이닝 이미지의 레이블이라고 예측

위의 함수는 1) 트레이닝 단계를 표현

 

 

 

아래의 함수는 2) 예측단계를 표현

 

 

 

  - 특징 : 트레이닝 이미지(데이터)의 양이 많을 수록 예측시간은 비례하게 늘어난다

  - 예측단계에서 L1 distance(또는 Manhattan distance)를 사용한다.

 

* L1 distance

- 이미지끼리의 거리를 비교하는 계산법

- 방식

 1) 테스트 이미지와 트레이닝 이미지가 있으면 각각 같은 위치의 픽셀에 숫자들 끼리 빼고 절대값을 씌워 정리한다
 2) 나온 절대값들을 다 더한다

 3) 더한 값이 비교한 두 이미지 사이의 거리이다.

 

이런식으로 Nearest Neighbor의 예측단계에서 L1 distance를 이용한다

 

{2} K-Nearest Neighbor(KNN)

- 방식

 1) 테스트 이미지가 들어오면 그것에 가장 가까운 거리의 트레이닝 이미지를 k개 찾는다

 2) 그 모인 k개 이미지들끼리 투표하여 같은 레이블이 더 많은 이미지들의 레이블을 정한다

 3) 들어온 테스트 이미지가 투표로 정해진 레이블이라고 예측한다

 

- 여기서 거리를 측정할때는 보통 L2 distance(또는 Euclidean distance) 를 사용한다.

 

3. Hyperparameters 설정

- 아래의 질문들이 Hyperparameters 설정 할지에 대한 QnA 이다

 

  Q1. 이 분류기(Nearest Neighbor, KNN)에 사용하기 가장 좋은 거리 계산법은 무엇이냐?

  Q2. KNN 에 사용하기 가장 적합한 k값 얼마냐?

 

   A. 문제마다 다름, 모두 다 적용해보고 여러번 실험한 후 가장 결과가 잘 나온걸로 설정하면 된다

 

   => 설정해야할 거리계산법, K값이 Hyperparameters 이다

 

- Hyperparameters 설정 할때 모은 데이터셋을 활용하는 방식이 있다.

1) 트레이닝 이미지들을 테스트셋 이미지들에 계속 적용하며 hyperparameters를 설정하는거 안됨

    - 이유는 테스트 셋은 최후의 보루이다, 모든 트레이닝 작업이 끝나고 가장 마지막에 적용해야 할 데이터셋이다

Hyperparameters 설정 '1)'

2) Validation data을 마련한다

    - 트레이닝 이미지의 데이터셋를 쪼개어 그 일부(보통 20% 정도)를 hyperparameters 설정하는데 사용한다

    - 여기서 그 쪼개어진 부분이 Validation data이다 (Validation은 확인, 검증이란 뜻)

Hyperparameters 설정 '2)'

 

3) 트레이닝 데이터가 적으면 이때는 Cross-validation을 사용하여 hyperparameters를 설정한다

    - 1개의 fold를 남기고 나머지 N개의 fold로 트레이닝 후 남긴 fold로 validation을 진행한다

    - N+1 번의 작업을 하고 나온 N+1개의 결과값으로 평균값을 구하는게 Cross-validation 이다

    - 딥러닝에선 거의 사용을 안한다

Hyperparameters 설정 '3)'

 

4. Linear Classification

- 전체 강의에서 가장 중요하게 다룰 주제이다

- CNN의 시작점

 

  * Image captionning

    - 이미지의 객체를 분류(Classification)한 다음에 그것을 텍스트로 표현하는 작업

    - CNN과 RNN이 결합되어 하나의 Network처럼 동작한다

      => CNN으로 이미지 분류, RNN으로 문장구성

      => RNN은 Sequence처리(문장, 동영상, 목소리등)에 강한 Network

 

- Linear classificationParametric approach 기반의 접근방식을 사용한다

 

 * Parametric approach

    - 이미지내의 모든 픽셀 값들에 가중치를 곱하여서 처리한 값들의 합이다.

    - 또는 각각 공간적 다른 위치에 있는 컬러들을 카운팅한 것이다

Parametric approach 예시

- Linear Classifier(또는 Score function)를 이용해 이미지를 score로 나타냄

- 이걸 기반으로 앞으로 Loss function을 정의해야됨

- Loss function은 Score function으로 나온 Score가 좋고 나쁜지에 대한 어느 정도를 정량화 하는 function임

 

 

- 정리 : 이미지를 Score function으로 Score 값을 만들고 그걸 Loss funcion으로 Loss 값을 만들어야 함