Group Study (2022-2023)/Machine Learning

[Machine Learning] 1주차 스터디 - CNN의 이해(1)

IT공대생 2022. 10. 6. 00:31

스탠포드대학에서 발표한 CNN 강의 영상을 듣고 자료를 정리했습니다.

Lecture 1 | Introduction to Convolutional Neural Networks for Visual Recognition
https://youtu.be/vT1JzLTH4G4
Lecture 2 | Image Classification
https://youtu.be/OoUX-nOEjG0

 

Lecture 1 | Introduction to Convolutional Neural Networks for Visual Recognition


Computer Vision이란?

컴퓨터 과학의 연구 분야 중 인간이 시각적으로 하는일들을 대행하도록 시스템을 만드는 것이다.


 

Vision의 역사

생물학적 Vision

빅뱅을 시작으로 생물이 진화하면서 현재 Vision은 동물의 큰 감각 체계가 되었다.

인간의 대뇌 절반 가량의 뉴런이 시각 처리에 관여할 정도로 큰 부분을 차지한다.


인공적 Vision

1600년대 카메라인 Obscura 발명을 시작으로 카메라 기술이 발전하였고,

지금까지 가장 많이 사용하는 센서중 하나이다.


 

Computer Vision의 역사

1. 포유류의 시각처리방식 연구(Hubel & Wiesel, 1959)

고양이의 뇌에 전기적 신호를 보내고 1차 시각 피질에 다양한 종류의 세포가 있음을 발견했다.

Simple cells

1차 시각 피질에서 가장 중요한 세포이며, 시각처리가 시작되는 곳이다.

특정한 방향으로 이동할 때 oriented edge에 반응한다.

즉, 시각 처리가 단순한 구조로 시작하여 점점 복잡해지는 것을 발견하였다.


2. Block World(Larry Roberts, 1963)

사물의 특징을 얻기 쉽도록 실제 사물을 기하학적인 모양으로 단순화하는 모형을 제시하였다.


3. The Summer Vision Project(MIT, 1966)


4. Hierachical Model(David Marr, 1970s)

우리의 눈에 인식된 이미지를 3D로 표현하기 위한 3단계 과정을 정의하였다.


5. Generalized Cylinder(1979), Pictorial Structure(1973)

모든 물체는 단순한 기하학적 구조로 이루어졌다


6. 이미지 인식을 객체 분할로 시작(1980s)

배경: 실제 세계를 단순화된 구조로 인식하기 어려움

이미지의 픽셀들을 그룹화하여 의미있는 영역으로 분할하는 방식으로 이미지 분류를 하였다.


7. Face Detection(Paul Viola, Michael Jones, 2001)

AdaBoost algorithm 사용 & 카메라 기술 발전 → 실시간 얼굴 인식 가능해짐


8. Shift & Object Recognition(David Lowe, 1999)

같은 객체임에도 불구하고 카메라 각도에 따라서 이미지를 다르게 인식하는 문제가 발생한다.

이에 연구 방향이 객체 분할에서 객체 인식으로 바뀌었다.

객체를 인식하기 위한 중요한 특징을 찾고 → 유사한 객체와 그러한 특징들을 맞춰보며 객체를 인식하는 방식을 사용한다.


 

ImageNet Project

세상 모든 이미지 분류

기계학습의 Overfitting 문제(고차원 데이터 & 훈련 세트 부족) 극복

.

2012년 ImageNet 국제대회 ILSVRC 개최에서  CNN(Convolutional Neural Network) 도입으로 기존 28.2%, 25%의 오류율을 16.4%로 오차율이 급격히 감소되었다.


 

Lecture 2 | Image Classification


Image Classification이란

컴퓨터 비전에서 가장 중요한 Task

이미지가 주어졌을 때 시스템에서 미리 label해놓은 분류된 이미지 집합 중, 어디에 속할지 컴퓨터가 판단하는 것


문제: Semantic Gap

카메라 각도나 밝기, 객채의 행동 혹은 가려짐 등 여러차이로 인해 이미지의 픽셀 값이 달리 읽어 사물을 다르게 인식하는데, 고양이라는 객체와 컴퓨터가 보는 픽셀의 숫자들 간에 격차가 생김


방법 1 

객체의 특징을 규정 → 성능 좋지 못하고 다른 데이터에 적용시키기에 비효율적


방법2

데이터 중심 접근 방법(Data-Driven Approach)

객체의 특징을 규정하지 않고, 다양한 사진들과 label을 수집하고, 이를 이용해 모델을 학습하여 사진을 새롭게 분류하는 방식

 


 

Nearest Neighbor(NN)

입력받은 데이터를 저장한 다음 새로운 입력 데이터가 들어오면, 기존 데이터에서 비교하여 가장 유사한 데이터를 찾아내는 매우 간단한 방식

{"originWidth":628,"originHeight":311,"style":"alignCenter","caption":"

단점: 모든 사진의 픽셀값의 계산하기 때문에 예측 과정에서 소요되는 시간이 상당하다.


방법: K-Nearest Neighbors

Distance metric를 이용해서 가까운 이웃을 k개만큼 찾고, 이웃간에 투표를 하여 득표수가 많이 얻은 label로 예측하는 방법

가장 가까운 이웃이 존재하지 않으면 흰색으로 표기된다.


L1 Distance

마름모 형태

좌표계를 회전 시 거리값이 달라짐

 

L2 Distance(Euclidean Distance)

원형의 형태

좌표계를 회전해도 거리값은 좌표의 영향을 받지 않는다.


KNN이 이미지 분류에 실제로 사용되지 않는 이유

1. 너무 느림

2. L1, L2 Distance는 이미지 거리 구하는데 적합하지 않다.

부분적인 차이를 감지하기 어렵다


 

Linear Classification(선형분류)

Neural Network(NN)과 Convolution Neural Network(CNN)의 기반 알고리즘으로 매우 중요하다.

위 고양이 사진(2x2)을 예시로 입력(X)을 받으면 , 가중치 파라미터(W)와 곱하여 카테고리 score 값(f(x,w))인 10을 만든다. score값이 높을수록 고양이일 확률이 높다.

W*x 에 bias(편향값)을 더하는데, bias는 입력과는 직접적인 관계를 가지지 않으나 이미지 라벨의 불균형한 상태 보완하기 위해 사용된다.


가중치 행렬의 행벡터를 가지고 다시 이미지로 나타낼 수 있다.

Linear Classifier는 각 클래스를 구분해주는 선형 경계 역할을 한다.


Linear Classifier의 단점

이미지 변동이 있어도 그것의 평균을 결과로서 보여준다.

그래서 말 카테고리의 이미지를 보면 말의 머리가 두개가 나타난다.

Multimodal problem: 선형으로 분류할 수 없는 데이터에 사용하기 어렵다.


 

KNN과 Linear Classifier의 차이점

KNN

시작할 때 파라미터가 없다.

테스트 할 때 전체 train set을 가지고 테스트를 한다.


Linear Classifier

테스트 할 때 train set의 전체 데이터는 필요없고 train의 결과인 w을 가지고 테스트를 한다.

KNN보다 효율적