eigenface (3) 썸네일형 리스트형 PCA를 이용한 eigenface - test data로 확인해보기 eigenface들을 다 얻었으니 test data를 통해 실제로 approximation이 잘 되는지 확인해보았다 test data는 처음 사용한 이미지셋이 아니라 유명인 사진을 이용해보았다 coefficient 50개와 최대값인 1024개를 비교해보았는데 아래와 같은 결과가 나왔다 50개는 비슷한 사진이라는건 알겠지만 사람들이 다 무서워졌다ㅋㅋ 1024개는 당연한 말이지만 원본과 거의 유사한 이미지가 나왔다 2차원의 이미지를 무식하게 1차원으로 변환하고 해상도도 매우 낮은 이미지를 썼지만 그래도 눈에 보이는 결과가 나와서 신기하긴했다 실제로 pca가 어떻게 응용될 수 있는지 알 수 있던 기회였다 PCA를 이용한 eigenface - eigenface 만들기 데이터 전처리를 통해 얻은 이미지들을 (이미지개수, 32, 32) 형태의 numpy array로 만들어주었다 이미지가 3차원이기 때문에 SVD를 쉽게 이용하기 위해 2차원으로 바꾸어주었다 (이미지개수, 1024)의 형태가 되었으므로 eigenface의 기저는 최대 1024개가 되었다 1 2 3 4 5 6 7 # subtract average value from original data data_avg = np.average(data_orig,axis=0) data = data_orig-data_avg A = data.reshape(data_size,32*32) U,s,V=np.linalg.svd(A, full_matrices=False) plt.plot(s[:100]) cs 해당 코드를 실행시켜보면 s가.. PCA를 이용한 eigenface - 데이터 전처리 PCA는 고차원의 데이터를 저차원의 데이터로 표현하는 방법인데 이를 얼굴 이미지에 사용하여 공통적인 부분을 뽑아내고 인물 분류에 사용할 수 있다 수학적인 내용은 잘 정리된 블로그들이 많기 때문에 실제로 구현했던 방법 위주로 작성해보고자 한다 먼저 데이터는 해당 사이트에서 받아서 사용하였다 http://vis-www.cs.umass.edu/lfw/ LFW Face Database : Main vis-www.cs.umass.edu deep-funneling을 통해 정면으로 align된 데이터여서 좋았다 OpenCV를 사용하여 얼굴 부분만 32 x 32 사이즈로 저장하였다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 i = 0.. 이전 1 다음