Search
Duplicate

사진 미션 고도화 도전기 1

Tags
Empty
태그
development
URL
https://medium.com/delightroom/%EC%82%AC%EC%A7%84-%EB%AF%B8%EC%85%98-%EA%B3%A0%EB%8F%84%ED%99%94-%EB%8F%84%EC%A0%84%EA%B8%B0-1-9c92c4e0850f
생성일
9/2/2021, 12:55:02 AM
알라미 사진 미션
알라미는 사용자가 확실하게 잠에서 깨어나 성공적인 아침을 시작하게 돕기 위한 다양한 미션들을 제공한다. 그 중에서도 알라미의 사진 미션은 다음과 같이 아침에 기상하여 알람 설정시 지정한 사진과 같은 위치 혹은 사물 사진을 찍어 두 사진이 일치하면 알람이 해제 되는 형태다. 예를 들어 세면대 사진을 미리 찍어놓고 알람 설정 시 해당 사진을 사진 미션의 사진으로 저장한다. 그 후 저장된 알람이 울리면 같은 위치의 세면대 사진을 찍어 알람을 해제하는 것이다. 자신만의 확실하게 잠에서 깨기 위한 사물이나 장소가 있다면 해당 사물이나 장소를 찍어놓아 사진 미션을 보다 효율적으로 활용할 수 있을 것이다. 예시와 같이 시원한 커피 한잔과 따뜻한 브런치를 준비하고 사진을 찍으면 미션 수행 과정이 확실한 기상에 도움이 될 수 있을 것 같다.
이미지 유사도 예시 (픽셀 유사도, HSV 유사도)
여기서 기능 구현에 있어 중요한 문제는 두 사진의 일치성 즉, 유사도를 어떻게 측정하는지의 문제다. 가장 간단하게는 두 이미지의 비트맵 형태를 픽셀 by 픽셀로 비교하여 유클리디안 거리로 유사도를 판단할 수도 있고 HSV 값을 비교하여 유사도를 판단하는 등의 방법이 있을 수 있다. 그러나 다음 방법들은 전체적인 색상만 비슷한 전혀 다른 두 사진의 유사도가 높게 나올 가능성이 있다.
방금 제시한 방법들의 문제는 유사도를 측정하기 위해 추출하는 이미지의 특징값이 색상에 한정되는 즉, 특정 이미지의 특징을 표시하는 어떠한 값이 색상에 국한된다는 문제다. 이를 극복하기 위해서는 좀 더 다양한 이미지의 특징들을 추출하여 이를 비교하는 방법을 사용해 볼 수 있을 것 같다. 좀 더 확장하면 미리 준비된 이미지들로부터 각 이미지의 특징들을 추출하여 해당 특징들을 학습한 이미지 분류기를 만들 수 있다. 예를 들어 세면대 이미지로 부터 이것이 세면대라고 분류할 수 있는 특징들을 추출하여 분류기를 학습 시키면 추후 분류기에 세면대 이미지를 입력시켰을 때 세면대라고 분류할 수 있을 것이다. 즉, 두 이미지가 주어졌을 때 각 이미지를 이미지 분류 문제를 통해 각각의 이미지가 어떤 이미지인지를 분류하고 두 이미지가 같은지 아닌지로 사진 미션 기능을 구현할 수 있다.
이미지 분류 문제는 이미 ML (머신러닝) 에서 오래전부터 연구되어온 분야이고 이를 위한 알고리즘도 오래된 역사 만큼이나 로지스틱 회귀, SVM, 결정 트리 부터 근래들어 딥러닝을 활용한 방법 까지 다양하게 존재한다. 이미지 분류를 위한 알고리즘은 이미 많이 존재하니 우리는 알고리즘을 학습시킬 데이터셋을 준비하면 될 것 같다.
세면대 이미지 학습 과정
데이터셋은 특정 사물을 촬영한 여러장의 사진들을 준비하고 해당 사진들이 의미하는 각각의 사물들을 라벨링 하여 구성한다. 예를 들어 세면대 이미지를 다양하게 1000 장을 구성하고 알고리즘에 입력시켜 입력한 1000장의 사진들은 세면대라고 미리 알려주어 알고리즘으로 하여금 방금 입력된 1000장의 사진들로 부터 추출된 세면대 이미지의 특징들을 학습시킨다.
이미지 분류 예시
이제 알고리즘은 세면대 이미지의 특징들을 알게 되고 추후 세면대 이미지와 세면대가 아닌 이미지가 주어졌을 때 해당 이미지가 세면대인지 아닌지를 분류할 수 있는 지능을 갖추게 되었다. 이와 같은 과정을 다른 사물을 촬영한 이미지에 대해서도 반복하면 우리가 학습한 알고리즘은 학습 데이터로 주어진 사물들에 대해서는 분류할 수 있는 지능을 갖춘 훌륭한 인공지능 모델이 된다.
미션 수행 예시
따라서 우리는 사용자가 아침에 기상하여 찍을 만한, 예를 들면 세면대, 변기, 화장대, 침대, 거실 창문 등 최대한 다양한 사물들을 여러 각도와 거리로 촬영하여 각 사진들을 라벨링한 학습 데이터 셋을 구성한다. 라벨링은 세면대 이미지의 경우 해당 이미지가 ‘세면대’ 라는 정답을 미리 매칭시켜 놓는 것을 의미한다. 이렇게 구성한 학습 데이터 셋을 알고리즘에 입력으로 제공하면 해당 알고리즘은 특정 이미지에 대해 해당 이미지가 어떤 사물을 촬영한 이미지인지를 분류할 수 있는 이미지 분류 모델이 된다. 이제 우리는 학습된 이미지 분류 모델을 통해 알람 설정시 지정된 이미지와 아침 기상시 알람 해제 위해 촬영한 이미지를 각각 분류 모델에 입력시켜 각 이미지의 라벨을 비교하여 사진 미션 기능을 수행할 수 있다. 두 이미지의 라벨이 일치하면 같은 이미지로 판단되어 알람이 정상적으로 해제 될 것이고 그렇지 않다면 미션에 실패하여 알람이 계속 울릴 것이다.
그러나 이와 같은 다중 이미지 분류 문제는 입력으로 주어진 이미지에 대해서만 분류 가능하다는 문제가 존재한다. 우리가 학습시킨 알고리즘은 우리가 학습할 때 제시한 데이터셋에 대해서만, 우리가 제공한 라벨 (정답 데이터, ex. 세면대 이미지는 ‘세면대’ 라는 라벨) 에 대해서만 알고 그 외의 데이터가 주어졌을 때는 이에 대해 알지 못한다. 세면대 이미지만 학습시킨 알고리즘은 세면대 이외의 이미지가 주어졌을 때 세면대가 아니라는 것만 알지 어떤 사물인지에 대해서는 알 수 없다. 이러한 문제를 해결하기 위한 방법으로는 다음 글에서 다루겠다.
딜라이트룸에서 값진 경험을 함께 하실 분들을 모십니다
TOP