KR102640148B1 - 딥러닝을 이용한 실내 위치 측위 방법 - Google Patents
딥러닝을 이용한 실내 위치 측위 방법 Download PDFInfo
- Publication number
- KR102640148B1 KR102640148B1 KR1020230011499A KR20230011499A KR102640148B1 KR 102640148 B1 KR102640148 B1 KR 102640148B1 KR 1020230011499 A KR1020230011499 A KR 1020230011499A KR 20230011499 A KR20230011499 A KR 20230011499A KR 102640148 B1 KR102640148 B1 KR 102640148B1
- Authority
- KR
- South Korea
- Prior art keywords
- image
- module
- perspective
- images
- panoramic image
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000013135 deep learning Methods 0.000 title claims abstract description 39
- 230000004807 localization Effects 0.000 title description 3
- 238000013528 artificial neural network Methods 0.000 claims description 101
- 230000011218 segmentation Effects 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 12
- 238000005516 engineering process Methods 0.000 abstract description 8
- 239000013598 vector Substances 0.000 description 78
- 238000013507 mapping Methods 0.000 description 57
- 238000010586 diagram Methods 0.000 description 18
- 239000000284 extract Substances 0.000 description 13
- 238000000605 extraction Methods 0.000 description 13
- 238000013527 convolutional neural network Methods 0.000 description 11
- 230000009466 transformation Effects 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000033001 locomotion Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 241000282326 Felis catus Species 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 241000272525 Anas platyrhynchos Species 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
- G06T7/74—Determining position or orientation of objects or cameras using feature-based methods involving reference images or patches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/74—Image or video pattern matching; Proximity measures in feature spaces
- G06V10/761—Proximity, similarity or dissimilarity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/698—Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20081—Training; Learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Image Analysis (AREA)
Abstract
본 발명은 딥러닝을 이용한 실내 위치 측위 방법에 관한 기술이다. 실내 위치 측위 방법은, 복수의 파노라마 이미지를 포함하는 3D 투어를 불러오는 단계, 상기 사용자 단말기에 구비된 카메라로 촬영한 제1 퍼스펙티브 이미지를 수신하는 단계, 상기 제1 퍼스펙티브 이미지와, 상기 3D 투어에 포함된 상기 복수의 파노라마 이미지 각각에 대한 글로벌 피쳐를 산출하는 단계, 산출된 상기 글로벌 피쳐를 이용하여, 상기 제1 퍼스펙티브 이미지와 가장 유사한 파노라마 이미지를 선정하는 단계, 상기 선정된 파노라마 이미지 및 상기 제1 퍼스펙티브 이미지에 포함된 특징점을 이용하여, 상기 3D 투어 상에서 상기 카메라의 위치에 대응되는 실내 위치를 계산하는 단계, 및 상기 계산된 실내 위치를 상기 사용자 단말기에 제공하는 단계를 포함한다.
Description
본 발명은 딥러닝을 이용한 실내 위치 측위 방법에 관한 것이다. 구체적으로, 본 발명은 사용자가 촬영한 이미지를 기초로 3D 투어 내에서 실내 위치 측위를 하는 방법에 관한 것으로, 실내 위치 측위의 정확도를 향상시키기 위해 딥러닝 기술을 이용한다.
3D 공간을 기록하기 위한 가장 좋은 방법은 공간을 전방위 360도 방면으로 촬영하여 360도 이미지 형태로 저장하고, 각각의 위치에 대한 360도 이미지를 연결하여 3D 투어의 형태로 만드는 방법이다.
360도 이미지를 얻기 위해 일반적으로 360도 카메라를 이용한다. 360도 카메라는 하나 또는 둘 이상의 광각렌즈를 이용하여 주변 배경 정보를 이미지로 생성할 수 있는 장치이다. 360도 카메라는 수평 및 상하 360도를 전방향 촬영하여 360도 사진 및 영상을 만든다. 360도 카메라에서 촬영된 사진 및 영상은 서버 및 사용자 단말기 등 다양한 곳에 송수신 될 수 있다.
또한, '3D 투어'는 복수의 지점에서 각각 360도로 촬영하여 저장된 이미지(예컨데, 파노라마 이미지)들의 조합으로 구성될 수 있다. 이때, '3D 투어'는 각각의 이미지가 촬영된 위치정보를 포함할 수 있으며, 각각의 위치정보는 평면도 상에 매핑되어 사용자에게 제공될 수 있다.
이렇게 생성된 3D 투어는 가상현실(Virtual Reality; VR) 또는 증강현실(Augmented Reality; AR) 형태로 사용자에게 제공될 수 있다. 이때, 3D 투어는 사용자의 움직임을 따라서 함께 이동하도록 동기화될 수 있다. 또한, 사용자의 움직임에 따른 3D 투어의 실내 네이게이션 기능을 제공하는 것이 가능하다.
이러한 실내 네비게이션 기능을 구현하기 위해서는 기존 3D 투어와 사용자의 현재 위치에 대한 매칭 작업이 우선시되어야 하는데, 이 과정에서 3D 투어와 사용자가 제공한 이미지의 특징점(feature)을 추출해야 하는 작업이 선행되어야 한다.
본 발명의 목적은, 3D 투어에 포함된 파노라마 이미지(panorama image)와 사용자가 제공한 퍼스펙티브 이미지(perspective image) 간의 정확하고 빠른 매칭을 위해 딥러닝을 통해 추출된 글로벌 피쳐(Global feature)를 이용하는 실내 위치를 측위하는 방법을 제공하는 것이다.
또한, 본 발명의 목적은, 복수의 파라미터를 이용한 랭킹 시스템(Ranking System)을 기초로, 사용자가 제공한 퍼스펙티브 이미지와 가장 유사도가 높은 파노라마 이미지를 선정함으로써 실내 위치를 측위하는 방법을 제공하는 것이다.
본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 발명의 실시예에 의해 보다 분명하게 이해될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 실시예에 따른 딥러닝을 이용한 실내 위치 측위 방법은, 복수의 파노라마 이미지를 포함하는 3D 투어를 불러오는 단계, 상기 사용자 단말기에 구비된 카메라로 촬영한 제1 퍼스펙티브 이미지를 수신하는 단계, 상기 제1 퍼스펙티브 이미지와, 상기 3D 투어에 포함된 상기 복수의 파노라마 이미지 각각에 대한 글로벌 피쳐를 산출하는 단계, 산출된 상기 글로벌 피쳐를 이용하여, 상기 제1 퍼스펙티브 이미지와 가장 유사한 파노라마 이미지를 선정하는 단계, 상기 선정된 파노라마 이미지 및 상기 제1 퍼스펙티브 이미지에 포함된 특징점을 이용하여, 상기 3D 투어 상에서 상기 카메라의 위치에 대응되는 실내 위치를 계산하는 단계, 및 상기 계산된 실내 위치를 상기 사용자 단말기에 제공하는 단계를 포함한다.
또한, 상기 글로벌 피쳐를 산출하는 단계는, 상기 3D 투어에 포함된 특정 파노라마 이미지를 복수의 제2 퍼스펙티브 이미지로 변환하는 (a) 단계와, 상기 변환된 제2 퍼스펙티브 이미지에 대한 각각의 글로벌 피쳐 및 상기 파노라마 이미지에 대한 글로벌 피쳐를 산출하는 (b) 단계를 포함할 수 있다.
또한, 상기 (a) 단계는, 상기 특징 파노라마 이미지를 구 좌표계(spherical coordinate)에 투영시켜 복수 개의 구역으로 구분하고, 상기 구분된 각 구역에 대응되는 이미지를 2차원 이미지인 상기 제2 퍼스펙티브 이미지로 변환하되, 상기 복수의 제2 퍼스펙티브 이미지는 상호 간에 일부 오버랩되는 영역을 포함할 수 있다.
또한, 상기 (b) 단계는, 동일한 장소를 촬영한 이미지에 대하여 동일한 글로벌 피쳐가 출력되도록 사전 학습된 딥러닝 모듈을 이용하여, 상기 글로벌 피쳐를 산출하되, 상기 딥러닝 모듈은, 하나 이상의 뉴럴 네트워크 모듈과, 상기 뉴럴 네트워크 모듈에서 출력된 값의 유사도를 산출하는 유사도 판단 모듈과, 산출된 상기 유사도에 대하여 가중치를 적용하고, 이를 기초로 결과값을 출력하는 가중치 모듈과, 상기 가중치 모듈에서 서로 다른 시점에 출력된 결과값 사이의 차이값을 도출하고, 도출된 상기 차이값을 상기 뉴럴 네트워크 모듈에 피드백으로 제공하는 피드백 모듈을 포함할 수 있다.
또한, 상기 뉴럴 네트워크 모듈은, 상기 피드백 모듈로부터 수신한 피드백 값을 기초로, 상기 뉴럴 네트워크 모듈에 포함된 뉴럴 네트워크에 적용되는 가중치를 조절할 수 있다.
또한, 상기 유사도 판단 모듈은, 상기 파노라마 이미지에 대한 제1 글로벌 피쳐, 상기 제2 퍼스펙티브 이미지에 대한 제2 글로벌 피쳐, 비교군 이미지에 대한 제3 글로벌 피쳐, 및 상기 파노라마 이미지에 대한 기준값에 대응되는 제4 글로벌 피쳐를 수신하고, 상기 제1 내지 제4 글로벌 피쳐 간의 유사도를, 코사인 디스턴스(cosine distance) 함수를 이용하여 산출할 수 있다.
또한, 상기 제1 퍼스펙티브 이미지와, 상기 복수의 파노라마 이미지에 대한 분류정보(class), 위치정보(position), 캡션(caption), 및 세그멘테이션(segmentation)을 도출하는 단계를 더 포함하되, 상기 가장 유사한 파노라마 이미지를 산출하는 단계는, 도출된 상기 글로벌 피쳐, 상기 분류정보, 상기 위치정보, 상기 캡션, 및 상기 세그멘테이션을 기초로, 상기 파노라마 이미지와 상기 제1 퍼스펙티브 이미지 사이의 각 파라미터에 대한 유사도를 계산하는 (c1) 단계와, 상기 각 파라미터에 대한 유사도를 기초로 순위를 산출하고, 상기 순위가 가장 높은 파노라마 이미지를 선정하는 (d) 단계를 포함할 수 있다.
또한, 상기 가장 유사한 파노라마 이미지를 산출하는 단계는, 상기 파노라마 이미지를 기초로 생성된 제2 퍼스펙티브 이미지와, 상기 사용자 단말기로부터 수신한 제1 퍼스펙티브 이미지 간의 유사도를 계산하고, 미리 정해진 기준치 이상으로 유사한 상기 제2 퍼스펙티브 이미지의 이미지 개수를 각 파노라마 이미지 별로 카운트하여, 상기 카운트된 숫자를 기초로 각 파노라마 이미지의 가중치를 결정하는 (c2) 단계를 더 포함할 수 있다.
또한, 상기 (d) 단계는, 도출된 상기 글로벌 피쳐, 상기 분류정보, 상기 위치정보, 상기 캡션, 및 상기 세그멘테이션에 대한 상기 파노라마 이미지와 상기 제1 퍼스펙티브 이미지 사이의 유사도와, 상기 파노라마 이미지에 대한 가중치를 이용하여, 상기 제1 퍼스펙티브 이미지와 유사도가 가장 높은 파노라마 이미지를 선정하는 것을 포함할 수 있다.
또한, 상기 실내 위치를 계산하는 단계는, 상기 산출된 파노라마 이미지에 대한 로컬 피쳐를 산출하는 단계와, 상기 퍼스펙티브 이미지에 대한 로컬 피쳐를 산출하는 단계와, 상기 산출된 로컬피쳐들을 기초로 3D 투어 상의 카메라 위치에 해당하는 실내 위치를 계산하는 단계를 포함할 수 있다.
본 발명에 따른 딥러닝을 이용한 실내 위치 측위 방법은, 3D 투어에 포함된 복수의 파노라마 이미지 중 사용자가 제공한 퍼스펙티브 이미지와 가장 매칭률이 높은 파노라마 이미지를 빠르게 추출하고, 추출된 파노라마 이미지와 퍼스펙티브 이미지 간의 위치 관계를 파악하여 사용자 단말기의 위치를 정확히 산출함으로써, 사용자가 위치하는 실내 위치 측위에 대한 정확도와 매칭 속도를 향상시킬 수 있다.
본 발명의 효과는 전술한 효과에 한정되지 않으며, 본 발명의 당업자들은 본 발명의 구성에서 본 발명의 다양한 효과를 쉽게 도출할 수 있다.
도 1은 본 발명의 실시예에 따른 3D 투어 제공 시스템을 나타내는 개략도이다.
도 2는 도 1의 3D 투어 제공 시스템에서 수행되는 실내 위치 측위 방법을 설명하기 위한 순서도이다.
도 3은 도 2의 S130 단계 및 S140 단계를 수행하는 하이브리드 이미지 탐색 모듈을 설명하기 위한 블록도이다.
도 4 내지 도 8은 도 3의 변환 모듈에 대한 각각의 동작을 설명하기 위한 블록도이다.
도 9 및 도 10은 도 2의 S150 단계 및 S160 단계를 수행하는 로컬 피쳐 추출 모듈을 설명하기 위한 블록도이다.
도 11은 본 발명의 실내 위치 측위 방법의 예시를 설명하기 위한 도면이다.
도 12는 본 발명의 실시예에 따른 3D 투어 제공 서버의 구성을 개략적으로 설명하기 위한 도면이다.
도 13은 본 발명의 실시 예에 따른 실내 위치 측위 방법을 위해 뉴럴 네트워크의 피쳐를 이용하는 개념을 설명하기 위한 도면이다.
도 14 및 15는 본 발명의 실시 예에 따른 뉴럴 네트워크 피쳐를 이용할 경우의 장점을 설명하기 위한 도면이다.
도 16은 본 발명의 실시 예에 따른 뉴럴 네트워크 피쳐에 대응되는 피쳐 위치를 설명하기 위한 도면이다.
도 17은 본 발명의 실시 예에 따른 실내 위치 측위 방법에서 이미지들을 매핑하기 위한 방법을 설명하기 위한 순서도다.
도 2는 도 1의 3D 투어 제공 시스템에서 수행되는 실내 위치 측위 방법을 설명하기 위한 순서도이다.
도 3은 도 2의 S130 단계 및 S140 단계를 수행하는 하이브리드 이미지 탐색 모듈을 설명하기 위한 블록도이다.
도 4 내지 도 8은 도 3의 변환 모듈에 대한 각각의 동작을 설명하기 위한 블록도이다.
도 9 및 도 10은 도 2의 S150 단계 및 S160 단계를 수행하는 로컬 피쳐 추출 모듈을 설명하기 위한 블록도이다.
도 11은 본 발명의 실내 위치 측위 방법의 예시를 설명하기 위한 도면이다.
도 12는 본 발명의 실시예에 따른 3D 투어 제공 서버의 구성을 개략적으로 설명하기 위한 도면이다.
도 13은 본 발명의 실시 예에 따른 실내 위치 측위 방법을 위해 뉴럴 네트워크의 피쳐를 이용하는 개념을 설명하기 위한 도면이다.
도 14 및 15는 본 발명의 실시 예에 따른 뉴럴 네트워크 피쳐를 이용할 경우의 장점을 설명하기 위한 도면이다.
도 16은 본 발명의 실시 예에 따른 뉴럴 네트워크 피쳐에 대응되는 피쳐 위치를 설명하기 위한 도면이다.
도 17은 본 발명의 실시 예에 따른 실내 위치 측위 방법에서 이미지들을 매핑하기 위한 방법을 설명하기 위한 순서도다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 발명에서 '3D 투어'는 복수의 지점에서 각각 360도로 촬영하여 저장된 이미지(예컨데, 파노라마 이미지)들의 조합으로 구성될 수 있다. 이때, '3D 투어'는 복수의 이미지가 촬영된 각각의 위치정보 및 방향정보를 포함할 수 있다.
여기에서, 각각의 위치정보는 평면도 상에 매핑되어 사용자에게 제공될 수 있다. 또한, 3D 투어의 촬영 시 360도 카메라를 이동하면서 도출된 위치정보 및 방향정보는, 사용자의 이동경로를 산출하는데 이용되며 도출된 이동경로는 사용자 단말기 상에 표시될 수 있다.
또한, 본 발명에서 딥러닝(Deep Learning)은 사물이나 데이터를 군집화하거나 분류하는 데 사용하는 기술이다. 즉, 딥러닝은 많은 양의 데이터를 컴퓨터에 입력하고 비슷한 것끼리 분류하도록 하는 기술이다. 이때 데이터를 어떻게 분류할 것인가를 놓고 이미 많은 기계학습 알고리즘이 등장했다. 딥러닝은 인공신경망의 한계를 극복하기 위해 제안된 기계학습 방법이다.
보다 자세히 설명하자면, 머신 러닝(Machine Learning)의 일종인 딥러닝(Deep Learning) 기술은 데이터를 기반으로 다단계로 깊은 수준까지 내려가 학습하는 것이다.
딥러닝(Deep learning)은 단계를 높여갈수록 복수의 데이터들로부터 핵심적인 데이터를 추출하는 머신 러닝(Machine Learning) 알고리즘의 집합을 나타낼 수 있다.
딥러닝 구조는 인공신경망(ANN)을 포함할 수 있으며, 예를 들어 딥러닝의 인공신경망 구조는 CNN(Convolutional Neural Network), RNN(Recurrent Neural Network), DBN(Deep Belief Network) 등 심층신경망(DNN)으로 구성될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니며, 다양한 딥러닝의 인공신경망 구조가 본 발명에 채용될 수 있음은 통상의 기술자에게 자명하다.
이하에서는, 도면을 참조하여, 본 발명의 실시예에 따른 딥러닝을 이용한 실내 위치 측위 방법에 대해 자세히 설명하도록 한다.
도 1은 본 발명의 몇몇 실시예에 따른 3D 투어 제공 시스템을 나타내는 개략도이다. 여기에서, 3D 투어 제공 시스템은 본 발명의 몇몇 실시예에 따른 실내 위치 측위 방법을 실시하는 수행주체임을 전제로 설명하도록 한다.
도 1을 참조하면, 본 발명의 실시예에 따른 3D 투어 제공 시스템은, 3D 투어 제공 서버(1100), 사용자 단말기(1200) 및 360도 카메라(1300)를 포함한다.
3D 투어 제공 서버(1100)와 사용자 단말기(1200)는 서버-클라이언트 시스템으로 구현될 수 있다. 3D 투어 제공 서버(1100)는 유무선 네트워크를 통해 사용자 단말기(1200)와 데이터를 송수신할 수 있다.
이때, 3D 투어 제공 서버(1100)는 사용자가 선택한 3D 투어의 특정 지점에 대응되는 파노라마 이미지를 선택하여 사용자 단말기(1200)에 제공할 수 있다. 선정된 파노라마 이미지는 3D 형태로 변환되어 사용자 단말기(1200)의 화면에 표시될 수 있다. 또한, 3D 투어 제공 서버(1100)는 사용자가 제공한 특정 이미지에 대응되는 지점의 위치정보를 산출하여 사용자 단말기(1200)에 제공하고, 사용자 단말기(1200)에 표시되는 3D 투어 상에 표시할 수 있다.
360도 카메라(1300)는 특정 지점에 대한 360도 이미지(예를 들어, 파노라마 이미지)를 생성하여, 3D 투어 제공 서버(1100)에 전송할 수 있다. 3D 투어 제공 서버(1100)는 360도 카메라(1300)로부터 수신된 복수의 360도 이미지를 기초로 3D 투어를 생성하여 사용자 단말기(1200)에 제공할 수 있다.
이때, 360도 카메라(1300)는 사용자 단말기(1200)를 통하여 3D 투어 제공 서버(1100)와 데이터를 송수신할 수 있다. 또한, 다른 실시예에서, 360도 카메라(1300)는 네트워크를 통하여 3D 투어 제공 서버(1100)와 직접 데이터를 송수신할 수 있다.
도면 상에는 하나의 사용자 단말기(1200) 및 360도 카메라(1300)만을 도시하였으나, 본 발명이 이에 한정되는 것은 아니며, 3D 투어 제공 서버(1100)는 복수의 사용자 단말기(1200) 및 360도 카메라(1300)와 연동되어 동작할 수 있다.
3D 투어 제공 서버(1100)는 복수의 3D 투어를 저장 및 관리할 수 있다. 또한, 3D 투어 제공 서버(1100)는 사용자 단말기(1200)에 구비된 카메라로 촬영한 이미지를 기초로 사용자의 정확한 위치를 계산하여 사용자 단말기(1200)에 제공할 수 있다. 이때, 3D 투어 제공 서버(1100)는 사용자 단말기(1200)의 GPS를 통해 수신한 위치정보를 이용하지 않고, 사용자 단말기(1200)로부터 수신된 촬영 이미지(이하, 퍼스펙티브 이미지(perspective image))의 피쳐(feature; 예를 들어, 글로벌 피쳐 또는 로컬 피쳐)와, 3D 투어에 포함된 복수의 파노라마 이미지의 피쳐(feature; 예를 들어, 글로벌 피쳐 또는 로컬 피쳐)를 비교함으로써, 사용자 단말기(1200)의 정확한 위치를 계산할 수 있다.
또한, 3D 투어 제공 서버(1100)는 3D 투어에 포함된 파노라마 이미지와 사용자 단말기(1200)가 제공한 퍼스펙티브 이미지 간의 정확하고 빠른 매칭을 위해 딥러닝 기술을 이용할 수 있다.
즉, 3D 투어 제공 서버(1100)는 GPS 정보를 이용하지 않고, 3D 투어와 사용자로부터 수신한 촬영 이미지를 이용하여 실내에서도 정확한 사용자의 위치를 추정하는 로컬라이제이션(localization) 동작을 수행할 수 있다. 이때, 3D 투어 제공 서버(1100)는 로컬라이제이션 동작의 정확도와 속도를 높이기 위하여 딥러닝을 이용하여 글로벌 피쳐(Global feature)와 로컬 피쳐(Local feature)를 추출하는 전처리 과정을 수행한다. 이러한 전처리 과정에 대한 자세한 내용은 아래에서 기술하도록 한다.
우선 이하에서는, 본 발명의 실시예에 따른 3D 비교 투어 시스템(1100)에서 수행되는 실내 위치 측위 방법에 전체 로직에 대해 개략적으로 설명하도록 한다.
도 2는 도 1의 3D 투어 제공 시스템에서 수행되는 실내 위치 측위 방법을 설명하기 위한 순서도이다. 이하에서는 설명의 편의를 위해 3D 투어 제공 서버(1100)를 수행주체로 하여 설명하도록 한다.
도 2를 참조하면, 3D 투어 제공 서버(1100)(이하, 서버)는 3D 투어를 불러온다(S110). 각각의 3D 투어에는 고유의 투어 아이디(tour ID)가 부여되며, 사용자 단말기(1200)를 통해 선택된 3D 투어에 해당하는 투어 아이디를 수신하는 경우, 서버(1100)는 데이터베이스에 미리 저장된 3D 투어를 불러온다.
이어서, 서버(1100)는 사용자가 특정 지점에서 촬영된 이미지(이하, 퍼스펙티브 이미지(perspective image))를 사용자 단말기(1200)로부터 수신한다(S120). 여기에서, 퍼스펙티브 이미지는 사용자 단말기(1200)에 구비된 카메라로 찍은 2D 이미지(또는, 하나의 카메라 렌즈로 촬영된 단편적 이미지)를 의미한다.
이어서, 서버(1100)는 수신된 투어 아이디에 해당하는 3D 투어에 포함된 복수의 파노라마 이미지(panorama image)에 대한 각각의 글로벌 피쳐(Global feature)를 산출한다(S130). 또한, 서버(1100)는 사용자가 제공한 퍼스펙티브 이미지에 대한 글로벌 피쳐를 산출한다.
이때, 서버(1100)는 미리 학습된 딥러닝 모듈을 이용하여 각각의 파노라마 이미지에 대한 글로벌 피쳐를 산출한다. 여기에서, 글로벌 피쳐는 벡터 형식을 지니며, 딥러닝 모듈은 하나의 이미지에 대해 하나의 글로벌 피쳐를 출력한다.
여기에서, 딥러닝 모듈은 동일한 장소에 대한 파노라마 이미지와 퍼스펙티브 이미지에 대해 동일한 글로벌 피쳐(Unified Global Feature)를 출력하도록 트레이닝될 수 있다.
이어서, 서버(1100)는 산출된 파노라마 이미지의 글로벌 피쳐와 퍼스펙티브 이미지의 글로벌 피쳐의 유사도를 계산하여, 퍼스펙티브 이미지에 가장 가까운 글로벌 피쳐를 지닌 파노라마 이미지를 선정한다(S140). 즉, 사용자가 제공한 퍼스펙티브 이미지와 가장 유사하여 관련성이 높은 파노라마 이미지를 선정한다.
이를 위해, 서버(1100)는 하이브리드 이미지 탐색 모듈(hybrid image retrieval module)을 이용할 수 있다. 구체적으로, 하이브리드 이미지 탐색 모듈은, 벡터 형식의 각 글로벌 피쳐와의 연산(예를 들어, 코사인 디스턴스(cosine distance))을 통하여, 각 이미지 간의 유사도를 계산할 수 있다. 이때, 서버(1100)는 글로벌 피쳐 뿐만 아니라, 각 이미지에 대한 오브젝트(object), 이미지 캡션(image caption), 세그멘테이션(segmentation)에 관한 데이터에 대한 유사도도 추가로 계산할 수 있다.
이어서, 하이브리드 이미지 탐색 모듈은 산출된 각 이미지 간의 유사도를 기초로 히스토그램(histogram)을 이용하여 각 파노라마 이미지에 대한 가중치를 계산할 수 있다. 이때, 하이브리드 이미지 탐색 모듈은 특정 파노라마 이미지로부터 생성된 퍼스펙티브 이미지와, 사용자로부터 수신한 퍼스펙티브 이미지 간의 유사 이미지 개수를 카운트할 수 있다. 이를 기초로, 하이브리드 이미지 탐색 모듈은 유사 이미지 개수가 높은 파노라마 이미지에 높은 가중치를 부여할 수 있다.
이어서, 하이브리드 이미지 탐색 모듈은 각 파라미터에 대한 유사도와 가중치를 기초로, 각각의 파노라마 이미지의 랭킹을 산출하고, 이를 기초로 사용자가 제공한 퍼스펙티브 이미지와 가장 유사한 파노라마 이미지를 선별할 수 있다. 하이브리드 이미지 탐색 모듈에 대한 구조 및 동작 방법은 이하에서 자세히 설명하도록 한다.
이어서, 서버(1100)는 선정된 파노라마 이미지에 대한 로컬 피쳐(Local feature)를 산출한다(S150).
이때, 로컬 피쳐는 이미지로부터 추출된 각각의 키포인트(Keypoint; KP)를 중심으로 도출된 패치(Patch)에 대한 벡터값 및 위치정보(예를 들어, x좌표, y좌표, 및 스케일을 포함하는 위치정보)를 포함하며, 하나의 이미지에서 복수의 로컬 피쳐가 추출될 수 있다. 이때, 로컬 피쳐에 대한 벡터값은 미리 학습된 딥러닝 모듈에 의해 도출되는데, 딥러닝 모듈은 동일한 키포인트(KP)에 대해 동일한 로컬 피쳐(Unified Local Feature)가 출력하도록 트레이닝될 수 있다.
마찬가지로, 서버(1100)는 사용자로부터 수신한 퍼스펙티브 이미지에 대한 로컬 피쳐를 산출한다(S160). 이때, 서버(1100)는 동일한 미리 학습된 딥러닝 모듈을 이용하여 로컬 피쳐를 산출한다.
이어서, 서버(1100)는 산출된 로컬 피쳐들을 이용하여, 사용자의 퍼스펙티브 이미지를 촬영한 카메라의 위치에 대응되는 실내위치를 계산한다(S170).
이어서, 서버(1100)는 계산된 실내위치를 사용자 단말기(1200)에 제공한다(S180).
이를 통해, 서버(1100)는 사용자가 제공한 퍼스펙티브 이미지에 대한 정확한 위치를 딥러닝 모듈을 이용하여 도출할 수 있다. 또한, GPS 정보를 이용하지 않고 이미지 간의 비교를 통하여 사용자의 정확한 위치를 도출할 수 있기 때문에 실내에서도 사용자의 정확한 위치에 대한 정보제공이 가능하다. 또한, 미리 학습된 딥러닝을 이용하여 도출된 글로벌 피쳐 및/또는 로컬 피쳐를 이용함으로써, 종래의 방식보다 빠르고 정확하게 사용자의 실내위치를 도출하여, 이에 대응되는 3D 투어 정보를 사용자 단말기(1200)에게 제공할 수 있다.
추가적으로, 본 발명의 다른 실시예에서, 본 발명의 전술한 글로벌 피쳐를 산출하는 방법 및 로컬 피쳐를 산출하는 방법 중 어느 하나는, 핸드 크래프트 피쳐 포인트를 이용하는 방법 또는 미리 공개된 종래의 피쳐 추출 방법이 대체되어 이용될 수 있음은 물론이다.
이하에서는, 전술한 S130 단계 및 S140 단계를 수행하는 하이브리드 이미지 탐색 모듈에 대하여 구체적으로 살펴보도록 한다.
도 3은 도 2의 S130 단계 및 S140 단계를 수행하는 하이브리드 이미지 탐색 모듈을 설명하기 위한 블록도이다. 도 4 내지 도 8은 도 3의 변환 모듈에 대한 각각의 동작을 설명하기 위한 블록도이다.
도 3을 참조하면, 본 발명의 실시예에 따른 하이브리드 이미지 탐색 모듈은, 파노라마 필터 모듈(110)(Panomara filter module), 데이터베이스(120)(Database), 변환 모듈(200)(transformation module), 히스토그램 모듈(310)(histogram module), 랭킹 모듈(320)(ranking module)을 포함한다.
우선, 파노라마 필터 모듈(110)은 하나의 파노라마 이미지를 복수의 퍼스펙티브 이미지로 변환한다. 여기에서, 파노라마 이미지는 하나의 지점을 기준으로 360도를 전방위로 촬영하여 하나의 이미지로 합성한 3D 이미지를 의미하며, 복수의 렌즈를 이용하여 촬영된 이미지를 병합하여 생성될 수 있다. 서버(1100)는 파노라마 이미지를 이용하여 가상의 3D 공간을 구현할 수 있다. 반면, 퍼스펙티브 이미지는 하나의 렌즈로 촬영한 2D 이미지에 해당한다.
따라서, 파노라마 필터 모듈(110)은 파노라마 이미지를 구 좌표계(spherical coordinate)에 투영시킨 뒤, 이를 복수 개의 구역으로 구분할 수 있다. 예를 들어, 파노라마 필터 모듈(110)은 하나의 파노라마 이미지를 구 좌표계에 투영시킨 뒤 18개의 구역으로 구분할 수 있다.
이어서, 파노라마 필터 모듈(110)은 구분된 각 구역에 대응되는 파노라마 이미지(즉, 3D 이미지)의 일부를 퍼스펙티브 이미지(즉, 2D 이미지)의 형태로 변환한다. 예를 들어, 하나의 파노라마 이미지가 18개의 구역으로 구분된 경우, 파노라마 필터 모듈(110)은 구분된 각 구역을 18개의 퍼스펙티브 이미지를 생성할 수 있다. 이때, 각각의 퍼스펙티브 이미지는 상호 간에 일부 오버랩되는 영역을 포함할 수 있다.
변환 모듈(200)은 글로벌 디스크립터 모듈(210)(Global descriptor module; 이하, 제1 모듈), 실내 오브젝트 감지 모듈(220)(Indoor Object Detection module; 이하, 제2 모듈), 이미지 캡션 생성 모듈(230)(Image Caption generation module; 이하, 제3 모듈), 세그멘테이션 모듈(240)(Segmentation module; 이하, 제4 모듈)을 포함한다.
우선, 도 4를 참조하면, 제1 모듈(210)은 입력된 이미지에 대한 글로벌 피쳐를 벡터형태로 출력한다. 예를 들어, 제1 모듈(210)에서 출력되는 글로벌 피쳐는 {1 X 2048}의 벡터 형식을 가질 수 있으며, 128 bit로 이루어질 수 있다.
이때, 제1 모듈(210)은 뉴럴 네트워크를 포함하는 딥러닝 모듈을 포함할 수 있으며, 동일한 장소를 촬영한 이미지에 대하여 동일한 글로벌 피쳐가 출력되도록 학습될 수 있다. 예를 들어, 서버(1100)가 동일한 장소에 대한 파노라마 이미지와 퍼스펙티브 이미지를 제1 모듈(210)에 입력한 경우, 제1 모듈(210)은 동일한 또는 유사도가 높은 글로벌 피쳐를 출력할 수 있다.
구체적으로, 도 5를 참조하면, 제1 모듈(210)은 서로 다른 이미지가 입력되는 복수의 뉴럴 네트워크 모듈(211), 각 뉴럴 네트워크 모듈에서 출력된 값의 유사도를 산출하는 유사도 판단 모듈(213)(distance calculator), 산출된 각 유사도에 대한 가중치를 조절하는 가중치 모듈(215)(weight calculator) 및 결과값의 오차에 대한 피드백을 제공하는 피드백 모듈(217)(feedback module)을 포함한다.
제1 모듈(210)은 기본적으로 삼중항 손실(triplet loss)의 기계 학습 알고리즘을 이용한다. 따라서, 뉴럴 네트워크 모듈(211)에는 서로 다른 3개의 뉴럴 네트워크 서브 모듈(211a, 211b, 211c)이 포함되며, 각각의 서브 모듈(211a, 211b, 211c)에는 서로 다른 이미지가 입력된다.
예를 들어, 제1 서브 모듈(211a)에는 파노라마 이미지(I1)가 입력되고, 제2 서브 모듈(211b)에는 파노라마 이미지(I1)와 동일한 대상을 포함하는 퍼스펙티브 이미지(I2)가 입력되며, 제3 서브 모듈(211c)에는 I1, I2와 비유사한 비교군 이미지(I3)(Negartive Image)가 입력될 수 있다.
이때 각각의 서브 모듈(211a, 211b, 211c) 간에는 뉴럴 네트워크의 가중치가 공유될 수 있다.
각각의 서브 모듈(211a, 211b, 211c)에서 출력된 출력값(Av, Pv, Nv)은 벡터값을 가질 수 있으며, 각각의 벡터값은 전술한 글로벌 피쳐와 동일한 형식을 취할 수 있다.
이어서, 각각의 서브 모듈(211a, 211b, 211c)에서 출력된 출력값(Av, Pv, Nv)은 유사도 판단 모듈(213)에 입력된다. 또한, 유사도 판단 모듈(213)에는 입력된 파노라마 이미지(I1)에 대한 기준값(Ground Truth; GT)이 입력된다.
유사도 판단 모듈(213)은 입력된 출력값(Av, Pv, Nv) 및 기준값(GT)을 이용하여 각 값들 간의 유사도를 계산한다. 예를 들어, 유사도 판단 모듈(213)은 코사인 디스턴스(Cosine distance) 함수를 이용하여 입력된 값들의 유사도를 산출할 수 있다.
이때, 유사도 판단 모듈(213)은 파노라마 이미지에 대한 제1 결과값(Av)과 퍼스펙티브 이미지에 대한 제2 결과값(Pv) 간의 제1 유사도, 제1 결과값(Av)과 비교군 이미지에 대한 제3 결과값(Nv) 간의 제2 유사도, 제2 결과값(Pv)과 제3 결과값(Nv) 간의 제3 유사도, 제1 결과값(Av)과 기준값(GT) 간의 제4 유사도, 제2 결과값(Pv)과 기준값(GT) 간의 제5 유사도를 도출하여, 가중치 모듈(215)에 전달할 수 있다. 또한, 도면에 도시되지는 않았으나, 유사도 판단 모듈(213)은 제3 결과값(Nv)과 기준값(GT) 간의 제6 유사도를 추가적으로 도출하여, 가중치 모듈(215)에 전달할 수 있다.
이어서, 가중치 모듈(215)은 수신된 유사도에 미리 설정된 가중치를 적용하여 제1 시점의 결과값(T(t))을 출력할 수 있다. 예를 들어, 가중치 모듈(215)은 제1 내지 제3 유사도에는 0.6의 가중치를 적용하고, 제4 및 제5 유사도에는 0.4의 가중치를 적용함으로써 제1 시점의 결과값(T(t))을 도출할 수 있다.
이어서, 가중치 모듈(215)에서 출력된 결과값(T(t))은 피드백 모듈(217)에 제공될 수 있으며, 피드백 모듈(217)은 가중치 모듈(215)로부터 제1 시점에 수신한 제1 결과값(T(t))과 제2 시점에 수신한 제2 결과값(T(t-1)) 사이의 차이값을 도출하고, 도출된 값을 피드백 값으로 뉴럴 네트워크 모듈(211)에 제공할 수 있다.
뉴럴 네트워크 모듈(211)은 수신된 피드백 값을 이용하여 각 뉴럴 네트워크 서브 모듈(211a, 211b, 211c)에 대한 가중치를 조절할 수 있다.
또한, 전술한 제1 모듈(210)은 학습 모드와 수행 모드로 나누어 동작할 수 있다.
학습 모드에서, 제1 모듈(210)은 미리 설정된 학습 데이터셋을 통해 각 이미지들의 유사도 판단의 정확성을 높일 수 있도록 학습될 수 있다. 제1 모듈(210)은 데이터셋을 이용한 충분한 학습을 통해, 동일한 대상을 포함하는 파노라마 이미지와 퍼스펙티브 이미지에 대해 동일한 또는 유사도가 높은 글로벌 피쳐를 출력할 수 있다.
수행 모드에서, 제1 모듈(210)에는 하나의 이미지만 입력될 수 있으며, 이에 따라 제1 모듈(210)은 학습된 뉴럴 네트워크를 이용하여 입력된 이미지에 대한 글로벌 피쳐를 출력할 수 있다.
다시 도 3을 참조하면, 데이터셋에 의해 학습된 딥러닝 모듈을 포함하는 제1 모듈(210)은 파노라마 이미지 및 파노라마 이미지에서 도출된 퍼스펙티브 이미지가 각각 입력되며, 입력된 각각의 이미지에 대한 글로벌 피쳐(GF Vector)를 출력할 수 있다. 출력된 글로벌 피쳐는 벡터값을 가지며 데이터베이스(120)에 각 이미지의 ID 별로 저장될 수 있다.
한편, 도 3을 참조하면, 제2 모듈(220)은 이미지에 포함된 물체(object)를 감지하고, 감지된 물체가 어떤 물체인지 분류(clssification)하며, 해당 물체가 어디에 위치하는지 바운딩 박스(bounding box)를 이용하여 위치 정보(position information)를 출력할 수 있다.
이때, 제2 모듈(220)은 미리 학습된 딥러닝 모듈을 이용하여 이미지에 포함된 물체를 감지하고, 감지된 물체를 분류하며, 감지된 물체의 위치정보를 추출할 수 있다.
예를 들어, 도 6을 참조하면, 이미지에 고양이 한마리가 포함된 경우, 제2 모듈(220)은 해당 고양이가 포함되는 바운딩 박스를 설정하고, 해당 바운딩 박스에 포함된 물체가 고양이라고 판단하여 분류하며, 분류정보(class)와 바운딩 박스의 위치정보(position)을 출력할 수 있다. 이러한 동작은 복수의 물체가 포함된 경우에도 동일하게 동작하며, 제2 모듈(220)은 복수의 물체 각각에 대한 분류정보(class)와 위치정보(position)을 출력할 수 있다. 출력된 정보는 데이터베이스(120)에 전달되어 대응되는 이미지의 ID에 귀속되어 저장될 수 있다.
다시 도 3을 참조하면, 제3 모듈(230)은 이미지에 포함된 물체에 대한 설명을 텍스트(text) 형태로 출력한다. 마찬가지로, 제3 모듈(230)도 미리 학습된 딥러닝 모듈을 이용하여 이미지에 포함된 물체를 감지하고, 해당 물체에 대응되는 텍스트를 캡션(caption)으로 출력할 수 있다. 이때, 캡션(caption)은 단어 또는 해당 단어를 포함하는 문장으로 구성될 수 있다.
예를 들어, 도 6을 참조하면, 이미지에 고양이, 강아지, 오리가 포함된 경우, 제3 모듈(230)은 각 물체를 감지하고 이에 대한 설명을 단어 형태로 출력할 수 있다. 도 7을 참조하면, 제3 모듈(230)은 이미지에 대한 물체와 각 물체에 대한 동작의 형태를 감지하여, 이에 대한 설명을 문장 형태로 출력할 수 있다. 제3 모듈(230)에서 출력된 정보는 데이터베이스(120)에 전달되어 대응되는 이미지의 ID에 귀속되어 저장될 수 있다.
다시 도 3을 참조하면, 제4 모듈(240)은 이미지의 영역을 분할하는 세그멘테이션(segmentation) 동작을 수행하고, 각 분할된 영역을 알고리즘을 이용해 다시 합치는 오브젝트 세그멘테이션(object segmentation) 동작을 수행할 수 있다. 이어서, 제4 모듈(240)은 같은 분류(class)인 물체(object)들을 같은 영역으로 분할한다. 이때, 제4 모듈(240)은 서로 동일한 클래스의 물체들을 동일한 영역으로 구분하거나, 서로 다른 색으로 구분하여 서로 다른 영역으로 구분한뒤 경계를 표시하는 바운더리 세그멘테이션(boundary segmentation) 또는 시멘틱 인스턴스 세그멘테이션(semantic instance segmentation) 동작을 수행할 수 있다.
예를 들어, 도 6을 참조하면, 제4 모듈(240)은 인스턴스 세그멘테이션(instance segmentation)을 통해, 각 동물의 경계선을 구분하고, 이에 대한 영역을 분리하여 출력할 수 있다. 제4 모듈(240)에서 출력된 정보는 데이터베이스(120)에 전달되어 대응되는 이미지의 ID에 귀속되어 저장될 수 있다.
이때, 제2 모듈(220), 제3 모듈(230), 제4 모듈(240)은 구체적인 동작 방법으로 종래의 공개된 알고리즘을 이용하며, 해당 알고리즘에 대한 정보는 이미 공개되어 있으므로 여기에서 자세한 설명은 생략하도록 한다.
이어서, 히스토그램 모듈(310)은 파노라마 이미지를 기초로 생성된 각각의 퍼스펙티브 이미지와 사용자로부터 수신된 이미지(즉, 퍼스펙티브 이미지) 간의 유사도를 계산하고, 각 파노라마 이미지에 대해 미리 정해진 기준치 이상으로 유사한 퍼스펙티브 이미지의 개수를 카운트한다.
예를 들어, 도 8을 참조하면, 히스토그램 모듈(310)은 제1 내지 제4 파노라마 이미지(Pa1, Pa2 Pa3, Pa4)로부터 생성된 퍼스펙티브 이미지와 사용자로부터 수신한 이미지와 유사한 이미지의 개수를 카운트하여 그래프로 표시할 수 있다.
히스토그램 모듈(310)은 각각의 파노라마 이미지의 ID 별로 유사한 퍼스펙티브 이미지의 숫자를 출력할 수 있으며, 산출된 결과를 기초로 산정된 각 파노라마 이미지의 가중치는 랭킹 모듈(320)에 전달될 수 있다.
추가적으로, 히스토그램 모듈(310)에서 각 이미지 간의 유사도를 판단하는 방법은 다양하게 전술한 파라미터 중 일부를 이용하거나, 종래의 이미지 유사도를 판단하는 다양한 방법들이 이용될 수 있다.
이어서, 랭킹 모듈(320)은 데이터베이스(120)에 저장된 각 파노라마 이미지에 대한 글로벌 피쳐(GF Vector), 분류정보(class), 위치정보(position), 캡션(caption), 세그멘테이션(Segmentation)을 참조하여, 사용자로부터 수신한 이미지와의 유사도를 계산할 수 있다.
이때, 랭킹 모듈(320)은 히스토그램 모듈(310)로부터 수신한 각 파노라마 이미지에 대한 가중치도 함께 고려하여 유사도를 계산할 수 있다.
랭킹 모듈(320)은 파노라마 이미지로부터 도출된 각 파라미터에 대한 유사도와, 히스토그램 모듈(310)로부터 수신한 가중치를 이용하여 유사도를 산출하고, 이를 기초로 사용자가 제공한 이미지와 유사도가 가장 높은 파노라마 이미지를 선정할 수 있다.
이에 따라, 랭킹 모듈(320)은 선정된 파노라마 이미지에 대응되는 ID를 출력할 수 있다.
이어서, 본 발명의 실내 위치 측위 방법은 랭킹 모듈(320)로부터 출력된 ID에 대응되는 파노라마 이미지와, 사용자가 제공한 퍼스펙티브 이미지와의 상대적인 위치관계를 계산하기 위해, 각 이미지의 로컬 피쳐를 추출하여 이용한다. 이때, 본 발명의 서버(1100)는 딥러닝 기술을 이용하여 로컬 피쳐를 추출할 수 있다.
추가적으로, 본 발명의 다른 실시예에 따른 하이브리드 이미지 탐색 모듈에서, 히스토그램 모듈(310) 또는 랭킹 모듈(320)은 생략되어 실시될 수 있음은 물론이다.
이하에서는, 선정된 파노라마 이미지와 사용자가 제공한 이미지에서 로컬 피쳐를 추출하는 로컬 피쳐 추출 모듈(Local feature Extraction Module)에 대해 자세히 설명하도록 한다.
도 9는 도 2의 S150 단계 및 S160 단계를 수행하는 모듈을 설명하기 위한 블록도이다.
도 9를 참조하면, 본 발명의 실시예에 따른 로컬 피쳐 추출 모듈(Local Feature Extraction Module)은, 키포인트 추측기(410)(Keypoint Estimator), 프로젝션 변환기(420)(Projection Transformator), 디스크립터 추출기(430)(Descripter Extractor), 멀티 패치 로스 산출기(440)(Multi Patch loss Calculator)를 포함한다.
구체적으로, 키포인트 추측기(410)는 이미지에 포함된 키포인트(KP; 이하 특징점)를 추출한다. 이때, 키포인트 추측기(410)는 서로 다른 레벨의 이미지에서 각각 특징점(KP)을 추출하여 이용할 수 있다.
예를 들어, 키포인트 추측기(410)는 서로 다른 크기로 변환시킨 3개의 레이어로부터 특징점(KP)을 추출할 수 있으며, 제2 레이어는 제1 레이어의 1/4 크기이고, 제3 레이어는 제2 레이어의 1/4의 크기로 설정될 수 있다. 또한, 각각의 레이어에서는 서로 다른 숫자의 특징점(KP)이 추출될 수 있다.
이어서, 키포인트 추측기(410)는 추출된 각 특징점(KP)에 대하여, 각 특징점(KP)을 기준으로 미리 정해진 크기의 패치(Patch)를 생성할 수 있다. 예를 들어, 패치(Patch)는 특징점(KP)을 중심으로 32 X 32 픽셀로 구성된 이미지 일수 있으며, 전술한 각 레이어별로(예를 들어, 각각의 제1 내지 제3 레이어) 형성될 수 있다.
키포인트 추측기(410)에서 생성된 각 특징점(KP)에 대한 패치(Patch)는 디스크립터 추출기(430)에 전달될 수 있다. 또한, 추출된 각 특징점(KP)에 대한 위치정보(position)는 프로젝션 변환기(420)에 전달될 수 있다.
프로젝션 변환기(420)는 수신된 특징점(KP)에 대한 위치정보를 기초로 입력된 파노라마 이미지에 대한 패치를 형성할 수 있다. 다만, 파노라마 이미지의 경우 구 좌표계(spherical coordinate)로 구성되므로, 프로젝션 변환기(420)는 수신된 특징점(KP)에 대해 대응되는 영역을 설정한 뒤, 좌표계 변환을 통하여 퍼스펙티브 이미지에 대응되는 형태로 패치(Patch)를 변환한다.
즉, 프로젝션 변환기(420)는 특징점(KP)에 대응되는 위치의 영역을 파노라마 이미지 상에서 특정하여, 특정된 영역을 퍼스펙티브 이미지와 비교 가능한 형태로 변환함으로써 패치(Patch)를 생성한다.
마찬가지로, 프로젝션 변환기(420)에서 생성된 각 특징점(KP)에 대한 패치(Patch)는 디스크립터 추출기(430)에 전달될 수 있다.
디스크립터 추출기(430)는 각 패치(Patch) 마다 로컬 피쳐에 대응되는 값을 연산하여 출력할 수 있다. 이때, 로컬 피쳐는 벡터값(LF Vector; 예를 들어, 128자리의 벡터값)을 포함할 수 있으며, 좌표정보([n]x3; 예를 들어, x좌표, y좌표, 스케일(scale))를 포함할 수 있다.
이때, 디스크립터 추출기(430)는 뉴럴 네트워크를 포함하는 딥러닝 알고리즘으로 구현될 수 있으며, 동일한 대상에 대한 패치(Patch)에 대하여 동일하거나 유사한 로컬 피쳐가 출력되도록 학습될 수 있다.
디스크립터 추출기(430)에서 출력되는 각 패치(Patch)의 로컬 피쳐는 멀티 패치 로스 산출기(440)에 제공된다.
멀티 패치 로스 산출기(440)는 디스크립터 추출기(430)에 포함된 뉴럴 네트워크 모듈을 학습시키는 피드백 값을 제공할 수 있다. 즉, 멀티 패치 로스 산출기(440)는 디스크립터 추출기(430)에서 서로 다른 시점에 출력된 결과값 사이의 차이값을 도출하고, 도출된 상기 차이값을 디스크립터 추출기(430)에 피드백으로 제공할 수 있다.
예를 들어, 서로 동일한 대상을 포함하는 파노라마 이미지와 퍼스펙티브 이미지에 대하여 패치(Patch)를 추출하고 해당 패치(Patch)에 대응되는 로컬 피쳐가 입력되었을 때, 멀티 패치 로스 산출기(440)는 로컬 피쳐 간의 차이값을 피드백으로 디스크립터 추출기(430)에 제공할 수 있다.
디스크립터 추출기(430)는 제공된 피드백 값을 이용하여 뉴럴 네트워크의 가중치를 변환시킬 수 있다. 이때, 디스크립터 추출기(430)는 뉴럴 네트워크에 가중치를 적용하고, 이를 기초로 결과값을 출력하는 가중치 모듈을 더 포함할 수 있다. 이를 통해, 디스크립터 추출기(430)는 동일한 대상을 나타내는 패치(Patch)에 대하여 동일한 로컬 피쳐를 출력하도록 학습될 수 있다.
한편, 로컬 피쳐 추출 모듈에 파노라마 이미지가 입력되는 경우, 파노라마 이미지는 프로젝션 변환기(420)를 통하여 패치(Patch)가 생성될 수 있다. 반면, 로컬 피쳐 추출 모듈에 퍼스펙티브 이미지가 입력되는 경우, 퍼스펙티브 이미지는 프로젝션 변환기(420)를 거치지 않고, 키포인트 추측기(410)에서 패치(Patch)가 생성될 수 있다.
로컬 피쳐 추출 모듈은 학습 모드와 수행 모드로 나누어 동작할 수 있다.
학습 모드에서, 로컬 피쳐 추출 모듈은 미리 설정된 학습 데이터셋을 통해 각 이미지들의 유사도 판단의 정확성을 높일 수 있도록 학습될 수 있다.
학습 모드에서, 디스크립터 추출기(430)는 프로젝션 변환기(420)로부터 수신한 제1 패치(1st Patch)와, 키포인트 추측기(410)로부터 수신한 제2 패치(2nd Patch)에 대한 각각의 제1 및 제2 로컬 피쳐를 생성하여 멀티 패치 로스 산출기(440)에 전달한다. 멀티 패치 로스 산출기(440)는 제1 패치와 제2 패치에 대한 제1 및 제2 로컬 피쳐의 유사도를 산출하여 피드백 값(Feedback value)을 산출하고, 산출된 피드백 값을 디스크립터 추출기(430)에 제공할 수 있다.
이를 통해, 로컬 피쳐 추출 모듈은 동일한 대상을 나타내는 패치(Patch)에 대해 동일한 로컬 피쳐가 출력되도록 학습될 수 있다.
한편, 수행 모드에서, 로컬 피쳐 추출 모듈에 파노라마 이미지가 입력되는 경우, 파노라마 이미지는 프로젝션 변환기(420)를 통하여 제1 패치가 생성되고, 디스크립터 추출기(430)는 생성된 제1 패치에 대한 제1 로컬 피쳐를 출력할 수 있다.
또한, 로컬 피쳐 추출 모듈에 퍼스펙티브 이미지가 입력되는 경우, 퍼스펙티브 이미지는 프로젝션 변환기(420)를 거치지 않고, 키포인트 추측기(410)에서 제2 패치(Patch)가 생성되며, 디스크립터 추출기(430)는 생성된 제2 패치에 대한 제2 로컬 피쳐를 출력할 수 있다.
즉, 본 발명의 로컬 피쳐 추출 모듈에서, 파노라마 이미지에 대한 제1 패치의 제1 로컬 피쳐를 생성하는 과정은, 퍼스펙티브 이미지에 대한 제2 패치의 제2 로컬 피쳐를 생성하는 과정과 서로 다르게 구성될 수 있다.
추가적으로, 도 10의 디스크립터 추출기(430) 및 멀티 패치 로스 산출기(440)의 조합은 딥러닝 모듈에 포함될 수 있으며, 상기 딥러닝 모듈은 전술한 도 5의 제1 모듈(210)과 실질적으로 유사한 구조를 가질 수 있다. 또한, 본 기술에 대한 통상의 기술자는 전술한 설명을 기초로 디스크립터 추출기(430)의 구조를 용이하게 도출할 수 있기에, 여기에서 중복되는 설명은 생략하도록 한다.
디스크립터 추출기(430)에 포함된 뉴럴 네트워크 모듈은 인공신경망(ANN)를 포함할 수 있다. 예를 들어 딥러닝 구조는 CNN(Convolutional Neural Network), RNN(Recurrent Neural Network), DBN(Deep Belief Network), GNN(Graphic Neural Networks) 등의 심층신경망(DNN)으로 구성될 수 있다. 또한, 딥러닝 모듈은 트리플 로스(Triplet loss)와 같은 모델이 적용될 수 있음은 물론이다. 다만, 이는 하나의 예시에 불과하며 본 발명이 위 실시예에 한정되는 것은 아니므로, 여기에서 이에 대한 자세한 설명은 생략하도록 한다.
이어서, 서버(1100)는 앞서 선정된 파노라마 이미지와, 사용자가 제공한 퍼스펙티브 이미지 간의 매핑을 수행할 수 있다. 이때, 선정된 파노라마 이미지와 사용자가 제공한 퍼스펙티브 이미지는 매핑 이미지가 될 수 있다.
이어서, 서버(1100)는 매핑된 파노라마 이미지 및 퍼스펙티브 이미지에 대한 위치 관계를 산출할 수 있다.
여기에서, 매핑 이미지들은 서로 가장 근접한 위상관계를 가지는 이미지들을 의미할 수 있다. 가장 근접한 위상관계는 거리가 가까운 것뿐 아니라 공간적으로도 직접 서로 이동이 가능하여야 하는 경우일 수 있고, 이러한 예는 공통된 공간이 가장 많이 포함되어 있는 이미지들일 수 있다.
또한 매핑을 수행한다고 함은, 두 이미지들간에 정합을 의미할 수도 있지만, 본 명세서에서는 두 이미지들의 위상 즉, 상대적인 위치관계를 파악하는 경우를 위주로 설명하도록 한다.
*도 11은 본 발명의 실내 위치 측위 방법의 예시를 설명하기 위한 도면이다. 도 12는 본 발명의 실시예에 따른 3D 투어 제공 서버의 구성을 개략적으로 설명하기 위한 도면이다. 도 13은 본 발명의 실시 예에 따른 실내 위치 측위 방법을 위해 뉴럴 네트워크의 피쳐를 이용하는 개념을 설명하기 위한 도면이다. 도 14 및 15는 본 발명의 실시 예에 따른 뉴럴 네트워크 피쳐를 이용할 경우의 장점을 설명하기 위한 도면이다.
3D 투어 제공 시스템은 복수 개(예컨대, 5개)의 이미지들을 입력받을 수 있다. 그러면 3D 투어 제공 시스템은 복수 개의 이미지들 중 서로 매핑될 수 있는 이미지 즉 매핑 이미지들이 어떤 것인지를 파악하고, 파악한 매핑 이미지들의 매핑을 수행할 수 있다.
예컨대 본 발명의 실시 예에서 이미지들은 서로 다른 위치에서 촬영된 전방위 이미지(360 이미지)일 수 있다. 그리고 매핑 이미지들은 서로 공통된 공간을 가장 많이 공유하고 있는 이미지들 페어일 수 있다.
예컨대, 도 11에 도시된 바와 같이 위치 a, b, c, d, e 에서 촬영된 이미지들 각각이 이미지 1, 이미지 2, 이미지 3, 이미지 4, 및 이미지 5일 수 있다.
이러한 경우 이미지 1과 이미지 2 및 이미지 3은 공통된 촬영된 영상 내에 공통된 공간이 상당히 많이 포함되어 있지만, 상대적으로 이미지 1과 이미지 2에 더 많은 공통된 공간이 포함되어 있을 수 있다. 따라서 이미지 1의 매핑 이미지는 이미지 2일 수 있다.
그러면 이미지 2에 대해서 매핑 이미지를 탐색해야하고 이때 이미 매핑 이미지가 확정된 이미지 1은 제외될 수 있다. 그러면 이미지 2의 매핑 이미지는 이미지 3이 될 수 있다.
이와 같은 방식을 이미지 3의 매핑 이미지는 이미지 4가 될 수 있고, 이미지 4의 매핑 이미지는 이미지 5가 될 수 있다.
그러면 3D 투어 제공 시스템은 이미지 1을 기준으로 매핑 이미지인 이미지 2에 대한 매핑을 수행할 수 있다. 즉, 이미지 2의 이미지 1에 대한 위상 이미지 2의 이미지 1에 대한 상대적 위치를 파악할 수 있다. 그리고 이미지 3의 이미지 2에 대한 위상, 이미지 4의 이미지 3에 대한 위상, 및 이미지 5의 이미지 4에 대한 위상을 순차적으로 파악함으로써 전체 이미지들간의 위상관계가 특정될 수 있다.
결국 종래는 전방위 이미지들이 복수 존재하고 각각의 전방위 이미지들의 정확한 위치를 알 수 없는 경우에는, 복수의 이미지들의 위치관계를 파악하기 위해서는 상당한 시간과 자원이 필요할 수 있다.
예컨대, 종래의 방식에 의하면 모든 이미지들별로 소정의 피쳐 포인트(예를 들어, 전술한 키포인트(KP))를 추출하고, 추출된 피쳐 포인트들을 이용하여 모든 이미지 쌍(페어)별로 공통된 피쳐 포인트가 얼마나 존재하는지를 파악하여야 한다. 그리고 공통된 피쳐 포인트가 가장 많은 이미지 쌍이 서로 매핑 이미지로 파악될 수 있고, 공통된 피쳐 포인트들의 위치에 따라 매핑 즉, 상대적 위치관계가 결정될 수 있다. 만약 정합이 필요한 경우에는 공통된 피쳐 포인트들을 최소한의 에러로 겹쳐지게 하기 위한 변환행렬이 결정되고 이러한 변환행렬을 통한 어느 하나의 이미지의 변환을 통해 두 이미지는 연결(정합)될 수 있다.
하지만 이러한 종래의 방식에서 사용되는 피쳐 포인트는 피쳐 포인트의 추출에도 상당한 시간과 연산량이 소요된다. 또한 매핑 이미지를 파악하기 위해 위해 모든 이미지 페어별로 피쳐 포인트를 비교하는 연산을 수행하여야 하는데 이미지들의 피쳐 포인트의 개수가 많을수록 이러한 연산은 상당한 시간이 걸리는 문제점이 있다.
하지만 전술한 바와 같이 본 발명의 기술적 사상에 의하면 빠르고 정확하게 자동으로 이러한 복수의 이미지들 중에서 매핑 이미지를 탐색하고 탐색된 매핑 이미지들에 대한 매핑을 수행할 수 있다.
이러한 문제점을 해결하기 위해 본 발명의 기술적 사상에 따른 3D 투어 제공 시스템은 뉴럴 네트워크 피쳐를 이용할 수 있다.
본 명세서에서 정의되는 뉴럴 네트워크 피쳐는 소정의 목적을 달성하기 위해 학습된 뉴럴 네트워크의 소정의 레이어의 피쳐 맵(feature map)에서 선택된 전부 또는 일부의 피쳐들을 의미할 수 있다.
이러한 피쳐들은 특정 목적을 달성하기 위해 학습된 뉴럴 네트워크(예컨대, 컨벌루셔널 뉴럴 네트워크(CNN))에서 이용되며 특정 목적을 달성하도록 뉴럴 네트워크가 학습되면 학습된 뉴럴 네트워크에 의해 도출되는 정보일 수 있다.
예컨대, 도 13에 도시된 바와 같은 뉴럴 네트워크(20)가 존재할 수 있고, 뉴럴 네트워크는 컨벌루션 뉴럴 네트워크(CNN)일 수 있다.
이러한 경우 복수의 레이어들(21, 22, 23, 24)이 뉴럴 네트워크(20)에 포함될 수 있고, 입력 레이어(21)와 출력 레이어(24) 및 복수의 히든 레이어들(22, 23)이 존재할 수 있다. 출력 레이어(24)는 이전 레이어와 완전 연결(fully connected)된 레이어일 수 있고, 본 발명의 기술적 사상에 따른 3D 투어 제공 시스템은 출력 레이어(24) 또는 풀리 커넥티드 레이어 이전의 임의의 피쳐 맵이 포함되는 레이어(예컨대, 23)에서 뉴럴 네트워크 피쳐(f1, f2, f3)를 선택할 수 있다.
3D 투어 제공 시스템이 이용하는 뉴럴 네트워크 피쳐(f1, f2, f3)는 해당 레이어의 피쳐 맵에 포함된 모든 피쳐일 수도 있고, 이중에서 일부 선택된 피쳐일 수도 있다.
3D 투어 제공 시스템은 이러한 피쳐를 종래의 핸드 크래프트 피쳐 포인트 예컨대, SIFT(Scale-Invariant Feature Transform)], SURF (Speeded Up Robust Features), 또는 ORB(Oriented FAST and Rotated BRIEF) 대신 이용하여 매핑 이미지를 파악하거나 매핑 이미지들간의 매핑을 수행하는데 이용할 수 있다. 즉, 종래의 핸드 크래프트 피쳐들 대신에 컨벌루셔널 뉴럴 네트워크에서 이용되는 피쳐들이 이용될 수 있다.
일반적으로 이미지의 피쳐는 스케일(scale) 또는 오리엔테이션(orientation)에 무관하게 동일한 특성을 가져야 하는 것이 바람직한데, 컨벌루셔널 뉴럴 네트워크에서 출력 레이더(23) 이전의 레이어는 복수의 비선형적 컨벌루션 함수 및/또는 풀링 함수 등을 통해 이러한 특징을 가지게 된다. 더욱이 종래의 핸드 크래프트 피쳐들은 이미지에서의 모서리 등과 같이 사람이 정의한 특징적인 위치에서만 추출되며 대개는 에지가 존재하는 곳(예컨대, 에지가 꺾이는 위치 등)에서만 추출되는 특징이 있다.
하지만 뉴럴 네트워크 피쳐는 이러한 위치가 아니라 이미지의 플랫(flat)한 영역에서도 발견될 수 있도록 뉴럴 네트워크(20)가 학습될 수 있는 장점이 있다. 또한, 핸드 크래프트 피쳐는 이미지의 왜곡이나 이미지 품질에 따라 피쳐 포인트가 검출되어야 함에도 불구하고 검출되지 않는 경우가 종종 발생하는데 비해 뉴럴 네트워크 피쳐는 이러한 이미지 왜곡에 훨씬 강인한 특성이 있어서 피쳐 추출에 있어서도 정확도의 향상이 존재할 수 있다.
뉴럴 네트워크(20)는 그 자체가 피쳐 추출기(1130)(feature extracter)일 수도 있다. 예컨대, 출력 레이어(24) 또는 풀리 커넥티드 직전 레이어(23)에서 피쳐가 선택되는 경우, 출력 레이어(24)는 직전 레이어(23)의 선택된 피쳐(f1, f2, f3) 자체를 출력하도록 설계될 수도 있고, 이러한 경우는 뉴럴 네트워크(20) 자체가 피쳐 추출기(1130)로 작동할 수 있다.
또한, 뉴럴 네트워크(20)는 별개의 고유 목적(예컨대, 클래시피케이션, 오브젝트 디텍팅 등)을 달성하기 위해 학습된 것일 수도 있다. 이러한 경우에도 소정의 레이어에서 항상 일관된 피쳐를 선택하여 뉴럴 네트워크 피쳐로 이용할 수 있다. 예컨대, 도 13의 경우에는 출력 레이어(24)를 제외한 나머지 레이어들의 결합이 피쳐 추출기(1130)로 동작할 수 있다.
본 발명의 일 실시 예에 의하면, 뉴럴 네트워크(20)는 어느 하나의 이미지를 겹치는 영역이 존재하도록 분할한 후, 분할한 이미지들 각각의 겹치는 공통영역에서 각각 추출되는 서로 대응되는 포인트들이 매칭될 수 있도록 최적의 변환관계(예컨대, 에러가 최소가 되는)를 도출할 수 있도록 학습된 뉴럴 네트워크일 수 있다.
예컨대, 도 14에 도시된 바와 같이 소정의 이미지(6)의 전부 또는 일부는 겹치는 공통영역(6-3)이 존재하도록 분할될 수 있다. 그리고 분할된 이미지들(6-1 및 6-2) 각각으로부터 서로 대응되는 포인트들(예컨대, P11 내지 P14, P21 내지 P24)이 소정의 개수 추출될 수 있다.
그러면 제1 분할 이미지(6-1)에서 추출된 포인트들(P11 내지 P14)이 제2 분할 이미지(6-2)에서 추출된 포인트들(P21 내지 P24)을 최소에러로 변환될 수 있도록(예컨대, 변환행렬의 파라미터를 결정) 학습되는 뉴럴 네트워크를 뉴럴 네트워크(20)로 구현할 수 있다.
이때 포인트들(예컨대, P11 내지 P14, P21 내지 P24)은 임의로 선택되는 포인트일 수도 있고, 각각의 이미지들의 공통영역에서 소정의 방식으로 추출된 피쳐 포인트일 수도 있다.
어떠한 경우든 소정의 목적을 달성하기 위해 잘 학습된 뉴럴 네트워크(20)의 전부 또는 일부가 이미지에서 피쳐를 선택하고 추출하는 피쳐 추출기(도 12의 1130)로 이용될 수 있다.
그리고 이러한 피쳐 추출기(1130)를 이용해 3D 투어 제공 시스템이 입력받은 서로 다른 이미지들 각각에 포함된 공통영역에서는 동일한 피쳐가 추출될 수 있다. 따라서 어떤 하나의 이미지에서 동일한 피쳐(서로 대응되는 피쳐)가 가장 많이 존재하는 이미지가 매핑 이미지로 판단될 수 있다.
한편 본 발명의 기술적 사상에 따르면, 뉴럴 네트워크 피쳐들은 벡터로 표현되므로 특정 이미지의 매핑 이미지를 탐색하기 위해 종래와 같이 이미지 페어들 마다 피쳐들을 비교하는 것이 아니라, 고속 연산이 가능한 벡터 서치 엔진(도 12의 1150)을 이용함으로써 보다 빠른 위치관계의 판단이 가능할 수 있다.
대용량의 벡터들을 고속으로 서치하는 기술들이 최근에 널리 공개된 바 있다.
벡터 서치 엔진(1150)은 입력되는 벡터(또는 벡터 세트)와 가장 근사한(근거리의) 벡터들을 고속으로 찾기 위해 구축되는 엔진일 수 있다. 모든 벡터들은 DB 상에서 인덱스화되어 저장되며, 벡터 서치 엔진(1150)은 입력되는 벡터(또는 벡터 세트)와 가장 근사한 벡터(또는 벡터 세트)를 출력할 수 있도록 설계될 수 있다.
이러한 벡터 서치 엔진(1150)은 예컨대, faiss 등과 같은 알려진 벡터 서치 기법들을 이용해 구축될 수 있다. 이러한 벡터 서치 엔진(1150)은 GPU 기반으로 수행되는 경우 대용량의 고속연산이 가능한 효과가 있다.
본 발명의 기술적 사상에 따른 벡터 서치 엔진(1150)은 대상 이미지(예컨대, 이미지 1)에서 추출된 피쳐들의 세트를 입력받고 그에 대한 응답으로 가장 유사한(근거리)의 벡터 또는 벡터들의 집합을 출력할 수 있다. 그리고 이러한 벡터 또는 벡터들의 집합의 출처가 어떤 이미지인지를 판단함으로써 고속으로 대상 이미지의 매핑 이미지가 결정될 수 있다.
예컨대, 제1 이미지에서 추출된 피쳐들 전부가 벡터 서치 엔진(1150)에 입력될 수 있다. 벡터 서치 엔진(1150)은 벡터 DB에서 입력된 피쳐들 각각과 가장 거리가 짧은 벡터 또는 가장 거리가 짧은 벡터와의 거리를 출력할 수 있다. 이러한 태스크는 이미지들별로 수행될 수 있다.
예컨대, 다섯 개의 이미지가 존재하고 각각의 이미지들별로 10개의 피쳐가 추출된 경우를 가정하면, 벡터 DB에는 50개의 벡터가 인덱스화되어 저장될 수 있다. 그리고 각각의 출처 이미지에 대한 정보가 같이 저장될 수 있다.
그러면 벡터 서치 엔진(1150)은 제1 이미지로부터 추출된 10개의 벡터를 입력받을 수 있다. 그리고 벡터 서치 엔진(1150)은 10개의 벡터들 각각과 제2 이미지에서 추출된 벡터들 중 거리가 가장 짧은 벡터들 10개 또는 이들의 거리의 합을 출력할 수 있다. 이러한 방식으로 제3 이미지에서 추출된 벡터들, 제4 이미지에서 추출된 벡터들, 제5 이미지에서 추출된 벡터들에 대해 수행하면 입력된 벡터 세트와 가장 근사한 피쳐 세트들을 포함하는 이미지가 고속으로 탐색될 수 있다. 그리고 탐색된 이미지가 제1 이미지의 매핑 이미지로 결정될 수 있다.
실시 예에 따라서는 벡터 서치 엔진(1150)은 제1 이미지로부터 출력된 10개의 벡터들 각각에 대해서 제1 이미지로부터 추출된 10개의 벡터를 제외한 나머지 벡터들(40개)에 전체에 대해 거리가 가장 짧은 벡터 순서대로 출력할 수 있다. 예컨대, 10개의 벡터 리스트가 출력되면 3D 투어 제공 시스템은 이러한 벡터 리스트를 분석하여 매핑 이미지를 출력할 수 있다.
벡터 서치 엔진(1150)이 출력하는 결과 또는 방식은 다양할 수 있다. 하지만 어떠한 경우든 본 발명의 기술적 사상에 의하면 입력된 이미지들 각각으로부터 피쳐들을 추출하고, 이러한 피쳐들을 벡터 서치가 가능하도록 구축된 DB에 입력할 수 있으며, 벡터 서치 엔진(1150)은 입력되는 벡터 또는 벡터 세트를 입력받으면 가장 유사한(거리가 짧은) 벡터 또는 벡터 세트를 출력하는 기능을 수행할 수 있다. 이러한 기능을 통해 매핑 이미지를 고속으로 탐색할 수 있다.
실시 예에 따라서는 대상 이미지 즉, 매핑 이미지를 찾고자 하는 이미지(예컨대, 제1 이미지)의 모든 피쳐들이 입력되지 않고, 일부의 피쳐들이 벡터 서치 엔진(1150)에 입력될 수도 있다. 예컨대, 이미지 중 미리 정의된 영역에 대응되는 피쳐들만이 위치 관계를 파악하기 위해 벡터 서치 엔진(1150)에 입력될 수도 있다.
미리 정의된 영역은 통상 이미지의 중앙부분이 아니라 좌우상하의 모서리에 인접한 영역이 될 수 있으므로 이미지의 외곽쪽 영역을 임의로 설정하고, 설정된 영역에 대응되는 위치의 피쳐가 선택적으로 벡터 서치를 위한 입력으로 이용될 수도 있다. 물론 벡터 DB 역시 이러한 외곽 영역에 대응되는 피쳐만이 입력될 수도 있고, 전체 피쳐들이 입력될 수도 있다.
또한 본 발명의 기술적 사상에 따른 뉴럴 네트워크 피쳐는 그 자체로는 추출된 이미지에서의 위치가 특정되지 않는다. 따라서 뉴럴 네트워크 피쳐에 대응되는 원본 이미지에서의 위치(포인트)가 특정되어야 매핑이 수행될 수 있다. 따러서 뉴럴 네트워크 피쳐에 대응되는 원본 이미지 상의 위치를 특정하는 기술적 사상이 요구되는데, 이에 대해서는 도 16를 참조하여 후술하도록 한다.
상술한 바와 같은 기술적 사상을 구현하기 위한 3D 투어 제공 서버(1100)는 도 12에 도시된 바와 같은 기능적 또는 논리적 구성으로 정의될 수 있다.
도 12를 참조하면, 본 발명의 기술적 사상에 따른 서버(1100)는, 제어모듈(1110), 인터페이스 모듈(1120), 피쳐 추출기(1130)를 포함한다. 서버(1100)은 매핑모듈(1140) 및/또는 벡터 서치 엔진(1150)을 더 포함할 수도 있다.
서버(1100)은 본 발명의 기술적 사상을 구현하기 위해 필요한 하드웨어 리소스(resource) 및/또는 소프트웨어를 구비한 논리적인 구성을 의미할 수 있으며, 반드시 하나의 물리적인 구성요소를 의미하거나 하나의 장치를 의미하는 것은 아니다. 즉, 서버(1100)은 본 발명의 기술적 사상을 구현하기 위해 구비되는 하드웨어 및/또는 소프트웨어의 논리적인 결합을 의미할 수 있으며, 필요한 경우에는 서로 이격된 장치에 설치되어 각각의 기능을 수행함으로써 본 발명의 기술적 사상을 구현하기 위한 논리적인 구성들의 집합으로 구현될 수도 있다.
또한, 서버(1100)은 본 발명의 기술적 사상을 구현하기 위한 각각의 기능 또는 역할별로 별도로 구현되는 구성들의 집합을 의미할 수도 있다. 예컨대, 제어모듈(1110), 인터페이스 모듈(1120), 피쳐 추출기(1130), 매핑모듈(1140), 및/또는 벡터 서치 엔진(1150) 각각은 서로 다른 물리적 장치에 위치할 수도 있고, 동일한 물리적 장치에 위치할 수도 있다.
또한, 구현 예에 따라서는 제어모듈(1110), 인터페이스 모듈(1120), 피쳐 추출기(1130), 매핑모듈(1140), 및/또는 벡터 서치 엔진(1150) 각각을 구성하는 소프트웨어 및/또는 하드웨어의 결합 역시 서로 다른 물리적 장치에 위치하고, 서로 다른 물리적 장치에 위치한 구성들이 서로 유기적으로 결합되어 각각의 모듈들을 구현할 수도 있다.
또한, 본 명세서에서 모듈이라 함은, 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및 하드웨어를 구동하기 위한 소프트웨어의 기능적, 구조적 결합을 의미할 수 있다. 예컨대, 모듈은 소정의 코드와 소정의 코드가 수행되기 위한 하드웨어 리소스(resource)의 논리적인 단위를 의미할 수 있으며, 반드시 물리적으로 연결된 코드를 의미하거나, 한 종류의 하드웨어를 의미하는 것은 아님은 본 발명의 기술분야의 평균적 전문가에게는 용이하게 추론될 수 있다.
제어모듈(1110)은 본 발명의 기술적 사상을 구현하기 위해 서버(1100)에 포함된 다른 구성(예컨대, 인터페이스 모듈(1120), 피쳐 추출기(1130), 매핑모듈(1140), 및/또는 벡터 서치 엔진(1150) 등)을 제어할 수 있다.
인터페이스 모듈(1120)은 외부로부터 복수의 이미지들을 입력받을 수 있다. 복수의 이미지들은 서로 다른 위치에서 촬영된 영상일 수 있다. 일 예에 의하면 복수의 이미지들은 실내에서 촬영된 3D 투어에 포함된 복수의 파노라마 이미지(즉, 360 영상)일 수 있다. 또한, 인터페이스 모듈(1120)은 사용자가 직접 촬영한 퍼스펙티브 이미지를 수신할 수 있다.
복수의 이미지들 중에는 공통된 공간을 다른 위치에서 촬영한 것들이 존재할 수 있으며, 공통된 공간 즉 공통영역을 포함하는 두 이미지들은 매핑 가능한 관계에 있다고 정의될 수 있다. 그 중에서 가장 많은 공통영역을 포함하는 이미지를 매핑 이미지로 정의할 수 있으며, 이는 대응되는 피쳐가 가장 많은 이미지들로 정의될 수도 있다.
인터페이스 모듈(1120)을 통해 입력받은 복수의 이미지들 각각으로부터 피쳐 추출기(1130)는 본 발명의 기술적 사상에 따라 정의되는 피쳐 즉, 뉴럴 네트워크 피쳐를 추출할 수 있다. 여기에서 뉴럴 네트워크 피쳐는, 전술한 글로벌 피쳐 및/또는 로컬 피쳐를 포함하는 개념으로 이해할 수 있다. 이하에서는 설명의 편의를 위해, 전술한 글로벌 피쳐 또는 로컬 피쳐를 뉴럴 네트워크 피쳐로 치환하여 설명하도록 한다.
뉴럴 네트워크 피쳐는 소정의 뉴럴 네트워크(예컨대, CNN)에서 출력 레이어 이전에 특정되는 이미지의 피쳐들일 수 있음은 전술한 바와 같다.
피쳐 추출기(1130)는 도 5를 참조하여 전술한 하이브리드 이미지 탐색 모듈의 글로벌 디스크립터 모듈(210)에 대응될 수 있다. 또한, 피쳐 추출기(1130)는 도 9 및 도 10을 참조하여 설명한 디스크립터 추출기(430)에 대응될 수 있다.
또한, 피쳐 추출기(1130)는 도 13에 도시된 바와 같은 뉴럴 네트워크(20) 그 자체일 수도 있고, 입력 레이어(21)부터 뉴렬 네트워크에서 출력 레이어(24) 이전의 소정의 레이어(예컨대, 23)까지의 구성을 의미할 수도 있다. 레이어(23)에 의해 정의되는 피쳐 맵에 포함된 피쳐 전부 또는 일부가 뉴럴 네트워크 피쳐일 수 있다.
뉴럴 네트워크(20)는 뉴럴 네트워크 피쳐를 추출하기 위한 목적 이외의 별개의 목적(예컨대, 분류, 디텍팅 등)을 위해 학습된 것일 수도 있지만, 전술한 바와 같이 두 이미지를 최소의 에러로 정합하기 위해 설계된 뉴럴 네트워크이거나 뉴럴 네트워크 피쳐를 추출하는 목적으로 학습되는 것일 수도 있다. 예컨대, 후자의 경우는 사용자가 임의로 설정한 위치 및/또는 이미지의 특징을 잘 표현할 수 있는 핸드 크래프트 피쳐 포인트를 출력할 수 있도록 학습될 수 있고, 이러한 경우는 뉴럴 네트워크(20) 자체가 피쳐 추출기(1130)가 될 수 있다.
사용자가 임의로 설정한 위치는 소정의 오브젝트(예컨대, 벽, 문 등)에서 사용자가 설정한 위치(예컨대, 해당 오브젝트의 중앙위치)로 설정할 수 있다. 또한 이러한 사용자 설정 위치는 종래의 핸드 크래프트 피쳐 포인트와 달리 플랫한 영역 즉, 에지 또는 모서리가 존재하지 않는 플랫(flat)한 이미지 영역에 설정할 수 있다. 이러한 경우 종래의 핸드 크래프트 피쳐 포인트에서는 피쳐 포인트로 추출되지 않는 플랫한 이미지 영역 내에서도 피쳐가 정의될 수 있고 이를 활용하는 경우 보다 정확도 있는 매핑 이미지의 판단 및 매핑이 수행될 수도 있다.
도 15에 도시된 바와 같이, 피쳐 추출기(1130)는 미리 정해진 오브젝트(예컨대, 벽, 문, 테이블) 내의 임의의 위치가 피쳐 포인트(fp1, fp2, fp3)로 특정될 수 있도록 학습될 수 있다.
또한, 도 15에 도시된 바와 같이 임의의 위치는 오브젝트별로 미리 정해진 위치(예컨대, 벽의 중심, 테이블의 중심, 문의 중심 등)과 같이 통상적으로 플랫한 이미지 영역 내로 설정될 수 있다.
물론 피쳐 추출기(1130)는 종래의 에지 또는 모서리가 꺽인 부분 등과 같이 핸드 크래프트 피쳐 포인트에 대응되는 피쳐를 추출할 수 있도록 학습될 수도 있다.
예컨대, 사용자는 다수의 이미지에 오브젝트별로 핸드 크래프트 피쳐 포인트, 사용자가 설정한 플랫한 영역의 설정위치 들을 어노테이션하고, 이를 학습 데이터로 이용하여 뉴럴 네트워크(20)를 학습시킬 수도 있다. 이러한 경우 각각의 피쳐 포인트(fp1, p2, fp3)에 대응되는 피쳐들이 추출될 수 있으며, 피쳐 포인트 자체가 출력될 수도 있다.
어떠한 경우든 뉴럴 네트워크 피쳐를 이용하는 경우에는 도 14에 도시된 바와 같이 종래의 핸드 크래프트 피쳐로는 추출되지 않는 위치가 피쳐로 활용될 수 있으므로, 보다 이미지 특성을 정의하거나 이미지를 매핑하는데 유리한 효과가 있을 수 있다.
한편, 뉴럴 네트워크 피쳐는 뉴럴 네트워크(20)가 원하는 목적을 출력하기 위해 복수의 컨벌루션 및/또는 풀링을 통해 결정되는 이미지의 특징적인 정보이긴 하지만, 이러한 뉴럴 네트워크 피쳐 자체가 해당하는 원본 이미지에서의 특정 위치를 나타내는 것은 아닐 수 있다.
따라서 뉴럴 네트워크 피쳐가 추출된 경우라도, 뉴럴 네트워크 피쳐에 대응되는 원본 이미지상의 위치 즉, 피쳐 위치가 특정될 필요가 있다. 이러한 피쳐 위치가 특정되어야 이미지의 매핑이 수행될 수 있기 때문이다.
이처럼 뉴럴 네트워크 피쳐의 피쳐 위치를 특정하기 위한 기술적 사상은 도 16을 참조하여 설명하도록 한다.
도 16은 본 발명의 실시 예에 따른 뉴럴 네트워크 피쳐에 대응되는 피쳐 위치를 설명하기 위한 도면이다.
도 16에 도시된 바와 같이 소정의 레이어에서 뉴럴 네트워크 피쳐(f)가 추출될 수 있다. 이러한 경우 뉴럴 네트워크 피쳐(f)는 이전 소정의 레이어(L-Layer)에서는 소정의 대응영역(Sl)과 대응되며, 이러한 대응영역(Sl)에 포함된 픽셀 정보들이 미리 정의된 컨벌루션 및 풀링 함수에 의해 뉴럴 네트워크 피쳐(f)로 매핑될 수 있다.
이때, L-레이어에서의 뉴럴 네트워크 피쳐(f)의 대응영역(Sl) 내의 소정의 위치(예컨대, 중앙 또는 특정 꼭지점 등)가 뉴럴 네트워크 피쳐(f)의 L-레이어에서의 대응위치(Psl)로 정의될 수 있다.
그러면 마찬가지 방식으로 L-레이어에서의 대응위치(PSl)에 대응되는 원본 이미지 상에서의 대응영역(So)가 원본 이미지와 L-레이어 사이의 컨벌루션 및 풀링 관계에 의해 특정될 수 있고, 대응영역(So) 내의 소정의 위치(예컨대, 중앙)가 뉴럴 네트워크 피쳐(f)의 원본 이미지상에서의 대응위치 즉, 피쳐 위치로 특정될 수 있다.
이러한 방식으로 뉴럴 네트워크 피쳐들 별로 피쳐 위치가 결정되면, 각각의 피쳐 위치가 이미지 매핑을 위한 피쳐 포인트가 될 수 있다.
그러면 매핑모듈(1140)은 매핑 이미지들 간의 서로 대응되는 피쳐 위치들을 이용하여 이미지 매핑을 수행할 수 있다.
두 이미지들간의 이미지 매핑은, 두 이미지들간의 상대적인 위치관계를 특정하는 매핑의 경우에는 두 이미지 각각에서 서로 대응되는 포인트들을 이용하여 수행될 수 있다. 이때 서로 대응되는 포인트들은 두 이미지 각각에서 추출된 뉴럴 네트워크 피쳐의 피쳐 포인트일 수 있으며, 서로 대응되는 피쳐 포인트들은 벡터 서치 엔진(1150)을 통해 용이하게 탐색될 수 있다.
이때, 벡터 서치 엔진(1150)은 도 3을 참조하여 전술한 하이브리드 이미지 탐색 모듈을 포함할 수 있다. 예를 들어, 벡터 서치 엔진(1150)은 3D 투어에 포함된 복수의 파노라마 이미지와, 사용자로부터 수신한 퍼스펙티브 이미지 각각에 대한 글로벌 피쳐를 산출한다, 이어서, 벡터 서치 엔진(1150)은 산출된 글로벌 피쳐들을 이용하여, 퍼스펙티브 이미지와 가장 유사한 파노라마 이미지를 선정할 수 있다.
이어서, 피쳐 추출기(1130)는 선정된 파노라마 이미지의 로컬 피쳐와, 사용자로부터 수신한 퍼스펙티브 이미지 각각의 로컬피쳐를 산출한다. 이때, 선정된 파노라마 이미지와 퍼스펙티브 이미지는 매핑 대상 이미지가 될 수 있다.
이어서, 매핑모듈(1140)은 매핑 대상 이미지의 상대적인 위치관계를 산출한다.
서로 대응되는 포인트(공간상에서 동일한 위치를 나타내는)들이 각각 서로 다른 이미지에 존재하는 경우 이들 두 이미지의 상대적인 위치관계를 특정하기 위한 기술적 사상은 공지된 바 있다.
예컨대, 에피폴라 지오메트리(Epipolar Geometry)를 이용하여 상대적인 위치관계를 판단할 수 있음은 본 발명의 기술분야의 평균적 전문가에게 용이하게 추론될 수 있다. 이외에도 다양한 방식이 가능할 수도 있다.
다른 실시 예에 의하면, 두 이미지들 즉, 매핑 이미지들 간의 매핑이 두 이미지를 정합하는 경우에는, 두 이미지를 정합하기 위한 변환행렬을 특정하는 것이 매핑을 수행하는 것일 수도 있다.
*이러한 변환행렬을 특정하기 위해서는 서로 대응되는 피쳐 3개 쌍을 추출하고 추출된 3개 쌍이 변환될 수 있도록 변환 행렬이 정의될 수 있음은 널리 알려진 바와 같다. 그리로 이러한 피쳐 3개 쌍은 모든 피쳐들이 가장 작은 에러로 변환될 수 있도록 탐색될 수 있으며, 랜색(RANSAC) 등의 알고리즘이 이용될 수 있음은 물론이다.
도 17은 본 발명의 실시 예에 따른 실내 위치 측위 방법에서 이미지들을 매핑하는 방법을 설명하기 위한 순서도다.
*도 17을 참조하면, 본 발명의 기술적 사상에 따른 서버(1100)은 서로 매핑 이미지로 판단된 제1 이미지(예를 들어, 선정된 파노라마 이미지)와 제2 이미지(예를 들어, 사용자가 제공한 퍼스펙티브 이미지)를 매핑하기 위해 제1 이미지로부터 추출된 피쳐들에 대응되는 피쳐 위치들을 특정할 수 있다(S210). 이를 위해, 서버(1100)는 도 16에 도시된 바와 같은 방식을 이용할 수 있다.
이어서, 서버(1100)는 제2 이미지로부터 추출된 피쳐들에 대응되는 피쳐 위치들을 특정할 수 있다(S220).
이어서, 서버(1100)은 각각의 이미지들의 피쳐 위치들에 기초하여 에피폴라 지오메트리(Epipolar Geometry) 알고리즘을 통한 상대적인 위치관계를 판단하거나, 이미지 연결을 위한 변환행렬을 소정의 방식(예컨대, RANSAC 알고리즘)을 통해 결정할 수 있다(S230).
이를 통해, 서버(1100)는 선정된 파노라마 이미지와 사용자로부터 수신한 퍼스펙티브 이미지 사이의 위치 관계를 산출할 수 있다.
따라서, 서버(1100)는 퍼스펙티브 이미지를 촬영한 사용자 단말기(1200)의 실내 위치를 계산할 수 있다. 계산된 사용자 단말기(1200)의 실내 위치는 사용자 단말기(1200)에 전달될 수 있으며, 실내 네비게이션 기능을 제공하는데 있어 정확한 3D 투어를 사용자 단말기(1200)에 제공할 수 있다.
본 발명의 실시 예에 따른 실내 위치 측위 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 하드 디스크, 플로피 디스크, 광 데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
1100: 3D 투어 제공 서버
1200: 사용자 단말기
1300: 360도 카메라
1200: 사용자 단말기
1300: 360도 카메라
Claims (10)
- 사용자 단말기와 연계되어 동작하는 3D 투어 제공 서버에서 수행되는 실내 위치 측위 방법에 있어서,
복수의 파노라마 이미지를 포함하는 3D 투어를 불러오는 단계;
상기 사용자 단말기에 구비된 카메라로 촬영한 제1 퍼스펙티브 이미지를 수신하는 단계;
상기 제1 퍼스펙티브 이미지와, 상기 3D 투어에 포함된 상기 복수의 파노라마 이미지 각각에 대한 글로벌 피쳐를 산출하는 단계;
산출된 상기 글로벌 피쳐를 이용하여, 상기 제1 퍼스펙티브 이미지와 가장 유사한 파노라마 이미지를 선정하는 단계;
상기 선정된 파노라마 이미지 및 상기 제1 퍼스펙티브 이미지에 포함된 특징점을 이용하여, 상기 3D 투어 상에서 상기 카메라의 위치에 대응되는 실내 위치를 계산하는 단계; 및
상기 계산된 실내 위치를 상기 사용자 단말기에 제공하는 단계를 포함하고,
상기 가장 유사한 파노라마 이미지를 선정하는 단계는,
상기 3D 투어에 포함된 특정 파노라마 이미지를 기초로 복수의 제2 퍼스펙티브 이미지를 생성하는 단계;
상기 복수의 제2 퍼스펙티브 이미지와 상기 제1 퍼스펙티브 이미지 간의 유사도를 계산하는 단계; 및
기 설정된 기준치 이상으로 유사한 제2 퍼스펙티브 이미지의 개수를 기준으로 상기 가장 유사한 파노라마 이미지를 선정하는 단계를 포함하는,
실내 위치 측위 방법. - 제1 항에 있어서,
상기 글로벌 피쳐를 산출하는 단계는,
상기 특정 파노라마 이미지를 상기 복수의 제2 퍼스펙티브 이미지로 변환하는 (a) 단계와,
상기 변환된 복수의 제2 퍼스펙티브 이미지에 대한 각각의 글로벌 피쳐 및 상기 파노라마 이미지에 대한 글로벌 피쳐를 산출하는 (b) 단계를 포함하는
실내 위치 측위 방법. - 제2 항에 있어서,
상기 (a) 단계는,
상기 특정 파노라마 이미지를 구 좌표계(spherical coordinate)에 투영시켜 복수 개의 구역으로 구분하고,
상기 구분된 각 구역에 대응되는 이미지를 2차원 이미지인 상기 제2 퍼스펙티브 이미지로 변환하되,
상기 복수의 제2 퍼스펙티브 이미지는 상호 간에 일부 오버랩되는 영역을 포함하는
실내 위치 측위 방법. - 제2 항에 있어서,
상기 (b) 단계는,
동일한 장소를 촬영한 이미지에 대하여 동일한 글로벌 피쳐가 출력되도록 사전 학습된 딥러닝 모듈을 이용하여, 상기 글로벌 피쳐를 산출하되,
상기 딥러닝 모듈은,
하나 이상의 뉴럴 네트워크 모듈과,
상기 뉴럴 네트워크 모듈에서 출력된 값의 유사도를 산출하는 유사도 판단 모듈과,
산출된 상기 유사도에 대하여 가중치를 적용하고, 이를 기초로 결과값을 출력하는 가중치 모듈과,
상기 가중치 모듈에서 서로 다른 시점에 출력된 결과값 사이의 차이값을 도출하고, 도출된 상기 차이값을 상기 뉴럴 네트워크 모듈에 피드백으로 제공하는 피드백 모듈을 포함하는
실내 위치 측위 방법.
- 제4 항에 있어서,
상기 뉴럴 네트워크 모듈은,
상기 피드백 모듈로부터 수신한 피드백 값을 기초로, 상기 뉴럴 네트워크 모듈에 포함된 뉴럴 네트워크에 적용되는 가중치를 조절하는
실내 위치 측위 방법.
- 제4 항에 있어서,
상기 유사도 판단 모듈은,
상기 파노라마 이미지에 대한 제1 글로벌 피쳐, 상기 제2 퍼스펙티브 이미지에 대한 제2 글로벌 피쳐, 비교군 이미지에 대한 제3 글로벌 피쳐, 및 상기 파노라마 이미지에 대한 기준값에 대응되는 제4 글로벌 피쳐를 수신하고,
상기 제1 내지 제4 글로벌 피쳐 간의 유사도를, 코사인 디스턴스(cosine distance) 함수를 이용하여 산출하는
실내 위치 측위 방법.
- 제1 항에 있어서,
상기 제1 퍼스펙티브 이미지와, 상기 복수의 파노라마 이미지에 대한 분류정보(class), 위치정보(position), 캡션(caption), 및 세그멘테이션(segmentation)을 도출하는 단계를 더 포함하되,
상기 가장 유사한 파노라마 이미지를 선정하는 단계는,
도출된 상기 글로벌 피쳐, 상기 분류정보, 상기 위치정보, 상기 캡션, 및 상기 세그멘테이션을 기초로, 상기 파노라마 이미지와 상기 제1 퍼스펙티브 이미지 사이의 각 파라미터에 대한 유사도를 계산하는 (c1) 단계와,
상기 각 파라미터에 대한 유사도를 기초로 순위를 산출하고, 상기 순위가 가장 높은 파노라마 이미지를 선정하는 (d) 단계를 포함하는
실내 위치 측위 방법. - 제7 항에 있어서,
상기 기 설정된 기준치 이상으로 유사한 제2 퍼스펙티브 이미지의 개수를 기준으로 상기 가장 유사한 파노라마 이미지를 선정하는 단계는,
기 설정된 기준치 이상으로 유사한 상기 제2 퍼스펙티브 이미지의 이미지 개수를 각 파노라마 이미지 별로 카운트하여, 상기 카운트된 숫자를 기초로 각 파노라마 이미지의 가중치를 결정하는 (c2) 단계를 더 포함하는
실내 위치 측위 방법. - 제8 항에 있어서,
상기 (d) 단계는,
도출된 상기 글로벌 피쳐, 상기 분류정보, 상기 위치정보, 상기 캡션, 및 상기 세그멘테이션에 대한 상기 파노라마 이미지와 상기 제1 퍼스펙티브 이미지 사이의 유사도와, 상기 파노라마 이미지에 대한 가중치를 이용하여, 상기 제1 퍼스펙티브 이미지와 유사도가 가장 높은 파노라마 이미지를 선정하는 것을 포함하는
실내 위치 측위 방법.
- 제1 항에 있어서,
상기 실내 위치를 계산하는 단계는,
상기 산출된 파노라마 이미지에 대한 로컬 피쳐를 산출하는 단계와,
상기 퍼스펙티브 이미지에 대한 로컬 피쳐를 산출하는 단계와,
상기 산출된 로컬피쳐들을 기초로 3D 투어 상의 카메라 위치에 해당하는 실내 위치를 계산하는 단계를 포함하는
실내 위치 측위 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200086328 | 2020-07-13 | ||
KR20200086328 | 2020-07-13 | ||
KR1020200139152A KR102495005B1 (ko) | 2020-07-13 | 2020-10-26 | 딥러닝을 이용한 실내 위치 측위 방법 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200139152A Division KR102495005B1 (ko) | 2020-07-13 | 2020-10-26 | 딥러닝을 이용한 실내 위치 측위 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20230020479A KR20230020479A (ko) | 2023-02-10 |
KR102640148B1 true KR102640148B1 (ko) | 2024-02-27 |
Family
ID=80052999
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200139152A KR102495005B1 (ko) | 2020-07-13 | 2020-10-26 | 딥러닝을 이용한 실내 위치 측위 방법 |
KR1020230011499A KR102640148B1 (ko) | 2020-07-13 | 2023-01-30 | 딥러닝을 이용한 실내 위치 측위 방법 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200139152A KR102495005B1 (ko) | 2020-07-13 | 2020-10-26 | 딥러닝을 이용한 실내 위치 측위 방법 |
Country Status (1)
Country | Link |
---|---|
KR (2) | KR102495005B1 (ko) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200046437A (ko) * | 2018-10-24 | 2020-05-07 | 삼성전자주식회사 | 영상 및 맵 데이터 기반 측위 방법 및 장치 |
-
2020
- 2020-10-26 KR KR1020200139152A patent/KR102495005B1/ko active IP Right Grant
-
2023
- 2023-01-30 KR KR1020230011499A patent/KR102640148B1/ko active IP Right Grant
Non-Patent Citations (1)
Title |
---|
Bingyi Cao et al., "Unifying Deep Local and Global Features for Image Search", Computer Vision and Pattern Recognition, 2020.03.10.* |
Also Published As
Publication number | Publication date |
---|---|
KR20230020479A (ko) | 2023-02-10 |
KR102495005B1 (ko) | 2023-02-06 |
KR20220008192A (ko) | 2022-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12051223B2 (en) | Positioning method, electronic device, and storage medium | |
Laskar et al. | Camera relocalization by computing pairwise relative poses using convolutional neural network | |
Gronat et al. | Learning and calibrating per-location classifiers for visual place recognition | |
JP6798183B2 (ja) | 画像解析装置、画像解析方法およびプログラム | |
JP7439153B2 (ja) | 全方位場所認識のためのリフトされたセマンティックグラフ埋め込み | |
KR20220043847A (ko) | 객체 포즈 추정 방법, 장치, 전자 장치 및 저장 매체 | |
US11961256B2 (en) | Method for indoor localization using deep learning | |
KR102449031B1 (ko) | 딥러닝을 이용한 실내 위치 측위 방법 | |
KR20220024736A (ko) | 시각적 포지셔닝 방법 및 관련 장치 | |
JP7430254B2 (ja) | 場所認識のための視覚的オブジェクトインスタンス記述子 | |
WO2021092600A2 (en) | Pose-over-parts network for multi-person pose estimation | |
CN115063526A (zh) | 二维图像的三维重建方法、系统、终端设备及存储介质 | |
EP3400537B1 (en) | Method for navigating through a set of images | |
KR20230049969A (ko) | 글로벌 측위 장치 및 방법 | |
CN117557754A (zh) | 点云语义分割方法、终端设备以及计算机存储介质 | |
KR102640148B1 (ko) | 딥러닝을 이용한 실내 위치 측위 방법 | |
KR102299902B1 (ko) | 증강현실을 제공하기 위한 장치 및 이를 위한 방법 | |
Zhang et al. | Lifted semantic graph embedding for omnidirectional place recognition | |
JP2023043341A (ja) | 推定モデル生成プログラム、推定モデル生成方法および情報処理装置 | |
JP2018124740A (ja) | 画像検索システム、画像検索方法及び画像検索プログラム | |
KR102384177B1 (ko) | 전방위 화상정보 기반의 자동위상 매핑 처리 방법 및 그 시스템 | |
KR102617222B1 (ko) | 전방위 화상정보 기반의 자동위상 매핑 처리 방법 및 그 시스템 | |
Yang et al. | RnR: retrieval and reprojection learning model for camera localization | |
WO2024216994A1 (zh) | 基于云技术的定位方法及装置 | |
CN118823080A (zh) | 基于云技术的定位方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |