KR20210003937A - 딥 러닝 시스템 - Google Patents
딥 러닝 시스템 Download PDFInfo
- Publication number
- KR20210003937A KR20210003937A KR1020207037010A KR20207037010A KR20210003937A KR 20210003937 A KR20210003937 A KR 20210003937A KR 1020207037010 A KR1020207037010 A KR 1020207037010A KR 20207037010 A KR20207037010 A KR 20207037010A KR 20210003937 A KR20210003937 A KR 20210003937A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- machine learning
- network
- neural network
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- 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
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- 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
- G06T19/003—Navigation within 3D models or images
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- 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/10—Image acquisition modality
- G06T2207/10024—Color image
-
- 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/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
-
- 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]
-
- 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/30—Subject of image; Context of image processing
- G06T2207/30196—Human being; Person
-
- 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/30—Subject of image; Context of image processing
- G06T2207/30248—Vehicle exterior or interior
- G06T2207/30252—Vehicle exterior; Vicinity of vehicle
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Computer Hardware Design (AREA)
- Image Generation (AREA)
- Image Analysis (AREA)
- Processing Or Creating Images (AREA)
- Image Processing (AREA)
- Medical Informatics (AREA)
Abstract
머신 학습 모델의 다양한 양태를 강화하기 위해 머신 학습 시스템이 제공된다. 일부 양태에서, 객체의 상당히 사실적인 사진 3차원(3D) 그래픽 모델이 액세스되고, 3D 그래픽 모드의 훈련 이미지 세트가 생성되고, 생성된 훈련 이미지 세트는 불완전성을 추가하고 훈련 이미지의 사실적인 사진 품질을 저하시킨다. 훈련 이미지 세트는 인공 신경망을 훈련시키기 위한 훈련 데이터로서 제공된다.
Description
관련 출원
본 출원은, 그 전체내용이 참조에 의해 본 명세서에 포함되는, 2018년 5월 23일 출원된 미국 가출원 제62/675,601호의 우선권 혜택을 주장한다.
본 개시내용은 대체로 컴퓨터 시스템 분야, 특히, 머신 학습 시스템에 관한 것이다.
컴퓨터 비전 및 그래픽의 세계는, MagicLeapTM, MicrosoftTM HoloLensTM, OculusTM RiftTM의 제품 등의 증강 현실(AR), 가상 현실(VR) 및 혼합 현실(MR) 제품, 및 ValveTM 및 HTCTM의 제품 등의 기타의 VR 시스템의 출현과 함께 빠르게 수렴되고 있다. 이러한 시스템의 기존 접근 방식은, 병렬로 운용되는 별개의 그래픽 처리 유닛(GPU)과 컴퓨터 비전 서브시스템을 이용하는 것이다. 이들 병렬 시스템은, 프로세서 어레이 및/또는 프로그램가능한 하드웨어 가속기에서 실행되는 소프트웨어에서 구현된 컴퓨터 비전 파이프라인과 병렬로 기존 GPU로부터 어셈블될 수 있다.
개시된 주제의 다양한 목적, 피처, 및 이점들은, 유사한 참조 번호가 유사한 요소를 식별하는 이하의 도면들과 연계하여 개시된 주제의 이하의 상세한 설명을 참조하면 더욱 충분히 이해될 수 있다. 첨부된 도면들은 개략도이며 축척비율대로 그려진 것은 아니다. 명료성을 위해, 모든 도면에서 모든 컴포넌트가 라벨링되지는 않았다. 또한, 본 기술분야의 통상의 기술자가 개시된 주제를 이해할 수 있도록 하기 위해 예시가 필요한 것이 아닌 경우에는 개시된 주제의 각각의 실시예의 모든 컴포넌트가 도시된 것은 아니다.
도 1은 종래의 증강 또는 혼합 현실 렌더링 시스템을 나타낸다;
도 2는 일부 실시예에 따른 복셀-기반의 증강 또는 혼합 현실 렌더링 시스템을 나타낸다;
도 3은 일부 실시예에 따른 밀집 체적 표현과 저밀도 체적 표현 사이의 차이를 나타낸다;
도 4는 일부 실시예에 따른 장면의 복합 뷰를 나타낸다;
도 5는 일부 실시예에 따른 예시적인 요소 트리 구조의 상세 레벨을 나타낸다;
도 6은 일부 실시예에 따른 본 출원의 데이터 구조 및 복셀 데이터를 이용할 수 있는 응용을 나타낸다;
도 7은 일부 실시예에 따른 3D 숫자를 인식하는데 이용되는 예시적인 네트워크를 나타낸다;
도 8은 일부 실시예에 따른 묵시적 상세 레벨을 이용하여 동일한 데이터 구조에 관해 수행되는 복수의 분류를 나타낸다;
도 9는 일부 실시예에 따른 2D 콘볼루션 신경망에 의한 연산 제거를 나타낸다;
도 10은 일부 실시예에 따른 예시적인 테스트 이미지의 분석으로부터의 실험 결과를 나타낸다;
도 11은 일부 실시예에 따른 제거 연산(culling operation)을 위한 하드웨어를 나타낸다;
도 12는 일부 실시예에 따른 제거 연산을 위한 하드웨어의 개선을 나타낸다;
도 13은 일부 실시예에 따른 하드웨어를 나타낸다;
도 14는 적어도 일부 실시예에 따른 예시적인 훈련 세트 생성기를 채용한 예시적인 시스템을 나타낸다;
도 15는 적어도 일부 실시예에 따른 합성 훈련 데이터의 예시적인 생성을 나타낸다;
도 16은 적어도 일부 실시예에 따른 예시적인 Siamese 네트워크를 나타낸다;
도 17은 적어도 일부 실시예에 따른 자율 비교를 수행하기 위한 Siamese 네트워크의 예시적인 이용을 나타낸다;
도 18은 적어도 일부 실시예에 따른 포인트 클라우드의 예시적인 복셀화를 나타낸다;
도 19는 적어도 일부 실시예에 따른 예시적인 머신 학습 모델의 간소화된 블록도이다;
도 20은 적어도 일부 실시예에 따른 모델의 예시적인 훈련의 양태를 나타내는 간소화된 블록도이다;
도 21은 적어도 일부 실시예에 따른 네비게이션을 위한 3D 맵을 생성하기 위해 신경망을 이용하는 예시적인 로봇을 나타낸다;
도 22는 적어도 일부 실시예에 따른 관성 측정 데이터와 함께 이용하기 위한 예시적인 머신 학습 모델을 나타내는 블록도이다;
도 23은 적어도 일부 실시예에 따른 이미지 데이터와 함께 이용하기 위한 예시적인 머신 학습 모델을 나타내는 블록도이다;
도 24는 도 22 및 도 23의 예에서 모델의 양태를 결합하는 예시적인 머신 학습 모델을 나타내는 블록도이다;
도 25a 및 도 25b는 도 24의 예시적인 머신 학습 모델과 유사한 머신 학습 모델의 결과를 나타내는 그래프이다;
도 26은 적어도 일부 실시예에 따른 예시적인 신경망 최적화기를 포함하는 예시적인 시스템을 나타낸다;
도 27은 적어도 일부 실시예에 따른 신경망 모델의 예시적인 최적화를 나타내는 블록도이다;
도 28은 예시적인 신경망 모델의 최적화 동안 생성되고 이용되는 예시적인 결과를 나타내는 표이다;
도 29는 예시적인 신경망 모델의 최적화 동안 생성되고 이용된 결과를 보여주는 그래프를 나타낸다;
도 30a는 적어도 일부 실시예에 따른 하이브리드 신경망 프루닝(pruning)의 예를 나타내는 간소화된 블록도이다;
도 30b는 적어도 일부 실시예에 따른 신경망의 예시적인 프루닝을 나타내는 간소화된 흐름도이다;
도 31은 적어도 일부 실시예에 따른 신경망의 프루닝와 관련하여 수행되는 예시적인 가중치 양자화를 나타내는 간소화된 블록도이다;
도 32는 예시적인 신경망 프루닝 기술의 결과를 비교하는 표이다;
도 33a 내지 도 33f는 적어도 일부 실시예에 따른 머신 학습과 연관된 예시적인 컴퓨터-구현된 기술의 간소화된 흐름도이다;
도 34는 일부 실시예에 따른 예시적인 다중-슬롯 벡터 프로세서를 도시한다;
도 35는 일부 실시예에 따른 예시적인 체적 가속 하드웨어를 나타낸다;
도 36은 일부 실시예에 따른 복셀 큐브의 조직화를 나타낸다;
도 37은 일부 실시예에 따른 2-레벨 저밀도 복셀 트리(sparse voxel tree)를 나타낸다;
도 38은 일부 실시예에 따른 2-레벨 저밀도 복셀 트리를 나타낸다;
도 39는 일부 실시예에 따른 예시적인 복셀 데이터의 저장을 나타낸다;
도 40은 일부 실시예에 따른 예시적인 체적 데이터 구조 내로의 복셀의 삽입을 나타낸다;
도 41은 일부 실시예에 따른 예시적인 3D 체적 객체의 투사를 나타낸다;
도 42는 예시적인 체적 데이터 구조를 포함하는 예시적인 연산을 나타낸다;
도 43은 일부 실시예에 따른 간소화된 맵을 생성하기 위해 투사를 이용하는 것을 도시한다;
도 44는 일부 실시예에 따른 임베디드 디바이스로부터 예시적인 체적 3D 및/또는 간단한 2D 측정의 예시적인 총계를 나타낸다;
도 45는 일부 실시예에 따른 2D 2x2 비트맵 상의 2D 경로 찾기의 예시적인 가속을 도시한다;
도 46은 일부 실시예에 따른 예시적인 체적 데이터 구조를 이용한 충돌 검출의 예시적인 가속을 도시한다;
도 47은 적어도 일부 실시예에 따른 디바이스들을 갖는 예시적인 네트워크의 간소화된 블록도이다;
도 48은 적어도 일부 실시예에 따른 예시적인 포그(fog) 또는 클라우드(cloud) 컴퓨팅 네트워크의 간소화된 블록도이다;
도 49는 적어도 일부 실시예에 따른 예시적인 디바이스들을 포함하는 시스템의 간소화된 블록도이다;
도 50은 적어도 일부 실시예에 따른 예시적인 처리 디바이스의 간소화된 블록도이다;
도 51은 적어도 일부 실시예에 따른 예시적인 프로세서의 블록도이다;
도 52는 적어도 일부 실시예에 따른 예시적인 컴퓨팅 시스템의 블록도이다.
도 1은 종래의 증강 또는 혼합 현실 렌더링 시스템을 나타낸다;
도 2는 일부 실시예에 따른 복셀-기반의 증강 또는 혼합 현실 렌더링 시스템을 나타낸다;
도 3은 일부 실시예에 따른 밀집 체적 표현과 저밀도 체적 표현 사이의 차이를 나타낸다;
도 4는 일부 실시예에 따른 장면의 복합 뷰를 나타낸다;
도 5는 일부 실시예에 따른 예시적인 요소 트리 구조의 상세 레벨을 나타낸다;
도 6은 일부 실시예에 따른 본 출원의 데이터 구조 및 복셀 데이터를 이용할 수 있는 응용을 나타낸다;
도 7은 일부 실시예에 따른 3D 숫자를 인식하는데 이용되는 예시적인 네트워크를 나타낸다;
도 8은 일부 실시예에 따른 묵시적 상세 레벨을 이용하여 동일한 데이터 구조에 관해 수행되는 복수의 분류를 나타낸다;
도 9는 일부 실시예에 따른 2D 콘볼루션 신경망에 의한 연산 제거를 나타낸다;
도 10은 일부 실시예에 따른 예시적인 테스트 이미지의 분석으로부터의 실험 결과를 나타낸다;
도 11은 일부 실시예에 따른 제거 연산(culling operation)을 위한 하드웨어를 나타낸다;
도 12는 일부 실시예에 따른 제거 연산을 위한 하드웨어의 개선을 나타낸다;
도 13은 일부 실시예에 따른 하드웨어를 나타낸다;
도 14는 적어도 일부 실시예에 따른 예시적인 훈련 세트 생성기를 채용한 예시적인 시스템을 나타낸다;
도 15는 적어도 일부 실시예에 따른 합성 훈련 데이터의 예시적인 생성을 나타낸다;
도 16은 적어도 일부 실시예에 따른 예시적인 Siamese 네트워크를 나타낸다;
도 17은 적어도 일부 실시예에 따른 자율 비교를 수행하기 위한 Siamese 네트워크의 예시적인 이용을 나타낸다;
도 18은 적어도 일부 실시예에 따른 포인트 클라우드의 예시적인 복셀화를 나타낸다;
도 19는 적어도 일부 실시예에 따른 예시적인 머신 학습 모델의 간소화된 블록도이다;
도 20은 적어도 일부 실시예에 따른 모델의 예시적인 훈련의 양태를 나타내는 간소화된 블록도이다;
도 21은 적어도 일부 실시예에 따른 네비게이션을 위한 3D 맵을 생성하기 위해 신경망을 이용하는 예시적인 로봇을 나타낸다;
도 22는 적어도 일부 실시예에 따른 관성 측정 데이터와 함께 이용하기 위한 예시적인 머신 학습 모델을 나타내는 블록도이다;
도 23은 적어도 일부 실시예에 따른 이미지 데이터와 함께 이용하기 위한 예시적인 머신 학습 모델을 나타내는 블록도이다;
도 24는 도 22 및 도 23의 예에서 모델의 양태를 결합하는 예시적인 머신 학습 모델을 나타내는 블록도이다;
도 25a 및 도 25b는 도 24의 예시적인 머신 학습 모델과 유사한 머신 학습 모델의 결과를 나타내는 그래프이다;
도 26은 적어도 일부 실시예에 따른 예시적인 신경망 최적화기를 포함하는 예시적인 시스템을 나타낸다;
도 27은 적어도 일부 실시예에 따른 신경망 모델의 예시적인 최적화를 나타내는 블록도이다;
도 28은 예시적인 신경망 모델의 최적화 동안 생성되고 이용되는 예시적인 결과를 나타내는 표이다;
도 29는 예시적인 신경망 모델의 최적화 동안 생성되고 이용된 결과를 보여주는 그래프를 나타낸다;
도 30a는 적어도 일부 실시예에 따른 하이브리드 신경망 프루닝(pruning)의 예를 나타내는 간소화된 블록도이다;
도 30b는 적어도 일부 실시예에 따른 신경망의 예시적인 프루닝을 나타내는 간소화된 흐름도이다;
도 31은 적어도 일부 실시예에 따른 신경망의 프루닝와 관련하여 수행되는 예시적인 가중치 양자화를 나타내는 간소화된 블록도이다;
도 32는 예시적인 신경망 프루닝 기술의 결과를 비교하는 표이다;
도 33a 내지 도 33f는 적어도 일부 실시예에 따른 머신 학습과 연관된 예시적인 컴퓨터-구현된 기술의 간소화된 흐름도이다;
도 34는 일부 실시예에 따른 예시적인 다중-슬롯 벡터 프로세서를 도시한다;
도 35는 일부 실시예에 따른 예시적인 체적 가속 하드웨어를 나타낸다;
도 36은 일부 실시예에 따른 복셀 큐브의 조직화를 나타낸다;
도 37은 일부 실시예에 따른 2-레벨 저밀도 복셀 트리(sparse voxel tree)를 나타낸다;
도 38은 일부 실시예에 따른 2-레벨 저밀도 복셀 트리를 나타낸다;
도 39는 일부 실시예에 따른 예시적인 복셀 데이터의 저장을 나타낸다;
도 40은 일부 실시예에 따른 예시적인 체적 데이터 구조 내로의 복셀의 삽입을 나타낸다;
도 41은 일부 실시예에 따른 예시적인 3D 체적 객체의 투사를 나타낸다;
도 42는 예시적인 체적 데이터 구조를 포함하는 예시적인 연산을 나타낸다;
도 43은 일부 실시예에 따른 간소화된 맵을 생성하기 위해 투사를 이용하는 것을 도시한다;
도 44는 일부 실시예에 따른 임베디드 디바이스로부터 예시적인 체적 3D 및/또는 간단한 2D 측정의 예시적인 총계를 나타낸다;
도 45는 일부 실시예에 따른 2D 2x2 비트맵 상의 2D 경로 찾기의 예시적인 가속을 도시한다;
도 46은 일부 실시예에 따른 예시적인 체적 데이터 구조를 이용한 충돌 검출의 예시적인 가속을 도시한다;
도 47은 적어도 일부 실시예에 따른 디바이스들을 갖는 예시적인 네트워크의 간소화된 블록도이다;
도 48은 적어도 일부 실시예에 따른 예시적인 포그(fog) 또는 클라우드(cloud) 컴퓨팅 네트워크의 간소화된 블록도이다;
도 49는 적어도 일부 실시예에 따른 예시적인 디바이스들을 포함하는 시스템의 간소화된 블록도이다;
도 50은 적어도 일부 실시예에 따른 예시적인 처리 디바이스의 간소화된 블록도이다;
도 51은 적어도 일부 실시예에 따른 예시적인 프로세서의 블록도이다;
도 52는 적어도 일부 실시예에 따른 예시적인 컴퓨팅 시스템의 블록도이다.
이하의 설명에서, 개시된 주제의 철저한 이해를 제공하기 위하여, 개시된 주제의 시스템 및 방법과, 이러한 시스템 및 방법이 동작할 수 있는 환경 등에 관하여 수 많은 특정한 상세사항이 개시된다. 그러나, 본 기술분야의 통상의 기술자라면, 개시된 주제가 이러한 특정한 상세사항 없이도 실시될 수 있고, 본 기술분야의 널리 공지되어 있는 소정의 피처들은 개시된 주제의 복잡성을 피하기 위하여 상세히 설명되지 않는다는 것이 명백할 것이다. 또한, 이하에 제공되는 실시예들은 예시적인 것이며, 개시된 주제의 범위 내에 있는 다른 시스템 및 방법들이 있다는 것이 이해될 것이다.
3차원 공간과 지오메트리의 체적을 나타내는 데이터 모델을 이용할 수 있는, 증강 현실, 가상 현실, 혼합 현실, 자율 디바이스, 및 로봇에 기초하고 이를 통합하는 다양한 기술이 등장하고 있다. 이러한 3D 또는 체적 데이터를 이용하는 다양한 실제 및 가상 환경에 대한 묘사는, 전통적으로 일부 컴퓨팅 시스템이 바람직한 방식으로 처리하는데 어려움을 겪고 있는 대규모 데이터세트를 포함했다. 또한 드론, 착용형 디바이스, 가상 현실 시스템 등의 디바이스가 점점 작아짐에 따라, 이러한 디바이스의 메모리 및 처리 자원도 제약될 수 있다. 한 예로서, AR/VR/MR 응용은 지원 하드웨어를 이용하여 생성된 그래픽 프리젠테이션에 대해 높은 프레임 레이트를 요구할 수 있다. 그러나, 일부 응용에서, 이러한 하드웨어의 GPU 및 컴퓨터 비전 서브시스템은, 원하는 결과를 생성하기 위해(예를 들어, 다른 예시적인 목표들 중 특히, 신뢰할 수 있는 결과를 생성하고 과도한 레이턴시로 인한 사용자의 멀미를 방지하는 프레임 레이트로 신뢰할 수 있는 그래픽 장면을 생성하기 위해) 최대 130 fps(7 msec) 등의 높은 레이트로 데이터(예를 들어, 3D 데이터)를 처리해야 할 필요가 있을 수 있다. 추가적 응용은, 다른 예시적인 문제들 중 특히, 대응하는 시스템의 처리, 메모리, 전력, 응용 요구사항의 제약을 충족하면서 대용량을 기술하는 데이터를 만족스럽게 처리해야 하는 경우에도 유사하게 애로사항이 있을 수 있다.
일부 구현에서, 컴퓨팅 시스템에는, 포맷에 따라 정의된, 저밀도 체적 데이터를 생성 및/또는 이용하기 위한 로직이 제공될 수 있다. 예를 들어, 정의된 체적 데이터 구조는, 다양한 시스템 및 응용에서 컴퓨터 비전과 3D 렌더링을 통합하기 위해 제공될 수 있다. 객체의 체적 표현은, 예를 들어 입체 카메라 또는 깊이 카메라 등의, 광학 센서를 이용하여 캡처될 수 있다. 객체의 체적 표현은 복수의 복셀을 포함할 수 있다. 객체의 목표 해상도를 획득하기 위해 대응하는 체적 표현이 반복적으로 세분화될 수 있도록 개선된 체적 데이터 구조가 정의될 수 있다. 세분화 동안, 하나 이상의 복셀에 포함될 수 있는, 체적 표현에서의 빈 공간은, 체적 표현(및 지원 연산)으로부터 제거될 수 있다. 빈 공간은, 객체의 기하학적 속성을 포함하지 않는 체적 표현의 영역일 수 있다.
따라서, 개선된 체적 데이터 구조에서, 대응하는 체적 내의 개개의 복셀은 "(대응하는 체적 공간 내에 존재하는 일부 지오메트리에 의해) "점유됨" 또는 "비어 있음"(대응하는 체적이 빈 공간으로 구성되어 있음을 나타냄)으로 태그될 수 있다. 이러한 태그는, 추가적으로, 그 대응하는 하위체적들 중 하나 이상도 역시 점유(예를 들어, 부모 또는 상위레벨 복셀이 점유된 것으로 태그된 경우)되어 있거나, 그 모든 하위체적이 빈 공간임(즉, 부모 또는 상위 레벨의 복셀이 비어 있음)을 나타내는 것으로서 해석될 수 있다. 일부 구현에서, 복셀을 비어 있는 것으로 태그하는 것은, 복셀 및/또는 그 대응하는 하위체적 복셀이, 대응하는 체적 표현을 생성하는데 이용되는 연산으로부터 효과적으로 제거되는 것을 허용할 수 있다. 체적 데이터 구조는, SST(sparse sexaquaternary tree) 포맷을 따르는 등의, 저밀도 트리 구조를 따를 수 있다. 또한, 저밀도 체적 데이터 구조에 대한 이러한 접근법은, 객체의 체적 표현을 저장하기 위해 전통적으로 이용되는 공간보다 비교적 적은 저장 공간을 이용할 수 있다. 추가적으로, 체적 데이터의 압축은, 다른 예시적인 이점들 중 특히, 이러한 표현의 전송 가능성을 증가시키고 이러한 표현의 더 빠른 처리를 가능케할 수 있다.
체적 데이터 구조는 하드웨어 가속되어 3D 렌더러에 대한 업데이트를 신속하게 허용하여, 별도의 컴퓨터 비전 및 그래픽 시스템에서 발생할 수 있는 지연을 제거할 수 있다. 이러한 지연은 레이턴시를 유발할 수 있으며, 이것은 AR, VR, MR 및 기타 응용에서 이용될 때 다른 추가적인 단점들 중에서도 특히, 사용자에게 멀미를 유발할 수 있다. 가속된 데이터 구조에서 기하학적 속성의 점유에 관해 복셀을 빠르게 테스트하는 능력은, 실시간으로 업데이트될 수 있는 낮은 레이턴시의 AR, VR, MR 또는 기타 시스템의 구축을 허용한다.
일부 실시예에서, 체적 데이터 구조의 능력은 또한, 프레임내 경고(intra-frame warning)를 제공할 수 있다. 예를 들어, AR, VR, MR 및 기타의 응용에서, 사용자가 촬영된 장면에서 실제의 또는 합성된 객체와 충돌할 가능성이 있을 때, 또는 드론이나 로봇용 컴퓨터 비전 응용에서, 이러한 디바이스가 촬영된 장면 내의 실제의 또는 합성된 객체와 충돌할 가능성이 있을 때, 체적 데이터 구조에 의해 제공되는 처리 속도는 임박한 충돌에 대한 경고를 허용한다.
본 개시내용의 실시예들은, 로봇 공학, 증강 및 혼합 현실 헤드셋을 위한 머리 장착형 디스플레이 뿐만 아니라, 전화 및 태블릿 등의 응용에서의 체적 데이터의 저장 및 처리에 관한 것일 수 있다. 본 개시내용의 실시예들은, 복셀 그룹 내의 각각의 체적 요소(예를 들어, 복셀), 및 임의적으로서 복셀의 지오메트리에 관련된 물리량을 단일 비트로서 표현한다. 64개의 복셀로 된 그룹과 관련된 추가 파라미터는, 대응하는 RGB(red-green-blue) 또는 기타 착색 인코딩, 투명도, TSDF(truncated signed distance function) 정보 등의 복셀과 연관될 수 있고, 연관된 및 임의적인 64 비트 데이터 구조에 저장된다(예를 들어, 2개 이상의 비트가 각각의 복셀을 나타내는데 이용되도록). 이러한 표현 방식은 최소 메모리 요건을 실현할 수 있다. 게다가, 단일 비트에 의해 복셀을 표현하는 것은, 체적 표현으로부터의 요소들을 논리적으로 또는 수학적으로 결합하는 많은 간소화된 계산의 수행을 허용한다. 체적 표현으로부터의 요소들을 결합하는 것은, 예를 들어, 체적 내의 평면들을 OR하여 3D 체적 데이터의 2D 투사를 생성하고, 다른 것들 중에서도 특히, 2.5D 매니폴드(manifold)에서 점유된 복셀 수를 카운트함으로써 표면적을 계산하는 것을 포함할 수 있다. 비교를 위해, 다른 예들 중에서도 특히, XOR 로직을 이용하여 64 비트 하위체적(예를 들어, 4^3 하위체적)을 비교할 수 있고, 체적을 반전시킬 수 있으며, 객체들을 함께 OR함으로써 객체들이 병합되어 하이브리드 객체를 생성할 수 있다.
도 1은, 빠른 머리 움직임으로 인한 변화와 폐색 및 렌더링된 그래픽에서 섀도우와 폐색을 생성할 수 있는 환경의 변화를 감안하기 위한 렌더링-후 접속 장치를 갖춘 병렬 그래픽 렌더링 및 컴퓨터 비전 서브시스템으로 구성된 기존의 증강 또는 혼합 현실 시스템을 나타낸다. 하나의 예시적인 구현에서, 시스템은, 버스(101), 온칩 네트워크 온칩, 또는 기타 상호접속을 통한 상호접속에 의해, 그래픽 파이프라인, 컴퓨터 비전 파이프라인 및 렌더링후 보정 장치의 실행을 제어하기 위한 호스트 메모리(124)에 의해 지원받는 호스트 프로세서(100)를 포함할 수 있다. 상호접속은, 적절한 소프트웨어를 실행하는 호스트 프로세서(100)가, 그래픽 처리 유닛(GPU)(106), 연관된 그래픽 메모리(111), 컴퓨터 비전 파이프라인(116), 및 연관된 컴퓨터 비전 메모리(124)의 실행을 제어하는 것을 허용한다. 한 예에서, (예를 들어, 삼각형 목록(105)에 관해 동작하는) OpenGL 그래픽 셰이더(graphics shader)(107)를 통해 GPU(106)를 이용한 그래픽의 렌더링은, 컴퓨터 비전 파이프라인보다 느린 레이트로 이루어질 수 있다. 그 결과, 그래픽이 GPU(106)에 의해 렌더링된 이후에 발생할 수 있는 머리 자세의 변화 및 장면 지오메트리 폐색을 감안하기 위해, 워프 엔진(108) 및 디스플레이/폐색 프로세서(109)를 통한 렌더링후 보정이 수행될 수 있다. GPU(106)의 출력은, 다른 예들 중에서도 특히, 각각 머리 자세 파이프라인(120) 및 폐색 파이프라인(123)으로부터의 정확한 제어 신호(121 및 123)와 연계하여 이용되어 머리 자세(119) 및 폐색 지오메트리(113)에서의 임의의 변화를 고려하여 정확한 그래픽 출력을 생성할 수 있도록 타임스탬프될 수 있다.
GPU(106)와 병렬로, (예를 들어, 깊이 및 비전 처리를 위한 능동 및 수동 스테레오 카메라(117)를 포함한) 복수의 센서 및 카메라가 컴퓨터 비전 파이프라인(116)에 접속될 수 있다. 컴퓨터 비전 파이프라인(116)은 적어도 3개의 스테이지 중 하나 이상을 포함할 수 있고, 각각의 스테이지는 복수의 하위 레벨 처리 스테이지를 포함할 수 있다. 한 예에서, 컴퓨터 비전 파이프라인(116) 내의 스테이지는, 이미지 신호 처리(ISP) 파이프라인(118), 머리 자세 파이프라인(120), 및 폐색 파이프라인(122)일 수 있다. ISP 파이프라인(118)은 입력 카메라 센서들(117)의 출력을 취하여 후속 머리 자세 및 폐색 처리에 이용될 수 있도록 조절한다. 머리 자세 파이프라인(120)은 ISP 파이프라인(118)의 출력을 취하고 이를 헤드셋(110) 내의 관성 측정 유닛(IMU)의 출력(119)과 함께 이용하여 대응하는 출력 그래픽 프레임이 GPU(106)에 의해 렌더링된 후 머리 자세의 변화를 계산할 수 있다. 머리 자세 파이프라인(HPP)(120)의 출력(121)은 사용자 명시형 메시(mesh)와 함께 워프 엔진(108)에 적용되어 GPU 출력(102)을 왜곡해 업데이트된 머리 자세 위치(119)와 정합하게 할 수 있다. 폐색 파이프라인(122)은 머리 자세 파이프라인(121)의 출력을 취하고, 장면 지오메트리에 관해 대응하는 섀도우(114)를 생성해야 하는 시야에 진입하는 손(113)(또는 기타의 예시적인 객체) 등의 새로운 객체를 시야에서 찾을 수 있다. 폐색 파이프라인(122)의 출력(123)은, 워프 엔진(108)의 출력(103)의 상단에 시야를 정확하게 오버레이하기 위해 디스플레이 및 폐색 프로세서(109)에 의해 이용될 수 있다. 기타의 예시적인 이용 사례 및 피처들 중 특히, 디스플레이 및 폐색 프로세서(109)는 계산된 머리 자세(119)를 이용하여 합성 섀도우(114)에 대한 섀도우 마스크를 생성하고, 디스플레이 및 폐색 프로세서(109)는, 워프 엔진(108)의 출력(103)의 상단에 그래픽 섀도우(114)를 생성하기 위해 섀도우 마스크의 상단에 손(113)의 폐색 지오메트리를 합성하고, 증강/혼합 현실 헤드셋(110) 상의 디스플레이를 위한 최종 출력 프레임(들)(104)을 생성할 수 있다.
도 2는 본 개시내용의 일부 실시예에 따른 복셀-기반의 증강 또는 혼합 현실 렌더링 시스템을 나타낸다. 도 2에 도시된 장치는, 호스트 CPU(200) 및 연관된 호스트 메모리(201)로 구성된 호스트 시스템을 포함할 수 있다. 이러한 시스템은, 버스(204), 온칩 네트워크 또는 기타 통신 메커니즘을 통해, 통합 컴퓨터 비전 및 그래픽 파이프라인(223)과, 머리 장착형 증강 또는 혼합 현실 디스플레이(211) 상의 디스플레이를 위한 최종 장면에서 렌더링될 실제 및 합성 복셀을 포함하는 연관된 통합 컴퓨터 비전 및 그래픽 메모리(213)와 통신할 수 있다. AR/MR 디스플레이(211)는 또한, 복수의 능동 및 수동 이미지 센서(214)와 머리 자세(222) 배향의 변화를 측정하는데 이용되는 관성 측정 유닛(IMU)(212)을 포함할 수 있다.
결합된 렌더링 파이프라인에서, OpenGL JiT(Just-in-Time) 변환기(205)에 의해 처리되는 삼각형 목록(204)으로부터 시작하여 합성 지오메트리가 생성되어 합성 복셀 지오메트리(202)를 생성할 수 있다. 합성 복셀 지오메트리는, 예를 들어, 삼각형 목록으로부터 한 삼각형의 주 평면을 선택함으로써 생성될 수 있다. 그 다음, 선택된 평면 내의 각각의 삼각형의 2D 래스터화가 수행될 수 있다(예를 들어, X 및 Z 방향으로). 삼각형을 가로질러 보간될 속성으로서 제3 좌표(예를 들어, Y)가 생성될 수 있다. 래스터화된 삼각형의 각각의 픽셀은 대응하는 복셀의 정의를 생성할 수 있다. 이 처리는 CPU 또는 GPU에 의해 수행될 수 있다. 다른 예시적 구현들 중에서도 특히, GPU에 의해 수행될 때, 각각의 래스터화된 삼각형은 GPU에 의해 다시 판독되어, GPU가 픽셀을 그린 복셀을 생성할 수 있다. 예를 들어, 합성 복셀은 목록들의 2D 버퍼를 이용하여 생성될 수 있고, 여기서 목록의 각각의 엔트리는 그 픽셀에서 렌더링된 다각형의 깊이 정보를 저장한다. 예를 들어, 모델은 직교 관점(예를 들어, 탑-다운)을 이용하여 렌더링될 수 있다. 예를 들어, 예시적인 버퍼에 제공된 모든 (x, y)는, 대응하는 복셀 체적(예를 들어, (x,y,0) 내지 (x,y,4095)) 내의 (x, y)에 있는 열을 나타낼 수 있다. 그 다음, 각각의 열은 각각의 목록 내의 정보를 이용하여 그 정보로부터 3D 스캔라인으로서 렌더링될 수 있다.
도 2의 예를 계속하면, 일부 구현에서, 합성 복셀 지오메트리적 구조(202)는, 동시 국소화 및 매핑(simultaneous localization and mapping)(SLAM) 파이프라인(217)을 이용하여 구성된 측정된 지오메트리 구조 복셀(227)과 결합될 수 있다. SLAM 파이프라인은, 먼저 이미지 신호 처리(ISP) 파이프라인(215)을 이용하여 처리되는 능동 센서 및/또는 수동 이미지 센서(214)(예를 들어, 214.1 및 214.2)를 이용하여 출력(225)을 생성할 수 있으며, 이것은 깊이 파이프라인(216)에 의해 깊이 이미지(226)로 변환될 수 있다. 다른 예들 중에서도 특히, 능동 또는 수동 이미지 센서(214)(214.1 및 214.2)는, 능동 또는 수동 스테레오 센서, 구조화된 광 센서, 비행 시간 센서(time-of-flight sensor)를 포함할 수 있다. 예를 들어, 깊이 파이프라인(216)은, 구조화된 광 또는 비행 시간 센서(214.1) 또는 대안으로서 수동 스테레오 센서(214.2)로부터의 어느 한 깊이 데이터를 처리할 수 있다. 다른 예시적인 구현들 중에서도 특히, 하나의 예시적인 구현에서, 스테레오 센서(214.2)는 수동 쌍의 스테레오 센서를 포함할 수 있다.
깊이 파이프라인(215)에 의해 생성된 깊이 이미지는 SLAM 알고리즘(예를 들어, Kinect Fusion)을 이용하여 저밀도 SLAM 파이프라인(217)에 의해 처리되어 측정된 지오메트리 복셀(227)의 복셀화된 모델을 생성할 수 있다. 측정된 지오메트리 복셀(227)(예를 들어, 실제 복셀 지오메트리)을 합성 복셀 지오메트리(202)와 결합하여, 디스플레이 프로세서(210)를 통한 디스플레이 디바이스(예를 들어, VR 또는 AR 응용에서 머리 장착형 디스플레이(211))로의 출력을 위한 장면의 2D 렌더링을 생성할 수 있는 광선 추적 가속기(206)가 제공될 수 있다. 이러한 구현에서, 완전한 장면 모델은, 측정된 지오메트리 복셀(227)의 실제 복셀 및 합성 지오메트리(202)로부터 구성될 수 있다. 그 결과, (예를 들어, 도 1에서와 같이) 2D 렌더링된 지오메트리의 워핑(warping)에 대한 요구가 없다. 이러한 구현은 머리 자세 추적 센서 및 대응하는 로직과 결합되어 실제의 및 측정된 지오메트리를 정확하게 정렬할 수 있다. 예를 들어, 예시적인 머리 자세 파이프라인(221)은, 머리 장착형 디스플레이(212)에 장착된 IMU(212)로부터의 머리 자세 측정값(232)을 처리할 수 있고 디스플레이 프로세서(210)를 통한 렌더링 동안 머리 자세 측정 파이프라인의 출력(231)이 고려될 수 있다.
일부 예에서, 통합 렌더링 파이프라인은 또한, 오디오 잔향 모델을 렌더링하고 실제-세계, 가상 또는 혼합 현실 장면의 물리현상을 모델링하기 위해, 측정된 지오메트리 복셀(227)(예를 들어, 실제 복셀 모델) 및 합성 지오메트리(202)(예를 들어, 합성 복셀 모델)을 이용할 수 있다. 예를 들어, 물리현상 파이프라인(218)은 측정된 지오메트리 복셀(227) 및 합성 지오메트리(202) 복셀 지오메트리를 취하고, 광선 캐스팅 가속기(206)를 이용하여 머리 장착형 디스플레이(HMD)(211) 내의 좌측 및 우측 이어폰에 대한 출력 오디오 샘플을 계산하여 복셀 데이터 구조에 내장된 음향 반사 계수를 이용하여 출력 샘플(230)을 계산할 수 있다. 유사하게, 202 및 227로 구성된 통합 복셀 모델은, 복합 AR/MR 장면에서 합성 객체에 대한 물리현상 업데이트를 결정하는데에도 역시 이용될 수 있다. 물리현상 파이프라인(218)은 복합 장면 지오메트릭을 입력으로 취하고, 렌더링을 위해 합성 지오메트리(202)에 대한 업데이트(228)를 계산하기 전에 및 물리현상 모델의 미래 반복을 위한 기초로서 광선 캐스팅 가속기(206)를 이용하여 충돌을 계산한다.
일부 구현에서, 도 2에 도시된 시스템 등의 시스템에는, 다른 예들 중에서 특히, ISP 파이프라인(215)의 출력으로부터의 RGB 비디오/이미지 입력 또는 SLAM 파이프라인(217)의 출력으로부터의 체적 장면 데이터를 처리할 수 있는 콘볼루션 신경망(CNN)을 구현 및/또는 이용하기 위해 하나 이상의 하드웨어 가속기가 추가로 제공될 수 있다. 신경망 분류기는, 전적으로 하드웨어(HW) 콘볼루션 신경망(CNN) 가속기(207)만을 이용하거나 프로세서와 HW CNN 가속기(207)의 조합으로 실행되어 출력 분류(237)를 생성할 수 있다. 체적 표현에 관해 추론하기 위한 HW CNN 가속기(207)의 가용성은, 다른 예시적인 용도들 중에서도 특히, 측정된 지오메트리 복셀(227) 내의 복셀 그룹이 특정한 객체 클래스에 속하는 것으로 라벨링되는 것을 허용할 수 있다.
(예를 들어, CNN 및 지원 하드웨어 가속을 이용한) 복셀 라벨링은, 이들 복셀이 속하는 객체가 알려진 객체에 대응하는 것으로서 시스템에 의해 인식되도록 허용할 수 있고 소스 복셀은 측정된 지오메트리 복셀(227)로부터 제거되고, 다른 예시적인 정보 중에서 특히, 객체 및/또는 객체의 원점, 객체의 자세, 객체 설명자에 대한 정보에 대응하는 경계 박스로 대체된다. 이로 인해 결국, 다른 예시적 용도들 중에서, 예를 들어, 장면 내의 객체와 상호작용하기 위해 로봇, 드론 또는 기타의 컴퓨팅 시스템, 또는 장면 내의 객체의 흡음 계수를 조회하고 이를 장면의 음향 모델에 반영하는 오디오 시스템에 의한 입력으로서 이용될 수 있는 장면의 훨씬 더 의미론적으로 의미있는 설명이 생성될 수 있다.
도 2에 도시되고 설명된 예시적인 시스템의 파이프라인을 구현하기 위해 하나 이상의 프로세서 디바이스 및 하드웨어 가속기가 제공될 수 있다. 일부 구현에서, 결합된 렌더링 파이프라인의 모든 하드웨어 및 소프트웨어 요소는, 특히 다른 예시적인 구현들 중에서 특히, 데이터가 공유 DDR 메모리 디바이스(208)에 저장될 수 있게 허용하는 DRAM 제어기(209)에 대한 액세스를 공유할 수 있다.
도 3은 일부 실시예에 따른 밀집 체적 표현과 저밀도 체적 표현 사이의 차이를 나타내기 위해 제공된다. 도 3의 예에 도시된 바와 같이, 현실 세계 또는 합성 객체(300)(예를 들어, 토끼의 조각상)는 302에 도시된 바와 같이 밀집 방식으로 또는 304에 도시된 바와 같이 저밀도 방식으로 복셀과 관련하여 설명될 수 있다. 302 등의 밀집 표현의 이점은, 체적 내의 모든 복셀에 대한 균일한 액세스 속도이지만, 단점은 요구될 수 있는 저장 양이다. 예를 들어, (예를 들어, Kinect 센서를 이용하여 스캔된 체적의 1cm 해상도에서의 5m에 대응하는) 512^3 요소 체적 등의 밀집 표현의 경우에는, 각각의 복셀에 대해 4 바이트 TSDF(truncated signed distance function)로 비교적 적은 체적을 저장하는데 512M바이트가 있다. 반면, 저밀도 표현을 구현하는 옥트리 표현(octree representation)(304)은 현실 세계 장면에서 실제의 지오메트리가 있는 복셀들만을 저장할 수 있음으로써, 따라서 동일한 체적을 저장하는데 필요한 데이터의 양을 감소시킬 수 있다.
도 4로 돌아가면, 일부 실시예에 따른 예시적인 장면의 복합 뷰가 예시되어 있다. 특히, 도 4는, 합성 및 실제 세계 복셀 데이터에 대해 각각 등가 경계 박스(400 및 402) 내에서 합성 복셀(401) 및 실제 측정된 복셀(403)을 나타내기 위해 병렬 데이터 구조를 이용하여 장면(404)의 합성 뷰가 어떻게 유지, 디스플레이, 추가 처리될 수 있는지를 도시한다. 도 5는 일부 실시예에 따른 균일한 4^3 요소 트리 구조의 상세사항 레벨을 나타낸다. 일부 구현에서, 도 5의 예에서 표현된 것 등의, 옥트리 표현을 이용하여 체적 내의 각각의 복셀을 기술하기 위해 1 비트 정도의 적은 비트가 이용될 수 있다. 그러나, 옥트리 기반 기술의 단점은 옥트리의 특정한 복셀에 액세스하는데 이용되는 간접 메모리 액세스의 횟수이다. 저밀도 복셀 옥트리의 경우, 동일한 지오메트리가 복수의 상세사항 레벨에서 묵시적으로 표현될 수 있어서, 유리하게도, 다른 예시적인 이점들 중에서도 특히, 장면의 빈 부분들이 추가 계산으로부터 제거되어, 요구되는 스토리지 뿐만 아니라, 전력 소산 및 계산 부하 측면에서 전체적인 감소를 허용하기 위해, 광선 캐스팅, 게임 물리현상, CNN 및 기타의 기술 등의 연산을 허용한다.
한 구현에서, 복셀 당 1비트의 메모리 요건과 함께 501에 도시된 바와 같이, 체적 정보를 4^3(또는 64 비트) 부호없는 정수로서 조직화하기 위해 (본 명세서에서는 "체적 데이터 구조"라고도 하는) 개선된 복셀 설명자가 제공될 수 있다. 이 예에서, 복셀 당 1 비트는 절삭된 부호있는 거리 함수 값을 저장하기에 불충분하다(64 비트를 이용하는 SLAMbench/KFusion에서의 TSDF에 비해). 본 예에서, 추가(예를 들어, 64 비트) 필드(500)가 복셀 설명자에 포함될 수 있다. 이 예는, 64 비트 필드(500) 내의 TSDF가 16 비트인 반면, x, y 및 z에서의 추가 2 비트 부분 해상도가 복셀 설명자(501)에 묵시적으로 제공되어, 64 비트 필드(500) 내의 복셀 TSDF와 복셀 위치(501)의 조합이, SLAMbench/KFusion 또는 기타 예에서 이용되는 등의, 훨씬 더 높은 해상도의 TSDF와 균등하게 만들 수 있도록 추가로 강화될 수 있다. 예를 들어, 64 비트 필드(500) 내의 추가 데이터(복셀 설명자)는 각각 1 바이트의 (예를 들어, 수동 RGB 센서를 통한 장면으로부터의) 서브샘플링된 RGB 색상 정보, 및 8 비트 투명도 값 알파뿐만 아니라, 응용 특유일 수 있는 2개의 1 바이트 예약 필드 R1 및 R2를 저장하는데 이용될 수 있고, 다른 예들 중에서도 특히, 예를 들어 오디오 응용에 대한 음향 반사율, 물리현상 응용에 대한 강성, 객체 재질 유형 등을 저장하는데에도 이용될 수 있다.
도 5에 도시된 바와 같이, 복셀 설명자(501)는, 각각이 16개의 복셀(502)을 포함하는 4개의 2D 평면으로 논리적으로 그룹화될 수 있다. 이들 2D 평면(또는 복셀 평면)은, 도 5에 나타낸 바와 같이, 4의 오름차순 연속적인 분해에 기초하여 옥트리 스타일 구조의 각각의 레벨을 기술할 수 있다. 이 예시적인 구현에서, 64 비트 복셀 설명자는 대응하는 시스템 구현에 이용되는 64 비트 버스 인프라스트럭처에 양호하게 정합하기 때문에 선택된다(다른 시스템 구현에서 다른 복셀 설명자 크기 및 포맷이 제공될 수 있고 시스템의 버스 또는 다른 인프라스트럭처에 따라 크기조정될 수 있다). 일부 구현에서, 복셀 설명자는 복셀을 획득하기 위해 이용되는 메모리 액세스의 횟수를 감소시키기 위해 크기조정될 수 있다. 예를 들어, 64 비트 복셀 설명자는, 다른 예시적인 고려사항 및 구현들 중에서도 특히, 2^3 요소들에 관해 동작하는 전통적인 옥트리에 비해, 옥트리 내의 임의의 레벨의 복셀에 액세스하는데 필요한 메모리 액세스의 횟수를 2배만큼 감소시키는데 이용될 수 있다.
하나의 예에서, 아래에 놓인 계층(504, 505, 및 506) 내의 지오메트리의 존재에 대한 코드가 예시적인 256^3 체적에 도시되어 있는 각각의 비제로 엔트리와, 4^3 루트 체적(503)으로부터 시작하여 옥트리가 기술될 수 있다. 이 특정한 예에서, 옥트리의 최하위 레벨에 액세스하기 위해 4회의 메모리 액세스가 이용될 수 있다. 이러한 오버헤드가 너무 높은 경우, 507에 도시된 바와 같이, 옥트리의 최고 레벨을, 64^3 등의, 더 큰 체적으로서 인코딩하기 위해 대체 접근법이 채택될 수 있다. 이 경우, 507 내의 각각의 비제로 엔트리는 아래에 놓인 256^3 체적(508) 내의 아래에 놓인 4^3 옥트리의 존재를 나타낼 수 있다. 이 대체 조직화의 결과는, 503, 504 및 505에 도시된 대체 형식과 비교하여, 256^3 체적(508) 내의 임의의 복셀에 액세스하기 위해 2회의 메모리 액세스만이 요구된다는 것이다. 이 후자의 접근법은, 옥트리 구조를 호스팅하는 디바이스가 더 많은 양의 내장 메모리를 가지고 있어서 외부 메모리 내의 복셀 옥트리(508)의 부분들에 대한 더 낮고 덜 빈번한 액세스만을 허용하는 경우에 유리하다. 이 접근법은, 스토리지 측면에서 더 많은 비용이 들 수 있고, 예를 들어 전체의 더 큰(예를 들어, 64^3) 체적이 온칩 메모리에 저장되지만, 절충을 통해, 다른 예시적인 이점들 중에서도 특히, 더 빠른 메모리 액세스(예를 들어, 2x) 및 훨씬 더 낮은 전력 소산을 허용할 수 있다.
도 6으로 돌아가면, 일부 실시예에 따라 본 출원의 데이터 구조 및 복셀 데이터를 이용할 수 있는 예시적인 응용을 나타내는 블록도가 도시되어 있다. 도 5에 도시된 것 등의 한 예에서, 추가 정보는 예시적인 복셀 설명자(500)를 통해 제공될 수 있다. 복셀 설명자는 이용되는 전체 메모리를 복셀 당 2 비트로 증가시킬 수 있지만, 복셀 설명자는 도 6에 나타낸 바와 같이 복셀 데이터를 이용할 수 있는 광범위한 응용을 가능케할 수 있다. 예를 들어, 밀집 SLAM 시스템(601)(예를 들어, SLAMbench)을 이용하여 생성되는 등의 공유 체적 표현(602)은, 다른 구현들 중에서도 특히, 오디오 광선 캐스팅(604)에서 이용되는, 그래픽 광선 캐스팅 또는 광선 추적(603)을 이용하여 장면을 렌더링하는데 이용될 수 있다. 역시 다른 예에서, 체적 표현(602)은 또한, 콘볼루션 신경망(CNN) 추론(605)에서 이용될 수 있고, 클라우드 인프라스트럭처(607)에 의해 백업될 수 있다. 일부 예에서, 클라우드 인프라스트럭처(607)는, 추론을 통해 액세스될 수 있는, 나무, 가구 또는 기타의 객체(예를 들어, 606) 등의 객체의 상세한 체적 설명자를 포함할 수 있다. 객체를 추론하거나 기타의 방식으로 식별하는 것에 기초하여, 대응하는 상세한 설명자가 디바이스에 반환되어, 체적 표현(602)의 복셀이, 다른 예시적인 피처들 중에서 특히, 객체의 속성을 포함하는 설명자 및 자세 정보와 함께 경계 박스 표현으로 대체되도록 허용할 수 있다.
역시 다른 실시예에서, 위에서 논의된 복셀 모델은 체적 표현(602)으로부터의 3D-2D 투사를 이용하여 예시적인 환경(608)의 2D 맵을 구축하기 위해 일부 시스템에서 추가로 또는 대안으로서 이용될 수 있다. 이들 2D 맵은 또한, 클라우드 인프라스트럭처 및/또는 기타의 네트워크 기반 자원(607)을 통해 통신하는 머신들을 통해 공유될 수 있고 (예를 들어, 동일한 클라우드 인프라스트럭처를 이용해) 집결되어 크라우드 소싱 기술을 이용해 더 높은 품질의 맵을 구축할 수 있다. 이들 맵은 클라우드 인프라스트럭처(607)에 의해 접속된 머신 및 디바이스에 공유될 수 있다. 역시 다른 예에서, 2D 맵은, 투사에 이은 부분별 간소화(609)(예를 들어, 차량 또는 로봇에 대해 고정된 폭 및 높이를 가정)를 이용하여 초저-대역폭 응용을 위해 개선될 수 있다. 간소화된 경로는 경로의 부분별 선형 세그먼트 당 하나의 X, Y 좌표 쌍만을 가질 수 있어서, 차량(609)의 경로를 클라우드 인프라스트럭처(607)에 전달하는데 요구되는 대역폭의 양을 감소시키고 바로 그 동일한 클라우드 인프라스트럭처(607)에 집결되어 크라우드 소싱 기술을 이용해 더 높은 품질의 맵을 구축할 수 있다. 이들 맵은 클라우드 인프라스트럭처(607)에 의해 접속된 머신 및 디바이스에 공유될 수 있다.
이들 상이한 응용을 가능케하기 위해, 일부 구현에서, 다른 예들 중에서도 특히, 하드웨어 가속기 또는 프로세서 명령어 세트 아키텍처(ISA) 확장을 이용하여 일부 실시예에서 가속될 수 있는, 공유 소프트웨어 라이브러리를 통하는 것 등의 공통 기능이 제공될 수 있다. 예를 들어, 이러한 기능은, 설명자 내로의 복셀의 삽입, 복셀의 삭제, 또는 복셀(610)의 조회를 포함할 수 있다. 일부 구현에서, 다른 예들 중에서도 특히, 체적(630)으로부터의 포인트/복셀 삭제뿐만 아니라 충돌 검출 기능(620)도 역시 지원될 수 있다. 위에서 소개된 바와 같이, 시스템에는, (예를 들어, 경로 또는 충돌 결정에 대한 기초로서 역할할 수 있는) 대응하는 체적 표현(602)(3D 체적)으로부터 X, Y 및 Z 방향으로 2D 투사(640)를 신속하게 생성하는 기능을 제공될 수 있다. 일부 경우에, 히스토그램 피라미드(650)를 이용하여 체적 표현(602)으로부터 삼각형 목록을 생성할 수 있는 것이 또한 유리할 수 있다. 또한, 시스템에는 체적 공간(602)의 2D 및 3D 표현에서 자유 경로(660)의 빠른 결정을 위한 기능이 제공될 수 있다. 이러한 기능은 다양한 응용 분야에서 유용할 수 있다. 다른 예들 중에서도 특히, 체적 내의 복셀 수를 정교화하는 것, 체적 표현(602)의 마스킹된 영역에서 1 비트의 수를 카운트하기 위해 개체수 카운터를 이용하여 객체의 표면을 결정하는 것 등의 추가 기능이 제공될 수 있다.
도 7의 간소화된 블록도를 참조하면, 적어도 일부 실시예에 따라 3D 숫자(digit)를 인식하는 기능을 갖춘 시스템을 포함하는 예시적인 네트워크가 도시되어 있다. 예를 들어, 도 6에 도시된 응용들 중 하나는 체적 CNN 응용(605)이며, 이것은 Mixed National Institute of Standards and Technology (MNIST) 데이터세트 등의, 데이터세트로부터 생성된 3D 숫자(700)를 인식하기 위해 예시적인 네트워크가 이용되는 도 7에서 더 상세히 설명된다. 이러한 데이터세트 내의 숫자는, 훈련 전에 X, Y 및 Z의 적절한 회전 및 병진을 숫자에 적용함으로써 CNN 기반 콘볼루션 네트워크 분류기(710)를 훈련시키는데 이용될 수 있다. 임베디드 디바이스에서 추론에 이용될 때, 훈련된 네트워크(710)는, 다른 예들 중에서도 특히, 숫자가 X, Y 및 Z에서 회전 및 병진되는 경우(720)에도 높은 정확도로 장면에서 3D 숫자를 분류하는데 이용될 수 있다. 일부 구현에서, CNN 분류기의 연산은, 도 2에 도시된 HW CNN 가속기(207)에 의해 가속될 수 있다. 신경망의 제1 계층이 체적 표현(602)의 복셀을 이용하여 곱셈을 수행할 때, 이들 산술 연산은, 0으로 곱하기는 항상 0이고 1(복셀)과 데이터 값 A의 곱셈은 A와 같으므로 스킵될 수 있다.
도 8은 묵시적 상세사항 레벨을 이용하여 동일한 데이터 구조에 관해 수행된 복수의 분류를 나타낸다. 체적 표현(602)을 이용한 CNN 분류의 추가 개선은, 옥트리 표현이 도 5에 도시된 바와 같이 옥트리 구조에서 묵시적으로 복수의 상세사항 레벨을 포함하므로, 도 8에 도시된 바와 같이 단일 분류기(830) 또는 병렬로 된 복수의 분류기를 이용하여, 묵시적 상세사항 레벨(800, 810 및 820)을 이용해 동일한 데이터 구조에 관해 복수의 분류가 병렬로 수행될 수 있다는 것이다. 전통적인 시스템에서, 분류 패스들 사이에서 요구되는 이미지 크기조정으로 인해 유사한 병렬 분류가 느릴 수 있다. 동일한 옥트리가 복수의 상세사항 레벨에서 동일한 정보를 포함할 수 있기 때문에, 이러한 크기조정은 여기서 논의된 복셀 구조를 적용하는 구현에서 무시될 수 있다. 실제로, 체적 모델에 기초하는 단일 훈련 데이터세트는, 기존 CNN 네트워크에서 요구되는 바와 같이, 크기조정된 훈련 데이터세트가 아닌 모든 상세사항 레벨을 포괄할 수 있다.
도 9의 예로 돌아가면, 일부 실시예에 따른 2D CNN에 의한 예시적인 연산 제거가 도시되어 있다. 연산 제거는, 도 9에서와 같이, 3D 체적 CNN뿐만 아니라 2D CNN에서도 이용될 수 있다. 예를 들어, 도 9에서, 제1 계층에서, 비트맵 마스크(900)는 입력(910)의 예상 "형상"을 기술하는데 이용될 수 있고 인입 비디오 스트림(920)에 적용될 수 있다. 한 예에서, 연산 제거는 3D 체적 CNN뿐만 아니라 2D 체적 CNN에서도 이용될 수 있다. 예를 들어, 도 9의 예의 2D CNN에서, 비트맵 마스크(900)가 입력(910)의 예상 "형상"을 기술하기 위해 CNN의 제1 계층에 적용될 수 있고, 인입 비디오 스트림(820) 등의 CNN의 입력 데이터에 적용될 수 있다. 예를 들어, CNN 네트워크에서 훈련 또는 추론을 위해 보행자의 이미지에 비트맵 마스크를 적용하는 효과가 도 9에 나와 있다, 여기서 901은 보행자(901)의 원본 이미지를 나타내고 903은 비트맵 마스크가 적용된 대응하는 버전을 나타낸다. 마찬가지로, 보행자가 없는 이미지는 902에 도시되어 있고 대응하는 비트맵 마스크된 버전은 904에 도시되어 있다. 검출기에 의해 예상된 2D 또는 3D 지오메트리에 대한 지식을 통해 CNN 훈련 또는 추론에 요구되는 연산 수를 감소시키기 위해 임의의 종류의 2D 또는 3D 객체에 동일한 방법이 적용될 수 있다. 3D 체적 비트맵의 한 예가 911에 도시되어 있다. 실제 장면에서의 추론을 위해 2D 비트맵을 이용하는 것이 920에 도시되어 있다.
도 9의 예시적인 구현에서, 개념적 비트맵이 (900에) 도시되어 있는 반면, 실제 비트맵은 객체(910)의 특정한 클래스에 대한 일련의 훈련 이미지를 평균화함으로써 생성된다. 도시된 예는 2차원이지만, 복셀 당 1 비트로 제안된 체적 데이터 포맷의 3D 객체에 대해 유사한 비트맵 마스크가 생성될 수도 있다. 사실상, 이 방법은, 다른 예시적인 구현들 중에서 특히, 복셀/픽셀 당 추가 비트를 이용하여 2D 또는 3D 객체의 예상 색상 범위 또는 기타의 특성을 명시하도록 잠재적으로 확장될 수 있다.
도 10은 일부 실시예에 따른 10,000개의 CIFAR-10 테스트 이미지의 분석을 포함하는 예시적인 실험의 결과를 나타내는 표이다. 일부 구현에서, 연산 제거는, 도 10에 도시된 LeNet(1000) 등의 CNN 네트워크에서 빈번한 ReLU(Rectified Linear Unit) 연산으로 인해, 1D, 2D 및 3D CNN에서 중간 계산을 제거하는데 이용될 수 있다. 도 10에 도시된 바와 같이, 10,000개의 CIFAR-10 테스트 이미지를 이용한 실험에서, ReLU 유닛에 의해 생성된 데이터-의존적 제로들의 백분율은 최대 85%까지 이를 수 있고, 이것은, 제로의 경우, 제로를 인식하고 이에 대한 응답으로서 대응하는 데이터를 가져 오지 않고 대응하는 곱셈 연산을 수행하는 시스템이 제공될 수 있음을 의미한다. 이 예에서, 85%는 MNIST(Modified National Institute of Standards and Technology database) 테스트 데이터세트로부터 생성된 ReLU 동적 제로들의 백분율을 나타낸다. 이들 제로에 대응하는 대응하는 연산 제거는, 다른 예시적인 이점들 중에서 특히, 전력 소산 및 메모리 대역폭 요건을 감소시키는 역할을 할 수 있다.
사소한 연산(trivial operation)은 비트맵에 기초하여 제거될 수 있다. 예를 들어, 이러한 비트맵의 이용은, 참조에 의해 그 전체 내용이 본 명세서에 포함되는, 발명의 명칭이 "Circuit for compressing data and a processor employing the same"인 미국 특허 제8,713,080호에서 논의되고 예시된 원리와 실시예들을 따를 수 있다. 일부 구현은, 참조에 의해 그 전체 내용이 본 명세서에 포함되는, 발명의 명칭이 "Hardware for performing arithmetic operations"인 미국 특허 제9,104,633호에서 논의되고 예시되는, 시스템, 회로 및 기타의 구현 등의, 이러한 비트맵을 이용할 수 있는 하드웨어를 제공할 수 있다.
도 11은, 일부 실시예에 따른 비트맵에 기초하여 사소한 연산을 제거하기 위한 기능을 제공하기 위해 시스템 내에 통합될 수 있는 하드웨어를 나타낸다. 이 예에서, 반복된 콘볼루션 계층들을 포함하는 다중-계층 신경망이 제공된다. 하드웨어는, 하나 이상의 프로세서, 하나 이상의 마이크로프로세서, 하나 이상의 회로, 하나 이상의 컴퓨터 등을 포함할 수 있다. 이 특정한 예에서, 신경망은, 초기 콘볼루션 처리 계층(1100), 후속되는 풀링 처리(1110), 및 마지막으로 ReLU(rectified linear unit) 함수(1120) 등의 활성화 함수 처리를 포함한다. ReLU 출력 벡터(1131)를 제공하는 ReLU 유닛(1120)의 출력은, ReLU 출력 벡터(1131)를 수신하는 후속 콘볼루션 처리 계층(1180)에 (예를 들어, 아마도 지연(1132)을 통해) 접속될 수 있다. 하나의 예시적인 구현에서, ReLU 비트맵(1130)은 또한, 후속 콘볼루션 유닛(1180)으로의 ReLU 유닛(1120)의 접속과 병렬로 생성될 수 있으며, ReLU 비트맵(1130)은 ReLU 출력 벡터(1131)에서 어떤 요소가 제로이고 어떤 요소가 비제로인지를 나타낸다.
한 구현에서, 비트맵(예를 들어, 1130)이 생성되거나 기타의 방식으로 제공되어 신경망의 계산에 포함된 연산을 제거할 기회를 인에이블된 하드웨어에 통보할 수 있다. 예를 들어, ReLU 비트맵(1130) 내의 비트는 비트맵 스케줄러(1160)에 의해 해석될 수 있고, 이것은, 0으로 곱하면 출력으로서 항상 0이 생성되므로, ReLU 출력 벡터(1131)의 제로 엔트리를 스킵할 것을 후속 콘볼루션 유닛(1180) 내의 곱셈기들에게 지시하고, 이 경우 ReLU 비트맵(1130)에는 대응하는 2진 제로가 있다. 병렬로, ReLU 비트맵(1130)의 제로에 대응하는 데이터/가중치에 대한 주소 생성기(1140)로부터의 메모리 인출도 역시, 후속 콘볼루션 유닛(1180)에 의해 스킵될 예정인 가중치를 인출할 가치가 거의 없기 때문에 스킵될 수 있다. 가중치가 부착된 DDR DRAM 스토리지 디바이스(1170)로부터 DDR 제어기(1150)를 통해 인출될 예정이라면, 레이턴시가 너무 높아서 일부 온칩 대역폭 및 관련 전력 소산을 절약하는 것만 가능할 수 있다. 반면에, 가중치가 온칩 RAM(1180) 스토리지로부터 인출되는 경우, 특히 RAM/DDR 인출 지연(1132)에 대응하는 지연이 후속 콘볼루션 유닛(1180)으로의 입력에서 추가된다면, 전체 가중치 인출 동작을 바이패스/스킵할 수 있다.
도 12로 돌아가면, 일부 실시예에 따라 사소한 연산을 제거(또는 연산 제거를 수행)하기 위한 회로 및 다른 로직을 갖춘 예시적인 하드웨어에 대한 개선을 예시하기 위해 간소화된 블록도가 제시된다. 도 12의 예에 도시된 바와 같이, 선행 Max-Pooling 유닛(1210) 또는 콘볼루션 유닛(1200)으로부터의 ReLU 유닛(1220) 입력의 부호를 미리 예측하기 위해 추가적인 하드웨어 로직이 제공될 수 있다. Max-pooling 유닛(1210)에 부호 예측 및 ReLU 비트맵 생성을 추가하는 것은, 주소 생성기(1240)를 통해, 외부 DDR 제어기(1250) 및 DDR 스토리지(1270) 또는 내부 RAM 스토리지(1271)를 통해 발생할 수 있는 지연을 커버하기 위해 타이밍 관점에서 ReLU 비트맵 정보가 더 일찍 예측되는 것을 허용할 수 있다. 지연이 충분히 낮다면, ReLU 비트맵은 주소 생성기(1240)에서 해석될 수 있고, ReLU 비트맵 0과 연관된 메모리 인출은, 메모리로부터 인출의 결과가 결코 이용되지 않는다고 결정될 수 있기 때문에, 완전히 스킵될 수 있다. 도 11의 방식에 대한 이러한 수정은, 다른 예시적인 피처들 및 기능 중에서도 특히, 추가 전력을 절약할 수 있고, 또한, DDR 액세스 경로(예를 들어, 1240에서 1250을 통해 1270까지) 또는 RAM 액세스 경로(예를 들어, 1240에서 1271까지)를 통한 지연이 지연 스테이지(1232)를 보증하지 않도록 충분히 낮다면 후속 콘볼루션 유닛(1280)에 대한 입력에서의 지연 스테이지(예를 들어, 1132, 1232)의 제거를 허용할 수 있다.
도 13은 일부 실시예에 따른 예시적인 하드웨어를 나타내는 또 다른 간소화된 블록도이다. 예를 들어, CNN ReLU 계층은 네거티브 입력에 대응하는 많은 수의 출력 제로를 생성할 수 있다. 사실상, 네거티브 ReLU 입력은 이전 계층(예를 들어, 도 13의 예에서 풀링 계층)에 대한 부호 입력(들)을 조사함으로써 예측적으로 결정될 수 있다. 부동 소수점 및 정수 산술은 최상위 비트(most significant bit)(MSB)로 명시적으로 신호될 수 있어서 콘볼루션 계층에서 곱셈될 입력 벡터들에 걸친 간단한 비트별 배타적 OR(XOR) 연산은, 도 13에 도시된 바와 같이, 어떤 곱셈이 출력 제로를 생성할지를 예측할 수 있다. 결과적인 부호-예측된 ReLU 비트맵 벡터는, 위의 다른 예에서 설명된 방식 등으로, 메모리로부터 판독된 곱셈 및 연관된 계수들 중 제거할 서브세트를 결정하기 위한 기초로서 이용될 수 있다.
ReLU 비트맵 생성을 이전 풀링 또는 콘볼루션 스테이지(즉, 대응하는 ReLU 스테이지 이전의 스테이지)로의 다시 제공하는 것은, 추가 전력을 초래할 수 있다. 예를 들어, 곱셈기들이 ReLU 활성화 로직에 의해 궁극적으로 0으로 설정될 네거티브 출력을 생성할 때 이들을 디스에이블하기 위해 부호-예측 로직이 제공될 수 있다. 예를 들어, 이것은 곱셈기(1314) 입력(1301 및 1302)의 2개의 부호 비트(1310 및 1315)가 XOR 게이트에 의해 논리적으로 결합되어 PreReLU 비트맵 비트(1303)를 형성하는 경우에 볼 수 있다. 바로 이 신호가 곱셈기(1314)의 연산을 디스에이블시키는데 이용될 수 있으며, 디스에이블시키지 않으면, 다른 예들 중에서도 특히, 다음 콘볼루션 스테이지(1390)에서 곱셈을 위해 입력되기 전에 ReLU 로직에 의해 0으로 설정될 네거티브 출력을 생성하면서 에너지를 불필요하게 소비할 것이다.
1300, 1301, 1302 및 1303의 표현(표기 A)은 도 13에서 B로 표기된 표현으로 나타낸 것의 상위 레벨 뷰를 보여준다는 점에 유의한다. 이 예에서, 블록 1302에 대한 입력은 2개의 부동 소수점 피연산자를 포함할 수 있다. 입력 1301은, 명시적 부호-비트(1310), 복수의 비트를 포함하는 가수(Mantissa)(1311), 및 복수의 비트(1312)를 포함하는 지수(exponent)를 포함할 수 있다. 유사하게, 입력 1302는, 마찬가지로, 부호(1315), 가수(1317), 및 지수(1316)를 포함할 수 있다. 일부 구현에서, 가수 및 지수는, 결과(1303)의 부호가 각각 1301 및 1302 또는 1310 및 1315의 부호에만 의존하기 때문에 상이한 정밀도를 가질 수 있다. 사실상, 1301과 1302 어느 것도 부동 소수점 숫자일 필요가 없지만, 부호있는 숫자이고 MSB(최상위 비트)가 명시적으로 또는 묵시적으로 사실상 부호 비트인 한(예를 들어, 숫자가 1 또는 2의 보수인 경우 등), 임의의 정수 또는 고정 소수점 포맷일 수 있다.
도 13의 예를 계속하면, 2개의 부호 입력(1310 및 1315)은 XOR(때때로 여기서는 대안적으로 ExOR 또는 EXOR로 표기됨) 게이트를 이용하여 결합되어 비트맵 비트(1303)를 생성할 수 있으며, 이것은 다음 콘볼루션 블록(예를 들어, 1390)에서 생략될 수 있는 다운스트림 곱셈을 식별하도록 하드웨어를 이용하여 처리될 수 있다. 동일한 XOR 출력(1303)은 또한, 2개의 입력 숫자(1313)(예를 들어, 1301에 대응) 및 1318(예를 들어, 1302에 대응)가 반대 부호를 갖고, ReLU 블록(1319)에 의해 제로로 설정되어 RELU 출력 벡터(13191)에서 제로 값이 되고 후속 콘볼루션 스테이지(1390)에 입력될 네거티브 출력(1304)을 생성할 경우에 곱셈기(1314)를 디스에이블하는데 이용될 수 있다. 따라서, 일부 구현에서, PreReLU 비트맵(1320)은 병렬로 비트맵 스케줄러(1360)에 전송될 수 있으며, 비트맵 스케줄러(1360)는 콘볼루션 유닛(1390) 상에서 곱셈이 실행(및/또는 생략)되도록 스케줄링할 수 있다. 예를 들어, 비트맵(1320)의 모든 제로에 대해, 대응하는 콘볼루션 연산은 콘볼루션 유닛(1390)에서 스킵될 수 있다. 병렬로, 비트맵(1320)은 콘볼루션 유닛(1390)에서 이용하기 위한 가중치의 인출을 제어하는 예시적인 주소 생성기(1330)에 의해 소비될 수 있다. 비트맵(1320)의 1에 대응하는 주소의 목록은 주소 생성기(1330)에서 컴파일될 수 있고 DDR 제어기(1350)를 통해 DDR 스토리지(1370)로의 경로를 제어하거나 또는 온칩 RAM(1380)으로의 경로를 제어할 수 있다. 어느 경우든, 다른 예들 중에서도 특히, PreReLU 비트맵(1320)의 1에 대응하는 가중치는(예를 들어, 가중치 입력 1371에 대한 클록 사이클의 관점에서의 약간의 레이턴시 후) 인출되어 콘볼루션 블록(1390)에 제공될 수 있는 반면, 0에 대응하는 가중치의 인출은 생략될 수 있다.
위에서 언급된 바와 같이, 일부 구현에서, 주소 생성기(1330), DDR 제어기(1350) 및 DDR(1350)을 통한 지연 또는 주소 생성기(1330) 및 내부 RAM(1380)를 통한 경로를 밸런싱하기 위해 비트맵 스케줄러(1360)와 콘볼루션 유닛(1390) 사이에 지연(예를 들어, 1361)이 삽입될 수 있다. 지연은, 비트맵 스케줄러에 의해 구동되는 콘볼루션이, 콘볼루션 유닛(1390)에서의 콘볼루션 계산을 위한 대응하는 가중치와 제시간에 정확하게 정렬되게 할 수 있다. 사실상, 타이밍 관점에서, ReLU 블록(1319)의 출력보다 일찍 ReLU 비트맵을 생성하는 것은, 추가 시간이 확보되는 것을 허용할 수 있으며, 이 추가 시간은, 메모리(예를 들어, RAM 1380 또는 DDR 1370)에 대한 판독이 주소 생성기(1330)에 의해 생성되기 전에 이를 가로채어 (예를 들어, 0에 대응하는) 판독들 중 일부가 무시될 수 있도록 하는데 이용될 수 있다. 메모리 판독은 칩 상의 로직 연산보다 훨씬 많을 수 있으므로, 이러한 메모리 인출을 배제시키는 것은, 다른 예시적인 이점들 중에서도 특히, 상당한 에너지 절약으로 이어질 수 있다.
일부 구현에서, DRAM 액세스 시간을 커버하기 위한 클록 사이클 측면에서의 절약이 여전히 불충분하다면, DDR로부터 부호-비트 그룹(예를 들어, 1301)을 미리 판독하기 위해 블록 지향형 기술이 이용될 수 있다. 이들 부호 비트 그룹은, 한 세트의 (복수의) XOR 게이트(1300)를 이용하여 PreReLU 비트맵 블록을 생성하기 위해(예를 들어, 다른 예들 중에서도 특히, 2D 또는 3D 어레이/행렬 사이의 2D 또는 3D 콘볼루션에서 부호 비트들 사이의 차이를 계산하기 위해) 입력 이미지 또는 중간 콘볼루션 계층(1302)으로부터의 부호 블록과 함께 이용될 수 있다. 이러한 한 구현에서, DDR 또는 온칩 RAM에서의 추가 1 비트 저장이 제공되어 각각의 가중치의 부호를 저장할 수 있지만, 이것은, ReLU 스테이지로부터의 0으로 곱해질 예정인 DDR 또는 RAM으로부터의 가중치의 판독을 회피하는 방식으로 많은 사이클의 레이턴시가 커버되는 것을 허용할 수 있다. 일부 구현에서, 다른 예시적인 고려사항 및 구현들 중에서도 특히, 지수 및 가수와는 독립적으로 어드레싱가능한 방식으로 부호가 저장되므로 DDR 또는 온칩 RAM에서의 가중치 당 추가 1 비트 저장을 피할 수 있다.
일부 구현에서, 위에서 논의된 모델을 포함한, 머신 학습 모델을 훈련시키기 위해 용이하게 이용가능한 훈련 세트에 액세스하는 것이 특히 어려울 수 있다. 실제로, 어떤 경우에는, 다른 예시적인 문제점들 중에서도 특히, 훈련 세트가 특정한 머신 학습 응용에 대해 존재하지 않거나, 훈련될 모델에 대한 입력을 생성하는 센서 유형에 대응하지 않을 수 있다. 일부 구현에서, 신경망 또는 기타의 심층 강화 학습 모델을 훈련하기 위해 합성 훈련 세트가 개발되고 이용될 수 있다. 예를 들어, 특정한 사람, 동물, 객체, 제품 등의 수백 또는 수천개의 이미지로 구성된 훈련 데이터세트를 획득하거나 캡처하는 것이 아니라, (예를 들어, 그래픽 디자인 또는 3D 사진 편집 도구를 이용하여) 수동으로 또는 (예를 들어, 3D 스캐너를 이용하여) 자동으로 대상의 합성 3D 표현이 생성될 수 있고, 결과적인 3D 모델은 3D 모델의 대상에 관련된 훈련 데이터를 자동으로 생성하기 위한 기초로서 이용될 수 있다. 이 훈련 데이터는 다른 훈련 데이터와 결합되어 적어도 부분적으로 합성 훈련 데이터로 구성된 훈련 데이터세트를 형성할 수 있고, 훈련 데이터세트는 하나 이상의 머신 학습 모델을 훈련시키는데 이용될 수 있다.
한 예로서, 자율 머신이 상점, 창고 또는 다른 비즈니스의 선반을 스캔하여 상점 내의 소정의 제품의 가용성을 평가하는 것을 허용하기 위해 여기서 소개된 것 등의 심층 강화 학습 모델 또는 기타의 머신 학습 모델이 이용될 수 있다. 따라서, 머신 학습 모델은 자율 머신이 개개의 제품을 검출하는 것을 허용하도록 훈련될 수 있다. 일부 경우에, 머신 학습 모델은 선반에 어떤 제품이 있는지를 식별할 뿐만 아니라 선반에 얼마나 많은 제품이 있는지를 식별할 수도 있다(예를 들어, 깊이 모델 이용). 상점이 보유할 수 있는 각각의 모든 제품 및 제품의 각각의 모든 구성(예를 들어, 다양한 디스플레이, 다양한 조명의 제품의 각각의 자세 또는 뷰(전체적 또는 부분적), 제품 패키징의 다양한 배향의 뷰 등)에 대한 (예를 들어, 동일하거나 상이한 상점의) 일련의 실제 이미지로 머신 학습 모델을 훈련시키는 것이 아니라, (예를 들어, 제품의 제공자, 머신 학습 모델이 제공자 또는 다른 소스에 의해) 각각의 제품(또는 제품들 중의 적어도 일부)의 합성 3D 모델이 생성될 수 있다. 3D 모델은, 그 상세사항 및 해상도에서 사실적인 사진 품질 또는 그에 근접할 수 있다. 3D 모델은 다른 3D 모델과 함께 소비용으로 제공되어, 다른 예시적인 응용들 중에서도 특히, 주어진 대상(예를 들어, 제품) 또는 심지어 상이한 대상들의 모음(예를 들어, 상이한 배향, 상이한 조명 등에서, 서로 나란히 배치된 제품들의 다양한 조합을 갖춘 상점 선반에 있는 제품들의 모음)에 대한 다양한 상이한 뷰를 생성하여 합성 훈련 데이터 이미지 세트를 생성할 수 있다.
도 14로 돌아가면, (심층 강화 학습 모델, Siamese 신경망, 콘볼루션 신경망, 및 기타의 인공 신경망 등의) 하나 이상의 머신 학습 모델(예를 들어, 1435)을 훈련시키기 위해 머신 학습 시스템(1430)이 이용할 합성 훈련 데이터를 생성하는 훈련 세트 생성기(1420)를 구현하는 예시적인 컴퓨팅 시스템(예를 들어, 1415)의 간소화된 블록도(1400)가 도시되어 있다. 예를 들어, 3D 스캐너(1405) 또는 다른 도구를 이용하여 (예를 들어, 사람, 내부 및/또는 외부 아키텍처, 풍경 요소, 제품, 가구, 교통 요소(예를 들어, 도로 표지판, 자동차, 교통 위험 등), 및 기타의 예의) 한 세트의 3D 모델(1410)을 생성할 수 있고, 이들 3D 모델(1410)은 입력으로서 훈련 세트 생성기(1420)에 제공되어 소비될 수 있다. 일부 구현에서, 훈련 데이터 생성기(1420)는, 3D 모델(1410)로부터, 훈련 이미지 세트, 포인트 클라우드, 깊이 맵, 또는 3D 모델(1410)로부터의 기타의 훈련 데이터(1425)를 자동으로 렌더링할 수 있다. 예를 들어, 훈련 세트 생성기(1420)는 3D 모델을 자동으로 틸트, 회전 및 줌하고 결과적인 상이한 배향 및 자세뿐만 아니라, 상이한(예를 들어, 컴퓨터 시뮬레이션된) 조명에서의 3D 모델의 이미지 모음을 캡처하도록 프로그램적으로 구성될 수 있으며, 여기서 전체 3D 모델 대상의 전체 또는 일부가 이미지에 캡처되는 등에 의해 많은 다양한 이미지를 캡처하여 그 대상을 캡처하는 "완전하고" 다양한 이미지 모음을 충족한다.
일부 구현에서, 3D 모델로부터 생성된 합성 훈련 이미지들은 이들이 기반으로 하는 실제 대상(들)에 필적하는 사실적인 사진 해상도를 가질 수 있다. 일부 경우에, 훈련 세트 생성기(1420)는, (고해상도 3D 모델에 비해) 결과 이미지의 해상도 및 품질을 의도적으로 다운그레이드하는 방식으로 3D 모델로부터 이미지 또는 기타의 훈련 데이터를 자동으로 렌더링하거나 생성하도록 구성될 수 있다. 예를 들어, 훈련될 머신 학습 모델에 대한 입력을 제공할 것으로 예상되는 센서(예를 들어, 3D 스캐너, 카메라 등)에 의해 생성될 수 있는 품질 레벨과 필적하는 품질 레벨로 이미지를 변환하기 위해, 이미지 품질은, 다른 조정들 중에서도 특히, 노이즈를 추가하고, 필터(예를 들어, Gaussian 필터)를 적용하고, 하나 이상의 렌더링 파라미터를 조정하여 노이즈를 도입하고, 콘트라스트를 감소시키고, 해상도를 감소시키고, 밝기 레벨을 변경함으로써 저하될 수 있다.
심층 신경망을 훈련하기 위해 특별히 데이터세트를 구성할 때, 훈련 세트 생성기 시스템에 의해 다수의 상이한 조건 또는 규칙이 정의되고 고려될 수 있다. 예를 들어, CNN은 전통적으로 정확한 결과를 생성하기 위해 많은 양의 훈련용 데이터를 요구한다. 합성 데이터는 이용가능한 훈련 데이터세트가 너무 작은 경우를 피할 수 있다. 따라서, 특정한 머신 학습 모델에 대해 훈련 데이터 샘플의 목표 개수가 식별될 수 있고, 훈련 세트 생성기는 원하는 양의 훈련 샘플을 충족시키도록 생성된 훈련 샘플의 양과 유형에 기초할 수 있다. 또한, 훈련 세트 생성기에 의해 조건이 설계되고 고려되어 샘플에서 임계 격차량보다 많은 세트를 생성할 수 있다. 이것은, 머신 학습 모델의 과도-적합을 최소화하고 매우 많은 수의 다양한 시나리오 하에서 양호한 성능을 보이는데 필요한 일반화를 제공하기 위한 것이다. 이러한 격차는, 다른 예들 중에서도 특히, 3D 모델로부터 개개의 샘플을 생성하는데 이용되는 카메라 각도, 카메라 높이, 시야, 조명 조건 등의, 훈련 세트 생성기에 의해 적용되는 조정가능한 파라미터를 통해 달성될 수 있다.
일부 구현에서, 센서의 특정한 유형 또는 모델의 양태(예를 들어, 특정한 2D 또는 3D 카메라, LIDAR 센서 등)를 정의하는 센서 모델(예를 들어, 1440)이 제공될 수 있으며, 모델(1440)은, 모델링된 센서에 의해 생성된 데이터(예를 들어, 해상도, 눈부심에 대한 감수성, 명/암에 대한 민감성, 노이즈에 대한 감수성 등)를 시뮬레이션하기 위해 (예를 들어, 3D 모델로부터 생성된) 원시 이미지, 포인트 클라우드 또는 기타의 훈련 데이터에 대해 이루어질 필터들과 기타의 수정을 정의한다. 이러한 경우, 훈련 세트 생성기는 모델링된 센서에 의해 생성된 등가의 이미지 또는 샘플을 모방하기 위해 3D 모델로부터 생성된 샘플을 인위적으로 저하시킬 수 있다. 이러한 방식으로, (예를 들어, 센서(들)의 실세계 버전에 의해 생성되는) 훈련된 머신 학습 모델에 입력될 데이터와 품질면에서 필적하는 합성 훈련 데이터의 샘플이 생성될 수 있다.
도 15로 돌아가면, 합성 훈련 데이터의 예시적인 생성을 나타내는 블록도(1500)가 도시되어 있다. 예를 들어, 특정한 대상의 3D 모델(1410)이 생성될 수 있다. 3D 모델은 대상을 현실적으로 표현하거나 사실적인 사진으로 표현할 수 있다. 도 15의 예에서, 모델(1410)은 한 세트의 유리 병을 포함하는 카드보드 패키지를 나타낸다. 다양한 조명, 환경, 조건(예를 들어, 사용중/비사용중, 개방된/닫혀진, 손상된 등)에서 3D 모델의 뷰를 포함한, 3D 모델(1410)의 다양한 뷰를 캡처하는 3D 모델(1410)에 기초하여 이미지 모음(예를 들어, 1505)이 생성될 수 있다. 이미지 모음(1505)은, 예시적인 훈련 데이터 생성기의 (예를 들어, 센서 모델에서 정의된) 센서 필터를 이용하여 처리될 수 있다. 이미지(1505)의 처리는, 이미지(1505)를 저하시키게끔 이미지(1505)를 수정하여 실제 센서를 이용하여 캡처된 이미지의 품질 및 피처를 모방하는 "실물에 가까운" 이미지(1425)를 생성할 수 있다.
일부 구현에서, 합성 훈련 데이터 샘플의 저하된 버전을 생성하는 것을 보조하기 위해, 모델(예를 들어, 1410)은 모델 대상의 재료 및 기타의 특성을 나타내는 메타데이터를 포함할 수 있다. 모델에서 정의된 대상의 특성은, 다른 고려사항들 중에서도 특히, 조명, 모델링된 대상에 관한 센서의 위치, 대상의 특성(예를 들어, 재료(들))이 주어졌을 때, 실물 이미지(또는 포인트 클라우드)가 특정한 센서에 의해 어떻게 생성될 것인지를 결정하기 위해 훈련 데이터 생성기(예를 들어, 센서 모델과 결합)에 의해 이러한 구현에서 고려될 수 있다. 예를 들어, 병의 패키지를 모델링하는 도 15의 특정한 예에서 모델(1410)은, 3D 모델의 어떤 부분(예를 들어, 어떤 픽셀 또는 다각형)이 유리 재료(병)에 대응하고 어떤 부분이 카드보드(패키지)에 대응하는지를 정의하는 메타데이터를 포함할 수 있다. 따라서, 훈련 데이터 생성기가 합성 이미지를 생성하고 (예를 들어, 3D 모델의 다양한 표면에서 광이 반사되는 방식을 모델링하기 위해) 이미지(1505)에 센서 필터링(1510)을 적용할 때, 이들 특성에 대한 모델링된 센서의 반응이 더욱 현실적으로 적용되어, 훈련 데이터를 생성하는데 이용될 경우의 실제 센서에 의해 생성되는 것과 더욱 일치하는 신뢰성 있는 훈련 데이터를 생성할 수 있다. 예를 들어, 3D 모델에서 모델링된 재료는, 예를 들어 도 15의 예에서 병의 유리 표면의 반사에 대응하는 눈부심, 노이즈 또는 기타의 불완전성을 갖고 반사성이 아닌 카드보드 표면에 대응하는 더 적은 노이즈 또는 눈부심을 갖는 이미지를 생성하기 위해, 센서의 민감성을 모델링하는 훈련 데이터 이미지가 생성되는 것을 허용할 수 있다. 유사하게, 대상의 3D 모델 표현에서 모델링된 재료 유형, 온도 및 기타의 특성은, 상이한 센서들에 대해 상이한 영향을 가질 수 있다(예를 들어, 카메라 센서 대 LIDAR 센서). 따라서, 예시적인 테스트 데이터 생성기 시스템은, 실제 센서에 의해 생성될 수 있는 이미지 버전을 시뮬레이션하는 이미지의 저하된 버전(예를 들어, 1425)을 생성하기 위해 이미지(1505)에 적용할 필터 또는 처리를 자동으로 결정할 때 3D 모델의 메타데이터뿐만 아니라 특정한 센서 모델 양쪽 모두를 고려할 수 있다.
추가적으로, 일부 구현에서, 이미지(1505)의 추가적인 후처리는 피사계 심도 조정을 포함할 수 있다. 일부 3D 렌더링 프로그램에서, 소프트웨어에서 이용되는 가상 카메라는 완벽하며, 가까운 객체와 먼 객체 양쪽 모두를 완벽하게 초점을 맞추어 캡처할 수 있다. 그러나, 이것은 실제 카메라나 센서의 경우에는 해당되지 않을 수 있다(그리고, 훈련 세트 생성기에 의해 이용되는 대응하는 센서 모델의 속성 내에서 그렇게 정의될 수 있음). 따라서, 일부 구현에서, 후처리 동안 이미지에 피사계 심도 효과가 적용될 수 있고(예를 들어, 훈련 세트 생성기가 카메라가 배경에서 초점을 맞추고 있는 지점을 자동으로 식별하고 선택함으로써), 모델링된 대상의 피처가 초점이 맞지 않게 나타나도록 함으로써, 결함이 있지만 더욱 사실적인 사진 이미지의 인스턴스를 생성한다(예를 들어, 1425). 추가적인 후처리는, 사진에 존재하는 노이즈 아티팩트를 시뮬레이션하기 위해 이미지에 노이즈를 추가하는 것을 포함할 수 있다. 예를 들어, 훈련 세트 생성기는, 다른 예시적인 기술들 중에서도 특히, 광선 추적 알고리즘이 객체에 관해 계산하는 광 바운스(light bounce)의 수를 제한함으로써 노이즈를 추가하는 것을 포함할 수 있다. 추가로, 합성 프로세스의 결과로서 발생하는 지나치게 또는 비현실적으로 매끄러운 에지 또는 표면을 제거하기 위한 노력으로 렌더링된 모델의 상단에 약간의 픽셀화가 적용될 수 있다. 예를 들어, 픽셀들의 "블록들"을 평균화하기 위해 가벼운 블러 계층(light blur layer)이 추가될 수 있으며, 이것은 다른 후처리 연산과 결합하여(예를 들어, 대응하는 센서 모델에 기초하여) 더욱 현실적인 합성 훈련 샘플을 생성할 수 있다.
도 15에 도시된 바와 같이, 예시적인 3D 모델(1410)로부터 훈련 데이터 샘플(예를 들어, 1425)을 생성할 때, 샘플(예를 들어, 이미지, 포인트 클라우드 등)은 다른 실제의 또는 합성적으로 생성된 훈련 샘플에 추가되거나 포함되어 딥 러닝 모델에 대한 훈련 데이터세트를 구축할 수 있다(예를 들어, 1435). 도 14의 예에 역시 도시된 바와 같이, (예를 들어, 예시적인 머신 학습 시스템(1430)의) 모델 훈련기(1455)는 하나 이상의 머신 학습 모델(1435)을 훈련시키는데 이용될 수 있다. 일부 경우에, 합성 깊이 이미지가 3D 모델(들)로부터 생성될 수 있다. 훈련된 머신 학습 모델(1435)은, 다른 예들 중에서도 특히, 객체 인식, 자동화된 재고 처리, 네비게이션 등의 다양한 작업을 수행하기 위해 자율 머신에 의해 이용될 수 있다.
도 14의 예에서, 예시적인 훈련 세트 생성기(1420)를 구현하는 컴퓨팅 시스템(1415)은, 하나 이상의 데이터 처리 장치(1445), 하나 이상의 컴퓨터-판독가능한 메모리 요소(1450), 및 훈련 세트 생성기(1420)를 구현하기 위해 하드웨어 및/또는 소프트웨어로 구현된 로직을 포함할 수 있다. 도 14의 예는 머신 학습 모델(예를 들어, 1435)을 훈련 및/또는 실행하는데 이용되는 머신 학습 시스템(1430)과는 별개로서 컴퓨팅 시스템(1415)(및 그 컴포넌트)을 도시하고 있지만, 일부 구현에서는, 다른 대안적인 구현 및 예시적인 아키텍처들 중에서도 특히, 모델 생성기(1405), 훈련 세트 생성기(1420), 및 머신 학습 시스템(1430) 중 2개 이상의 결합된 기능을 구현하기 위해 단일 컴퓨팅 시스템이 이용될 수 있다는 것을 이해해야 한다.
일부 구현에서, 합성 훈련 데이터를 이용하여 원샷 학습을 가능케하는 컴퓨팅 시스템이 제공될 수 있다. 이러한 시스템은 수십만개의 이미지를 훈련시킬 것을 요구하지 않고 객체 분류를 허용할 수 있다. 원샷 학습은, 매우 적은 수의 훈련 이미지, 심지어, 일부 경우에는, 단일 훈련 이미지로부터의 분류를 허용할 수 있다. 이것은 특정한 머신 학습 모델을 훈련시키기 위한 훈련 세트를 개발할 때 시간과 자원을 절약할 수 있다. 도 16 및 도 17의 예에 나타낸 것들 등의 일부 구현에서, 머신 학습 모델은 입력을 분류하기 위해 모델 학습이 아니라 2개의 입력을 구별하는 것을 학습하는 신경망일 수 있다. 이러한 머신 학습 모델의 출력은 모델에 제공된 2개의 입력 사이의 유사성의 정도를 식별할 수 있다.
일부 구현에서, 도 14의 예에서와 같이, 소수의 훈련 예로부터 객체 카테고리를 분류하는 능력을 시뮬레이션할 수 있는 머신 학습 시스템이 제공될 수 있다. 이러한 시스템은 또한, 대응하는 머신 학습 모델을 효과적으로 훈련시키기 위해 복수의 클래스의 대규모 데이터세트를 생성할 필요성을 제거한다. 마찬가지로, 복수의 클래스에 대한 훈련을 요구하지 않는 머신 학습 모델이 선택될 수 있다. 머신 학습 모델은, 비교 이미지와 함께 객체의 단일 이미지를 시스템에 공급하여 그 객체(예를 들어, 제품, 사람, 동물 또는 기타의 객체)를 인식하는데 이용될 수 있다. 비교 사진이 시스템에 의해 인식되지 못한다면, 머신 학습 모델(예를 들어, Siamese 네트워크)을 이용하여 그 객체는 정합되지 않는 것으로 결정된다.
일부 구현에서, Siamese 네트워크는 위의 예에서 소개된 바와 같이 합성 훈련 데이터를 이용하여 훈련된 머신 학습 모델로서 이용될 수 있다. 예를 들어, 도 16은 2개의 동일한 신경망(1605a, 1605b)으로 구성된 예시적인 Siamese 네트워크를 나타내는 간소화된 블록도(1600)를 도시하며, 각각의 네트워크는 훈련후 동일한 가중치를 갖는다. 2개의 동일한 네트워크의 출력의 유사성을 평가하고 결정된 유사도를 임계값에 대조하여 비교하기 위해 비교 블록(예를 들어, 1620)이 제공될 수 있다. 유사도가 임계값 범위(예를 들어, 주어진 임계값 미만 또는 초과) 내에 있다면, (2개의 신경망(1605a, 1605b) 및 비교 블록(1620)으로 구성된) Siamese 네트워크의 출력은 (예를 들어, 1625에서) 2개의 입력이 공통 대상을 참조하는지를 나타낼 수 있다. 예를 들어, 2개의 샘플(1610, 1615)(예를 들어, 이미지, 포인트 클라우드, 깊이 이미지 등)이 2개의 동일한 신경망(1605a, 1605b) 각각에 대한 각각의 입력으로서 제공될 수 있다. 한 예에서, 신경망(205a, 1605b)은 ResNet-기반의 네트워크(예를 들어, ResNet50 또는 다른 변형)로서 구현될 수 있고, 각각의 네트워크의 출력은 비교 블록(1620)에 입력되는 피처 벡터일 수 있다. 일부 구현에서, 비교 블록은 2개의 입력(1610, 1615)이 얼마나 유사한지를 나타내기 위해 2개의 피처 벡터 입력으로부터 유사성 벡터를 생성할 수 있다. 일부 구현에서, 이러한 Siamese 네트워크 구현에 대한 입력(예를 들어, 1610, 1615)은, 에이전트의 현재 관찰(예를 들어, 자율 머신의 센서에 의해 생성된 이미지 또는 깊이 맵)과 목표를 나타내는 2개의 이미지를 구성할 수 있다. Deep Siamese 네트워크는 차별적 임베딩 학습을 위한 2-스트림 신경망 모델의 한 유형으로서, 합성 훈련 데이터를 이용하여 원샷 학습을 가능케할 수 있다. 예를 들어, 2개의 입력(예를 들어, 1610, 1615) 중 적어도 하나는, 위에서 논의된 바와 같이, 합성적으로 생성된 훈련 이미지 또는 기준 이미지일 수 있다.
일부 구현에서, 다른 예시적인 구현들 중에서도 특히, 합성 데이터를 이용하여 훈련된 Siamese 네트워크 또는 기타의 머신 학습 모델의 실행은, 범용 마이크로컴퓨터와 인터페이스할 수 있는, 머신 학습 가속기(예를 들어, Intel Movidius Neural Compute Stick(NCS)) 등의 전문화된 머신 학습 하드웨어를 이용할 수 있다. 이 시스템은 다양한 응용에서 이용될 수 있다. 예를 들어, 네트워크는, 사람, 동물 또는 차량에 대한 액세스를 허용하는 액츄에이터가 트리거되도록 허용하기 전에 사람, 동물 또는 차량을 인식해야 하는 응용 등의, 보안 또는 인증 응용에서 이용될 수 있다. 구체적인 예로서, 스마트 도어에는, 도어에 접근하는 사람이나 동물을 인식하기 위한 이미지 센서가 제공될 수 있으며, 한 세트의 인가된 사용자들 중 하나와 정합하는 사람들에게만 액세스를 부여할 수 있다(머신 학습 모델을 이용함). (예를 들어, 합성 데이터로 훈련된) 이러한 머신 학습 모델은 또한, 다른 예들 중에서도 특히, 제품 확인, 재고 관리, 및 상점에서 제품 인식을 이용하여 제품이 (또는 얼마나 많은 제품이) 존재하는지 또는 특정한 위치(예를 들어, 적절한 선반) 내에 존재하는지를 결정하는 기타의 응용 등의, 산업적 또는 상업적 응용에서 이용될 수 있다. 예를 들어, 도 17의 간소화된 블록도(1700)에 의해 예시된 예에서 나타낸 바와 같이, 소비자 제품에 관련된 2개의 샘플 이미지(1705, 1710)가 임계값 결정 로직(1720)을 이용하여 Siamese 네트워크에 대한 입력으로서 제공될 수 있다. Siamese 네트워크 모델(1720)은 2개의 샘플 이미지(1705, 1710)가 동일한 제품의 이미지인지 또는 아닌지를 결정할 수 있다(1715에서). 실제로, 일부 구현에서, 이러한 Siamese 네트워크 모델(1720)은 다양한 회전 및 폐색에서 제품의 식별을 가능케할 수 있다. 일부 예에서, 3D 모델은, 다른 예시적인 고려사항 및 피처들 중에서도 특히, 추가적인 레벨의 확인을 위해 더 복잡한 제품 및 객체에 대한 복수의 기준 이미지를 생성하는데 이용될 수 있다.
일부 구현에서, 컴퓨팅 시스템에는, 포인트 클라우드 등록 또는 2개 이상의 별개의 포인트 클라우드의 병합을 수행하기 위해 머신 학습 작업을 수행하도록 적응된 로직 및 하드웨어가 제공될 수 있다. 포인트 클라우드의 병합을 수행하려면, 포인트 클라우드의 내용을 정렬하는 변환을 찾아야 한다. 이러한 문제는, 다른 이용 사례들 중에서도 특히, 로봇 인식 응용, 미지의 환경에 대한 맵 생성 등의, 자율 머신을 수반하는 응용에서 흔히 발생한다.
일부 구현에서, 콘볼루션 네트워크는 2D 이미지들 사이의 상대적 자세를 발견하기 위한 솔루션으로서 이용될 수 있으며, 전통적인 피처-기반의 접근법에 필적하는 결과를 제공한다. 3D 스캔 기술에서의 진보는, 신경망 훈련에 유용한 3D 데이터를 이용한 복수의 데이터세트의 추가적 생성을 허용한다. 일부 구현에서, 2개 이상의 상이한 입력의 스트림을 수락할 수 있는 머신 학습 모델이 제공될 수 있으며, 여기서, 2개 이상의 데이터 입력 각각은 각각의 3차원(3D) 포인트 클라우드를 구현한다. 2개의 3D 포인트 클라우드는, 2개의 상이한 각각의 자세로부터 측정된 동일한 물리적(또는 가상화된 버전의 물리적) 공간 또는 객체의 표현일 수 있다. 머신 학습 모델은, 이들 2개의 3D 포인트 클라우드 입력을 수락하고, 출력으로서, 2개의 3D 포인트 클라우드 소스들 사이의 상대적 또는 절대적 자세의 표시를 생성할 수 있다. 그 다음, 상대적 자세 정보는, (하나 이상의 복수의 상이한 센서 및 디바이스(예를 들어, 복수의 드론 또는 환경을 스캔하기 위해 움직이는 동일한 드론)로부터의) 환경의 (3D 포인트 클라우드의) 복수의 스냅 샷으로부터, 환경의 전역적 3D 포인트 클라우드 표현을 생성하는데 이용될 수 있다. 상대적 자세는 또한, 다른 예시적인 용도들 중에서도 특히, 특정한 머신에 의해 측정된 3D 포인트 클라우드 입력을, 환경의 이전에-생성된 전역적 3D 포인트 클라우드 표현과 비교하여 환경 내에서 특정한 머신의 상대적 위치를 결정하는데 이용될 수 있다.
하나의 예에서, 포인트들을 정렬하기 위해 3D 그리드를 생성하는 복셀화 포인트 클라우드 처리 기술이 이용되며, 여기서, 도 18의 예에 나타낸 바와 같이, 콘볼루션 계층이 적용될 수 있다. 일부 구현에서, 3D 그리드 또는 포인트 클라우드는, 본 명세서에서 논의된 바와 같이, 복셀-기반의 데이터 구조로서 구현되거나 표현될 수 있다. 예를 들어, 도 18의 예에서, (1810으로 표시된) 복셀-기반의 데이터 구조는, RGB-D 카메라 또는 예시적인 3D 환경의 LIDAR 스캔으로부터 생성된 포인트 클라우드(1805)로부터 생성될 수 있다. 일부 구현에서, Siamese 네트워크를 채용하는 것 등의 비교 머신 학습 모델에 제공될 수 있는 2개의 포인트 클라우드 입력은, 한 쌍의 3D 복셀 그리드(예를 들어, 1810)일 수 있다. 일부 예에서, 2개의 입력은, 위에서 논의된 것 등의, 복수의 잠재적 복셀 해상도 중 임의의 하나에서 먼저 복셀화(및 복셀-기반의 데이터 구조(예를 들어, 1810)로 변환)될 수 있다.
도 19의 간소화된 블록도(1900)에 의해 표현된 한 예에서, 머신 학습 모델은 표현 부분(1920) 및 회귀 부분(1925)으로 구성될 수 있다. 위에서 언급한 바와 같이, Siamese 네트워크-기반의 머신 학습 모델은, 한 쌍의 3D 복셀 그리드 입력(예를 들어, 1905, 1910) 또는 기타의 포인트 클라우드 데이터로부터 상대적 카메라 자세를 직접 추정하도록 구성될 수 있다. 3D 복셀 그리드는, 복셀 그리드 데이터의 조직화된 구조가 주어지면, 일부 구현에서 고전적인 콘볼루션 계층을 갖는 신경망에서 유리하게 이용될 수 있다. 네트워크를 이용하여 결정된 상대적 카메라 자세는, 복셀 그리드 입력들의 대응하는 포인트 클라우드들을 병합하는데 이용될 수 있다.
일부 구현에서, 예시적인 네트워크의 표현 부분(1920)은, 공유된 가중치 및 바이어스를 갖는 Siamese 네트워크를 포함할 수 있다. 각각의 분기(또는 Siamese 네트워크의 채널)는 연속적인 콘볼루션 계층에 의해 형성되어 각각의 입력(1905, 1910)의 피처 벡터를 추출한다. 또한, 일부 구현에서는, 각각의 콘볼루션 계층 이후에, ReLU(rectified linear unit)가 활성화 함수로서 제공될 수 있다. 일부 경우에, 데이터의 공간적 정보가 보존되도록 보장하기위해 풀링 계층이 생략될 수 있다. 네트워크의 표현 부분(1920)으로부터 출력된 피처 벡터들은 결합되어 회귀 부분(1925)에 들어갈 수 있다. 회귀 부분(1925)은 2개의 입력 포인트 클라우드(1905, 1910) 사이의 상대적 자세를 나타내는 출력(1930)을 생성할 수 있는 완전히 접속된 계층 세트들을 포함한다. 일부 구현에서, 회귀 부분(1925)은 2개의 완전히 접속된 세트의 계층들로 구성될 수 있는데, 하나는 자세 추정의 회전 값 생성을 담당하고, 제2 세트의 계층은 자세의 병진 값 생성을 담당한다. 일부 구현에서, 다른 예시적인 피처 및 구현들 중에서도 특히, 회귀 부분(1925)의 완전히 접속된 계층들은, ReLu 활성화 함수가 뒤따를 수 있다(최종 계층을 제외하고, 출력이 음의 값을 가질 수 있기 때문).
일부 구현에서, 자체-감독형 학습은, 위의 도 19의 예에서와 같이, 훈련 국면에서 머신 학습 모델에 관해 수행될 수 있다. 예를 들어, (도 19의 예에서 나타낸) 네트워크의 목적이 회귀 문제를 해결하는 것이므로, 네트워크가 그 솔루션을 달성하도록 안내하는 손실 함수가 제공될 수 있다. 2개의 포인트 클라우드의 정렬의 정량화를 통해 또는 라벨에 기반한 손실 함수 등의, 손실 함수를 도출하기 위해 훈련 국면이 제공될 수 있다. 한 예에서, 도 20의 간소화된 블록도(2000)에 나타낸 바와 같이, 예시적인 훈련 국면(2020)이 구현될 수 있고, 여기서, 입력(2005)은 (예를 들어, 대응하는 CNN(2010)과 연계하여) 이용된 ICP(Iterative Closest Point) 기반의 방법(2015)에 제공되어, 손실 함수(2025)에 의해 네트워크 예측과 비교되는 자세를 예측하기 위해 y에 대해 이용되는 데이터-기반의 실측 자료(ground truth)를 획득한다. 이러한 예에서, 라벨링된 실측 자료를 갖는 데이터세트를 가질 필요는 없다.
도 19 및 도 20의 예에서 논의된 것과 같은 훈련된 Siamese 네트워크 기반 모델은, 3D 맵 생성, 네비게이션 및 현지화 등의 응용에서 이용될 수 있다. 예를 들어, 도 21의 예에 도시된 바와 같이, 이러한 네트워크는, 환경 내에서 네비게이션을 보조하기 위해, 모바일 로봇(예를 들어, 2105) 또는 기타의 자율 머신에 의해 (머신 학습 하드웨어(예를 들어, NCS 디바이스 2110)와 연계하여) 이용될 수 있다. 네트워크는 또한, 다른 SLAM(Simultaneous Localization and Mapping) 응용들 중에서도 특히, (예를 들어, 로봇 또는 자율 머신에 의해 나중에 이용될 수 있는) 환경(2115)의 3D 맵을 생성하는데 이용될 수 있다.
일부 구현에서, 에지 투 에지 머신 학습(edge to edge machine learning)은 한 응용 내에서 센서 융합을 수행하는데 이용될 수 있다. 이러한 솔루션은, 상이한 센서들의 데이터를 융합함으로써 시간 경과에 따른 로봇의 움직임을 회귀하는데 적용될 수 있다. 이것은 충분히-연구된 문제이지만, 현재의 솔루션은 시간 경과에 따라 드리프트가 발생하거나 계산 비용이 많이 든다. 일부 예에서, 머신 학습 접근법은, 다른 예시적인 이점들 중에서도 특히, 데이터 내의 노이즈, 조명에서의 변화, 및 모션 블러에 덜 민감하면서 컴퓨터 비전 작업에 이용될 수 있다. 예를 들어, 콘볼루션 신경망(CNN)은, 객체 인식 및 광학 흐름 계산에 이용될 수 있다. CNN-기반의 모델을 실행하는 시스템 하드웨어는, 다른 예들 중에서도 특히, 신호 회귀에 대한 양호한 결과 등의, 추가적인 효율성을 인식하기 위해 장단기 메모리(long short-term memory)(LSTM) 블록 등의 하드웨어 컴포넌트 및 서브시스템을 채용할 수 있다.
한 예에서, 각각의 소스의 단점(예를 들어, 단안 RGB: 스케일 부족, IMU: 시간 경과에 따른 드리프트 등)을 독립적으로 극복하기 위해, (예를 들어, RGB 및 IMU 데이터 등의) 상이한 유형의 데이터의 복수의 소스로부터 입력을 수락할 수 있는 머신 학습 모델을 이용하는 시스템이 제공될 수 있다. 머신 학습 모듈은, 연결되어 완전히-접속된 계층들의 한 스테이지에 공급되어 복수의 데이터 스트림으로부터 결과(예를 들어, 자세)를 생성할 수 있는, 각각의 유형의 데이터 소스의 분석에 맞게 튜닝된 각각의 신경망(또는 기타의 머신 학습 모델)을 포함할 수 있다. 이러한 시스템은, 예를 들어, 다른 예시적인 응용들 중에서도 특히, 로봇, 드론 또는 차량 등의 머신의 자율 네비게이션을 가능케하기 위한 컴퓨팅 시스템에서 그 용도를 찾을 수 있다.
예를 들어, 도 22의 예에 나타낸 바와 같이, IMU 데이터는, IMU 데이터에 맞게 튜닝된 네트워크에 대한 입력으로서 제공될 수 있다. IMU 데이터는, 가속도와 배향을 측정함으로써 대상의 움직임을 추적하는 한 방식을 제공할 수 있다. 그러나, IMU 데이터는, 일부 경우에, 머신 학습 응용 내에서 단독으로 이용될 때, 시간 경과에 따라 드리프트가 발생할 수 있다. 일부 구현에서, LSTM을 이용하여 시간 경과에 따른 이 데이터의 관계를 추적하여 드리프트 감소를 도울 수 있다. 도 22의 간소화된 블록도(2200)에 의해 나타낸 한 예에서, n개의 원시 가속도계 및 자이로스코프 데이터 요소(2205)의 서브시퀀스가 예시적인 LSTM(2210)에 대한 입력으로 이용된다(예를 들어, 여기서, 각각의 데이터 요소는 6개의 값으로 구성됨(가속도계 및 IMU의 자이로스코프로 각각으로부터 3개의 축)). 다른 예에서, 입력(2205)은 이미지 프레임들 사이(예를 들어, 프레임 fi 및 fi+1 n IMU 상대적 자세들 사이)에서 n개의(예를 들어, 10개의) 상대적 자세들의 서브시퀀스를 포함할 수 있다. 완전-접속된 계층(FC)(2215)이 변환의 회전 및 병진 성분을 추출하기 위해 네트워크에 제공될 수 있다. 예를 들어, 완전-접속된 계층(2215)에 이어, 결과적인 출력은, 회전 값(2230)을 추출하기 위한 완전-접속된 계층(2220)과 병진 값(2225)을 추출하기 위한 완전-접속된 계층(2225) 각각에 공급될 수 있다. 일부 구현에서, 모델은, 더 적은 수의 LSTM 계층(예를 들어, 1개의 LSTM 계층) 및 더 많은 수의 LSTM 유닛(예를 들어, 512개의 또는 1024개의 유닛 등)를 포함하도록 구축될 수 있다. 일부 구현에서, 3개의 완전-접속된 계층(2215) 세트가 이용되고, 후속해서 회전(2220) 및 병진(2225) 완전-접속된 계층이 뒤따른다.
도 23의 예로 돌아가면, 단안 RGB 데이터 등의, 이미지 데이터의 데이터 스트림을 처리할 수 있는 네트워크의 간소화된 블록도(2300)가 도시되어 있다. 따라서, 광학 흐름을 계산하기 위해 훈련되고 자세 추정을 위한 차원 감소를 특징으로 할 수 있는, RGB CNN 부분이 제공될 수 있다. 예를 들어, 수개의 완전-접속된 계층들이 차원을 감소시키기 위해 제공되거나 및/또는 피처 벡터가 행렬로서 재성형되고 4개의 LSTM 세트가, 다른 예들 중에서도 특히, 피처들 사이의 대응관계를 찾고 차원을 감소시키는데 이용될 수 있다.
도 23의 예에서, 한 쌍의 연속적인 RGB 이미지를 입력(2305)으로서 수락하기 위해, FlowNetSimple, FlowNetCorr, Guided Optical Flow, VINet, 또는 기타의 광학 네트워크 등의, 미리-훈련된 광학 흐름 CNN(예를 들어, 2310)이 제공될 수 있다. 모델은 또한, 광학 흐름 CNN(2310)을 통해 이미지 쌍(2305)으로부터 피처 벡터를 추출한 다음 그 벡터를 감소시켜 입력(2305)에 대응하는 자세 벡터를 얻도록 구성될 수 있다. 예를 들어, 광학 네트워크 부분(2310)의 출력은, (예를 들어, 광학 네트워크 부분(2310)의 출력으로부터의 차원을 감소시키거나 및/또는 흐름 벡터 추정에 이용되는 정보를 제거하는데 이용되지만, 자세 추정에는 필요하지 않은) 하나 이상의 추가 콘볼루션 계층(2315) 세트에 제공될 수 있고, 그 출력은 (2320에서) 평탄화되어 대응하는 벡터가 될 수 있는 행렬일 수 있다. 벡터는 평탄화된 벡터의 차원 감소(예를 들어, 1536으로부터 512로의 감소)를 수행하기 위해 완전-접속된 계층(2325)에 제공될 수 있다. 이 감소된 벡터는 재성형 블록(2330)에 다시 제공되어 벡터를 행렬로 변환하거나 재성형할 수 있다. 재성형된 행렬의 각각의 방향(예를 들어, 좌측으로부터 우측, 상단으로부터 하단; 우측으로부터 좌측, 하단으로부터 상단; 상단으로부터 하단, 좌측으로부터 우측; 및 하단으로부터 상단, 우측으로부터 좌측)에 대해 하나씩인, 4개의 LSTM(2335) 세트가 시간에 따른 피처 대응관계를 추적하고 차원을 감소시키는데 이용될 수 있다. 그 다음, LSTM 세트(2335)의 출력은, 다른 예시적인 구현들 중에서도 특히, 이미지 쌍(2305)에 기초한 회전 값(2350)을 생성하기 위해 회전용 완전-접속된 계층(2340)에 제공될 수 있을 뿐만 아니라, 이미지 쌍(2305)에 기초하여 회전 값(2355)을 생성하기 위해 병진용 완전-접속 계층(2345)에도 제공될 수 있다.
도 24를 참조하면, (예를 들어, 도 22의 예에 나타낸 바와 같은) IMU 신경망 부분(2410) 및 (예를 들어, 도 23의 예에 나타낸 바와 같은) RGB 신경망 부분(2415)의 결과들을 연결하는 센서 융합 네트워크(2405)의 간소화된 블록도(2400)가 도시되어 있다. 이러한 머신 학습 모델(2405)은 각각의 센서 유형으로부터 최상을 취함으로써 센서 융합을 더욱 가능케할 수 있다. 예를 들어, 머신 학습 모델은 CNN과 LSTM을 결합하여 더 강력한 결과를 획득될 수 있다(예를 들어, CNN은 한 쌍의 연속된 이미지로부터 피처를 추출할 수 있고 LSTM은 센서의 점진적 움직임에 관한 정보를 획득될 수 있음). CNN과 LSTM 양쪽 모두의 출력은 이와 관련하여 상호보완적이어서, 2개의 연속된 프레임 사이의 차이(및 그 상대적 변환)와 그 실제 단위의 표현의 정확한 추정치를 머신에 제공한다.
도 24의 예에서, 각각의 센서-특유의 부분(예를 들어, 2405, 2410)의 결과는 연결되어, 결합된 머신 학습 모델(2405)(또는 센서 융합 네트워크)의 완전-접속된 계층에 제공되어, 다른 예들 중에서도 특히, 회전 자세와 병진 자세 양쪽 모두를 통합한 자세 결과를 생성할 수 있다. 개별적으로 IMU 데이터와 단안 RGB는 회귀 문제에 대한 신뢰성있는 솔루션을 위한 충분한 정보를 제공하지 않는 것처럼 보일 수 있지만, 여기서 도시되고 논의된 바와 같이, 이들 데이터 입력들을 결합하는 것은, (예를 들어, 도 25a 및 도 25b의 그래프 2500a, b에 나타낸 예시적인 결과에 도시된 바와 같이) 더 강력하고 신뢰성 있는 결과를 제공할 수 있다. 이러한 네트워크(2405)는 양쪽 센서 유형(예를 들어, RGB 및 IMU)의 유용한 정보를 이용한다. 예를 들어, 이 특정한 예에서, 네트워크(2405)의 RGB CNN 부분(2415)은 연속적인 이미지들 사이의 상대적 변환에 관한 정보를 추출할 수 있는 반면, IMU LSTM-기반의 부분(2410)은 변환에 대한 스케일을 제공한다. 각각의 부분(2410, 2415)에 의해 출력된 각각의 피처 벡터는 연결기 블록(2420)에 공급되어 벡터들을 연결하고 이 결과를 코어 완전-접속된 계층(2425)에 공급하며, 후속해서, 회전 값(2440)을 생성하는 회전용 완전-접속된 계층(2430)과, RGB 이미지(2305) 및 IMU 데이터(2205)의 조합에 기초하여 병진 값(2445)을 생성하는 병진용 완전-접속된 계층(2435)이 뒤따른다. 도 22 내지 도 24의 예는 RGB와 IMU 데이터의 융합을 나타내지만, 다른 데이터 유형으로 대체될 수 있고(예를 들어, IMU 데이터를 GPS 데이터로 대체 및 보완하는 등), 여기서 논의된 원리에 따라 머신 학습 모델에서 결합될 수 있다는 것을 이해해야 한다. 사실상, 다른 예시적인 수정 및 대안들 중에서도 특히, 다른 예시적인 구현에서는 2개보다 많은 데이터 스트림(및 연결기에 공급되는 대응하는 신경망 부분)이 제공되어 더욱 강력한 솔루션을 허용할 수 있다.
일부 구현에서, 신경망을 이용하여 머신 학습 작업을 수행하는 특정한 응용 및 하드웨어 플랫폼을 위한 하나 이상의 권장되는 신경망을 사용자 또는 시스템에게 식별시켜 줄 수 있는 신경망 최적화기가 제공될 수 있다. 예를 들어, 도 26에 도시된 바와 같이, 마이크로프로세서(2610) 및 컴퓨터 메모리(2615)를 포함하는 컴퓨팅 시스템(2605)이 제공될 수 있다. 컴퓨팅 시스템(2605)은 신경망 최적화기(2620)를 구현할 수 있다. 신경망 최적화기(2620)는, 머신 학습 작업 세트(예를 들어, 2635)가, 다른 예시적인 하드웨어 중에서도 특히, 본 명세서에 설명된 것 등의, 머신 학습 하드웨어(예를 들어, 2625)를 이용하여 수행되게 하는 실행 엔진을 포함할 수 있다. 신경망 최적화기(2620)는, 머신 학습 하드웨어(2625) 상에서의 실행을 위해 신경망 최적화기(2620)에 의해 선택되고 신경망 최적화기(2620)에 의해 모니터링되는 신경망들의 세트 중 하나를 이용하여, 머신 학습 하드웨어(2625)에 의해 수행될 때 머신 학습 작업의 실행을 모니터링하는 하나 이상의 프로브(예를 들어, 2630)를 추가로 포함할 수 있다. 프로브(2630)는, 다른 예시적인 파라미터들 중에서도 특히, 작업의 실행 동안 머신 학습 하드웨어(2625)가 소비하는 전력, 실행 동안 머신 학습 하드웨어의 온도, 특정한 신경망을 이용하여 작업을 완료하는데 걸린 시간 또는 속도, 특정한 신경망을 이용한 작업 결과의 정확성, (예를 들어, 이용되는 신경망을 저장하기 위해) 이용되는 메모리의 양 등의 속성을 측정할 수 있다.
일부 구현에서, 컴퓨팅 시스템(2605)은 신경망 생성 시스템(예를 들어, 2640)과 인터페이스할 수 있다. 일부 구현에서, 신경망(예를 들어, 2605)을 평가하는 컴퓨팅 시스템 및 신경망 생성 시스템(2640)은 동일한 컴퓨팅 시스템에서 구현될 수 있다. 신경망 생성 시스템(2640)은, 다양한 작업 및 솔루션에 대한 신경망 모델(예를 들어, CNN)을 사용자가 수동으로 설계할 수 있게 해준다. 일부 구현에서, 신경망 생성 시스템(2640)은 이전에 생성된 신경망의 저장소(2645)를 추가로 포함할 수 있다. 한 예에서, 신경망 생성 시스템(2640)(예를 들어, CAFFE, TensorFlow 등의 시스템)은 신경망의 세트(2650)를 생성할 수 있다. 이 세트는 무작위로 생성되어, 스크래치로부터 새로운 신경망을 생성하거나(예를 들어, 주어진 응용에 대해 적절한 일부 일반화된 파라미터에 기초하거나, 일반 신경망 유형 또는 종류에 따라) 및/또는 저장소(2645)로부터 신경망을 무작위로 선택할 수 있다.
일부 구현에서, 신경망들의 세트(2650)가 신경망 생성 시스템(2640)에 의해 생성되어 신경망 최적화기(2620)에 제공될 수 있다. 신경망 최적화기(2620)는, 표준화된 세트의 하나 이상의 머신 학습 작업이 이 신경망들의 세트(2650) 중 각각의 것을 이용하여 특정한 머신 학습 하드웨어(예를 들어, 2625)에 의해 수행되게 할 수 있다. 신경망 최적화기(2620)는, 하드웨어(2625)에 의한 신경망(2650) 세트 중 각각의 것의 이용과 관련하여 작업의 성능을 모니터링할 수 있다. 신경망 최적화기(2620)는 추가로 데이터를 입력으로 수락하여, 신경망 최적화기의 프로브(예를 들어, 2630)에 의해 측정된 파라미터 또는 특성들 중 어느 것이, 신경망 세트 중 어느 것이 "최상"인지를 결정하는데 있어서, 신경망 최적화기에 의해 가장 높게 가중되거나 우선순위를 부여받을지를 식별할 수 있다. (예를 들어, 무작위로 생성된) 신경망 세트 중 각각의 것을 이용하는 동안 이들 기준 및 신경망 최적화기의 관찰에 기초하여, 신경망 최적화기(2620)는, 제공된 기준에 기초하여, 특정한 머신 학습 하드웨어(예를 들어, 2625)를 위한 최상의 성능의 신경망을 식별하고 제공할 수 있다. 일부 구현에서, 신경망 최적화기는, 이 최고 성능의 신경망을 추가적인 이용 및 훈련 등을 위해 하드웨어에 자동으로 제공할 수 있다.
일부 구현에서, 신경망 최적화기는, 신경망 최적화기(예를 들어, 2620)에 의해 평가된 초기(예를 들어, 무작위로 생성된) 신경망 세트로부터 식별된 결과를 반복적으로 개선하기 위해 진화적 탐색(evolutionary exploration)을 채용할 수 있다. 예를 들어, 신경망 최적화기는 신경망 최적화기에 의해 평가된 초기 세트로부터 최고 성능의 하나 이상의 신경망의 특성을 식별할 수 있다. 그 다음, 신경망 최적화기는, 특정한 하드웨어(예를 들어, 2625)를 위한 최고 성능의 신경망에서 식별된 것들과 유사한 특성을 가진 또 다른 다양한 신경망 세트를 생성하라는 요청을 신경망 생성기(예를 들어, 2640)에 전송할 수 있다. 그 다음, 신경망 최적화기(2620)는, 신경망 최적화기에 의해 평가된 초기 묶음으로부터의 최고 성능의 신경망에 기초하여 신경망 생성기에 의해 생성된 다음 세트 또는 세대의 신경망을 이용하여 그 평가를 반복할 수 있다. 다시 한번, 신경망 최적화기(2620)는 제공된 기준에 따라 2세대 신경망 중 어느 것이 최상의 성능을 보이는지를 식별하고 평가를 위해 3 세대 신경망을 생성하라는 요청을 신경망 생성기에 전송하기 위한 기초로서 2세대에서 최고 성능의 신경망의 특성을 다시 결정할 수 있고, 여기서, 신경망 최적화기(2620)는 한 세대에서 다음 세대로 진화(그리고, 이론적으로 개선)하는 신경망을 반복적으로 평가한다. 이전 예에서와 같이, 신경망 최적화기(2620)는, 다른 예시적인 구현들 중에서도 특히, 머신 학습 하드웨어(예를 들어, 2625)에 의한 이용을 위해 최신 세대 중 최고 성능의 신경망의 표시 또는 사본을 제공할 수 있다.
구체적인 예로서, 도 27의 블록도(2700)에 도시된 바와 같이, Movidius NCS 등의 머신 학습 하드웨어(2625)는, 설계-공간 탐색 도구로서 기능하는 신경망 최적화기와 함께 이용될 수 있고, 하드웨어 제약에 따라 가장 높은 정확도로 네트워크를 발견하는 Caffe 등의 신경망 생성기(2640) 또는 제공자를 이용할 수 있다. 이러한 설계-공간 탐색(DSX) 도구는, 대역폭 측정 및 네트워크 그래프를 포함한 전체 API를 이용하기 위해 제공될 수 있다. 또한, 다른 예들 중에서도 특히, 온도 측정, 추론 시간 측정 등의 설계-공간 탐색에 유용한 추가 파라미터를 추출하기 위해 머신 학습 하드웨어 API에서 일부 확장이 이루어지거나 제공될 수 있다.
DSX 개념의 힘을 예시하기 위해, 예로서 얼굴 검출시 웨이크업되는 최신 모바일 전화에서 구현되는 것들과 같은, 소형의 상시 작동형 얼굴 검출기를 위한 신경망 설계 공간이 탐색되는 한 예가 제공된다. 다양한 신경망이 머신 학습 하드웨어에 제공될 수 있으며 추론 스테이지 동안 훈련된 네트워크의 전력 이용량 등의, 각각의 신경망의 이용에 대해 성능이 모니터링될 수 있다. DSX 도구(또는 신경망 최적화기)는 주어진 분류 작업에 대해 상이한 신경망을 생성할 수 있다. 데이터는 하드웨어로 전송될 수 있다(예를 들어, NCS의 경우, NCS API를 이용하여 USB를 통해 NCS로/로부터). 위에서 설명된 구현을 이용하여, 임의의 파일을 수동으로 편집, 복사 및 붙여넣기 하는 것이 아니라, 설계 공간 탐색의 결과로서 상이한 목적에 대한 최적의 모델이 발견될 수 있다. 한 예시적인 예로서, 도 28은, 신경망들 중 각각의 것을 이용한 머신 학습 작업의 실행 동안 머신 학습 하드웨어(예를 들어, NCS에 접속된 범용 마이크로프로세서)의 성능 특성을 포함한, (예를 들어, DSX 도구에 의해 측정될 수 있는 다른 예시적인 파라미터들 중에서도 특히, 정확도, 실행 시간, 온도, 메모리 내 신경망의 크기, 및 측정된 전력을 보여주는) 복수의 상이한 무작위로 생성된 신경망에 대한 DSX 도구의 평가의 예시적인 결과를 나타내는 표(2800)를 보여준다. 도 29는 유효성확인 정확도 대 실행 시간(2900에서) 대 크기(2905에서)를 비교한 결과를 보여준다. 이들 관계 및 비율은, 다른 예들 중에서도 특히, 평가된 신경망들 중 어느 것이 특정한 머신 학습 플랫폼에 대해 "최상"인지를 결정할 때 NCS에 의해 고려될 수 있다.
심층 신경망(DNN)은, 이미지 분류 및 객체 검출 등의, 다양한 컴퓨터 비전 작업에 관한 최첨단 정확도를 제공한다. 그러나, DNN의 성공은 종종 계산 및 메모리의 상당한 증가를 통해 달성되므로, 자원이 제약된 추론 에지 디바이스에 배치하기가 어렵다. 일부 구현에서, 프루닝 및 양자화 등의 네트워크 압축 기술은 계산 및 메모리 요구를 낮출 수 있다. 이것은 또한, 특히 정확도 손실이 전혀 또는 거의 없이, 소규모 맞춤형 데이터세트에 관한 전이 학습(transfer learning)에 대해, 과적합을 방지하는데 있어서 도움이 될 수 있다.
일부 구현에서, 특정한 머신 학습 하드웨어에 의한 이용을 위해 신경망의 크기를 동적으로 자동으로 감소시키기 위해 신경망 최적화기(예를 들어, 2620) 또는 기타의 도구가 역시 제공될 수 있다. 예를 들어, 신경망 최적화기는, 주어진 머신 학습 하드웨어에 의해 저장 및 운영될 신경망의 크기를 감소시키기 위해 세밀한 입도의(fine-grained) 프루닝(예를 들어, 연결 또는 가중치 프루닝) 및 거친 입도의(coarse-grained) 프루닝(예를 들어, 커널, 뉴런 또는 채널 프루닝)을 수행할 수 있다. 일부 구현에서, 머신 학습 하드웨어(예를 들어, 2625)에는, 하드웨어가 가중치 프루닝형 신경망을 효과적으로 취급할 수 있도록, 저밀도 행렬 곱셈을 수행할 수 있는 산술 회로가 장착될 수 있다.
한 구현에서, 신경망 최적화기(2620) 또는 기타의 도구는 (예를 들어, 도 30a의 블록도 3000a에 나타낸 바와 같이) 신경망의 하이브리드 프루닝을 수행하여, 커널 레벨 및 가중치 레벨 모두에서 프루닝할 수 있다. 예를 들어, 주어진 신경망으로부터 프루닝(3010)될 수 있는 커널 또는 채널 세트를 (3005에서) 자동으로 식별하기 위해 신경망 최적화기(2620) 또는 다른 도구에 의해 하나 이상의 알고리즘, 규칙 또는 파라미터가 고려될 수 있다. (3015에서) 이 제1 채널 프루닝 단계가 완료된 후, 도 30a의 예시적인 예에 도시된 바와 같이, 가중치 프루닝(3020)가 나머지 채널(3015)에 관해 수행될 수 있다. 예를 들어, (3025에서) 임계값이 설정되어 임계값 미만의 가중치가 프루닝되도록(예를 들어, 가중치 "0"이 재할당됨), 규칙이 가중치 프루닝을 통제할 수 있다. 그 다음, 모델의 정확도를 저하시키지 않으면서 결과적 네트워크의 컴팩트 버전이 생성되도록, 프루닝로부터 네트워크의 정확성이 복구되는 것을 허용하기 위해, 하이브리드 프루닝된 네트워크가 실행되거나 반복될 수 있다. 추가적으로, 일부 구현에서, 프루닝 후에 남아있는 가중치는, 프루닝된 모델의 가중치를 저장하는데 필요한 메모리 양을 더 감소시키기 위해 양자화될 수 있다. 예를 들어, 도 31의 블록도(3100)에 도시된 바와 같이, (3105에서의) 부동 소수점 가중치 값이 (3115에서의) 가장 가까운 베이스 2 대응물로 대체되도록, 로그 스케일 양자화(3110)가 수행될 수 있다. 이러한 방식으로, 32 비트 부동 소수점 값은 4 비트 base 2 값으로 대체되어 네트워크 가중치를 저장하는데 필요한 메모리 양을 극적으로 감소시키면서, (예를 들어, 도 32의 표 3200에 도시된 예시적인 결과에 나타낸 바와 같은) 다른 예시적인 양자화 및 피처들 중에서도 특히, 컴팩트 신경망의 정확도 희생을 최소화할 수 있다. 사실상, 도 32의 특정한 예에서, 하이브리드 프루닝의 적용에 대한 연구가, ResNet50 등의 예시적 신경망에 적용된 것으로서 도시되어 있다. 추가로, 모델 크기를 더욱 감소시키고 더욱 하드웨어 친화적이 되도록 프루닝된 저밀도 감량된 ResNet50에 가중치 양자화를 적용하는 것도 예시되어 있다.
도 30b의 간소화된 블록도(3000b)에 의해 나타낸 바와 같이, 한 예에서, 예시적인 신경망의 하이브리드 프루닝은, 초기 또는 기준 신경망 모델에 액세스하고(3035) (임의적으로서) 정규화(L1, L2 또는 L0)와 함께 모델을 훈련시킴으로써(3040) 수행될 수 있다. 네트워크 내에서 개개의 뉴런(또는 접속)의 중요성이 평가될 수 있고(3045), 덜 중요하다고 결정된 뉴런이 네트워크로부터 프루닝된다(3050). 프루닝된 네트워크는 미세-튜닝될 수 있고(3055), 프루닝로부터 프루닝된 네트워크 및 최종 컴팩트(또는 저밀도) 네트워크가 생성된다(3060). 도 30b의 예에 도시된 바와 같이, 일부 경우에, 네트워크는 반복적으로 프루닝될 수 있고, 다른 예시적인 구현들 중에서도 특히, 추가적인 훈련 및 프루닝(예를 들어, 3040-3050)가 수행되고, 후속해서, 프루닝된 네트워크의 미세 튜닝(3055)이 뒤따를 수 있다. 일부 구현에서, 뉴런의 중요도를 결정하는 것(3045)은, 전술된 바 등의, 하이브리드 프루닝 기술을 이용하여 수행될 수 있다. 예를 들어, 미세 입도의 가중치 프루닝/저밀도화가 수행될 수 있다(예를 들어, (평균 + 표준편차 * 인자)를 이용한 전역적이고 점진적인 프루닝로). 거친 입도의 채널 프루닝은, 민감도 테스트 및/또는 다수의 목표 MAC에 기초하여 계층별로 수행될 수 있다(예를 들어, 가중치 합계 프루닝). 저밀도 프루닝 전에 거친 프루닝이 수행될 수 있다. 예를 들어, 비제로 가중치에 관한 제약을 2의 거듭제곱 또는 0으로 설정하거나 및/또는 제로에 대해서는 1 비트를 이용하고 가중치 표현에 대해서는 4 비트를 이용하도록 설정하기 위해 가중치 양자화도 역시 수행될 수 있다. 일부 경우에, 다른 예시적인 기술들 중에서 특히, 낮은 정밀도(예를 들어, 가중치 및 활성화) 양자화가 수행될 수 있다. 위에서 논의된 것 등의 프루닝 기술은, 다양한 예시적인 이점을 줄 수 있다. 예를 들어, 컴팩트 행렬은 저장된 네트워크 파라미터의 크기를 감소시킬 수 있으며 런타임 가중치 압축해제는 DDR 대역폭을 감소시킬 수 있다. 다른 예시적인 이점들 중에서도 특히, 가속된 계산이 역시 제공될 수 있다.
도 33a는, 합성 훈련 데이터 샘플(예를 들어, 합성적으로 생성된 이미지 또는 합성적으로 생성된 포인트 클라우드)을 포함하는 훈련 데이터세트를 생성하기 위한 예시적인 기술의 간소화된 흐름도(3300a)이다. 예를 들어, 디지털 3D 모델이 컴퓨터 메모리로부터 액세스될 수 있고(3302), 복수의 훈련 샘플이 디지털 3D 모델의 다양한 뷰로부터 생성될 수 있다(3304). 훈련 샘플은, 훈련 샘플에 불완전성을 추가하여 하나 이상의 실제 샘플에 의해 생성될 때의 훈련 샘플을 시뮬레이션하도록 수정될 수 있다(3306). 수정되고 합성적으로 생성된 훈련 샘플을 포함하도록 훈련 데이터세트가 생성된다(3308). 생성된 훈련 데이터세트를 이용하여 하나 이상의 신경망이 훈련될 수 있다(3310).
도 33b는 Siamese 신경망 모델을 이용하여 원샷 분류를 수행하기 위한 한 예시적인 기술의 간소화된 흐름도(3300b)이다. 대상 입력이 Siamese 신경망 모델의 제1 부분에 대한 입력으로서 제공될 수 있고(3312), 기준 입력이 Siamese 신경망 모델의 제2 부분에 대한 입력으로서 제공될 수 있다(3314). 모델의 제1 부분과 제2 부분은 동일할 수 있으며 동일한 가중치를 가질 수 있다. Siamese 네트워크의 출력이, 차이 벡터 등의, 대상 입력 및 기준 입력에 기초하여, 제1 및 제2 부분의 출력으로부터 생성될 수 있다(3316). 출력은, 예를 들어, Siamese 신경망 모델의 출력들에 대한 임계 유사성 값에 기초하여, 대상 입력이 기준 입력과 충분히 유사한지를 나타낸다고(예를 들어, 대상 입력의 대상이 기준 입력의 대상과 동일함을 나타낸다고) 결정될 수 있다(3318).
도 33c는 예시적인 Siamese 신경망 모델을 이용하여 상대적 자세를 결정하기 위한 예시적인 기술의 간소화된 흐름도(3300c)이다. 예를 들어, 제1 입력은 Siamese 신경망 모델의 제1 부분에 대한 입력으로서 수신될 수 있고(3320), 제1 입력은 (예를 들어, 자율 머신의) 제1 자세로부터의 3D 공간의 뷰(예를 들어, 포인트 클라우드 데이터, 깊이 맵 데이터 등)를 나타낸다. 제2 입력은 Siamese 신경망 모델의 제2 부분에 대한 입력으로서 수신될 수 있고(3322), 제2 입력은 제2 자세로부터의 3D 공간의 뷰를 나타낸다. Siamese 네트워크의 출력은 제1 및 제2 입력에 기초하여 생성될 수 있고(3324), 출력은 제1 및 제2 자세 사이의 상대적 자세를 나타낸다. 제1 및 제2 자세 및/또는 머신이 상주하는 3D 맵과 연관된 머신의 위치가, 결정된 상대적 자세에 기초하여 결정될 수 있다(3326).
도 33d는, 2개 이상의 상이한 데이터 유형들 중 대응하는 하나와 함께 이용하도록 튜닝된 2개 이상의 머신 학습 모델의 적어도 일부를 결합하는 센서 융합 머신 학습 모델을 포함하는 예시적인 기술의 간소화된 흐름도(3300d)이다. 제1 유형의 제1 센서 데이터는, 센서 융합 머신 학습 모델의 2개의 이상의 머신 학습 모델 중 제1 모델에서 입력으로서 수신될 수 있다(3330). (예를 들어, (예를 들어, 동일하거나 상이한 머신 상의 센서에 의해) 제1 센서 데이터와 동시에 생성된) 제2 유형의 제2 센서 데이터는, 2개 이상의 머신 학습 모델 중 제2 모델에 대한 입력으로서 수신될 수 있다(3332). 제1 및 제2 머신 학습 모델의 출력은 연결될 수 있고(3334), 연결된 출력은 센서 융합 머신 학습 모델의 한 세트의 완전히 접속된 계층들에 제공된다(3336). 디바이스(예를 들어, 제1 및 제2 센서 데이터를 생성하는 센서가 위치해 있는 머신)의 자세를 정의하기 위해, 제1 및 제2 센서 데이터에 기초하여 센서 융합 머신 학습 모델에 의해 출력이 생성될 수 있다(3338).
도 33e는, 진화 알고리즘에 따라 특정한 머신 학습 하드웨어에 맞게 튜닝된 개선되거나 최적화된 신경망을 생성하기 위한 예시적인 기술의 간소화된 흐름도(3300e)이다. 예를 들어, 신경망들의 세트가 액세스되거나(3340) 생성될 수 있다(예를 들어, 무작위로 선택된 속성에 따라 자동으로). 머신 학습 작업은 신경망 세트를 이용하여 특정한 하드웨어에 의해 수행될 수 있고(3342) 이들 작업의 특정한 하드웨어 성능의 속성이 모니터링될 수 있다(3344). 이 모니터링의 결과에 기초하여, 세트 내의 하나 이상의 최고 성능의 신경망이 식별될 수 있다(3346). (특정한 하드웨어에 대한) 최고 성능의 신경망의 특성이 결정될 수 있고(3348), 이러한 특성을 포함하는 또 다른 신경망들의 세트가 생성될 수 있다(3350). 일부 사례에서, 이 새로운 신경망들의 세트는 또한, 특정한 하드웨어에 대한 하나 이상의 충분히 양호한 성능의 최적화된 신경망이 식별될 때까지 하드웨어와 함께 이용하도록 고려된 신경망 세트를 반복적으로 개선하기 위해 (예를 들어, 단계 3342-3348을 통해) 테스트될 수 있다.
도 33f는 신경망을 프루닝 위한 예시적인 기술의 간소화된 흐름도(3300f)이다. 예를 들어, 신경망이 식별될 수 있고(3352), 덜 중요하거나 기타의 방식으로 프루닝을 위한 양호한 후보로서 신경망의 커널들의 서브세트가 결정될 수 있다(3354). 이 커널들의 서브세트는 프루닝되어(3356), 신경망의 프루닝된 버전을 생성할 수 있다. 그 다음, 나머지 커널들이 추가로 프루닝되어(3358), 이들 나머지 커널들로부터의 가중치들의 서브세트를 프루닝하여 거친 입도 및 미세 입도의 레벨 양쪽 모두에서 신경망을 추가로 프루닝할 수 있다.
도 34는 일부 실시예에 따른 예시적인 멀티 슬롯 벡터 프로세서(예를 들어, VLIW(very long instruction word) 벡터 프로세서)를 나타내는 간소화된 블록도이다. 이 예에서, 벡터 프로세서는, 다중-포트형 메모리 시스템(3400)에 의해 공급될 수 있고, 벡터 레지스터 파일(VRF)(3401) 및 일반 레지스터 파일(GRF)(3402)에 의해 백업되는, 복수의(예를 들어, 9) 기능 유닛(예를 들어, 3403-3411)을 포함할 수 있다. 프로세서는, 명령어를 디코딩하고 기능 유닛(3403-3411)을 제어하는 제어 신호를 생성하는 명령어 디코더(IDEC)(3412)를 포함한다. 기능 유닛(3403-3411)은, 예측 실행 유닛(predicated execution unit)(PEU)(3403), 분기 및 반복 유닛(BRU)(3404), 로드 저장 포트 유닛(예를 들어, LSU0 3405 및 LSU1 3406), 벡터 산술 유닛(VAU)(3407), 스칼라 산술 유닛(SAU)(3410), 비교 및 이동 유닛(CMU)(3408), 정수 산술 유닛(IAU)(3411), 및 체적 가속 유닛(VXU)(3409)이다. 이 특정한 구현에서, VXU(3409)는, 저장/회수 동작, 로직 연산, 및 산술 연산 모두를 포함한, 체적 데이터에 관한 연산을 가속할 수 있다. VXU 회로(3409)가 도 34의 예에서는 단일 컴포넌트로서 도시되어 있지만, VXU(뿐만 아니라 다른 기능 유닛(3403-3411))의 기능들은 복수의 회로에 분산될 수 있다는 것을 이해해야 한다. 또한, 일부 구현에서, VXU(3409)의 기능은, 다른 예시적인 구현들 중에서도 특히, 프로세서의 다른 기능 유닛들(예를 들어, 3403-3408, 3410, 3411) 중 하나 이상 내에서 일부 구현에서 분산될 수 있다.
도 35는 일부 실시예에 따른 VXU(3500)의 예시적인 구현을 나타내는 간소화된 블록도이다. 예를 들어, VXU(3500)는, 벡터 레지스터 파일(3401) 또는 일반 레지스터 파일(3402)로부터의 입력을 수락하기 위해 적어도 하나의 64 비트 입력 포트(3501)를 제공할 수 있다. 이 입력은, 레지스터 파일(3503), 주소 생성기(3504), 포인트 어드레싱 로직(3505), 포인트 삽입 로직(3506), 포인트 삭제 로직(3507), X 차원에서의 3D 대 2D 투사 로직(3508), Y 차원에서의 3D 대 2D 투사 로직(3509), X 차원에서의 3D 대 2D 투사 로직(3510), 2D 히스토피라미드 생성기(3511), 3D 히스토피라미드 생성기(3512), 개체수 카운터(3513), 2D 경로-발견 로직(3514), 3D 경로-발견 로직(3515), 및 아마도 64 비트 부호없는 정수 체적 비트맵에 관해 동작하는 추가 기능 유닛을 포함한, 복수의 기능 유닛에 접속될 수 있다. 블록(3502)으로부터의 출력은, 벡터 레지스터 파일(VRF)(3401) 또는 일반 레지스터 파일(GRF)(3402) 레지스터 파일들에 다시 기입될 수 있다.
도 36의 예로 돌아가면, 4^3 복셀 큐브(3600)의 조직화의 표현이 나타나 있다. 제2 복셀 큐브(3601)도 역시 표현되어 있다. 이 예에서, 복셀 큐브는 데이터에서 64 비트 정수(3602)로서 정의될 수 있고, 여기서, 큐브 내의 각각의 단일 복셀은 64 비트 정수의 단일의 대응하는 비트로 표시된다. 예를 들어, 주소 {x, y, z} = {3, 0, 3}에서의 복셀(3512)은 "1"로 설정되어, 복셀 큐브(3601)가 나타내는 체적 공간 내의 대응하는 좌표에서 지오메트리의 존재를 나타낼 수 있다. 또한, 이 예에서, (복셀(3602) 이외의) 모든 다른 복셀은 "빈" 공간에 대응할 수 있고, 다른 예들 중에서도 특히, "0"으로 설정되어 이들 좌표에서의 물리적 지오메트리의 부재를 나타낼 수 있다. 도 37을 참조하면, 일부 실시예에 따라 예시적인 2-레벨 저밀도 복셀 트리(3700)가 도시되어 있다. 이 예에서, 체적 내에 단일의 "점유된" 복셀만이 포함되어 있다(예를 들어, 위치 {15, 0, 15}에서). 이 경우 트리(3701)의 상위 레벨 0은 단일 복셀 엔트리 {3, 0, 3}를 포함한다. 그 복셀은 차례로, 단일 복셀을 요소 {3, 0, 3}에 포함하는 트리(3702)의 다음 레벨을 가리킨다. 저밀도 복셀 트리의 레벨 0에 대응하는 데이터 구조 내의 엔트리는, 하나의 복셀 세트가 점유된 것으로 설정되어 있는 64 비트 정수(3703)이다. 설정된 복셀은, 64 비트 정수들의 어레이가 3703에서 설정된 복셀 체적에 대응하는 트리의 레벨 1에 할당됨을 의미한다. 레벨 1 서브어레이(3704)에서, 복셀들 중 하나만이 점유된 것으로 설정되고 다른 모든 복셀은 미점유로 설정된다. 이 예에서 트리는 2 레벨 트리이므로, 레벨 1은, 계층 구조가 이 곳에서 종료되도록, 트리의 하단을 나타낸다.
도 38은, 특정한 체적의 위치 {15, 0, 3} 및 {15, 0, 15}에서 점유된 복셀을 포함하는 일부 실시예에 따른 2-레벨 저밀도 복셀 트리(3800)를 나타낸다. 이 경우 트리(3801)의 상위 레벨 0(특정한 체적을 64개의 상위 레벨 0 복셀로 세분화 함)은, 2개의 복셀이 설정(또는 점유)되어 있다는 것을 나타내는 대응하는 데이터(3804)를 갖는 2개의 복셀 엔트리 {3, 0, 0} 및 {3, 0, 3}를 포함한다. 저밀도 복셀 트리(SVT)의 다음 레벨은, 레벨 0에 설정된 각각의 복셀에 대해 하나씩, 2개의 하위큐브 3802 및 3803을 포함하는 64 비트 정수들의 어레이로서 제공된다. 레벨 1 서브어레이 (3805)에서, 2개의 복셀은 점유로 설정되고(v15 및 v63), 다른 모든 복셀은 미점유 및 트리로서 설정된다. 이 포맷은, 트리의 다음 레벨에 있는 64개 엔트리가 트리의 상위 계층에 있는 각각의 설정된 복셀에 항상 대응하여 할당되므로 유연하다. 이러한 유연성은, 상위 계층들의 대응하는 복셀이 설정되어 있는 한, 동적으로 변경되는 장면 지오메트리가 (즉, 무작위로 등의, 고정된 순서가 아닌) 유연한 방식으로 기존의 체적 데이터 구조 내에 삽입되는 것을 허용할 수 있다. 그렇지 않다면, 포인터들의 테이블이 유지되어, 더 높은 메모리 요건으로 이어지거나, 예상치 못한 지오메트리를 삽입하기 위해 트리가 적어도 부분적으로 재구축될 것이 요구될 것이다.
도 39는 일부 실시예에 따른 도 38로부터의 복셀을 저장하기 위한 대안적인 기술을 나타낸다. 이 예에서, 전체 체적(3900)은, 도 23에서와 같이 전역 좌표 {15, 0, 3} 및 {15, 0, 15}에 저장된 2개의 복셀을 포함한다. 이 접근법에서는, 레벨 0 아래의 레벨 1에 있는 모든 하위큐브를 나타내기 위해 64개 엔트리 어레이를 할당하는 것이 아니라, (예를 들어, 대응하는 레벨 0 복셀이 점유 여부에 관계없이 나타내는 바와 같이) 지오메트리를 실제로 포함하는 레벨 1의 요소만이 대응하는 64 비트 레벨 1 레코드로서 할당되되, 이 예에서는 레벨 1이 64가 아니라 단지 2개의 64 비트 엔트리만을 갖도록 할당된다(즉, 점유 여부에 관계없이, 64개 레벨 1 복셀들 각각에 대해). 따라서, 이 예에서, 첫 번째 레벨 0(3904)은 도 38에서 3804와 균등한 반면, 다음 레벨(3905)은 메모리 요건면에서 도 38의 대응하는 3805보다 62배 더 작다. 일부 구현에서, 레벨 1에 공간이 할당되지 않은 레벨 0 내에 새로운 지오메트리가 삽입될 예정이라면, 트리는 복사되고 재배열되어야 한다.
도 39의 예에서, 하위체적들은 현재 계층 위의 계층에서 점유된 복셀들을 카운트함으로써 도출될 수 있다. 이러한 방식으로, 시스템은, 복셀 데이터에서 하나의 상위 계층이 끝나고 다음 하위계층이 시작되는 위치를 결정할 수 있다. 예를 들어, 3개의 계층 0 복셀이 점유되어 있다면, 시스템은, 복셀 데이터에서 3개의 대응하는 계층 1 엔트리가 뒤따르고, (이들 3개 이후의) 다음 엔트리가 계층 2의 첫 번째 엔트리에 대응하는 등등이라고 예상할 수 있다. 이러한 최적의 압축은, 장면의 소정 부분이 시간 경과에 따라 변하지 않거나, 예를 들어 모든 비트가 전송을 위해 비용 및 시간이 많이 소요되는 명왕성의 표면을 스캔하는 우주 탐사선 등의 응용에서 체적 데이터의 원격 전송이 요구되는 경우에 매우 유용할 수 있다.
도 40은, 일부 실시예에 따른, 대응하는 체적 내의 지오메트리에 대한 변화를 반영하기 위해, 64 비트 정수 체적 데이터 구조 엔트리로 표현된 4^3 큐브 내에 복셀이 삽입될 수 있는 방식을 나타낸다. 한 예에서, 각각의 복셀 큐브는, 4000에 도시된 바와 같이, 64 비트 정수 내에서 4개의 논리적 16 비트 평면으로서 조직화될 수 있다. 각각의 평면은, 다른 예시적인 조직화 중에서도 특히, Z 값 0 내지 3, 각각의 평면 내에서 4개의 논리적 4 비트 변위에 대한 각각의 y-값 코드 0 내지 3, 마지막으로 각각의 4 비트 y-평면 내에서 4개의 가능한 x 값에 대한 각각의 비트 코드 0 내지 3에 대응한다. 따라서, 이 예에서, 복셀을 4^3 체적 내에 삽입하려면, 먼저 1 비트가 x 값 0 내지 3만큼 변위된 다음, 그 값이 0/4/8/12 비트만큼 변위되어 y-값을 인코딩하고, 마지막으로, z-값은 4001의 C-코드 표현식에 도시된 바와 같이 0/16/32/48-비트의 변위로 표현될 수 있다. 마지막으로, 각각의 64 비트 정수는 최대 64개의 복셀의 조합일 수 있고, 각각의 복셀은 별개로 작성되므로, 새로운 비트맵은, 4002에 도시된 바와 같이 이전 비트맵 값과 새로운 비트맵 값을 OR함으로써 저밀도 복셀 트리로부터 판독된 이전 64 비트 값과 논리적으로 결합되어야 한다.
도 41을 참조하면, 일부 실시예에 따라 64 비트 정수(4100)에 저장된 3D 체적 객체가, 2D 패턴(4101)을 생성하기 위해 X 방향으로, 2D 출력(4102)을 생성하기 위해 Y 방향으로, 및 마지막으로 4103에 도시된 패턴을 생성하기 위해 Z 방향으로 논리적 OR함으로써 어떻게 투사될 수 있는지를 예시하는 표현이 도시되어 있다. 도 42는, 일부 실시예에 따라 입력 64 비트 정수로부터의 비트들이 X, Y, 및 Z에서 출력 투사를 생성하기 위해 어떻게 논리적으로 OR되는지를 나타낸다. 이 예에서, 표(4201)는 입력 벡터(4200)로부터의 요소 인덱스들이 x-투사 출력 벡터(4202)를 생성하기 위해 OR되는 것을 열별로 보여준다. 표(4203)는 입력 벡터(4200)로부터의 어떤 요소 인덱스들이 y-투사 출력 벡터(4204)를 생성하기 위해 OR되는지를 열별로 보여준다. 마지막으로 4205는, 입력 벡터(4200)로부터의 어떤 요소 인덱스들이 Z-투사 출력 벡터(4206)를 생성하기 위해 OR되는지를 열별로 보여준다.
X-투사는 입력 데이터(4200)로부터의 비트 0, 1, 2, 3을 논리적으로 OR하여 X-투사(4201)의 비트 0을 생성한다. 예를 들어, 4201에서의 비트 1은 4200으로부터의 비트 4, 5, 6 및 7을 OR함으로써 생성되는 등등이다. 유사하게, Y-투사(4204)에서의 비트 0은 4200의 비트 0, 4, 8 및 12를 함께 OR함으로써 생성될 수 있다. 그리고, 4204의 비트 1은 4200 등의 비트 1, 5, 9, 13을 함께 OR함으로써 생성된다. 마지막으로, Z 투사(4206)에서의 비트 0은, 4200의 비트 0, 16, 32 및 48을 함께 OR함으로써 생성된다. 그리고, 4206의 비트 1은 4200의 비트 1, 17, 33, 49를 함께 OR함으로써 생성될 수 있는, 등등이다.
도 43은 일부 실시예에 따른 간소화된 맵을 생성하기 위해 투사가 어떻게 이용될 수 있는지의 예를 나타낸다. 이 시나리오에서, 목표는 복셀 체적(4302)으로부터 높이 h(4310) 및 폭 w(4301)의 차량(4300)이 내려가는 경로의 컴팩트 2D 맵을 생성하는 것일 수 있다. 여기서 Y-투사 로직은 복셀 체적(4302)으로부터 초기 조잡한 2D 맵(4303)을 생성하는데 이용될 수 있다. 일부 구현에서, 맵은, 특정한 치수의 특정한 차량(예를 들어, 자동차(또는 자율 자동차), 드론 등)이 경로의 폭(4301) 및 높이 제약(4310)을 통과할 수 있는지를 체크하도록 처리될 수 있다. 이것은 폭 제약(4301)을 체크하기 위해 Z에서 투사를 수행함으로써 경로가 통과가능함을 보장하기 위해 수행될 수 있고, Y에서의 투사는 계산을 차량(4310)의 높이로 제한하도록 마스킹될 수 있다. (예를 들어, 소프트웨어에 의한) 추가적인 후처리에 의해, 통과가능하고 폭 및 높이 제약 조건 X 및 Z 조건만을 충족하는 경로에 대해, 차량이 이동할 수 있는 합법적인 경로를 완전히 재구성하기 위해, 경로를 따른 포인트들 A(4304), B(4305), C(4306), D(4307), E(4308), 및 F(4309)의 좌표들이 네트워크를 통해서만 저장되거나 전송될 수 있다는 것을 알 수 있다. 경로가 이러한 부분별 세그먼트로 분해될 수 있다는 점을 고려하면, 경로의 부분별 선형 섹션 당 1 바이트 또는 2 바이트만을 이용하여 경로를 완전히 기술할 수 있다. 이것은, 다른 예들 중에서도 특히, (예를 들어, 자율 차량에 의한) 이러한 경로 데이터의 빠른 전송 및 처리를 보조할 수 있다.
도 44는 LIDAR 또는 기타 값비싼 수단을 이용하여 정밀 측정을 수행하는 것에 대한 대안으로서 고품질 크라우드 소싱형 맵을 생성하기 위해 임베디드 디바이스들로부터의 체적 3D 또는 간단한 2D 측정치들이 어떻게 일부 실시예에 따라 수학적 수단에 따라 총계될 수 있는지를 나타낸다. 제안된 시스템에서, 복수의 임베디드 디바이스(4400, 4401) 등에는, 중앙 서버(4410)에 전송될 수 있는 측정을 수행할 수 있는 다양한 센서가 장착될 수 있다. 서버에서 실행되는 소프트웨어는 모든 측정(4402)의 총계를 수행하고, 결과 행렬의 비선형 솔버(4403)에 의한 수치 해결을 수행하여 매우 정확한 맵을 생성한 다음, 임베디드 디바이스들에게 다시 재배포될 수 있다. 사실상, 데이터 총계는 또한, 위성(4420), 항공 LIDAR 측량(4421) 및 지상 LIDAR 측정(4422)으로부터의 높은 정확도 측량 데이터를 포함할 수 있고, 이들 고 충실도 데이터세트가 이용가능한 결과 맵의 정확도를 증가시킬 수 있다. 일부 구현에서, 맵 및/또는 기록된 측정치는, 다른 예시적인 구현들 중에서도 특히, 여기서 설명된 것 등의 포맷을 갖는 저밀도 복셀 데이터 구조를 이용하여, 생성, 변환 또는 기타의 방식으로 표현될 수 있다.
도 45는 일부 실시예에 따른 2D 2x2 비트맵 상의 2D 경로 발견이 어떻게 가속될 수 있는지를 보여주는 도면이다. 동작의 원리는, 동일한 그리드 셀들의 맵 상의 포인트들 사이에 접속이 존재하려면, x 또는 y 또는 x 및 y에서 연속된 셀들의 값이 모두 1로 설정되어야 한다는 것이다. 따라서, 이들은 셀로부터 가져온 비트들의 논리적 AND를 구체화하여 유효한 경로가 있는지에 대해 그리드의 비트맵을 테스트할 수 있으며, NxN 그리드를 통한 유효한 각각의 경로에 대해 상이한 AND 게이트가 구체화될 수 있다. 일부 경우에, 이 접근법은, 8x8 2D 그리드조차도 264-1개의 유효한 경로를 포함할 수 있다는 점에서 조합적인 복잡성을 도입할 수 있다. 따라서, 일부 개선된 구현에서, 그리드는, 접속에 대해 계층적으로 테스트될 수 있는 2x2 또는 4x4 타일로 축소될 수 있다. 2x2 비트맵(4500)은, b0, b1, b2 및 b3으로 라벨링된 4 비트를 포함한다. 4 비트는, 4501 내지 4517의 대응하는 라벨과 함께 0000 내지 1111의 값을 가질 수 있다. 이들 비트 패턴들 각각은, 4521 내지 4530으로 라벨링된 2x2 그리드의 면들 사이의 다양한 접속 레벨을 표현한다. 예를 들어, 4500에서의 x0과 y0 사이의 수직 접속을 나타내는 4521 또는 v0은, 2x2 그리드(4500)가 비트맵 1010(7112), 1011(7113), 1110(7116) 또는 1111(7117)을 포함할 때 존재한다. 표 4518의 행 1에 도시된 바와 같이 4500에서의 2-입력 논리적 AND 또는 b0 및 b3은, 2x2 서브그리드로 세분된 전역적 그리드를 통해 전역적 접속에 관해 결정할 때 고수준 하드웨어 또는 소프트웨어에서 이용될 수 있는 접속 맵에서 v0을 생성한다. 전역적 맵이 x 또는 y 축에 홀수개의 그리드 포인트를 포함한다면, 최상위 레벨 그리드는, 다음으로 높은 짝수개의 그리드 포인트까지의 패딩을 요구할 것이다(예를 들어, 제로로 된 1개의 추가적인 행 전역적 그리드의 x 및/또는 y 축에 추가될 필요가 있을 것이다). 도 45는 또한, 제로로 채워진 추가적인 행(4532) 및 열(4534)을 추가함으로써 8x8로 패딩되는 방법을 보여주는 예시적인 7x7 그리드(4550)를 도시한다. 다른 기술(예를 들어, 깊이-우선 검색, 폭-우선 검색 또는 Dijkstra의 알고리즘, 또는 기타의 그래프-기반의 접근법)과 비교하여 경로-발견 속도를 높이기 위해, 본 예는 NxN 맵(4550)을 점진적으로 2x2맵으로 서브샘플링할 수 있다. 예를 들어, 이 예제에서, 4540에서의 셀 W는, 4550에서의 셀 A, B, C 및 D의 내용을 OR함으로써 채워지는 등등이다. 차례로, 4540에서의 2x2 셀 내의 비트들이 OR되어 4542에서의 셀을 채운다. 경로-발견과 관련하여, 알고리즘은 그리드(4542)의 가장 작은 2x2 표현부터 시작하여 각각의 비트를 테스트한다. 제로 비트는 4540에서 2x2 그리드 셀이 없다는 것을 의미함을 우리는 알고 있기 때문에, 2x2 그리드(4542) 내의 1 비트에 대응하는 (4개의 2x2 그리드로 구성된) 4540에서의 4x4 그리드의 부분들만이 접속에 대해 테스트될 필요가 있다. 이 접근법은 4520에서의 8x8 그리드 검색에도 이용될 수 있다, 예를 들어, 4540에서의 셀 W가 제로를 포함한다면, 우리는 4520의 ABCD에서 경로가 없음을 알 수 있는 등등이다. 이 접근법은, A*, Dijkstra, DFS, BFS 또는 그 변형이든, 이용된 그래프 검색 알고리즘에서 분기를 프루닝한다. 이에 추가하여, 2x2 조직화(4518)를 갖는 하드웨어 기본 경로-발견기의 이용은 연관된 계산을 더욱 제한할 수 있다. 사실상, 4x4 기본 하드웨어 요소는, 수행될 필요가 있는 그래프 검색의 양을 더욱 제약하는 4540 및 4542와 동일한 배열을 갖는 5개의 2x2 하드웨어 블록을 이용하여 구성될 수 있다. 또한 8x8 하드웨어-기반의 검색 엔진은, 잠재적으로 임의의 NxN 토폴로지에 대해 4542, 4540, 4500 등과 동일한 배열을 갖는 21개의 2x2 HW 블록(7118)으로 구성될 수 있다.
도 46은, 일부 실시예에 따른 제안된 체적 데이터 구조를 이용하여 충돌 검출이 어떻게 가속될 수 있는지를 보여주는 간소화된 블록도이다. 지오메트리의 3D NxNxN 맵은, NxNxN에 이르기까지 항상, 최저 레벨의 상세사항(LoD) 2x2x2 체적(4602), 그 다음 높은 4x4x4 체적(4601), 8x8x8 체적(4600) 등으로 구성된 피라미드로 서브샘플링될 수 있다. 드론, 차량 또는 로봇(4605)의 위치가 GPS 등의 위치 수단을 통해 또는 3D 맵으로부터의 재위치결정을 통해 3D 공간에서 알려져 있다면, 이것은, 드론/로봇의 x, y 및 z 위치를 적절하게 스케일링하고(적절한 횟수로 이들을 2로 나눔) 지오메트리 존재를 질의(예를 들어, 대응하는 비트맵 비트가 가능한 충돌을 나타내는 비트인지를 체크)함으로써(4602), 관련 2x2x2 하위체적의 사분면에서 지오메트리의 존재 여부를 테스트하는데 신속하게 이용될 수 있다. 가능한 충돌이 존재한다면(예를 들어, "1"이 발견됨), 체적 4601, 4600 등에서의 추가 체크가 수행되어 드론/로봇이 움직일 수 있는지의 여부를 확인할 수 있다. 그러나, 4602에서의 복셀이 비어 있다면(예를 들어, "0"), 로봇/드론은 그것을 자유 공간으로서 해석하고 방향 제어를 조작하여 맵의 많은 부분을 자유롭게 이동할 수 있다.
본 명세서에 설명되고 예시된 시스템 및 솔루션 중 일부는 복수의 요소를 포함하거나 그와 연관되는 것으로 설명되었지만, 명시적으로 예시되거나 설명된 모든 요소가 본 개시내용의 각각의 대안적 구현에서 이용되는 것은 아니다. 추가로, 여기서 설명된 요소들 중 하나 이상은 시스템 외부에 위치할 수 있는 반면, 다른 경우에는, 소정의 요소가, 예시된 구현에서 설명되지 않은 다른 요소들뿐만 아니라 다른 설명된 요소들 중 하나 이상의 내부에 또는 그 일부로서 포함될 수 있다. 또한, 소정의 요소는 다른 컴포넌트와 결합될 수 있을 뿐만 아니라, 여기서 설명된 목적에 추가하여 대안적이거나 추가적인 목적으로 이용될 수 있다.
또한, 위에 제시된 예는 단지 소정의 원리 및 피처를 예시하기 위한 목적으로 제공된 비제한적인 예이며, 여기서 설명된 개념의 잠재적인 실시예를 반드시 제한하거나 제약하는 것은 아님을 이해해야 한다. 예를 들어, 여기서 설명된 컴포넌트들의 다양한 구현을 통해 실현되는 조합을 포함한, 여기서 설명된 피처 및 컴포넌트의 다양한 조합을 이용하여 다양한 상이한 실시예가 실현될 수 있다. 다른 구현, 피처, 및 상세사항은, 본 명세서의 내용으로부터 이해되어야 한다.
도 47 내지 도 52는 본 명세서에 개시된 실시예에 따라 이용될 수 있는 예시적인 컴퓨터 아키텍처의 블록도이다. 사실상, 여기서 설명된 시스템의 컴퓨팅 디바이스, 프로세서, 및 기타의 로직 및 회로는, 기능의 전부 또는 일부와 이러한 기능을 구현하기 위해 지원하는 소프트웨어 및/또는 하드웨어 회로를 통합할 수 있다. 또한, 프로세서 및 컴퓨팅 시스템에 대해 본 기술분야에 공지된 기타의 컴퓨터 아키텍처 설계가, 본 명세서에서 도시된 예를 넘어서 역시 이용될 수 있다. 일반적으로, 여기서 개시된 실시예에 적합한 컴퓨터 아키텍처는, 도 47 내지 도 52에 나타낸 구성을 포함할 수 있지만, 이것으로 제한되는 것은 아니다.
도 47은, 링크를 통해 각각의 게이트웨이에 결합된 각각의 사물 인터넷(IoT) 네트워크에 대한 예시적인 도메인 토폴로지를 나타낸다. 사물 인터넷(IoT)은 매우 낮은 레벨에서 기능과 데이터 취득을 제공하기 위해 많은 수의 컴퓨팅 디바이스가 서로에 및 인터넷에 상호접속되는 개념이다. 따라서, 본 명세서에서 사용될 때, IoT 디바이스는, 다른 것들 중에서도 특히, 다른 IoT 디바이스 및 인터넷 등의 더 넓은 네트워크와 통신하면서, 감지 또는 제어 등의 기능을 수행하는 반자율 디바이스를 포함할 수 있다. 이러한 IoT 디바이스에는, 위에서 소개한 것 등의, 해시 테이블을 구현하고 이용하기 위한 로직 및 메모리가 장착될 수 있다.
종종 IoT 디바이스는, 메모리, 크기 또는 기능에서 제한되어, 더 적은 수의 더 큰 디바이스와 유사한 비용으로 더 많은 수가 배치되는 것을 허용할 수 있다. 그러나, IoT 디바이스는, 스마트 폰, 랩탑, 태블릿, PC, 또는 기타의 더 큰 디바이스일 수 있다. 또한, IoT 디바이스는, 스마트 폰 또는 기타의 컴퓨팅 디바이스 상의 애플리케이션 등의, 가상 디바이스일 수 있다. IoT 디바이스는, 데이터 저장, 프로세스 제어 등을 위해, IoT 디바이스를 다른 IoT 디바이스에 및 클라우드 애플리케이션에 결합하는데 이용되는 IoT 게이트웨이를 포함할 수 있다.
IoT 디바이스들의 네트워크는, 물 분배 시스템, 전력 분배 시스템, 파이프라인 제어 시스템, 플랜트 제어 시스템, 조명 스위치, 온도 조절기, 잠금 장치, 카메라, 경보, 움직임 센서 등의 상업용 및 홈 자동화 디바이스를 포함할 수 있다. IoT 디바이스는, 예를 들어, 시스템을 제어하거나 데이터에 액세스하기 위해, 원격 컴퓨터, 서버, 및 기타의 시스템을 통해 액세스가능하다.
인터넷 및 유사한 네트워크들의 향후 성장에는, 매우 많은 수의 IoT 디바이스가 포함될 수 있다. 따라서, 여기서 논의된 기술의 맥락에서, 이러한 미래의 네트워킹을 위한 다수의 혁신은 이들 모든 계층이 방해받지 않고 성장하고, 접속된 자원을 발견하고 액세스가능하게 하고, 접속된 자원을 은닉하고 구획화하는 기능을 지원해야 하는 필요성을 해결한다. 임의의 수의 네트워크 프로토콜 및 통신 표준이 이용될 수 있으며, 여기서, 각각의 프로토콜 및 표준은 특정한 목표를 다루도록 설계된다. 또한, 프로토콜은, 위치, 시간 또는 공간에 관계없이 동작하는 사람이 액세스할 수 있는 서비스를 지원하는 패브릭의 일부이다. 혁신에는, 서비스 전달, 및 하드웨어 및 소프트웨어 등의 연관된 인프라스트럭처; 보안 강화; 서비스 레벨 및 서비스 전달 계약에 명시된 서비스 품질(QoS) 조건에 기초한 서비스 제공이 포함된다. 이해할 수 있는 바와 같이, 도 47 및 도 48에 소개된 것들 등의 IoT 디바이스 및 네트워크의 이용은, 유선 및 무선 기술의 조합을 포함한 이기종 접속 네트워크에서 많은 새로운 과제를 제시한다.
도 47은, 구체적으로, 백본 링크(4702)를 통해 각각의 게이트웨이(4754)에 결합된 IoT 네트워크(4756, 4758, 4760, 4762)와 함께, IoT 디바이스(4704)를 포함하는 다수의 사물 인터넷(IoT) 네트워크에 이용될 수 있는 도메인 토폴로지의 간소화된 도면을 제공한다. 예를 들어, 다수의 IoT 디바이스(4704)는, 게이트웨이(4754)와 통신하고, 게이트웨이(4754)를 통해 서로 통신할 수 있다. 도면을 간소화하기 위해, 모든 IoT 디바이스(4704) 또는 통신 링크(예를 들어, 링크 4716, 4722, 4728 또는 4732)가 라벨링된 것은 아니다. 백본 링크(4702)는, 광학 네트워크를 포함한 임의의 수의 유선 또는 무선 기술을 포함할 수 있고, 근거리 통신망(LAN), 광역 네트워크(WAN) 또는 인터넷의 일부일 수 있다. 추가로, 이러한 통신 링크는 다양한 디바이스의 상호접속을 용이화하는 MUXing/deMUXing 컴포넌트의 이용을 포함한, IoT 디바이스(4704)와 게이트웨이(4754) 모두간의 광 신호 경로를 용이화한다.
네트워크 토폴로지는, BLE(Bluetooth low energy) 링크(4722)를 이용하는 네트워크(4756)와 함께 제공되는 메시 네트워크 등의 임의의 수의 IoT 네트워크 유형을 포함할 수 있다. 존재할 수 있는 다른 유형의 IoT 네트워크에는, IEEE 802.11(Wi-Fi®) 링크(4728)를 통해 IoT 디바이스(4704)와 통신하는데 이용되는 WLAN(wireless local area network) 네트워크(4758), LTE/LTE-A(4G) 또는 5G 셀룰러 네트워크를 통해 IoT 디바이스(4704)와 통신하는데 이용되는 셀룰러 네트워크(4760), 및 LPWA(low-power wide area) 네트워크(4762), 예를 들어, IETF(Internet Engineering Task Force)에서 발표한 명세와 호환되는 IPv6 over Low Power Wide-Area Networks (LPWAN) 네트워크, 또는 LoRa alliance에 의해 발표된 LoRaWan 명세와 호환되는 LPWA 네트워크가 포함된다. 또한, 각각의 IoT 네트워크는, LTE 셀룰러 링크, LPWA 링크, 또는 Zigbee® 등의 IEEE 802.15.4 표준에 기초한 링크 등의, 임의의 수의 통신 링크를 이용하여 외부 네트워크 제공자(예를 들어, 티어 2 또는 티어 3 제공자)와 통신할 수 있다. 각각의 IoT 네트워크는 또한, CoAP(Constrained Application Protocol) 등의 다양한 네트워크 및 인터넷 애플리케이션 프로토콜을 이용하여 동작할 수 있다. 각각의 IoT 네트워크는, 링크된 디바이스들 및 네트워크들의 클러스터 트리를 형성하는 링크 체인을 제공하는 조율자 디바이스와 통합될 수도 있다.
이들 IoT 네트워크 각각은, 여기서 설명된 것들 등의 새로운 기술적 피처에 대한 기회를 제공할 수 있다. 개선된 기술 및 네트워크는, IoT 네트워크를 포그(fog) 디바이스 또는 시스템으로 이용하는 것을 포함한, 디바이스 및 네트워크의 기하급수적인 성장을 가능케할 수 있다. 이러한 개선된 기술의 이용이 성장함에 따라, IoT 네트워크는, 인간의 직접적인 개입을 필요로 하지 않고, 자체 관리, 기능적 진화 및 협업을 위해 개발될 수 있다. 개선된 기술은, 심지어, 중앙집중형으로 제어되는 시스템 없이, IoT 네트워크가 기능하게 할 수 있다. 따라서, 여기서 설명된 개선된 기술은, 현재 구현을 훨씬 뛰어 넘는 네트워크 관리 및 운영 기능을 자동화하고 강화하는 이용될 수 있다.
한 예에서, 백본 링크(4702)를 통한 것 등에 의한, IoT 디바이스들(4704) 사이의 통신은, 인증, 인가, 및 어카운팅(AAA)을 위한 분산형 시스템에 의해 보호될 수 있다. 분산형 AAA 시스템에서, 분산 결제, 신용, 감사, 인가, 및 인증 시스템은, 상호접속된 이기종 네트워크 인프라스트럭처에 걸쳐 구현될 수 있다. 이것은, 시스템과 네트워크가 자율 운영을 향해 이동하는 것을 허용할 수 있다. 이들 유형의 자율 운영에서, 머신은 인적 자원 계약을 체결하고 다른 머신 네트워크와의 파트너십을 협상할 수도 있다. 이것은, 상호 목표, 개요되고 계획된 서비스 수준 계약 상의 균형잡힌 서비스의 전달 뿐만 아니라, 계량, 측정, 추적가능성(traceability and trackability)을 제공하는 솔루션의 달성을 허용한다. 새로운 공급망 구조와 방법의 생성은, 인간의 개입없이 다양한 서비스를 생성하고, 가치를 채굴하며 붕괴시킬 수 있다.
이러한 IoT 네트워크는 또한, 사운드, 광, 전자 트래픽, 얼굴 및 패턴 인식, 냄새, 진동 등의 감지 기술을, IoT 디바이스들간의 자율화된 조직 내에 통합시킴으로써 더욱 강화될 수 있다. 감각 시스템의 통합은, 계약 상의 서비스 목표, 오케스트레이션 및 서비스 품질(QoS) 기반의 자원의 스워밍(swarming) 및 융합에 대한 체계적이고 자율적인 커뮤니케이션 및 서비스 전달의 조율을 허용할 수 있다. 네트워크-기반의 자원 처리의 몇 가지 개개의 예는 다음을 포함한다.
메시 네트워크(4756)는, 예를 들어, 인라인 데이터-대-정보 변환을 수행하는 시스템에 의해 강화될 수 있다. 예를 들어, 다중-링크 네트워크를 포함하는 처리 자원들 체인을 자체-형성하는 것은, 원시 데이터의 정보로의 효율적 방식의 변환과, 각각의 자산 및 자원과 그 연관된 관리를 구분하는 능력을 분산시킬 수 있다. 또한, 데이터 무결성, 품질, 보증을 개선하고 데이터 신뢰성의 메트릭을 제공하기 위해, 인프라스트럭처 및 자원 기반의 신뢰 및 서비스 지표의 적절한 컴포넌트들이 삽입될 수 있다.
WLAN 네트워크(4758)는, 예를 들어, 다중-표준 접속을 제공하기 위해 표준 변환을 수행하는 시스템을 이용하여, 상이한 프로토콜들을 이용하는 IoT 디바이스들(4704)이 통신할 수 있게 한다. 추가 시스템은, 가시적인 인터넷 자원과 숨겨진 인터넷 자원을 포함한 다중-표준 인프라스트럭처에 걸쳐 원활한 상호접속성을 제공할 수 있다.
셀룰러 네트워크(4760)에서의 통신은, 예를 들어, 데이터를 오프로드하거나, 통신을 더 많은 원격 디바이스로 확장하거나, 양쪽 모두를 수행하는 시스템에 의해 강화될 수 있다. LPWA 네트워크(4762)는, 비인터넷 프로토콜(IP) 대 IP 상호접속, 어드레싱, 및 라우팅을 수행하는 시스템을 포함할 수 있다. 또한, IoT 디바이스(4704) 각각은, 그 디바이스와의 광역 통신을 위한 적절한 트랜시버를 포함할 수 있다. 또한, 각각의 IoT 디바이스(4704)는, 추가 프로토콜 및 주파수를 이용한 통신을 위한 다른 트랜시버를 포함할 수 있다. 이것은 도 49 및 도 50에 도시된 IoT 처리 디바이스의 통신 환경 및 하드웨어와 관련하여 추가로 논의된다.
마지막으로, IoT 디바이스들의 클러스터는, 다른 IoT 디바이스뿐만 아니라 클라우드 네트워크와 통신하도록 장착될 수 있다. 이것은, IoT 디바이스들이, 디바이스들 사이에서 애드혹 네트워크를 형성하는 것을 허용하여, 디바이스들이 포그 디바이스라고 지칭되는 단일 디바이스로서 기능하는 것을 허용할 수 있다. 이 구성은 아래의 도 48과 관련하여 더 논의된다.
도 48은 클라우드 컴퓨팅 네트워크의 에지에서 포그 디바이스로서 동작하는 IoT 디바이스들(디바이스들 4802)의 메시 네트워크와 통신하는 클라우드 컴퓨팅 네트워크를 나타낸다. IoT 디바이스들의 메시 네트워크는, 클라우드(4800)의 에지에서 동작하는 포그(4820)라고 지칭될 수 있다. 도면을 간소화하기 위해, 모든 IoT 디바이스(4802)가 라벨링된 것은 아니다.
포그(4820)는, 다수의 IoT 디바이스(4802)가 예를 들어 라디오 링크(4822)에 의해 서로 통신하는 대규모 상호접속된 네트워크인 것으로 간주될 수 있다. 한 예로서, 이 상호접속된 네트워크는, OCF(Open Connectivity Foundation™)에 의해 발표된 상호접속 명세를 이용하여 용이화될 수 있다. 이 표준은, 디바이스들이 서로를 발견하고 상호접속을 위한 통신을 확립하는 것을 허용한다. 예를 들어, 특히, 최적화된 링크 상태 라우팅(OLSR) 프로토콜, 모바일 애드혹 네트워킹(B.A.T.M.A.N.) 라우팅 프로토콜에 대한 더 나은 접근법, 또는 LWM2M(OMA Lightweight M2M) 프로토콜을 포함한, 기타의 상호접속 프로토콜도 이용될 수 있다.
이 예에서는 3개의 유형의 IoT 디바이스(4802), 즉, 게이트웨이(4804), 데이터 총계기(4826), 및 센서(4828)가 도시되어 있지만, IoT 디바이스(4802)와 기능의 임의의 조합이 이용될 수 있다. 게이트웨이(4804)는 클라우드(4800)와 포그(4820) 사이의 통신을 제공하는 에지 디바이스일 수 있으며, 움직임 데이터, 흐름 데이터, 온도 데이터 등의 센서(4828)로부터 획득된 데이터에 대한 백엔드 프로세스 기능을 역시 제공할 수 있다. 데이터 총계기(4826)는, 임의의 수의 센서(4828)로부터 데이터를 수집할 수 있고, 분석을 위한 백엔드 처리 기능을 수행할 수 있다. 결과, 원시 데이터, 또는 양쪽 모두는, 게이트웨이(4804)를 통해 클라우드(4800)에 전달될 수 있다. 센서(4828)는, 예를 들어, 데이터를 수집하고 데이터를 처리할 수 있는 완전한 IoT 디바이스(4802)일 수 있다. 일부 경우에, 센서(4828)는, 기능에 있어서, 예를 들어, 데이터를 수집하고 데이터 총계기(4826) 또는 게이트웨이(4804)가 데이터를 처리하는 것을 허용하는데 있어서 더 제한될 수 있다.
임의의 IoT 디바이스(4802)로부터의 통신은, 게이트웨이(4804)에 도달하기 위해 임의의 IoT 디바이스(4802) 사이의 편리한 경로(예를 들어, 가장 편리한 경로)를 따라 전달될 수 있다. 이들 네트워크에서, 상호접속의 수는 상당한 중복성을 제공하므로, 다수의 IoT 디바이스(4802)가 상실되더라도 통신이 유지되는 것을 허용한다. 또한, 메시 네트워크의 이용은, 또 다른 IoT 디바이스(4802)에 접속하는 범위가 게이트웨이(4804)에 접속하는 범위보다 훨씬 작을 수 있기 때문에, 초저전력이거나 인프라스트럭처로부터 멀리 떨어진 곳에 위치한 IoT 디바이스(4802)가 이용되는 것을 허용할 수 있다.
이들 IoT 디바이스(4802)로부터 제공된 포그(4820)는, 서버(4806), 클라우드(4800)의 에지에 위치한 단일 디바이스, 예를 들어 포그 디바이스 등의, 클라우드(4800) 내의 디바이스들에 제공될 수 있다. 이 예에서, 포그 디바이스에서 오는 경고는 포그(4820) 내의 특정한 IoT 디바이스(4802)로부터 오는 것으로 식별되지 않고 전송될 수 있다. 이러한 방식으로, 포그(4820)는, 다른 것들 중에서도 특히 데이터 분석, 데이터 총계 및 머신 학습 등의 처리 또는 데이터 집약적인 작업을 수행하기 위해 컴퓨팅 및 스토리지 자원을 제공하는 분산형 플랫폼으로서 간주될 수 있다.
일부 예에서, IoT 디바이스(4802)는 명령형(imperative) 프로그래밍 스타일을 이용하여 구성될 수 있으며, 예를 들어 각각의 IoT 디바이스(4802)는 특정한 기능 및 통신 파트너를 갖는다. 그러나, 포그 디바이스를 형성하는 IoT 디바이스(4802)는 선언적(declarative) 프로그래밍 스타일로 구성될 수 있으며, IoT 디바이스(4802)가, 조건, 질의 및 디바이스 장애에 응답하여 필요한 자원을 결정하는 것 등의 동작 및 통신을 재구성하는 것을 허용한다. 예를 들어, IoT 디바이스(4802)에 의해 모니터링되는 장비의 서브세트의 동작에 관한 서버(4806)에 위치한 사용자로부터의 질의는, 질의에 응답하는데 필요한 특정한 센서(4828) 등의 IoT 디바이스(4802)를 포그(4820) 디바이스가 선택하게 한다. 이들 센서(4828)로부터의 데이터는, 질의에 응답하기 위해 포그(4820) 디바이스에 의해 서버(4806)에 전송되기 전에, 센서(4828), 데이터 총계기(4826) 또는 게이트웨이(4804)의 임의의 조합에 의해 총계되고 분석될 수 있다. 이 예에서, 포그(4820) 내의 IoT 디바이스(4802)는, 흐름 센서 또는 온도 센서로부터의 데이터를 추가하는 것 등의, 질의에 기초하여 이용되는 센서(4828)를 선택할 수 있다. 또한, IoT 디바이스(4802) 중 일부가 동작하지 않는다면, 포그(4820) 디바이스 내의 다른 IoT 디바이스(4802)는 이용가능한 경우 유사한 데이터를 제공할 수 있다.
다른 예에서, 위에서 설명된 동작 및 기능은, 내부에서 명령어 세트 또는 시퀀스가 실행되어 전자 처리 시스템으로 하여금 예시적인 실시예에 따른, 본 명세서에서 논의된 방법론들 중 임의의 하나를 수행하게 할 수 있는 전자 처리 시스템의 예시적인 형태의 IoT 디바이스 머신에 의해 구현될 수 있다. 머신은, 개인용 컴퓨터(PC), 태블릿 PC, PDA(personal digital assistant), 모바일 전화 또는 스마트폰, 또는 그 머신에 의해 취해질 동작을 명시하는 명령어들을 (순차적으로 또는 기타의 방식으로) 실행할 수 있는 임의의 머신의 양태들에 의해 구현된 머신을 포함한, IoT 디바이스 또는 IoT 게이트웨이일 수 있다. 또한, 위의 예에서는 단일의 머신만이 도시되고 참조될 수 있지만, 이러한 머신은, 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 한 세트(또는 복수 세트)의 명령어를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 집합을 포함하는 것으로 간주되어야 한다. 또한, 이들 예 및 프로세서-기반 시스템과 유사한 예들은, 여기서 논의된 방법론들 중 임의의 하나 이상을 수행하는 명령어들을 개별적으로 또는 공동으로 실행하도록 프로세서(예를 들어, 컴퓨터)에 의해 제어되거나 동작되는 임의의 세트의 하나 이상의 머신을 포함하는 것으로 간주되어야 한다. 일부 구현에서, 하나 이상의 복수의 디바이스는 여기서 설명된 기능을 구현하고 작업을 수행하기 위해 협력적으로 동작할 수 있다. 일부 경우에는, 하나 이상의 호스트 디바이스가 데이터를 공급하거나, 명령어를 제공하거나, 결과를 총계하거나, 기타의 방식으로 복수의 디바이스에 의해 제공되는 공동 동작 및 기능을 용이화할 수 있다. 기능은 단일 디바이스에 의해 구현될 때 그 디바이스에 국한된 기능으로서 간주될 수 있지만, 단일 머신으로서 동작하는 복수의 디바이스의 구현에서, 기능은 집합적 디바이스들에 국한된 것으로 간주될 수 있으며, 이러한 디바이스들의 집합은, 다른 예시적 구현들 중에서도 특히, (단일 디바이스 또는 집합 디바이스로서 구현된) 다른 원격 머신에 의해 제공된 결과를 제공하거나 소비할 수 있다.
예를 들어, 도 49는, 다수의 사물 인터넷(IoT) 디바이스와 통신하는 클라우드 컴퓨팅 네트워크 또는 클라우드(4900)의 도면을 나타낸다. 클라우드(4900)는 인터넷을 나타내거나, 회사의 전용 네트워크 등의 LAN(local area network) 또는 WAN(wide area network)일 수 있다. IoT 디바이스는, 다양한 조합으로 그룹화된 임의의 수의 상이한 유형들의 디바이스를 포함할 수 있다. 예를 들어, 트래픽 제어 그룹(4906)은 도시의 거리를 따라 IoT 디바이스를 포함할 수 있다. 이들 IoT 디바이스는, 신호등, 교통 흐름 모니터, 카메라, 날씨 센서 등을 포함할 수 있다. 트래픽 제어 그룹(4906) 또는 기타의 서브그룹은, LPWA 링크, 광 링크 등의, 유선 또는 무선 링크(4908)를 통해 클라우드(4900)와 통신할 수 있다. 또한, 유선 또는 무선 서브네트워크(4912)는 IoT 디바이스들이 근거리 통신망, 무선 근거리 통신망 등을 통해 서로 통신하는 것을 허용할 수 있다. IoT 디바이스는, 클라우드(4900) 등의 원격 위치와 통신하기 위해 게이트웨이(4910 또는 4928) 등의 또 다른 디바이스를 이용할 수 있다; IoT 디바이스는 또한, 클라우드(4900) 또는 게이트웨이(4910)와의 통신을 용이화하기 위해 하나 이상의 서버(4930)를 이용할 수 있다. 예를 들어, 하나 이상의 서버(4930)는 근거리 통신망 중의 로컬 에지 클라우드 또는 포그 구현을 지원하는 중간 네트워크 노드로서 동작할 수 있다. 또한, 도시된 게이트웨이(4928)는, 다양한 IoT 디바이스(4914, 4920, 4924)가 클라우드(4900) 내의 자원의 할당 및 이용에 대해 제약되거나 동적인 등으로, 클라우드-대-게이트웨이-대-많은 에지 디바이스 구성에서 동작할 수 있다.
다른 예시적인 IoT 디바이스 그룹은, 많은 다른 것들 중에서도 특히, 원격 기상 관측소(4914), 지역 정보 단말기(4916), 경보 시스템(4918), 현금 자동 입출금기(4920), 경보 패널(4922), 또는 긴급 차량(4924) 또는 기타의 차량(4926) 등의 이동 차량을 포함할 수 있다. 이들 IoT 디바이스 각각은, 다른 IoT 디바이스, 서버(4904), 또 다른 IoT 포그 디바이스 또는 시스템(도시되지 않았지만, 도 48에 도시됨) 또는 이들의 조합과 통신할 수 있다. IoT 디바이스 그룹은, (개인 또는 공공 환경 양쪽 모두를 포함한) 다양한 주거, 상업 및 산업 환경에 배치될 수 있다.
도 49로부터 알 수 있는 바와 같이, 많은 수의 IoT 디바이스가 클라우드(4900)를 통해 통신할 수 있다. 이것은 상이한 IoT 디바이스들이 자율적으로 다른 디바이스에 정보를 요청하거나 제공하는 것을 허용할 수 있다. 예를 들어, IoT 디바이스 그룹(예를 들어, 트래픽 제어 그룹(4906))은 인간의 개입없이 예측을 제공할 수 있는 원격 기상 관측소(4914) 그룹에게 현재의 날씨 예보를 요청할 수 있다. 또한, 긴급 차량(4924)은 강도가 진행 중임을 현금 자동 입출금기(4920)에 의해 경고받을 수 있다. 긴급 차량(4924)이 현금 자동 입출금기(4920)를 향해 진행함에 따라, 트래픽 통제 그룹(4906)에 액세스하여, 예를 들어 긴급 차량(4924)이 방해받지 않고 교차로에 접근할 수 있는 충분한 시간 내에 교차로에서의 교차 트래픽을 차단하도록 빨간색으로 변하는 신호등에 의한 그 위치에 대한 정리를 요청할 수 있다.
원격 기상 관측소(4914) 또는 트래픽 제어 그룹(4906) 등의 IoT 디바이스들의 클러스터는, 클라우드(4900)뿐만 아니라 다른 IoT 디바이스와 통신하도록 장착될 수 있다. 이것은 IoT 디바이스들이 디바이스들간에 애드혹 네트워크를 형성하는 것을 허용하여, (예를 들어, 도 48을 참조하여 전술된 바와 같이) 이들이 포그 디바이스 또는 시스템이라고 지칭될 수 있는 단일 디바이스로서 기능하는 것을 허용할 수 있다.
도 50은 여기서 설명된 기술을 구현하기 위해 IoT 디바이스(5050) 내에 존재할 수 있는 컴포넌트들의 한 예의 블록도이다. IoT 디바이스(5050)는, 이 예에서 도시되거나 본 개시내용의 위에서 언급된 컴포넌트들의 임의의 조합을 포함할 수 있다. 컴포넌트들은, IC, 그 일부, 개개의 전자 디바이스, 또는 기타의 모듈, 로직, 하드웨어, 소프트웨어, 펌웨어 또는 IoT 디바이스(5050)에서 적응되는 이들의 조합으로서 구현되거나, 더 큰 시스템의 섀시 내에 기타의 방식으로 통합된 컴포넌트로서 구현될 수 있다. 추가로, 도 50의 블록도는 IoT 디바이스(5050)의 컴포넌트들에 대한 고수준 뷰를 도시하기 위한 것이다. 그러나, 다른 구현에서는, 도시된 컴포넌트들 중 일부가 생략될 수 있고, 추가적인 컴포넌트가 존재할 수도 있으며, 도시된 컴포넌트들의 상이한 배열이 발생할 수도 있다.
IoT 디바이스(5050)는, 마이크로프로세서, 멀티코어 프로세서, 멀티스레드 프로세서, 초 저전압 프로세서, 임베디드 프로세서, 또는 기타의 공지된 처리 요소일 수 있는 프로세서(5052)를 포함할 수 있다. 프로세서(5052)는, 프로세서(5052) 및 기타의 컴포넌트들이 단일 집적 회로 또는 인텔의 Edison™ 또는 Galileo™ SoC 보드 등의 단일 패키지로 형성되는 시스템 온 칩(SoC)의 일부일 수 있다. 예를 들어, 프로세서(5052)는, Quark™, Atom™, i3, i5, i7 또는 MCU급 프로세서 등의 Intel® Architecture Core™ 기반의 프로세서이거나, 캘리포니아주, 산타 클라라, Intel®사의 또 다른 이러한 프로세서를 포함할 수 있다. 그러나, 캘리포니아주, 서니베일의 AMD(Advanced Micro Devices, Inc.), 캘리포니아주, 서니베일의 MIPS Technologies, Inc.의 MIPS 기반의 설계, ARM Holdings, Ltd. 또는 그 고객 또는 그 면허권자 또는 채용자로부터의 ARM-기반의 설계 등의 임의의 수의 다른 프로세서가 이용될 수도 있다. 프로세서는, Apple® Inc.의 A5-A10 프로세서, Qualcomm® Technologies, Inc.의 Snapdragon™ 프로세서, 또는 Texas Instruments, Inc.의 OMAP™ 프로세서 등의 유닛을 포함할 수 있다.
프로세서(5052)는 상호접속부(5056)(예를 들어, 버스)를 통해 시스템 메모리(5054)와 통신할 수 있다. 주어진 양의 시스템 메모리를 제공하기 위해 임의의 수의 메모리 디바이스가 이용될 수 있다. 예로서, 메모리는, DDR 또는 모바일 DDR 표준(예를 들어, LPDDR, LPDDR2, LPDDR3 또는 LPDDR4) 등의 JEDEC(Joint Electron Devices Engineering Council) 설계에 따른 RAM(random access memory)일 수 있다. 다양한 구현에서, 개개의 메모리 디바이스는, 단일 다이 패키지(SDP), 듀얼 다이 패키지(DDP) 또는 쿼드 다이 패키지(Q17P) 등의 임의의 수의 상이한 패키지 유형일 수 있다. 이들 디바이스들은, 일부 예에서, 마더보드에 직접 납땜되어 더 낮은 프로파일 솔루션을 제공하는 반면, 다른 예에서는 이들 디바이스들은 소정 커넥터에 의해 마더보드에 차례로 결합되는 하나 이상의 메모리 모듈로서 구성된다. 다른 유형의 메모리 모듈, 예를 들어 microDIMM 또는 MiniDIMM을 포함한 그러나 이것으로 제한되지 않는 상이한 종류의 DIMM(dual inline memory module) 등의, 임의의 수의 다른 메모리 구현이 이용될 수 있다.
데이터, 애플리케이션, 운영 체제 등의 정보의 영구적 저장을 제공하기 위해, 스토리지(5058)는 또한 상호접속(5056)을 통해 프로세서(5052)에 결합될 수 있다. 한 예에서 스토리지(5058)는 솔리드 스테이트 디스크 드라이브(SSDD)를 통해 구현될 수 있다. 스토리지(5058)에 이용될 수 있는 기타의 디바이스는, SD 카드, microSD 카드, xD 픽처 카드 등의 플래시 메모리 카드, 및 USB 플래시 드라이브를 포함한다. 저전력 구현에서, 스토리지(5058)는 프로세서(5052)와 연관된 온다이 메모리 또는 레지스터일 수 있다. 그러나, 일부 예에서, 스토리지(5058)는 마이크로 하드 디스크 드라이브(HDD)를 이용하여 구현될 수 있다. 또한, 설명된 기술에 추가하여 또는 그 대신에, 다른 것들 중에서도 특히, 저항 변화 메모리, 상 변화 메모리, 홀로그래픽 메모리, 또는 화학적 메모리 등의, 임의의 수의 새로운 기술이 스토리지(5058)에 이용될 수 있다.
컴포넌트는 상호접속부(5056)를 통해 통신할 수 있다. 상호접속부(5056)는, ISA(industry standard architecture), EISA(extended ISA), PCI(peripheral component interconnect), PCIx(peripheral component interconnect extended), PCI express(PCIe) 또는 임의의 수의 다른 기술을 포함한, 임의의 수의 기술을 포함할 수 있다. 상호접속부(5056)는, 예를 들어 SoC 기반 시스템에서 이용되는 전용 버스일 수 있다. I2C 인터페이스, 다른 것들 중에서도 특히, SPI 인터페이스, 포인트 투 포인트 인터페이스, 및 전력 버스 등의 기타의 버스 시스템이 포함될 수 있다.
상호접속부(5056)는 다른 메시 디바이스(5064)와의 통신을 위해 프로세서(5052)를 메시 트랜시버(5062)에 결합할 수 있다. 메시 트랜시버(5062)는, 다른 것들 중에서도 특히, Bluetooth® Special Interest Group에 의해 정의된, Bluetooth® low energy (BLE) 표준, 또는 ZigBee® 표준을 이용하여 IEEE 802.15.4 표준에 따른 2.4GHz(Gigahertz) 전송 등의, 임의의 수의 주파수 및 프로토콜을 이용할 수 있다. 특정한 무선 통신 프로토콜에 대해 구성된 임의의 수의 라디오(radio)가, 메시 디바이스(5064)로의 접속에 이용될 수 있다. 예를 들어, WLAN 유닛은, IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준에 따라 Wi-Fi™ 통신을 구현하는데 이용될 수 있다. 또한, 예를 들어 셀룰러 또는 기타의 무선 광역 프로토콜에 따른 무선 광역 통신이 WWAN 유닛을 통해 발생할 수 있다.
메시 트랜시버(5062)는 상이한 범위에서의 통신을 위해 복수의 표준 또는 라디오를 이용하여 통신할 수 있다. 예를 들어, IoT 디바이스(5050)는, 전력을 절약하기 위해, BLE에 기반한 로컬 트랜시버 또는 다른 저전력 라디오를 이용하여, 예를 들어 약 10 미터 이내의 근접 디바이스와 통신할 수 있다. 예를 들어 약 50 미터 이내의 더 먼 메시 디바이스(5064)는, ZigBee 또는 기타의 중간 전력 라디오를 통해 도달할 수 있다. 양쪽 통신 기술은 상이한 전력 레벨에서 단일 라디오를 통해 발생하거나, 별개의 트랜시버들, 예를 들어 BLE를 이용한 로컬 트랜시버와 ZigBee를 이용한 별개의 메시 트랜시버를 통해 발생할 수도 있다.
무선 네트워크 트랜시버(5066)는, 로컬 또는 광역 네트워크 프로토콜을 통해 클라우드(5000) 내의 디바이스 또는 서비스와 통신하기 위해 포함될 수 있다. 무선 네트워크 트랜시버(5066)는, 다른 것들 중에서도 특히, IEEE 802.15.4 또는 IEEE 802.15.4g 표준을 따르는 LPWA 트랜시버일 수 있다. IoT 디바이스(5050)는, Semtech 및 LoRa Alliance에 의해 개발된 LoRaWAN™(Long Range Wide Area Network)을 이용하여 광역 통신할 수 있다. 여기서 설명된 기술은 이들 기술로 제한되지 않고, Sigfox 및 기타 기술 등의, 장거리, 저 대역폭 통신을 구현하는 임의의 수의 다른 클라우드 트랜시버와 함께 이용될 수 있다. 또한, IEEE 802.15.4e 명세에 설명된 시간-슬롯화된 채널 홉핑 등의 다른 통신 기술이 이용될 수도 있다.
본 명세서에 설명된 바와 같이, 메시 트랜시버(5062) 및 무선 네트워크 트랜시버(5066)에 대해 언급된 시스템에 추가하여, 임의의 수의 다른 라디오 통신 및 프로토콜이 이용될 수 있다. 예를 들어, 라디오 트랜시버(5062 및 5066)는, 고속 통신을 구현하기 위해 확산 스펙트럼(SPA/SAS) 통신을 이용하는 LTE 또는 기타의 셀룰러 트랜시버를 포함할 수 있다. 또한, 중속 통신 및 네트워크 통신의 제공을 위한 Wi-Fi® 네트워크 등의 임의의 수의 다른 프로토콜이 이용될 수 있다.
라디오 트랜시버(5062 및 5066)는, 임의의 수의 3GPP(Third Generation Partnership Project) 명세, 특히 LTE(Long Term Evolution), LTE-A(Long Term Evolution-Advanced) 및 LTE-A Pro(Long Term Evolution-Advanced Pro)와 호환되는 라디오를 포함할 수 있다. 임의의 수의 다른 고정, 이동 또는 위성 통신 기술 및 표준과 호환되는 라디오가 선택될 수 있다는 점에 유의해야 할 것이다. 이들은, 예를 들어, 5세대(5G) 통신 시스템, GSM(Global System for Mobile Communications) 무선 통신 기술, GPRS(General Packet Radio Service) 무선 통신 기술, 또는 EDGE(Enhanced Data Rates for GSM Evolution) 무선 통신 기술, UMTS(Universal Mobile Telecommunications System) 통신 기술을 포함할 수 있는, 임의의 셀룰러 광역 무선 통신 기술을 포함할 수 있고, 위에서 열거된 표준들 외에도, 예를 들어, 다른 것들 중에서도 특히, ITU(International Telecommunication Union) 또는 ETSI(European Telecommunications Standards Institute)에 의해 발표된 표준들과 호환되는 라디오를 포함한, 임의의 수의 위성 업링크 기술이 무선 네트워크 트랜시버(5066)에 이용될 수 있다. 따라서 여기서 제공된 예는, 기존 및 아직 공식화되지 않은 다양한 다른 통신 기술에 적용가능한 것으로 이해된다.
네트워크 인터페이스 제어기(NIC)(5068)는, 클라우드(5000)에 또는 메시 디바이스(5064) 등의 다른 디바이스에 유선 통신을 제공하기 위해 포함될 수 있다. 유선 통신은 이더넷 접속을 제공하거나, 많은 다른 것들 중에서도 특히, CAN(Controller Area Network), LIN(Local Interconnect Network), DeviceNet, ControlNet, Data Highway+, PROFIBUS, 또는 PROFINET 등의, 다른 유형의 네트워크에 기초할 수 있다. 예를 들어, 이더넷을 통해 클라우드로의 통신을 제공하는 NIC(5068) 및 또 다른 유형의 네트워크를 통해 다른 디바이스로의 통신을 제공하는 제2 NIC(5068) 등의, 제2 네트워크로의 접속을 허용하는 추가 NIC(5068)이 포함될 수 있다.
상호접속부(5056)는, 프로세서(5052)를 외부 디바이스 또는 서브시스템을 접속하는데 이용되는 외부 인터페이스(5070)에 결합할 수 있다. 외부 디바이스는, 가속도계, 레벨 센서, 흐름 센서, 광학적 광 센서, 카메라 센서, 온도 센서, GPS(global positioning system) 센서, 압력 센서, 기압 센서 등의 센서(5072)를 포함할 수 있다. 외부 인터페이스(5070)는 또한, IoT 디바이스(5050)를, 전원 스위치, 밸브 액츄에이터, 가청 사운드 생성기, 시각적 경고 디바이스 등의 액츄에이터(5074)에 접속하는데 이용될 수 있다.
일부 임의적인 예에서, 다양한 입력/출력(I/O) 디바이스가 IoT 디바이스(5050) 내에 존재하거나 이에 접속될 수 있다. 예를 들어, 디스플레이 또는 기타의 출력 디바이스(5084)가 센서 판독값 또는 액츄에이터 위치 등의 정보를 보여주기 위해 포함될 수 있다. 터치 스크린 또는 키패드 등의 입력 디바이스(5086)가 입력을 수락하기 위해 포함될 수 있다. 출력 디바이스(5084)는, 2진 상태 표시기(예를 들어, LED) 및 다중-문자 시각적 출력 등의 간단한 시각적 출력, 또는 디스플레이 스크린(예를 들어, LCD 스크린) 등의 더 복잡한 출력을 포함한, 임의의 수의 청각적 또는 시각적 디스플레이 형태를 포함할 수 있고, 문자, 그래픽, 멀티미디어 객체 등의 출력이 IoT 디바이스(5050)의 동작으로부터 발생되거나 생성된다.
배터리(5076)는 IoT 디바이스(5050)에 전력을 공급할 수 있지만, IoT 디바이스(5050)가 고정된 위치에 장착되는 예에서는 전기 그리드에 결합된 전원을 가질 수 있다. 배터리(5076)는 리튬 이온 배터리이거나, 아연-공기 배터리, 알루미늄-공기 배터리, 리튬-공기 배터리 등의 금속-공기 배터리일 수 있다.
배터리 모니터/충전기(5078)는 배터리(5076)의 충전 상태(SoCh)를 추적하기 위해 IoT 디바이스(5050)에 포함될 수 있다. 배터리 모니터/충전기(5078)는, 배터리(5076)의 건강 상태(SoH) 및 기능 상태(SoF) 등의, 고장 예측을 제공하기 위해 배터리(5076)의 다른 파라미터를 모니터링하는데 이용될 수 있다. 배터리 모니터/충전기(5078)는, Linear Technologies의 LTC4020 또는 LTC2990, Phoenix Arizona의 ON Semiconductor의 ADT7488A, 또는 텍사스주 달라스의 Texas Instruments의 UCD90xxx 제품군의 IC 등의, 배터리 모니터링 집적 회로를 포함할 수 있다. 배터리 모니터/충전기(5078)는, 배터리(5076)에 관한 정보를 상호접속부(5056)를 통해 프로세서(5052)에 전달할 수 있다. 배터리 모니터/충전기(5078)는 또한, 프로세서(5052)가 배터리(5076)의 전압 또는 배터리(5076)로부터의 전류 흐름을 직접 모니터링하는 것을 허용하는 아날로그-디지털(ADC) 변환기를 포함할 수 있다. 전송 주파수, 메시 네트워크 동작, 감지 주파수 등의, 배터리 파라미터는, IoT 디바이스(5050)가 수행할 수 있는 동작을 결정하는데 이용될 수 있다.
전력 블록(5080) 또는 그리드에 결합된 기타의 전원은, 배터리 모니터/충전기(5078)와 결합되어 배터리(5076)를 충전할 수 있다. 일부 예에서, 전력 블록(5080)은, 예를 들어 IoT 디바이스(5050)의 루프 안테나를 통해 무선으로 전력을 획득하기 위해 무선 전력 수신기로 대체될 수 있다. 다른 것들 중에서도 특히, 캘리포니아주 밀피타스의 Linear Technologies의 LTC4020 칩 등의 무선 배터리 충전 회로가 배터리 모니터/충전기(5078)에 포함될 수 있다. 선택된 특정한 충전 회로는, 배터리(5076)의 크기, 및 그에 따라 요구되는 전류에 의존한다. 충전은, 다른 것들 중에서도 특히, Airfuel Alliance에 의해 발표된 Airfuel 표준, Wireless Power Consortium에 의해 발표된 Qi 무선 충전 표준, 또는 Alliance for Wireless Power에 의해 발표된 Rezence 충전 표준 등을 이용하여 수행될 수 있다.
스토리지(5058)는, 본 명세서에 설명된 기술을 구현하기 위해, 소프트웨어, 펌웨어 또는 하드웨어 명령의 형태로 된 명령어들(5082)을 포함할 수 있다. 이러한 명령어들(5082)은 메모리(5054) 및 스토리지(5058)에 포함된 코드 블록들로서 도시되어 있지만, 임의의 코드 블록은 예를 들어 ASIC(application specific integrated circuit)에 내장된 하드와이어드 회로로 대체될 수 있다는 것을 이해할 수 있을 것이다.
한 예에서, 메모리(5054), 스토리지(5058), 또는 프로세서(5052)를 통해 제공된 명령어들(5082)은, 프로세서(5052)가 IoT 디바이스(5050)에서 전자적 연산을 수행할 것을 지시하는 코드를 포함하는 비일시적인 머신 판독가능한 매체(5060)로서 구현될 수 있다. 프로세서(5052)는 상호접속부(5056)를 통해 비일시적인 머신 판독가능한 매체(5060)에 액세스할 수 있다. 예를 들어, 비일시적인 머신 판독가능한 매체(5060)는, 도 50의 스토리지(5058)에 대해 설명된 디바이스들로 구현될 수 있거나, 광 디스크, 플래시 드라이브 또는 임의의 수의 다른 하드웨어 디바이스 등의 특정한 스토리지 유닛을 포함할 수 있다. 비일시적인 머신 판독가능한 매체(5060)는, 예를 들어, 전술된 동작 및 기능의 흐름도(들) 및 블록도(들)에 관해 설명된 바와 같이, 동작들의 특정한 시퀀스 또는 흐름을 수행하도록 프로세서(5052)에게 지시하는 명령어들을 포함할 수 있다.
도 51은 한 실시예에 따른 프로세서의 한 예시적인 예이다. 프로세서(5100)는 상기의 구현과 관련하여 이용될 수 있는 하드웨어 디바이스의 한 유형의 예이다. 프로세서(5100)는, 마이크로프로세서, 임베디드 프로세서, 디지털 신호 프로세서(DSP), 네트워크 프로세서, 멀티코어 프로세서, 단일 코어 프로세서, 또는 코드를 실행하는 기타의 디바이스 등의 임의의 유형의 프로세서일 수 있다. 단 하나의 프로세서(5100)가 도 51에 도시되어 있지만, 처리 요소는 대안으로서 도 51에 나타낸 하나보다 많은 프로세서(5100)를 포함할 수 있다. 프로세서(5100)는 단일-쓰레드형 코어일 수 있고, 또는 적어도 한 실시예의 경우, 프로세서(5100)는, 코어 당 하나보다 많은 하드웨어 쓰레드 컨텍스트(또는 "논리적 프로세서")를 포함할 수 있다는 점에서 멀티-쓰레드형일 수 있다.
도 51은 또한, 한 실시예에 따른 프로세서(5100)에 결합된 메모리(5102)를 나타낸다. 메모리(5102)는 본 분야의 통상의 기술자에게 공지되거나 기타의 방식으로 이용가능한 (다양한 계층의 메모리 계층을 포함한) 광범위한 메모리들 중 임의의 것일 수 있다. 이러한 메모리 요소는, RAM(random access memory), ROM(read only memory), FPGA(field programmable gate array)의 로직 블록, EPROM(erasable programmable read only memory) 및 EEPROM(electrically erasable programmable ROM)을 포함할 수 있지만, 이것으로 제한되는 것은 아니다.
프로세서(5100)는, 여기서 설명된 알고리즘, 프로세스 또는 연산과 연관된 임의의 유형의 명령어를 실행할 수 있다. 일반적으로, 프로세서(5100)는, 요소 또는 항목(예를 들어, 데이터)을, 하나의 상태 또는 사물로부터 또 다른 상태 또는 사물로 변환할 수 있다.
프로세서(5100)에 의해 실행될 하나 이상의 명령어일 수 있는 코드(5104)는 메모리(5102)에 저장되거나, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 적절한 조합으로, 또는 적절한 경우 및 특정한 필요성에 기초하여 기타 임의의 내부 또는 외부 컴포넌트, 디바이스, 요소 또는 객체에 저장될 수 있다. 한 예에서, 프로세서(5100)는 코드(5104)에 의해 표시된 명령어들의 프로그램 시퀀스를 따를 수 있다. 각각의 명령어는 프론트-엔드 로직(5106)에 들어가고 하나 이상의 디코더(5108)에 의해 처리된다. 디코더는 미리정의된 포맷의 고정폭 마이크로 동작 등의 마이크로 동작을 그 출력으로서 생성하거나, 원본 코드 명령어를 반영하는 다른 명령어, 마이크로명령어, 또는 제어 신호를 생성할 수 있다. 프론트-엔드 로직(5106)은 또한, 레지스터 개명 로직(5110), 및 일반적으로 자원을 할당하고 실행을 위한 명령어에 대응하는 동작을 큐잉하는 스케줄링 로직(5112)을 포함한다.
프로세서(5100)는 또한, 한 세트의 실행 유닛(5116a, 5116b, 5116n 등)을 갖는 실행 로직(5114)을 포함할 수 있다. 일부 실시예는 특정한 기능 또는 기능 세트에 전용된 다수의 실행 유닛을 포함할 수 있다. 다른 실시예는 특정한 기능을 수행할 수 있는 단 하나의 실행 유닛 또는 하나의 실행 유닛을 포함할 수 있다. 실행 로직(5114)은 코드 명령어에 의해 명시된 동작을 수행한다.
코드 명령어에 의해 명시된 동작의 실행의 완료 후에, 백-엔드 로직(5118)은 코드(5104)의 명령어를 퇴거시킨다. 한 실시예에서, 프로세서(5100)는 비순차 실행을 허용하지만, 명령어들의 순차 퇴거를 요구한다. 퇴거 로직(5120)은, 알려진 다양한 형태(예를 들어, 재정렬 버퍼 등)를 취할 수 있다. 이러한 방식으로, 프로세서(5100)는, 코드(5104)의 실행 동안에, 적어도, 디코더, 레지스터 개명 로직(5110)에 의해 이용되는 하드웨어 레지스터와 테이블 및 실행 로직(5114)에 의해 수정되는 임의의 레지스터(미도시)에 의해 생성되는 출력의 관점에서 변환된다.
도 51에 도시되지 않았지만, 처리 요소는 프로세서(5100)를 갖는 칩 상의 다른 요소를 포함할 수 있다. 예를 들어, 처리 요소는 프로세서(5100)와 함께 메모리 제어 로직을 포함할 수 있다. 처리 요소는 I/O 제어 로직을 포함하거나 및/또는 메모리 제어 로직과 통합된 I/O 제어 로직을 포함할 수 있다. 처리 요소는 또한 하나 이상의 캐시를 포함할 수 있다. 일부 실시예에서, (플래시 메모리 또는 퓨즈 등의) 비휘발성 메모리는 또한, 프로세서(5100)와 함께 칩 상에 포함될 수 있다.
도 52는, 한 실시예에 따른 포인트-투-포인트(PtP) 구성으로 배열된 컴퓨팅 시스템(5200)을 나타낸다. 특히, 도 52는, 프로세서, 메모리, 및 입력/출력 디바이스가 다수의 포인트-투-포인트 인터페이스에 의해 상호접속된 시스템을 도시한다. 일반적으로, 여기서 설명된 컴퓨팅 시스템들 중 하나 이상은 컴퓨팅 시스템(5200)과 동일하거나 유사한 방식으로 구성될 수 있다.
프로세서(5270 및 5280) 각각은 또한, 메모리 요소(5232 및 5234)와 통신하기 위해 통합 메모리 제어기 로직(MC)(5272 및 5282)을 포함할 수 있다. 대안적인 실시예에서, 메모리 제어기 로직(5272 및 5282)은 프로세서(5270 및 5280)와는 분리된 개별 로직일 수 있다. 메모리 요소(5232 및/또는 5234)는, 본 명세서에 요약된 동작 및 기능을 달성하는데 있어서 프로세서(5270 및 5280)에 의해 이용될 다양한 데이터를 저장할 수 있다.
프로세서(5270 및 5280)는, 다른 도면들과 관련하여 논의된 것들 등의 임의의 유형의 프로세서일 수 있다. 프로세서(5270 및 5280)는, 각각, 포인트-투-포인트 인터페이스 회로(5278 및 5288)를 이용하여 포인트-투-포인트(PtP) 인터페이스(5250)를 통해 데이터를 교환할 수 있다. 프로세서(5270 및 5280) 각각은, 포인트-투-포인트 인터페이스 회로(5276, 5286, 5294 및 5298)를 이용하여 개개의 포인트-투-포인트 인터페이스(5252 및 5254)를 통해 칩셋(5290)과 데이터를 교환할 수 있다. 칩셋(5290)은 또한, PtP 인터페이스 회로일 수 있는 인터페이스 회로(5292)를 이용하여, 고성능 그래픽 인터페이스(5239)를 통해 고성능 그래픽 회로(5238)와 데이터를 교환할 수 있다. 대안적인 실시예에서, 도 52에 도시된 PtP 링크들의 일부 또는 전부는 PtP 링크가 아니라 멀티-드롭 버스로서 구현될 수 있다.
칩셋(5290)은 인터페이스 회로(5296)를 통해 버스(5220)와 통신할 수 있다. 버스(5220)는, 버스 브릿지(5218) 및 I/O 디바이스(5216) 등을 통해 통신하는 하나 이상의 디바이스를 가질 수 있다. 버스(5210)를 통해, 버스 브릿지(5218)는, (키보드, 마우스, 터치 스크린 또는 기타 입력 디바이스 등의) 사용자 인터페이스(5212), (모뎀, 네트워크 인터페이스 디바이스, 컴퓨터 네트워크(5260)를 통해 통신할 수 있는 다른 유형의 통신 디바이스 등의) 통신 디바이스(5226), 오디오 I/O 디바이스(5214), 및/또는 데이터 스토리지 디바이스(5228) 등의 다른 유형의 통신 디바이스와 통신할 수 있다. 데이터 스토리지 디바이스(5228)는, 프로세서(5270 및/또는 5280)에 의해 실행될 수 있는 코드(5230)를 저장할 수 있다. 대안적인 실시예에서, 버스 아키텍처의 임의의 부분은 하나 이상의 PtP 링크로 구현될 수 있다.
도 52에 도시된 컴퓨터 시스템은, 여기서 논의된 다양한 실시예를 구현하기 위해 이용될 수 있는 컴퓨팅 시스템의 한 실시예의 개략도이다. 도 52에 도시된 시스템의 다양한 컴포넌트는, SoC(system-on-a-chip) 아키텍처로, 또는 여기서 제공된 예와 구현의 기능 및 피처를 달성할 수 있는 임의의 다른 적절한 구성으로 결합될 수 있다는 것을 이해할 수 있을 것이다.
추가 예에서, 머신 판독가능한 매체는 또한, 머신에 의한 실행을 위한 명령어를 저장, 인코딩 또는 운반할 수 있고, 머신으로 하여금 본 개시내용의 방법론들 중 임의의 하나 이상을 수행하게 하거나, 이러한 명령어에 의해 이용되거나 이와 연관된 데이터 구조를 저장, 인코딩 또는 운반할 수 있는 임의의 유형의 매체를 포함한다. 따라서, "머신 판독가능한 매체"는, 솔리드 스테이트 메모리, 광학 및 자기 매체를 포함할 수 있지만 이것으로 제한되는 것은 아니다. 머신 판독가능한 매체의 특정한 예는, 예를 들어, 반도체 메모리 디바이스(예를 들어, 전기적으로 프로그램가능한 판독 전용 메모리(EPROM), 전기적으로 소거가능하고 프로그램가능한 판독 전용 메모리(EEPROM)) 및 플래시 메모리 디바이스; 내부 하드 디스크 및 착탈식 디스크 등의 자기 디스크; 광자기 디스크; 및 CD-ROM 및 DVD-ROM 디스크를 포함한 그러나 이것으로 제한되지 않는 비휘발성 메모리를 포함한다. 머신 판독가능한 매체에 의해 구현된 명령어는, 다수의 전송 프로토콜 중 어느 하나(예를 들어, HTTP)를 이용하는 네트워크 인터페이스 디바이스를 통해 전송 매체를 이용하여 통신 네트워크를 거쳐 전송되거나 수신될 수 있다.
본 명세서에서 설명되는 기능 유닛 또는 능력은 그들의 구현 독립성을 더욱 특별히 강조하기 위하여 컴포넌트 또는 모듈이라고 지칭되거나 컴포넌트 또는 모듈로서 라벨링될 수 있다는 점을 이해해야 한다. 이러한 컴포넌트는 임의의 수의 소프트웨어 또는 하드웨어 형태로 구현될 수 있다. 예를 들어, 컴포넌트 또는 모듈은, 맞춤형 VLSI(very-large-scale integration) 회로나 게이트 어레이, 로직 칩 등의 기성품 반도체, 트랜지스터, 또는 기타의 개별 컴포넌트를 포함하는 하드웨어 회로로서 구현될 수 있다. 컴포넌트 또는 모듈은 또한, 필드 프로그래머블 게이트 어레이, 프로그래머블 어레이 로직, 프로그래머블 로직 디바이스 등의 프로그래머블 하드웨어 디바이스로 구현될 수도 있다. 컴포넌트 또는 모듈들은 또한, 다양한 타입의 프로세서에 의한 실행을 위해 소프트웨어로 구현될 수도 있다. 실행가능한 코드의 식별된 컴포넌트 또는 모듈은, 예를 들어, 객체, 프로시져, 또는 함수로서 조직화될 수 있는, 예를 들어 컴퓨터 명령어들의 하나 이상의 물리적 또는 논리적 블록들을 포함할 수 있다. 그럼에도 불구하고, 식별된 컴포넌트 또는 모듈의 실행파일들은 물리적으로 함께 위치할 필요는 없고, 논리적으로 함께 결합될 때, 컴포넌트 또는 모듈을 포함하고 그 컴포넌트 또는 모듈의 기술된 목적을 달성하는, 상이한 위치들에 저장된 이질적인 명령어들을 포함할 수 있다.
사실상, 실행가능한 코드의 컴포넌트 또는 모듈은, 단일 명령어, 또는 다수의 명령어일 수 있고, 심지어, 수 개의 상이한 코드 세그먼트들에 걸쳐, 상이한 프로그램들 사이에, 및 수 개의 메모리 디바이스 또는 처리 시스템에 걸쳐 분산될 수도 있다. 특히, (예를 들어, 코드 재작성 및 코드 분석 등의) 설명된 프로세스의 일부 양태는, (예를 들어, 센서 또는 로봇에 내장된 컴퓨터에서) 코드가 배치된 곳과는 상이한 (예를 들어, 데이터 센터의 컴퓨터 내의) 처리 시스템에서 발생할 수 있다. 유사하게, 연산 데이터는 본 명세서에서는 컴포넌트 또는 모듈 내에서 식별되고 예시될 수 있지만, 임의의 적절한 형태로 구현되거나 임의의 적절한 유형의 데이터 구조 내에서 조직화될 수도 있다. 연산 데이터는 단일 데이터세트로서 수집되거나, 상이한 저장 디바이스들을 포함한 상이한 장소들에 분포될 수도 있고, 단순히 시스템이나 네트워크 상에 전자적 신호로서, 적어도 부분적으로 존재할 수도 있다. 컴포넌트 또는 모듈은, 원하는 기능을 수행하도록 동작가능한 에이전트(agent)를 포함한, 수동형 또는 능동형일 수 있다.
현재 설명되는 방법, 시스템, 및 디바이스 실시예의 추가 예는 다음과 같은 비제한적인 구성을 포함한다. 이하의 비제한적인 예들 각각은 자립적이거나, 본 개시내용 전체에 걸쳐 또는 이하에서 제공된 다른 예들 중 임의의 하나 이상과의 임의의 치환 또는 조합으로 결합될 수 있다.
본 개시내용이 소정의 구현 및 일반적으로 연관된 방법의 관점에서 설명되었지만, 이들 구현 및 방법의 변경 및 치환은 본 기술분야의 통상의 기술자에게 명백할 것이다. 예를 들어, 여기서 설명된 동작들은 설명된 것과는 상이한 순서로 수행될 수 있으며 여전히 바람직한 결과를 달성할 수 있다. 한 예로서, 첨부된 도면들에 도시된 프로세스는, 원하는 결과를 달성하기 위해, 도시된 특정한 순서 또는 순차적인 순서를 반드시 요구하는 것은 아니다. 소정의 구현에서, 멀티 태스킹 및 병렬 처리가 유리할 수 있다. 추가로, 다른 사용자 인터페이스 레이아웃 및 기능이 지원될 수 있다. 다른 변형들은, 이하의 청구항들의 범위 내에 있다.
본 명세서는 많은 특정한 구현 상세사항을 포함하지만, 이들은 임의의 발명 또는 청구대상에 대한 제한으로 해석되어서는 안되며, 오히려 특정한 발명의 특정한 실시예 특유의 피처에 대한 설명으로서 해석되어야 한다. 별개의 실시예들의 정황에서 본 명세서에서 설명된 소정 피처는 또한, 단일의 실시예에서 조합하여 구현될 수 있다. 역으로, 단일 실시예의 정황에서 설명된 다양한 피처들은 또한, 복수의 실시예에서 별개로 구현되거나 임의의 적절한 하위조합(subcombination)으로 구현될 수 있다. 게다가, 피처들이 상기에서 소정 조합으로 작용하는 것으로 설명되거나 심지어 그와 같이 처음 청구되더라도, 청구된 조합으로부터의 하나 이상의 피처들은 일부 경우에는 그 조합으로부터 삭제될 수도 있고, 청구된 조합은 하위조합이나 하위조합의 변형에 관한 것일 수도 있다.
유사하게, 동작들이 도면에서 특정 순서로 도시되더라도, 이것은, 바람직한 결과를 달성하기 위해 이러한 동작들이 도시된 특정 순서로 또는 순차적 순서로 수행될 것을 요구하거나, 도시된 모든 동작들이 수행될 것을 요구하는 것으로 이해되어서는 안 된다. 소정 상황에서는, 멀티태스킹 및 병렬 처리가 유익할 수도 있다. 게다가, 전술된 실시예에서의 다양한 시스템 컴포넌트들의 분리는, 모든 실시예에서 이러한 분리를 요구하는 것으로 이해되어서는 안 되며, 설명된 프로그램 컴포넌트들 및 시스템들은 전체적으로 하나의 소프트웨어 제품으로 함께 통합되거나 복수의 소프트웨어 제품 내에 패키징될 수 있는 것으로 이해하여야 한다.
이하의 예들은 본 명세서에 따른 실시예들에 속한다. 예 1은 방법으로서, 메모리로부터, 객체의 합성 3차원(3D) 그래픽 모델에 액세스하는 단계 - 3D 그래픽 모델은 사실적인 사진 해상도를 가짐 -; 상기 3D 그래픽 모델의 뷰로부터 복수의 상이한 훈련 샘플을 생성하는 단계 - 상기 복수의 훈련 샘플은 실제 센서 디바이스에 의해 생성된 실제 샘플의 특성을 시뮬레이션하기 위해 상기 복수의 훈련 샘플에 불완전성을 추가하도록 생성됨 -; 및 상기 복수의 훈련 샘플을 포함하는 훈련 세트를 생성하는 단계 - 상기 훈련 데이터는 인공 신경망을 훈련시키기 위한 것임 - 를 포함한다.
예 2는 예 1의 주제를 포함하고, 여기서, 상기 복수의 훈련 샘플은 디지털 이미지를 포함하고 상기 센서 디바이스는 카메라 센서를 포함한다.
예 3은 예 1 또는 예 2의 주제를 포함하고, 여기서, 상기 복수의 훈련 샘플은 상기 객체의 포인트 클라우드 표현을 포함한다.
예 4는 예 3의 주제를 포함하고, 여기서, 상기 센서 디바이스는 LIDAR 센서를 포함한다.
예 5는 예 1 내지 예 4 중 어느 하나의 주제를 포함하고, 상기 센서 디바이스의 파라미터들을 나타내는 데이터에 액세스하는 단계; 및 상기 파라미터들에 기초하여 상기 복수의 훈련 샘플에 추가할 불완전성을 결정하는 단계를 더 포함한다.
예 6은 예 5의 주제를 포함하고, 여기서, 상기 데이터는 상기 센서 디바이스의 모델을 포함한다.
예 7은 예 1 내지 예 6 중 어느 하나의 주제를 포함하고, 상기 3D 그래픽 모델에 의해 모델링된 상기 객체의 하나 이상의 표면의 특성을 나타내는 데이터에 액세스하는 단계; 및 상기 특성에 기초하여 상기 복수의 훈련 샘플에 추가할 블완전성을 결정하는 단계를 더 포함한다.
예 8은 예 7의 주제를 포함하고, 여기서, 상기 3D 그래픽 모델은 상기 데이터를 포함한다.
예 9는 예 1 내지 예 8 중 어느 하나의 주제를 포함하고, 여기서, 상기 불완전성은 노이즈 또는 눈부심 중 하나 이상을 포함한다.
예 10은 예 1 내지 예 9 중 어느 하나의 주제를 포함하고, 여기서, 상기 복수의 상이한 훈련 샘플을 생성하는 단계는, 환경 내의 조명을 시뮬레이션하기 위해 상기 3D 그래픽 모델에 상이한 조명 설정들을 적용하는 단계; 상기 상이한 조명 설정들 중 특정한 하나의 적용 동안에 생성된 복수의 훈련 샘플 중의 한 서브세트에 대한 상기 불완전성을 결정하는 단계 - 상기 복수의 훈련 샘플 중의 상기 서브세트에 대한 불완전성은 상기 특정한 조명 설정에 기초함 - 를 포함한다.
예 11은 예 1 내지 예 10 중 어느 하나의 주제를 포함하고, 여기서, 상기 복수의 상이한 훈련 샘플을 생성하는 단계는, 상기 3D 그래픽 모델을 상이한 그래픽 환경 - 상기 그래픽 환경은 각각의 실제 환경을 모델링함 - 에 배치하는 단계; 및 상기 3D 그래픽 모델이 상이한 그래픽 환경 내에 배치되어 있는 동안 상기 복수의 훈련 샘플의 서브세트를 생성하는 단계를 포함한다.
예 12는 예1 내지 예 11항 중 어느 하나의 방법을 수행하는 수단을 포함하는 시스템이다.
예 13은 예 12의 주제를 포함하고, 여기서, 상기 시스템은 장치를 포함하고, 상기 장치는 예 1 내지 예 11 중 어느 하나의 방법의 적어도 일부를 수행하는 하드웨어 회로를 포함한다.
예 14는 예 1 내지 예 11 중 어느 하나의 방법을 수행하기 위해 프로세서에 의해 실행가능한 명령어를 저장한 컴퓨터 판독가능한 저장 매체이다.
예 15는 방법으로서, Siamese 신경망에서 대상 입력 및 기준 입력을 수신하는 단계 - 상기 Siamese 신경망은 제1 복수의 계층을 포함하는 제1 네트워크 부분 및 제2 복수의 계층을 포함하는 제2 네트워크 부분을 포함하고, 상기 제1 네트워크 부분의 가중치는 상기 제2 네트워크 부분의 가중치와 동일하며, 상기 대상 입력은 상기 제1 네트워크 부분에 대한 입력으로서 제공되고 상기 기준 입력은 상기 제2 네트워크 부분에 대한 입력으로서 제공됨 -; 및 상기 대상 입력 및 기준 입력에 기초하여 상기 Siamese 신경망의 출력을 생성하는 단계 - 상기 Siamese 신경망의 출력은 상기 기준 입력과 상기 대상 입력 사이의 유사성을 나타냄 - 를 포함한다.
예 16은 예 15의 주제를 포함하고, 여기서, 상기 출력을 생성하는 단계는, 상기 기준 입력과 상기 대상 입력 사이의 차이량을 결정하는 단계; 및 상기 차이량이 임계값을 충족하는지를 결정하는 단계 - 상기 출력은 상기 차이량이 임계값을 충족하는지를 식별시킴 - 를 포함한다.
예 17은 예 16의 주제를 포함하고, 여기서, 상기 기준 입력과 상기 대상 입력 사이의 차이량을 결정하는 단계는, 상기 제1 네트워크 부분에 의해 출력된 제1 피처 벡터 및 상기 제2 네트워크 부분에 의해 출력된 제2 피처 벡터를 수신하는 단계; 및 상기 제1 피처 벡터 및 상기 제2 피처 벡터에 기초하여 차이 벡터를 결정하는 단계를 포함한다.
예 18은 예 15 내지 예 17 중 어느 하나의 주제를 포함하고, 상기 출력을 생성하는 단계는 원샷 분류를 포함한다.
예 19는 예 15 내지 예 18 중 어느 하나의 주제를 포함하고, 하나 이상의 합성 훈련 샘플을 이용하여 Siamese 신경망을 훈련시키는 단계를 더 포함한다.
예 20은 예 19의 주제를 포함하고, 여기서, 상기 하나 이상의 합성 훈련 샘플은 예 1 내지 예 11 중 어느 하나의 방법에 따라 생성된다.
예 21은 예 15 내지 예 20 중 어느 하나의 주제를 포함하고, 여기서, 상기 기준 입력은 합성적으로 생성된 샘플을 포함한다.
예 22는 예 21의 주제를 포함하고, 여기서, 상기 합성적으로 생성된 샘플은 예 1 내지 예 11 중 어느 하나의 방법에 따라 생성된다.
예 23은 예 15 내지 예 22 중 어느 하나의 주제를 포함하고, 여기서, 상기 대상 입력은 제1 디지털 이미지를 포함하고 상기 기준 입력은 제2 디지털 이미지를 포함한다.
예 24는 예 15 내지 예 22 중 어느 하나의 주제를 포함하고, 여기서, 상기 대상 입력은 제1 포인트 클라우드 표현을 포함하고, 상기 기준 입력은 제2 포인트 클라우드 표현을 포함한다.
예 25는 예 15 내지 예 24 중 어느 하나의 방법을 수행하는 수단을 포함하는 시스템이다.
예 26은 예 25의 주제를 포함하고, 여기서, 상기 시스템은 장치를 포함하고, 상기 장치는 예 15 내지 예 24 중 어느 하나의 방법의 적어도 일부를 수행하는 하드웨어 회로를 포함한다.
예 27은 예 25의 주제를 포함하고, 여기서, 상기 시스템은, 로봇, 드론 또는 자율 차량 중 하나를 포함한다.
예 28은 예 15 내지 예 24 중 어느 하나의 방법을 수행하기 위해 프로세서에 의해 실행가능한 명령어를 저장한 컴퓨터 판독가능한 저장 매체이다.
예 29는 방법으로서, 제1 입력 데이터를 Siamese 신경망에 제공하는 단계 - 상기 제1 입력 데이터는 제1 자세로부터의 3D 공간의 제1 표현을 포함함 -; 제2 입력 데이터를 Siamese 신경망에 제공하는 단계 - 상기 제2 입력 데이터는 제2 자세로부터의 3D 공간의 제2 표현을 포함하고, 제2 상기 Siamese 신경망은 제1 복수의 계층을 포함하는 제1 네트워크 부분 및 제2 복수의 계층을 포함하는 제2 네트워크 부분을 포함하고, 상기 제1 네트워크 부분의 가중치는 상기 제2 네트워크 부분의 가중치와 동일하며, 상기 제1 입력 데이터는 상기 제1 네트워크 부분에 대한 입력으로서 제공되고 상기 제2 입력 데이터는 상기 제2 네트워크 부분에 대한 입력으로서 제공됨 -; 및 상기 Siamese 신경망의 출력을 생성하는 단계 - 상기 출력은 상기 제1 자세와 상기 제2 자세 사이의 상대적 자세를 포함함 - 를 포함한다.
예 30은 예 29의 주제를 포함하고, 여기서, 3D 공간의 상기 제1 표현은 제1 3D 포인트 클라우드를 포함하고, 3D 공간의 제2 표현은 제2 3D 포인트 클라우드를 포함한다.
예 31은 예 29 또는 예 30의 주제를 포함하고, 여기서, 상기 3D 공간의 상기 제1 표현은 제1 포인트 클라우드를 포함하고, 상기 3D 공간의 상기 제2 표현은 제2 포인트 클라우드를 포함한다.
예 32는 예 31의 주제를 포함하고, 여기서, 상기 제1 포인트 클라우드 및 상기 제2 포인트 클라우드 각각은, 각각의 복셀화된 포인트 클라우드 표현을 포함한다.
예 33은 예 29 내지 예 32 중 어느 하나의 주제를 포함하고, 상기 상대적 자세에 기초하여 적어도 상기 제1 및 제2 입력 데이터로부터 상기 3D 공간의 3D 매핑을 생성하는 단계를 더 포함한다.
예 34는 예 29 내지 예 32 중 어느 하나의 주제를 포함하고, 상기 상대적 자세에 기초하여 상기 3D 공간 내에서 상기 제1 자세의 관찰자의 위치를 결정하는 단계를 더 포함한다.
예 35는 예 34의 주제를 포함하고, 여기서, 상기 관찰자는 자율 머신을 포함한다.
예 36은 예 35의 주제를 포함하고, 여기서, 상기 자율 머신은, 로봇, 드론 또는 자율 차량 중 하나를 포함한다.
예 37은 예 29 내지 예 36 중 어느 하나의 방법을 수행하는 수단을 포함하는 시스템이다.
예 38은 예 37의 주제를 포함하고, 여기서, 상기 시스템은 장치를 포함하고, 상기 장치는 예 29 내지 예 36 중 어느 하나의 방법의 적어도 일부를 수행하는 하드웨어 회로를 포함한다.
예 39는 예 29 내지 예 36 중 어느 하나의 방법을 수행하기 위해 프로세서에 의해 실행가능한 명령어를 저장한 컴퓨터 판독가능한 저장 매체이다.
예 40은 방법으로서, 머신 학습 모델의 제1 부분에 대한 입력으로서 제1 센서 데이터를 제공하는 단계; 상기 머신 학습 모델의 제2 부분에 대한 입력으로서 제2 센서 데이터를 제공하는 단계 - 상기 머신 학습 모델은 연결기 및 완전-접속된 계층들의 세트를 포함하고, 상기 제1 센서 데이터는 디바이스에 의해 생성된 제1 유형이고, 상기 제2 센서 데이터는 상기 디바이스에 의해 생성된 상이한 제2 유형이며, 상기 연결기는 상기 머신 학습 모델의 상기 제1 부분의 출력을 제1 입력으로서 취하고, 상기 머신 학습 모델의 상기 제2 부분의 출력을 제2 입력으로서 취하며, 상기 연결기의 출력은 상기 완전-접속된 계층들의 세트에 제공됨 -; 및 상기 제1 데이터 및 제2 데이터로부터, 환경 내에서의 디바이스의 자세를 포함하는 상기 머신 학습 모델의 출력을 생성하는 단계를 포함한다.
예 41은 예 40의 주제를 포함하고, 여기서, 상기 제1 센서 데이터는 이미지 데이터를 포함하고, 상기 제2 센서 데이터는 상기 디바이스의 움직임을 식별한다.
예 42는 예 41의 주제를 포함하고, 여기서, 상기 이미지 데이터는 RGB(red-green-blue) 데이터를 포함한다.
예 43은 예 41의 주제를 포함하고, 여기서, 상기 이미지 데이터는 3D 포인트 클라우드 데이터를 포함한다.
예 44는 예 41의 주제를 포함하고, 여기서, 상기 제2 센서 데이터는 관성 측정 유닛(IMU) 데이터를 포함한다.
예 45는 예 41의 주제를 포함하고, 여기서, 상기 제2 센서 데이터는 전역적 위치결정 데이터를 포함한다.
예 46은 예 40항 내지 예 45항 중 어느 하나의 주제를 포함하고, 여기서, 상기 머신 학습 모델의 상기 제1 부분은 상기 제1 유형의 센서 데이터에 대해 튜닝되고, 상기 머신 학습 모델의 상기 제2 부분은 상기 제2 유형의 센서 데이터에 대해 튜닝된다.
예 47은 예 40항 내지 예 46항 중 어느 하나의 주제를 포함하고, 상기 머신 학습 모델의 제3 부분에 대한 입력으로서 제3 유형의 제3 센서 데이터를 제공하는 단계를 더 포함하고, 상기 출력은 상기 제3 데이터에 기초하여 추가로 발생된다.
예 48은 예 40 내지 예 47 중 어느 하나의 주제를 포함하고, 여기서, 상기 자세의 출력은 회전 성분 및 병진 성분을 포함한다.
예 49는 예 48의 주제를 포함하고, 여기서, 상기 완전-접속된 계층들의 세트 중 하나는 회전 성분을 결정하는 완전-접속된 계층을 포함하고, 상기 완전-접속된 계층들의 세트 중 다른 하나는 병진 성분을 결정하는 완전-접속된 계층을 포함한다.
예 50은 예 40 내지 예 49 중 어느 하나의 주제를 포함하고, 여기서, 상기 머신 학습 모델의 상기 제1 및 제2 부분 중 하나 또는 양쪽 모두는 각각의 콘볼루션 계층을 포함한다.
예 51은 예 40 내지 예 50 중 어느 하나의 주제를 포함하고, 여기서, 상기 머신 학습 모델의 상기 제1 및 제2 부분 중 하나 또는 양쪽 모두는 하나 이상의 각각의 장단기 메모리(long short-term memory)(LSTM) 블록을 포함한다.
예 52는 예 40 내지 예 51 중 어느 하나의 주제를 포함하고, 여기서, 상기 디바이스는 자율 머신을 포함하고, 상기 자율 머신은 상기 자세에 기초하여 상기 환경 내에서 네비게이션한다.
예 53은 예 52의 주제를 포함하고, 여기서, 상기 자율 머신은, 로봇, 드론 또는 자율 차량 중 하나를 포함한다.
예 54는 예 40 내지 예 52 중 어느 하나의 방법을 수행하는 수단을 포함하는 시스템이다.
예 55는 예 54의 주제를 포함하고, 여기서, 상기 시스템은 장치를 포함하고, 상기 장치는 예 40 내지 예 52 중 어느 하나의 방법의 적어도 일부를 수행하는 하드웨어 회로를 포함한다.
예 56은 예 40 내지 예 52 중 어느 하나의 방법을 수행하기 위해 프로세서에 의해 실행가능한 명령어를 저장한 컴퓨터 판독가능한 저장 매체이다.
예 57은 방법으로서, 신경망들의 세트의 무작위 생성을 요청하는 단계; 상기 신경망들의 세트 중의 각각의 것을 이용하여 머신 학습 작업을 수행하는 단계 - 상기 머신 학습 작업은 특정한 처리 하드웨어를 이용하여 수행됨 -; 상기 신경망들의 세트 중의 각각에 대한 상기 머신 학습 작업의 수행의 속성들을 모니터링하는 단계 - 상기 속성들은 상기 머신 학습 작업의 결과들의 정확성을 포함함 -; 및 상기 특정한 처리 하드웨어를 이용하여 상기 머신 학습 작업을 수행하는데 이용될 때 최고 성능의 신경망의 속성들에 기초하여 상기 신경망들의 세트 중 최고 성능의 것을 식별하는 단계를 포함한다.
예 58은 예 57의 주제를 포함하고, 머신 학습 애플리케이션을 수행할 때 머신에 의해 이용될 상기 최고 성능의 신경망을 제공하는 단계를 더 포함한다.
예 59는 예 57 또는 예 58의 주제를 포함하고, 상기 최고 성능의 신경망의 특성들을 결정하는 단계; 및 상기 특성들에 따라 신경망들의 제2 세트의 생성을 요청하는 단계 - 상기 신경망들의 제2 세트는 각각이 상기 특성들 중 하나 이상을 포함하는 복수의 상이한 신경망을 포함함 -; 상기 신경망들의 제2 세트 중의 각각의 것을 이용하여 상기 머신 학습 작업을 수행하는 단계 - 상기 머신 학습 작업은 상기 특정한 처리 하드웨어를 이용하여 수행됨 -; 상기 신경망들의 제2 세트 중의 각각에 대한 상기 머신 학습 작업의 수행의 속성들을 모니터링하는 단계; 및 상기 속성들에 기초하여 상기 신경망들의 제2 세트 중 최고 성능의 것을 식별하는 단계를 더 포함한다.
예 60은 예 57 내지 예 59 중 어느 하나의 주제를 포함하고, 상기 파라미터들에 기초하여 기준을 수신하는 단계를 더 포함하고, 상기 최고 성능의 신경망은 상기 기준에 기초한다.
예 61은 예 57 내지 예 60 중 어느 하나의 주제를 포함하고, 여기서, 상기 속성들은 상기 특정한 처리 하드웨어의 속성들을 포함한다.
예 62는 예 61의 주제를 포함하고, 여기서, 상기 특정한 처리 하드웨어의 속성들은, 상기 머신 학습 작업의 수행 동안 상기 특정한 처리 하드웨어에 의해 소비되는 전력, 상기 머신 학습 작업의 수행 동안 상기 특정한 처리 하드웨어의 온도, 및 상기 특정한 처리 하드웨어서 상기 신경망을 저장하는데 이용되는 메모리 중 하나 이상을 포함한다.
예 63은 예 57 내지 예 62 중 어느 하나의 주제를 포함하고, 상기 속성들은 상기 신경망들의 세트 중 대응하는 것을 이용해 상기 머신 학습 작업을 완료하는 시간을 포함한다.
예 64는 예 57 내지 예 63 중 어느 하나의 방법을 수행하는 수단을 포함하는 시스템이다.
예 65는 예 64의 주제를 포함하고, 여기서, 상기 시스템은 장치를 포함하고, 상기 장치는 예 57 내지 예 63 중 어느 하나의 방법의 적어도 일부를 수행하는 하드웨어 회로를 포함한다.
예 66은 예 57 내지 예 63 중 어느 하나의 방법을 수행하기 위해 프로세서에 의해 실행가능한 명령어를 저장한 컴퓨터 판독가능한 저장 매체이다.
예 67은 방법으로서, 복수의 커널을 포함하는 신경망을 식별하는 단계 - 커널들 중의 각각의 것은 각각의 세트의 가중치들을 포함함 -; 상기 복수의 커널을 특정한 세트의 커널들로 감소시키기 위해 하나 이상의 파라미터에 따라 상기 복수의 커널의 서브세트를 프루닝하는 단계; 상기 특정한 세트의 커널들에서 가중치들의 서브세트를 프루닝하여 상기 신경망의 프루닝된 버전을 형성하는 단계를 포함하고, 상기 가중치들의 서브세트를 프루닝하는 것은, 상기 가중치들의 서브세트에서 하나 이상의 비제로 가중치를 0으로 할당하며, 상기 가중치들의 서브세트는 상기 가중치들의 원래의 값들에 기초하여 선택된다.
예 68은 예 67의 주제를 포함하고, 여기서, 상기 가중치들의 서브세트는 임계값 아래로 떨어지는 가중치들의 서브세트의 값들에 기초하여 프루닝된다.
예 69는 예 67 또는 예 68의 주제를 포함하고, 상기 커널들 및 가중치들의 프루닝을 통한 정확도 손실의 적어도 일부를 복구하기 위해 상기 신경망의 프루닝된 버전을 이용하여 머신 학습 작업의 하나 이상의 반복을 수행하는 단계를 더 포함한다.
예 70은 예 67 내지 예 69 중 어느 하나의 주제를 포함하고, 상기 신경망의 컴팩트 버전을 생성하기 위해 상기 신경망의 상기 프루닝된 버전에서 프루닝 되지 않은 가중치들의 값들을 양자화하는 단계를 더 포함한다.
예 71은 예 70의 주제를 포함하고, 여기서, 상기 양자화는 로그 베이스 양자화를 포함한다.
예 72는 예 71의 주제를 포함하고, 여기서, 가중치들은 부동 소수점 값들로부터 베이스 2인 값들로 양자화된다.
예 73은 예 67 내지 예 72 중 어느 하나의 주제를 포함하고, 저밀도 행렬 산술에 적응된 하드웨어를 이용한 머신 학습 작업의 실행을 위해 상기 신경망의 프루닝된 버전을 제공하는 단계를 더 포함한다.
예 74는 예 67 내지 예 73 중 어느 하나의 방법을 수행하는 수단을 포함하는 시스템이다.
예 75는 예 64의 주제를 포함하고, 여기서, 상기 시스템은 장치를 포함하고, 상기 장치는 예 67 내지 예 73 중 어느 하나의 방법의 적어도 일부를 수행하는 하드웨어 회로를 포함한다.
예 76은 예 67 내지 예 73 중 어느 하나의 방법을 수행하기 위해 프로세서에 의해 실행가능한 명령어를 저장한 컴퓨터 판독가능한 저장 매체이다.
지금까지, 본 주제의 특정한 실시예들이 설명되었다. 다른 실시예들은 이하의 청구항들의 범위 내에 있다. 일부 경우에는, 청구항에서 인용되는 동작(action)들은 상이한 순서로 수행되어 역시 바람직한 결과를 달성할 수 있다. 추가로, 첨부된 도면들에 도시된 프로세스는, 바람직한 결과를 달성하기 위해, 반드시 도시된 특정한 순서 또는 순차적 순서를 요구하는 것은 아니다.
Claims (76)
- 방법으로서,
메모리로부터, 객체의 합성 3차원(3D) 그래픽 모델에 액세스하는 단계 - 상기 3D 그래픽 모델은 사실적인 사진 해상도(photo-realistic resolution)를 가짐 -;
상기 3D 그래픽 모델의 뷰들로부터 복수의 상이한 훈련 샘플을 생성하는 단계 - 상기 복수의 훈련 샘플은 실제 센서 디바이스에 의해 생성된 실제 샘플들의 특성들을 시뮬레이션하기 위해 상기 복수의 훈련 샘플에 불완전성(imperfection)들을 추가하도록 생성됨 -; 및
상기 복수의 훈련 샘플을 포함하는 훈련 세트를 생성하는 단계 - 상기 훈련 데이터는 인공 신경망을 훈련시키기 위한 것임 -
를 포함하는, 방법. - 제1항에 있어서, 상기 복수의 훈련 샘플은 디지털 이미지를 포함하고 상기 센서 디바이스는 카메라 센서를 포함하는, 방법.
- 제1항 또는 제2항에 있어서, 상기 복수의 훈련 샘플은 상기 객체의 포인트 클라우드 표현들을 포함하는, 방법.
- 제3항에 있어서, 상기 센서 디바이스는 LIDAR 센서를 포함하는, 방법.
- 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 센서 디바이스의 파라미터들을 나타내는 데이터에 액세스하는 단계; 및
상기 파라미터들에 기초하여 상기 복수의 훈련 샘플에 추가할 불완전성들을 결정하는 단계
를 더 포함하는 방법. - 제5항에 있어서, 상기 데이터는 상기 센서 디바이스의 모델을 포함하는, 방법.
- 제1항 내지 제6항 중 어느 한 항에 있어서,
상기 3D 그래픽 모델에 의해 모델링된 상기 객체의 하나 이상의 표면의 특성들을 나타내는 데이터에 액세스하는 단계; 및
상기 특성들에 기초하여 상기 복수의 훈련 샘플에 추가할 불완전성들을 결정하는 단계
를 더 포함하는, 방법. - 제7항에 있어서, 상기 3D 그래픽 모델은 상기 데이터를 포함하는, 방법.
- 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 불완전성들은 노이즈 또는 눈부심 중 하나 이상을 포함하는, 방법.
- 제1항 내지 제9항 중 어느 한 항에 있어서, 상기 복수의 상이한 훈련 샘플을 생성하는 단계는,
환경 내의 조명을 시뮬레이션하기 위해 상기 3D 그래픽 모델에 상이한 조명 설정들을 적용하는 단계;
상기 상이한 조명 설정들 중 특정한 하나의 적용 동안에 생성된 상기 복수의 훈련 샘플 중의 한 서브세트에 대한 불완전성들을 결정하는 단계 - 상기 복수의 훈련 샘플 중의 서브세트에 대한 불완전성들은 상기 특정한 조명 설정에 기초함 -
를 포함하는, 방법. - 제1항 내지 제10항 중 어느 한 항에 있어서, 상기 복수의 상이한 훈련 샘플을 생성하는 단계는,
상기 3D 그래픽 모델을 상이한 그래픽 환경들에 배치하는 단계 - 상기 그래픽 환경들은 각각의 실제 환경들을 모델링함 -; 및
상기 3D 그래픽 모델이 상이한 그래픽 환경들 내에 배치되어 있는 동안 상기 복수의 훈련 샘플의 서브세트를 생성하는 단계
를 포함하는, 방법. - 제1항 내지 제11항 중 어느 한 항의 방법을 수행하는 수단을 포함하는, 시스템.
- 제12항에 있어서, 상기 시스템은 장치를 포함하고, 상기 장치는 제1항 내지 제11항 중 어느 한 항의 방법의 적어도 일부를 수행하는 하드웨어 회로를 포함하는, 시스템.
- 제1항 내지 제11항 중 어느 한 항의 방법을 수행하기 위해 프로세서에 의해 실행가능한 명령어들을 저장하는, 컴퓨터 판독가능한 저장 매체.
- 방법으로서,
Siamese 신경망에서 대상 입력 및 기준 입력을 수신하는 단계 - 상기 Siamese 신경망은 제1 복수의 계층을 포함하는 제1 네트워크 부분 및 제2 복수의 계층을 포함하는 제2 네트워크 부분을 포함하고, 상기 제1 네트워크 부분의 가중치들은 상기 제2 네트워크 부분의 가중치들과 동일하며, 상기 대상 입력은 상기 제1 네트워크 부분에 대한 입력으로서 제공되고 상기 기준 입력은 상기 제2 네트워크 부분에 대한 입력으로서 제공됨 -; 및
상기 대상 입력 및 기준 입력에 기초하여 상기 Siamese 신경망의 출력을 생성하는 단계 - 상기 Siamese 신경망의 출력은 상기 기준 입력과 상기 대상 입력 사이의 유사성을 나타냄 -
를 포함하는 방법. - 제15항에 있어서, 상기 출력을 생성하는 단계는,
상기 기준 입력과 상기 대상 입력 사이의 차이량을 결정하는 단계; 및
상기 차이량이 임계값을 충족하는지를 결정하는 단계 - 상기 출력은 상기 차이량이 상기 임계값을 충족하는지를 식별시킴 -
를 포함하는 방법. - 제16항에 있어서, 상기 기준 입력과 상기 대상 입력 사이의 차이량을 결정하는 단계는,
상기 제1 네트워크 부분에 의해 출력된 제1 피처 벡터 및 상기 제2 네트워크 부분에 의해 출력된 제2 피처 벡터를 수신하는 단계; 및
상기 제1 피처 벡터 및 상기 제2 피처 벡터에 기초하여 차이 벡터를 결정하는 단계
를 포함하는, 방법. - 제15항 내지 제17항 중 어느 한 항에 있어서, 상기 출력을 생성하는 단계는 원샷 분류(one-shot classification)를 포함하는, 방법.
- 제15항 내지 제18항 중 어느 한 항에 있어서, 하나 이상의 합성 훈련 샘플을 이용하여 상기 Siamese 신경망을 훈련시키는 단계를 더 포함하는, 방법.
- 제19항에 있어서, 상기 하나 이상의 합성 훈련 샘플은 제1항 내지 제11항 중 어느 한 항의 방법에 따라 생성되는, 방법.
- 제15항 내지 제20항 중 어느 한 항에 있어서, 상기 기준 입력은 합성적으로 생성된 샘플을 포함하는, 방법.
- 제21항에 있어서, 상기 합성적으로 생성된 샘플은 제1항 내지 제11항 중 어느 한 항의 방법에 따라 생성되는, 방법.
- 제15항 내지 제22항 중 어느 한 항에 있어서, 상기 대상 입력은 제1 디지털 이미지를 포함하고 상기 기준 입력은 제2 디지털 이미지를 포함하는, 방법.
- 제15항 내지 제22항 중 어느 한 항에 있어서, 상기 대상 입력은 제1 포인트 클라우드 표현을 포함하고, 상기 기준 입력은 제2 포인트 클라우드 표현을 포함하는, 방법.
- 제15항 내지 제24항 중 어느 한 항의 방법을 수행하는 수단을 포함하는, 시스템.
- 제25항에 있어서, 상기 시스템은 장치를 포함하고, 상기 장치는 제15항 내지 제24항 중 어느 한 항의 방법의 적어도 일부를 수행하는 하드웨어 회로를 포함하는, 시스템.
- 제25항에 있어서, 상기 시스템은 로봇, 드론 또는 자율 차량 중 하나를 포함하는, 시스템.
- 제15항 내지 제24항 중 어느 한 항의 방법을 수행하기 위해 프로세서에 의해 실행가능한 명령어들을 저장하는, 컴퓨터 판독가능한 저장 매체.
- 방법으로서,
제1 입력 데이터를 Siamese 신경망에 제공하는 단계 - 상기 제1 입력 데이터는 제1 자세(pose)로부터의 3D 공간의 제1 표현을 포함함 -;
제2 입력 데이터를 상기 Siamese 신경망에 제공하는 단계 - 상기 제2 입력 데이터는 제2 자세로부터의 3D 공간의 제2 표현을 포함하고, 상기 Siamese 신경망은 제1 복수의 계층을 포함하는 제1 네트워크 부분 및 제2 복수의 계층을 포함하는 제2 네트워크 부분을 포함하고, 상기 제1 네트워크 부분의 가중치들은 상기 제2 네트워크 부분의 가중치들과 동일하며, 상기 제1 입력 데이터는 상기 제1 네트워크 부분에 대한 입력으로서 제공되고 상기 제2 입력 데이터는 상기 제2 네트워크 부분에 대한 입력으로서 제공됨 -; 및
상기 Siamese 신경망의 출력을 생성하는 단계 - 상기 출력은 상기 제1 자세와 제2 자세 사이의 상대적 자세를 포함함 -
를 포함하는 방법. - 제29항에 있어서, 상기 3D 공간의 제1 표현은 제1 3D 포인트 클라우드를 포함하고, 상기 3D 공간의 제2 표현은 제2 3D 포인트 클라우드를 포함하는, 방법.
- 제29항 또는 제30항에 있어서, 상기 3D 공간의 제1 표현은 제1 포인트 클라우드를 포함하고, 상기 3D 공간의 제2 표현은 제2 포인트 클라우드를 포함하는, 방법.
- 제31항에 있어서, 상기 제1 포인트 클라우드 및 상기 제2 포인트 클라우드 각각은 각각의 복셀화된 포인트 클라우드 표현들을 포함하는, 방법.
- 제29항 내지 제32항 중 어느 한 항에 있어서,
상기 상대적 자세에 기초하여 적어도 상기 제1 및 제2 입력 데이터로부터 상기 3D 공간의 3D 매핑을 생성하는 단계를 더 포함하는, 방법. - 제29항 내지 제32항 중 어느 한 항에 있어서,
상기 상대적 자세에 기초하여 상기 3D 공간 내에서 상기 제1 자세의 관찰자의 위치를 결정하는 단계를 더 포함하는, 방법. - 제34항에 있어서, 상기 관찰자는 자율 머신을 포함하는, 방법.
- 제35항에 있어서, 상기 자율 머신은, 로봇, 드론 또는 자율 차량 중 하나를 포함하는, 방법.
- 제29항 내지 제36항 중 어느 한 항의 방법을 수행하는 수단을 포함하는, 시스템.
- 제37항에 있어서, 상기 시스템은 장치를 포함하고, 상기 장치는 제29항 내지 제36항 중 어느 한 항의 방법의 적어도 일부를 수행하는 하드웨어 회로를 포함하는, 시스템.
- 제29항 내지 제36항 중 어느 한 항의 방법을 수행하기 위해 프로세서에 의해 실행가능한 명령어들을 저장하는, 컴퓨터 판독가능한 저장 매체.
- 방법으로서,
머신 학습 모델의 제1 부분에 대한 입력으로서 제1 센서 데이터를 제공하는 단계;
상기 머신 학습 모델의 제2 부분에 대한 입력으로서 제2 센서 데이터를 제공하는 단계 - 상기 머신 학습 모델은 연결기(concatenator) 및 완전-접속된 계층들의 세트를 포함하고, 상기 제1 센서 데이터는 디바이스에 의해 생성된 제1 유형이고, 상기 제2 센서 데이터는 상기 디바이스에 의해 생성된 상이한 제2 유형이며, 상기 연결기는 상기 머신 학습 모델의 제1 부분의 출력을 제1 입력으로서 취하고 상기 머신 학습 모델의 제2 부분의 출력을 제2 입력으로서 취하며, 상기 연결기의 출력은 상기 완전-접속된 계층들의 세트에 제공됨 -; 및
상기 제1 데이터 및 제2 데이터로부터, 환경 내에서의 상기 디바이스의 자세를 포함하는 상기 머신 학습 모델의 출력을 생성하는 단계
를 포함하는 방법. - 제40항에 있어서, 상기 제1 센서 데이터는 이미지 데이터를 포함하고, 상기 제2 센서 데이터는 상기 디바이스의 움직임을 식별하는, 방법.
- 제41항에 있어서, 상기 이미지 데이터는 적색-녹색-청색(red-green-blue)(RGB) 데이터를 포함하는, 방법.
- 제41항에 있어서, 상기 이미지 데이터는 3D 포인트 클라우드 데이터를 포함하는, 방법.
- 제41항에 있어서, 상기 제2 센서 데이터는 관성 측정 유닛(inertial measurement unit)(IMU) 데이터를 포함하는, 방법.
- 제41항에 있어서, 상기 제2 센서 데이터는 전역적 위치결정 데이터(global positioning data)를 포함하는, 방법.
- 제40항 내지 제45항 중 어느 한 항에 있어서, 상기 머신 학습 모델의 제1 부분은 상기 제1 유형의 센서 데이터에 대해 튜닝되고, 상기 머신 학습 모델의 제2 부분은 상기 제2 유형의 센서 데이터에 대해 튜닝되는, 방법.
- 제40항 내지 제46항 중 어느 한 항에 있어서, 상기 머신 학습 모델의 제3 부분에 대한 입력으로서 제3 유형의 제3 센서 데이터를 제공하는 단계를 더 포함하고, 상기 출력은 상기 제3 데이터에 기초하여 추가로 발생되는, 방법.
- 제40항 내지 제47항 중 어느 한 항에 있어서, 상기 자세의 출력은 회전 성분 및 병진 성분(translational component)을 포함하는, 방법.
- 제48항에 있어서, 상기 완전-접속된 계층들의 세트 중 하나는 상기 회전 성분을 결정하는 완전-접속된 계층을 포함하고, 상기 완전-접속된 계층들의 세트 중 다른 하나는 상기 병진 성분을 결정하는 완전-접속된 계층을 포함하는, 방법.
- 제40항 내지 제49항 중 어느 한 항에 있어서, 상기 머신 학습 모델의 제1 및 제2 부분들 중 하나 또는 양쪽 모두는 각각의 콘볼루션 계층들을 포함하는, 방법.
- 제40항 내지 제50항 중 어느 한 항에 있어서, 상기 머신 학습 모델의 제1 및 제2 부분들 중 하나 또는 양쪽 모두는 하나 이상의 각각의 장단기 메모리(long short-term memory)(LSTM) 블록을 포함하는, 방법.
- 제40항 내지 제51항 중 어느 한 항에 있어서, 상기 디바이스는 자율 머신을 포함하고, 상기 자율 머신은 상기 자세에 기초하여 상기 환경 내에서 네비게이션하는, 방법.
- 제52항에 있어서, 상기 자율 머신은 로봇, 드론 또는 자율 차량 중 하나를 포함하는, 방법.
- 제40항 내지 제52항 중 어느 한 항의 방법을 수행하는 수단을 포함하는 시스템.
- 제54항에 있어서, 상기 시스템은 장치를 포함하고, 상기 장치는 제40항 내지 제52항 중 어느 한 항의 방법의 적어도 일부를 수행하는 하드웨어 회로를 포함하는, 시스템.
- 제40항 내지 제52항 중 어느 한 항의 방법을 수행하기 위해 프로세서에 의해 실행가능한 명령어들을 저장하는, 컴퓨터 판독가능한 저장 매체.
- 방법으로서,
신경망들의 세트의 무작위 생성을 요청하는 단계;
상기 신경망들의 세트 중의 각각의 것을 이용하여 머신 학습 작업을 수행하는 단계 - 상기 머신 학습 작업은 특정한 처리 하드웨어를 이용하여 수행됨 -;
상기 신경망들의 세트 중의 각각에 대한 상기 머신 학습 작업의 수행의 속성들을 모니터링하는 단계 - 상기 속성들은 상기 머신 학습 작업의 결과들의 정확성을 포함함 -; 및
상기 특정한 처리 하드웨어를 이용하여 상기 머신 학습 작업을 수행하는데 이용될 때 최고 성능의 신경망의 속성들에 기초하여 상기 신경망들의 세트 중 최고 성능의 것을 식별하는 단계
를 포함하는 방법. - 제57항에 있어서,
머신 학습 애플리케이션을 수행할 때 머신에 의해 이용될 상기 최고 성능의 신경망을 제공하는 단계를 더 포함하는 방법. - 제57항 또는 제58항에 있어서,
상기 최고 성능의 신경망의 특성들을 결정하는 단계; 및
상기 특성들에 따라 신경망들의 제2 세트의 생성을 요청하는 단계 - 상기 신경망들의 제2 세트는, 각각이 상기 특성들 중 하나 이상을 포함하는 복수의 상이한 신경망을 포함함 -;
상기 신경망들의 제2 세트 중의 각각의 것을 이용하여 상기 머신 학습 작업을 수행하는 단계 - 상기 머신 학습 작업은 상기 특정한 처리 하드웨어를 이용하여 수행됨 -;
상기 신경망들의 제2 세트 중의 각각에 대한 상기 머신 학습 작업의 수행의 속성들을 모니터링하는 단계; 및
상기 속성들에 기초하여 상기 신경망들의 제2 세트 중 최고 성능의 것을 식별하는 단계
를 더 포함하는 방법. - 제57항 내지 제59항 중 어느 한 항에 있어서, 파라미터들에 기초하여 기준을 수신하는 단계를 더 포함하고, 상기 최고 성능의 신경망은 상기 기준에 기초하는, 방법.
- 제57항 내지 제60항 중 어느 한 항에 있어서, 상기 속성들은 상기 특정한 처리 하드웨어의 속성들을 포함하는, 방법.
- 제61항에 있어서, 상기 특정한 처리 하드웨어의 속성들은, 상기 머신 학습 작업의 수행 동안 상기 특정한 처리 하드웨어에 의해 소비되는 전력, 상기 머신 학습 작업의 수행 동안 상기 특정한 처리 하드웨어의 온도, 및 상기 특정한 처리 하드웨어 상에 상기 신경망을 저장하는데 이용되는 메모리 중 하나 이상을 포함하는, 방법.
- 제57항 내지 제62항 중 어느 한 항에 있어서, 상기 속성들은 상기 신경망들의 세트 중 대응하는 것을 이용해 상기 머신 학습 작업을 완료하는 시간을 포함하는, 방법.
- 제57항 내지 제63항 중 어느 한 항의 방법을 수행하는 수단을 포함하는 시스템.
- 제64항에 있어서, 상기 시스템은 장치를 포함하고, 상기 장치는 제57항 내지 제63항 중 어느 한 항의 방법의 적어도 일부를 수행하는 하드웨어 회로를 포함하는, 시스템.
- 제57항 내지 제63항 중 어느 한 항의 방법을 수행하기 위해 프로세서에 의해 실행가능한 명령어들을 저장하는, 컴퓨터 판독가능한 저장 매체.
- 방법으로서,
복수의 커널을 포함하는 신경망을 식별하는 단계 - 상기 커널들 중의 각각의 것은 각각의 세트의 가중치들을 포함함 -;
상기 복수의 커널을 특정한 세트의 커널들로 감소시키기 위해 하나 이상의 파라미터에 따라 상기 복수의 커널의 서브세트를 프루닝(pruning)하는 단계;
상기 특정한 세트의 커널들에서 가중치들의 서브세트를 프루닝하여 상기 신경망의 프루닝된 버전을 형성하는 단계
를 포함하고, 상기 가중치들의 서브세트를 프루닝하는 것은 상기 가중치들의 서브세트에서 하나 이상의 비제로 가중치를 0으로 할당하며, 상기 가중치들의 서브세트는 상기 가중치들의 원래의 값들에 기초하여 선택되는, 방법. - 제67항에 있어서, 상기 가중치들의 서브세트는 임계값 아래로 떨어지는 상기 가중치들의 서브세트의 값들에 기초하여 프루닝되는, 방법.
- 제67항 또는 제68항에 있어서, 상기 커널들 및 가중치들의 프루닝을 통한 정확도 손실의 적어도 일부를 복구하기 위해 상기 신경망의 프루닝된 버전을 이용하여 머신 학습 작업의 하나 이상의 반복을 수행하는 단계를 더 포함하는, 방법.
- 제67항 내지 제69항 중 어느 한 항에 있어서, 상기 신경망의 컴팩트 버전을 생성하기 위해 상기 신경망의 프루닝된 버전에서 프루닝되지 않은 가중치들의 값들을 양자화하는 단계를 더 포함하는, 방법.
- 제70항에 있어서, 상기 양자화는 로그 베이스 양자화(log base quantization)를 포함하는, 방법.
- 제71항에 있어서, 상기 가중치들은 부동 소수점 값들로부터 베이스 2인 값들로 양자화되는, 방법.
- 제67항 내지 제72항 중 어느 한 항에 있어서, 저밀도 행렬 산술(sparse matrix arithmetic)에 적응된 하드웨어를 이용한 머신 학습 작업들의 실행을 위해 상기 신경망의 프루닝된 버전을 제공하는 단계를 더 포함하는, 방법.
- 제67항 내지 제73항 중 어느 한 항의 방법을 수행하는 수단을 포함하는 시스템.
- 제64항에 있어서, 상기 시스템은 장치를 포함하고, 상기 장치는 제67항 내지 제73항 중 어느 한 항의 방법의 적어도 일부를 수행하는 하드웨어 회로를 포함하는, 시스템.
- 제67항 내지 제73항 중 어느 한 항의 방법을 수행하기 위해 프로세서에 의해 실행가능한 명령어들을 저장하는, 컴퓨터 판독가능한 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862675601P | 2018-05-23 | 2018-05-23 | |
US62/675,601 | 2018-05-23 | ||
PCT/US2019/033373 WO2019226686A2 (en) | 2018-05-23 | 2019-05-21 | Deep learning system |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210003937A true KR20210003937A (ko) | 2021-01-12 |
Family
ID=68614653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207037010A Pending KR20210003937A (ko) | 2018-05-23 | 2019-05-21 | 딥 러닝 시스템 |
Country Status (7)
Country | Link |
---|---|
US (4) | US12248877B2 (ko) |
EP (1) | EP3797386A4 (ko) |
JP (3) | JP7372010B2 (ko) |
KR (1) | KR20210003937A (ko) |
CN (1) | CN112334918A (ko) |
DE (1) | DE112019002589T5 (ko) |
WO (1) | WO2019226686A2 (ko) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102421776B1 (ko) * | 2021-09-27 | 2022-07-19 | 주식회사 넥스트도어 | 3차원 객체모델 생성 장치 및 그 방법 |
KR20220115742A (ko) * | 2021-02-10 | 2022-08-18 | 한국기술교육대학교 산학협력단 | 기계 학습 훈련을 위한 데이터 생성방법 및 시스템 |
TWI795306B (zh) * | 2022-06-14 | 2023-03-01 | 艾歐圖科技股份有限公司 | 基於深度學習六維姿態迴歸之自主移動機器人之定位失效偵測系統 |
WO2023027420A1 (ko) * | 2021-08-26 | 2023-03-02 | (주)서울로보틱스 | 3차원 공간에 대한 점군을 정합하는 방법 및 서버 |
KR20230030290A (ko) * | 2021-08-25 | 2023-03-06 | 인하대학교 산학협력단 | 네트워크 프루닝 기법을 통해 경량화 된 신경망에 대한 데이터와 미세 조정 학습이 필요 없는 성능 복구 방법 및 장치 |
KR102527798B1 (ko) * | 2021-12-23 | 2023-05-02 | 경희대학교 산학협력단 | 3차원 컨텐츠 전송 장치 및 방법 |
WO2023095936A1 (ko) * | 2021-11-24 | 2023-06-01 | 심용수 | 가상공간의 객체생성 방법 및 그 장치 |
Families Citing this family (123)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018214913A1 (zh) * | 2017-05-23 | 2018-11-29 | 上海寒武纪信息科技有限公司 | 处理方法及加速装置 |
US11616781B2 (en) * | 2017-12-05 | 2023-03-28 | Goldilock Secure s.r.o. | Air gap-based network isolation device |
US10936913B2 (en) * | 2018-03-20 | 2021-03-02 | The Regents Of The University Of Michigan | Automatic filter pruning technique for convolutional neural networks |
US12248877B2 (en) | 2018-05-23 | 2025-03-11 | Movidius Ltd. | Hybrid neural network pruning |
CN112437930A (zh) * | 2018-07-12 | 2021-03-02 | 华为技术有限公司 | 以熟练的推理速度和功耗,生成神经网络的压缩表示 |
US12263017B2 (en) * | 2018-08-01 | 2025-04-01 | General Electric Company | Plane selection using localizer images |
KR20200023238A (ko) * | 2018-08-23 | 2020-03-04 | 삼성전자주식회사 | 딥러닝 모델을 생성하는 방법 및 시스템 |
JP6986503B2 (ja) * | 2018-09-10 | 2021-12-22 | 日立Astemo株式会社 | 電子制御装置、ニューラルネットワーク更新システム |
US11010132B2 (en) * | 2018-09-28 | 2021-05-18 | Tenstorrent Inc. | Processing core with data associative adaptive rounding |
US20200137380A1 (en) * | 2018-10-31 | 2020-04-30 | Intel Corporation | Multi-plane display image synthesis mechanism |
EP4250114A3 (en) * | 2018-12-31 | 2023-11-29 | Intel Corporation | Methods and apparatus to implement always-on context sensor hubs for processing multiple different types of data inputs |
CN113227973A (zh) * | 2019-02-26 | 2021-08-06 | 谷歌有限责任公司 | 用于选择软件策略网络并且基于所选择的策略网络自主控制对应软件客户端的强化学习技术 |
US11556796B2 (en) * | 2019-03-25 | 2023-01-17 | Nokia Technologies Oy | Compressing weight updates for decoder-side neural networks |
KR102782971B1 (ko) * | 2019-05-08 | 2025-03-18 | 삼성전자주식회사 | 인공 신경망 모델을 트레이닝하는 컴퓨팅 장치, 인공 신경망 모델을 트레이닝하는 방법 및 이를 저장하는 메모리 시스템 |
WO2020236255A1 (en) * | 2019-05-23 | 2020-11-26 | The Trustees Of Princeton University | System and method for incremental learning using a grow-and-prune paradigm with neural networks |
US11176699B2 (en) * | 2019-05-24 | 2021-11-16 | Tencent America LLC | Augmenting reliable training data with CycleGAN for hand pose estimation |
US20200379809A1 (en) * | 2019-05-28 | 2020-12-03 | Micron Technology, Inc. | Memory as a Service for Artificial Neural Network (ANN) Applications |
US11138751B2 (en) * | 2019-07-06 | 2021-10-05 | Toyota Research Institute, Inc. | Systems and methods for semi-supervised training using reprojected distance loss |
US11107004B2 (en) * | 2019-08-08 | 2021-08-31 | Capital One Services, Llc | Automatically reducing machine learning model inputs |
US11327178B2 (en) * | 2019-09-06 | 2022-05-10 | Volvo Car Corporation | Piece-wise network structure for long range environment perception |
US11568180B2 (en) * | 2019-09-13 | 2023-01-31 | Rohde & Schwarz Gmbh & Co. Kg | Method and cloud server for training a neural network for triggering an input signal in a measurement device and method for autonomous determining a trigger type/parameter |
KR20210032140A (ko) | 2019-09-16 | 2021-03-24 | 삼성전자주식회사 | 뉴럴 네트워크에 대한 프루닝을 수행하는 방법 및 장치 |
CN114503122A (zh) * | 2019-10-02 | 2022-05-13 | 韩国电子通信研究院 | 深度神经网络的结构学习和简化方法 |
CN110728330A (zh) * | 2019-10-23 | 2020-01-24 | 腾讯科技(深圳)有限公司 | 基于人工智能的对象识别方法、装置、设备及存储介质 |
US11816574B2 (en) | 2019-10-25 | 2023-11-14 | Alibaba Group Holding Limited | Structured pruning for machine learning model |
CA3067400A1 (en) * | 2019-11-28 | 2021-05-28 | Xesto Inc. | System and method for mobile 3d scanning and measurement |
CN112906853A (zh) * | 2019-12-03 | 2021-06-04 | 中国移动通信有限公司研究院 | 模型自动优化的方法及装置、设备、存储介质 |
WO2021111606A1 (ja) * | 2019-12-05 | 2021-06-10 | 日本電気株式会社 | グラフ探索装置、グラフ探索方法、及びコンピュータ読み取り可能な記録媒体 |
CN113033763B (zh) * | 2019-12-09 | 2024-12-06 | 小米汽车科技有限公司 | 一种多模型合并压缩方法 |
US11525596B2 (en) * | 2019-12-23 | 2022-12-13 | Johnson Controls Tyco IP Holdings LLP | Methods and systems for training HVAC control using simulated and real experience data |
US11796338B2 (en) * | 2019-12-31 | 2023-10-24 | Gm Cruise Holdings Llc | Automated semantic mapping |
US20210209461A1 (en) * | 2020-01-03 | 2021-07-08 | Baidu Usa Llc | Methods for neural network sparsity channel generation and inference |
US11935271B2 (en) * | 2020-01-10 | 2024-03-19 | Tencent America LLC | Neural network model compression with selective structured weight unification |
US11095855B2 (en) * | 2020-01-16 | 2021-08-17 | Microsoft Technology Licensing, Llc | Remote collaborations with volumetric space indications |
WO2021158703A1 (en) * | 2020-02-03 | 2021-08-12 | Nanotronics Imaging, Inc. | Deep photometric learning (dpl) systems, apparatus and methods |
US20210256385A1 (en) * | 2020-02-14 | 2021-08-19 | Northeastern University | Computer-implemented methods and systems for dnn weight pruning for real-time execution on mobile devices |
US20210256384A1 (en) * | 2020-02-14 | 2021-08-19 | Northeastern University | Computer-implemented methods and systems for achieving real-time dnn execution on mobile devices with pattern-based weight pruning |
US11496775B2 (en) * | 2020-02-20 | 2022-11-08 | Tencent America LLC | Neural network model compression with selective structured weight unification |
US11652972B2 (en) * | 2020-03-04 | 2023-05-16 | Toyota Research Institute, Inc. | Systems and methods for self-supervised depth estimation according to an arbitrary camera |
US20210295175A1 (en) * | 2020-03-18 | 2021-09-23 | Fair Isaac Corporation | Training artificial neural networks with constraints |
US12354010B2 (en) * | 2020-03-23 | 2025-07-08 | Amazon Technologies, Inc. | Gradient compression for distributed training |
US11142194B1 (en) * | 2020-03-24 | 2021-10-12 | Kiomars Anvari | Use of IoT network and IoT ranging device for an object control system |
KR102323234B1 (ko) * | 2020-03-30 | 2021-11-08 | 주식회사 모빌린트 | 인공신경망에서 점 구름 데이터를 처리하기 위한 방법 및 그 장치 |
US11321607B2 (en) | 2020-04-03 | 2022-05-03 | SiMa Technologies, Inc. | Machine learning network implemented by statically scheduled instructions, with compiler |
US11631001B2 (en) | 2020-04-10 | 2023-04-18 | SiMa Technologies, Inc. | Heterogeneous computing on a system-on-chip, including machine learning inference |
CN113516237B (zh) * | 2020-04-09 | 2024-01-09 | 黑芝麻智能科技(重庆)有限公司 | 修剪卷积神经网络的方法 |
US11989581B2 (en) | 2020-04-17 | 2024-05-21 | SiMa Technologies, Inc. | Software managed memory hierarchy |
US12333351B2 (en) | 2020-04-17 | 2025-06-17 | SiMa Technologies, Inc. | Synchronization of processing elements that execute statically scheduled instructions in a machine learning accelerator |
KR102430090B1 (ko) * | 2020-04-20 | 2022-08-11 | 세이지리서치 주식회사 | 사용자 입력에 기반하여 생성된 인공지능 모델을 이용하여 가상 결함 이미지를 생성하기 위한 컴퓨터 프로그램, 방법, 및 장치 |
US11734549B2 (en) | 2020-04-21 | 2023-08-22 | SiMa Technologies, Inc. | Avoiding data routing conflicts in a machine learning accelerator |
US11734605B2 (en) | 2020-04-29 | 2023-08-22 | SiMa Technologies, Inc. | Allocating computations of a machine learning network in a machine learning accelerator |
US11586894B2 (en) | 2020-05-04 | 2023-02-21 | SiMa Technologies, Inc. | Ordering computations of a machine learning network in a machine learning accelerator for efficient memory usage |
US11886981B2 (en) | 2020-05-01 | 2024-01-30 | SiMa Technologies, Inc. | Inter-processor data transfer in a machine learning accelerator, using statically scheduled instructions |
CN111612703A (zh) * | 2020-04-22 | 2020-09-01 | 杭州电子科技大学 | 一种基于生成对抗网络的图像盲去模糊方法 |
CN113642593B (zh) * | 2020-04-27 | 2024-03-01 | 台达电子工业股份有限公司 | 影像处理方法与影像处理系统 |
KR20210133084A (ko) * | 2020-04-28 | 2021-11-05 | 삼성전자주식회사 | 뉴럴 네트워크의 학습 방법 및 장치 |
US11354846B2 (en) * | 2020-05-04 | 2022-06-07 | Microsoft Technology Licensing, Llc | Computing photorealistic versions of synthetic images |
EP4158624A1 (en) * | 2020-06-01 | 2023-04-05 | Dolby International AB | Method and apparatus for determining parameters of a generative neural network |
US20210397963A1 (en) * | 2020-06-17 | 2021-12-23 | Tencent America LLC | Method and apparatus for neural network model compression with micro-structured weight pruning and weight unification |
CN111738435B (zh) * | 2020-06-22 | 2024-03-29 | 上海交通大学 | 一种基于移动设备的在线稀疏训练方法及系统 |
US12242969B2 (en) * | 2020-06-22 | 2025-03-04 | Nokia Technologies Oy | Graph diffusion for structured pruning of neural networks |
US11500962B1 (en) | 2020-06-30 | 2022-11-15 | Amazon Technologies, Inc. | Emulating fine-grained sparsity in a systolic array |
US11803736B1 (en) | 2020-06-30 | 2023-10-31 | Amazon Technologies, Inc. | Fine-grained sparsity computations in systolic array |
US20210407302A1 (en) * | 2020-06-30 | 2021-12-30 | Sony Group Corporation | System of multi-drone visual content capturing |
CN112749797B (zh) * | 2020-07-20 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 一种神经网络模型的剪枝方法及装置 |
EP3945470A1 (en) * | 2020-07-31 | 2022-02-02 | Aptiv Technologies Limited | Methods and systems for reducing the complexity of a computational network |
CN111931914A (zh) * | 2020-08-10 | 2020-11-13 | 北京计算机技术及应用研究所 | 一种基于模型微调的卷积神经网络通道剪枝方法 |
US12236331B2 (en) * | 2020-08-13 | 2025-02-25 | Samsung Electronics Co., Ltd. | Method and system of DNN modularization for optimal loading |
CN112001483A (zh) * | 2020-08-14 | 2020-11-27 | 广州市百果园信息技术有限公司 | 一种剪枝神经网络模型的方法和装置 |
US20220058466A1 (en) * | 2020-08-20 | 2022-02-24 | Nvidia Corporation | Optimized neural network generation |
JP2022052112A (ja) * | 2020-09-23 | 2022-04-04 | セイコーエプソン株式会社 | 画像認識方法およびロボットシステム |
WO2022085859A1 (ko) * | 2020-10-21 | 2022-04-28 | 주식회사 팀솔루션 | 기계 학습용 이미지 데이터 생성 방법 및 그 장치 |
US12112112B2 (en) * | 2020-11-12 | 2024-10-08 | Samsung Electronics Co., Ltd. | Method for co-design of hardware and neural network architectures using coarse-to-fine search, two-phased block distillation and neural hardware predictor |
US11853715B2 (en) * | 2020-11-23 | 2023-12-26 | International Business Machines Corporation | Floating-point computation with threshold prediction for artificial intelligence system |
US12340313B2 (en) | 2020-11-30 | 2025-06-24 | Moffett International Co., Limited | Neural network pruning method and system via layerwise analysis |
TWI757999B (zh) * | 2020-12-04 | 2022-03-11 | 國立陽明交通大學 | 即時避障系統、即時避障方法及具有即時避障功能的無人載具 |
US12067465B2 (en) | 2020-12-17 | 2024-08-20 | SiMa Technologies, Inc. | Instruction streaming for a machine learning accelerator |
US11782757B2 (en) | 2021-05-07 | 2023-10-10 | SiMa Technologies, Inc. | Scheduling off-chip memory access for programs with predictable execution |
CN112784885B (zh) * | 2021-01-11 | 2022-05-24 | 腾讯科技(深圳)有限公司 | 基于人工智能的自动驾驶方法、装置、设备、介质及车辆 |
KR102541461B1 (ko) * | 2021-01-11 | 2023-06-12 | 한국과학기술원 | 저전력 고성능 인공 신경망 학습 가속기 및 가속 방법 |
CN112836751A (zh) * | 2021-02-03 | 2021-05-25 | 歌尔股份有限公司 | 一种目标检测方法和装置 |
US12254398B2 (en) | 2021-03-30 | 2025-03-18 | Amazon Technologies, Inc. | Sparse machine learning acceleration |
US20220318412A1 (en) * | 2021-04-06 | 2022-10-06 | Qualcomm Incorporated | Privacy-aware pruning in machine learning |
US20220359070A1 (en) * | 2021-04-23 | 2022-11-10 | Lasarrus Clinic And Research Center | Energy-Efficient Collection of Wearable Sensor Data |
WO2021178981A1 (en) * | 2021-05-03 | 2021-09-10 | Innopeak Technology, Inc. | Hardware-friendly multi-model compression of neural networks |
US20220374766A1 (en) * | 2021-05-20 | 2022-11-24 | Samsung Electronics Co., Ltd. | Learned threshold token pruning for transformer neural networks |
CN113361198B (zh) * | 2021-06-09 | 2023-11-03 | 南京大学 | 一种基于公共和私有信息挖掘的众包测试报告融合方法 |
IL284515A (en) | 2021-06-30 | 2023-01-01 | Arpalus Ltd | Using slam 3d information to optimize training and use of deep neural networks for recognition and tracking of 3d objects |
CN113705775B (zh) * | 2021-07-29 | 2024-10-01 | 浪潮电子信息产业股份有限公司 | 一种神经网络的剪枝方法、装置、设备及存储介质 |
US11645784B1 (en) * | 2021-08-05 | 2023-05-09 | Bentley Systems, Incorporated | Techniques for detecting and classifying relevant changes |
CN113449205B (zh) * | 2021-08-30 | 2021-11-09 | 四川省人工智能研究院(宜宾) | 一种基于元数据增强的推荐方法及系统 |
US12135498B2 (en) * | 2021-09-09 | 2024-11-05 | Mycronic AB | Device and method for enabling deriving of corrected digital pattern descriptions |
CN113872804B (zh) * | 2021-09-24 | 2024-05-28 | 北京金山云网络技术有限公司 | 一种带宽分配方法、装置、电子设备以及计算机可读存储介质 |
US20230121860A1 (en) | 2021-10-14 | 2023-04-20 | Outward, Inc. | Interactive image generation |
US20240412563A1 (en) * | 2021-10-20 | 2024-12-12 | Airy3D Inc. | Methods and systems using depth imaging for training and deploying neural networks for biometric anti-spoofing |
US20240428420A1 (en) * | 2021-10-28 | 2024-12-26 | The Regents Of The University Of California | System and Method for Adipose Tissue Segmentation on Magnetic Resonance Images |
US20230148015A1 (en) * | 2021-11-05 | 2023-05-11 | Ceremorphic, Inc. | Edge Device for Executing a Lightweight Pattern-Aware generative Adversarial Network |
EP4430524A4 (en) * | 2021-11-11 | 2025-07-16 | Deeplite Inc | DATA-FREE NEURAL NETWORK PRUNING |
US12283136B2 (en) * | 2021-11-16 | 2025-04-22 | The Boeing Company | Digital twin generation and logging for a vehicle |
US20230153623A1 (en) * | 2021-11-18 | 2023-05-18 | GM Global Technology Operations LLC | Adaptively pruning neural network systems |
WO2023096642A1 (en) | 2021-11-24 | 2023-06-01 | Bluware, Inc. | Interactive qualitative-quantitative live labeling for deep learning artificial intelligence |
US20230229921A1 (en) * | 2022-01-14 | 2023-07-20 | Arm Limited | Neural Network System and Training Method |
EP4238714A1 (en) * | 2022-03-02 | 2023-09-06 | Robert Bosch GmbH | Device and method for controlling a robot |
CN114594776B (zh) * | 2022-03-14 | 2022-09-20 | 安徽大学 | 一种基于层次化和模块化学习的导航避障方法 |
US11908080B2 (en) * | 2022-04-04 | 2024-02-20 | Tencent America LLC | Generating surfaces with arbitrary topologies using signed distance fields |
CN114492847B (zh) * | 2022-04-18 | 2022-06-24 | 奥罗科技(天津)有限公司 | 一种高效个性化联邦学习系统和方法 |
CN114861775B (zh) * | 2022-04-21 | 2025-06-10 | 南京信息工程大学 | 一种在特征选择与聚类分析后的混合神经网络模型天气分类方法 |
TWI833209B (zh) * | 2022-04-27 | 2024-02-21 | 緯創資通股份有限公司 | 用於神經網路的優化方法、電腦系統及電腦可讀取媒體 |
CN114648978B (zh) * | 2022-04-27 | 2024-08-16 | 腾讯科技(深圳)有限公司 | 一种语音验证处理的方法以及相关装置 |
US12211491B2 (en) * | 2022-05-09 | 2025-01-28 | International Business Machines Corporation | Self-supervised speech recognition |
EP4280118B1 (en) * | 2022-05-18 | 2024-11-20 | Tata Consultancy Services Limited | Method and system for generating a data model for text extraction from documents |
US20240037404A1 (en) * | 2022-07-26 | 2024-02-01 | Deeplite Inc. | Tensor Decomposition Rank Exploration for Neural Network Compression |
DE112022007443T5 (de) * | 2022-09-29 | 2025-04-17 | Intel Corporation | Verfahren und einrichtung zum durchführen einer auf künstlicher intelligenz basierenden dünn besetzten berechnung basierend auf hybridem muster und dynamischer codierung |
CN115436881B (zh) * | 2022-10-18 | 2023-07-07 | 兰州大学 | 一种定位方法、系统、计算机设备及可读存储介质 |
WO2024098375A1 (en) * | 2022-11-11 | 2024-05-16 | Nvidia Corporation | Techniques for pruning neural networks |
DE102022212901A1 (de) | 2022-11-30 | 2024-06-06 | Robert Bosch Gesellschaft mit beschränkter Haftung | Automatisches Ermitteln einer optimalen Architektur für ein neuronales Netzwerk |
GB2624926A (en) | 2022-12-01 | 2024-06-05 | Continental Autonomous Mobility Germany GmbH | A computer-implemented method for reducing false positives in a computer vision task and application thereof to motor vehicle exterior monitoring |
CN116188543B (zh) * | 2022-12-27 | 2024-03-12 | 中国人民解放军61363部队 | 基于深度学习无监督的点云配准方法及系统 |
US12260253B2 (en) | 2023-01-23 | 2025-03-25 | SiMa Technologies, Inc. | Layout-based data transfer between synchronized, interconnected processing elements for implementing machine learning networks |
US20250027773A1 (en) * | 2023-07-18 | 2025-01-23 | Qualcomm Incorporated | Inertial navigation aided with multi-interval pose measurements |
WO2025041887A1 (ko) * | 2023-08-24 | 2025-02-27 | 한국전자기술연구원 | 자가-증류를 통한 뉴럴 네트워크 반복 프루닝 방법 |
CN117315739A (zh) | 2023-08-31 | 2023-12-29 | 云南电网有限责任公司德宏供电局 | 基于孪生神经网络的人脸识别方法 |
DE102023210070A1 (de) | 2023-10-13 | 2025-04-17 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren und Vorrichtung zum Erstellen einer digitalen Karte |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7609893B2 (en) | 2004-03-03 | 2009-10-27 | Trw Automotive U.S. Llc | Method and apparatus for producing classifier training images via construction and manipulation of a three-dimensional image model |
JP2006007824A (ja) * | 2004-06-22 | 2006-01-12 | Honda Motor Co Ltd | 車両制御装置 |
GB2447494A (en) | 2007-03-15 | 2008-09-17 | Linear Algebra Technologies Lt | A method and circuit for compressing data using a bitmap to identify the location of data values |
GB2476800A (en) | 2010-01-07 | 2011-07-13 | Linear Algebra Technologies Ltd | Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations |
US20150032258A1 (en) * | 2013-07-29 | 2015-01-29 | Brain Corporation | Apparatus and methods for controlling of robotic devices |
US9842302B2 (en) | 2013-08-26 | 2017-12-12 | Mtelligence Corporation | Population-based learning with deep belief networks |
US20170178030A1 (en) | 2015-12-20 | 2017-06-22 | Prophecy Sensors, Llc | Method, system and apparatus using field learning to upgrade trending sensor curves into fuel gauge based visualization of predictive maintenance by user driven feedback mechanism |
US9633306B2 (en) * | 2015-05-07 | 2017-04-25 | Siemens Healthcare Gmbh | Method and system for approximating deep neural networks for anatomical object detection |
KR101880035B1 (ko) | 2015-09-24 | 2018-07-19 | 주식회사 뷰노 | 영상 생성 방법 및 장치, 및 영상 분석 방법 |
US9875429B2 (en) | 2015-10-06 | 2018-01-23 | Adobe Systems Incorporated | Font attributes for font recognition and similarity |
US10410113B2 (en) * | 2016-01-14 | 2019-09-10 | Preferred Networks, Inc. | Time series data adaptation and sensor fusion systems, methods, and apparatus |
EP3430531A1 (en) * | 2016-03-16 | 2019-01-23 | Maluuba Inc. | Parallel-hierarchical model for machine comprehension on small data |
US20180260687A1 (en) | 2016-04-26 | 2018-09-13 | Hitachi, Ltd. | Information Processing System and Method for Operating Same |
US20180082181A1 (en) * | 2016-05-13 | 2018-03-22 | Samsung Electronics, Co. Ltd. | Neural Network Reordering, Weight Compression, and Processing |
US10832136B2 (en) * | 2016-05-18 | 2020-11-10 | Nec Corporation | Passive pruning of filters in a convolutional neural network |
KR101980603B1 (ko) * | 2016-05-20 | 2019-05-22 | 구글 엘엘씨 | 오브젝트(들)를 캡처하는 이미지(들)에 기초하는 그리고 환경에서의 미래 로봇 움직임에 대한 파라미터(들)에 기초하여 로봇 환경에서의 오브젝트(들)의 모션(들)을 예측하는 것과 관련된 머신 학습 방법들 및 장치 |
AU2017317599B2 (en) | 2016-08-22 | 2021-12-23 | Magic Leap, Inc. | Augmented reality display device with deep learning sensors |
JP6529470B2 (ja) * | 2016-09-08 | 2019-06-12 | 日本電信電話株式会社 | 移動状況学習装置、移動状況認識装置、方法、及びプログラム |
SG10201700299QA (en) * | 2017-01-13 | 2018-08-30 | Otsaw Digital Pte Ltd | Three-dimensional mapping of an environment |
DE112017007252T5 (de) | 2017-03-14 | 2019-12-19 | Omron Corporation | Fahrerüberwachungsvorrichtung, fahrerüberwachungsverfahren, lernvorrichtung und lernverfahren |
KR102419136B1 (ko) * | 2017-06-15 | 2022-07-08 | 삼성전자주식회사 | 다채널 특징맵을 이용하는 영상 처리 장치 및 방법 |
CN107368885A (zh) | 2017-07-13 | 2017-11-21 | 北京智芯原动科技有限公司 | 基于多粒度剪枝的网络模型压缩方法及装置 |
CN107562805B (zh) | 2017-08-08 | 2020-04-03 | 浙江大华技术股份有限公司 | 一种以图搜图的方法及装置 |
WO2019033380A1 (en) * | 2017-08-18 | 2019-02-21 | Intel Corporation | SLURRY OF NEURAL NETWORKS IN MACHINE LEARNING ENVIRONMENTS |
US20190087729A1 (en) * | 2017-09-18 | 2019-03-21 | Intel Corporation | Convolutional neural network tuning systems and methods |
US11631004B2 (en) * | 2018-03-28 | 2023-04-18 | Intel Corporation | Channel pruning of a convolutional network based on gradient descent optimization |
US12248877B2 (en) | 2018-05-23 | 2025-03-11 | Movidius Ltd. | Hybrid neural network pruning |
-
2018
- 2018-12-19 US US16/226,521 patent/US12248877B2/en active Active
-
2019
- 2019-05-21 CN CN201980043331.4A patent/CN112334918A/zh active Pending
- 2019-05-21 WO PCT/US2019/033373 patent/WO2019226686A2/en unknown
- 2019-05-21 KR KR1020207037010A patent/KR20210003937A/ko active Pending
- 2019-05-21 US US17/058,126 patent/US11900256B2/en active Active
- 2019-05-21 EP EP19808063.2A patent/EP3797386A4/en active Pending
- 2019-05-21 DE DE112019002589.9T patent/DE112019002589T5/de active Pending
- 2019-05-21 JP JP2020564708A patent/JP7372010B2/ja active Active
-
2023
- 2023-10-17 JP JP2023178605A patent/JP7560021B2/ja active Active
- 2023-12-12 US US18/537,238 patent/US20240127068A1/en active Pending
-
2024
- 2024-09-05 JP JP2024153514A patent/JP2024174956A/ja active Pending
-
2025
- 2025-01-16 US US19/024,551 patent/US20250225397A1/en active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220115742A (ko) * | 2021-02-10 | 2022-08-18 | 한국기술교육대학교 산학협력단 | 기계 학습 훈련을 위한 데이터 생성방법 및 시스템 |
KR20230030290A (ko) * | 2021-08-25 | 2023-03-06 | 인하대학교 산학협력단 | 네트워크 프루닝 기법을 통해 경량화 된 신경망에 대한 데이터와 미세 조정 학습이 필요 없는 성능 복구 방법 및 장치 |
WO2023027420A1 (ko) * | 2021-08-26 | 2023-03-02 | (주)서울로보틱스 | 3차원 공간에 대한 점군을 정합하는 방법 및 서버 |
KR20230031036A (ko) * | 2021-08-26 | 2023-03-07 | (주)서울로보틱스 | 3차원 공간에 대한 점군을 정합하는 방법 및 서버 |
KR102421776B1 (ko) * | 2021-09-27 | 2022-07-19 | 주식회사 넥스트도어 | 3차원 객체모델 생성 장치 및 그 방법 |
KR102473287B1 (ko) * | 2021-09-27 | 2022-12-05 | 주식회사 넥스트도어 | 단안 카메라 영상에서 복수의 딥러닝 모듈을 이용하여 자세와 동작을 정확하게 모방하는 3차원 모델링 장치 및 그 방법 |
WO2023048347A1 (ko) * | 2021-09-27 | 2023-03-30 | 주식회사 넥스트도어 | 3차원 객체모델 생성 장치 및 그 방법 |
WO2023095936A1 (ko) * | 2021-11-24 | 2023-06-01 | 심용수 | 가상공간의 객체생성 방법 및 그 장치 |
KR102527798B1 (ko) * | 2021-12-23 | 2023-05-02 | 경희대학교 산학협력단 | 3차원 컨텐츠 전송 장치 및 방법 |
US12170791B2 (en) | 2021-12-23 | 2024-12-17 | University-Industry Cooperation Group Of Kyung Hee University | Apparatus for transmitting 3D contents and method thereof |
TWI795306B (zh) * | 2022-06-14 | 2023-03-01 | 艾歐圖科技股份有限公司 | 基於深度學習六維姿態迴歸之自主移動機器人之定位失效偵測系統 |
Also Published As
Publication number | Publication date |
---|---|
US20250225397A1 (en) | 2025-07-10 |
JP7372010B2 (ja) | 2023-10-31 |
JP2021526253A (ja) | 2021-09-30 |
US20240127068A1 (en) | 2024-04-18 |
EP3797386A2 (en) | 2021-03-31 |
JP7560021B2 (ja) | 2024-10-02 |
WO2019226686A3 (en) | 2020-02-06 |
JP2024174956A (ja) | 2024-12-17 |
US20190362235A1 (en) | 2019-11-28 |
US12248877B2 (en) | 2025-03-11 |
US20210201526A1 (en) | 2021-07-01 |
DE112019002589T5 (de) | 2021-08-19 |
US11900256B2 (en) | 2024-02-13 |
EP3797386A4 (en) | 2022-03-09 |
CN112334918A (zh) | 2021-02-05 |
WO2019226686A2 (en) | 2019-11-28 |
JP2024001220A (ja) | 2024-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7560021B2 (ja) | 深層学習システム | |
JP7665901B2 (ja) | コンピュータビジョンシステム | |
US12320649B2 (en) | Path planning using sparse volumetric data | |
US11532117B2 (en) | Density coordinate hashing for volumetric data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0105 | International application |
Patent event date: 20201222 Patent event code: PA01051R01D Comment text: International Patent Application |
|
PG1501 | Laying open of application | ||
PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 20220520 Comment text: Request for Examination of Application |
|
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20250509 Patent event code: PE09021S01D |