[CS231] Lecture 2. Image Classification 정리중

SUN·2023년 3월 21일
0

CS231

목록 보기
2/3
post-thumbnail

CS231 2장

2장 정리중

Image Classification

: A core task in Computer Vision
입력받은 이미지를 사전에 분류해 놓은 class로 분류하는 것

  • Challenges

    • ViewPoint variation : 바라보는 방향의 달라짐
    • Illumination : 조명의 문제
    • Deformation : 객체의 자세 변경(e.g. 다양한 자세의 고양이)
    • Occlusion : 가려지는것
    • Background Clutter : 배경색과 비슷한 경우
    • Intraclass variation : 하나의 클래스 내에 다양한 모습

    -> 이러한 변형들에 알고리즘은 강인해야한다.

세상에 존재하는 다양한 객체들에 유연하게 적용 가능한, 확장성 있는 알고리즘을 만들어야한다.

  • Insight
    • Data-Driven Approach
      1. Collect a dataset of images and labels
      2. Use Machine Learning to train a classifier
      3. Evaluate the classfier on new images

    • 입력 이미지를 고양이로 인식하려면 2개의 함수가 필
    1. train
      입력은 이미지와 레이블, 출력은 모델
    2. predict
      입력은 모델, 출력은 이미지의 예측값

  • First classifier : Nearest Neighbor
    def train(images, labels):
        # Machine Leraning...
        return model
    -> memorize all data and labels
    def predict(model, teat_images):
        # Use model to predict labels...
        return test_labels
    -> predict the label of the most similar training image.
    새로운 이미지가 들어오면, 새로운 이미지와 기존의 학습 데이터를 비교해서 가장 유사한 이미지로 레이블링해 예측

  • Example Dataset : CIFAR10
    • 10개의 클래스
    • 5만장의 training images
    • 1만장의 testing images
    • L1 Distance = 멘하탄거리(Manhattan distance)
      d1(I1,I2)=pI1pI2pd_1(I_1,I_2) = \sum_p|I_1^p - I_2^p|

      test/training 이미지의 같은 자리의 픽셀을 서로 빼고 절댓값을 취한다
      = 픽셀간의 차이값을 계산하고 모든 픽셀의 수행 결과를 모두 더한다.

  • Q. With N examples, how fast are training and prediction?
    -> Train O(1) : 데이터를 기억하기만 하면된다.
    -> Predict O(N) : test time에서 N개의 학습 데이터 전부를 테스트 이미지와 비교해야한다.

  • NN분류기는 공간을 나눠서 각 레이블로 부류한다
  • NN알고리즘은 가장 가까운 이웃만을 보기때문에 영역에 오류가 있을 수 있다(잡음(noise))
    -> 이러한 문제들이 발생해, k-nn 알고리즘이 탄생했다
    Distance metric을 이용해서 가까운 이웃을 k개 만큼 찾고, 이웃끼리 투표하는 방법. 가장 많은 득표소를 획득한 레이블로 예측한다.
    L1 distance(픽셀간 차이 절댓값의 합), L2 distance 모두 사용
    • L2 Distance = 유클리드 거리(Euclidean distance)
      d2(I1,I2)=p(I1pI2p)2d_2(I_1,I_2)= \sqrt{\sum_p (I_1^p-I_2^p)^2}

  • 만약 특징 벡터의 각각 요소들이 개별적인 의미를 가지고 있다면(e.g. 키, 몸무게) L1이 적합할수도.
  • 특징 벡터가 일반적인 벡터이고, 요소들간의 실질적인 의미를 잘 모르는 경우라면, L2가 어울릴수도있다.

0개의 댓글