GeoGuessr를 플레이하는 AI를 만들었습니다. 단일 이미지 지리 위치 추정(Geolocation)이 실제로 작동하는 방식
요약
단일 이미지로부터 지리적 위치를 추정하는 AI 시스템의 작동 원리와 설계 방식을 설명합니다. 분류(Coarse)와 회귀(Fine) 단계의 차이점을 분석하고, 시각적 단서를 활용한 학습 방법론을 다룹니다.
핵심 포인트
- 지리 위치 추정은 국가 분류와 정밀 좌표 회귀의 두 단계로 나뉩니다.
- 도로 표시, 표지판, 식생 등 시각적 단서가 모델 학습의 핵심입니다.
- 단순 좌표 회귀보다 지도를 셀 단위로 나누어 분류하는 방식이 더 효과적입니다.
- 대량의 지오태깅된 데이터를 통해 모델이 스스로 패턴을 학습합니다.
메타데이터가 없는 단 한 장의 스트리트 뷰(street-view) 사진을 사람에게 보여주고 어느 나라인지 물어보세요. 숙련된 GeoGuessr 플레이어는 종종 몇 초 만에 정답을 맞힙니다. 그들은 숨겨진 GPS 태그를 읽는 것이 아닙니다. 그들은 이미지를 읽고 있습니다. 도로 선의 색상, 볼라드(bollards)의 모양, 멀리 있는 표지판의 글자, 식생, 태양의 방향, 전신주의 스타일 등을 읽는 것입니다.
저는 단 한 프레임으로부터 동일한 작업을 수행하는 시스템을 구축하는 데 오랜 시간을 보냈으며, 흥미로운 점은 핵심 아이디어가 생각보다 매우 평범하다는 것입니다. 무엇이 실제로 중요하고, 무엇이 중요하지 않은지 여기에 설명합니다.
솔직하게 밝히는 문제점
단일 이미지 지리 위치 추정(Single-image geolocation)이란 사진 한 장이 주어졌을 때 위치를 출력하는 것입니다. 실제로 여러분은 두 가지를 동시에 원하게 되는데, 이 둘은 서로 다른 작업입니다.
- Coarse (거친 단계): 이 곳이 어느 국가나 지역인가? 이는 수백 개의 버킷(buckets)에 대한 분류(classification) 문제입니다.
- Fine (정밀한 단계): 정확한 위도(latitude)와 경도(longitude). 이는 연속적인 표면(continuous surface)에 대한 회귀(regression) 문제입니다.
사람들은 이 둘을 혼동하지만, 이들은 매우 다르게 작동합니다. 국가는 종종 몇 가지 강력한 단서(cues)를 통해 읽어낼 수 있습니다. 몇 킬로미터 이내의 지점을 찍는 것은 대개 모델이 특정한 것, 즉 특정 도로 표면, 상점 체인, 산의 윤곽 등을 인식해야 합니다. 모델은 첫 번째 작업에는 탁월하지만 두 번째 작업에는 평범할 수 있으며, 이 분야에서 발생하는 대부분의 실망은 하나의 수치가 이 두 가지를 모두 포착할 것이라고 기대하는 데서 비롯됩니다.
단서, 그리고 그것이 학습 가능한 이유
신호는 실재하며 시각적입니다. 국가 수준의 정보를 담고 있는 요소들의 짧고 비포괄적인 목록은 다음과 같습니다:
- 도로 표시 (Road markings). 차선 색상, 점선 길이, 가장자리 처리 방식은 국가마다 놀라울 정도로 일관되게 다릅니다.
- 표지판과 언어. 흐릿하더라도 문자 체계와 표지판의 형태는 범위를 빠르게 좁혀줍니다.
- 주행 방향 및 카메라 차량의 위치.
- 볼라드 (Bollards), 가드레일, 전신주. 이것들은 거의 지문과 같습니다. 매니아 커뮤니티들은 수년간 이것들을 분류해 왔습니다.
- 식생, 토양 색상, 그리고 빛. 위도와 기후는 식물과 태양의 질감을 통해 드러납니다.
- 건축물과 거리 시설물 (Street furniture). 지붕선, 울타리, 심지어 버스 정류장의 디자인까지 포함됩니다.
이 중 어느 것도 인간이 일일이 라벨링 (Hand-label)할 필요가 없습니다. 모델에게 지오태깅 (Geotagged)된 거리 수준의 이미지를 충분히 보여주면, 모델은 스스로 이러한 규칙성을 발견합니다. 이것이 핵심적인 비결이며, 이 분야가 정교하게 설계된 수동 특징 (Hand-built features) 방식에서 "알려진 좌표를 가진 이미지를 많이 수집하여 모델이 패턴을 찾게 하는" 방식으로 이동한 이유입니다.
모델을 구성하는 두 가지 방법
가장 단순한 방식은 좌표를 직접 회귀 (Regress)하는 것입니다. 네트워크가 위도 (Lat)와 경도 (Lng)를 출력하게 하고, 거리 차이에 대해 패널티를 부여하는 방식입니다. 이론적으로는 맞고 작동하는 것처럼 보이지만 결과는 좋지 않습니다. 평균화 (Averaging)가 적입니다. 예를 들어 어떤 장면이 두 개의 그럴듯한 국가 사이에서 모호하다면, 회귀 모델은 그 차이를 평균 내어 두 국가 사이의 바다 한가운데에 핀을 떨어뜨립니다.
더 잘 작동하는 방식은 지도를 일련의 셀 (Cells) 세트로 변환하여 분류 (Classify)하는 것입니다. 세계를 여러 지역으로 나누고, 모델에게 사진이 어느 지역에 속하는지 묻고, 승리한 지역 내에서 다시 세분화합니다. 분류 방식은 모델이 여러 가설을 유지하면서, 서로 호환되지 않는 추측들을 평균 내는 대신 가장 가능성 높은 가설에 전념할 수 있게 해줍니다. 셀의 크기는 조절 가능한 중요한 변수입니다. 너무 거칠면 최선의 결과가 국가 단위에 그치고, 너무 미세하면 각 셀에 학습할 수 있는 훈련 이미지가 너무 적어집니다.
유용한 사고 모델을 제시하자면: 네트워크는 매우 뛰어난 "이곳과 비슷해 보인다" 식의 매칭 (Matcher) 도구이며, 지도 구조는 모델이 "어딘가 모든 곳의 중간 지점"이라고 말하는 것을 막아주는 역할을 합니다.
데이터는 아키텍처가 아니라 지렛대이다
불편한 교훈은 당신이 선택한 백본 (backbone)보다 모델에 공급하는 데이터가 더 중요하다는 점입니다. 커버리지 (Coverage)가 전부입니다. 만약 특정 국가가 학습 데이터에서 충분히 다뤄지지 않는다면, 그 지역에서 모델의 성능은 나쁠 수밖에 없으며, 어떤 손실 함수 (loss-function)의 기교로도 이를 구제할 수 없습니다. 가능한 한 많은 국가에 걸쳐 광범위하고 균형 잡힌, 지오태깅 (geotagged)된 거리 수준의 이미지를 확보하는 것이 모델 자체를 변경하는 것보다 정확도 향상에 더 큰 도움이 되었습니다.
두 가지 실질적인 결과:
- 클래스 불균형 (Class imbalance)은 가혹합니다. 사진이 많이 찍힌 소수의 국가가 지배적일 것이며, 모델은 기꺼이 그 국가들을 과잉 예측할 것입니다. 이를 명시적으로 교정해야 합니다.
- 데이터 누수 (Leakage)는 당신을 속일 것입니다. 거의 중복되는 이미지들이 학습과 평가 세트 모두에 포함된다면, 벤치마크 결과는 훌륭해 보이지만 실제 게임에서는 그렇지 않을 것입니다. 파일이 아닌 위치를 기준으로 중복을 제거하십시오.
솔직히 잘하는 것과 못하는 것
일반적인 거리 뷰(street views)를 기준으로 국가 수준의 분류에서는 이 시스템이 강력합니다. 정확한 좌표를 찾는 것은 훨씬 더 어려우며, 장면이 구체적인 정보를 제공해야만 가능합니다. 모호하거나 일반적인 장소(예: 10개국 중 한 곳일 수 있는 농경지를 가로지르는 평범한 도로)는 인간과 모델 모두가 어려움을 겪는 지점이며, 어떤 도구도 그렇지 않은 척해서는 안 됩니다.
저는 이 모든 것을 ATLAS라는 데스크톱 앱으로 패키징했습니다. 이 앱은 GeoGuessr의 거리 뷰를 읽고 약 3초 만에 국가와 지도 핀을 반환합니다. 수백만 개의 거리 수준 이미지로 학습되었으며, 실제 게임에서 5번 중 4번 정도 국가를 정확히 맞히며, 사이트에는 여전히 놓치는 부분이 어디인지 솔직하게 명시해 두었습니다. 작동 모습을 보고 싶거나 더 자세히 알고 싶다면 geoguessrcheats.com에서 확인할 수 있습니다.
직접 만들고 싶다면 얻어야 할 교훈
- 거친 (coarse) 문제와 정밀한 (fine) 문제를 머릿속에서, 그리고 아마도 모델 내에서 분리하십시오.
- 지도 셀 (map cells)로 분류한 뒤 정밀화하십시오. 원시 좌표를 회귀 (regress)하지 마십시오.
- 아키텍처를 건드리기 전에 데이터 커버리지와 균형에 노력을 쏟으십시오.
- 위치 누수 (location leakage)로부터 평가 과정을 보호하십시오. 그렇지 않으면 스스로를 속이게 될 것입니다.
단일 이미지 지리 위치 추정 (Single-image geolocation)은 텅 빈 도로 사진을 보고 올바른 대륙에 핀을 찍는 것을 처음 목격할 때 마치 마법처럼 느껴집니다. 그 내부를 들여다보면, 이는 대부분 숙련된 인간 플레이어들이 하는 것과 동일한 과정을 확장한 것입니다. 즉, 작고 지루하며 일관된 세부 사항들을 포착하고, 자신의 불확실성을 평균화하여 없애버리기를 거부하는 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기