공부

[컴퓨터비전] 9, 10주차 정리

narlo 2022. 12. 13. 21:58

9주차

Image Warping

1. Forward Warping(보내는 방법)

M이라는 변환행렬

f(x, y)의 픽셀 값을 g(x', y')에 보낸다.

x', y'의 위치가 대부분 소수이다.

높은 확률로 4개의 픽셀 사이에 놓일 것이다.

 

한 점 x', y'에 여러 값이 놓이는 경우 : 평균값 이용

다 기록해야 하기 때문에 번거롭다.

값을 받지 못하는 점(hole)이 존재할 수 있다.

 

2. Backward Warping

hole X, 결과를 저장할 필요 X

 

Interpolation

1. nearest neighbor interpolation

가장 가까운 것으로 복원하겠다.

2. Linear Interpolation(선형 복원)

3. Bilinear Interpolation (2D)

 

Image resize


10주차

Convolutional Neural Networks

입력으로 이미지가 들어왔을 때 이미지 전체에 대한 특징 추출을 반복하여 feature maps를 만든다.

 

Image Classification

이미지가 들어왔을 때, 그 이미지가 어떤 클래스에 해당하는지 판단

Challenges

1. Illumination(빛에 의해 사물이 잘 보이지 않는 경우)

2. Occlusion(가려져서 잘 보이지 않는 경우)

3. Deformation(자세, 모양의 변형)

4. Background clutter(배경과 비슷한)

 

Machine Learning

이미지, 라벨을 가지는 dataset을 모아 분류를 학습

라벨이 없는 테스트 이미지를 이용해 클래스를 예측

 

Training Images -> 특징 추출(표현) -> 분류기 학습(이미지에 해당하는 라벨 필요) -> 학습된 분류기

Test Images -> 이미지 특징 추출 -> 학습된 분류기 -> 예측(결과)

 

특징 추출과 분류기가 완전 독립되어 사용

=> 해결한 것이 CNN

 

특징 추출 방법

- GIST(Filter bank 이용) : 사전에 구축된 필터에 대해서만 연산이 가능하다.

   addaptive하게 연산이 불가능한 것이 단점이다.

 

ConvNets

필터를 addaptive하게 학습해나가는

hidden layer의 개수가 많아질수록 학습해야 할 파라미터 w가 늘어난다.

이미지를 다루기 때문에 벡터가 아니다.

=> 3차원 입력을 받아 3차원 출력을 내 주는 방법이 필요하다.

 

3차원 입력을 1차원 벡터로 stretch하는 방법

-> 1차원으로 바꾸는 순간 이미지의 공간적인 특징이 사라진다.

따라서, 기존의 fully connected layer는 이미지에 적합하지 않다.

filter는 정해진 크기가 없다. 단, 깊이는 3으로 고정(R, G, B 3 channel)

weight는 랜덤하게 시작한다.

사용한 filter 수에 따라 depth가 결정된다.

depth를 보고 입력과 출력의 shape를 알 수 있어야 한다.

빨간색 - 5*5*3 필터를 6개 쓴다.

-> 파란색의 depth가 6

파란색 - 5*5*6(입력으로 들어오는 깊이랑 무조건 맞춰줘야 한다.) 필터를 10개 쓴다.

-> 초록색의 depth가 10

 

low level features : local 정보가 남아있는, 픽셀 값 정보가 남아있는

high level features : 이미지의 의미 정보만 담긴

 

stride : 이동 칸수

padding

 

Pooling : 공간적인 크기를 줄이는 => 정보의 손실

ex) Max Pooling

1. 연산량을 줄이기 위해

2. 메모리를 줄이기 위해

 

Receptive Field(수용영역)

하나의 포인트가 담고 있는 정보의 범위

위 그림에서는 6*6이 receptive field

이미지의 크기에 따라 같은 필터라도 receptive field가 다르다.

이미지가 작을수록 더 많은 정보를 포함하고 있다.

- receptive field를 늘리기 위해 이미지 크기를 feature map 상에서라도 줄이자. 

 

Convolution도 receptive field를 키울 수 있지만, Pooling이 효과가 더 좋다.

요즘은 max pooling보다는 3 * 3 conv, pad = 1, stride = 2를 주로 사용

stride를 이용해 충분히 receptive field를 키울 수 있다.

 

ReLU

activation function의 한 종류

non-linear하게 만들어준다.

연결강도들이 합쳐져 하나로 바뀌어버리는 문제를 해결

마지막에는 Fully Connected Layer

classification 결과를 내어주기 위해 출력의 크기를 바꿔준다.

'공부' 카테고리의 다른 글

[컴퓨터비전] 13, 14주차 정리  (1) 2022.12.14
[컴퓨터비전] 11, 12주차 정리  (0) 2022.12.14
[컴퓨터비전] 7주차 정리  (0) 2022.12.13
[컴퓨터비전] 5, 6주차 정리  (0) 2022.12.13
[컴퓨터비전] 3, 4주차 정리  (0) 2022.12.13