2015년 11월 12일 목요일

여기 어디지? 실내에서 장소 이름을 자동으로 인식할 수 있을까?



[범 지구적 실내 위치 제공을 위한 걸음 - 1]


실내 위치(장소) 인식을 범 지구적(?)으로 제공할려고 하다보니, 장소 인식 시스템은 구축을 위해 필요로하는 사람의 노동력을 최소로 만들수 있는가가 가장 중요한 문제라는 결론에 도달하게 되었다.

가장 좋은 것은 처음 가는 실내 장소에서도 여기가 어디인지 자동으로 인식할 수 있는 시스템을 만드는 것! 그렇다고 휴대폰의 다양한 리소스를 엄청(?) 써서 장소인식을 자동으로 해보겠다 라는 발상은 논문에나 쓸법한 방식이므로 일단 제외를 하고...

이 문제를 놓고 계속 고민해 오던 방식이 있었다. 사람들은 WiFi AP를 설치할때 AP의 이름(ssid)으로 장소와 관련이 있는 이름을 주로 사용하는 경향이 있다. (예를 들어 xxx_house, starbucks, ...) 물론 iptime, olleh 와 같이 장소하고 아무런 관련이 없는 값도 있다. 그런데, 매장들의 경우는 (특히 커피숍, 베이커리 등) 고객들에 편의를 주기 위해 무료 WiFi를 설치하고 자기 매장을 구별할 수 있게 매장 이름을 ssid로 사용 한다 (와이파이 관련 사업하시는 대표님이 오프라인 매장들을 이런 경향이 아주 강하다고 알려 주심 ^^).

때마침 어제 극심한 스트레스를 받고 있던 차, 이를 해결하기 위해 하루 종일 코딩 하기로 결심하면서 그동안 미뤄뒀던 이 일을 해 보기로 했다. 우리 회사는 (로플랫 이에요~) 지난 9월에 거금 300만원을 들여 아르바이트를 통해 서울시내 주요 커피/베이커리/패스트푸드 브랜드 매장 4000여곳을 직접 방문해서 WiFi 신호를 수집했다. 브랜드는 총 24개. 장난아니죠!

다른 브랜드 매장에는 잘 발견이 안 되지만, 특정 브랜드 매장에서만 유독 관찰되는 ssid 가 과연 있을까? 만약 명확한 패턴이 관찰이 된다면, 실제 학습하지 않은 브랜드 장소들도 앞으론 자동으로 인식할 수 있지 않을까?

이 패턴이 있는지 확인하기 위해서 TFIDF (Term Frequency Inverse Document Frequency) 라는 방식을 사용해 보기로 했다. 간략히 설명하자면 TFIDF는 다른 문서에는 잘 없지만 특정 문서에서는 유독 자주 관찰되는 단어를 찾아서 그 문서를 대표하는 키워드로 사용하고자 할때 사용하는 방식이다. 

여기서는 term은 ssid를 조금 손 봐서 (공백, 1F, 2F, -, 등 몇가지 불필요한 정보 삭제) 사용했고, 하나의 브랜드에서 보이는 term 전체 리스트를 하나의 document로 생각했다.

실제 사용한 데이터와 파이썬 코드는 아래 링크에서
와이파이 데이터 및 파이썬 코드 다운받기

자.. 그렇게 해서 우리가 찾은 결과는... (상위 2개만 표시했어요~)

스무디킹
     smoothieking 122.680970654
     lmart 37.1551271931
망고식스
     mangosix 117.962471782
     ohtsamoris 34.0064151724
탐앤탐스
     tomntoms 353.566062149
     tomntoms2 143.976117873
달콤
     dalkomm 67.4360154759
     dkstaff 48.0901373952
배스킨라빈스
     *baskinrobbinsfreewifi 351.874426106
     baskinstaff 316.311356495
설빙
     sulbing 177.466778557
     publicwifi@seoul 37.6269488538
할리스
     hollys 346.06287093
     hollyscoffee 205.464673366
파리크라상
     pariscroissant 47.3940463793
     u+net7063 21.9376604943
투썸플레이스
     twosome 299.706186749
     twosomeplace 108.219123484
롯데리아
     freeu+zone 88.7228391117
     netis 84.2126950537
오설록
     osulloc 54.1014045696
     osullocoffice 34.0064151724
커핀그루나루
     coffine 180.172415342
     coffinestaff 119.309873534
스타벅스
     ollehstarbucks 777.623609645
     starbucksap 763.155045796
카페베네
     bene 432.322186157
     caffebene 179.032554836
폴바셋
     telecop 72.0622928439
     paulbassett 68.4053228807
이디야
     ediya 435.833696014
     ediyacoffee 294.886922454
잠바주스
     jambajuice 50.745192024
     jjgn 25.8583532148
파스쿠찌
     pascucci 309.194823577
     *pascuccifreewifi 260.112876875
던킨도너츠
     dunkin 169.064771011
     *dunkindonutsfreewifi 150.868885425
맥도날드
     현대hcnwifiphone 108.219123484
     mcdonaldsfreewifi 90.071033507
공차
     gongcha 156.376995187
     publicwifi@seoul 66.2951003614
커피빈
     gangnamwifi 108.186485868
     dummy 77.5799315416
엔제리너스
     angelinus 163.497102488
     angel 100.184377114
파리바게뜨
     *parisbaguettefreewifi 576.698454226
     parisstaff 476.708074552

와우....
예상은 했지만... 생각보다 패턴이 아주 잘 나온다... 물론 없는 경우도 있다.


스타벅스가 서울시내 330개 정도, 전국적으로 720개가 있다고 한다. 나머지 절반은 수집하러 다니지 않아도 될 것 같다... 물론, 조금더 분석하고 자동으로 장소 이름을 설정하기 위해선 알고리즘을 더 devise 해 봐야겠지만...


전문가 분들께~
위에 링크를 통해서 실제 서울시내 4000개 장소 데이터를 오픈했습니다. 관심 있으신 분들은 오픈해 드린 데이터를 활용해서 더 좋은 방법들을 찾아볼 수 있을 거 같애요... 그렇게 하신 분들은 저에게도 좀 알려 주세요~~ ^^

2015년 11월 7일 토요일

애플은 실내에서 WiFi 신호를 수집하는 앱(Indoor Survey)을 왜 private하게 릴리즈 했나?

이번주 세상을 살짝 달군 하나의 사건이 있었다. 그 이름 Apple Indoor Survey.




우연히 외국 사이트에서 봤는데, 한글 기사로도 나오고 페이스북에서 지인이 나에게 확인하라고 알려도 줬다.




Survey 라는 단어는 위치시스템을 구축할 때 장소를 학습한다는 의미로 쓰이는 단어다. 즉 애플이 사람들에게 실내 위치시스템을 구축하기 위한 도구를 뿌리고 있고, 사람들을 위치시스템 구축에 끌어들이고 있다는 의미로 해석된다.

원문을 살짝 보면 "By dropping 'points' on a map within the Survey App, you indicate your position within the venue as you walk through. As you do so, the Indoor Survey App measures the radio frequency (RF) signal data and combines it with an iPhone's sensor data."
즉, 이 앱을 통해서 우리가 무선신호 (== WiFi)를 알아서 잘 수집하겠습니다 라는 뜻이다.

10여년이 넘은 와이파이 실내 위치기술을 지금에 와서 왜 이런 방식으로? 

첫번째, 실내 위치시스템은 아무리 큰 회사도 혼자서는 구축할 수 있는게 아니다. 실내 장소가 너무 많고 구축을 위한 노동력이 많이 필요하기 때문에 결국은 일반 사람들(최소한 비즈니스 파트너들)을 실내위치 시스템 구축에 동참시켜야 한다. 

두번째, "전문가의 노력이 많이 드는일을 일반인이 쉽해 할 수 있다?" 여기에 문제가 있었기 때문이다. 일반 사람들이 하기에 쉽지 않은 일이었다. 2013년 200억을 주고 인수한 WiFi SLAM 회사의 기술은 간단히 생각하면 실내에서 WiFi 신호 수집 자체를 아주 쉽게 해 주는 기술이다. 이제 이 회사 기술의 내재화가 끝났다는 말인 것 같다.

최근에 계속 WiFi SLAM이라는 단어가 나를 귀찮게 하고 있어서 문득 예전 자료를 찾아봤다. 무려 7년전 2008년 12월 13일. "A Solution to the Simultaneous Localization and Map Building (SLAM) Problem" 이라는 논문을 랩 세미나에서 발표했다. 그해부터 였나보다. 실내위치 시스템은 구축에 드는 시간(비용)이 항상 문제라는 걸 깨달았다. 그리고 이걸 어떻게 풀까만을 계속 고민했던 것 같다. 그러다 찾은 방법이 로보틱스에서 사용되던 SLAM 이라는 기술이었고, 박사학위 주제로 이걸 연구해 봐야겠다고 생각했었다. 하지만 결국은 그것도 한계가 있다고 생각했었고 지금도 그 생각에는 변함은 없다.

자... 어쨋든... 현재 애플은 WiFi SLAM이라는 기술을 일부 활용해서 실내위치시스템을 확장하고자 하는 것 같다. 그런데 재미난 사실은 애플은 2013년 iBeacon을 릴리즈하고, 실내에서 어디에 있는지 알고 싶으면 iBeacon을 활용하라고 했다. 그리고 그 즈음부터 WiFi 신호를 일반 앱에서는 활용할 수 없게 막아버렸다. 그리고 2년후 다시 찾아온 것이 Indoor Survey 인 것이다.

현재 애플의 정책 변화에 따라 실내위치 시스템에서는 다양한 기술들이 혼재되어 각각의 길을 열심히 찾아가고 있는 중이다. 대표적인 iBeacon, 지자계 센서, 사운드, light, 그리고 WiFi. 어떤 기술이 어떠한 포지션을 갖게 될지 시간만이 알겠지만...

그래도 이 해묵은 WiFi를 실내위치 기술이 앞으로 어떻게 갈지 너무 궁금하다. 왜나하면 내가 그 자리에 서 있으니깐. 개인적인 생각은 fundamental 이다. 다른 기술들은 상황에 따라 필요한 곳, 적합한 곳에 적용이 될 것이다. 그런데 WiFi는 기본이다. 지금 설치되어 있는 인프라, 기술, 및 비용을 고려했을 때 세상 어디에있든 실내 장소를 구별해 줄 수 있는 실현 가능한 유일한 기술이기 때문이다. 즉, WiFi를 이용한 방식이 전 세계의 실내위치에 대한 기본 시스템이 된다는 것이다. 다른 것들은 더하기. 다만 iOS에서는 애플의 control 하에 있다는 것.

근데 WiFi SLAM 으로 가능하겠어?
줸장! 언젠간 애플에게 한방 먹이고말테다!