특징 학습 中
특징 학습 중 UW의 Liefeng Bo가 만든 HMP(계층적 MP)
먼저 2차원 이미지 프레임으로 계산하는 HMP
==================================================================================================================
간략정리
-이미지는 320x240, 계층은 2개의 레이어로 구성
첫번째 레이어 : 이미지를 16x16 pixel patch들로 쪼개고 각 patch 들마다 하나의 특징 벡터 구하기(patch 하나에 특징벡터 하나)
(1) k-svd를 사용하여 픽셀별 이미지 데이터(gray, rgb, depth, normal 중 하나 이상)로부터 dictionary 학습
(2) (1)에서 학습된 dictionary를 적용하여 이미지(모든 patch)에 속한 모든 픽셀에 대해 sparse code 계산
(sparse 코드는 해당 픽셀과 그 픽셀 주변 5x5를 통해 계산)
(3) 각 patch들마다 3개의 레이어로 구분하여 각각 다른 resolution(4x4, 2x2, 1x1)으로 쪼개고 쪼개진 하나하나를 cell로 취급
(4) 각 cell안에 들어있는 sparse code들을 max pooling → 각 cell에 하나의 sparse code가 있는 것처럼 통합
(5) 각 cell마다 하나로 통합된 sparse code를 정규화해서 이어붙이기 → 이게 첫번째 레이어의 특징 벡터
두번째 레이어 : 첫번째 레이어에서 patch별로 구해진 특징 벡터들로부터, 이미지 전체를 나타내는 하나의 특징 벡터 구하기
(1) 첫번째 레이어에서 patch별로 구해진 특징 벡터들을 k-svd를 사용하여 dictionary 학습
(첫번째 레이어에서의 pixel 하나가 두번째 레이어에서는 16x16 patch 로 대응)
(2) 이후 과정은 모두 동일하고, 첫번째 레이어의 (3)에 나타난 resolution만 3x3, 2x2, 1x1로 바뀜
최종
두번째 레이어와 첫번째 레이어에서 구해진 각각의 특징 벡터를 이어붙여 이미지 전체에 대한 하나의 특징 벡터를 계산
==================================================================================================================
==================================================================================================================
상세 설명
첫번째 레이어
(1) k-svd로 dictionary 학습
사용할 데이터는 이미지 프레임의 다양한 데이터를 사용할 수 있다.
Bo의 구현 코드에서는 gray+rgb(4채널), depth+normal(4채널) 각각을 사용하였다.
이미지전체에서 5x5를 무작위로 샘플링하여 해당 데이터들을 k-svd에 입력으로 넣는다. 결국 5x5를 나타내는 대표 뽑기.
k-svd는 일종의 dictionary 학습 알고리즘이다.
k-svd 알고리즘을 대단히 만질게 아니라면 위의 식 정도만 이해해도 개념 이해로는 충분할 듯하다.
Y는 실측 데이터고 D는 dictionary, x는 sparse code이다.
실측 데이터를 dictionary와 sparse code의 조합으로 표현하고 싶으니, 실측 데이터와의 차가 minimum이 되도록 반복한다.
구하는 방법은 dictionary를 구하는 단계와 sparse code를 구하는 단계로 나뉜다.
X(sparse code)를 구하는 단계는 D(dictionary)를 알고있다 가정하고(고정시켜놓고) X를 변경해가며 최적값을 찾는다.
OMP라는 greedy algorithm을 사용한다. D를 고정시켜놓은 상태에서 X의 최적값, 즉 에러가 가장 적은 값에서 수렴한다.
D를 구하는 단계는 위에서 에러가 가장 적었던 X 값으로 X를 고정시켜놓고 D를 변경해가며 최적값을 찾는다.
다시 윗단계에서 찾은 최적의 D로 값을 고정해놓고 X를 변경해가며 최적을 찾고... 계속 반복..
이 두단계를 더이상 에러가 일정량이상 낮아지지 않을때까지 반복한다.
(2) dictionary를 사용하여 전체 픽셀의 sparse code 계산
==================================================================================================================