MetaCode(Deep Learning) - Computer Vision (Introduction to Computer Vision)

cjun·2022년 8월 12일

ML Framework

    1. 데이터를 알고리즘에 넣고
    1. 알고리즘의 Loss를 구하기 위해 forward propagation
    1. Loss를 최소화 하기 위해 (학습을 위해) backward propagation

Computer Vision 이란?

Computer Vision 응용분야

Object detection

OCR : Optimal Character Recognition

Face detection

Aristic Images (생성모델)

Computer가 보는 Image Data

  • 이미지 데이터는 행렬. 2차원 혹은 3차원 텐서(Tensor) 형태로 되어있음.
  • 각 행렬의 element들은 0~255 사이의 정수값을 가짐 --> pixel

인간 vs 컴퓨터

  • 고양이 위치가 조금만 변해도, 밝기가 변해도 컴퓨터는 맞추지 못함

Challenge:

Illumination ( 조명)

Deformation ( 흉한 모습)

Occlusion (폐색)

Background Clutter(배경 혼란)

Intraclass variation (클래스 내 변형)

기존 CV 알고리즘

  • 이미지에서 edges 찾기 (선 정보 얻기)
  • edges에서 corners 찾기(방향 정보)

대표적 Computer Vision Tasks

Classification

  • "개, 고양이, 비행기, 사자, 인간" 중 무엇인지를 예측하는 문제를 푸는 것
  • 사진의 label이 무엇인지 예측하는 알고리즘을 만듦
  • 일반적으로 알고리즘의 output은 확률 벡터로 출력
  • Neural network는 일반적으로 SGD를 통해 학습하면, 실수값의 벡터를 만듦
  • 하지만, 확률 벡터를 만들려면 지켜야하는 규칙이 있음
      1. 모든 확률 값은 0이상 1이하여야 한다.
      1. 벡터 내의 모든 값의 합은 1이여야 한다.

classification Example - Fully Connected Layer

  • Fully-Connected Layer로 만들면 되지 않을까? 가능
  • 하지만, 이렇게 사용X
  • 이미지의 공간적 정보가 소실 --> 이미지 특징 활용 어려움
  • 학습해야하는 파라미터가 너무 많음
  • 이를 해결하기 위해서 Convolutional Layer 도입

Convolutional Layer

  • 데이터의 공간적 특징(spatial feature)를 잘 잡아옴
  • 내적(dot product) 계산을 통해 이미지를 spatially 슬라이드함

  • 6개의 5x5x3 필터를 이용해서 6개의 서로 다른 activation map을 만듦
  • 즉, 새로운 이미지를 만듦
  • 이 과정이 한개의 층이고, Convolutional layer 역시 선형 함수
  • padding
    • image와 Activation maps의 사이즈를 같게 하기 위해서 이미지에 가장자리에 덧대는 것
  • stride
    • image에 filter를 slide 할 때, 이동의 크기 정도를 나타냄
  • Max pooling, Avg Pooling
    • weight를 정해주지 않고, image size를 줄일 수 있는 방법
    • 커널의 크기와 stirde의 크기를 지정하여 지정된 영역에 대해 최대값을 뽑거나, 평균값을 뽑아 새로운 Activation map 생성

Simple Network

  • Fully connected 전에 픽셀을 Flatten
  • MLP를 통과 후 softmax를 통해 실수 형태로 값을 가짐

Loss : Cross-Entropy

  • one hot vector 형태로 labeling
  • CrossEntropy를 loss로 이용하여 최적화
profile
Sometimes You gotta run before you can walk.

0개의 댓글