프로젝트_랜드마크 - 31~32일차(완)
Intro
-
이틀간 DB 데이터를 활용해 백엔드 최적화를 시도해보았으나 별다른 진척이 보이지 않았다.
-
21일차에 제시했던 프로젝트 개선사항들과 현재 상황을 비교하고, 프로젝트를 마무리 짓는 방향으로 가닥을 잡아보려 한다.
프로젝트 개선 사항 현황
-
21일차에 기록한 개선 사항과 현황은 다음과 같다.
- 모델 추가 실험 진행
- 이미지 데이터의 양적 부족으로 인한 모델의 정확성 감소.
- 이미지 모델 자체의 변경 건은 거대한 파라미터 수로 인한 훈련시간적 한계로 인해 불가능할것으로 판단함.
- 병목현상 개선
- DB에 데이터를 넣어 쿼리를 통해 내보내는 방식을 시도.
- SQLite를 사용하여 반환받는 QuerySet을 통해서는 원하는 결과를 낼수 없다는 결론에 도달함.
- MySQL등 외부 DB를 사용한다면 가능할지 모르겠지만, Github등에 프로젝트를 업로드했을시 재시연에 있어 하자가 있을것 같다고 판단함.
- 병목현상이라고 말은 했지만, 데이터가 12만건인 상점쪽 데이터를 제외한다면 지연시간은 대체로 1~2초 내외이므로 크게 체감되지 않는 문제이기도 해서 더이상 해당 문제를 잡고있는것은 좋지 못하다고 판단함.
- DB에 데이터를 넣어 쿼리를 통해 내보내는 방식을 시도.
-
프론트엔드 개선
- ajax를 통해 하나의 페이지 내에서 이미지 인식, 인식 결과 출력, 주변 지역 데이터 출력을 처리할수 있도록 페이지 개선 작업을 진행함.
-
버전 관리
- 처음 의도했던 github내에서의 버전 관리는 아니지만, 페이지 자체의 버전을 나누어 관리하는것으로 결정.
- 데이터 증강
-
유튜브 Vlog영상등을 통한 이미지 데이터 증강을 시도했으나, 만족할만한 퀄리티의 영상이 드물었으므로 해당 방안은 폐기함.
-
추후 이미지 데이터를 확충할 방법이 떠오른다면 다시 모델 훈련부터 재실행할 계획.
-
랜드마크의 클래스 개수 문제에 관해서는 뒤의 ‘진행하며 겪은 고민’에 별도로 서술함.
-
- 모델 추가 실험 진행
해결하지 못한 고민
랜드마크의 클래스 개수 문제
-
랜드마크의 클래스 개수 증가에 관한 문제의 경우, ‘랜드마크’에 대한 주관적인 관점이 가장 큰 고민거리였음.
-
‘랜드마크’의 사전적인 정의는 건물이나 상징물, 동상 같은 조형물이 어떠한곳인지 상징적으로 대표하는 것을 의미한다.
-
하지만 생각하기에 따라 타지역의 사람들이 몰라도 우리 동네 사람들은 아는 ‘우리 동네 랜드마크’같은것이 존재할수도 있는 노릇이다보니 랜드마크의 범위를 선정하는것이 상당히 난감한 문제가 되었다.
-
그나마 ‘우리동네 랜드마크’에 대한 데이터라 할만한 것은 AR게임 ‘포켓몬 GO’의 ‘포켓스탑’을 예시로 들수 있음.
-
‘포켓몬 GO의 ‘포켓스탑’은 제작사의 이전 작품인 ‘Ingress’라는 게임에서부터 모아왔던 유저데이터에 ‘포켓몬 GO’ 유저들이 추가한 데이터들을 기반으로 하며, 이는 해당 제작사에서 공개하지 않은 데이터이므로 사용할 방법이 없었다.
-
-
이미지 인식률 개선 및 새로운 데이터를 사용자가 추가할수 있도록 하는 ‘피드백 시스템’을 만들자니 개인정보의 기준 등 법률쪽 문제까지 건드려야 할 가능성이 있어 해당 방법도 사용 불가능했다.
-
결국 랜드마크 클래스 개수 증가에 관한 건은 처음 수집했던 데이터들을 유지하는것으로 결론을 내렸지만, 아쉬운것은 어쩔수 없었다.
명칭에 관한 고민
-
현재 작업흐름중
이미지 인식 -> 인식 결과 출력 -> 주변 갈곳 추천
중 마지막 단계인 ‘추천’에 대한 명칭이 조금 거슬렸다. -
‘추천 시스템’이란 크게 두가지 접근법으로 나뉜다.
- Collaborative-filtering
-
사용자 행동, 활동, 선호도에 대한 정보를 분석해 다른 사용자들과 비교하여 비슷한 사용자들이 무엇을 좋아했는지를 기반으로 사용자가 어떤것을 좋아할지에 대해 예측하는 방식으로 접근한다.
-
사용자들의 행동 로그 기반
-
- Content-based filtering
-
해당 컨텐츠에 대한 설명과 그 컨텐츠에 대한 사용자 선호도를 기반으로 사용자가 어떤것을 좋아할지에 대해 예측하는 방식으로 접근한다.
-
별점, 평점등의 정보 기반
-
- Collaborative-filtering
-
사용자 평점이나 대량의 행동 로그라는것이 존재할수 없는 개인 프로젝트이니 정확한 의미의 ‘추천 기능’은 구현할 수 없다는 것을 알고있지만, 논문 작업 당시 교수님께서 말씀하셨던 “단어의 뜻은 정확하게 구분해서 쓰도록 노력해라”라는 말씀 때문인지 계속 마음에 걸렸다.
-
게임 분야에서 흔히 사용하는 ‘인공지능’이라는 단어와 기계학습을 활용해 만든 ‘인공지능’이 표현하는 단어만 같고 실제 포함하는 개념의 범위가 다른것처럼, 이번 프로젝트에서 말하는 ‘추천’과 일반적으로 통용되는 ‘추천’의 범위는 다를수밖에 없었다.
-
그렇다면 내 프로젝트를 소개할때, 마지막 단계에 대한 소개는 ‘추천’이라 하는것이 맞을까, 아니면 ‘데이터 출력’이라 하는것이 맞을까.
-