brunch

You can make anything
by writing

C.S.Lewis

by 최규민 May 20. 2016

베트남 여행의 재구성

사진 데이터로 베트남 여행을 재구성해 보기

사진이란 중요한 순간을 기록하기 위한 좋은 수단이다. 특별한 여행 중이라면 순간순간의 소중함, 자랑질, 찌질함을 남기기 위해 더욱더 많이 찍게 된다. 그래서 이번에 Me, Wife, Junior와 함께 한 4박 6일 베트남 다낭 여행에서 아이폰으로 찍은 259장 사진에 담긴 소중한 기록으로 나의 베트남 다낭 가족 여행을 재구성해 보고자 한다. (다른 전용 카메라로 찍은 사진도 많았지만 위치정보가 없어 IPhone의 사진만을 대상으로 하였다.)


사실 이렇게 분석해 보고자 했던 개시(??)는 맥북으로 여행 사진을 옮기면서 iPhoto의 "장소" 탭을 눌렀을 때 사진이 찍힌 장소가 베트남이 나타나면서 이거다!! 사진으로 나의 여행 경로를 자동으로 그려줄 수 있겠네! 하는 필이 팎! 들면서 이다. ( 그런데 여행 경로는 다 기억이 나는데! 왜 이것을 굳이 할까 생각을 해 봤지만 그냥 왠지 하고 싶었다. 그리고 잘했구나 하고 결론을 냈다. )


참고로 아래 분석과 처리의 과정은 IPython 노트북으로 진행하였으며, 상세한 부분은 IPython 노트북 소스를 참고하시길 바랍니다.( 전체 resource 파일은 github을 참고해 주세요 )


사진으로부터 데이터 정제

사진에는 크게 메터 정보(EXIF)인 날짜 시간, 카메라 정보, 지리정보 등과 이미지 자체에서 이미지 인식을 통해 정보를 추출할 수 있다. 이번에는 다음과 같은 정보를 정제하여 분석 데이터로 사용하였다.

EXIF 메타 데이터 :  사진을 찍은 시간,  사진 찍은 지리정보(GPS 정보)  
이미지 분석 데이터 : (사진의 얼굴 인식하여) 웃는 정도(smiling), 나이 예상(age)


EXIF 데이터 추출하기 : 사진 파일에서 Python PIL(Python Image Librar)을 이용하면 손쉽게 Datatime, GPSLatitude, GPSLongitude 정보를 추출할 수 있다.

이미지로부터 얼굴 인식하기 : 요즘 Machine Learning 발달로 이미지 인식 성능이 많이 향상되었다. 그리고 이러한 고급의 기술을 개인이 손쉽게 사용할 수 있도록 Vision API 형태로 무료로 제공하는 곳이 많아졌다. 대표적인 것이 구글의 Vision API인데, 이번에는 예전에 사용해 봤던 Face++의 Face Detection API를 이용하여 웃는 정도를 측정해 주는 Similing값와 나이를 예측에 주는 Age값을 추출하여 사용하였다. 총 230장의 사진 중에 132장의 사진이 이미지 인식이 가능했었다. 참고로 이 Face++의 Vision API는 이번에 사용한 데이터 외에도 Facial Point, Gender, Glass 등의 값을 추출할 수 있다.  

Face++의 데모 화면


분석이 용이하도록 GPS 위치 정보를 주요 여행지명 변환

우선 내가 다닌 주요 여행지 리스트를 만들고 -> 주요 여행지별 대표 이미지를 찾고 -> 대표 이미지의 GPS 정보를 여행지의 기준 위치로 정한다 -> 다른 이미지들의 GPS 정보로 여행지 기준 위치와 비교하여 가장 가까운 곳을 여행지 명으로 선택하는 방식으로 -> 모든 이미지의 GPS 정보를 여행지명으로 변경하는 방식으로 했다. ( 참고로 k-means의 최종 centroid를 수작업으로 설정하는 것도 동일한 컨셉이다. )

* 우리의 주요 다낭 여행지와 대표 이미지
인천공항 : IMG_1413
다낭공항 : IMG_1437
아라카르테 호텔(미케해변) : IMG_1444
미케해변 : IMG_1445
오행산 : IMG_1473
호이안 : IMG_1579
팜비치리조트(끄어다이해변) : IMG_1522
다낭 병원 : IMG_1464
빅씨마트 : IMG_1505

이렇게 추출하여 최종적으로 Python  DataFrame 형식으로 데이터 정제 작업을 완료하고 분석은 시작한다.


 여행 타임라인 그래프

베트남 다낭 여행의 대략적인 일정은 "인천공항 -> 아라카르트 호텔(2박)+ 다낭시내관광 -> 팜가든리조트(2박) + 호이안관광 -> 인천공항"이었다. 그럼 실제 여행 일정이 어떠했는지 알아보자. 사진의 장소를 Y 축,  사진 Index(시간순)를 X 축으로 하고 stepped line과 scatter plot을 적절히 조합하니 어떻게 여행을 이동했는지에 한눈에 볼 수 있는 여행 타임 그래프를 사진 정보로부터 자동으로 그릴 수 있었다. 이 그래프에서 X 축으로 연속적으로 긴 호이안과 팜가든리조트가 사진을 가장 많이 찍은 장소임 알 수 있다. 



사진을 가장 많이 찍은 호이안과 팜 가든 리조트! 

호이안과 팜가든리조트는 각각 96장, 72장으로 전체 사진의 65%를 이 두 여행지에서 찍었다. 이렇게 가장 많이 찍은 만큼 나와 Wife가 이번 여행에서 가장 만족도가 높은 곳이었다. (여행지에서 사진을 많이 찍을수록 즐거운 곳/인상 깊은 곳이다 라는 가설을 세울 수도 있을 것 같다.) 그다음으로 많이 찍은 인천공항은 여행의 설렘을 갖고 있기에 많이 찍은 듯하다. 특이할 만한 것은 미케 해변 근처인 아라카르트 호텔은 2박이나 했음에도 불구하고 사진을 거의 안 찍었는데 그 이유는 그냥 아래 사진을 보면 바로 알 것이다!!! 그렇다 룸 전망이 똥망이라 사진 찍을 생각이 전혀 안 들었고 그래서인지 이 호텔의 Roof Top이 멋있었음에도 사진을 전혀 찍지는 않았다. 


언제 사진을 많이 찍었는가?

날짜별로 찍은 사진수를 보면 호이안과 팜가든리조트 일정이 있었던 4/21,4/22일 가장을 가장 많이 찍었고, 와이프가 항공 중이염으로 아팠던 4/20은 여행이 본격 시작됐음에도 마음껏 즐길 수 없었기에 사진을 적게 찍었음을 알 수 있었다. 

미소 천사는 뉴규?

얼굴인식이 가능했던 사진 132장으로 Me, Wife, Junior의 100점 만점 기준 평균 웃음 지수(Smiling)를 계산해 보았다.  평소에 Me와 Junior가 잘 웃고 다니기에 웃음 지수가 높을 줄 알았는데 예상외로 Wife의 웃음 지수가 가장 높았다. 매일 집에서 Junior 전담 마크만 하다가 밖으로 나와서 그랬는지 기분이 무척 좋았던듯한다. 웃는 모습이 이쁘다~~ (smiling을 인식하는 Vision-API가 정확도가 완벽하지는 않았지만 그럭저럭 평타 이상의 만족도는 보이는 듯하다. ) 

웃음 지수가 높은 사진을
  타임라인 + 웃음지수

여행 타임 라인 그래프에 Me, Wife, Junior의 웃음 지수를 표현해 보았다. 평균 웃음 지수가 높았던 Wife가 가장 많이 웃은 듯 보인다. 그리고 여행 만족도가 좋았던 호이안, 팜가든리조트가 우리에게  많은 웃음을 짓게 만들었다. 


최강 동안 얼굴의 순간들

가장 어려 보이는 사람은 누굴까? 이미지 인식으로 사진 속 얼굴 나이를 측정해 보면 Me가 가장 나이 들어 보였다.(37세) 그래도 실제 나이 39세보다는 어려서 그나마 다행이었다. 측정된 사진 중에서 인물별 가장 어려 보이는 사진을 만 모아서 보았다. 가장 어리게 인식한 사진은 나를 19세 20세로 봐 (^.^V) 예측해주었다. 기분이 좋다. 왠지 입술이나 혀를  낼름 하거나 꽉 다물듯이 힘을 주어 귀욤미 표정을 지으면 더 어려 보이는 듯하기도 하다.

인물별 가장 어려보이는 사진 Top 3

 여행지별 웃음지수, 예측 나이를 hitmap 형태로 표현해 보니 언제 어디에서 가장 즐거운 웃음과 나이 들어 보이는지를 한눈에 알 수 있었다. 이 결과 중에 특히 대리석산으로 이루어진 오행산에서 평균 나이 37세로 사진상 가장 늙어 보이는 경향이 있는데 이는 아마도 땡볕에 돌산 트랙킹을 해서 더욱더 조치해 보이는 상태에서 사진을 찍어 더욱더 그러는 듯하다. ( 해석을 주관적으로 끼워 맞추는 경향성이 있지만 재미로 해 보기에는 괜찮은 듯하다) 


오행산에서 찍은 사진들
자연스러운 여행의 사진들 

얼굴 인식인 안된 사진들 즉 여행의 배경, 옆모습, 움직이는 장면 등 얼굴 정면 사진이 아닌 자연스러운 사진들들 보니 찍는 직후는 잘못 찍었네?? 했던 사진들이 여행을 다녀온 이후에는 실제 추억을 다시 선명하게 떠오르도록 만들어 주는 듯하다. 이제 부터는 정면 사진보다 이런 스냅사진을 더 많이 찍어야겠다. 

이번 사진 데이터를 분석해 보면서 간단한 데이터라도 어떻게 바라보고 해석하냐에 따라 많이 정보를 찾아낼 수 있구나 하는 생각이 들었다. 특히 열심히 품을 들여 찍은 사진 데이터라면 그 데이터에 들어 있는 정보는 적절히 해석만 해주면 중요한 가치를 줄 수 있을 것 같다는 생각이 들었다. 
하여간 사진으로부터 자동으로 여행 경로를 만들어주면 멋질 것 같다는 생각에서 이렇게 확장된 의미로의 결과까지 해석해 낸듯하여 뿌듯하고 재미있었다.


언젠가는 iPhone 전체 사진으로 나의 영광의 순간들을 자르고 묶고 가공하여 분석해 봐야겠다. 

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari