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

cjun·2022년 8월 12일
0

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개의 댓글