KR20190111007A - 희소 볼륨 데이터를 사용한 연산들 - Google Patents
희소 볼륨 데이터를 사용한 연산들 Download PDFInfo
- Publication number
- KR20190111007A KR20190111007A KR1020197007940A KR20197007940A KR20190111007A KR 20190111007 A KR20190111007 A KR 20190111007A KR 1020197007940 A KR1020197007940 A KR 1020197007940A KR 20197007940 A KR20197007940 A KR 20197007940A KR 20190111007 A KR20190111007 A KR 20190111007A
- Authority
- KR
- South Korea
- Prior art keywords
- level
- detail
- volume
- voxels
- data structure
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims description 89
- 238000000034 method Methods 0.000 claims description 70
- 238000013527 convolutional neural network Methods 0.000 claims description 66
- 238000012545 processing Methods 0.000 claims description 66
- 239000013598 vector Substances 0.000 claims description 54
- 238000003860 storage Methods 0.000 claims description 41
- 238000009877 rendering Methods 0.000 claims description 19
- 230000003190 augmentative effect Effects 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 12
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 8
- 230000004807 localization Effects 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 4
- 238000010801 machine learning Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 54
- 230000006870 function Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 26
- 238000005516 engineering process Methods 0.000 description 25
- 239000002131 composite material Substances 0.000 description 17
- 238000005266 casting Methods 0.000 description 14
- 238000013459 approach Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 13
- 241001442055 Vipera berus Species 0.000 description 12
- 238000005259 measurement Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 9
- 238000012360 testing method Methods 0.000 description 9
- 230000001133 acceleration Effects 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 7
- 238000011176 pooling Methods 0.000 description 7
- 230000001413 cellular effect Effects 0.000 description 6
- 238000012549 training Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000008030 elimination Effects 0.000 description 5
- 238000003379 elimination reaction Methods 0.000 description 5
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 230000001934 delay Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000002238 attenuated effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 230000007774 longterm Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 235000019738 Limestone Nutrition 0.000 description 2
- 244000141353 Prunus domestica Species 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 2
- QVFWZNCVPCJQOP-UHFFFAOYSA-N chloralodol Chemical compound CC(O)(C)CC(C)OC(O)C(Cl)(Cl)Cl QVFWZNCVPCJQOP-UHFFFAOYSA-N 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 239000006028 limestone Substances 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 201000003152 motion sickness Diseases 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 1
- 240000001436 Antirrhinum majus Species 0.000 description 1
- 101100236200 Arabidopsis thaliana LSU1 gene Proteins 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 101100269850 Caenorhabditis elegans mask-1 gene Proteins 0.000 description 1
- 241000196324 Embryophyta Species 0.000 description 1
- 244000153665 Ficus glomerata Species 0.000 description 1
- 235000012571 Ficus glomerata Nutrition 0.000 description 1
- HBBGRARXTFLTSG-UHFFFAOYSA-N Lithium ion Chemical compound [Li+] HBBGRARXTFLTSG-UHFFFAOYSA-N 0.000 description 1
- 241000283973 Oryctolagus cuniculus Species 0.000 description 1
- 241000233805 Phoenix Species 0.000 description 1
- 241001323321 Pluto Species 0.000 description 1
- 238000010521 absorption reaction Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000004886 head movement Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 229910001416 lithium ion Inorganic materials 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000035943 smell Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000035899 viability Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/20—Instruments for performing navigational calculations
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/26—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
- G01C21/28—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network with correlation of data from several navigational instruments
- G01C21/30—Map- or contour-matching
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0212—Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
- G05D1/0214—Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory in accordance with safety or protection criteria, e.g. avoiding hazardous areas
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0268—Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means
- G05D1/0274—Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means using mapping information stored in a memory device
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/20—Control system inputs
- G05D1/24—Arrangements for determining position or orientation
- G05D1/246—Arrangements for determining position or orientation using environment maps, e.g. simultaneous localisation and mapping [SLAM]
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/60—Intended control result
- G05D1/617—Safety or protection, e.g. defining protection zones around obstacles or avoiding hazards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- 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/005—Tree description, e.g. octree, quadtree
-
- 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/05—Geographic models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
- G06T7/55—Depth or shape recovery from multiple images
- G06T7/579—Depth or shape recovery from multiple images from motion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
- G06T7/55—Depth or shape recovery from multiple images
- G06T7/593—Depth or shape recovery from multiple images from stereo 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
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
- G06T7/75—Determining position or orientation of objects or cameras using feature-based methods involving models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/10—Terrestrial scenes
- G06V20/13—Satellite images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/10—Terrestrial scenes
- G06V20/17—Terrestrial scenes taken from planes or by drones
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/60—Type of objects
- G06V20/64—Three-dimensional objects
-
- 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/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- 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/10032—Satellite or aerial image; Remote sensing
-
- 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/20016—Hierarchical, coarse-to-fine, multiscale or multiresolution image processing; Pyramid transform
-
- 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/30244—Camera pose
-
- 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
- G06T2207/30261—Obstacle
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/08—Bandwidth reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/36—Level of detail
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/004—Annotating, labelling
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Remote Sensing (AREA)
- Radar, Positioning & Navigation (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Geometry (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Aviation & Aerospace Engineering (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Astronomy & Astrophysics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
- Image Processing (AREA)
Abstract
볼륨 데이터 구조는 특정의 볼륨을 복수의 상세 레벨들로 표현하는 특정의 볼륨을 모델링한다. 볼륨 데이터 구조 내의 제1 엔트리는 복셀들을 제1 상세 레벨로 표현하는 제1 비트 세트를 포함하고, 제1 상세 레벨은 볼륨 데이터 구조에서의 최하위 상세 레벨을 포함하며, 제1 비트 세트의 값들은 복셀들 중 대응하는 복셀이 각자의 지오메트리에 의해 적어도 부분적으로 점유되는지를 지시하고, 여기서 볼륨 데이터 구조는 복셀들을 제1 상세 레벨보다 높은 제2 상세 레벨로 표현하는 다수의 제2 엔트리들을 추가로 포함하며, 제2 상세 레벨에서의 복셀들은 제1 상세 레벨에서의 복셀들에 의해 표현되는 볼륨들의 서브볼륨들을 표현하며, 제2 엔트리들의 개수는 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 제1 비트 세트 내의 비트들의 개수에 대응한다.
Description
관련 출원들
본 출원은, 그 전체가 참고로 본 명세서에 포함되는, 2016년 8월 19일자로 출원된 미국 가특허출원 제62/377,471호에 대한 이익을 주장한다.
기술 분야
본 개시내용은 일반적으로 컴퓨터 시스템들의 분야에 관한 것이며, 보다 상세하게는, 컴퓨터 비전 및 증강 또는 혼합 현실 시스템들에 관한 것이다.
MagicLeap™, Microsoft™ HoloLens™, Oculus™ Rift™로부터의 것들과 같은 증강 현실(Augmented Reality)(AR), 가상 현실(Virtual Reality)(VR) 및 혼합 현실(Mixed-Reality)(MR) 제품들, 그리고 Valve™ 및 HTC™로부터의 것들과 같은 다른 VR 시스템들의 출현으로 컴퓨터 비전 및 그래픽스의 세계들이 빠르게 융합되고 있다. 그러한 시스템들에서의 기존의 접근법은, 병렬로 실행되는, 별개의 그래픽스 프로세싱 유닛(GPU) 및 컴퓨터 비전 서브시스템을 사용하는 것이다. 이러한 병렬 시스템들은 프로세서들 및/또는 프로그래머블 하드웨어 가속기들의 어레이 상에서 실행되는 소프트웨어로 구현된 컴퓨터 비전 파이프라인과 병렬로 기존의 GPU로부터 어셈블링될 수 있다.
개시된 주제(subject matter)의 다양한 목적들, 특징들, 및 장점들은, 비슷한 참조 번호들이 비슷한 요소들을 식별해주는, 이하의 도면들과 관련하여 고려될 때 개시된 주제의 이하의 상세한 설명을 참조하여 보다 충분히 이해될 수 있다. 첨부 도면들이 개략적이고 축척대로 그려져 있는 것으로 의도되지 않는다. 명확함을 위해, 모든 컴포넌트가 모든 도면에서 라벨링되어 있지는 않다. 본 기술분야의 통상의 기술자가 개시된 주제를 이해할 수 있게 해주기 위해 예시가 필요하지 않은 경우 개시된 주제의 각각의 실시예의 모든 컴포넌트가 도시되어 있지는 않다.
도 1은 종래의 증강 또는 혼합 현실 렌더링 시스템을 예시하고 있다;
도 2는 일부 실시예들에 따른 복셀 기반 증강 또는 혼합 현실 렌더링 시스템을 예시하고 있다;
도 3은 일부 실시예들에 따른 고밀도(dense) 볼륨 표현과 희소(sparse) 볼륨 표현 간의 차이를 예시하고 있다;
도 4는 일부 실시예들에 따른 장면의 합성 뷰를 예시하고 있다;
도 5는 일부 실시예들에 따른 예시적인 요소 트리 구조(element tree structure)에서의 상세 레벨(level of detail)을 예시하고 있다;
도 6은 일부 실시예들에 따른 본 출원의 데이터 구조 및 복셀 데이터를 이용할 수 있는 응용분야들을 예시하고 있다;
도 7은 일부 실시예들에 따른 3D 숫자들을 인식하는 데 사용되는 예시적인 네트워크를 예시하고 있다.
도 8은 일부 실시예들에 따른 암시적 상세 레벨들을 사용하여 동일한 데이터 구조에 대해 수행된 다수의 분류들을 예시하고 있다;
도 9는 일부 실시예들에 따른 2D 컨볼루션 신경 네트워크들에 의한 연산 제거(operation elimination)를 예시하고 있다;
도 10은 일부 실시예들에 따른 예시적인 테스트 이미지들의 분석으로부터의 실험 결과들을 예시하고 있다;
도 11은 일부 실시예들에 따른 연산들을 컬링(culling)하기 위한 하드웨어를 예시하고 있다;
도 12는 일부 실시예들에 따른 연산들을 컬링하기 위한 하드웨어에 대한 미세조정(refinement)을 예시하고 있다;
도 13은 일부 실시예들에 따른 하드웨어를 예시하고 있다;
도 14는 일부 실시예들에 따른 오디오 스트림을 합성하기 위해 예시적인 볼륨 데이터를 사용하는 것을 예시하고 있다;
도 15는 일부 실시예들에 따른 재사용가능 잔향 필터 요소(reusable reverberation filter element)의 일 예를 예시하고 있다;
도 16은 일부 실시예들에 따른 FIR 잔향 필터의 구조(construction)를 예시하고 있다;
도 17은 일부 실시예들에 따른 FIR 잔향 필터의 벡터화된(vectorized) 구현을 도시하고 있다;
도 18은 일부 실시예들에 따른 벡터화된 프로세싱을 사용하는 광선 캐스팅(ray-casting)을 도시하고 있다;
도 19는 일부 실시예들에 따른 예시적인 다중 슬롯 벡터 프로세서(multi-slot vector processor)를 묘사하고 있다;
도 20은 일부 실시예들에 따른 예시적인 볼륨 가속 하드웨어(volumetric acceleration hardware)를 예시하고 있다;
도 21은 일부 실시예들에 따른 복셀 큐브(voxel cube)의 구성(organization)을 예시하고 있다;
도 22는 일부 실시예들에 따른 2-레벨 희소 복셀 트리(two-level sparse voxel tree)를 예시하고 있다;
도 23은 일부 실시예들에 따른 2-레벨 희소 복셀 트리를 예시하고 있다;
도 24는 일부 실시예들에 따른 예시적인 복셀 데이터의 저장을 예시하고 있다;
도 25는 일부 실시예들에 따른 예시적인 볼륨 데이터 구조에의 복셀의 삽입을 예시하고 있다;
도 26은 일부 실시예들에 따른 예시적인 볼륨 데이터 구조에 복셀을 삽입하기 위한 로직을 예시하고 있다;
도 27은 일부 실시예들에 따른 멀티플렉서들을 제어하는 어드레스 트리플렛(address triplet)을 생성하기 위한 로직을 예시하고 있다;
도 28은 일부 실시예들에 따른 어드레스 선택 로직을 예시하고 있다;
도 29는 일부 실시예들에 따른, 예시적인 3D 볼륨 객체의 투영을 예시하고 있다;
도 30은 예시적인 볼륨 데이터 구조를 수반하는 예시적인 연산들을 예시하고 있다;
도 31은 일부 실시예들에 따른 예시적인 3D 대 2D 투영의 하드웨어 구성을 도시하고 있다;
도 32는 일부 실시예들에 따른 단순화된 맵들을 생성하기 위해 투영들을 사용하는 것을 도시하고 있다;
도 33은 일부 실시예들에 따른 임베디드 디바이스들로부터의 예시적인 볼륨 3D(volumetric 3D) 및/또는 단순 2D(simple 2D) 측정들의 예시적인 집계를 예시하고 있다;
도 34는 일부 실시예들에서의 X, Y 또는 Z에서의 예시적인 투영들을 예시하고 있다;
도 35는 일부 실시예들에 따른 2D 비트맵들로부터의 히스토그램 피라미드들의 생성의 예시적인 가속화를 도시하고 있다;
도 36은 일부 실시예들에 따른 3D 비트맵들로부터의 히스토그램 피라미드들의 생성의 예시적인 가속화를 도시하고 있다;
도 37은 일부 실시예들에 따른 2D 2x2 비트맵 상에서의 2D 경로 탐색(Path-Finding)의 예시적인 가속화를 도시하고 있다;
도 38은 일부 실시예들에 따른 2D 2x2 비트맵 상에서의 2D 경로 탐색의 예시적인 가속화를 도시하고 있다;
도 39는 일부 실시예들에 따른 예시적인 볼륨 데이터 구조를 사용하는 충돌 검출의 예시적인 가속화를 도시하고 있다;
도 40은 적어도 일부 실시예들에 따른 디바이스들을 갖는 예시적인 네트워크의 단순화된 블록 다이어그램이다;
도 41은 적어도 일부 실시예들에 따른 예시적인 포그(fog) 또는 클라우드(cloud) 컴퓨팅 네트워크의 단순화된 블록 다이어그램이다;
도 42는 적어도 일부 실시예들에 따른 예시적인 디바이스들을 포함하는 시스템의 단순화된 블록 다이어그램이다;
도 43은 적어도 일부 실시예들에 따른 예시적인 프로세싱 디바이스의 단순화된 블록 다이어그램이다;
도 44는 적어도 일부 실시예들에 따른 예시적인 프로세서의 블록 다이어그램이다; 그리고
도 45는 적어도 일부 실시예들에 따른 예시적인 컴퓨팅 시스템의 블록 다이어그램이다.
도 1은 종래의 증강 또는 혼합 현실 렌더링 시스템을 예시하고 있다;
도 2는 일부 실시예들에 따른 복셀 기반 증강 또는 혼합 현실 렌더링 시스템을 예시하고 있다;
도 3은 일부 실시예들에 따른 고밀도(dense) 볼륨 표현과 희소(sparse) 볼륨 표현 간의 차이를 예시하고 있다;
도 4는 일부 실시예들에 따른 장면의 합성 뷰를 예시하고 있다;
도 5는 일부 실시예들에 따른 예시적인 요소 트리 구조(element tree structure)에서의 상세 레벨(level of detail)을 예시하고 있다;
도 6은 일부 실시예들에 따른 본 출원의 데이터 구조 및 복셀 데이터를 이용할 수 있는 응용분야들을 예시하고 있다;
도 7은 일부 실시예들에 따른 3D 숫자들을 인식하는 데 사용되는 예시적인 네트워크를 예시하고 있다.
도 8은 일부 실시예들에 따른 암시적 상세 레벨들을 사용하여 동일한 데이터 구조에 대해 수행된 다수의 분류들을 예시하고 있다;
도 9는 일부 실시예들에 따른 2D 컨볼루션 신경 네트워크들에 의한 연산 제거(operation elimination)를 예시하고 있다;
도 10은 일부 실시예들에 따른 예시적인 테스트 이미지들의 분석으로부터의 실험 결과들을 예시하고 있다;
도 11은 일부 실시예들에 따른 연산들을 컬링(culling)하기 위한 하드웨어를 예시하고 있다;
도 12는 일부 실시예들에 따른 연산들을 컬링하기 위한 하드웨어에 대한 미세조정(refinement)을 예시하고 있다;
도 13은 일부 실시예들에 따른 하드웨어를 예시하고 있다;
도 14는 일부 실시예들에 따른 오디오 스트림을 합성하기 위해 예시적인 볼륨 데이터를 사용하는 것을 예시하고 있다;
도 15는 일부 실시예들에 따른 재사용가능 잔향 필터 요소(reusable reverberation filter element)의 일 예를 예시하고 있다;
도 16은 일부 실시예들에 따른 FIR 잔향 필터의 구조(construction)를 예시하고 있다;
도 17은 일부 실시예들에 따른 FIR 잔향 필터의 벡터화된(vectorized) 구현을 도시하고 있다;
도 18은 일부 실시예들에 따른 벡터화된 프로세싱을 사용하는 광선 캐스팅(ray-casting)을 도시하고 있다;
도 19는 일부 실시예들에 따른 예시적인 다중 슬롯 벡터 프로세서(multi-slot vector processor)를 묘사하고 있다;
도 20은 일부 실시예들에 따른 예시적인 볼륨 가속 하드웨어(volumetric acceleration hardware)를 예시하고 있다;
도 21은 일부 실시예들에 따른 복셀 큐브(voxel cube)의 구성(organization)을 예시하고 있다;
도 22는 일부 실시예들에 따른 2-레벨 희소 복셀 트리(two-level sparse voxel tree)를 예시하고 있다;
도 23은 일부 실시예들에 따른 2-레벨 희소 복셀 트리를 예시하고 있다;
도 24는 일부 실시예들에 따른 예시적인 복셀 데이터의 저장을 예시하고 있다;
도 25는 일부 실시예들에 따른 예시적인 볼륨 데이터 구조에의 복셀의 삽입을 예시하고 있다;
도 26은 일부 실시예들에 따른 예시적인 볼륨 데이터 구조에 복셀을 삽입하기 위한 로직을 예시하고 있다;
도 27은 일부 실시예들에 따른 멀티플렉서들을 제어하는 어드레스 트리플렛(address triplet)을 생성하기 위한 로직을 예시하고 있다;
도 28은 일부 실시예들에 따른 어드레스 선택 로직을 예시하고 있다;
도 29는 일부 실시예들에 따른, 예시적인 3D 볼륨 객체의 투영을 예시하고 있다;
도 30은 예시적인 볼륨 데이터 구조를 수반하는 예시적인 연산들을 예시하고 있다;
도 31은 일부 실시예들에 따른 예시적인 3D 대 2D 투영의 하드웨어 구성을 도시하고 있다;
도 32는 일부 실시예들에 따른 단순화된 맵들을 생성하기 위해 투영들을 사용하는 것을 도시하고 있다;
도 33은 일부 실시예들에 따른 임베디드 디바이스들로부터의 예시적인 볼륨 3D(volumetric 3D) 및/또는 단순 2D(simple 2D) 측정들의 예시적인 집계를 예시하고 있다;
도 34는 일부 실시예들에서의 X, Y 또는 Z에서의 예시적인 투영들을 예시하고 있다;
도 35는 일부 실시예들에 따른 2D 비트맵들로부터의 히스토그램 피라미드들의 생성의 예시적인 가속화를 도시하고 있다;
도 36은 일부 실시예들에 따른 3D 비트맵들로부터의 히스토그램 피라미드들의 생성의 예시적인 가속화를 도시하고 있다;
도 37은 일부 실시예들에 따른 2D 2x2 비트맵 상에서의 2D 경로 탐색(Path-Finding)의 예시적인 가속화를 도시하고 있다;
도 38은 일부 실시예들에 따른 2D 2x2 비트맵 상에서의 2D 경로 탐색의 예시적인 가속화를 도시하고 있다;
도 39는 일부 실시예들에 따른 예시적인 볼륨 데이터 구조를 사용하는 충돌 검출의 예시적인 가속화를 도시하고 있다;
도 40은 적어도 일부 실시예들에 따른 디바이스들을 갖는 예시적인 네트워크의 단순화된 블록 다이어그램이다;
도 41은 적어도 일부 실시예들에 따른 예시적인 포그(fog) 또는 클라우드(cloud) 컴퓨팅 네트워크의 단순화된 블록 다이어그램이다;
도 42는 적어도 일부 실시예들에 따른 예시적인 디바이스들을 포함하는 시스템의 단순화된 블록 다이어그램이다;
도 43은 적어도 일부 실시예들에 따른 예시적인 프로세싱 디바이스의 단순화된 블록 다이어그램이다;
도 44는 적어도 일부 실시예들에 따른 예시적인 프로세서의 블록 다이어그램이다; 그리고
도 45는 적어도 일부 실시예들에 따른 예시적인 컴퓨팅 시스템의 블록 다이어그램이다.
이하의 설명에서, 개시된 주제의 완전한 이해를 제공하기 위해 개시된 주제의 시스템들 및 방법들 그리고 그러한 시스템들 및 방법들이 동작할 수 있는 환경 등에 관한 수많은 특정 상세들이 기재되어 있다. 그렇지만, 개시된 주제가 그러한 특정 상세 없이 실시될 수 있다는 것과, 본 기술분야에 공지된 특정 특징들이 개시된 주제를 복잡하게 하는 것을 피하기 위해 상세히 기술되어 있지 않다는 것이 본 기술분야의 통상의 기술자에게는 명백할 것이다. 그에 부가하여, 이하에 제공되는 실시예들이 예시적인 것임과, 개시된 주제의 범위 내에 있는 다른 시스템들 및 방법들이 있음이 고려된다는 점이 이해될 것이다.
3차원 공간 및 지오메트리의 볼륨들을 표현하는 데이터 모델들을 사용할 수 있는, 증강 현실, 가상 현실, 혼합 현실, 자율 디바이스들, 및 로봇들에 기초하고 이들을 포함하는, 다양한 기술들이 출현하고 있다. 그러한 3D 또는 볼륨 데이터를 사용하여 다양한 실제 및 가상 환경들을 기술하는 것은 전통적으로 큰 데이터 세트들을 수반해 왔으며, 일부 컴퓨팅 시스템들은 이들을 바람직한 방식으로 프로세싱하기 위해 노력해 왔다. 게다가, 드론들, 웨어러블 디바이스들, 가상 현실 시스템들 등과 같은 디바이스들이 더 작아짐에 따라, 그러한 디바이스들의 메모리 및 프로세싱 자원들이 또한 제약될 수 있다. 일 예로서, AR/VR/MR 응용분야들은 지원 하드웨어를 사용하여 생성된 그래픽 프레젠테이션들을 위해 높은 프레임 레이트들을 요구할 수 있다. 그렇지만, 일부 응용분야들에서, 그러한 하드웨어의 GPU 및 컴퓨터 비전 서브시스템은 바람직한 결과들을 생성하기 위해 (예컨대, 예시적인 목표들 중에서도 특히, 믿을 수 있는 결과를 생성하는 프레임 레이트들을 갖는 믿을 수 있는 그래픽 장면을 생성하기 위해, 과도한 레이턴시로 인한 사용자의 멀미(motion sickness)를 방지하기 위해), 최대 130fps(7msec)와 같은, 높은 레이트들로 데이터(예컨대, 3D 데이터)를 프로세싱할 필요가 있을 수 있다. 예시적인 이슈들 중에서도 특히, 대응하는 시스템의 프로세싱, 메모리, 전력, 응용분야 요구사항들에서의 제약조건들을 충족시키면서, 큰 볼륨들을 기술하는 데이터를 만족스럽게 프로세싱하기 위해 부가의 응용분야가 유사하게 도전을 받을 수 있다.
일부 구현들에서, 컴퓨팅 시스템들은, 포맷에 따라 정의된, 희소 볼륨 데이터를 생성하고 그리고/또는 사용하기 위한 로직을 구비할 수 있다. 예를 들어, 정의된 볼륨 데이터 구조가 다양한 시스템들 및 애플리케이션들에서 컴퓨터 비전 및 3D 렌더링을 통합시키기 위해 제공될 수 있다. 객체의 볼륨 표현이, 예를 들어, 스테레오스코픽 카메라 또는 깊이 카메라와 같은, 광학 센서를 사용하여 캡처될 수 있다. 객체의 볼륨 표현은 다수의 복셀들을 포함할 수 있다. 대응하는 볼륨 표현이 객체의 목표 분해능을 달성하기 위해 재귀적으로 세분화될(subdivided) 수 있게 해주는 개선된 볼륨 데이터 구조가 정의될 수 있다. 세분화 동안, 복셀들 중 하나 이상에 포함될 수 있는, 볼륨 표현 내의 비어 있는 공간이 볼륨 표현(및 지원 연산들)으로부터 컬링될 수 있다. 비어 있는 공간은 객체의 지오메트릭 속성(geometric property)을 포함하지 않는 볼륨 표현의 영역일 수 있다.
따라서, 개선된 볼륨 데이터 구조에서, 대응하는 볼륨 내의 개별 복셀들은 (일부 지오메트리가 대응하는 볼륨 공간 내에 존재하는 것에 의해) "점유됨(occupied)"으로 또는 (대응하는 볼륨이 비어 있는 공간으로 이루어져 있음을 나타내는) "비어 있음(empty)"으로 태깅될 수 있다. 그러한 태그들은 부가적으로 그의 대응하는 서브볼륨들(subvolumes) 중 하나 이상이 또한 점유되어 있다는 것(예컨대, 부모 또는 상위 레벨 복셀이 점유됨으로 태깅되어 있는 경우) 또는 그의 서브볼륨들 전부가 비어 있는 공간이라는 것(즉, 부모 또는 상위 레벨 복셀이 비어 있음으로 태깅되어 있는 경우에)을 지정하는 것으로 해석될 수 있다. 일부 구현들에서, 복셀을 비어 있음으로 태깅하는 것은 복셀 및/또는 그의 대응하는 서브볼륨 복셀들이 대응하는 볼륨 표현을 생성하는 데 사용되는 연산들로부터 효과적으로 제거될 수 있게 해줄 수 있다. 볼륨 데이터 구조는, SST(sparse sexaquaternary tree) 포맷에 따른 것과 같이, 희소 트리 구조(sparse tree structure)에 따를 수 있다. 게다가, 희소 볼륨 데이터 구조에 대한 그러한 접근법은 객체들의 볼륨 표현들을 저장하는 데 전통적으로 사용되는 것보다 비교적 더 적은 스토리지 공간을 이용할 수 있다. 부가적으로, 볼륨 데이터의 압축(compression)은, 예시적인 이점들 중에서도 특히, 그러한 표현들의 전송의 생존율(viability)을 증가시킬 수 있고, 그러한 표현들의 보다 빠른 프로세싱을 가능하게 해줄 수 있다.
볼륨 데이터 구조는 3D 렌더러에 대한 업데이트들을 신속하게 가능하게 해주어, 별개의 컴퓨터 비전 및 그래픽스 시스템에서 일어날 수 있는 지연을 없애기 위해 하드웨어 가속될 수 있다. 이러한 지연은 레이턴시를 초래할 수 있으며, 이러한 레이턴시는 AR, VR, MR, 및 다른 응용분야들에서 사용될 때, 부가의 단점들 중에서도 특히, 사용자들에 멀미를 유발할 수 있다. 가속화된 데이터 구조에서 지오메트릭 속성의 점유에 대해 복셀들을 신속하게 테스트할 수 있는 능력은, 실시간으로 업데이트될 수 있는, 저 레이턴시 AR, VR, MR, 또는 다른 시스템의 구성을 가능하게 해준다.
일부 실시예들에서, 볼륨 데이터 구조의 능력은 또한 인트라-프레임 경고들(intra-frame warnings)을 또한 제공할 수 있다. 예를 들어, AR, VR, MR, 및 다른 응용분야들에서, 사용자가 이미징된 장면에서 실제 또는 합성 객체와 충돌할 가능성이 있을 때, 또는 드론들 또는 로봇들에 대한 컴퓨터 비전 응용분야들에서, 그러한 디바이스들이 이미징된 장면에서 실제 또는 합성 객체와 충돌할 가능성이 있을 때, 볼륨 데이터 구조에 의해 제공되는 프로세싱의 속도는 임박한 충돌에 대한 경고를 가능하게 해준다.
본 개시내용의 실시예들은 로보틱스, 증강 및 혼합 현실 헤드셋들에 대한 헤드 마운티드 디스플레이들은 물론 전화들 및 태블릿들과 같은 응용분야들에서의 볼륨 데이터의 저장 및 프로세싱에 관련될 수 있다. 본 개시내용의 실시예들은 복셀들의 그룹 내의 각각의 볼륨 요소(volumetric element)(예컨대, 복셀), 및 임의로 복셀의 지오메트리에 관련된 물리 양들을 단일 비트로서 표현한다. 대응하는 적색-녹색-청색(RGB) 또는 다른 컬러레이션 인코딩들(coloration encodings), 투명도, 절단된 부호 거리 함수(truncated signed distance function)(TSDF) 정보 등과 같은, 64개의 복셀의 그룹에 관련된 부가의 파라미터들이 복셀들과 연관되고, (예컨대, 2개 이상의 비트가 각각의 복셀을 표현하는 데 사용되도록) 연관된 및 임의적 64-비트 데이터 구조에 저장될 수 있다. 그러한 표현 스킴은 최소 메모리 요구사항을 실현할 수 있다. 더욱이, 복셀들을 단일 비트에 의해 표현하는 것은 볼륨 표현으로부터의 요소들을 논리적으로 또는 수학적으로 결합시키기 위해 많은 단순화된 계산들을 수행하는 것을 가능하게 해준다. 볼륨 표현으로부터의 요소들을 결합시키는 것은, 그 중에서도 특히, 예를 들어, 3D 볼륨 데이터의 2D 투영들을 생성하기 위해 볼륨에서의 평면들을 OR 연산(OR-ing)하는 것, 및 2.5D 매니폴드(2.5D manifold)에서 점유된 복셀들의 개수를 카운트함으로써 표면적들을 계산하는 것을 포함할 수 있다. 비교들을 위해, XOR 로직이 64-비트 서브볼륨(예컨대, 4^3개의 서브볼륨)을 비교하는 데 사용될 수 있고, 볼륨들은 반전될 수 있으며, 여기서 객체들은, 예들 중에서도 특히, 객체들을 함께 OR 연산함으로써 하이브리드 객체들을 생성하기 위해 병합될 수 있다.
도 1은 빠른 머리 움직임으로 인한 변화들 및 렌더링된 그래픽스에 폐색들(occlusions) 및 섀도우들(shadows)을 생성할 수 있는 환경에서의 변화들을 고려하기 위해 포스트-렌더링 보정 장치를 갖는 병렬 그래픽스 렌더링 및 컴퓨터 비전 서브시스템들로 이루어진 종래의 증강 또는 혼합 현실 시스템을 예시하고 있다. 하나의 예시적인 구현에서, 시스템은 버스(101), 온-칩 네트워크, 또는 다른 상호접속부를 통한 상호접속에 의해 그래픽스 파이프라인, 컴퓨터 비전 파이프라인, 및 포스트-렌더링 보정 장치(post-rendering correction apparatus)의 실행을 제어하기 위해 호스트 메모리(124)에 의해 지원되는 호스트 프로세서(100)를 포함할 수 있다. 상호접속은 적절한 소프트웨어를 실행하는 호스트 프로세서(100)가 그래픽스 프로세싱 유닛(GPU)(106), 연관된 그래픽스 메모리(111), 컴퓨터 비전 파이프라인(116), 및 연관된 컴퓨터 비전 메모리(124)의 실행을 제어할 수 있게 해준다. 일 예에서, OpenGL 그래픽스 셰이더(107)를 통해 GPU(106)를 사용하여 그래픽스를 렌더링하는 것(예컨대, 삼각형 리스트(105)에 대해 연산하는 것)은 컴퓨터 비전 파이프라인보다 느린 레이트로 일어날 수 있다. 그 결과, 워프 엔진(warp engine)(108) 및 디스플레이/폐색 프로세서(109)를 통한 포스트-렌더링 보정은 그래픽스가 GPU(106)에 의해 렌더링된 후에 발생했을 수 있는 머리 자세(head pose) 및 폐색 장면 지오메트리의 변화들을 고려하기 위해 수행될 수 있다. 예들 중에서도 특히, 머리 자세(119) 및 폐색 지오메트리(113)의 임의의 변화들을 고려하기 위해 올바른 그래픽스 출력을 생성하도록, GPU(106)의 출력이 머리 자세 파이프라인(120) 및 폐색 파이프라인(123)으로부터의 올바른 제어 신호들(제각기, 121 및 123)과 함께 사용될 수 있도록 타임-스탬핑되어 있다.
GPU(106)와 병렬로, 복수의 센서들 및 카메라들(예컨대, 깊이 및 비전 프로세싱을 위한 능동 및 수동 스테레오 카메라들(117)을 포함함)이 컴퓨터 비전 파이프라인(116)에 접속될 수 있다. 컴퓨터 비전 파이프라인(116)은 적어도 3개의 스테이지 중 하나 이상을 포함할 수 있으며, 각각의 스테이지는 다수의 하위 레벨 프로세싱 스테이지들을 포함할 수 있다. 일 예에서, 컴퓨터 비전 파이프라인(116)에서의 스테이지들은 이미지 신호 프로세싱(ISP) 파이프라인(118), 머리 자세 파이프라인(120), 및 폐색 파이프라인(122)일 수 있다. ISP 파이프라인(118)은 입력 카메라 센서들(117)의 출력들을 취하고, 출력들이 후속하는 머리 포즈 및 폐색 프로세싱을 위해 사용될 수 있도록 출력들을 컨디셔닝할 수 있다. 머리 자세 파이프라인(120)은, 대응하는 출력 그래픽스 프레임이 GPU(106)에 의해 렌더링된 후의 머리 자세의 변화를 계산하기 위해, ISP 파이프라인(118)의 출력을 취하고 이를 헤드셋(110) 내의 관성 측정 유닛(IMU)의 출력(119)과 함께 사용할 수 있다. 머리 자세 파이프라인(HPP)(120)의 출력(121)은 GPU 출력(102)이 업데이트된 머리 자세 위치(119)와 매칭하도록 GPU 출력(102)을 왜곡시키기 위해 사용자에 의해 특정된 메시(user specified mesh)와 함께 워프 엔진(108)에 적용될 수 있다. 폐색 파이프라인(122)은 머리 자세 파이프라인(121)의 출력을 취하고, 장면 지오메트리 상에 대응하는 섀도우(114)를 생성해야 하는 시야(visual field)에 들어가는 손(113)(또는 다른 예시적인 객체)과 같은 시야 내의 새로운 객체들을 찾는다. 폐색 파이프라인(122)의 출력(123)은 워프 엔진(108)의 출력(103) 위에 시야를 정확하게 오버레이하기 위해 디스플레이 및 폐색 프로세서(109)에 의해 사용될 수 있다. 디스플레이 및 폐색 프로세서(109)는 계산된 머리 자세(119)를 사용하여 합성 셰도우들(114)에 대한 셰도우 마스크를 생성하고, 디스플레이 및 폐색 프로세서(109)는, 예시적인 사용 사례들 및 특징들 중에서도 특히, 그래픽 셰도우(114)를 워프 엔진(108)의 출력(103) 위에 생성하고 증강/혼합 현실 헤드셋(110) 상에 디스플레이하기 위한 최종 출력 프레임(들)(104)을 생성하기 위해 셰도우 마스크 위에 손(113)의 폐색 지오메트리를 합성시킬 수 있다.
도 2는 본 개시내용의 일부 실시예들에 따른 복셀 기반 증강 또는 혼합 현실 렌더링 시스템을 예시하고 있다. 도 2에 묘사된 장치는 호스트 CPU(200) 및 연관된 호스트 메모리(201)로 이루어진 호스트 시스템을 포함할 수 있다. 그러한 시스템은 버스(204), 온-칩 네트워크 또는 다른 통신 메커니즘을 통해, 통합된 컴퓨터 비전 및 그래픽스 파이프라인(223) 및 헤드 마운티드 증강 또는 혼합 현실 디스플레이(211) 상에 디스플레이하기 위한 최종 장면에 렌더링될 실제 및 합성 복셀들을 포함하는 연관된 통합된 컴퓨터 비전 및 그래픽스 메모리(213)와 통신할 수 있다. AR/MR 디스플레이(211)는 머리 자세(222) 배향에 대한 변경들을 측정하는 데 사용되는 복수의 능동 및 수동 이미지 센서들(214) 및 관성 측정 유닛(IMU)(212)을 또한 포함할 수 있다.
결합된 렌더링 파이프라인에서, 합성 지오메트리는 합성 복셀 지오메트리(202)를 생성하기 위해 OpenGL JiT(Just-in-Time) 변환기(translator)(205)에 의해 프로세싱되는 삼각형 리스트(204)로부터 시작하여 생성될 수 있다. 합성 복셀 지오메트리는, 예를 들어, 삼각형 리스트로부터 삼각형의 메인 평면(main plane)을 선택함으로써 생성될 수 있다. 선택된 평면에서의 각각의 삼각형의 2D 래스터화(rasterization)가 이어서 (예컨대, X 및 Z 방향으로) 수행될 수 있다. 제3 좌표(예컨대, Y)는 삼각형에 걸쳐 보간될 어트리뷰트(attribute)로서 생성될 수 있다. 래스터화된 삼각형의 각각의 픽셀은 대응하는 복셀의 정의를 가져올 수 있다. 이 프로세싱은 CPU 또는 GPU 중 어느 하나에 의해 수행될 수 있다. GPU에 의해 수행될 때, 예시적인 구현들 중에서도 특히, GPU가 픽셀을 그렸던 복셀을 생성하기 위해 각각의 래스터화된 삼각형이 GPU로부터 리드백(read back)될 수 있다. 예를 들어, 합성 복셀은 리스트들의 2D 버퍼를 사용하여 생성될 수 있으며, 여기서 리스트의 각각의 엔트리는 그 픽셀에 렌더링된 폴리곤의 깊이 정보를 저장한다. 예를 들어, 모델이 직교 시점(orthographic viewpoint)(예컨대, 톱-다운(top-down))을 사용하여 렌더링될 수 있다. 예를 들어, 예시적인 버퍼에 제공된 모든 (x, y)는 대응하는 복셀 볼륨에서 (x, y)에 있는 열(예컨대, (x, y, 0)부터 (x, y, 4095)까지)을 표현할 수 있다. 각각의 열은 이어서 각각의 리스트 내의 정보를 사용하여 3D 주사선들(scanlines)로서 정보로부터 렌더링될 수 있다.
도 2의 예를 계속하면, 일부 구현들에서, 합성 복셀 지오메트리(202)는 SLAM(simultaneous localization and mapping) 파이프라인(217)을 사용하여 구성되는 측정된 지오메트리 복셀들(227)과 결합될 수 있다. SLAM 파이프라인은, 깊이 파이프라인(216)에 의해 깊이 이미지들(226)로 변환될 수 있는, 출력(225)을 생성하기 위해 이미지 신호 프로세싱(ISP) 파이프라인(215)을 사용하여 먼저 프로세싱되는 능동 센서들 및/또는 수동 이미지 센서들(214)(예컨대, 214.1 및 214.2)을 사용할 수 있다. 능동 또는 수동 이미지 센서들(214(214.1 및 214.2))은, 예들 중에서도 특히, 능동 또는 수동 스테레오 센서들, 구조화된 광 센서들, 비행 시간(time-of-flight) 센서들을 포함할 수 있다. 예를 들어, 깊이 파이프라인(216)은 구조화된 광 또는 비행 시간 센서(214.1) 또는 대안적으로 수동 스테레오 센서들(214.2) 중 어느 하나로부터의 깊이 데이터를 프로세싱할 수 있다. 하나의 예시적인 구현에서, 스테레오 센서들(214.2)은, 예시적인 구현들 중에서도 특히, 수동 스테레오 센서들의 쌍을 포함할 수 있다.
깊이 파이프라인(215)에 의해 생성된 깊이 이미지들은 측정된 지오메트리 복셀들(227)의 복셀화된 모델을 생성하기 위해 SLAM 알고리즘(예컨대, Kinect Fusion)을 사용하여 고밀도 SLAM 파이프라인(dense SLAM pipeline)(217)에 의해 프로세싱될 수 있다. 디스플레이 프로세서(210)를 통해 디스플레이 디바이스(예컨대, VR 또는 AR 응용분야에서의 헤드 마운티드 디스플레이(211))에 출력하기 위한 장면의 2D 렌더링을 생성하기 위해 측정된 지오메트리 복셀들(227)(예컨대, 실제 복셀 지오메트리)을 합성 복셀 지오메트리(202)와 결합시킬 수 있는 광선 트레이싱 가속기(ray-tracing accelerator)(206)가 제공될 수 있다. 이러한 구현에서, 완전한 장면 모델은 측정된 지오메트리 복셀들(227)의 실제 복셀들 및 합성 지오메트리(202)로부터 구성될 수 있다. 그 결과, (예컨대, 도 1에서와 같이) 2D 렌더링된 지오메트리의 워핑(warping)에 대한 요구사항은 없다. 그러한 구현은 실제 지오메트리와 측정된 지오메트리를 올바르게 정렬시키기 위해 머리 자세 트래킹 센서들 및 대응하는 로직과 결합될 수 있다. 예를 들어, 예시적인 머리 자세 파이프라인(221)은 헤드 마운티드 디스플레이(212)에 마운팅된 IMU(212)로부터의 머리 자세 측정들(232)을 프로세싱할 수 있고, 머리 자세 측정 파이프라인의 출력(231)은 디스플레이 프로세서(210)를 통해 렌더링 동안 고려될 수 있다.
일부 예들에서, 통합된 렌더링 파이프라인은 또한 오디오 잔향 모델들을 렌더링하고 실세계, 가상, 또는 혼합 현실 장면의 물리학을 모델링하기 위해 측정된 지오메트리 복셀들(227)(예컨대, 실제 복셀 모델) 및 합성 지오메트리(202)(예컨대, 합성 복셀 모델)를 사용할 수 있다. 일 예로서, 물리학 파이프라인(218)은 측정된 지오메트리 복셀들(227) 및 합성 복셀 지오메트리(202)를 취하고 복셀 데이터 구조에 내장된 음향 반사 계수들을 사용하여 출력 샘플들(230)을 계산하기 위해 광선 캐스팅 가속기(206)를 사용하여 헤드 마운티드 디스플레이(HMD)(211) 내의 좌측 및 우측 이어폰들에 대한 출력 오디오 샘플들을 계산할 수 있다. 이와 유사하게, 202 및 227로 이루어진 통합된 복셀 모델은 또한 합성 AR/MR 장면 내의 합성 객체들에 대한 물리학 업데이트들을 결정하는 데 사용될 수 있다. 물리학 파이프라인(218)은 합성 장면 지오메트리를 입력들로서 취하고 렌더링을 위해 그리고 물리학 모델들의 장래의 반복들을 위한 기초로서 합성 지오메트리(202)에 대한 업데이트들(228)을 계산하기 이전에 광선 캐스팅 가속기(206)를 사용하여 충돌들을 계산한다.
일부 구현들에서, 도 2에 도시된 시스템과 같은, 시스템은, 예들 중에서도 특히, ISP 파이프라인(215)의 출력으로부터 RGB 비디오/이미지 입력들 또는 SLAM 파이프라인(217)의 출력으로부터의 볼륨 장면 데이터 중 어느 하나를 프로세싱할 수 있는 컨볼루션 신경 네트워크들(convolutional neural networks)(CNN들)을 구현하고 그리고/또는 이용하기 위해 하나 이상의 하드웨어 가속기를 부가적으로 구비할 수 있다. 신경 네트워크 분류기들은 출력 분류(237)를 생성하기 위해 하드웨어(HW) 컨볼루션 신경 네트워크(CNN) 가속기(207)만을 사용하여 또는 프로세서들 및 HW CNN 가속기(207)의 조합으로 실행될 수 있다. 볼륨 표현들에 대한 추론을 행하는 데 HW CNN 가속기(207)가 이용가능한 것은, 예시적인 사용들 중에서도 특히, 측정된 지오메트리 복셀들(227) 내의 복셀들의 그룹들이 특정의 객체 클래스에 속하는 것으로서 라벨링될 수 있게 해줄 수 있다.
(예컨대, CNN 및 지원 하드웨어 가속을 사용하여) 복셀들을 라벨링하는 것은 그 복셀들이 속하는 그 객체들이 시스템에 의해 알려진 객체에 대응하는 것으로 인식될 수 있게 해줄 수 있으며 소스 복셀들은 측정된 지오메트리 복셀들(227)로부터 제거되고, 객체에 대응하는 경계 박스 및/또는, 예시적인 정보 중에서도 특히, 객체의 원점, 객체의 자세, 객체 디스크립터에 관한 정보로 대체될 수 있다. 이것은, 예를 들어, 예시적인 사용들에서도 특히, 장면 내의 객체들과 상호작용하기 위해 로봇, 드론, 또는 다른 컴퓨팅 시스템에 의해, 또는 장면 내의 객체들의 흡음 계수(sound absorption coefficient)를 룩업(look up)하고 장면의 음향 모델에서 이를 반영하기 위해 오디오 시스템에 의해 입력으로서 사용될 수 있는 장면에 대한 훨씬 더 의미론적으로 의미있는 설명(semantically meaningful description)을 얻게 해줄 수 있다.
도 2에 도시되고 설명된 예시적인 시스템의 파이프라인들을 구현하기 위해 하나 이상의 프로세서 디바이스 및 하드웨어 가속기가 제공될 수 있다. 일부 구현들에서, 예시적인 구현들 중에서도 특히, 결합된 렌더링 파이프라인의 하드웨어 및 소프트웨어 요소들 전부는 DRAM 제어기(209)에 대한 액세스를 공유할 수 있으며, 이는 차례로 데이터가 공유된 DDR 메모리 디바이스(208)에 저장될 수 있게 해준다.
도 3은 일부 실시예들에 따른 고밀도 볼륨 표현과 희소 볼륨 표현 간의 차이를 예시하기 위해 제시되어 있다. 도 3의 예에 도시된 바와 같이, 실세계 또는 합성 객체(300)(예컨대, 토끼의 동상)는 302에 도시된 바와 같이 고밀도 방식으로 또는 304에 도시된 바와 같은 희소 방식으로 복셀들 면에서 기술될 수 있다. 302와 같은 고밀도 표현의 장점은 볼륨 내의 모든 복셀들에 대한 균일한 액세스 속도이지만, 불리한 면(downside)은 요구될 수 있는 스토리지의 양이다. 예를 들어, 512^3 요소 볼륨(예컨대, Kinect 센서를 사용하여 스캔된 볼륨에 대한 1cm당 5m 분해능(5m in 1cm resolution)에 대응함)과 같은, 고밀도 표현의 경우, 각각의 복셀에 대해 4 바이트 절단된 부호 거리 함수(TSDF)를 사용하여 상대적으로 작은 볼륨을 저장하는 데 512 MB가 요구된다. 다른 한편으로, 희소 표현을 구현하는 8진트리(octree) 표현(304)은 실세계 장면에 실제 지오메트리가 있는 그 복셀들만을 저장할 수 있고, 그로써 동일한 볼륨을 저장하는 데 필요한 데이터의 양을 감소시킨다.
도 4를 살펴보면, 일부 실시예들에 따른 예시적인 장면의 합성 뷰가 예시되어 있다. 상세하게는, 도 4는 장면(404)의 합성 뷰가 어떻게 합성 및 실세계 복셀 데이터에 대한 등가의 경계 박스들(제각기, 400 및 402) 내의 합성 복셀들(401) 및 실세계 측정된 복셀들(403)을 표현하기 위해 병렬 데이터 구조들을 사용하여 유지되거나, 디스플레이되거나 또는 추가 프로세싱을 거칠 수 있는지를 도시하고 있다. 도 5는 일부 실시예들에 따른 균일한 4^3 요소 트리 구조에서의 상세 레벨을 예시하고 있다. 일부 구현들에서, 도 5의 예에서 표현된 바와 같은, 8진트리 표현을 사용하여 볼륨 내의 각각의 복셀을 기술하는 데 1 비트 밖에 이용되지 않을 수 있다. 그렇지만, 8진트리 기반 기법들의 단점은 8진트리에 있는 특정의 복셀에 액세스하는 데 이용되는 간접 메모리 액세스들(indirect memory accesses)의 횟수일 수 있다. 희소 복셀 8진트리의 경우에, 동일한 지오메트리가 다수의 상세 레벨들로 암시적으로 표현될 수 있어, 광선 캐스팅, 게임 물리학, CNN들, 및 다른 기법들과 같은 연산들을 유리하게도 가능하게 해줌으로써 장면의 비어 있는 부분들이 추가적인 계산들로부터 컬링될 수 있게 해주어, 예시적인 장점들 중에서도 특히, 요구된 스토리지에서뿐만 아니라 전력 손실(power dissipation) 및 계산 부하(computational load) 면에서의 전체적인 감소를 가져오게 한다.
일 구현에서, 복셀당 1 비트의 메모리 요구사항을 갖는 501에 도시된 것과 같이, 볼륨 정보를 4^3(또는 64-비트) 부호없는 정수로서 구성하기 위해 (본 명세서에서 "볼륨 데이터 구조"라고도 지칭되는) 개선된 복셀 디스크립터(voxel descriptor)가 제공될 수 있다. 이 예에서, (64 비트를 이용하는 SLAMbench/KFusion에서의 TSDF들과 비교하여) 절단된 부호 거리 함수 값을 저장하는 데 복셀당 1 비트로는 불충분하다. 본 예에서, 부가의 (예컨대, 64-비트) 필드(500)가 복셀 디스크립터에 포함될 수 있다. 64-비트 필드(500) 내의 TSDF가 16 비트이지만, 64-비트 필드(500)에서의 복셀 TSDF와 복셀 위치(501)의 조합을, SLAMbench/KFusion 또는 다른 예들에서 사용되는 것과 같은, 훨씬 더 높은 분해능 TSDF와 동등하게 만들기 위해 x, y 및 z에서의 부가의 2-비트의 분수 분해능(fractional resolution)이 복셀 디스크립터(501)에 암시적으로 제공될 수 있도록, 이 예가 추가로 향상될 수 있다. 예를 들어, 64-비트 필드(500)(복셀 디스크립터)에서의 부가의 데이터는 각각이 1 바이트를 갖는 (예컨대, 수동 RGB 센서들을 통한 장면으로부터의) 서브샘플링된 RGB 컬러 정보, 및 8-비트 투명도 값 알파(alpha)는 물론, 응용분야 특정적일 수 있고, 예를 들어, 예들 중에서도 특히, 오디오 응용분야들에 대한 음향 반사율, 물리학 응용분야들에 대한 강성, 객체 재료 타입을 저장하는 데 사용될 수 있는 2개의 1-바이트 예약 필드(R1 및 R2)를 저장하는 데 사용될 수 있다.
도 5에 도시된 바와 같이, 복셀 디스크립터(501)는 4개의 2D 평면으로 논리적으로 그룹화될 수 있으며, 그 각각은 16개의 복셀(502)을 포함한다. 이러한 2D 평면들(또는 복셀 평면들)은, 도 5에 표현된 바와 같이, 4의 승멱(ascending powers of 4)으로 된 연속적인 분해들에 기초한 8진트리 스타일 구조의 각각의 레벨을 기술할 수 있다. 이 예시적인 구현에서, 64-비트 복셀 디스크립터는 대응하는 시스템 구현에서 사용되는 64-비트 버스 인프라스트럭처에 아주 적합하기(good match) 때문에 선택된다(그러나 다른 복셀 디스크립터 크기들 및 포맷들이 다른 시스템 구현들에서 제공될 수 있고 시스템의 버스 또는 다른 인프라스트럭처에 따라 크기가 정해질 수 있다). 일부 구현들에서, 복셀 디스크립터는 복셀을 획득하는 데 사용되는 메모리 액세스들의 횟수를 감소시키도록 크기가 정해질 수 있다. 예를 들어, 64-비트 복셀 디스크립터는, 예시적인 고려사항들 및 구현들 중에서도 특히, 2^3개의 요소들에 대해 연산하는 전통적인 8진트리와 비교하여 8진트리에서의 임의의 레벨에 있는 복셀에 액세스하는 데 필요한 메모리 액세스들의 횟수를 2배만큼 감소시키는 데 사용될 수 있다.
일 예에서, 8진트리는 4^3 루트 볼륨(503)으로부터 시작하는 것으로 기술될 수 있고, 아래에 있는 계층들(underlying layers)(504, 505 및 506)에서의 지오메트리의 존재에 대한 코드들에서의 각각의 비-제로 엔트리가 예시적인 256^3 볼륨에 묘사된다. 이 특정의 예에서, 8진트리에서의 최하위 레벨에 액세스하기 위해 4번의 메모리 액세스가 사용될 수 있다. 그러한 오버헤드가 너무 높은 경우들에서, 8진트리의 최상위 레벨을, 507에 도시된 바와 같이, 64^3과 같은, 보다 큰 볼륨으로서 인코딩하기 위해 대안의 접근법이 채택될 수 있다. 이 경우에, 507에서의 각각의 비-제로 엔트리는 하위(underlying) 256^3 볼륨(508)에서의 하위(underlying) 4^3 8진트리의 존재를 나타낼 수 있다. 이러한 대안의 구성의 결과는 503, 504 및 505에 도시된 대안의 공식화된 것(formulation)과 비교하여 256^3 볼륨(508) 내의 임의의 복셀에 액세스하는 데 단지 2번의 메모리 액세스가 요구된다는 것이다. 이 후자의 접근법은 8진트리 구조를 호스팅하는 디바이스가 보다 많은 양의 임베디드 메모리를 가지며, 복셀 8진트리(508)의 하위의(lower) 그리고 덜 빈번하게 액세스되는 부분들만을 외부 메모리에서 가능하게 해주는 경우에 유리하다. 이 접근법은, 예를 들어, 보다 큰(예컨대, 64^3), 전체 볼륨이 온-칩 메모리에 저장되어야 하는 경우 스토리지 면에서 보다 많은 비용이 들 수 있지만, 트레이드오프는, 예시적인 장점들 중에서도 특히, 보다 빠른 메모리 액세스(예컨대, 2배) 및 훨씬 더 낮은 전력 손실을 가능하게 해줄 수 있다.
도 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)에 의해 접속된 머신들 및 디바이스들에 공유될 수 있다. 다른 추가의(still further) 예들에서, 2D 맵들은 투영 및 그에 뒤이은 구분적 단순화(piecewise simplification)(609)(예컨대, 차량 또는 로봇의 고정 폭 및 높이를 가정함)를 사용하여 초저 대역폭 응용분야들을 위해 미세조정될 수 있다. 단순화된 경로는 이어서 경로의 구분적 선형 세그먼트당 단일의 X, Y 좌표 쌍만을 가질 수 있어, 크라우드소싱 기법들을 사용하여 보다 고품질의 맵들을 구축하기 위해 차량(609)의 경로를 클라우드 인프라스트럭처(607)에 전달하고 그 동일한 클라우드 인프라스트럭처(607)에서 집계되는 데 요구된 대역폭의 양을 감소시킬 수 있다. 이러한 맵들은 클라우드 인프라스트럭처(607)에 의해 접속된 머신들 및 디바이스들에 공유될 수 있다.
이러한 상이한 응용분야들을 가능하게 해주기 위해, 일부 구현들에서, 공통 기능은, 공유 소프트웨어 라이브러리를 통해서와 같이, 제공될 수 있는데, 이는 일부 실시예들에서, 예들 중에서도 특히, 하드웨어 가속기들 또는 프로세서 명령어 세트 아키텍처(instruction set architecture)(ISA) 확장들을 사용하여 가속화될 수 있다. 예를 들어, 그러한 기능들은 디스크립터에의 복셀들의 삽입, 복셀들의 삭제, 또는 복셀들의 룩업(610)을 포함할 수 있다. 일부 구현들에서, 예들 중에서도 특히, 충돌 검출 기능(620)은 물론 볼륨으로부터의 포인트/복셀 삭제(630)가 또한 지원될 수 있다. 앞서 소개된 바와 같이, 시스템은 (예컨대, 경로 또는 충돌 결정을 위한 기초로서 역할할 수 있는) 대응하는 볼륨 표현(602)(3D 볼륨)으로부터 X-방향, Y-방향 및 Z-방향으로의 2D 투영들(640)을 신속하게 생성하는 기능을 구비할 수 있다. 일부 경우들에서, 히스토그램 피라미드들(650)을 사용하여 볼륨 표현(602)으로부터 삼각형 리스트들을 생성할 수 있는 것이 또한 유리할 수 있다. 게다가, 시스템은 볼륨 공간(602)의 2D 및 3D 표현들에서의 자유 경로들의 신속한 결정을 위한 기능(660)을 구비할 수 있다. 그러한 기능은 다양한 응용분야들에서 유용할 수 있다. 예들 중에서도 특히, 볼륨 내의 복셀들의 개수를 정교화하는 것(elaborating), 볼륨 표현(602)의 마스킹된 영역에서의 1 비트들의 개수를 카운트하기 위해 집단 카운터(population counter)를 사용하여 객체의 표면을 결정하는 것과 같은, 추가의 기능들이 제공될 수 있다.
도 7의 단순화된 블록 다이어그램을 살펴보면, 적어도 일부 실시예들에 따른 3D 숫자들을 인식하는 기능을 갖춘 시스템들을 포함하는 예시적인 네트워크가 예시되어 있다. 예를 들어, 도 6에 도시된 응용분야들 중 하나는 예시적인 네트워크가, MNIST(Mixed National Institute of Standards and Technology) 데이터 세트와 같은, 데이터 세트로부터 생성된 3D 숫자들(700)을 인식하는 데 사용되는, 도 7에 보다 상세히 설명되어 있는, 볼륨 CNN 응용분야(605)이다. 이러한 데이터 세트 내의 숫자들은 트레이닝 이전에 숫자들에 X, Y 및 Z에서의 적절한 회전들 및 병진 이동들(translations)을 적용함으로써 CNN 기반 컨볼루션 네트워크 분류기(710)를 트레이닝하는 데 사용될 수 있다. 임베디드 디바이스에서의 추론을 위해 사용될 때, 트레이닝된 네트워크(710)는 장면 내의 3D 숫자들을, 숫자들이, 예들 중에서도 특히, X, Y 및 Z에서의 회전들 및 병진 이동들(720)을 거치는 경우에도, 높은 정확도로 분류하는 데 사용될 수 있다. 일부 구현들에서, CNN 분류기의 동작이 도 2에 도시된 HW CNN 가속기(207)에 의해 가속화될 수 있다. 신경 네트워크의 제1 계층이 볼륨 표현(602)에서의 복셀들을 사용하여 곱셈들을 수행하기 때문에, 이러한 산술 연산들은 스킵될 수 있는데, 그 이유는 제로와의 곱셈은 항상 제로이고 데이터 값 A와 1(복셀)의 곱셈은 A와 동일하기 때문이다.
도 8은 암시적 상세 레벨들을 사용하여 동일한 데이터 구조에 대해 수행된 다수의 분류들을 예시하고 있다. 볼륨 표현(602)을 사용하는 CNN 분류의 추가의 미세조정은, 8진트리 표현이 도 5에 도시된 바와 같이 8진트리 구조에 암시적으로 다수의 상세 레벨들을 포함하기 때문에, 다수의 분류들이, 도 8에 도시된 것과 같은, 단일 분류기(830) 또는 다수의 분류기들을 병렬로 사용하여 암시적 상세 레벨들(800, 810 및 820)을 병렬로 사용하여 동일한 데이터 구조에 대해 수행될 수 있다는 것일 수 있다. 전통적인 시스템들에서는, 분류 패스들(classification passes) 간에 요구된 이미지 리사이징(resizing)으로 인해 비슷한 병렬 분류가 느려질 수 있다. 동일한 8진트리가 다수의 상세 레벨들에 동일한 정보를 포함할 수 있기 때문에, 본 명세서에서 논의된 복셀 구조들을 적용하는 구현들에서 그러한 리사이징이 보류될(foregone) 수 있다. 실제로, 볼륨 모델들에 기초한 단일 트레이닝 데이터 세트는, 종래의 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%에 도달할 수 있으며, 이는, 제로들의 경우에, 제로들을 인식하고, 그에 응답하여, 대응하는 데이터를 페치(fetch)하여 대응하는 곱셈 연산들을 수행하지 않는 시스템이 제공될 수 있다. 이 예에서, 85%는 MNIST(Modified National Institute of Standards and Technology) 테스트 데이터 세트로부터 생성된 ReLU 동적 제로들의 퍼센티지를 나타낸다. 이러한 제로들에 대응하는, 대응하는 연산 제거들은, 예시적인 이점들 중에서도 특히, 전력 손실 및 메모리 대역폭 요구사항들을 감소시키는 역할을 할 수 있다.
명백한 연산들(trivial operations)이 비트맵에 기초하여 컬링될 수 있다. 예를 들어, 그러한 비트맵의 사용은 발명의 명칭이 "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)과 같은, 활성화 함수 프로세싱(activation function processing)을 포함한다. ReLU 출력 벡터(1131)를 제공하는 ReLU 유닛(1120)의 출력은, ReLU 출력 벡터(1131)를 수신하는, 후속하는 컨볼루션 프로세싱 계층(1180)에 (예컨대, 아마도 지연(1132)을 통해) 접속될 수 있다. 하나의 예시적인 구현에서, ReLU 비트맵(1130)은 또한 후속하는 컨볼루션 유닛(1180)에 대한 ReLU 유닛(1120)의 접속과 병렬로 생성될 수 있고, ReLU 비트맵(1130)은 ReLU 출력 벡터(1131) 내의 어느 요소들이 제로들이고 어느 요소들이 비-제로들인지를 표기한다.
일 구현에서, 신경 네트워크의 계산들에 수반된 연산들을 제거할 기회들을 인에이블된 하드웨어에 통보하기 위해 비트맵(예컨대, 1130)이 생성되거나 다른 방식으로 제공될 수 있다. 예를 들어, ReLU 비트맵(1130) 내의 비트들은 비트맵 스케줄러(1160)에 의해 해석될 수 있으며, 비트맵 스케줄러(1160)는, 제로와 곱하는 것이 항상 출력으로서 제로를 생성할 것임을 감안하여, 대응하는 이진 제로들이 ReLU 비트맵(1130)에 있는 경우 ReLU 출력 벡터(1131)의 제로 엔트리들을 스킵하라고 후속하는 컨볼루션 유닛(1180) 내의 곱셈기들에 지시한다. 이와 병렬로, ReLU 비트맵(1130) 내의 제로들에 대응하는 데이터/가중치들에 대한 어드레스 생성기(1140)로부터의 메모리 페치들이 또한 스킵될 수 있는데 그 이유는 후속하는 컨볼루션 유닛(1180)에 의해 스킵될 예정인 가중치들을 페치할 가치가 거의 없기 때문이다. 가중치들이 부착된(attached) DDR DRAM 스토리지 디바이스(1170)로부터 DDR 제어기(1150)를 통해 페치되어야 하는 경우, 레이턴시가 너무 길 수 있어서 얼마간의 온-칩 대역폭 및 관련 전력 손실을 절감하는 것만이 가능하다. 다른 한편으로, 가중치들이 온-칩 RAM(1180) 스토리지로부터 페치되는 경우, 특히 RAM/DDR 페치 지연(1132)에 대응하는 지연이 후속하는 컨볼루션 유닛(1180)에 대한 입력에 부가되는 경우, 전체 가중치 페치 동작을 바이패스/스킵하는 것이 가능할 수 있다.
도 12를 살펴보면, 일부 실시예들에 따른 명백한 연산들을 컬링(또는 연산 제거를 수행)하기 위한 회로부 및 다른 로직을 갖춘 예시적인 하드웨어에 대한 미세조정을 예시하기 위해 간략화된 블록 다이어그램이 제시되어 있다. 도 12의 예에 도시된 바와 같이, 선행하는 최대풀링 유닛(Max-Pooling unit)(1210) 또는 컨볼루션 유닛(1200)으로부터 미리 ReLU 유닛(1220) 입력의 부호를 예측하기 위해 부가의 하드웨어 로직이 제공될 수 있다. 최대풀링 유닛(1210)에 부호-예측 및 ReLU 비트맵 생성을 추가하는 것은 어드레스 생성기(1240)를 통해, 외부 DDR 제어기(1250) 및 DDR 스토리지(1270) 또는 내부 RAM 스토리지(1271)를 통해, 발생할 수 있는 지연들을 커버하기 위해 타이밍 관점에서 ReLU 비트맵 정보가 보다 일찍 예측될 수 있게 해줄 수 있다. 지연이 충분히 낮은 경우, ReLU 비트맵이 어드레스 생성기(1240)에서 해석될 수 있고 ReLU 비트맵 제로들과 연관된 메모리 페치들이 완전히 스킵될 수 있는데, 그 이유는 메모리로부터의 페치의 결과들이 결코 사용되지 않을 것으로 결정될 수 있기 때문이다. 도 11의 스킴에 대한 이러한 수정은, 예시적인 특징들 및 기능 중에서도 특히, DDR 액세스 경로(예컨대, 1240으로부터 1250으로 1270으로) 또는 RAM 액세스 경로(예컨대, 1240으로부터 1271로)를 통한 지연들이 지연 스테이지(1232)를 정당화하지(warrant) 않도록 충분히 낮은 경우, 부가의 전력을 절감할 수 있고 또한 후속하는 컨볼루션 유닛(1280)에 대한 입력에서의 지연 스테이지(예컨대, 1132, 1232)의 제거를 가능하게 해줄 수 있다.
도 13은 일부 실시예들에 따른 예시적인 하드웨어를 예시하는 다른 단순화된 블록 다이어그램이다. 예를 들어, CNN ReLU 계층들은 네거티브 입력들에 대응하는 많은 수의 출력 제로들을 생성할 수 있다. 실제로, 네거티브 ReLU 입력들은 이전 계층들(예컨대, 도 13의 예에서 풀링 계층)에 대한 부호 입력(들)을 살펴보는 것에 의해 예측적으로 결정될 수 있다. 부동 소수점 및 정수 산술은 최상위 비트(MSB)에 의해 명시적으로 부호표시될(signed) 수 있으며 따라서, 도 13에 도시된 것과 같이, 컨볼루션 계층에서 곱해질 입력들의 벡터들에 걸친 간단한 비트별(bit-wise) 배타적 OR(XOR) 연산이 어느 곱셈들이 출력 제로들을 생성할 것인지를 예측할 수 있다. 결과적인 부호-예측된 ReLU 비트맵 벡터는, 이상의 다른 예들에서 설명된 방식에서와 같이, 제거할 곱셈들 및 메모리로부터의 연관된 계수 판독들의 서브세트를 결정하기 위한 기초로서 사용될 수 있다.
ReLU 비트맵들의 생성을 이전의 풀링 또는 컨볼루션 스테이지들(즉, 대응하는 ReLU 스테이지 이전의 스테이지들)에 다시 제공하는 것은 부가의 전력을 초래할 수 있다. 예를 들어, 곱셈기들이 ReLU 활성화 로직에 의해 궁극적으로 제로로 설정될 네거티브 출력을 생성할 때 곱셈기들을 디스에이블시키기 위해 부호 예측 로직이 제공될 수 있다. 예를 들어, 이것이 도시되어 있으며 여기서 곱셈기(1314) 입력들(1301 및 1302)의 2개의 부호 비트(1310 및 1315)는 XOR 게이트에 의해 논리적으로 결합되어 PreReLU 비트맵 비트(1303)를 형성한다. 이 동일한 신호는 곱셈기(1314)의 동작을 디스에이블시키는 데 사용될 수 있는데, 예들 중에서도 특히, 곱셈기(1314)는 그렇지 않았으면 다음 컨볼루션 스테이지(1390)에서의 곱셈을 위해 입력되기 전에 ReLU 로직에 의해 제로로 설정될 네거티브 출력을 생성하는 데 불필요하게 에너지를 소비할 것이다.
1300, 1301, 1302, 및 1303의 표현(표기 A)이 도 13에서 B를 부여받은 표현에 도시된 것보다 하이 레벨 뷰를 도시한다는 점에 주의한다. 이 예에서, 블록(1302)에 대한 입력은 2개의 부동 소수점 피연산자를 포함할 수 있다. 입력(1301)은 명시적 부호 비트(1310), 복수의 비트들을 포함하는 가수(Mantissa)(1311), 및 복수의 비트들을 또다시 포함하는 지수(exponent)(1312)를 포함할 수 있다. 이와 유사하게, 입력(1302)도 마찬가지로 부호(1315), 가수(1317), 및 지수(1316)를 포함할 수 있다. 일부 구현들에서, 가수들, 및 지수들은 상이한 정밀도들을 가질 수 있는데, 그 이유는 결과(1303)의 부호가, 제각기, 1301 및 1302, 또는 1310 및 1315의 부호들에만 의존하기 때문이다. 실제로, 1301과 1302 중 어느 것도 부동 소수점 숫자들일 필요는 없지만, 그들이 부호있는 숫자들이고 최상위 비트(MSB)가 사실상 명시적으로 또는 암시적으로 부호 비트인 한(예컨대, 숫자들이 1의 보수 또는 2의 보수인 경우 등), 임의의 정수 또는 고정 소수점 포맷일 수 있다.
도 13의 예를 계속하면, 2개의 부호 입력들(1310 및 1315)은 비트맵 비트(1303)를 생성하기 위해 XOR(때때로 본 명세서에서 대안적으로 ExOR 또는 EXOR로서 표기됨) 게이트를 사용하여 결합될 수 있으며, 비트맵 비트(1303)는 이어서 다음 컨볼루션 블록(예컨대, 1390)에서 생략될 수 있는 다운스트림 곱셈들을 식별하기 위해 하드웨어를 사용하여 프로세싱될 수 있다. 동일한 XOR 출력(1303)은 또한 2개의 입력 숫자(1313(예컨대, 1301에 대응함) 및 1318(예컨대, 1302에 대응함)가 반대 부호들을 갖는 경우에 곱셈기(1314)를 디스에이블시키기 위해 사용될 수 있고, ReLU 블록(1319)에 의해 제로로 설정되어, 후속하는 컨볼루션 스테이지(1390)에 입력될 RELU 출력 벡터(13191)에서 제로 값을 초래할 네거티브 출력(1304)을 생성할 것이다. 그에 따라, 일부 구현들에서, PreReLU 비트맵(1320)이, 병렬로, 비트맵 스케줄러(1360)에게 전송될 수 있으며, 비트맵 스케줄러(1360)는 곱셈들이 컨볼루션 유닛(1390) 상에서 실행(및/또는 생략)되도록 스케줄링할 수 있다. 예를 들어, 비트맵(1320) 내의 모든 제로에 대해, 대응하는 컨볼루션 연산이 컨볼루션 유닛(1390)에서 스킵될 수 있다. 이와 병렬로, 비트맵(1320)이, 컨볼루션 유닛(1390)에서 사용하기 위한 가중치들의 페치를 제어하는, 예시적인 어드레스 생성기(1330)에 의해 소비될 수 있다. 비트맵(1320) 내의 1들에 대응하는 어드레스들의 리스트는 어드레스 생성기(1330)에서 컴파일될 수 있고, DDR 제어기(1350)를 통한 DDR 스토리지(1370)로의 경로를 제어하거나, 온칩 RAM(1380)으로의 경로를 제어한다. 어느 경우든지, 예들 중에서도 특히, PreReLU 비트맵(1320) 내의 1들에 대응하는 가중치들은 (예컨대, 가중치 입력(1371)에 대한 클록 사이클들 면에서의 얼마간의 레이턴시 후에) 페치되어 컨볼루션 블록(1390)에 제시될 수 있는 반면, 제로들에 대응하는 가중치들의 페치들은 생략될 수 있다.
앞서 살펴본 바와 같이, 일부 구현들에서, 어드레스 생성기(1330), DDR 제어기(1350), 및 DDR(1350), 또는 어드레스 생성기(1330) 및 내부 RAM(1380)을 통한 경로를 통한 지연을 밸런싱하기 위해 비트맵 스케줄러(1360)와 컨볼루션 유닛(1390) 사이에 지연(예컨대, 1361)이 개재될 수 있다. 지연은 비트맵 스케줄러에 의해 구동되는 컨볼루션들이 컨볼루션 유닛(1390)에서의 컨볼루션 계산들을 위한 대응하는 가중치들과 시간상 정확하게 정렬(line up)될 수 있게 해줄 수 있다. 실제로, 타이밍의 관점에서, ReLU 블록(1319)의 출력에서보다 더 빨리 ReLU 비트맵을 생성하는 것은 부가의 시간이 얻어질 수 있게 해줄 수 있으며, 이 시간은 메모리(예컨대, RAM(1380) 또는 DDR(1370))에 대한 판독들을, 이들이 어드레스 생성기(1330)에 의해 생성되기 전에, 가로채기하는 데 사용될 수 있으며, 따라서 (예컨대, 제로들에 대응하는) 판독들 중 일부가 보류될 수 있다. 메모리 판독들이 칩 상에서의 논리 연산들보다 훨씬 더 상위일 수 있기 때문에, 그러한 메모리 페치들을 배제시키는 것은, 예시적인 장점들 중에서도 특히, 아주 상당한 에너지 절감을 가져올 수 있다.
일부 구현들에서, 클록 사이클들 면에서의 절감이 DRAM 액세스 시간들을 커버하는 데 여전히 불충분한 경우, 미리 DDR로부터 부호 비트들의 그룹들(예컨대, 1301)을 판독하기 위해 블록 지향 기법들이 사용될 수 있다. 이러한 부호 비트들의 그룹들은 (예들 중에서도 특히, 예컨대, 2D 또는 3D 어레이들/행렬들 간의 2D 또는 3D 컨볼루션에서 부호 비트들 간의 차이들을 계산하기 위해) (다수의) XOR 게이트들(1300)의 세트를 사용하여 PreReLU 비트맵들의 블록들을 생성하기 위해 입력 이미지들 또는 중간 컨볼루션 계층들(1302)로부터의 부호들의 블록들과 함께 사용될 수 있다. 이러한 구현에서, 각각의 가중치의 부호들을 저장하기 위해 DDR 또는 온-칩 RAM 내의 부가의 1-비트의 스토리지가 제공될 수 있지만, 이것은 ReLU 스테이지로부터의 제로와 곱해질 예정인 DDR 또는 RAM으로부터의 가중치들을 판독하는 것조차 피하도록 하는 방식으로 많은 사이클들의 레이턴시가 커버될 수 있게 해줄 수 있다. 일부 구현들에서, DDR 또는 온-칩 RAM 내의 가중치당 부가의 1-비트의 스토리지가 회피될 수 있는데, 그 이유는, 예시적인 고려사항들 및 구현들 중에서도 특히, 부호들이 지수들 및 가수들로부터 독립적으로 어드레싱가능하도록 하는 방식으로 부호들이 저장되기 때문이다.
일 예에서, 시스템은 최대 데이터 전송 레이트를 위한 자연스러운 버스트 액세스를 가질 수 있는 DDR 액세스들을 이용하기 위해 추가로 향상될 수 있다. 개별 DDR 가중치 액세스들을 스킵하는 것에 의해 에너지를 절감하는 것은 이 맥락에서 실현가능하지 않을 수 있는데, 그 이유는 그것들이 버스트보다 짧을 수 있기 때문이다. 그에 따라, 일부 경우들에서, 특정의 버스트 트랜잭션에 대응하는 비트맵 비트들 전부가 제로인 경우들에 버스트들이 스킵될 수 있다. 그렇지만, 이것은 빈번히 발생하지 않을 수 있으며, 따라서 결과적인 전력 및 대역폭 절감이 제한될 수 있다. 또 다른 구현들에서, 비트맵 버스트 내의 N 비트 초과가 제로인 경우 버스트가 완전히 스킵되도록 버스트 내의 비트맵 비트들의 수에 대한 레지스터 프로그래밍가능 임계치가 설정될 수 있다. 이것은 전체적인 CNN 분류 정확도를 약간 열화시키는 효과를 가질 수 있지만, 에너지 절감의 이익을 위해 용인가능할 수 있다.
도 14는 일부 실시예들에 따른 오디오 스트림을 합성하기 위해 (예컨대, 앞서 설명된 것과 같은, 포맷에 따른) 볼륨 데이터가 어떻게 사용될 수 있는지를 예시하고 있다. 일부 증강 현실(AR) 및 혼합 현실(MR) 시스템들에 존재하는 과제는 경험을 보다 현실적이고 몰입적으로 만들기 위해 AR/MR 프레젠테이션에서의 일관성 결여들(inconsistencies)을 해결하는 것이다. 이것은 앞서 설명된 것과 같이, 이미지(예컨대, 가상과 가상, 가상과 실제 등)를 결합시키는 것을 포함할 수 있다. 볼륨 데이터는 AR 및 MR 응용분야들 내에서의 오디오 프레젠테이션들을 향상시키는 데 또한 사용될 수 있다. 예를 들어, 도 14에 도시된 다이어그램은 오디오 광선 캐스터(1450)를 사용하여 볼륨 모델로부터 잔향 모델을 생성하는 것 및 볼륨 모델에 대응하는 출력 파형들을 생성하기 위해 오디오 광선 캐스터에 의해 생성된 모델을 통해 라이브 또는 미리 녹음된 오디오(1440)를 전달하는 것에 의해 라우드스피커들(1460), 헤드폰들(1470), 또는 다른 스피커들에 대한 오디오 스트림을 합성하기 위한 (예컨대, 앞서 논의된 것과 같이 포맷팅된) 볼륨 데이터의 예시적인 사용을 예시하고 있다. 도 14의 특정의 예에서, (이전에 설명된 것과 같은) ISP 파이프라인(1420)에 접속되는, 복수의 이미지 센서들(1410)이 제공될 수 있으며, ISP 파이프라인(1420)의 출력들은 (이전에 설명된 것과 같은) SLAM 파이프라인(1430)에 피드된다. 이미지 센서들(1410)은, 예들 중에서도 특히, 수동 스테레오 쌍들, 구조화된 광 또는 비행 시간 능동 IR 카메라들을 포함할 수 있다.
1441, 1442, 1443, 및 1444에서 상세 레벨 및 비트들의 오름차순으로(in ascending level of detail and bits) 도시된 바와 같은 (렌더링의 속도에 대한) 상이한 상세 레벨들에서의 복수의 오디오 모델들이 8진트리 기반 볼륨 모델(1431)로부터 생성될 수 있다. 실제로, 동일한 볼륨 모델이 상이한 라우드스피커 위치들에 대한 모델들을 생성하는 데 사용될 수 있으며, 따라서 스테레오 쌍들 및 헤드폰들을 포함한, 스테레오 및 서라운드 사운드를 포함하는 다수의 라우드스피커들이 지원될 수 있다. 모델들은 온 더 플라이로(on the fly) 완전한 모델들로서 생성될 수 있거나, 또는 실제로 볼륨 모델에 의해 모델링된 장면에서의 청취자의 현재 위치에 기초하여 음장(sound field)에 기여할 수 있는 광선들을 고려하는 최종 합산 스테이지를 사용하여 적절하게 그리고 동적으로 결합될 수 있는 지오메트리의 재사용가능 슬라이드들을 사용하여 구축될 수 있다.
도 15는 일부 실시예들에 따른 지오메트리에 기초한 그러한 재사용가능 잔향 필터 요소의 일 예를 도시하고 있다. 도 15의 특정의 예에서, 도 14의 예시적인 피라미드 구조(1400)의 단면도가 고려된다. 피라미드는 8진트리 기반 볼륨 모델에 의해 모델링될 수 있고, 볼륨 모델은 피라미드 구조(1400)의 치수 및 특성들과 부합하는 오디오 잔향 모델을 생성하는 데 이용될 수 있다. 이 예에서, 오디오 잔향 모델의 생성은 계단들(1504)의 높이(1503) 및 깊이는 물론, 피라미드의 첫 번째 계단(1502)에 상대적인 관찰자 거리 및 배향에 주로 기초할 수 있다. 잔향은 이 첫 번째 계단은 물론 피라미드에서의 다른 계단들 전부에 대해 모델링될 수 있다. 이러한 모델링된 잔향들은 청취자의 귀에서(예컨대, 잔향 모델링 회로부 또는 다른 로직에 접속된 스피커들(1505)을 통해) 다시 합산될 수 있다. 잔향 모델에 대한 입력은 마이크로폰, 미리 녹음된 오디오 스트림, 또는 다른 사운드(1500)를 통해 캡처된 라이브 환경으로부터의 오디오 스트림을 포함한, 특정의 노이즈(예컨대, 박수, 음성, 또는 다른 오디오)일 수 있다.
도 16은 4x4 볼륨 큐브(1600) 및 결정된 관찰자 위치(1601)에 기초하여 일부 실시예들에 따른 예시적인 볼륨 모델로부터의 유한 임펄스 응답(finite impulse response)(FIR) 잔향 필터의 예시적인 생성을 예시하고 있다. 광선들 중 하나의 관점에서, 음파의 전파는 각각의 복셀 볼륨(1619 내지 1612)을 통한 그의 전파를 고려함으로써 모델링될 수 있고, 시스템은 공기를 통한 사운드의 통과에 대응하는 전파 계수에 의해 음파의 감쇠를 모델링한다. 이 예를 계속하면, 모델링된 사운드는 (도 14 및 도 15의 예에서의 피라미드 모델의 첫 번째 계단(1611)과 같은) 볼륨 모델의 제1 부분(1610)에서 반사되는 것으로서 모델링될 수 있으며, 반사 계수는 복셀(1610)에 의해 모델링된 객체의 재료에 대응한다. 예를 들어, 이전의 예에서, 복셀(1610)은 석회석 피라미드의 표면을 표현할 수 있고, 볼륨 모델 또는 연관된 데이터는 석회석(예컨대, 피라미드 표면의 재료)에 대한 반사 계수가 사운드가 피라미드로부터 어떻게 반사될 것인지를 결정하는 데 사용되어야 한다는 것을 지정한다. 이 예를 계속하면, 모델링된(그리고 현재 감쇠된) 감쇠된, 반사된 파의 전파는 복셀들(예컨대, 1612 내지 1618)을 관찰자 위치(1619)까지 다시 재트래버스(re-traverse)하도록 추가로 모델링될 수 있으며, 여기서 신호는, 예들 중에서도 특히, 복셀들(예컨대, 1612 내지 1618)에 의해 모델링된 매체(예컨대, 공기, 벽, 물, 유리 등)의 반사 및 감쇠에 기초하여 추가로 모델링될 수 있다.
일 실시예에서, 도 16에 예시된 구조는 FIR 필터로서 직접 전사될(transcribed) 수 있고 여기서 입력 오디오 샘플들은 1620에 들어가고, 제1 복셀(c1)(1620)을 통해 전파와 곱해지며, 하나의 복셀(1622)에 대한 전파 계수에 의해 감쇠되기 전에 지연 스테이지(1 복셀)(1621)를 통과하고, 최종 출력 샘플이 1630에서 FIR 필터를 빠져나올 때까지 이하 마찬가지이다. 모든 복셀 계수들이 동일하다는 것은 FIR 필터의 집중 버전(lumped version)이 구축될 수 있게 해주며 여기서 지연들 및 곱셈기들의 수의 절반이 사용되고, 변경되지 않는 돌 피라미드로부터의 반사 계수(1642)를 제외하고는, 각각의 지연 요소(1641)는 2배 길고 각각의 곱셈기 계수(1640)는 2배 크다. 환언하면, 그러한 경우들에서, N개의 반사 계수가 합산되고 각각의 곱셈을 개별적으로 수행하기보다는 집중 곱셈(lumped multiplication)이 수행될 수 있다. 그러한 합산은 각각의 반사에 대해 정적으로 행해질 수 있다(예컨대, 볼륨 데이터 구조에 의해 모델링된 지오메트리와 대조하여 광선 캐스팅을 통해 결정됨). 예를 들어, 지연들(1661) 전부 및 모든 전파 계수들(1660)은 14D 지연 요소 및 14x C1 전파 계수를 갖는 완전히 최적화된 FIR 필터로 집중될 수 있지만, 이 접근법은 벡터화가능하지 않을 수 있으며, 이는 벡터 프로세서 또는 벡터화된 하드웨어 상에서 비효율을 나타낼 수 있다. FIR 잔향 필터의 벡터화된 구현을 위해, 도 17의 예시적인 다이어그램에 도시된 것과 같이, 동일한 4x4 볼륨이 1704에서 4개의 벡터화된 출력을 합산하고 출력 샘플들을 라우드스피커 또는 헤드폰들(1705)에 출력하기 전에 4개의 벡터 연산(1700 내지 1703)에서 각각이 4개의 요소의 폭인 수평 스트립들로 광선 트레이싱될 수 있다. 그에 따라, 도 17은 일부 실시예들에 따른 FIR 잔향 필터의 벡터화된 구현을 도시하고 있다.
도 18을 살펴보면, 조건 실행(predicated execution)을 갖는 일부 실시예들에 따른 벡터화된 프로세싱을 사용하는 광선 캐스팅을 예시하는 다이어그램이 도시되어 있으며, 여기서 프로세서는 적어도 4개의 기능 유닛; 3개의 가능한 산술 정밀도(fp32, fp16 또는 uint8) 중 하나에서 벡터 산술 유닛(vector arithmetic unit)(VAU)(1807) 상에서 레인별 조건 연산들(per-lane predicated operations)을 수행할 수 있는 조건 실행(predicated execution)(PEU)(1805) 및 스칼라 산술 유닛(scalar arithmetic unit)(SAU)(1808)을 가지며, 이들 전부는, 한 번에 하나의 벡터씩, 볼륨에서의 복셀들의 수(깊이)를 단계별로 진행하는(steps through) 브랜치 및 반복 단위(branch and repeat unit)(BRU)의 제어 하에 있다. 일부 구현들에서, 벡터 산술 면에서, MP3 오디오에 대해 16-비트 부동 소수점 피연산자들로 충분할 수 있으며(32-비트 부동 소수점(fp32)은 임의적임), 그로써 VAU(1807)를 통해 처리량이 2배로 될 수 있게 해준다. 실제로 원칙적으로, 피제수(dividend)의 역수에 의한 부호없는 정수(예컨대, u8) 곱셈을 갖는 분수 표현이 또한 많은 경우들에서 이용될 수 있어, 가능한 예시적인 구현들 중에서도 특히, VAU 처리량이 fp32 모드와 관련하여 거의 4 배로 될 수 있게 해준다.
프레디케이션 유닛(predication unit)(1803)에 대한 입력은 메모리로부터 판독된 볼륨 데이터 구조로부터 비트-벡터를 선택함으로써 구성될 수 있으며, 이 입력은, 이전에 설명된 바와 같이, 각각이 64-비트 정수들로 표현되는 4^3개의 복셀 서브볼륨들로 구성될 수 있다. fp32 산술의 경우에, 4-비트 폭 벡터들이 1800에서의 4^3 볼륨 정보로부터 행 단위로(row by row) 선택될 수 있다. 16-비트 산술의 경우에, 1801의 2개의 서브볼륨, 즉 18011 및 18012로부터의 2개의 4-비트 벡터가 연결 유닛(concatenation unit)(18031)에 의해 연결되어 8-비트 프레디케이션 벡터(1803)를 만들 수 있다. 마지막으로, 8-비트 산술의 경우에, 16-비트 프레디케이션 벡터(1802)는 1802, 즉 18021, 18022, 18023 및 18024의 서브볼륨들로부터의 4개의 4-비트 벡터를 연결함으로써 연결 유닛(18031)에 의해 구성될 수 있으며, 이하 마찬가지이다. 산술 표현과 상관없이, 레인별 프레디케이션은 단일 사이클에서 벡터에 걸쳐 병렬로 평가될 4, 8 또는 16개의 복셀을 갖는 복셀 지오메트리에 걸쳐 벡터화가 사용될 수 있게 해준다.
하나의 예시적인 구현에서, PEU(1805)에 의한 VAU(1807)의 프레디케이션은 다음과 같이 1803에서 4, 8 또는 16개의 복셀 폭의 청크들에서의 볼륨 데이터에 대해 연산한다:
종료(Exit) - 벡터에 걸쳐 만나게 된 모든 1들이 비트맵 1 비트들 각각을 레지스터의 이전 내용과 OR 연산하는 것에 의해 유지될 때 루프를 돌고 전파를 중지하며 레지스터가 모두 1들을 포함할 때 루프를 중지함.
광선 캐스팅 프로세스에서의 추가의 최적화는 원점으로부터 복셀들에 걸쳐 일정 각도에서의 광선-트레이싱을 위해 요구된 2D 보간을 분해함으로써 구현될 수 있다. 복셀 볼륨에 걸쳐 X 및 Y 차원들에서의 2D 보간은 복셀의 중심으로부터의 거리에 의존하는 제2 x-컴포넌트를 갖는 벡터에 걸쳐 공통인 별개의 공통 y-컴포넌트로 분해될 수 있다.
본 명세서에서 논의된 것과 같은, 복셀 표현들은 오디오에 대해서뿐만 아니라 다른 응용분야들에 대해서도 광선 캐스팅 연산들을 향상시키는 데 이용될 수 있다. 일부 경우들에서, 물리학 또는 광 전파에서 사용되는 광선 캐스팅은 공기의 매체를 통해 신호의 감쇠가 없을 수 있다는 점에서 오디오에 대한 광선 캐스팅과 상이할 수 있지만, 유체들의 경우 공기에 대해 이전에 개략적으로 설명된 바와 동일한 광선 캐스팅 메커니즘이 물리학 또는 광 전파에 대해 사용될 수 있다. 그에 따라, 매체로서 공기를 사용한 광/물리학 광선 캐스팅을 위한 프레디케이션 메커니즘은, 예를 들어, 다음과 같이 구현될 수 있다:
종료 - 벡터에 걸쳐 만나게 된 모든 1들이 비트맵 1 비트들 각각을 레지스터의 이전 내용과 OR 연산하는 것에 의해 유지될 때 루프를 돌고 전파를 중지하며 레지스터가 모두 1들을 포함할 때 루프를 중지함.
도 19는 일부 실시예들에 따른 예시적인 다중 슬롯 벡터 프로세서(예컨대, VLIW(very long instruction word) 벡터 프로세서)를 표현하는 간략화된 블록 다이어그램이다. 이 예에서, 벡터 프로세서는 벡터 레지스터 파일(vector register file)(VRF)(1901) 및 일반 레지스터 파일(general register file)(GRF)(1902)에 의해 백업되는, 다중-포트 메모리 시스템(multi-ported memory system)(1900)에 의해 피드될 수 있는, 다수의(예컨대, 9개의) 기능 유닛들(예컨대, 1903 내지 1911)을 포함할 수 있다. 프로세서는 명령어들을 디코딩하고 기능 유닛들(1903 내지 1911)을 제어하는 제어 신호들을 생성하는 명령어 디코더(IDEC)(1912)를 포함한다. 기능 유닛들(1903 내지 1911)은 조건 실행 유닛(PEU)(1903), 브랜치 및 반복 유닛(BRU)(1904), 로드 저장 포트 유닛들(load store port units)(예컨대, LSU0(1905) 및 LSU1(1906)), 벡터 산술 유닛(VAU)(1907), 스칼라 산술 유닛(SAU)(1910), 비교 및 이동 유닛(compare and move unit)(CMU)(1908), 정수 산술 유닛(integer arithmetic unit)(IAU)(1911), 및 볼륨 가속 유닛(volumetric acceleration unit)(VXU)(1909)이다. 이 특정의 구현에서, VXU(1909)는 저장/검색 연산들, 논리 연산들, 및 산술 연산들 전부를 포함한, 볼륨 데이터에 대한 연산들을 가속화할 수 있다. VXU 회로(1909)가 도 19의 예에서 통합된 컴포넌트(unitary component)로서 도시되어 있지만, VXU의 기능(은 물론 다른 기능 유닛들(1903 내지 1911)의 기능)이 다수의 회로 사이에 분산될 수 있음이 인식되어야 한다. 게다가, 일부 구현들에서, VXU(1909)의 기능은, 예시적인 구현들 중에서도 특히, 일부 구현들에서, 프로세서의 다른 기능 유닛들(예컨대, 1903 내지 1908, 1910, 1911) 중 하나 이상 내에 분산될 수 있다.
도 20은 일부 실시예들에 따른 VXU(2000)의 예시적인 구현을 예시하는 단순화된 블록 다이어그램이다. 예를 들어, VXU(2000)는 벡터 레지스터 파일(1901) 또는 일반 레지스터 파일(1902) 중 어느 하나로부터의 입력들을 수용하기 위한 적어도 하나의 64-비트 입력 포트(2001)를 제공할 수 있다. 이 입력은 레지스터 파일(2003), 어드레스 생성기(2004), 포인트 어드레싱 로직(2005), 포인트 삽입 로직(2006), 포인트 삭제 로직(2007), X 차원에서의 3D 대 2D 투영 로직(2008), Y 차원에서의 3D 대 2D 투영 로직(2009), X 차원에서의 3D 대 2D 투영 로직(2010), 2D 히스토그램 피라미드 생성기(2011), 3D 히스토피라미드 생성기(3D histopyramid generator)(2012), 집단 카운터(2013), 2D 경로 탐색 로직(2014), 3D 경로 탐색 로직(2015) 및 어쩌면 64-비트 부호없는 정수 볼륨 비트맵들에 대해 연산하기 위한 부가의 기능 유닛들을 포함한 복수의 기능 유닛들에 접속될 수 있다. 블록(2002)으로부터의 출력은 벡터 레지스터 파일(VRF)(1901) 또는 일반 레지스터 파일(GRF)(1902) 레지스터 파일들 중 어느 하나에 라이트백(write back)될 수 있다.
도 21의 예를 살펴보면, 4^3 복셀 큐브(2100)의 구성의 표현이 나타내어져 있다. 제2 복셀 큐브(2101)가 또한 나타내어져 있다. 이 예에서, 복셀 큐브는 데이터에서 64-비트 정수(2102)로서 정의될 수 있으며, 여기서 큐브 내의 각각의 단일 복셀은 64-비트 정수 내의 단일 대응 비트에 의해 표현된다. 예를 들어, 어드레스 {x, y, z} = {3,0,3}에 있는 복셀(2012)은 복셀 큐브(2101)에 의해 표현된 볼륨 공간 내의 그 좌표에서의 지오메트리의 존재를 지시하기 위해 "1"로 설정될 수 있다. 게다가, 이 예에서, (복셀(2102) 외의) 모든 다른 복셀들은 "비어 있는" 공간에 대응할 수 있고, 예들 중에서도 특히, 그 좌표들에서의 물리적 지오메트리의 부재를 지시하기 위해 "0"으로 설정될 수 있다. 도 22를 참조하면, 일부 실시예들에 따른 예시적인 2-레벨 희소 복셀 트리(2200)가 예시되어 있다. 이 예에서, 단 하나의 "점유된" 복셀이 볼륨 내에(예컨대, 위치 {15,0,15}에) 포함된다. 트리(2201)의 상위 레벨-0은 이 경우에 단일 복셀 엔트리 {3,0,3}를 포함한다. 그 복셀은 차례로 요소 {3,0,3}에 단일 복셀을 포함하는 트리(2202)의 다음 레벨을 가리킨다. 희소 복셀 트리의 레벨 0에 대응하는 데이터 구조 내의 엔트리는 하나의 복셀이 점유된 것으로 설정된 64-비트 정수(2203)이다. 설정된 복셀은 64-비트 정수들의 어레이가 이어서 2203에서의 설정된 복셀 볼륨에 대응하는 트리의 레벨 1에 할당됨을 의미한다. 레벨 1 서브어레이(sub-array)(2204)에서, 복셀들 중 하나만이 점유됨으로 설정되고 모든 다른 복셀들은 비점유됨(unoccupied)으로 설정된다. 이 예에서, 트리가 2-레벨 트리이기 때문에, 레벨 1은 트리의 하부를 나타내며, 따라서 계층구조가 여기서 종료된다.
도 23은 특정의 볼륨의 위치들 {15,0,3} 및 {15,0,15}에 점유된 복셀들을 포함하는 일부 실시예들에 따른 2-레벨 희소 복셀 트리(2300)를 예시하고 있다. 이 경우에 (특정의 볼륨을 64개의 상부 레벨-0 복셀로 세분화하는) 트리(2301)의 상부 레벨-0은 2개의 복셀이 세트되어(set)(또는 점유되어) 있음을 보여주는 대응하는 데이터(2304)를 갖는 2개의 복셀 엔트리 {3,0,0} 및 {3,0,3}을 포함한다. 희소 복셀 트리(SVT)의 다음 레벨은, 레벨 0에서의 세트된 각각의 복셀에 대해 하나씩, 2개의 서브큐브(sub-cube)(2302 및 2303)를 포함하는 64-비트 정수들의 어레이로서 제공된다. 레벨 1 서브어레이(2305)에서, 2개의 복셀(v15 및 v63)은 점유됨으로서 설정되고, 모든 다른 복셀은 비점유됨 및 트리로서 설정된다. 이 포맷은 유연한데, 그 이유는 트리의 다음 레벨에 있는 64개의 엔트리가 항상 트리의 상위 계층에 있는 각각의 설정된 복셀에 대응하여 할당되기 때문이다. 이러한 유연성은, 상위 계층들에 있는 대응하는 복셀이 세트되어 있는 한, 동적으로 변하는 장면 지오메트리가 (즉, 랜덤하게와 같이, 고정된 순서로가 아니라) 유연한 방식으로 기존의 볼륨 데이터 구조에 삽입될 수 있게 해줄 수 있다. 그렇지 않은 경우, 포인터들의 테이블이 유지되어, 보다 높은 메모리 요구사항들을 가져오거나, 예기치 못한 지오메트리를 삽입하기 위해 트리가 적어도 부분적으로 재구축될 필요가 있을 것이다.
도 24는 일부 실시예들에 따른 도 23으로부터의 복셀들을 저장하기 위한 대안의 기법을 예시하고 있다. 이 예에서, 전체적인 볼륨(2400)은 도 23에서와 같이 전역 좌표들(global coordinates) {15,0,3} 및 {15,0,15}에 저장된 2개의 복셀을 포함한다. 이 접근법에서, 레벨 0 아래의 레벨 1에 있는 서브큐브들 전부를 표현하기 위해 64-엔트리 어레이를 할당하기보다는, (예컨대, 대응하는 레벨 0 복셀들이 점유되어 있는지 여부에 의해 지시되는 바와 같이) 지오메트리를 실제로 포함하는 레벨 1에 있는 그 요소들만이 대응하는 64-비트 레벨 1 레코드들로서 할당되며, 따라서, 이 예에서, 레벨 1은 (즉, 점유되어 있든 비어 있든 간에, 64개 레벨-1 복셀 각각에 대해) 64개가 아닌 단지 2개의 64-비트 엔트리를 갖는다. 그에 따라, 이 예에서, 제1 레벨 0(2404)은 도 23에서의 2304와 동등한 반면, 다음 레벨(2405)은 도 23에서의 대응하는 2305보다 메모리 요구사항 면에서 62배 더 작다. 일부 구현들에서, 레벨 1에서 공간이 할당되지 않았던 레벨 0에 새로운 지오메트리가 삽입되어야 하는 경우, 트리가 복사되고 재배열될 필요가 있다.
도 24의 예에서, 서브볼륨들은 현재의 계층 위의 계층에서의 점유된 복셀들을 카운트함으로써 도출될 수 있다. 이러한 방식으로, 시스템은, 복셀 데이터에서, 어디에서 하나의 상위 계층이 종료되고 다음 하위 계층이 시작되는지를 결정할 수 있다. 예를 들어, 3개의 계층-0 복셀이 점유되어 있는 경우, 시스템은 복셀 데이터에서 3개의 대응하는 계층-1 엔트리가 뒤따를 것이고 (이들 3개 이후의) 다음 엔트리가 계층 2에 있는 첫 번째 엔트리에 대응하며, 이하 마찬가지일 것으로 예상할 수 있다. 그러한 최적의 압축(compaction)은 장면의 특정 부분들이 시간이 지남에 따라 변하지 않는 경우 또는 응용분야에서 볼륨 데이터의 원격 전송이 요구되는 경우, 말하자면, 매 비트가 전송하는 데 많은 비용이 들고 시간이 소요되는 명왕성의 표면을 스캔하는 우주 탐사선으로부터, 매우 유용할 수 있다.
도 25는 일부 실시예들에 따른, 대응하는 볼륨 내의 지오메트리에 대한 변화를 반영하기 위해, 64 비트 정수 볼륨 데이터 구조 엔트리로서 표현되는 4^3 큐브에 복셀이 삽입될 수 있는 방식을 예시하고 있다. 일 예에서, 각각의 복셀 큐브는 2500에 도시된 바와 같이 64-비트 정수 내에서 4개의 논리 16-비트 평면으로서 조직화될 수 있다. 예시적인 구성들 중에서도 특히, 평면들 각각은 Z 값들(0 내지 3)에 대응하고, 각각의 평면 내에서 각각의 y-값은 4개의 논리 4-비트 변위(0 내지 3)에 대한 코드들에 대응하며, 마지막으로 각각의 4 비트 y 평면 내에서, 각각의 비트는 4개의 가능한 x 값(0 내지 3)에 대한 코드들에 대응한다. 따라서, 이 예에서, 복셀을 4^3 볼륨에 삽입하기 위해서는, 먼저 1 비트가 x-값(0 내지 3)만큼 시프트될 수 있고, 이어서 그 값은 y-값을 인코딩하기 위해 0/4/8/12 비트만큼 시프트될 수 있으며, 마지막으로 z-값은 2501에서의 C-코드 표현식(C-code expression)에 보여지는 바와 같이 0/16/32/48 비트의 시프트에 의해 표현될 수 있다. 마지막으로, 각각의 64-비트 정수가, 각각이 개별적으로 기입되는, 최대 64개의 복셀의 조합일 수 있기 때문에, 새로운 비트맵은 2502에 보여진 바와 같이 이전의 비트맵 값과 새로운 비트맵 값을 OR 연산함으로써 희소 복셀 트리로부터 판독된 이전의 64-비트 값과 논리적으로 결합되어야만 한다.
도 26은 일부 실시예들에 따른 64-비트 정수에 의해 표현되는 4^3 큐브에 복셀을 삽입하는 로직을 예시하고 있다. 이 로직은 3개의 멀티플렉서 계층으로 이루어져 있다. 제1 멀티플렉서(2603)는 2-비트 x 입력(2600)에 따라 x에서의 복셀의 위치를 인코딩할 수 있고 그 결과 제1 mux의 4-비트 출력(2604)에 대해 0, 1, 2 또는 3 비트만큼의 x의 유효 시프트(effective shift)를 가져온다. 제2 mux(2605)는 y-입력(2601)에 따라 0, 4, 8 또는 12 비트만큼 제1 mux의 4-비트 출력(2604)을 시프트시키고, 그 결과 16-비트 멀티플렉서 출력 값(2606)이 얻어진다. 최종 멀티플렉서(2607)는 z-입력(2602)에 따라 제2 멀티플렉서의 출력(2606)을 0, 16, 32 또는 48 비트만큼 시프트시키며, 따라서 제3 멀티플렉서의 64-비트 출력(2608) 상에서의 x, y 및 z에서의 복셀의 위치를 인코딩한다. 예시적인 구현들 중에서도 특히, 제3 mux의 출력(2608)은 64-비트 정수(2609)에 의해 표현되는 4^3 볼륨에 대한 비트맵의 이전 값과 2610에 의해 논리적으로 OR 연산될 수 있고, 복셀 비트맵(2608)에 대한 1-비트 업데이트가 따라서 레지스터 파일에 라이트백될 준비가 된 볼륨(2611)에 대한 업데이트된 64-비트 비트맵에서의 정확한 위치에 나타날 것이다.
도 27은 복셀 삽입, 삭제 및 검색(존재 검출)을 수행하는, 일부 실시예들에 따른 멀티플렉서들을 제어하는 6-비트 어드레스 트리플렛(address triplet)을 생성하기 위한 로직을 예시하고 있다. 이 예에서, 희소 복셀 트리에서 삽입될, 검색될, 테스트될, 기타 등등을 위한 복셀의 16-비트 x, y 및 z 어드레스들은 x, y 및 z의 각각에 대한 3개의 16-비트 어드레스 및 그에 뒤이은 64 비트로 패딩 아웃(padding out)하기 위한 16개의 제로의 미사용 필드로 이루어진 패킹된 64-비트 입력 값(2700)으로서 어드레스 포맷팅 로직(2705)에 제시된다. 어드레스 포맷팅 로직(1605)은 시프트 입력(2704)에 따라 16-비트 X, Y 및 Z 어드레스들로부터 2 비트를 선택하는 3개의 동일한 선택 블록(2706, 2707 및 2708)으로 이루어져 있다. 3개의 2-비트 어드레스인 xm(2712), ym(2713) 및 zm(2714) 어드레스들은 이어서 도 27 및 이전 단락에서의 부수 설명에 설명된 바와 같이 x, y 및 z 멀티플렉서 레벨들(2715, 2717 및 2719)에 인가된다.
도 28은 16-비트 입력 어드레스(2802)로부터 sel[3:0] 입력(2801)에 의해 지정된 SVT 레벨에 대한 2-비트 어드레스 출력 어드레스(2824)를 생성하기 위한 일부 실시예들에 따른 어드레스 선택 로직을 예시하고 있다. 4-비트 sel[3:0] 입력(2801)의 디코딩은 진리표(truth table)(2825)에 따라 이진 대 원-핫 디코더(binary-to-one-hot-decoder)(2803)에서 수행될 수 있다. 원 핫 디코더에서, 출력 라인들(I0 내지 I6(2804 내지 2810)) 중 하나만이 임의의 한 시간에서 하이일 수 있고 모든 다른 출력들은 제로이다. 원-핫-디코더(2803)로부터의 레벨이 하이인 경우, 현재 멀티플렉서 레벨에 대한 입력 어드레스 쌍이 선택되고, 그렇지 않은 경우, 이전 멀티플렉서 레벨로부터의 출력이 선택된다. 멀티플렉서 트리에서, 제1 레벨은 하이인 경우 어드레스 비트 쌍 a1:a0을 그리고 로우인 경우 a3:a2을 선택하도록 하이인 경우 멀티플렉서 쌍(2811)을 제어하는 디코더 출력 I6(2806)에 의해 제어되며, 선택된 멀티플렉서 입력들의 쌍은 l5 mux 쌍(2813)에 차례로 접속된 출력 쌍(2812) 상에 나타난다. 제2 레벨의 멀티플렉서들(2813)은 하이인 경우 이전 mux 쌍(2812)의 출력을 선택하는 선택 라인 I5(2805)에 의해 제어되거나, 또는 그렇지 않고 2805가 로우인 경우 a5:a4 어드레스 쌍이 선택된다. 디코딩은 2-비트 출력 어드레스 쌍들 [1:0](2824)을 생성하는 최종 멀티플렉서 스테이지(2823)까지 유사한 방식으로 계속된다.
도 29를 살펴보면, 일부 실시예들에 따라, 64-비트 정수(2900)에 저장된 3D 볼륨 객체가 어떻게 2D 패턴(2901)을 생성하기 위해 X 방향으로, 2D 출력(2902)을 생성하기 위해 Y-방향으로, 그리고 마지막으로 2903에 도시된 패턴을 생성하기 위해 Z-방향으로 논리 OR 연산하는 것에 의해 투영될 수 있는지를 예시하기 위한 표현이 도시되어 있다. 도 30은, 일부 실시예들에 따라, 입력된 64-비트 정수로부터의 비트들이 어떻게 X, Y 및 Z에서의 출력 투영들을 생성하기 위해 논리적으로 OR 연산되는지를 예시하고 있다. 이 예에서, 테이블(3001)은 입력 벡터(3000)로부터의 어느 요소 인덱스들이 x-투영 출력 벡터(3002)를 생성하기 위해 OR 연산되는지를 열 단위로(column-wise) 보여주고 있다. 테이블(3003)은 입력 벡터(3000)로부터의 어느 요소 인덱스들이 y-투영 출력 벡터(3004)를 생성하기 위해 OR 연산되는지를 열 단위로 보여주고 있다. 마지막으로 테이블(3005)은 입력 벡터(3000)로부터의 어느 요소 인덱스들이 z-투영 출력 벡터(3006)를 생성하기 위해 OR 연산되는지를 열 단위로 보여주고 있다.
X-투영은 입력 데이터(3000)로부터의 비트 0, 비트 1, 비트 2, 비트 3을 논리적으로 OR 연산하여 X-투영(3001)의 비트 0을 생성한다. 예를 들어, 3001에서의 비트 1은 3000으로부터의 비트 4, 비트 5, 비트 6 및 비트 7을 OR 연산함으로써 생성될 수 있고, 이하 마찬가지이다. 이와 유사하게, Y-투영(3004)에서의 비트 0은 3000의 비트 0, 비트 4, 비트 8 및 비트 12를 함께 OR 연산함으로써 생성될 수 있다. 그리고 3004의 비트 1은 3000의 비트 1, 비트 5, 비트 9 및 비트 13을 OR 연산함으로써 생성되고, 이하 마찬가지이다. 마지막으로, Z-투영(3006)에서의 비트 0은 3000의 비트 0, 비트 16, 비트 32 및 비트 48를 함께 OR 연산함으로써 생성된다. 그리고 3006의 비트 1은 3000의 비트 1, 비트 17, 비트 33 및 비트 49를 OR 연산함으로써 생성될 수 있고, 이하 마찬가지이다.
도 31은 일부 실시예들에 따른 Z 방향에서의 3D 대 2D 투영의 하드웨어 구성을 도시하고 있다. 이 특정의 예에서, 하드웨어는 입력 64-비트 레지스터(3100)를 포함할 수 있으며, 그의 출력들은 16개의 4-입력 OR 게이트(3101, 3102 등)의 어레이에 접속되고, 3101의 출력은 출력 Z-투영(3104)에서의 비트 0에 접속되며, 3102의 출력은 3104에서의 비트 1에 접속되고, 이하 마찬가지이다. 투영 하드웨어를 사용하여 X, Y 또는 Z에서의 다수의 복셀-큐브들에 걸쳐 투영들을 결합함으로써, 전체 볼륨들에 대한 X, Y 또는 Z에서의 투영들이 생성될 수 있다. 부가적으로, 예들 중에서도 특히, 그렇게 원하는 경우 4^3 큐브로부터의 1 내지 4 레벨들이 논리 OR로부터 마스크 아웃될(masked out) 수 있게 해주기 위해 마스킹 로직을 추가하는 것이 간단할 것이며, 따라서 X/Y/Z 투영들에서 단일 복셀 입도가 있다.
도 32는 일부 실시예들에 따른 단순화된 맵들을 생성하기 위해 투영들이 어떻게 사용될 수 있는지의 일 예를 도시하고 있다. 이 시나리오에서, 목표는 복셀 볼륨(3202)으로부터 높이(h)(3201)과 폭(w)(3201)의 차량(3200)이 따라가는 경로들의 콤팩트한 2D 맵을 생성하는 것일 수 있다. 여기서, Y-투영 로직은 복셀 볼륨(3202)으로부터 초기의 조잡한 2D 맵(3203)을 생성하는 데 사용될 수 있다. 일부 구현들에서, 특정의 치수의 특정의 차량(예컨대, 자동차(또는 자율 자동차), 드론 등)이 경로의 폭(3201) 및 높이 제약조건들(3201)을 통과할 수 있는지를 체크하기 위해 맵이 프로세싱될 수 있다. 이것은 폭 제약조건(3201)을 체크하기 위해 Z에서의 투영들을 수행함으로써 경로들이 통과가능하도록 보장하기 위해 수행될 수 있으며, 계산들을 차량(3201)의 높이로 제한하기 위해 Y에서의 투영들이 마스킹될 수 있다. (예컨대, 소프트웨어에서의) 부가의 포스트 프로세싱을 사용하여, 통과가능하고 폭 및 높이 제약조건들을 충족시키는 경로들에 대해, 차량이 이동할 수 있는 적법한 경로들을 완전히 재구성하기 위해 경로를 따라 있는 지점들(A(3204), B(3205), C(3206), D(3207), E(3208) 및 F(3209))의 X 및 Z 좌표들만이 저장되거나 네트워크를 통해 전송될 수 있다. 경로가 그러한 구분적 세그먼트들로 분해될(resolved) 수 있는 것을 감안하여, 경로의 구분적 선형 섹션당 1 바이트 또는 2 바이트만을 사용하여 경로를 완벽하게 기술하는 것이 가능하다. 이것은, 예들 중에서도 특히, (예컨대, 자율 차량에 의한) 그러한 경로 데이터의 빠른 전송 및 프로세싱에 도움이 될 수 있다.
도 33은 LIDAR 또는 다른 고가의 수단을 사용하여 정밀 측정들을 행하는 것에 대한 대안으로서 고품질의 크라우드소싱된 맵들을 생성하기 위해 수학적 수단에 의해 일부 실시예들에 따라 임베디드 디바이스들로부터의 볼륨 3D 또는 단순 2D 측정들이 어떻게 집계될 수 있는지를 예시하고 있다. 제안된 시스템에서, 복수의 임베디드 디바이스들(3300, 3301 등)은 중앙 서버(3310)로 전송될 수 있는 측정들을 취할 수 있는 다양한 센서들을 갖추고 있을 수 있다. 서버 상에서 실행되는 소프트웨어는 측정들 전부의 집계(3302)를 수행하고 결과적인 행렬의 비선형 솔버(non-linear solver)(3303)에 의한 수치 솔브(numerical solve)를 수행하여 고도로 정확한 맵을 생성하며, 이 맵은 이어서 다시 임베디드 디바이스들에 재분배될 수 있다. 실제로, 데이터 집계는 위성들(3320), 공중 LIDAR 측량들(3321) 및 지상 LIDAR 측정들(3322)로부터의 고 정확도 측량 데이터를, 이러한 고 충실도 데이터 세트들이 이용가능한 경우 결과적인 맵들의 정확도를 증가시키기 위해, 또한 포함할 수 있다. 일부 구현들에서, 맵 및/또는 기록된 측정들은, 예시적인 구현들 중에서도 특히, 본 명세서에 설명된 것과 같은 포맷들을 갖는 희소 복셀 데이터 구조들로 생성되거나, 그것들로 변환되거나, 또는 그것들을 사용하여 다른 방식으로 표현될 수 있다.
도 31에서의 투영 로직이 X, Y 및 Z에서의 동시 투영들을 생성하기 위해 복제될 수 있거나, 또는 대안적으로 동시 투영들이 요구되지 않을 때 도 34에서의 다이어그램은 도 31에서의 로직이 어떻게 일부 실시예들에서 도 31에서의 16개의 OR 게이트 각각으로 라우팅할 4개의 입력 비트의 적절한 쿼드들(quads)을 선택하기 위해 입력 멀티플렉서 스테이지의 제어 하에서 X, Y 또는 Z에서의 투영들을 생성하도록 확장될 수 있는지를 도시하고 있다. 부가적으로, 응용분야가 X, Y 및 Z 투영들에 대해 복셀 레벨 정확도를 요구하는 경우에 64개의 AND 게이트의 뱅크가 비트 평면들을 마스크 아웃하는 데 사용될 수 있다. 이 마스킹 로직은 동일한 충실도를 위해 도 31의 로직에 복제될 수 있다. 3401은, 마스크 0, 마스크 1, 마스크 2, 또는 마스크 3과 같은, 마스크이고, 3400은 AND 게이트이다.
도 35는 일부 실시예들에 따른 2D 비트맵들로부터의 히스토그램 피라미드들의 생성이 어떻게 가속화될 수 있는지를 보여주는 다이어그램이다. 히스토그램 피라미드는 예시적인 볼륨 데이터 구조의 64-비트 정수(3500) 엔트리로서 표현된 2D 이진 어레이의 입력 8Х8 비트 표현에서의 1들의 개수를 연속적으로 합산함으로써 계산될 수 있다. 히스토그램 피라미드의 제1 레벨은 3501에 도시된 16개의 3-비트 숫자 {0,1,2,3,4}를 산출하기 위해 3500에서의 2x2 비트 그루핑들(groupings) 각각에서의 1들의 개수를 합산함으로써 도출된다. 예를 들어, (350에 대응하는) 64-비트 값(3504)의 비트 0, 비트 1, 비트 2 및 비트 3은 I0_x 레지스터(3506)에서의 부분 합을 생성하기 위해 4x 3-비트 가산기(3505)에 의해 합산될 수 있다. 다음 4x 3-비트 가산기는 비트 4, 비트 5, 비트 6 및 비트 7의 합계를 계산하고, 이하 마찬가지이다. 16개의 4x 3-비트 가산기의 제1 계층의 출력은 3507로서 또한 표기된 48-비트 레지스터 I0_x로 패킹된다. 히스토그램 피라미드의 다음 레벨은, 4개의 3-비트 부분 합(I0_0, I0_1, I0_2 및 I0_3)을 합산하여 레벨 1 값들 I1_x(예컨대, 3509)를 계산하기 위해, 8-비트 가산기를 사용하여 레지스터 I0_x(3505)에서의 부분 곱들을 3508에 합산함으로써 계산된다. I1_x의 요소들은 3507에 또한 대응하는 3517x로 연결된다. 최종 스테이지는 4x 5-비트 가산기 트리(3510)를 통해 I1_x 요소들(예컨대, 3509)을 7-비트 결과로 합산한다. 3510의 출력은 이어서 3503 및 3507에 대응하는 I2_0으로서 레지스터(3512)에 저장된다. 메모리 맵의 관점에서의 사용 용이성의 관점에서, 3개의 요소(3514, 3516 및 3507)는, 예시적인 특징들 및 구현들 중에서도 특히, 3518에 도시된 128-비트 포맷으로 패킹될 수 있다.
도 36은 일부 실시예들에 따른 3D 비트맵들로부터의 히스토그램 피라미드들의 생성이 어떻게 가속화될 수 있는지를 도시하고 있다. 도 35의 예와 유사하게, 예시적인 볼륨 데이터 구조(예컨대, 3600, 3601, 3602, 3603)의 64-비트 정수 엔트리는 이번에는 8x8 2D 볼륨이 아닌 4^3 3D 볼륨에 대해 코딩한다. 3D 볼륨은 2개의 레벨(3604 및 3605) 및 그에 뒤이은 3606로 이루어진 히스토그램 피라미드로 환산될(reduced) 수 있다. 도 36의 경우에, 도 35의 경우에서와 같이 단지 2개의 차원이 아니라, 3개의 차원에서 2배만큼 볼륨이 감소된다. 64-비트 정수 엔트리 내의 비트들은 3610에 도시된 바와 같이 레이아웃될 수 있고 16개의 4 비트 가산기(3650 내지 3655)의 행에 의해 합산된다. 제1 4-비트 가산기(3650)는 비트 0, 비트 1, 비트 4 및 비트 5를 합산하고, 3610의 비트 58, 비트 59, 비트 62 및 비트 63을 합산하는 제16 가산기(3655)까지 계속된다. 8개의 2x 3-비트 가산기(3660 내지 3665)의 제2 행은 이어서 4-비트 가산기들(3650 내지 3655)의 출력을 합산한다. 예를 들어, 가산기(3660)는 3650 및 3652의 출력들을 합산하고, 결과는 I1_0(3670)에 저장되며, 이하 마찬가지이다. 마지막으로, 8x 4-비트 가산기 트리(3614)는 I1_x 요소들(3670 내지 3675)을 합산하고 결과는 I2_0(3615)에 저장된다.
도 37은 일부 실시예들에 따른 2D 2x2 비트맵 상에서의 2D 경로 탐색이 어떻게 가속화될 수 있는지를 보여주는 다이어그램이다. 동작 원리는 동일한 그리드 셀들의 맵 상의 지점들 사이에 접속성(connectivity)이 존재하기 위해 x 또는 y 또는 x 및 y에서의 셀들의 연속적인 런(contiguous run)의 값들이 모두 1로 설정되어야만 한다는 것이다. 따라서 유효한 경로가 존재하는지 그리드에서의 비트맵을 테스트하기 위해 그 셀들로부터 끌어낸 비트들의 논리 AND가 인스턴스화될 수 있고, NxN 그리드를 통한 각각의 유효한 경로에 대해 상이한 AND 게이트가 인스턴스화될 수 있다. 일부 경우들에서, 이 접근법은 8x8 2D 그리드조차도 264-1개의 유효한 경로를 포함할 수 있다는 점에서 조합 복잡성(combinatorial complexity)을 초래할 수 있다 . 그에 따라, 일부 개선된 구현들에서, 그리드가 접속성에 대해 계층적으로 테스트될 수 있는 2x2 또는 4x4 타일들로 환산될 수 있다. 2x2 비트맵(3700)은 b0, b1, b2 및 b3으로 라벨링된 4 비트를 포함한다. 4 비트는 대응하는 라벨들(3701 내지 3717)을 갖는 값들(0000 내지 1111)을 취할 수 있다. 이러한 비트 패턴들 각각은 3721 내지 3730으로 라벨링된 2x2 그리드의 페이스들(faces) 사이의 다양한 레벨의 접속성을 나타낸다. 예를 들어, 3700에서 x0와 y0 사이의 수직 접속성을 표기하는 3721 또는 v0은 2x2 그리드(3700)가 비트맵들(1010(3712), 1011(3713), 1110(3716) 또는 1111(3717))을 포함할 때 존재한다. 테이블(3718)의 행 1에 보여진 바와 같은 2-입력 논리 AND 또는 3700에서의 b0 및 b3은 2x2 서브그리드들(sub grids)로 세분화된 전역 그리드(global grid)를 통한 전역 접속성(global connectivity)을 결정하기 위해 상위 레벨 하드웨어 또는 소프트웨어에서 사용될 수 있는 접속성 맵에서의 v0를 생성한다. 전역 맵(global map)이 x 축 또는 y 축 중 어느 하나 상에 홀수 개의 그리드 포인트(grid point)를 포함하는 경우, 최상위 레벨 그리드는 (예컨대, 1개의 추가 제로 행(extra row of zeroes)이 전역 그리드 상의 x-축 및/또는 y-축에 추가될 필요가 있도록) 그 다음으로 높은 짝수 개의 그리드 포인트로의 패딩 아웃을 요구할 것이다. 도 37은 어떻게 제로들로 채워진 부가의 행(3732) 및 열(3734)을 추가함으로써 8x8로 패딩 아웃되는지를 보여주는 예시적인 7x7 그리드(3750)를 추가로 도시하고 있다. 다른 기법들(예컨대, 깊이 우선 탐색(depth-first search), 폭 우선 탐색(breadth-first search) 또는 Dijkstra의 알고리즘, 또는 다른 그래프 기반 접근법들)에 비해 경로 탐색의 속도를 높이기 위해, 본 예는 NxN 맵(3750)을 점진적으로 2x2 맵에 이르기까지 서브샘플링할 수 있다. 예를 들어, 이 예에서, 3740에서의 셀 W는 3750에서의 셀 A, 셀 B, 셀 C 및 셀 D의 내용을 OR 연산함으로써 파퓰레이트되며(populated), 이하 마찬가지이다. 차례로, 3740에서 2x2 셀들 내의 비트들은 3742에서의 셀들을 파퓰레이트하기 위해 OR 연산된다. 경로 탐색 면에서, 이 알고리즘은 그리드(3742)의 가장 작은 2x2 표현으로부터 시작하여 비트들 각각을 테스트한다. 2x2 그리드(3742)에서의 1 비트들에 대응하는 (4개의 2x2 그리드로 구성된) 3740에서의 4x4 그리드의 부분들만이 접속성에 대해 테스트되면 되는데, 그 이유는 제로 비트가 3740에 대응하는 2x2 그리드 셀이 없음을 의미한다는 것을 알기 때문이다. 이 접근법은 3720에서 8x8 그리드를 탐색하는 데 또한 사용될 수 있으며, 예를 들어, 3740에서의 셀 W가 제로를 포함하는 경우, 3720에서의 ABCD에 경로가 없다는 것을 알 수 있다. 이 접근법은, A*, Dijkstra, DFS, BFS 또는 그 변형들인지에 관계없이, 사용된 그래프 탐색 알고리즘으로부터 브랜치들을 프루닝한다(prunes). 이것에 부가하여, 2x2 조직화(3718)를 갖는 하드웨어 기본 경로 탐색기의 사용은 연관된 계산들을 추가로 제한할 수 있다. 실제로, 4x4 기본 하드웨어 요소는 수행될 필요가 있는 그래프 탐색의 양을 더욱 제약하는, 3740 및 3742와 동일한 배열을 갖는 5개의 2x2 하드웨어 블록을 사용하여 구성될 수 있다. 게다가, 8x8 하드웨어 기반 탐색 엔진이 잠재적으로 임의의 NxN 토폴로지에 대해 3742, 3740, 3700 등과 동일한 배열을 갖는 21개의 2x2 HW 블록(3718)으로 구성될 수 있다.
도 38은 일부 실시예들에 따른 3D 2x2x2 비트맵 상에서의 3D 경로 탐색이 어떻게 가속화될 수 있는지를 도시하고 있다. 도 37의 예와 유사하게, NxNxN 그리드는 3800에 나타낸 바와 같이 2의 배수로 패딩될 수 있다(N은 짝수여야 함). 이 그리드는 3801에 나타낸 바와 같은 4x4x4 그리드로 그리고 마지막으로 3802에서의 2x2x2 그리드로 점진적으로 서브샘플링될 수 있다. 도 37과 유사하게, 각각의 2x2x2 그리드 셀(3802) 내의 셀들에서의 1들의 존재 또는 부재는 4x4x4 그리드의 임의의 영역이 탐색되어야 하는지를 결정하는 데 사용될 수 있으며, 4x4x4 그리드에서의 셀들은 8x8 그리드에서의 계산들을 프루닝하는 데 사용될 수 있으며, NxNxN 그리드 전체를 탐색하는 데 사용되는 그래프 알고리즘과 독립적으로 전체 NxN 그리드(full NxN grid)에 이르기까지 이하 마찬가지이다. 2x2x2 그리드 레벨에서, 2x2x2 비트맵에서의 8 비트는 3803에 나타낸 바와 같이 v0 내지 v7로 라벨링되어 있다. 큐브의 페이스들에 대한 접속성은 동일한 컬러 코딩(color coding)을 사용하여 3804에 나타내어진다. 3805에 나타내어진 2x2x2 볼륨을 통한 경로 탐색기에 대한 접속성 행렬에 나타내어진 바와 같이, 접속성은 대칭이며 따라서 A로부터 B로의 접속성이 B로부터 A로의 접속성과 동일하므로 하부 삼각형만이 표현되면 된다. 게다가 대각선을 따라 있는 요소들이 반드시 고려될 필요는 없는데, 그 이유는 그들이 암시적이기 때문이다. 3개의 차원에서의 접속성에 대한 방정식들은 3806 내지 3813에 나타내어져 있으며, 다양한 섹션들은 2x2x2 볼륨(3803) 내의 복셀들 사이에 접속성이 존재하기 위해 모두 1이어야 하는 비트들에 대한 방정식들을 보여준다. 예를 들어, 진리표의 섹션(3086)에 나타내어진 바와 같이, v0과 v1 사이에 접속성이 존재하기 위해서는, 비트들 v0와 v1 둘 다가 "1"이어야만 하고, v0과 v2 사이에 접속성이 존재하기 위해서는, v0과 v2 둘 다가 "1"이어야만 하며, v0과 v3 사이에 접속성이 존재하기 위해서는, v0, v1 또는 v2 및 v3 모두가 "1"이어야만 하며, 이하 마찬가지이다. 이러한 구성으로부터, 보여진 방정식들은 8-비트 비트맵(3803) 상에서의 2x2x2 경로 탐색을 구현하고 단일 병렬 단계에서 복셀들(v0 내지 v7) 사이의 경로들을 출력하기 위해 AND-OR 로직 회로부로 구현될 수 있다. 게다가, 도 37에 도시된 것과 유사한 방식으로, 4x4x4 프리미티브 HW 경로 탐색기는 3802와 3801 사이에 도시된 방식으로 상호접속된 3805에 따라 5개의 2x2x2 HW 경로 탐색기를 사용하여 구성될 수 있다. 실제로, 8x8x8 HW 경로 탐색기는, 예들 중에서도 특히, 3802, 3801 및 3800의 접속성에 따라 137개의 2x2x2 HW 경로 탐색기를 접속시켜 구현될 수 있다.
도 39는 일부 실시예들에 따른 제안된 볼륨 데이터 구조를 사용하여 어떻게 충돌 검출이 가속화될 수 있는지를 보여주는 단순화된 블록 다이어그램이다. 지오메트리의 3D NxNxN 맵은, 최저 상세 레벨(LoD) 2x2x2 볼륨(3802)(3902), 그 다음으로 높은 4x4x4 볼륨(3801)(3901), 8x8x8 볼륨(3800)(3900), 그리고 NxNxN에 이르기까지 계속 기타 등등으로 이루어진, 도 38에 이전에 도시된 바와 같은 피라미드로 서브샘플링될 수 있다. GPS와 같은 위치확인 수단을 통해 또는 3D 맵으로부터의 위치재확인(relocalization)을 통해 3D 공간에서의 드론, 차량, 또는 로봇(3905)의 위치가 알려지는 경우, 이는 드론/로봇의 x, y 및 z 위치들을 적절하게 스케일링하고(그들을 관련 횟수만큼 2로 나누고) 지오메트리의 존재에 대해 3902를 쿼리하는 것(예컨대, 대응하는 비트맵 비트가 가능한 충돌을 지시하는 비트인지를 체크하는 것)에 의해 관련 2x2x2 서브볼륨의 사분면에서의 지오메트리의 존재 또는 부재에 대해 테스트하는 데 신속하게 사용될 수 있다. 가능한 충돌이 존재하는 경우(예컨대, "1"이 발견되는 경우), 드론/로봇이 움직일 수 있는지 여부를 확인하기 위해 볼륨들(3901, 3900 등)에서의 추가적인 체크들이 수행될 수 있다. 그렇지만, 3902 내의 복셀이 자유로운(free)(예컨대, "0"인) 경우, 로봇/드론은 이를 자유 공간으로 해석하고 맵의 대부분을 통해 자유롭게 움직이기 위해 방향 제어를 조작할 수 있다.
본 명세서에서 설명되고 예시된 시스템들 및 솔루션의 일부가 복수의 요소들을 포함하거나 이들과 연관되어 있는 것으로 설명되었지만, 명시적으로 예시되거나 설명된 모든 요소들이 본 개시내용의 각각의 대안적 구현에서 이용될 수 있는 것은 아니다. 부가적으로, 본 명세서에 설명된 요소들 중 하나 이상은 시스템의 외부에 위치될 수 있는 반면, 다른 경우들에서, 특정 요소들은 다른 설명된 요소들은 물론, 예시된 구현에서 설명되지 않은 다른 요소들 중 하나 이상 내에 또는 그의 일 부분으로서 포함될 수 있다. 게다가, 특정 요소들이 다른 컴포넌트들과 결합될 수 있는 것은 물론, 본 명세서에 설명된 그 목적들에 부가하여 대안의 또는 부가의 목적들을 위해 사용될 수 있다.
게다가, 앞서 제시된 예들이 특정 원리들 및 특징들을 예시하기 위한 목적으로만 제공되고 본 명세서에 설명된 개념들의 잠재적 실시예들을 반드시 제한하지는 않는 또는 제약하지는 않는 비제한적 예들임이 인식되어야 한다. 예를 들어, 본 명세서에 설명된 컴포넌트들의 다양한 구현을 통해 실현되는 조합들을 포함하여, 본 명세서에 설명된 특징들 및 컴포넌트들의 다양한 조합들을 이용하여 각종의 상이한 실시예들이 실현될 수 있다. 다른 구현들, 특징들, 및 상세들은 본 명세서의 내용으로부터 인식될 것이다.
도 40 내지 도 45는 본 명세서에 개시된 실시예들에 따라 사용될 수 있는 예시적인 컴퓨터 아키텍처들의 블록 다이어그램들이다. 실제로, 본 명세서에 설명된 시스템들의 컴퓨팅 디바이스들, 프로세서들, 및 다른 로직 및 회로부는 그러한 기능을 구현하기 위해 기능 및 지원 소프트웨어 및/또는 하드웨어 회로부의 전부 또는 일 부분을 포함할 수 있다. 게다가, 여기에 도시된 예들 이외에 프로세서들 및 컴퓨팅 시스템들에 대해 본 기술분야에 공지된 다른 컴퓨터 아키텍처 설계들이 또한 사용될 수 있다. 일반적으로, 본 명세서에 개시된 실시예들에 적당한 컴퓨터 아키텍처들은 도 40 내지 도 45에 예시된 구성들을 포함할 수 있지만, 이들로 제한되지 않는다.
도 40은 링크들을 통해 각자의 게이트웨이들에 커플링된 각자의 사물 인터넷(internet-of-things)(IoT) 네트워크들에 대한 예시적인 도메인 토폴로지를 예시하고 있다. 사물 인터넷(IoT)은 매우 낮은 레벨들에서의 기능 및 데이터 취득을 제공하기 위해 많은 수의 컴퓨팅 디바이스들이 서로 그리고 인터넷에 상호접속되는 개념이다. 따라서, 본 명세서에서 사용되는 바와 같이, IoT 디바이스는 다른 IoT 디바이스들 및, 인터넷과 같은, 보다 넓은 네트워크와 통신하는, 그 중에서도 특히, 감지 또는 제어와 같은, 기능을 수행하는 반자율 디바이스(semiautonomous device)를 포함할 수 있다.
종종, IoT 디바이스들은 메모리, 크기, 또는 기능이 제한되어 있어, 보다 적은 수의 보다 큰 디바이스들과 유사한 비용으로 보다 많은 수가 배치될 수 있게 해준다. 그렇지만, IoT 디바이스는 스마트 폰, 랩톱, 태블릿, 또는 PC, 또는 다른 보다 큰 디바이스일 수 있다. 게다가, IoT 디바이스는, 스마트 폰 또는 다른 컴퓨팅 디바이스 상의 애플리케이션과 같은, 가상 디바이스일 수 있다. IoT 디바이스들은, 데이터 저장, 프로세스 제어, 및 이와 유사한 것을 위해, IoT 디바이스들을 다른 IoT 디바이스들에 그리고 클라우드 애플리케이션들에 커플링시키는 데 사용되는 IoT 게이트웨이들을 포함할 수 있다.
IoT 디바이스들의 네트워크들은, 배수 시스템들, 전력 분배 시스템들, 파이프라인 제어 시스템들, 플랜트 제어 시스템들, 조명 스위치들, 서모스탯들, 자물쇠들, 카메라들, 경보기들, 모션 센서들, 및 이와 유사한 것과 같은, 상용 및 홈 오토메이션 디바이스들을 포함할 수 있다. IoT 디바이스들은, 예를 들어, 시스템들을 제어하거나 데이터에 액세스하기 위해, 원격 컴퓨터들, 서버들, 및 다른 시스템들을 통해 액세스가능할 수 있다.
인터넷 및 비슷한 네트워크들의 장래의 성장은 매우 많은 수의 IoT 디바이스들을 수반할 수 있다. 그에 따라, 본 명세서에서 논의된 기법들의 맥락에서, 그러한 장래의 네트워킹을 위한 다수의 혁신들은 이러한 계층들 전부가 방해받지 않고 성장하는 것, 접속된 자원들을 발견하고 액세스가능하게 만드는 것, 및 접속된 자원들을 숨기고 구획화(compartmentalize)하는 능력을 지원하는 것의 필요성을 해결할 것이다. 임의의 수의 네트워크 프로토콜들 및 통신 표준들이 사용될 수 있으며, 여기서 각각의 프로토콜 및 표준은 특정 목적들을 해결하도록 설계되었다. 게다가, 프로토콜들은 위치, 시간 또는 공간에 관계없이 동작하는 패브릭 지원 인간 액세스가능 서비스들(fabric supporting human accessible services)의 일부이다. 혁신들은, 하드웨어 및 소프트웨어와 같은, 서비스 제공(service delivery) 및 연관된 인프라; 보안 강화; 및 서비스 수준 및 서비스 제공 협약에 명시된 서비스 품질(QoS) 조건에 기초한 서비스들의 제공을 포함한다. 이해될 것인 바와 같이, 도 40 및 도 41에서 소개된 것들과 같은, IoT 디바이스들 및 네트워크들의 사용은 유선 및 무선 기술들의 조합을 포함하는 이종 접속성 네트워크(heterogeneous network of connectivity)에 많은 새로운 과제들을 제시한다.
도 40은 특히, 백본 링크들(4002)을 통해 각자의 게이트웨이들(4054)에 커플링된 IoT 네트워크들(4056, 4058, 4060, 4062)과 함께, IoT 디바이스들(4004)을 포함하는 다수의 사물 인터넷(IoT) 네트워크들에 대해 사용될 수 있는 도메인 토폴로지의 단순화된 도면을 제공한다. 예를 들어, 다수의 IoT 디바이스들(4004)은 게이트웨이(4054)와, 그리고 게이트웨이(4054)를 통해 서로 통신할 수 있다. 도면을 단순화하기 위해, 모든 IoT 디바이스(4004) 또는 통신 링크(예컨대, 링크(4016, 4022, 4028 또는 4032))가 라벨링되어 있지는 않다. 백본 링크들(4002)은 광학 네트워크들을 포함한, 임의의 수의 유선 또는 무선 기술들을 포함할 수 있으며, LAN(local area network), WAN(wide area network), 또는 인터넷의 일부일 수 있다. 부가적으로, 그러한 통신 링크들은 다양한 디바이스들의 상호접속을 용이하게 하는 다중화/역다중화(MUXing/deMUXing) 컴포넌트들의 사용을 포함한, IoT 디바이스들(4004)과 게이트웨이들(4054) 둘 다 사이의 광학 신호 경로들을 용이하게 한다.
네트워크 토폴로지는 BLE(Bluetooth low energy) 링크들(4022)을 사용하는 네트워크(4056)와 함께 제공된 메시 네트워크와 같은, 임의의 수의 타입의 IoT 네트워크들을 포함할 수 있다. 존재할 수 있는 다른 타입의 IoT 네트워크들은 IEEE 802.11(Wi-Fi®) 링크들(4028)을 통해 IoT 디바이스들(4004)과 통신하는 데 사용되는 WLAN(wireless local area network) 네트워크(4058), LTE/LTE-A(4G) 또는 5G 셀룰러 네트워크를 통해 IoT 디바이스들(4004)과 통신하는 데 사용되는 셀룰러 네트워크(4060), 및 LPWA(low-power wide area) 네트워크(4062), 예를 들어, LoRa alliance에 의해 공표된 LoRaWan 규격과 호환되는 LPWA 네트워크, 또는 IETF(Internet Engineering Task Force)에 의해 공표된 규격과 호환되는 IPv6 over LPWAN(Low Power Wide-Area Network) 네트워크를 포함한다. 게다가, 각자의 IoT 네트워크들은, LTE 셀룰러 링크, LPWA 링크, 또는 Zigbee®와 같은, IEEE 802.15.4 표준에 기초한 링크와 같은, 임의의 수의 통신 링크들을 사용하여 외부 네트워크 제공자(예컨대, 티어 2 또는 티어 3 제공자)와 통신할 수 있다. 각자의 IoT 네트워크들은 또한 CoAP(Constrained Application Protocol)와 같은 다양한 네트워크 및 인터넷 애플리케이션 프로토콜들을 사용하여 동작할 수 있다. 각자의 IoT 네트워크들은 또한 링크된 디바이스들 및 네트워크들의 클러스터 트리를 형성하는 링크들의 체인을 제공하는 코디네이터 디바이스들(coordinator devices)과 통합될 수 있다.
이러한 IoT 네트워크들 각각은 본 명세서에 설명된 것들과 같은, 새로운 기술적 특징들을 위한 기회들을 제공할 수 있다. 개선된 기술들 및 네트워크들은, IoT 네트워크들을 포그 디바이스들 또는 시스템들로서 사용하는 것을 포함한, 디바이스들 및 네트워크들의 기하급수적 성장을 가능하게 해줄 수 있다. 그러한 개선된 기술들의 사용이 증가함에 따라, 직접적인 인간 개입을 필요로 함이 없이, IoT 네트워크들이 자기 관리(self-management), 기능 진화(functional evolution), 및 협업(collaboration)을 위해 발전될 수 있다. 개선된 기술들은 심지어 IoT 네트워크들이 중앙집중식 제어 시스템들 없이도 기능할 수 있게 해줄 수 있다. 그에 따라, 본 명세서에 설명된 개선된 기술들은 현재의 구현들을 훨씬 넘어서 네트워크 관리 및 동작 기능들을 자동화하고 향상시키는 데 사용될 수 있다.
일 예에서, 백본 링크들(4002)을 통해서와 같은, IoT 디바이스들(4004) 간의 통신은 AAA(authentication, authorization, and accounting)를 위한 분산 시스템(decentralized system)에 의해 보호될 수 있다. 분산 AAA 시스템에서, 분산 지불, 신용, 감사, 권한부여, 및 인증 시스템들은 상호접속된 이기종 네트워크 인프라스트럭처에 걸쳐 구현될 수 있다. 이것은 시스템들 및 네트워크들이 자율 동작들을 향해 갈 수 있게 해준다. 이러한 타입의 자율 동작들에서, 머신들은 심지어 인적 자원들을 위한 계약을 체결하고 다른 머신 네트워크들과 파트너쉽들을 협상할 수 있다. 이것은 상호 목적들의 달성 및 개략적으로 기술된 계획된 서비스 수준 협약들에 대비한 균형잡힌 서비스 제공을 가능하게 해줄 수 있는 것은 물론, 계량, 측정, 트레이싱 능력(traceability) 및 트래킹 능력(trackability)을 제공하는 솔루션들을 달성할 수 있게 해줄 수 있다. 새로운 공급망 구조들 및 방법들의 생성은 임의의 인간 개입 없이 다수의 서비스들이 생성되고(created), 가치 창출되며(mined for value), 소멸되게(collapsed) 할 수 있다.
그러한 IoT 네트워크들은 사운드, 광, 전자 트래픽, 얼굴 및 패턴 인식, 냄새, 진동과 같은 감지 기술을 IoT 디바이스들 사이의 자율 조직화들에 통합함으로써 더욱 향상될 수 있다. 감각 시스템들의 통합은 계약 서비스 목적들에 대비한 체계적이고 자율적인 통신 및 서비스 제공 조율, 오케스트레이션 및 QoS(Quality of Service) 기반 자원 스워밍(swarming) 및 융합을 가능하게 해줄 수 있다. 네트워크 기반 자원 프로세싱의 개별 예들 중 일부는 다음과 같은 것을 포함한다.
예를 들어, 메시 네트워크(4056)는 인라인 데이터-정보 변환들(inline data-to-information transforms)을 수행하는 시스템들에 의해 향상될 수 있다. 예를 들어, 다중 링크 네트워크(multi-link network)를 포함하는 프로세싱 자원들의 자기 형성 체인들(self-forming chains)은 효율적인 방식으로 원시 데이터를 정보로 변환하는 것, 그리고 자산들 및 자원들과 각각의 연관된 관리를 구별하는 능력을 분배할 수 있다. 게다가, 데이터 무결성, 품질, 보증을 개선시키고 데이터 신뢰의 척도를 제공하기 위해 인프라스트럭처 및 자원 기반 신뢰 및 서비스 지표들의 적절한 컴포넌트들이 삽입될 수 있다.
WLAN 네트워크(4058)는, 예를 들어, 다중 표준 접속성을 제공하기 위해 표준들 변환을 수행하는 시스템들을 사용하여, 상이한 프로토콜들을 사용하는 IoT 디바이스들(4004)이 통신할 수 있게 해줄 수 있다. 추가 시스템들은 가시적 인터넷 자원들 및 숨겨진 인터넷 자원들을 포함하는 다중 표준 인프라스트럭처에 걸쳐 심리스 상호접속성(seamless interconnectivity)을 제공할 수 있다.
셀룰러 네트워크(4060)에서의 통신은, 예를 들어, 데이터를 오프로드(offload)하거나, 보다 많은 원격 디바이스들로 통신을 확장하거나, 둘 다를 하는 시스템들에 의해 향상될 수 있다. LPWA 네트워크(4062)는 비-인터넷 프로토콜(IP) 대 IP 상호접속들, 어드레싱, 및 라우팅을 수행하는 시스템들을 포함할 수 있다. 게다가, IoT 디바이스들(4004) 각각은 그 디바이스와의 광역 통신을 위한 적절한 트랜시버를 포함할 수 있다. 게다가, 각각의 IoT 디바이스(4004)는 부가의 프로토콜들 및 주파수들을 사용하는 통신을 위한 다른 트랜시버들을 포함할 수 있다. 이것은 도 42 및 도 43에 묘사된 IoT 프로세싱 디바이스의 통신 환경 및 하드웨어와 관련하여 추가로 논의된다.
마지막으로, IoT 디바이스들의 클러스터들은 다른 IoT 디바이스들과는 물론 클라우드 네트워크와 통신하도록 장비를 갖출 수 있다. 이것은 IoT 디바이스들이 디바이스들 사이에 애드혹 네트워크를 형성할 수 있게 해줄 수 있어, 그들이, 포그 디바이스라고 지칭될 수 있는, 단일 디바이스로서 기능할 수 있게 해준다. 이 구성은 이하의 도 41과 관련하여 추가로 논의된다.
도 41은 클라우드 컴퓨팅 네트워크의 에지에서 포그 디바이스로서 동작하는 IoT 디바이스들(디바이스들(4102))의 메시 네트워크와 통신하는 클라우드 컴퓨팅 네트워크를 예시하고 있다. IoT 디바이스들의 메시 네트워크는, 클라우드(4100)의 에지에서 동작하는, 포그(4120)라고 지칭될 수 있다. 다이어그램을 단순화하기 위해, 모든 IoT 디바이스(4102)가 라벨링되어 있는 것은 아니다.
포그(4120)는 다수의 IoT 디바이스들(4102)이, 예를 들어, 라디오 링크들(4122)에 의해, 서로 통신하는 대규모로 상호접속된 네트워크(massively interconnected network)인 것으로 간주될 수 있다. 일 예로서, 이러한 상호접속된 네트워크는 OCF(Open Connectivity Foundation™)에 의해 발표된 인터커넥트 규격(interconnect specification)을 사용하여 용이하게 될 수 있다. 이 표준은 디바이스들이 서로를 발견하고 인터커넥트들에 대한 통신을 확립할 수 있게 해준다. 그 중에서도 특히, 예를 들어, OLSR(optimized link state routing) 프로토콜, B.A.T.M.A.N.(better approach to mobile ad-hoc networking) 라우팅 프로토콜, 또는 OMA LWM2M(Lightweight M2M) 프로토콜을 포함한, 다른 상호접속 프로토콜들이 또한 사용될 수 있다.
3가지 타입의 IoT 디바이스들(4102), 이 예에서, 게이트웨이들(4104), 데이터 집계기들(data aggregators)(4126) 및 센서들(4128)이 도시되어 있지만, IoT 디바이스들(4102) 및 기능의 임의의 조합들이 사용될 수 있다. 게이트웨이들(4104)은 클라우드(4100)와 포그(4120) 사이의 통신을 제공하는 에지 디바이스들일 수 있고, 모션 데이터, 흐름 데이터(flow data), 온도 데이터, 및 이와 유사한 것과 같은, 센서들(4128)로부터 획득된 데이터에 대한 백엔드 프로세스 기능을 또한 제공할 수 있다. 데이터 집계기들(4126)은 임의의 수의 센서들(4128)로부터 데이터를 수집하고, 분석을 위해 백-엔드 프로세싱 기능을 수행할 수 있다. 결과들, 원시 데이터, 또는 둘 다는 게이트웨이들(4104)을 통해 클라우드(4100)로 전달될 수 있다. 센서들(4128)은, 예를 들어, 데이터를 수집하기도 하고 데이터를 프로세싱하기도 할 수 있는, 완전 IoT 디바이스들(full IoT devices)(4102)일 수 있다. 일부 경우들에서, 센서들(4128)은 기능, 예를 들어, 데이터를 수집하는 것 및 데이터 수집기들(4126) 또는 게이트웨이들(4104)이 데이터를 프로세싱할 수 있게 해주는 것에서 보다 제한될 수 있다.
임의의 IoT 디바이스(4102)로부터의 통신은 게이트웨이들(4104)에 도달하기 위해 IoT 디바이스들(4102) 중 임의의 것과의 사이의 편리한 경로(예컨대, 가장 편리한 경로)를 따라 전달될 수 있다. 이러한 네트워크들에서, 상호접속들의 횟수는 상당한 중복성(redundancy)을 제공하여, 다수의 IoT 디바이스들(4102)의 손실에도, 통신이 유지될 수 있게 해준다. 게다가, 메시 네트워크의 사용은, 다른 IoT 디바이스(4102)에 접속하기 위한 도달거리가 게이트웨이들(4104)에 접속하기 위한 도달거리보다 훨씬 더 작을 수 있기 때문에, 매우 낮은 전력이거나 인프라스트럭처로부터의 멀리 떨어져 위치되는 IoT 디바이스들(4102)이 사용될 수 있게 해줄 수 있다.
이러한 IoT 디바이스들(4102)로부터 제공되는 포그(4120)는 클라우드(4100)의 에지에 위치된 단일 디바이스, 예컨대, 포그 디바이스로서, 서버(4106)와 같은, 클라우드(4100) 내의 디바이스들에 제시될 수 있다. 이 예에서, 포그 디바이스로부터 오는 경고들은 포그(4120) 내의 특정 IoT 디바이스(4102)로부터 오는 것으로 식별되지 않고 송신될 수 있다. 이러한 방식으로, 포그(4120)는, 그 중에서도 특히, 데이터 애널리틱스(data analytics), 데이터 집계, 및 머신 러닝과 같은 프로세싱 또는 데이터 집중적인 태스크들을 수행하기 위한 컴퓨팅 및 스토리지 자원들을 제공하는 분산 플랫폼인 것으로 간주될 수 있다.
일부 예들에서, IoT 디바이스들(4102)은 명령형 프로그래밍 스타일(imperative programming style)을 사용하여 구성될 수 있으며, 예컨대, 각각의 IoT 디바이스(4102)는 특정 기능 및 통신 파트너들을 갖는다. 그렇지만, 포그 디바이스를 형성하는 IoT 디바이스들(4102)은 선언형 프로그래밍 스타일(declarative programming style)로 구성될 수 있어, IoT 디바이스들(4102)이, 조건들, 질의들, 및 디바이스 고장들에 응답하여 필요한 자원들을 결정하는 것과 같이, 그들의 동작들 및 통신을 재구성할 수 있게 해준다. 일 예로서, IoT 디바이스들(4102)에 의해 모니터링되는 장비의 서브세트의 동작들에 관한 서버(4106)에 위치된 사용자로부터의 질의는 포그(4120) 디바이스가 질의에 답변하는 데 필요한, 특정의 센서들(4128)과 같은, IoT 디바이스들(4102)을 선택하는 것을 가져올 수 있다. 이러한 센서들(4128)로부터의 데이터는 이어서, 질의에 답변하기 위해 포그(4120) 디바이스에 의해 서버(4106)로 송신되기 전에, 센서들(4128), 데이터 집계기들(4126), 또는 게이트웨이들(4104)의 임의의 조합에 의해 집계되고 분석될 수 있다. 이 예에서, 포그(4120) 내의 IoT 디바이스들(4102)은, 흐름 센서들 또는 온도 센서들로부터 데이터를 추가하는 것과 같이, 질의에 기초하여 사용되는 센서들(4128)을 선택할 수 있다. 게다가, IoT 디바이스들(4102) 중 일부가 동작하지 않는 경우, 포그(4120) 디바이스 내의 다른 IoT 디바이스들(4102)은, 이용가능한 경우, 유사한 데이터를 제공할 수 있다.
다른 예들에서, 앞서 설명된 동작들 및 기능이 예시적인 형태의 전자 프로세싱 시스템 내의 IoT 디바이스 머신에 의해 구체화될 수 있으며, 전자 프로세싱 시스템 내에서 전자 프로세싱 시스템으로 하여금, 예시적인 실시예에 따른, 본 명세서에서 논의된 방법론들 중 임의의 것을 수행하게 하기 위해 명령어들의 세트 또는 시퀀스가 실행될 수 있다. 머신은 그 머신에 의해 취해질 액션들을 지정하는 명령어들(순차 또는 다른 방식)을 실행할 수 있는 개인 컴퓨터(PC), 태블릿 PC, PDA(personal digital assistant), 모바일 전화 또는 스마트폰, 또는 임의의 머신의 양태들에 의해 구체화된 머신을 포함한, IoT 디바이스 또는 IoT 게이트웨이일 수 있다. 게다가, 이상의 예에서 단일 머신만이 묘사되고 참조될 수 있지만, 그러한 머신은 또한 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어들의 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로(jointly) 실행하는 머신들의 임의의 컬렉션을 포함하는 것으로 취해져야 한다. 게다가, 프로세서 기반 시스템에 대한 이들 및 비슷한 예들은 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어들을 개별적으로 또는 공동으로 실행하기 위해 프로세서(예컨대, 컴퓨터)에 의해 제어되거나 조작되는 하나 이상의 머신의 임의의 세트를 포함하는 것으로 취해져야 한다. 일부 구현들에서, 다수의 디바이스들 중 하나 이상은 기능을 구현하고 본 명세서에 설명된 태스크들을 수행하기 위해 협력하여 동작할 수 있다. 일부 경우들에서, 하나 이상의 호스트 디바이스는 데이터를 공급하거나, 명령어들을 제공하거나, 결과들을 집계하거나, 또는 다수의 디바이스들에 의해 제공되는 공동 동작들 및 기능을 다른 방식으로 용이하게 할 수 있다. 기능이, 단일 디바이스에 의해 구현될 때, 디바이스에 로컬인 기능인 것으로 간주될 수 있지만, 다수의 디바이스들이 단일 머신으로서 동작하는 구현들에서, 기능은 집합적으로 디바이스들에 로컬인 것으로 간주될 수 있으며, 이러한 디바이스들의 컬렉션은, 예시적인 구현들 중에서도 특히, 다른 원격 머신들(단일 디바이스 또는 디바이스들의 컬렉션으로서 구현됨)에 의해 제공되는 결과들을 제공하거나 소비할 수 있다.
예를 들어, 도 42는 다수의 IoT(Internet of Things) 디바이스들과 통신하는 클라우드 컴퓨팅 네트워크, 또는 클라우드(4200)의 도면을 예시하고 있다. 클라우드(4200)는 인터넷을 나타낼 수 있거나, LAN(local area network) 또는, 회사의 독점 네트워크와 같은, WAN(wide area network)일 수 있다. IoT 디바이스들은, 다양한 조합들로 그룹화된, 임의의 수의 상이한 타입의 디바이스들을 포함할 수 있다. 예를 들어, 교통 제어 그룹(4206)은 도시에서 거리들을 따라 있는 IoT 디바이스들을 포함할 수 있다. 이러한 IoT 디바이스들은 정지 신호등들, 교통 흐름 모니터들, 카메라들, 기상 센서들, 및 이와 유사한 것을 포함할 수 있다. 교통 제어 그룹(4206) 또는 다른 서브그룹들은, LPWA 링크들, 광학 링크들, 및 이와 유사한 것과 같은, 유선 또는 무선 링크들(4208)을 통해 클라우드(4200)와 통신할 수 있다. 게다가, 유선 또는 무선 서브네트워크(4212)는 IoT 디바이스들이, 로컬 영역 네트워크, 무선 로컬 영역 네트워크, 및 이와 유사한 것을 통해서와 같이, 서로 통신할 수 있게 해줄 수 있다. IoT 디바이스들은 클라우드(4200)와 같은 원격 위치들과 통신하기 위해 게이트웨이(4210 또는 4228)와 같은 다른 디바이스를 사용할 수 있고; IoT 디바이스들은 또한 클라우드(4200)와의 또는 게이트웨이(4210)와의 통신을 용이하게 하기 위해 하나 이상의 서버(4230)를 사용할 수 있다. 예를 들어, 하나 이상의 서버(4230)는 로컬 영역 네트워크 사이에서 로컬 에지 클라우드 또는 포그 구현을 지원하기 위해 중간 네트워크 노드로서 동작할 수 있다. 게다가, 묘사된 게이트웨이(4228)는, 다양한 IoT 디바이스들(4214, 4220, 4224)이 클라우드(4200)에서의 자원들의 배정 및 사용에 대해 제약되거나 동적인 것과 같이, 클라우드 대 게이트웨이 대 다수의 에지 디바이스들 구성(cloud-to-gateway-to-many edge devices configuration)에서 동작할 수 있다.
IoT 디바이스들의 다른 예시적인 그룹들은, 그 중에서도 특히, 원격 기상 관측소들(remote weather stations)(4214), 로컬 정보 단말들(4216), 경보 시스템들(4218), 현금 자동 입출금기들(automated teller machines)(4220), 경보 패널들(4222), 또는, 응급 차량들(4224) 또는 다른 차량들(4226)과 같은, 움직이는 차량들을 포함할 수 있다. 이러한 IoT 디바이스들 각각은 다른 IoT 디바이스들과, 서버들(4204)과, 다른 IoT 포그 디바이스 또는 시스템(도시되어 있지 않지만, 도 41에 묘사됨)과, 또는 이들의 조합과 통신할 수 있다. IoT 디바이스들의 그룹들은 다양한 주거, 상업, 및 산업 환경(사설 또는 공공 환경들 둘 다를 포함함)에 배치될 수 있다.
도 42으로부터 알 수 있는 바와 같이, 많은 수의 IoT 디바이스들이 클라우드(4200)를 통해 통신하고 있을 수 있다. 이것은 상이한 IoT 디바이스들이 자율적으로 정보를 요청하거나 정보를 다른 디바이스들에 제공할 수 있게 해줄 수 있다. 예를 들어, IoT 디바이스들의 그룹(예컨대, 교통 제어 그룹(4206))은 원격 기상 관측소들(4214)의 그룹에 현재의 일기 예보를 요청할 수 있고, 이는 인간 개입 없이 예측을 제공할 수 있다. 게다가, 응급 차량(4224)은 절도가 진행 중인 현금 자동 입출금기(4220)에 의해 경보를 받을 수 있다. 응급 차량(4224)이 현금 자동 입출금기(4220)를 향해 진행할 때, 응급 차량(4224)은, 예를 들어, 응급 차량(4224)이 교차로에 방해받지 않고 접근하기에 충분한 시간 동안 교차로에서의 교차 교통(cross traffic)을 차단시키기 위해 신호등이 적색으로 전환되는 것에 의해 그 위치까지의 교통정리(clearance)를 요청하기 위해 트래픽 제어 그룹 (4206)에 액세스할 수 있다.
원격 기상 관측소들(4214) 또는 트래픽 제어 그룹(4206)과 같은, IoT 디바이스들의 클러스터들은 다른 IoT 디바이스들과는 물론 클라우드(4200)와 통신하도록 갖추어져 있을 수 있다. 이것은 IoT 디바이스들이 디바이스들 사이에 애드혹 네트워크(ad-hoc network)를 형성할 수 있게 해줄 수 있어, 그들이, (예컨대, 도 41을 참조하여 앞서 설명된 바와 같이) 포그 디바이스 또는 시스템이라고 지칭될 수 있는, 단일 디바이스로서 기능할 수 있게 해준다.
도 43은 본 명세서에 설명된 기법들을 구현하기 위해 IoT 디바이스(4350)에 존재할 수 있는 컴포넌트들의 일 예에 대한 블록 다이어그램이다. IoT 디바이스(4350)는 예에 도시되거나 상기 개시내용에서 참조되는 컴포넌트들의 임의의 조합들을 포함할 수 있다. 컴포넌트들은 IoT 디바이스(4350)에 적합화된, IC들, 이들의 부분들, 이산 전자 디바이스들(discrete electronic devices), 또는 다른 모듈들, 로직, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합으로서, 또는 보다 큰 시스템의 섀시 내에 다른 방식으로 통합된 컴포넌트들로서 구현될 수 있다. 부가적으로, 도 43의 블록 다이어그램은 IoT 디바이스(4350)의 컴포넌트들의 하이 레벨 뷰를 묘사하도록 의도되어 있다. 그렇지만, 다른 구현들에서는, 도시된 컴포넌트들 중 일부는 생략될 수 있고, 부가의 컴포넌트들이 존재할 수 있으며, 도시된 컴포넌트들의 상이한 배열이 발생할 수 있다.
IoT 디바이스(4350)는 마이크로프로세서, 다중 코어 프로세서, 멀티스레드 프로세서, 초저전압 프로세서, 임베디드 프로세서, 또는 다른 공지된 프로세싱 요소일 수 있는 프로세서(4352)를 포함할 수 있다. 프로세서(4352)는 프로세서(4352) 및 다른 컴포넌트들이 단일 집적 회로, 또는 Intel의 Edison™ 또는 Galileo™ SoC 보드들과 같은, 단일 패키지로 형성되는 시스템 온 칩(SoC)의 일부일 수 있다. 일 예로서, 프로세서(4352)는 Quark™, Atom™, i3, i5, i7, 또는 MCU 클래스(MCU-class) 프로세서와 같은, Intel® Architecture Core™ 기반 프로세서, 또는, 미국 캘리포니아주 산타 클라라 소재의 Intel® Corporation으로부터 입수가능한 다른 그러한 프로세서를 포함할 수 있다. 그렇지만, 미국 캘리포니아주 서니베일 소재의 Advanced Micro Devices, Inc.(AMD)로부터 입수가능한 것, 미국 캘리포니아주 서니베일 소재의 MIPS Technologies, Inc.의 MIPS 기반 설계, ARM Holdings, Ltd. 또는 그 고객으로부터 라이선싱된 ARM 기반 설계, 또는 이들의 라이선시들(licensees) 또는 채택자들(adopters)과 같은, 임의의 수의 다른 프로세서들이 사용될 수 있다. 프로세서들은 Apple® Inc.의 A5 내지 A10 프로세서, Qualcomm® Technologies, Inc.의 Snapdragon™ 프로세서, 또는 Texas Instruments, Inc.의 OMAP™ 프로세서와 같은 유닛들을 포함할 수 있다.
프로세서(4352)는 인터커넥트(4356)(예컨대, 버스)를 통해 시스템 메모리(4354)와 통신할 수 있다. 주어진 양의 시스템 메모리를 제공하기 위해 임의의 수의 메모리 디바이스들이 사용될 수 있다. 예들로서, 메모리는 DDR 또는 모바일 DDR 표준들(예컨대, LPDDR, LPDDR2, LPDDR3, 또는 LPDDR4)과 같은 JEDEC(Joint Electron Devices Engineering Council) 설계에 따른 RAM(random access memory)일 수 있다. 다양한 구현들에서, 개별 메모리 디바이스들은 단일 다이 패키지(single die package)(SDP), 듀얼 다이 패키지(dual die package)(DDP) 또는 쿼드 다이 패키지(quad die package)(Q17P)와 같은 임의의 수의 상이한 패키지 타입들일 수 있다. 이러한 디바이스들은, 일부 예들에서, 보다 낮은 프로파일의 솔루션을 제공하기 위해 마더보드 상에 직접 솔더링될 수 있는 반면, 다른 예들에서, 디바이스들은 하나 이상의 메모리 모듈로서 구성되고 이 메모리 모듈들이 차례로 주어진 커넥터에 의해 마더보드에 커플링된다. 다른 타입의 메모리 모듈들, 예컨대, microDIMM들 또는 MiniDIMM들을 포함하지만 이들로 제한되지 않는 상이한 종류의 DIMM들(dual inline memory modules)과 같은, 임의의 수의 다른 메모리 구현들이 사용될 수 있다.
데이터, 애플리케이션들, 운영 체제들 등과 같은 정보의 영속적 저장을 제공하기 위해, 스토리지(4358)는 또한 인터커넥트(4356)를 통해 프로세서(4352)에 커플링될 수 있다. 일 예에서, 스토리지(4358)는 SSDD(solid state disk drive)를 통해 구현될 수 있다. 스토리지(4358)로 사용될 수 있는 다른 디바이스들은, SD 카드들, microSD 카드들, xD 픽처 카드들, 및 이와 유사한 것과 같은, 플래시 메모리 카드들, 및 USB 플래시 드라이브들을 포함한다. 저전력 구현들에서, 스토리지(4358)는 프로세서(4352)와 연관된 온-다이 메모리 또는 레지스터들일 수 있다. 그렇지만, 일부 예들에서, 스토리지(4358)는 마이크로 하드 디스크 드라이브(HDD)를 사용하여 구현될 수 있다. 게다가, 그 중에서도 특히, 저항 변화 메모리들, 상 변화 메모리들, 홀로그래픽 메모리들, 또는 화학적 메모리들과 같은, 임의의 수의 신기술들이 설명된 기술들에 부가하여 또는 그 대신에 스토리지(4358)로 사용될 수 있다.
컴포넌트들은 인터커넥트(4356)를 통해 통신할 수 있다. 인터커넥트(4356)는 ISA(industry standard architecture), EISA(extended ISA), PCI(peripheral component interconnect), PCIx(peripheral component interconnect extended), PCIe(PCI express), 또는 임의의 수의 다른 기술들을 포함한, 임의의 수의 기술들을 포함할 수 있다. 인터커넥트(4356)는, 예를 들어, SoC 기반 시스템에서 사용되는, 독점적 버스(proprietary bus)일 수 있다. 그 중에서도 특히, I2C 인터페이스, SPI 인터페이스, 포인트 투 포인트 인터페이스들, 및 전력 버스와 같은, 다른 버스 시스템들이 포함될 수 있다.
인터커넥트(4356)는 다른 메시 디바이스들(4364)과의 통신을 위해, 프로세서(4352)를 메시 트랜시버(4362)에 커플링시킬 수 있다. 메시 트랜시버(4362)는, 그 중에서도 특히, Bluetooth® Special Interest Group에 의해 정의된 바와 같은, BLE(Bluetooth® low energy) 표준, 또는 ZigBee® 표준을 사용하는, IEEE 802.15.4 표준 하에서의 2.4 기가헤르츠(GHz) 전송들과 같은, 임의의 수의 주파수들 및 프로토콜들을 사용할 수 있다. 특정의 무선 통신 프로토콜을 위해 구성된, 임의의 수의 라디오들(radios)이 메시 디바이스(4364)에 대한 접속들을 위해 사용될 수 있다. 예를 들어, WLAN 유닛은 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준에 따라 Wi-Fi™ 통신을 구현하는 데 사용될 수 있다. 그에 부가하여, 예컨대, 셀룰러 또는 다른 무선 광역 프로토콜에 따른, 무선 광역 통신은 WWAN 유닛을 통해 발생할 수 있다.
메시 트랜시버(4362)는 상이한 범위의 통신을 위해 다수의 표준들 또는 라디오들을 사용하여 통신할 수 있다. 예를 들어, IoT 디바이스(4350)는 전력을 절감하기 위해, BLE에 기초한 로컬 트랜시버, 또는 다른 저전력 라디오를 사용하여, 예컨대, 약 10 미터 이내의, 가까운 디바이스들과 통신할 수 있다. 예컨대, 약 50 미터 이내의, 보다 멀리 떨어진 메시 디바이스들(4364)은 ZigBee 또는 다른 중간 전력 라디오들을 통해 도달될 수 있다. 양쪽 통신 기법들은 상이한 전력 레벨들에서 단일 라디오를 통해 이루어질 수 있거나, 또는, 별개의 트랜시버들, 예를 들어, BLE를 사용하는 로컬 트랜시버 및 ZigBee를 사용하는 별개의 메시 트랜시버를 통해 이루어질 수 있다.
로컬 또는 광역 네트워크 프로토콜들을 통해 클라우드(4300) 내의 디바이스들 또는 서비스들과 통신하기 위해 무선 네트워크 트랜시버(4366)가 포함될 수 있다. 무선 네트워크 트랜시버(4366)는, 그 중에서도 특히, IEEE 802.15.4 또는 IEEE 802.15.4g 표준들을 따르는 LPWA 트랜시버일 수 있다. IoT 디바이스(4350)는 Semtech 및 LoRa Alliance에 의해 개발된 LoRaWAN™ (Long Range Wide Area Network)을 사용하여 넓은 영역에 걸쳐 통신할 수 있다. 본 명세서에 설명된 기법들은 이러한 기술들로 제한되지 않고, Sigfox와 같은, 장거리, 저 대역폭 통신, 및 다른 기술들을 구현하는 임의의 수의 다른 클라우드 트랜시버들에 대해 사용될 수 있다. 게다가, IEEE 802.15.4e 규격에 설명된, 시간 슬롯 채널 호핑(time-slotted channel hopping)과 같은, 다른 통신 기법들이 사용될 수 있다.
본 명세서에 설명된 바와 같은, 메시 트랜시버(4362) 및 무선 네트워크 트랜시버(4366)에 대해 언급된 시스템들에 부가하여 임의의 수의 다른 라디오 통신 및 프로토콜들이 사용될 수 있다. 예를 들어, 라디오 트랜시버들(4362 및 4366)은 고속 통신을 구현하기 위해 확산 스펙트럼(SPA/SAS) 통신을 사용하는 LTE 또는 다른 셀룰러 트랜시버를 포함할 수 있다. 게다가, 중속 통신(medium speed communications)을 위한 Wi-Fi® 네트워크들 및 네트워크 통신의 프로비저닝과 같은, 임의의 수의 다른 프로토콜들이 사용될 수 있다.
라디오 트랜시버들(4362 및 4366)은 임의의 수의 3GPP(Third Generation Partnership Project) 규격들, 특히 LTE(Long Term Evolution), LTE-A(Long Term Evolution-Advanced), 및 LTE-A Pro(Long Term Evolution-Advanced Pro)와 호환되는 라디오들을 포함할 수 있다. 임의의 수의 다른 고정, 모바일, 또는 위성 통신 기술들 및 표준들과 호환되는 라디오들이 선택될 수 있음을 주목할 수 있다. 이들은, 예컨대, 5G(5th Generation) 통신 시스템들, 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)에 의해 발표된 표준들을 준수하는 라디오들을 포함한, 임의의 수의 위성 업링크 기술들이 무선 네트워크 트랜시버(4366)에 대해 사용될 수 있다. 본 명세서에 제공된 예들은 따라서 다양한 다른 통신 기술들, 기존의 통신 기술 및 아직 공식화되지 않은 통신 기술 둘 다에 적용가능한 것으로 이해된다.
클라우드(4300)에 또는, 메시 디바이스들(4364)과 같은, 다른 디바이스들에 유선 통신을 제공하기 위해 네트워크 인터페이스 제어기(NIC)(4368)가 포함될 수 있다. 유선 통신은 이더넷 연결을 제공할 수 있거나, 그 중에서도 특히, CAN(Controller Area Network), LIN(Local Interconnect Network), DeviceNet, ControlNet, Data Highway+, PROFIBUS, 또는 PROFINET과 같은, 다른 타입의 네트워크들에 기초할 수 있다. 제2 네트워크에 대한 접속을 가능하게 해주기 위해 부가의 NIC(4368), 예를 들어, 이더넷을 통해 클라우드에 대한 통신을 제공하는 NIC(4368), 및 다른 타입의 네트워크를 통해 다른 디바이스들에 대한 통신을 제공하는 제2 NIC(4368)가 포함될 수 있다.
인터커넥트(4356)는 프로세서(4352)를 외부 디바이스들 또는 서브시스템들을 접속시키는 데 사용되는 외부 인터페이스(4370)에 커플링시킬 수 있다. 외부 디바이스들은, 가속도계들, 레벨 센서들, 흐름 센서들, 광학 광 센서들(optical light sensors), 카메라 센서들, 온도 센서들, GPS(global positioning system) 센서들, 압력 센서들, 기압 센서들, 및 이와 유사한 것과 같은, 센서들(4372)을 포함할 수 있다. 외부 인터페이스(4370)는 추가로 IoT 디바이스(4350)를 전력 스위치들, 밸브 액추에이터들, 가청 사운드 생성기, 시각적 경고 디바이스, 및 이와 유사한 것과 같은, 액추에이터들(4374)에 접속시키는 데 사용될 수 있다.
일부 임의적 예들에서, 다양한 입/출력(I/O) 디바이스들이 IoT 디바이스(4350) 내에 존재하거나, IoT 디바이스(4350)에 접속될 수 있다. 예를 들어, 센서 판독치 또는 액추에이터 위치와 같은, 정보를 보여주기 위해 디스플레이 또는 다른 출력 디바이스(4384)가 포함될 수 있다. 입력을 수용하기 위해, 터치 스크린 또는 키패드와 같은, 입력 디바이스(4386)가 포함될 수 있다. 출력 디바이스(4384)는 이진 상태 지시기들(예컨대, LED들) 및 다중 문자 시각적 출력들과 같은 간단한 시각적 출력들, 또는 디스플레이 스크린들(예컨대, LCD 스크린들)과 같은 보다 복잡한 출력들을 포함한, 임의의 수의 오디오 또는 시각적 디스플레이 형태들을 포함할 수 있으며, 문자들, 그래픽들, 멀티미디어 객체들, 및 이와 유사한 것의 출력은 IoT 디바이스(4350)의 동작으로부터 발생되거나 생성된다.
배터리(4376)가 IoT 디바이스(4350)에 전력을 공급할 수 있지만, IoT 디바이스(4350)가 고정된 위치에 마운팅되는 예들에서, IoT 디바이스(4350)는 전기 그리드에 커플링된 전원(power supply)을 가질 수 있다. 배터리(4376)는 리튬 이온 배터리, 또는, 아연-공기 배터리, 알루미늄-공기 배터리, 리튬-공기 배터리, 및 이와 유사한 것과 같은, 금속-공기 배터리일 수 있다.
배터리(4376)의 충전 상태(state of charge)(SoCh)를 트래킹하기 위해 배터리 모니터/충전기(4378)가 IoT 디바이스(4350)에 포함될 수 있다. 배터리 모니터/충전기(4378)는, 배터리(4376)의 건강 상태(state of health)(SoH) 및 기능 상태(state of function)(SoF)와 같은, 고장 예측들을 제공하기 위해 배터리(4376)의 다른 파라미터들을 모니터링하는 데 사용될 수 있다. 배터리 모니터/충전기(4378)는 Linear Technologies의 LTC4020 또는 LTC2990, 미국 애리조나주 피닉스 소재의 ON Semiconductor의 ADT7488A, 또는 미국 텍사스주 달라스 소재의 Texas Instruments의 UCD90xxx 제품군의 IC와 같은, 배터리 모니터링 집적 회로를 포함할 수 있다. 배터리 모니터/충전기(4378)는 배터리(4376)에 관한 정보를 인터커넥트(4356)를 통해 프로세서(4352)에 통신할 수 있다. 배터리 모니터/충전기(4378)는 프로세서(4352)가 배터리(4376)의 전압 또는 배터리(4376)로부터의 전류 흐름을 직접 모니터링할 수 있게 해주는 아날로그-디지털(ADC) 변환기를 또한 포함할 수 있다. 배터리 파라미터들은, 전송 주파수, 메시 네트워크 동작, 감지 주파수, 및 이와 유사한 것과 같은, IoT 디바이스(4350)가 수행할 수 있는 액션들을 결정하는 데 사용될 수 있다.
전력 블록(4380), 또는 그리드에 커플링된 다른 전원은 배터리(4376)를 충전시키기 위해 배터리 모니터/충전기(4378)와 커플링될 수 있다. 일부 예들에서, 무선으로, 예를 들어, IoT 디바이스(4350) 내의 루프 안테나를 통해 전력을 획득하기 위해 전력 블록(4380)이 무선 전력 수신기로 대체될 수 있다. 그 중에서도 특히, 미국 캘리포니아주 밀피타스 소재의 Linear Technologies의 LTC4020 칩과 같은, 무선 배터리 충전 회로가 배터리 모니터/충전기(4378)에 포함될 수 있다. 선택되는 특정 충전 회로들은 배터리(4376)의 크기, 그리고 따라서 요구되는 전류에 의존한다. 충전은, 그 중에서도 특히, Airfuel Alliance에 의해 공표된 Airfuel 표준, Wireless Power Consortium에 의해 공표된 Qi 무선 충전 표준, 또는 Alliance for Wireless Power에 의해 공표된 Rezence 충전 표준을 사용하여 수행될 수 있다.
스토리지(4358)는 본 명세서에 설명된 기법들을 구현하기 위한 소프트웨어, 펌웨어, 또는 하드웨어 커맨드들의 형태의 명령어들(4382)을 포함할 수 있다. 비록 그러한 명령어들(4382)이 메모리(4354) 및 스토리지(4358)에 포함된 코드 블록들로서 도시되어 있지만, 코드 블록들 중 임의의 것이, 예를 들어, ASIC(application specific integrated circuit)에 내장된, 하드와이어드 회로들(hardwired circuits)로 대체될 수 있음이 이해될 수 있다.
일 예에서, 메모리(4354), 스토리지(4358), 또는 프로세서(4352)를 통해 제공되는 명령어들(4382)은 IoT 디바이스(4350)에서의 전자적 동작들을 수행하라고 프로세서(4352)에 지시하는 코드를 포함하는 비일시적, 머신 판독가능 매체(4360)로서 구체화될 수 있다. 프로세서(4352)는 인터커넥트(4356)을 통해 비일시적, 머신 판독가능 매체(4360)에 액세스할 수 있다. 예를 들어, 비일시적, 머신 판독가능 매체(4360)는 도 43의 스토리지(4358)에 대해 설명된 디바이스들에 의해 구체화될 수 있거나, 광학 디스크들, 플래시 드라이브들, 또는 임의의 수의 다른 하드웨어 디바이스들과 같은 특정 스토리지 유닛들을 포함할 수 있다. 비일시적, 머신 판독가능 매체(4360)는, 예를 들어, 앞서 묘사된 동작들 및 기능의 플로차트(들) 및 블록 다이어그램(들)과 관련하여 설명된 바와 같이, 액션들의 특정 시퀀스 또는 흐름을 수행하라고 프로세서(4352)에 지시하는 명령어들을 포함할 수 있다.
도 44는 일 실시예에 따른 프로세서의 예시적인 예시이다. 프로세서(4400)는 상기 구현들과 관련하여 사용될 수 있는 한 타입의 하드웨어 디바이스의 일 예이다. 프로세서(4400)는, 마이크로프로세서, 임베디드 프로세서, 디지털 신호 프로세서(DSP), 네트워크 프로세서, 다중 코어 프로세서, 단일 코어 프로세서, 또는 코드를 실행하기 위한 다른 디바이스와 같은, 임의의 타입의 프로세서일 수 있다. 비록 단지 하나의 프로세서(4400)가 도 44에 예시되어 있지만, 프로세싱 요소는 대안적으로 도 44에 예시된 프로세서(4400)를 하나 초과 포함할 수 있다. 프로세서(4400)는 단일 스레드(single-threaded) 코어일 수 있거나, 적어도 하나의 실시예에서, 코어당 하나 초과의 하드웨어 스레드 컨텍스트(또는 "논리 프로세서")를 포함할 수 있다는 점에서 다중 스레드(multi-threaded)일 수 있다.
도 44는 또한 일 실시예에 따른 프로세서(4400)에 커플링된 메모리(4402)를 예시하고 있다. 메모리(4402)는 본 기술분야의 통상의 기술자에게 공지되거나 다른 방식으로 이용가능한 바와 같은 매우 다양한 메모리들(메모리 계층구조의 다양한 계층들을 포함함) 중 임의의 것일 수 있다. 그러한 메모리 요소들은 RAM(random access memory), ROM(read only memory), FPGA(field programmable gate array)의 로직 블록들, EPROM(erasable programmable read only memory), 및 EEPROM(electrically erasable programmable ROM)을 포함할 수 있지만, 이들로 제한되지 않는다.
프로세서(4400)는 본 명세서에서 상세히 설명된 알고리즘들, 프로세스들, 또는 동작들과 연관된 임의의 타입의 명령어들을 실행할 수 있다. 일반적으로, 프로세서(4400)는 요소 또는 물품(예컨대, 데이터)을 하나의 상태 또는 하나의 것으로부터 다른 상태 또는 다른 것으로 변환시킬 수 있다.
프로세서(4400)에 의해 실행될 하나 이상의 명령어일 수 있는 코드(4404)는 메모리(4402)에 저장될 수 있거나, 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 적당한 조합으로, 또는 적절한 경우 그리고 특정의 요구들에 기초하여 임의의 다른 내부 또는 외부 컴포넌트, 디바이스, 요소, 또는 객체에 저장될 수 있다. 일 예에서, 프로세서(4400)는 코드(4404)에 의해 지시된 프로그램 명령어 시퀀스(program sequence of instructions)를 따를 수 있다. 각각의 명령어는 프런트-엔드 로직(4406)에 들어가고 하나 이상의 디코더(4408)에 의해 프로세싱된다. 디코더는 미리 정의된 포맷의 고정 폭 마이크로 연산과 같은 마이크로 연산을, 그의 출력으로서, 생성할 수 있거나, 원래의 코드 명령어를 반영하는 다른 명령어들, 마이크로명령어들, 또는 제어 신호들을 생성할 수 있다. 프런트-엔드 로직(4406)은 레지스터 리네이밍 로직(register renaming logic)(4410) 및 스케줄링 로직(4412)을 또한 포함하는데, 이들은 일반적으로 자원들을 할당하고 실행을 위한 명령어에 대응하는 연산을 큐잉한다.
프로세서(4400)는 실행 유닛들(4416a, 4416b, 4416n 등)의 세트를 갖는 실행 로직(4414)을 또한 포함할 수 있다. 일부 실시예들은 특정 기능들 또는 기능 세트들에 전용된 다수의 실행 유닛들을 포함할 수 있다. 다른 실시예들은 특정의 기능을 수행할 수 있는 단지 하나의 실행 유닛만 또는 하나의 실행 유닛을 포함할 수 있다. 실행 로직(4414)은 코드 명령어들에 의해 특정된 연산들을 수행한다.
코드 명령어들에 의해 특정된 연산들의 실행의 완료 이후에, 백-엔드 로직(4418)은 코드(4404)의 명령어들을 회수(retire)할 수 있다. 일 실시예에서, 프로세서(4400)는 비순차 실행(out of order execution)을 가능하게 해주지만 명령어들의 순차 회수(in order retirement)를 요구한다. 회수 로직(4420)은 다양한 공지된 형태들(예컨대, 재정렬 버퍼들(re-order buffers) 또는 이와 유사한 것)을 취할 수 있다. 이러한 방식으로, 적어도 디코더에 의해 생성되는 출력, 레지스터 리네이밍 로직(4410)에 의해 이용되는 하드웨어 레지스터들 및 테이블들, 그리고 실행 로직(4414)에 의해 수정되는 임의의 레지스터들(도시되지 않음) 면에서, 코드(4404)의 실행 동안 프로세서(4400)가 변환된다.
비록 도 44에 도시되어 있지는 않지만, 프로세싱 요소는 프로세서(4400)를 갖는 칩 상의 다른 요소들을 포함할 수 있다. 예를 들어, 프로세싱 요소는 프로세서(4400)와 함께 메모리 제어 로직을 포함할 수 있다. 프로세싱 요소는 I/O 제어 로직을 포함할 수 있고 그리고/또는 메모리 제어 로직과 통합된 I/O 제어 로직을 포함할 수 있다. 프로세싱 요소는 하나 이상의 캐시를 또한 포함할 수 있다. 일부 실시예들에서, (플래시 메모리 또는 퓨즈들과 같은) 비휘발성 메모리가 프로세서(4400)와 함께 칩 상에 또한 포함될 수 있다.
도 45는 일 실시예에 따른 포인트-투-포인트(PtP) 구성으로 배열되는 컴퓨팅 시스템(4500)을 예시하고 있다. 특히, 도 45는 프로세서들, 메모리, 및 입/출력 디바이스들이 다수의 포인트-투-포인트 인터페이스들에 의해 상호접속되는 시스템을 도시하고 있다. 일반적으로, 본 명세서에 설명된 컴퓨팅 시스템들 중 하나 이상은 컴퓨팅 시스템(4500)과 동일하거나 유사한 방식으로 구성될 수 있다.
프로세서들(4570 및 4580)은 각각이 메모리 요소들(4532 및 4534)과 통신하기 위해 집적 메모리 제어기 로직(MC)(4572 및 4582)을 또한 포함할 수 있다. 대안의 실시예들에서, 메모리 제어기 로직(4572 및 4582)은 프로세서들(4570 및 4580)로부터 분리된 이산 로직(discrete logic)일 수 있다. 메모리 요소들(4532 및/또는 4534)은 본 명세서에 개략적으로 기술된(outlined) 동작들 및 기능을 달성함에 있어서 프로세서들(4570 및 4580)에 의해 사용될 다양한 데이터를 저장할 수 있다.
프로세서들(4570 및 4580)은, 다른 도면들과 관련하여 논의된 것들과 같은, 임의의 타입의 프로세서일 수 있다. 프로세서들(4570 및 4580)은, 제각기, 포인트-투-포인트 인터페이스 회로들(4578 및 4588)을 사용하여 포인트-투-포인트(PtP) 인터페이스(4550)를 통해 데이터를 교환할 수 있다. 프로세서들(4570 및 4580)은 각각이 포인트-투-포인트 인터페이스 회로들(4576, 4586, 4594, 및 4598)을 사용하여 개별 포인트-투-포인트 인터페이스들(4552 및 4554)을 통해 칩세트(4590)와 데이터를 교환할 수 있다. 칩세트(4590)는 또한 PtP 인터페이스 회로일 수 있는 인터페이스 회로(4592)를 사용하여, 고성능 그래픽스 인터페이스(4539)를 통해 고성능 그래픽 회로(4538)와 데이터를 교환할 수 있다. 대안의 실시예들에서, 도 45에 예시된 PtP 링크들 중 임의의 것 또는 전부는 PtP 링크가 아닌 멀티-드롭 버스(multi-drop bus)로서 구현될 수 있다.
칩세트(4590)는 인터페이스 회로(4596)를 통해 버스(4520)와 통신할 수 있다. 버스(4520)는 그를 통해 통신하는, 버스 브리지(4518) 및 I/O 디바이스들(4516)과 같은, 하나 이상의 디바이스를 가질 수 있다. 버스(4510)를 통해, 버스 브리지(4518)는 (키보드, 마우스, 터치스크린, 또는 다른 입력 디바이스들과 같은) 사용자 인터페이스(4512), (모뎀들, 네트워크 인터페이스 디바이스들, 또는 컴퓨터 네트워크(4560)를 통해 통신할 수 있는 다른 타입의 통신 디바이스들과 같은) 통신 디바이스들(4526), 오디오 I/O 디바이스들(4514), 및/또는 데이터 스토리지 디바이스(4528)와 같은 다른 디바이스들과 통신할 수 있다. 데이터 스토리지 디바이스(4528)는 프로세서들(4570 및/또는 4580)에 의해 실행될 수 있는 코드(4530)를 저장할 수 있다. 대안의 실시예들에서, 버스 아키텍처들의 임의의 부분들은 하나 이상의 PtP 링크로 구현될 수 있다.
도 45에 묘사된 컴퓨터 시스템은 본 명세서에서 논의된 다양한 실시예들을 구현하기 위해 이용될 수 있는 컴퓨팅 시스템의 일 실시예의 개략적 예시이다. 도 45에 묘사된 시스템의 다양한 컴포넌트들이 시스템-온-칩(SoC) 아키텍처에 또는 본 명세서에서 제공된 예들 및 구현들의 기능 및 특징들을 달성할 수 있는 임의의 다른 적당한 구성으로 결합될 수 있음이 인식될 것이다.
추가의 예들에서, 머신 판독가능 매체는 머신에 의한 실행을 위한 명령어들을 저장하거나, 인코딩하거나, 또는 운반할 수 있고 머신으로 하여금 본 개시내용의 방법론들 중 임의의 하나 이상을 수행하게 하거나 그러한 명령어들에 의해 이용되거나 이들과 연관된 데이터 구조들을 저장하거나, 인코딩하거나, 또는 운반할 수 있는 임의의 유형적 매체(tangible medium)를 또한 포함한다. "머신 판독가능 매체"는 따라서 솔리드 스테이트 메모리들, 그리고 광학 및 자기 매체들을 포함할 수 있지만 이들로 제한되지 않는다. 머신 판독가능 매체들의 특정 예들은, 반도체 메모리 디바이스들(예컨대, EPROM(electrically programmable read-only memory), EEPROM(electrically erasable programmable read-only memory)) 및 플래시 메모리 디바이스들을, 예로서, 포함하지만 이들로 제한되지 않는 비휘발성 메모리; 내부 하드 디스크들 및 이동식 디스크들과 같은 자기 디스크들; 자기 광학 디스크들; 그리고 CD-ROM 및 DVD-ROM 디스크들을 포함한다. 머신 판독가능 매체에 의해 구체화되는 명령어들은 추가로 다수의 전송 프로토콜들 중 임의의 것(예컨대, HTTP)을 이용하는 네트워크 인터페이스 디바이스를 거쳐 전송 매체를 사용하여 통신 네트워크를 통해 전송되거나 수신될 수 있다.
본 명세서에 설명된 기능 유닛들 또는 능력들이, 그것들의 구현 독립성(implementation independence)을 보다 특히 강조하기 위해, 컴포넌트들 또는 모듈들로서 지칭되거나 라벨링되었을 수 있다는 점이 이해되어야 한다. 그러한 컴포넌트들은 임의의 수의 소프트웨어 또는 하드웨어 형태들로 구체화될 수 있다. 예를 들어, 컴포넌트 또는 모듈은 커스텀 VLSI(very-large-scale integration) 회로들 또는 게이트 어레이들, 로직 칩들, 트랜지스터들, 또는 다른 이산 컴포넌트들(discrete components)과 같은 규격품(off-the-shelf) 반도체들을 포함하는 하드웨어 회로로서 구현될 수 있다. 컴포넌트 또는 모듈은 또한 필드 프로그래머블 게이트 어레이들(field programmable gate arrays), 프로그래머블 어레이 로직(programmable array logic), 프로그래머블 로직 디바이스들(programmable logic devices), 또는 이와 유사한 것과 같은 프로그래머블 하드웨어 디바이스들로 구현될 수 있다. 컴포넌트들 또는 모듈들은 또한 다양한 타입의 프로세서들에 의한 실행을 위한 소프트웨어로 구현될 수 있다. 실행가능 코드의 식별된 컴포넌트 또는 모듈은, 예를 들어, 오브젝트(object), 프로시저(procedure), 또는 함수(function)로서 조직화될(organized) 수 있는, 예를 들어, 컴퓨터 명령어들의 하나 이상의 물리적 또는 논리적 블록을 포함할 수 있다. 그럼에도 불구하고, 식별된 컴포넌트 또는 모듈의 실행파일들(executables)이 물리적으로 함께 위치될 필요는 없고, 논리적으로 함께 조인될 때, 컴포넌트 또는 모듈을 구성하고 컴포넌트 또는 모듈에 대한 언급된 목적을 달성하는, 상이한 위치들에 저장된 이질적인 명령어들(disparate instructions)을 포함할 수 있다.
실제로, 실행가능 코드의 컴포넌트 또는 모듈은 단일 명령어 또는 많은 명령어들일 수 있고, 심지어 몇개의 상이한 코드 세그먼트에 걸쳐, 상이한 프로그램들 사이에서, 그리고 몇개의 메모리 디바이스 또는 프로세싱 시스템에 걸쳐 분산될 수 있다. 상세하게는, (코드 재작성 및 코드 분석과 같은) 설명된 프로세스의 일부 양태들은 코드가 배포되는(deployed) 프로세싱 시스템(예컨대, 센서 또는 로봇에 임베딩된 컴퓨터에서)과 상이한 프로세싱 시스템에서(예컨대, 데이터 센터에 있는 컴퓨터에서) 일어날 수 있다. 이와 유사하게, 연산 데이터가 본 명세서에서 컴포넌트들 또는 모듈들 내에서 식별되고 예시될 수 있으며, 임의의 적당한 형태로 구체화되고 임의의 적당한 타입의 데이터 구조 내에 조직화될 수 있다. 연산 데이터는 단일 데이터 세트로서 수집될 수 있거나, 상이한 스토리지 디바이스들에 걸쳐를 포함하여 상이한 위치들에 걸쳐 분산될 수 있으며, 적어도 부분적으로, 시스템 또는 네트워크 상에 단지 전자 신호들로서 존재할 수 있다. 컴포넌트들 또는 모듈들은, 원하는 기능들을 수행하도록 동작가능한 에이전트들을 포함하여, 수동 또는 능동일 수 있다.
지금 설명된(presently described) 방법, 시스템, 및 디바이스 실시예들의 부가 예들은 다음과 같은 비제한적 구성들을 포함한다. 다음과 같은 비제한적 예들 각각은 독자적일(stand on its own) 수 있거나, 이하에서 또는 본 개시내용 전반에 걸쳐 제공되는 다른 예들 중 임의의 하나 이상과 임의의 치환(permutation) 또는 조합(combination)으로 결합될(combined) 수 있다.
비록 본 개시내용이 특정 구현들 및 일반적으로 연관된 방법들 면에서 설명되었지만, 이러한 구현들 및 방법들의 변경들 및 치환들은 본 기술분야의 통상의 기술자에게 명백할 것이다. 예를 들어, 본 명세서에 설명된 액션들은 설명된 것과 상이한 순서로 수행될 수 있고 여전히 바람직한 결과들을 달성할 수 있다. 일 예로서, 첨부 도면들에 묘사된 프로세스들은 원하는 결과들을 달성하기 위해 도시된 특정의 순서 또는 순차적 순서를 반드시 요구하지는 않는다. 특정 구현들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 부가적으로, 다른 사용자 인터페이스 레이아웃들 및 기능이 지원될 수 있다. 다른 변형들이 이하의 청구항들의 범위 내에 있다.
본 명세서가 많은 특정 구현 상세들을 포함하고 있지만, 이들이 임의의 발명들의 또는 청구될 수 있는 것의 범위에 대한 제한들로서 해석되어서는 안되고, 오히려 특정의 발명들의 특정의 실시예들에 특정적인 특징들에 대한 설명으로서 해석되어야 한다. 개별적인 구현들과 관련하여 본 명세서에 설명되는 특정 특징들이 또한 단일 실시예에 결합하여 구현될 수 있다. 이와 달리, 단일 실시예와 관련하여 설명되는 다양한 특징들이 또한 다수의 실시예들에 개별적으로 또는 임의의 적당한 서브콤비네이션(subcombination)으로 구현될 수 있다. 더욱이, 특징들이 특정 조합들로 기능하는 것으로 앞서 설명되고 심지어 처음에 그 자체로서 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징이 일부 경우들에서 그 조합으로부터 제거될 수 있고, 청구된 조합은 서브콤비네이션 또는 서브콤비네이션의 변형에 관한 것일 수 있다.
이와 유사하게, 연산들이 도면들에서 특정의 순서로 묘사되어 있지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 연산들이 도시된 특정의 순서로 또는 순차적 순서로 수행되거나, 모든 예시된 연산들이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 더욱이, 앞서 기술된 실시예들에서의 다양한 시스템 컴포넌트들의 분리는 모든 실시예들에서 그러한 분리를 요구하는 것으로 이해되어서는 안되며, 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것이 이해되어야 한다.
이하의 예들은 본 명세서에 따른 실시예들에 관한 것이다. 예 1은 명령어들이 저장된 머신 액세스가능 스토리지 매체이며, 명령어들은 머신 상에서 실행될 때 머신으로 하여금: 메모리로부터 볼륨 데이터 구조를 획득하게 하고 - 볼륨 데이터 구조는 특정의 볼륨을 모델링하기 위한 것이고, 볼륨 데이터 구조는 특정의 볼륨을 복수의 상세 레벨들로 표현하며, 볼륨 데이터 구조 내의 제1 엔트리는 복셀들을 제1 상세 레벨로 표현하는 제1 비트 세트를 포함하고, 제1 상세 레벨은 볼륨 데이터 구조에서의 최하위 상세 레벨을 포함하며, 제1 비트 세트의 값들은 복셀들 중 대응하는 복셀이 각자의 지오메트리에 의해 적어도 부분적으로 점유되는지를 지시하고, 볼륨 데이터 구조는 복셀들을 제1 상세 레벨보다 높은 제2 상세 레벨로 표현하는 다수의 제2 엔트리들을 추가로 포함하며, 제2 상세 레벨에서의 복셀들은 제1 상세 레벨에서의 복셀들에 의해 표현되는 볼륨들의 서브볼륨들을 표현하며, 제2 엔트리들의 개수는 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 제1 비트 세트 내의 비트들의 개수에 대응함 -; 하나 이상의 연산을 수행하기 위해 볼륨 데이터 구조를 프로세싱하게 하며, 여기서 연산들은 특정의 볼륨 내의 지오메트리의 식별에 대응한다.
예 2는 예 1의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 제1 엔트리 및 하나 이상의 제2 엔트리는 볼륨 데이터 구조 내의 연속적인 엔트리들(contiguous entries)을 포함한다.
예 3은 예 2의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 서브볼륨들은 제1 서브볼륨들을 포함하며, 제2 엔트리들은 제2 상세 레벨에서의 대응하는 복셀이 지오메트리로 점유되어 있는지를 지시하는 값들을 포함하고, 볼륨 데이터 구조는 복셀들을 제2 상세 레벨보다 높은 제3 상세 레벨로 표현하는 하나 이상의 제3 엔트리들을 추가로 포함하며, 제3 상세 레벨에서의 복셀들은 제2 상세 레벨에서의 복셀들에 의해 표현되는 제1 서브볼륨들의 서브볼륨들을 표현하고, 제3 엔트리들의 개수는 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 제2 비트 세트 내의 비트들의 개수에 대응하며, 여기서 제3 엔트리들은 볼륨 데이터 구조에서 제2 엔트리들 중 마지막 것과 연속적이다.
예 4는 예 3의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 명령어들은, 실행될 때, 추가로 머신으로 하여금 제1 상세 레벨에서의 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 제1 비트 세트 내의 비트들의 개수에 기초하여 제3 레벨의 시작부분을 결정하게 한다.
예 5는 예 1 내지 예 4 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 제1 상세 레벨에 있는 각각의 복셀은 제1 엔트리 내의 2개 이상의 각자의 비트에 의해 표현된다.
예 6은 예 1 내지 예 5 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 명령어들은, 실행될 때, 추가로 머신으로 하여금 특정의 볼륨과 교차하는 광선을 결정하게 하고; 광선이 통과하는 제1 상세 레벨에서의 복셀들의 서브세트를 결정하게 하며; 광선이, 특정의 복셀이 지오메트리로 점유되어 있음을 지시하는 제1 엔트리 내의 대응하는 비트의 값에 기초하여 점유된 공간을 표현하는 복셀들의 서브세트 내의 특정의 복셀을, 만난다고 결정하게 한다.
예 7은 예 6의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 명령어들은, 실행될 때, 추가로 머신으로 하여금: 광선이 특정의 복셀을 만난다고 결정하는 것에 기초하여, 특정의 복셀에 대응하는 제2 엔트리들 중 특정의 제2 엔트리를 식별하게 하고; 광선이 제2 상세 레벨에서의 복셀들의 서브세트를 통과한다고 결정하게 하며; 특정의 제2 엔트리 내의 비트들의 값들로부터, 광선이 지오메트리로 점유된 제2 상세 레벨에서의 복셀을 만나는지를 결정하게 한다.
예 8은 예 6의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 광선이 특정의 복셀을 만난다고 결정하는 것에 적어도 부분적으로 기초하여 움직이는 디바이스의 잠재적 충돌을 검출하는 것을 포함한다.
예 9는 예 6의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 특정의 복셀을 만나는 광선에 대응하는 오디오 반사를 결정하는 것을 포함한다.
예 10은 예 9의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 볼륨 데이터 구조는 특정의 복셀을 점유하는 지오메트리의 반사 계수를 지시하는 데이터를 추가로 포함하며, 오디오 반사는 반사 계수에 적어도 부분적으로 기초한다.
예 11은 예 9 및 예 10 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 명령어들은, 실행될 때, 추가로 머신으로 하여금 오디오 반사를 결정하는 것에 적어도 부분적으로 기초하여 유한 임펄스 응답(FIR) 필터를 생성하게 한다.
예 12는 예 1 내지 예 11 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 특정의 볼륨에서 비어 있는 복셀들의 세트를 식별하는 것을 포함하며, 명령어들은, 실행될 때, 추가로 머신으로 하여금 비어 있는 복셀들의 세트에 대응하는 특정의 볼륨을 통한 자유 경로를 결정하게 한다.
예 13은 예 12의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 자유 경로는 3차원(3D) 자유 경로를 포함하며, 명령어들은, 실행될 때, 추가로 머신으로 하여금: 3D 자유 경로를 2차원(2D) 자유 경로 표현으로 변환하게 하고; 2D 자유 경로 표현을 기술하는 2D 경로 맵 데이터를 생성하게 한다.
예 14는 예 1 내지 예 13 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 컨볼루션 신경 네트워크(CNN)에 정의된 연산을 포함하며, 명령어들은, 실행될 때, 추가로 머신으로 하여금 볼륨 데이터 구조를 CNN의 특정의 계층에 대한 입력으로서 제공하게 하고, 여기서 연산은 특정의 계층과 연관된 하나 이상의 산술 연산을 포함한다.
예 15는 예 14의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 이진 "0" 값은 볼륨 데이터 구조의 엔트리들에서의 비어 있는 복셀을 지시하기 위한 것이며, 명령어들은, 실행될 때, 추가로 머신으로 하여금: 볼륨 데이터 구조에서 비어 있는 공간으로서 표현된 특정의 볼륨에서의 비어 있는 공간의 복셀들의 서브세트를 결정하게 하고; 볼륨 데이터 구조에서의 복셀들의 서브세트를 표현하는 비트들에 대응하는 산술 연산들을 생략하게 한다.
예 16은 예 15의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 명령어들은, 실행될 때, 추가로 머신으로 하여금 복셀들의 서브세트를 표현하는 비트들과 곱해질 가중치 값들의 페치들(fetches)을 생략하게 한다.
예 17은 예 15 및 예 16 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 명령어들은, 실행될 때, 추가로 머신으로 하여금 볼륨 데이터 구조에서의 이진 "0" 값들에 기초하여 비트맵을 생성하게 하고, 산술 연산들은 비트맵에 기초하여 생략된다.
예 18은 예 1 내지 예 17 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 명령어들은, 실행될 때, 추가로 머신으로 하여금: 특정의 볼륨 내에서의 지오메트리의 변화를 식별하게 하고; 지오메트리의 변화를 반영하기 위해 엔트리들의 대응하는 비트들을 수정하게 한다.
예 19는 예 1 내지 예 18 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 볼륨 데이터 구조에서의 각각의 엔트리는 64 비트 길이의 엔트리를 포함한다.
예 20은 예 19의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 제1 상세 레벨에서의 복셀들은 64개의 복셀을 포함하고, 제2 상세 레벨에서의 복셀들은 제1 상세 레벨에 있는 각각의 복셀에 대한 64개의 복셀을 포함한다.
예 21은 예 1 내지 예 20 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 디스플레이 디바이스 상에 디스플레이하기 위한 2차원 그래픽 프레젠테이션에 특정의 볼륨의 지오메트리를 렌더링하는 것을 포함한다.
예 22는 명령어들이 저장된 머신 액세스가능 스토리지 매체이며, 명령어들은, 머신 상에서 실행될 때, 머신으로 하여금: 특정의 볼륨 내에 존재하는 3차원 지오메트리의 적어도 일 부분을 기술하는 데이터를 획득하게 하고; 데이터를 볼륨 데이터 구조로 변환하게 하며, 여기서 볼륨 데이터 구조는 특정의 볼륨을 모델링하기 위한 것이고, 볼륨 데이터 구조는 특정의 볼륨을 복수의 상세 레벨들로 표현하며, 볼륨 데이터 구조 내의 제1 엔트리는 특정의 볼륨 내의 모든 복셀들을 제1 상세 레벨로 표현하는 제1 비트 세트를 포함하고, 제1 상세 레벨은 복수의 상세 레벨들 중 최하위 레벨을 포함하며, 제1 비트 세트의 각각의 비트의 값들은 제1 상세 레벨에서의 복셀들 중 대응하는 복셀이 지오메트리의 적어도 일 부분에 의해 적어도 부분적으로 점유되는지를 지시하고, 여기서 볼륨 데이터 구조는 복셀들을 제1 상세 레벨보다 높은 제2 상세 레벨로 표현하는 다수의 제2 엔트리들을 추가로 포함하며, 제2 상세 레벨에서의 복셀들은 제1 상세 레벨에서의 복셀들의 서브볼륨들을 표현하고, 제2 엔트리들의 개수는 대응하는 복셀이 점유되어 있음을 지시하는 값들을 갖는 제1 비트 세트 내의 비트들의 개수에 대응한다.
예 23은 예 22의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 데이터는 하나 이상의 이미지 센서를 사용하여 생성된다.
예 24는 예 22 및 예 23 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 데이터는 깊이 이미지를 포함한다.
예 25는 예 22 내지 예 24 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 데이터를 볼륨 데이터 구조로 변환하는 것은 데이터를 SLAM(simultaneous localization and mapping) 알고리즘을 사용하여 프로세싱하는 것을 포함한다.
예 26은 예 22 내지 예 25 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 볼륨 데이터 구조는 지오메트리의 물리적 특성을 식별하는 정보를 추가로 포함한다.
예 27은 하나 이상의 데이터 프로세싱 장치, 메모리, 및 볼륨 프로세싱 로직을 포함하는 시스템이다. 메모리는 볼륨 데이터 구조를 저장하기 위한 것이며, 볼륨 데이터 구조는 특정의 볼륨을 모델링하기 위한 것이고, 볼륨 데이터 구조는 특정의 볼륨을 복수의 상세 레벨들로 표현하며, 볼륨 데이터 구조 내의 제1 엔트리는 복셀들을 제1 상세 레벨로 표현하는 제1 비트 세트를 포함하고, 제1 상세 레벨은 볼륨 데이터 구조에서의 최하위 상세 레벨을 포함하며, 제1 비트 세트의 값들은 복셀들 중 대응하는 복셀이 각자의 지오메트리에 의해 적어도 부분적으로 점유되는지를 지시하고, 여기서 볼륨 데이터 구조는 복셀들을 제1 상세 레벨보다 높은 제2 상세 레벨로 표현하는 다수의 제2 엔트리들을 추가로 포함하며, 제2 상세 레벨에서의 복셀들은 제1 상세 레벨에서의 복셀들에 의해 표현되는 볼륨들의 서브볼륨들을 표현하며, 제2 엔트리들의 개수는 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 제1 비트 세트 내의 비트들의 개수에 대응한다. 볼륨 프로세싱 로직은 볼륨 데이터 구조를 획득하고, 볼륨 데이터 구조를 사용하여 복수의 상세 레벨들 중 임의의 상세 레벨에서의 특정의 볼륨의 지오메트리를 결정하기 위해 데이터 프로세싱 장치에 의해 실행가능하다.
예 28은 예 27의 주제의 적어도 일 부분을 포함할 수 있고, 디스플레이 디바이스 및 디스플레이 디바이스 상에 제시하기 위한 지오메트리를 렌더링하기 위해 데이터 프로세싱 장치에 의해 실행가능한 디스플레이 로직을 추가로 포함한다.
예 29는 예 28의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 디스플레이 디바이스는 가상 현실(VR), 증강 현실(AR), 및 혼합 현실(MR) 시스템 중 하나의 시스템의 디스플레이 디바이스를 포함한다.
예 30은 예 27 내지 예 29 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 스피커들 및 볼륨 데이터 구조에 기초하여 유한 임펄스 응답(FIR) 필터를 생성하고 스피커들에서 출력될 오디오 프레젠테이션에 FIR 필터를 적용하기 위해 데이터 프로세싱 장치에 의해 실행가능한 오디오 프로세싱 로직을 추가로 포함한다.
예 31은 명령어들이 저장된 머신 액세스가능 스토리지 매체이며, 명령어들은, 머신 상에서 실행될 때, 머신으로 하여금: 컨볼루션 신경 네트워크(CNN) 내의 복수의 계층들 중 특정의 계층에 대한 입력을 식별하게 하고 - 복수의 계층들은 ReLU(rectified linear unit) 계층을 포함함 -; 입력으로부터, ReLU 계층의 출력 벡터가 다수의 제로들을 포함할 것이라고 결정하게 하며; 제로들의 개수에 기초하여 비트맵을 생성하게 하고; 비트맵을 사용하여 입력에 대응하는 제거할 CNN에서의 연산들의 서브세트를 결정하게 한다.
예 32는 예 31의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 ReLU 계층의 출력 벡터가 다수의 제로들을 포함할 것이라고 결정하는 것은 출력 벡터를 도출하기 위해 입력에 대해 ReLU 계층을 수행하는 것을 포함한다.
예 33은 예 31의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 ReLU 계층의 출력 벡터가 다수의 제로들을 포함할 것이라고 결정하는 것은 CNN의 선행 계층에서의 피연산자들의 부호들에 기초하여 출력 벡터를 예측하는 것을 포함한다.
예 34는 예 33의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 선행 계층은 컨볼루션 계층(convolution layer) 또는 최대풀링 계층(maxpooling layer) 중 하나를 포함한다.
예 35는 예 31 내지 예 34 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산들의 서브세트는 복수의 계층들 중 ReLU 계층 이후의 계층의 산술 연산들을 포함한다.
예 36은 예 31 내지 예 35 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산들의 서브세트는 복수의 계층들 중 ReLU 계층 이후의 계층에 대응하는 페치 연산들을 포함하며, 페치 연산들은 ReLU 계층 이후의 계층의 연산들에서 사용하기 위해 메모리로부터 피연산자들을 페치하기 위한 것이다.
예 37은 하나 이상의 데이터 프로세싱 장치, 메모리, 비트맵 생성기, 및 스케줄러를 포함하는 시스템이다. 비트맵 생성기는 컨볼루션 신경 네트워크(CNN) 내의 복수의 계층들 중 특정의 계층에 대한 입력을 식별하고 - 복수의 계층들은 ReLU(rectified linear unit) 계층을 포함함 -; 입력으로부터, ReLU 계층의 출력 벡터가 다수의 제로들을 포함할 것이라고 결정하며; 제로들의 개수에 기초하여 비트맵을 생성하기 위해 데이터 프로세싱 장치에 의해 실행가능하다. 스케줄러는 메모리로부터 비트맵을 획득하고 CNN에서의 연산들의 수행을 스케줄링하기 위한 것이고, 여기서 스케줄러는 비트맵에 기초하여 연산들의 서브세트가 스킵되게 하기 위한 것이다.
예 38은 예 37의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 ReLU 계층의 출력 벡터가 다수의 제로들을 포함할 것이라고 결정하는 것은 출력 벡터를 도출하기 위해 입력에 대해 ReLU 계층을 수행하는 것을 포함한다.
예 39는 예 37의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 ReLU 계층의 출력 벡터가 다수의 제로들을 포함할 것이라고 결정하는 것은 CNN의 선행 계층에서의 피연산자들의 부호들에 기초하여 출력 벡터를 예측하는 것을 포함한다.
예 40은 예 39의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 선행 계층은 컨볼루션 계층 또는 최대풀링 계층 중 하나를 포함한다.
예 41은 예 37 내지 예 40 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산들의 서브세트는 복수의 계층들 중 ReLU 계층 이후의 계층의 산술 연산들을 포함한다.
예 42는 예 37 내지 예 41 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산들의 서브세트는 복수의 계층들 중 ReLU 계층 이후의 계층에 대응하는 페치 연산들을 포함하며, 페치 연산들은 ReLU 계층 이후의 계층의 연산들에서 사용하기 위해 메모리로부터 피연산자들을 페치하기 위한 것이다.
예 43은 방법이며, 이 방법은: 메모리로부터 볼륨 데이터 구조를 획득하는 단계 - 볼륨 데이터 구조는 특정의 볼륨을 모델링하기 위한 것이고, 볼륨 데이터 구조는 특정의 볼륨을 복수의 상세 레벨들로 표현하며, 볼륨 데이터 구조 내의 제1 엔트리는 복셀들을 제1 상세 레벨로 표현하는 제1 비트 세트를 포함하고, 제1 상세 레벨은 볼륨 데이터 구조에서의 최하위 상세 레벨을 포함하며, 제1 비트 세트의 값들은 복셀들 중 대응하는 복셀이 각자의 지오메트리에 의해 적어도 부분적으로 점유되는지를 지시하고, 볼륨 데이터 구조는 복셀들을 제1 상세 레벨보다 높은 제2 상세 레벨로 표현하는 다수의 제2 엔트리들을 추가로 포함하며, 제2 상세 레벨에서의 복셀들은 제1 상세 레벨에서의 복셀들에 의해 표현되는 볼륨들의 서브볼륨들을 표현하며, 제2 엔트리들의 개수는 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 제1 비트 세트 내의 비트들의 개수에 대응함 -; 하나 이상의 연산을 수행하기 위해 볼륨 데이터 구조를 프로세싱하는 단계 - 연산들은 특정의 볼륨 내의 지오메트리의 식별에 대응함 - 를 포함한다.
예 44는 예 43의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 제1 엔트리 및 하나 이상의 제2 엔트리는 볼륨 데이터 구조 내의 연속적인 엔트리들을 포함한다.
예 45는 예 44의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 서브볼륨들은 제1 서브볼륨들을 포함하며, 제2 엔트리들은 제2 상세 레벨에서의 대응하는 복셀이 지오메트리로 점유되어 있는지를 지시하는 값들을 포함하고, 볼륨 데이터 구조는 복셀들을 제2 상세 레벨보다 높은 제3 상세 레벨로 표현하는 하나 이상의 제3 엔트리들을 추가로 포함하며, 제3 상세 레벨에서의 복셀들은 제2 상세 레벨에서의 복셀들에 의해 표현되는 제1 서브볼륨들의 서브볼륨들을 표현하고, 제3 엔트리들의 개수는 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 제2 비트 세트 내의 비트들의 개수에 대응하며, 여기서 제3 엔트리들은 볼륨 데이터 구조에서 제2 엔트리들 중 마지막 것과 연속적이다.
예 46은 예 45의 주제의 적어도 일 부분을 포함할 수 있고, 제1 상세 레벨에서의 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 제1 비트 세트 내의 비트들의 개수에 기초하여 제3 레벨의 시작부분을 결정하는 단계를 추가로 포함한다.
예 47은 예 43 내지 예 46 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 제1 상세 레벨에 있는 각각의 복셀은 제1 엔트리 내의 2개 이상의 각자의 비트에 의해 표현된다.
예 48은 예 43 내지 예 47 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 특정의 볼륨과 교차하는 광선을 결정하는 단계; 광선이 통과하는 제1 상세 레벨에서의 복셀들의 서브세트를 결정하는 단계; 및 광선이, 특정의 복셀이 지오메트리로 점유되어 있음을 지시하는 제1 엔트리 내의 대응하는 비트의 값에 기초하여 점유된 공간을 표현하는 복셀들의 서브세트 내의 특정의 복셀을, 만난다고 결정하는 단계를 추가로 포함한다.
예 49는 예 48의 주제의 적어도 일 부분을 포함할 수 있고, 광선이 특정의 복셀을 만난다고 결정하는 것에 기초하여, 특정의 복셀에 대응하는 제2 엔트리들 중 특정의 제2 엔트리를 식별하는 단계; 광선이 제2 상세 레벨에서의 복셀들의 서브세트를 통과한다고 결정하는 단계; 및 특정의 제2 엔트리 내의 비트들의 값들로부터, 광선이 지오메트리로 점유된 제2 상세 레벨에서의 복셀을 만나는지를 결정하는 단계를 추가로 포함한다.
예 50은 예 48의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 광선이 특정의 복셀을 만난다고 결정하는 것에 적어도 부분적으로 기초하여 움직이는 디바이스의 잠재적 충돌을 검출하는 것을 포함한다.
예 51은 예 48의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 특정의 복셀을 만나는 광선에 대응하는 오디오 반사를 결정하는 것을 포함한다.
예 52는 예 51의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 볼륨 데이터 구조는 특정의 복셀을 점유하는 지오메트리의 반사 계수를 지시하는 데이터를 추가로 포함하며, 오디오 반사는 반사 계수에 적어도 부분적으로 기초한다.
예 53은 예 51의 주제의 적어도 일 부분을 포함할 수 있고, 오디오 반사를 결정하는 것에 적어도 부분적으로 기초하여 유한 임펄스 응답(FIR) 필터를 생성하는 단계를 추가로 포함한다.
예 54는 예 43 내지 예 53 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 특정의 볼륨에서 비어 있는 복셀들의 세트를 식별하는 것을 포함하며, 이 방법은 비어 있는 복셀들의 세트에 대응하는 특정의 볼륨을 통한 자유 경로를 결정하는 단계를 추가로 포함한다.
예 55는 예 54의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 자유 경로는 3차원(3D) 자유 경로를 포함하며, 이 방법은: 3D 자유 경로를 2차원(2D) 자유 경로 표현으로 변환하는 단계; 및 2D 자유 경로 표현을 기술하는 2D 경로 맵 데이터를 생성하는 단계를 추가로 포함한다.
예 56은 예 43 내지 예 55 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 컨볼루션 신경 네트워크(CNN)에 정의된 연산을 포함하며, 이 방법은 볼륨 데이터 구조를 CNN의 특정의 계층에 대한 입력으로서 제공하는 단계를 추가로 포함하고, 여기서 연산은 특정의 계층과 연관된 하나 이상의 산술 연산을 포함한다.
예 57은 예 56의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 이진 "0" 값은 볼륨 데이터 구조의 엔트리들에서의 비어 있는 복셀을 지시하기 위한 것이며, 이 방법은: 볼륨 데이터 구조에서 비어 있는 공간으로서 표현된 특정의 볼륨에서의 비어 있는 공간의 복셀들의 서브세트를 결정하는 단계; 볼륨 데이터 구조에서의 복셀들의 서브세트를 표현하는 비트들에 대응하는 산술 연산들을 생략하는 단계를 추가로 포함한다.
예 58은 예 57의 주제의 적어도 일 부분을 포함할 수 있고, 복셀들의 서브세트를 표현하는 비트들과 곱해질 가중치 값들의 페치들을 생략하는 단계를 추가로 포함한다.
예 59는 예 57의 주제의 적어도 일 부분을 포함할 수 있고, 볼륨 데이터 구조에서의 이진 "0" 값들에 기초하여 비트맵을 생성하는 단계를 추가로 포함하고, 산술 연산들은 비트맵에 기초하여 생략된다.
예 60은 예 43 내지 예 59 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 특정의 볼륨 내에서의 지오메트리의 변화를 식별하는 단계; 및 지오메트리의 변화를 반영하기 위해 엔트리들의 대응하는 비트들을 수정하는 단계를 추가로 포함한다.
예 61은 예 43 내지 예 60 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 볼륨 데이터 구조에서의 각각의 엔트리는 64 비트 길이의 엔트리를 포함한다.
예 62는 예 61의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 제1 상세 레벨에서의 복셀들은 64개의 복셀을 포함하고, 제2 상세 레벨에서의 복셀들은 제1 상세 레벨에 있는 각각의 복셀에 대한 64개의 복셀을 포함한다.
예 63은 예 43 내지 예 62 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 디스플레이 디바이스 상에 디스플레이하기 위한 2차원 그래픽 프레젠테이션에 특정의 볼륨의 지오메트리를 렌더링하는 것을 포함한다.
예 64는 예 43 내지 예 63 중 어느 한 예의 방법을 수행하기 위한 수단을 포함하는 시스템이다.
예 65는 방법이며, 이 방법은: 특정의 볼륨 내에 존재하는 3차원 지오메트리의 적어도 일 부분을 기술하는 데이터를 획득하는 단계; 및 데이터를 볼륨 데이터 구조로 변환하는 단계를 포함하며, 여기서 볼륨 데이터 구조는 특정의 볼륨을 모델링하기 위한 것이고, 볼륨 데이터 구조는 특정의 볼륨을 복수의 상세 레벨들로 표현하며, 볼륨 데이터 구조 내의 제1 엔트리는 특정의 볼륨 내의 모든 복셀들을 제1 상세 레벨로 표현하는 제1 비트 세트를 포함하고, 제1 상세 레벨은 복수의 상세 레벨들 중 최하위 레벨을 포함하며, 제1 비트 세트의 각각의 비트의 값들은 제1 상세 레벨에서의 복셀들 중 대응하는 복셀이 지오메트리의 적어도 일 부분에 의해 적어도 부분적으로 점유되는지를 지시하고, 여기서 볼륨 데이터 구조는 복셀들을 제1 상세 레벨보다 높은 제2 상세 레벨로 표현하는 다수의 제2 엔트리들을 추가로 포함하며, 제2 상세 레벨에서의 복셀들은 제1 상세 레벨에서의 복셀들의 서브볼륨들을 표현하고, 제2 엔트리들의 개수는 대응하는 복셀이 점유되어 있음을 지시하는 값들을 갖는 제1 비트 세트 내의 비트들의 개수에 대응한다.
예 66은 예 65의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 데이터는 하나 이상의 이미지 센서를 사용하여 생성된다.
예 67은 예 65 및 예 66 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 데이터는 깊이 이미지를 포함한다.
예 68은 예 65 내지 예 67 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 데이터를 볼륨 데이터 구조로 변환하는 단계는 데이터를 SLAM(simultaneous localization and mapping) 알고리즘을 사용하여 프로세싱하는 단계를 포함한다.
예 69는 예 65 내지 예 68 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 볼륨 데이터 구조는 지오메트리의 물리적 특성을 식별하는 정보를 추가로 포함한다.
예 70은 예 65 내지 예 69 중 어느 한 예의 방법을 수행하기 위한 수단을 포함하는 시스템이다.
예 71은 방법이며, 이 방법은: 컨볼루션 신경 네트워크(CNN) 내의 복수의 계층들 중 특정의 계층에 대한 입력을 식별하는 단계 - 복수의 계층들은 ReLU(rectified linear unit) 계층을 포함함 -; 입력으로부터, ReLU 계층의 출력 벡터가 다수의 제로들을 포함할 것이라고 결정하는 단계; 제로들의 개수에 기초하여 비트맵을 생성하는 단계; 및 비트맵을 사용하여 입력에 대응하는 제거할 CNN에서의 연산들의 서브세트를 결정하는 단계를 포함한다.
예 72는 예 71의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 ReLU 계층의 출력 벡터가 다수의 제로들을 포함할 것이라고 결정하는 단계는 출력 벡터를 도출하기 위해 입력에 대해 ReLU 계층을 수행하는 단계를 포함한다.
예 73은 예 71의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 ReLU 계층의 출력 벡터가 다수의 제로들을 포함할 것이라고 결정하는 단계는 CNN의 선행 계층에서의 피연산자들의 부호들에 기초하여 출력 벡터를 예측하는 단계를 포함한다.
예 74는 예 73의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 선행 계층은 컨볼루션 계층 또는 최대풀링 계층 중 하나를 포함한다.
예 75는 예 71 내지 예 74 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산들의 서브세트는 복수의 계층들 중 ReLU 계층 이후의 계층의 산술 연산들을 포함한다.
예 76은 예 71 내지 예 75 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산들의 서브세트는 복수의 계층들 중 ReLU 계층 이후의 계층에 대응하는 페치 연산들을 포함하며, 페치 연산들은 ReLU 계층 이후의 계층의 연산들에서 사용하기 위해 메모리로부터 피연산자들을 페치하기 위한 것이다.
예 77은 예 71 내지 예 76 중 어느 한 예의 방법을 수행하기 위한 수단을 포함하는 시스템이다.
예 78은 예 1의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 지오메트리 내의 객체를 식별하기 위해 볼륨 데이터 구조를 컨볼루션 신경 네트워크에 대한 입력으로서 사용하여 3D 추론을 수행하는 것을 포함한다.
예 79는 예 43의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 지오메트리 내의 객체를 식별하기 위해 볼륨 데이터 구조를 컨볼루션 신경 네트워크에 대한 입력으로서 사용하여 3D 추론을 수행하는 것을 포함한다.
예 80은 데이터 프로세싱 장치; 메모리; 및 회로부를 포함하는 장치이다. 메모리는 메모리로부터의 볼륨 데이터 구조를 저장하기 위한 것이며, 볼륨 데이터 구조는 특정의 볼륨을 모델링하기 위한 것이고, 볼륨 데이터 구조는 특정의 볼륨을 복수의 상세 레벨들로 표현하며, 볼륨 데이터 구조 내의 제1 엔트리는 복셀들을 제1 상세 레벨로 표현하는 제1 비트 세트를 포함하고, 제1 상세 레벨은 볼륨 데이터 구조에서의 최하위 상세 레벨을 포함하며, 제1 비트 세트의 값들은 복셀들 중 대응하는 복셀이 각자의 지오메트리에 의해 적어도 부분적으로 점유되는지를 지시하고, 여기서 볼륨 데이터 구조는 복셀들을 제1 상세 레벨보다 높은 제2 상세 레벨로 표현하는 다수의 제2 엔트리들을 추가로 포함하며, 제2 상세 레벨에서의 복셀들은 제1 상세 레벨에서의 복셀들에 의해 표현되는 볼륨들의 서브볼륨들을 표현하며, 제2 엔트리들의 개수는 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 제1 비트 세트 내의 비트들의 개수에 대응한다. 회로부는 볼륨 데이터 구조를 사용하여 하나 이상의 연산을 수행하기 위한 것이며, 여기서 연산들은 특정의 볼륨 내의 지오메트리의 식별에 대응한다.
예 81은 예 80의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 제1 엔트리 및 하나 이상의 제2 엔트리는 볼륨 데이터 구조 내의 연속적인 엔트리들을 포함한다.
예 82는 예 81의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 서브볼륨들은 제1 서브볼륨들을 포함하며, 제2 엔트리들은 제2 상세 레벨에서의 대응하는 복셀이 지오메트리로 점유되어 있는지를 지시하는 값들을 포함하고, 볼륨 데이터 구조는 복셀들을 제2 상세 레벨보다 높은 제3 상세 레벨로 표현하는 하나 이상의 제3 엔트리들을 추가로 포함하며, 제3 상세 레벨에서의 복셀들은 제2 상세 레벨에서의 복셀들에 의해 표현되는 제1 서브볼륨들의 서브볼륨들을 표현하고, 제3 엔트리들의 개수는 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 제2 비트 세트 내의 비트들의 개수에 대응하며, 여기서 제3 엔트리들은 볼륨 데이터 구조에서 제2 엔트리들 중 마지막 것과 연속적이다.
예 83은 예 82의 주제의 적어도 일 부분을 포함할 수 있고, 제1 상세 레벨에서의 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 제1 비트 세트 내의 비트들의 개수에 기초하여 제3 레벨의 시작부분을 결정하기 위한 로직을 추가로 포함한다.
예 84는 예 80 내지 예 83 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 제1 상세 레벨에 있는 각각의 복셀은 제1 엔트리 내의 2개 이상의 각자의 비트에 의해 표현된다.
예 85는 예 80 내지 예 84 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 특정의 볼륨과 교차하는 광선을 결정하고; 광선이 통과하는 제1 상세 레벨에서의 복셀들의 서브세트를 결정하며; 광선이, 특정의 복셀이 지오메트리로 점유되어 있음을 지시하는 제1 엔트리 내의 대응하는 비트의 값에 기초하여 점유된 공간을 표현하는 복셀들의 서브세트 내의 특정의 복셀을, 만난다고 결정하기 위한 로직을 추가로 포함한다.
예 86은 예 85의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 로직은 추가로: 광선이 특정의 복셀을 만난다고 결정하는 것에 기초하여, 특정의 복셀에 대응하는 제2 엔트리들 중 특정의 제2 엔트리를 식별하고; 광선이 제2 상세 레벨에서의 복셀들의 서브세트를 통과한다고 결정하며; 특정의 제2 엔트리 내의 비트들의 값들로부터, 광선이 지오메트리로 점유된 제2 상세 레벨에서의 복셀을 만나는지를 결정하기 위한 것이다.
예 87은 예 85의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 광선이 특정의 복셀을 만난다고 결정하는 것에 적어도 부분적으로 기초하여 움직이는 디바이스의 잠재적 충돌을 검출하는 것을 포함한다.
예 88은 예 85의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 특정의 복셀을 만나는 광선에 대응하는 오디오 반사를 결정하는 것을 포함한다.
예 89는 예 88의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 볼륨 데이터 구조는 특정의 복셀을 점유하는 지오메트리의 반사 계수를 지시하는 데이터를 추가로 포함하며, 오디오 반사는 반사 계수에 적어도 부분적으로 기초한다.
예 90은 예 88 및 예 89 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 오디오 반사를 결정하는 것에 적어도 부분적으로 기초하여 유한 임펄스 응답(FIR) 필터를 생성하기 위한 필터 생성 로직을 추가로 포함한다.
예 91은 예 80 내지 예 90 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 특정의 볼륨에서 비어 있는 복셀들의 세트를 식별하는 것을 포함하며, 이 장치는 비어 있는 복셀들의 세트에 대응하는 특정의 볼륨을 통한 자유 경로를 결정하기 위한 경로 탐색 로직을 추가로 포함한다.
예 92는 예 91의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 자유 경로는 3차원(3D) 자유 경로를 포함하며, 경로 탐색 로직은 추가로: 3D 자유 경로를 2차원(2D) 자유 경로 표현으로 변환하고; 2D 자유 경로 표현을 기술하는 2D 경로 맵 데이터를 생성하기 위한 것이다.
예 93은 예 80 내지 예 92 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 컨볼루션 신경 네트워크(CNN)에 정의된 연산을 포함하며, 장치는 볼륨 데이터 구조를 CNN의 특정의 계층에 대한 입력으로서 제공하기 위한 머신 러닝 로직을 추가로 포함하며, 여기서 연산은 특정의 계층과 연관된 하나 이상의 산술 연산을 포함한다.
예 94는 예 93의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 이진 "0" 값은 볼륨 데이터 구조의 엔트리들에서의 비어 있는 복셀을 지시하기 위한 것이며, 이 장치는 볼륨 데이터 구조에서 비어 있는 공간으로서 표현된 특정의 볼륨에서의 비어 있는 공간의 복셀들의 서브세트를 결정하고; 볼륨 데이터 구조에서의 복셀들의 서브세트를 표현하는 비트들에 대응하는 산술 연산들을 생략하기 위한 제어기를 추가로 포함한다.
예 95는 예 94의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 제어기는 추가로 복셀들의 서브세트를 표현하는 비트들과 곱해질 가중치 값들의 페치들을 생략하기 위한 것이다.
예 96은 예 94 및 예 95 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 볼륨 데이터 구조에서의 이진 "0" 값들에 기초하여 비트맵을 생성하기 위한 비트맵 생성기를 추가로 포함하고, 산술 연산들은 비트맵에 기초하여 생략된다.
예 97은 예 80 내지 예 96 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 특정의 볼륨 내에서의 지오메트리의 변화를 식별하고; 지오메트리의 변화를 반영하기 위해 엔트리들의 대응하는 비트들을 수정하기 위한 로직을 추가로 포함한다.
예 98은 예 80 내지 예 97 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 볼륨 데이터 구조에서의 각각의 엔트리는 64 비트 길이의 엔트리를 포함한다.
예 99는 예 98의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 제1 상세 레벨에서의 복셀들은 64개의 복셀을 포함하고, 제2 상세 레벨에서의 복셀들은 제1 상세 레벨에 있는 각각의 복셀에 대한 64개의 복셀을 포함한다.
예 100은 예 80 내지 예 99 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 디스플레이 디바이스 상에 디스플레이하기 위한 2차원 그래픽 프레젠테이션에 특정의 볼륨의 지오메트리를 렌더링하는 것을 포함한다.
예 101은 예 80 내지 예 100 중 어느 한 예의 주제의 적어도 일 부분을 포함할 수 있고, 여기서 연산은 지오메트리 내의 객체를 식별하기 위해 볼륨 데이터 구조를 컨볼루션 신경 네트워크에 대한 입력으로서 사용하여 3D 추론을 수행하는 것을 포함한다.
따라서, 주제의 특정의 실시예들이 기술되었다. 다른 실시예들이 이하의 청구항들의 범위 내에 있다. 일부 경우들에서, 청구항들에서 열거된 액션들은 상이한 순서로 수행될 수 있고 바람직한 결과들을 여전히 달성할 수 있다. 그에 부가하여, 첨부 도면들에 묘사된 프로세스들은 바람직한 결과들을 달성하기 위해 도시된 특정의 순서 또는 순차적 순서를 반드시 요구하지는 않는다.
Claims (39)
- 장치로서,
데이터 프로세싱 장치;
메모리로부터의 볼륨 데이터 구조(volumetric data structure)를 저장하기 위한 메모리 - 상기 볼륨 데이터 구조는 특정의 볼륨을 모델링하기 위한 것이고, 상기 볼륨 데이터 구조는 상기 특정의 볼륨을 복수의 상세 레벨들(levels of detail)로 표현하며, 상기 볼륨 데이터 구조 내의 제1 엔트리는 복셀들을 제1 상세 레벨로 표현하는 제1 비트 세트를 포함하고, 상기 제1 상세 레벨은 상기 볼륨 데이터 구조에서의 최하위 상세 레벨을 포함하며, 상기 제1 비트 세트의 값들은 상기 복셀들 중 대응하는 복셀이 각자의 지오메트리에 의해 적어도 부분적으로 점유되는지를 지시하고, 상기 볼륨 데이터 구조는 복셀들을 상기 제1 상세 레벨보다 높은 제2 상세 레벨로 표현하는 다수의 제2 엔트리들을 추가로 포함하며, 상기 제2 상세 레벨에서의 상기 복셀들은 상기 제1 상세 레벨에서의 복셀들에 의해 표현되는 볼륨들(volumes)의 서브볼륨들(subvolumes)을 표현하며, 상기 제2 엔트리들의 개수는 대응하는 복셀 볼륨(voxel volume)이 점유되어 있음을 지시하는 값들을 갖는 상기 제1 비트 세트 내의 비트들의 개수에 대응함 -; 및
상기 볼륨 데이터 구조를 사용하여 하나 이상의 연산(operation)을 수행하기 위한 회로부 - 상기 연산들은 상기 특정의 볼륨 내의 상기 지오메트리의 식별에 대응함 -
를 포함하는, 장치. - 제1항에 있어서, 상기 제1 엔트리 및 상기 하나 이상의 제2 엔트리는 상기 볼륨 데이터 구조 내의 연속적인 엔트리들(contiguous entries)을 포함하는, 장치.
- 제2항에 있어서, 서브볼륨들(subvolumes)은 제1 서브볼륨들을 포함하고, 상기 제2 엔트리들은 상기 제2 상세 레벨에서의 대응하는 복셀이 지오메트리로 점유되어 있는지를 지시하는 값들을 포함하고, 상기 볼륨 데이터 구조는 복셀들을 상기 제2 상세 레벨보다 높은 제3 상세 레벨로 표현하는 하나 이상의 제3 엔트리들을 추가로 포함하며, 상기 제3 상세 레벨에서의 상기 복셀들은 상기 제2 상세 레벨에서의 복셀들에 의해 표현되는 상기 제1 서브볼륨들의 서브볼륨들을 표현하고, 상기 제3 엔트리들의 개수는 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 상기 제2 비트 세트 내의 비트들의 개수에 대응하며, 상기 제3 엔트리들은 상기 볼륨 데이터 구조에서 상기 제2 엔트리들 중 마지막 것과 연속적인, 장치.
- 제3항에 있어서, 상기 제1 상세 레벨에서의 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 상기 제1 비트 세트 내의 비트들의 개수에 기초하여 상기 제3 레벨의 시작부분(beginning)을 결정하기 위한 로직을 추가로 포함하는, 장치.
- 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 제1 상세 레벨에 있는 각각의 복셀은 상기 제1 엔트리 내의 2개 이상의 각자의 비트에 의해 표현되는, 장치.
- 제1항 내지 제5항 중 어느 한 항에 있어서,
상기 특정의 볼륨과 교차하는 광선을 결정하고;
상기 광선이 통과하는 상기 제1 상세 레벨에서의 상기 복셀들의 서브세트를 결정하며;
상기 광선이, 상기 특정의 복셀이 지오메트리로 점유되어 있음을 지시하는 상기 제1 엔트리 내의 대응하는 비트의 값에 기초하여 점유된 공간을 표현하는 상기 복셀들의 서브세트 내의 특정의 복셀을, 만난다고 결정하기 위한
로직을 추가로 포함하는, 장치. - 제6항에 있어서, 상기 로직은 추가로:
상기 광선이 상기 특정의 복셀을 만난다고 결정하는 것에 기초하여, 상기 특정의 복셀에 대응하는 상기 제2 엔트리들 중 특정의 제2 엔트리를 식별하고;
상기 광선이 상기 제2 상세 레벨에서의 복셀들의 서브세트를 통과한다고 결정하며;
상기 특정의 제2 엔트리 내의 비트들의 값들로부터, 상기 광선이 지오메트리로 점유된 상기 제2 상세 레벨에서의 복셀을 만나는지를 결정하기 위한 것인, 장치. - 제6항에 있어서, 상기 연산은 상기 광선이 상기 특정의 복셀을 만난다고 결정하는 것에 적어도 부분적으로 기초하여 움직이는 디바이스(moving device)의 잠재적 충돌을 검출하는 것을 포함하는, 장치.
- 제6항에 있어서, 상기 연산은 상기 특정의 복셀을 만나는 상기 광선에 대응하는 오디오 반사를 결정하는 것을 포함하는, 장치.
- 제9항에 있어서, 상기 볼륨 데이터 구조는 상기 특정의 복셀을 점유하는 상기 지오메트리의 반사 계수를 지시하는 데이터를 추가로 포함하며, 상기 오디오 반사는 상기 반사 계수에 적어도 부분적으로 기초하는, 장치.
- 제9항 또는 제10항에 있어서, 상기 오디오 반사를 결정하는 것에 적어도 부분적으로 기초하여 유한 임펄스 응답(finite impulse response)(FIR) 필터를 생성하기 위한 필터 생성 로직을 추가로 포함하는, 장치.
- 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 연산은 상기 특정의 볼륨에서 비어 있는 복셀들의 세트를 식별하는 것을 포함하며, 상기 장치는 상기 비어 있는 복셀들의 세트에 대응하는 상기 특정의 볼륨을 통한 자유 경로를 결정하기 위한 경로 탐색 로직을 추가로 포함하는, 장치.
- 제12항에 있어서, 상기 자유 경로는 3차원(3D) 자유 경로를 포함하며, 상기 경로 탐색 로직은 추가로:
상기 3D 자유 경로를 2차원(2D) 자유 경로 표현으로 변환하고;
상기 2D 자유 경로 표현을 기술하는 2D 경로 맵 데이터를 생성하기 위한 것인, 장치. - 제1항 내지 제13항 중 어느 한 항에 있어서, 상기 연산은 컨볼루션 신경 네트워크(convolutional neural network)(CNN)에 정의된 연산을 포함하며, 장치는
상기 볼륨 데이터 구조를 상기 CNN의 특정의 계층에 대한 입력으로서 제공하기 위한
머신 러닝 로직(machine learning logic)을 추가로 포함하며, 상기 연산은 상기 특정의 계층과 연관된 하나 이상의 산술 연산을 포함하는, 장치. - 제14항에 있어서, 이진 "0" 값은 상기 볼륨 데이터 구조의 상기 엔트리들에서의 비어 있는 복셀을 지시하기 위한 것이며, 상기 장치는
상기 볼륨 데이터 구조에서 비어 있는 공간으로서 표현된 상기 특정의 볼륨에서의 비어 있는 공간의 복셀들의 서브세트를 결정하고;
상기 볼륨 데이터 구조에서의 상기 복셀들의 서브세트를 표현하는 비트들에 대응하는 상기 산술 연산들을 생략하기 위한
제어기를 추가로 포함하는, 장치. - 제15항에 있어서, 상기 제어기는 추가로 상기 복셀들의 서브세트를 표현하는 상기 비트들과 곱해질 가중치 값들의 페치들(fetches)을 생략하기 위한 것인, 장치.
- 제15항 또는 제16항에 있어서, 상기 볼륨 데이터 구조에서의 상기 이진 "0" 값들에 기초하여 비트맵을 생성하기 위한 비트맵 생성기를 추가로 포함하고, 상기 산술 연산들은 상기 비트맵에 기초하여 생략되는, 장치.
- 제1항 내지 제17항 중 어느 한 항에 있어서,
상기 특정의 볼륨 내에서의 지오메트리의 변화를 식별하고;
상기 지오메트리의 변화를 반영하기 위해 상기 엔트리들의 대응하는 비트들을 수정하기 위한
로직을 추가로 포함하는, 장치. - 제1항 내지 제18항 중 어느 한 항에 있어서, 상기 볼륨 데이터 구조에서의 각각의 엔트리는 64 비트 길이의 엔트리를 포함하는, 장치.
- 제19항에 있어서, 상기 제1 상세 레벨에서의 상기 복셀들은 64개의 복셀을 포함하고, 상기 제2 상세 레벨에서의 상기 복셀들은 상기 제1 상세 레벨에 있는 각각의 복셀에 대한 64개의 복셀을 포함하는, 장치.
- 제1항 내지 제20항 중 어느 한 항에 있어서, 상기 연산은 디스플레이 디바이스 상에 디스플레이하기 위한 2차원 그래픽 프레젠테이션에 상기 특정의 볼륨의 상기 지오메트리를 렌더링하는 것을 포함하는, 장치.
- 제1항 내지 제21항 중 어느 한 항에 있어서, 상기 연산은 상기 지오메트리 내의 객체를 식별하기 위해 상기 볼륨 데이터 구조를 컨볼루션 신경 네트워크에 대한 입력으로서 사용하여 3D 추론을 수행하는 것을 포함하는, 장치.
- 명령어들이 저장된 적어도 하나의 머신 액세스가능 스토리지 매체로서, 상기 명령어들은, 머신 상에서 실행될 때, 상기 머신으로 하여금:
특정의 볼륨 내에 존재하는 3차원 지오메트리의 적어도 일 부분을 기술하는 데이터를 획득하게 하고;
상기 데이터를 볼륨 데이터 구조로 변환하게 하며,
상기 볼륨 데이터 구조는 상기 특정의 볼륨을 모델링하기 위한 것이고, 상기 볼륨 데이터 구조는 상기 특정의 볼륨을 복수의 상세 레벨들로 표현하며, 상기 볼륨 데이터 구조 내의 제1 엔트리는 상기 특정의 볼륨 내의 모든 복셀들을 제1 상세 레벨로 표현하는 제1 비트 세트를 포함하고, 상기 제1 상세 레벨은 상기 복수의 상세 레벨들 중 최하위 레벨을 포함하며, 상기 제1 비트 세트의 각각의 비트의 값들은 상기 제1 상세 레벨에서의 상기 복셀들 중 대응하는 복셀이 상기 지오메트리의 적어도 일 부분에 의해 적어도 부분적으로 점유되는지를 지시하고,
상기 볼륨 데이터 구조는 복셀들을 상기 제1 상세 레벨보다 높은 제2 상세 레벨로 표현하는 다수의 제2 엔트리들을 추가로 포함하며, 상기 제2 상세 레벨에서의 상기 복셀들은 상기 제1 상세 레벨에서의 상기 복셀들의 서브볼륨들을 표현하고, 상기 제2 엔트리들의 개수는 대응하는 복셀이 점유되어 있음을 지시하는 값들을 갖는 상기 제1 비트 세트 내의 비트들의 개수에 대응하는, 스토리지 매체. - 제23항에 있어서, 상기 데이터는 하나 이상의 이미지 센서를 사용하여 생성되는, 스토리지 매체.
- 제23항 또는 제24항에 있어서, 상기 데이터는 깊이 이미지를 포함하는, 스토리지 매체.
- 제23항 내지 제25항 중 어느 한 항에 있어서, 상기 데이터를 상기 볼륨 데이터 구조로 변환하는 것은 상기 데이터를 SLAM(simultaneous localization and mapping) 알고리즘을 사용하여 프로세싱하는 것을 포함하는, 스토리지 매체.
- 제23항 내지 제26항 중 어느 한 항에 있어서, 상기 볼륨 데이터 구조는 상기 지오메트리의 물리적 특성을 식별하는 정보를 추가로 포함하는, 스토리지 매체.
- 시스템으로서,
하나 이상의 데이터 프로세싱 장치;
볼륨 데이터 구조를 저장하기 위한 메모리 - 상기 볼륨 데이터 구조는 특정의 볼륨을 모델링하기 위한 것이고, 상기 볼륨 데이터 구조는 상기 특정의 볼륨을 복수의 상세 레벨들로 표현하며, 상기 볼륨 데이터 구조 내의 제1 엔트리는 복셀들을 제1 상세 레벨로 표현하는 제1 비트 세트를 포함하고, 상기 제1 상세 레벨은 상기 볼륨 데이터 구조에서의 최하위 상세 레벨을 포함하며, 상기 제1 비트 세트의 값들은 상기 복셀들 중 대응하는 복셀이 각자의 지오메트리에 의해 적어도 부분적으로 점유되는지를 지시하고, 상기 볼륨 데이터 구조는 복셀들을 상기 제1 상세 레벨보다 높은 제2 상세 레벨로 표현하는 다수의 제2 엔트리들을 추가로 포함하며, 상기 제2 상세 레벨에서의 상기 복셀들은 상기 제1 상세 레벨에서의 복셀들에 의해 표현되는 볼륨들의 서브볼륨들을 표현하며, 상기 제2 엔트리들의 개수는 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 상기 제1 비트 세트 내의 비트들의 개수에 대응함 -; 및
상기 볼륨 데이터 구조를 획득하고;
상기 볼륨 데이터 구조를 사용하여 상기 복수의 상세 레벨들 중 임의의 상세 레벨에서의 상기 특정의 볼륨의 상기 지오메트리를 결정하기 위해
상기 데이터 프로세싱 장치에 의해 실행가능한, 볼륨 프로세싱 로직
을 포함하는, 시스템. - 제28항에 있어서, 디스플레이 디바이스 및 상기 디스플레이 디바이스 상에 제시하기 위한 상기 지오메트리를 렌더링하기 위해 상기 데이터 프로세싱 장치에 의해 실행가능한 디스플레이 로직을 추가로 포함하는, 시스템.
- 제29항에 있어서, 상기 디스플레이 디바이스는 가상 현실(VR), 증강 현실(AR), 및 혼합 현실(MR) 시스템 중 하나의 시스템의 디스플레이 디바이스를 포함하는, 시스템.
- 제28항 내지 제30항 중 어느 한 항에 있어서, 스피커들 및 상기 볼륨 데이터 구조에 기초하여 유한 임펄스 응답(FIR) 필터를 생성하고 상기 스피커들에서 출력될 오디오 프레젠테이션에 상기 FIR 필터를 적용하기 위해 상기 데이터 프로세싱 장치에 의해 실행가능한 오디오 프로세싱 로직을 추가로 포함하는, 시스템.
- 명령어들이 저장된 적어도 하나의 머신 액세스가능 스토리지 매체로서, 상기 명령어들은, 머신 상에서 실행될 때, 상기 머신으로 하여금:
컨볼루션 신경 네트워크(CNN) 내의 복수의 계층들 중 특정의 계층에 대한 입력을 식별하게 하고 - 상기 복수의 계층들은 ReLU(rectified linear unit) 계층을 포함함 -;
상기 입력으로부터, 상기 ReLU 계층의 출력 벡터가 다수의 제로들(a number of zeros)을 포함할 것이라고 결정하게 하며;
상기 제로들의 개수에 기초하여 비트맵을 생성하게 하고;
상기 비트맵을 사용하여 상기 입력에 대응하는 제거할 상기 CNN에서의 연산들의 서브세트를 결정하게 하는, 스토리지 매체. - 제32항에 있어서, 상기 ReLU 계층의 상기 출력 벡터가 다수의 제로들을 포함할 것이라고 결정하는 것은 상기 출력 벡터를 도출하기 위해 상기 입력에 대해 상기 ReLU 계층을 수행하는 것을 포함하는, 스토리지 매체.
- 제32항에 있어서, 상기 ReLU 계층의 상기 출력 벡터가 다수의 제로들을 포함할 것이라고 결정하는 것은 상기 CNN의 선행 계층에서의 피연산자들의 부호들에 기초하여 상기 출력 벡터를 예측하는 것을 포함하는, 스토리지 매체.
- 제34항에 있어서, 상기 선행 계층은 컨볼루션 계층(convolution layer) 또는 최대풀링 계층(maxpooling layer) 중 하나를 포함하는, 스토리지 매체.
- 제32항 내지 제35항 중 어느 한 항에 있어서, 상기 연산들의 서브세트는 상기 복수의 계층들 중 상기 ReLU 계층 이후의 계층의 산술 연산들을 포함하는, 스토리지 매체.
- 제32항 내지 제36항 중 어느 한 항에 있어서, 상기 연산들의 서브세트는 상기 복수의 계층들 중 상기 ReLU 계층 이후의 계층에 대응하는 페치 연산들을 포함하며, 상기 페치 연산들은 상기 ReLU 계층 이후의 상기 계층의 연산들에서 사용하기 위해 메모리로부터 피연산자들을 페치하기 위한 것인, 스토리지 매체.
- 시스템으로서,
하나 이상의 데이터 프로세싱 장치;
메모리;
컨볼루션 신경 네트워크(CNN) 내의 복수의 계층들 중 특정의 계층에 대한 입력을 식별하고 - 상기 복수의 계층들은 ReLU(rectified linear unit) 계층을 포함함 -;
상기 입력으로부터, 상기 ReLU 계층의 출력 벡터가 다수의 제로들을 포함할 것이라고 결정하며;
상기 제로들의 개수에 기초하여 비트맵을 생성하기 위해
상기 데이터 프로세싱 장치에 의해 실행가능한, 비트맵 생성기; 및
메모리로부터 상기 비트맵을 획득하고;
상기 CNN에서의 연산들의 수행을 스케줄링하기 위한
스케줄러
를 포함하고, 상기 스케줄러는 상기 비트맵에 기초하여 상기 연산들의 서브세트가 스킵되게 하기 위한 것인, 시스템. - 명령어들이 저장된 적어도 하나의 머신 액세스가능 스토리지 매체로서, 상기 명령어들은, 머신 상에서 실행될 때, 상기 머신으로 하여금:
메모리로부터 볼륨 데이터 구조를 획득하게 하고 - 상기 볼륨 데이터 구조는 특정의 볼륨을 모델링하기 위한 것이고, 상기 볼륨 데이터 구조는 상기 특정의 볼륨을 복수의 상세 레벨들로 표현하며, 상기 볼륨 데이터 구조 내의 제1 엔트리는 복셀들을 제1 상세 레벨로 표현하는 제1 비트 세트를 포함하고, 상기 제1 상세 레벨은 상기 볼륨 데이터 구조에서의 최하위 상세 레벨을 포함하며, 상기 제1 비트 세트의 값들은 상기 복셀들 중 대응하는 복셀이 각자의 지오메트리에 의해 적어도 부분적으로 점유되는지를 지시하고, 상기 볼륨 데이터 구조는 복셀들을 상기 제1 상세 레벨보다 높은 제2 상세 레벨로 표현하는 다수의 제2 엔트리들을 추가로 포함하며, 상기 제2 상세 레벨에서의 상기 복셀들은 상기 제1 상세 레벨에서의 복셀들에 의해 표현되는 볼륨들의 서브볼륨들을 표현하며, 상기 제2 엔트리들의 개수는 대응하는 복셀 볼륨이 점유되어 있음을 지시하는 값들을 갖는 상기 제1 비트 세트 내의 비트들의 개수에 대응함 -;
하나 이상의 연산을 수행하기 위해 상기 볼륨 데이터 구조를 프로세싱하게 하며, 상기 연산들은 상기 특정의 볼륨 내의 상기 지오메트리의 식별에 대응하는, 스토리지 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662377471P | 2016-08-19 | 2016-08-19 | |
US62/377,471 | 2016-08-19 | ||
PCT/US2017/047694 WO2018035505A1 (en) | 2016-08-19 | 2017-08-19 | Operations using sparse volumetric data |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190111007A true KR20190111007A (ko) | 2019-10-01 |
KR102546996B1 KR102546996B1 (ko) | 2023-06-26 |
Family
ID=61197094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197007940A KR102546996B1 (ko) | 2016-08-19 | 2017-08-19 | 희소 볼륨 데이터를 사용한 연산들 |
Country Status (5)
Country | Link |
---|---|
US (13) | US11037361B2 (ko) |
EP (5) | EP3501010B1 (ko) |
KR (1) | KR102546996B1 (ko) |
CN (6) | CN117764811A (ko) |
WO (4) | WO2018035507A1 (ko) |
Families Citing this family (100)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017200527A1 (en) * | 2016-05-16 | 2017-11-23 | Hewlett-Packard Development Company, L.P. | Generating a shape profile for a 3d object |
WO2017217191A1 (ja) * | 2016-06-14 | 2017-12-21 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置及び三次元データ復号装置 |
DE112016007098T5 (de) * | 2016-07-26 | 2019-04-18 | Hewlett-Packard Development Company, L.P. | Indexierung von voxeln für das 3d-drucken |
EP3501010B1 (en) | 2016-08-19 | 2023-11-01 | Movidius Ltd. | Rendering operations using sparse volumetric data |
KR20180034853A (ko) * | 2016-09-28 | 2018-04-05 | 에스케이하이닉스 주식회사 | 합성곱 신경망의 연산 장치 및 방법 |
AU2017361061B2 (en) * | 2016-11-15 | 2022-02-03 | Magic Leap, Inc. | Deep learning system for cuboid detection |
US10878310B2 (en) * | 2016-11-29 | 2020-12-29 | Mellanox Technologies, Ltd. | Accelerated convolution in convolutional neural networks |
US10579121B2 (en) * | 2017-04-01 | 2020-03-03 | Intel Corporation | Processor power management |
WO2018209710A1 (zh) * | 2017-05-19 | 2018-11-22 | 华为技术有限公司 | 一种图像处理方法及装置 |
CN110741630B (zh) * | 2017-06-14 | 2022-06-21 | 株式会社半导体能源研究所 | 摄像装置及电子设备 |
EP3580691B1 (en) * | 2017-08-31 | 2020-07-01 | FotoNation Limited | A peripheral processing device |
EP3680259B1 (en) * | 2017-09-04 | 2023-08-16 | Bridgestone Corporation | Polymerization catalyst composition, polymer production method, polymer, rubber composition, and tire |
US10265138B2 (en) | 2017-09-18 | 2019-04-23 | MediVis, Inc. | Methods and systems for generating and using 3D images in surgical settings |
GB2567244A (en) * | 2017-10-09 | 2019-04-10 | Nokia Technologies Oy | Spatial audio signal processing |
US10762620B2 (en) * | 2017-11-27 | 2020-09-01 | Nvidia Corporation | Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene |
US11270161B2 (en) * | 2017-11-27 | 2022-03-08 | Nvidia Corporation | Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene |
US11403816B2 (en) * | 2017-11-30 | 2022-08-02 | Mitsubishi Electric Corporation | Three-dimensional map generation system, three-dimensional map generation method, and computer readable medium |
US12086705B2 (en) * | 2017-12-29 | 2024-09-10 | Intel Corporation | Compute optimization mechanism for deep neural networks |
FR3078601B1 (fr) * | 2018-03-05 | 2020-10-30 | Ioterop | Dispositif, systeme et procede de reamenagement d'un objet connecte existant |
AU2019231701A1 (en) * | 2018-03-06 | 2020-10-15 | Southern Oregon University | Systems and methods for location representation using a discrete global grid system |
US11734477B2 (en) * | 2018-03-08 | 2023-08-22 | Concurrent Technologies Corporation | Location-based VR topological extrusion apparatus |
US11062469B2 (en) * | 2018-03-09 | 2021-07-13 | Microsoft Technology Licensing, Llc | 4D tracking utilizing depth data from multiple 3D cameras |
US10748306B2 (en) * | 2018-03-19 | 2020-08-18 | Fuji Xerox Co., Ltd. | Encoding device, decoding device, and non-transitory computer readable medium |
JP7121523B2 (ja) * | 2018-04-10 | 2022-08-18 | キヤノン株式会社 | 画像表示装置、画像表示方法 |
US10558430B2 (en) * | 2018-04-17 | 2020-02-11 | Fotonation Limited | Neural network engine |
US10950031B2 (en) | 2018-05-14 | 2021-03-16 | Apple Inc. | Techniques for locating virtual objects relative to real physical objects |
US10521964B1 (en) * | 2018-06-14 | 2019-12-31 | Dell Products, L.P. | Switching among disparate simultaneous localization and mapping (SLAM) methods in virtual, augmented, and mixed reality (xR) applications |
CN110832275B (zh) | 2018-06-14 | 2021-05-18 | 北京嘀嘀无限科技发展有限公司 | 基于双目图像更新高分辨率地图的系统和方法 |
GB2570743B (en) * | 2018-06-29 | 2021-06-23 | Imagination Tech Ltd | Tile assignment to processing cores within a graphics processing unit |
EP3735658A1 (en) * | 2018-07-12 | 2020-11-11 | Huawei Technologies Co. Ltd. | Generating a compressed representation of a neural network with proficient inference speed and power consumption |
GB2575891A (en) * | 2018-07-18 | 2020-01-29 | Peerless Ltd | Accelerator subsystem with GPU, transportation route price system, cache and method of acceleration of a permutation analysis therefor |
KR101953516B1 (ko) * | 2018-08-06 | 2019-02-28 | 부산대학교 산학협력단 | 적응적인 데이터율 조절 방법 및 적응적인 데이터율 조절 시스템 |
US10672178B2 (en) * | 2018-08-08 | 2020-06-02 | Alvin D. Zimmerman | Ray traversal with virtual grids |
JP7485482B2 (ja) * | 2018-08-29 | 2024-05-16 | モビディウス リミテッド | コンピュータビジョンシステム |
US11467973B1 (en) * | 2018-09-28 | 2022-10-11 | Amazon Technologies, Inc. | Fine-grained access memory controller |
US11663938B2 (en) * | 2018-10-08 | 2023-05-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Viewing device and method for providing virtual content overlapping visual objects |
US10834543B2 (en) * | 2018-11-26 | 2020-11-10 | International Business Machines Corporation | Creating a social group with mobile phone vibration |
US11995854B2 (en) * | 2018-12-19 | 2024-05-28 | Nvidia Corporation | Mesh reconstruction using data-driven priors |
EP3671660A1 (en) * | 2018-12-20 | 2020-06-24 | Dassault Systèmes | Designing a 3d modeled object via user-interaction |
KR102350181B1 (ko) * | 2019-01-30 | 2022-01-11 | 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드 | 자율 주행 차량에서 rnn 및 lstm을 사용하여 시간적 평활화를 수행하는 lidar 위치 추정 |
US12014505B2 (en) * | 2019-01-31 | 2024-06-18 | Samsung Electronics Co., Ltd. | Method and apparatus with convolution neural network processing using shared operand |
US11866167B2 (en) * | 2019-04-10 | 2024-01-09 | Rhoman Aerospace Corporation | Method and algorithm for flight, movement, autonomy, in GPS, communication, degraded, denied, obstructed non optimal environment |
US11188671B2 (en) | 2019-04-11 | 2021-11-30 | Bank Of America Corporation | Distributed data chamber system |
US10698562B1 (en) * | 2019-04-30 | 2020-06-30 | Daqri, Llc | Systems and methods for providing a user interface for an environment that includes virtual objects |
KR20200133863A (ko) * | 2019-05-20 | 2020-12-01 | 삼성전자주식회사 | 첨단 운전자 지원 장치, 이의 캘리브레이션 방법 및 이의 객체를 검출하는 방법 |
JP7268481B2 (ja) * | 2019-05-22 | 2023-05-08 | トヨタ自動車株式会社 | 情報処理装置、自律走行車両、情報処理方法及びプログラム |
US20220221558A1 (en) * | 2019-05-31 | 2022-07-14 | Volkswagen Aktiengesellschaft | System, method, and components utilizing live point cloud compression |
US11277277B2 (en) * | 2019-06-03 | 2022-03-15 | International Business Machines Corporation | Indoor environment personalization preferences |
US10964043B2 (en) * | 2019-06-05 | 2021-03-30 | Icatch Technology, Inc. | Method and measurement system for measuring dimension and/or volume of an object by eliminating redundant voxels |
CN110210456A (zh) * | 2019-06-19 | 2019-09-06 | 贵州理工学院 | 一种基于3d卷积神经网络的头部姿态估计方法 |
DE102019116715A1 (de) * | 2019-06-20 | 2020-12-24 | Gritworld GmbH | Computerimplementiertes Verfahren und programmierbares System zum Rendern eines 2D/3D-Modells |
US20220327742A1 (en) * | 2019-06-26 | 2022-10-13 | Lg Electronics Inc. | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method |
WO2021002633A2 (ko) * | 2019-07-04 | 2021-01-07 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
CN112215880B (zh) * | 2019-07-10 | 2022-05-06 | 浙江商汤科技开发有限公司 | 一种图像深度估计方法及装置、电子设备、存储介质 |
US11754715B2 (en) * | 2019-07-11 | 2023-09-12 | Baidu Usa Llc | Point cloud format optimized for LiDAR data storage based on device property |
CN110347163B (zh) * | 2019-08-07 | 2022-11-18 | 京东方科技集团股份有限公司 | 一种无人驾驶设备的控制方法、设备及无人驾驶控制系统 |
US11120611B2 (en) * | 2019-08-22 | 2021-09-14 | Microsoft Technology Licensing, Llc | Using bounding volume representations for raytracing dynamic units within a virtual space |
US11958183B2 (en) | 2019-09-19 | 2024-04-16 | The Research Foundation For The State University Of New York | Negotiation-based human-robot collaboration via augmented reality |
US11120101B2 (en) * | 2019-09-27 | 2021-09-14 | Arm Limited | Matrix multiplication system and method |
GB2588229A (en) * | 2019-10-18 | 2021-04-21 | Sony Interactive Entertainment Inc | Navigation system and method |
CN110807287B (zh) * | 2019-11-05 | 2020-12-29 | 广东电网有限责任公司 | 基于有限元网格在应急抢修布点场景中划分业务网格构建方法 |
US11145117B2 (en) * | 2019-12-02 | 2021-10-12 | At&T Intellectual Property I, L.P. | System and method for preserving a configurable augmented reality experience |
US11687778B2 (en) | 2020-01-06 | 2023-06-27 | The Research Foundation For The State University Of New York | Fakecatcher: detection of synthetic portrait videos using biological signals |
JP7434577B2 (ja) * | 2020-01-09 | 2024-02-20 | エルジー エレクトロニクス インコーポレイティド | ポイントクラウドデータ送信装置、ポイントクラウドデータ送信方法、ポイントクラウドデータ受信装置及びポイントクラウドデータ受信方法 |
WO2021155308A1 (en) * | 2020-01-29 | 2021-08-05 | Boston Polarimetrics, Inc. | Systems and methods for pose detection and measurement |
JP2023513746A (ja) * | 2020-02-14 | 2023-04-03 | マジック リープ, インコーポレイテッド | マルチアプリケーションオーディオレンダリング |
US11568021B2 (en) | 2020-02-21 | 2023-01-31 | Alibaba Group Holding Limited | Vector-vector multiplication techniques for processing systems |
CN111353992B (zh) * | 2020-03-10 | 2023-04-07 | 塔里木大学 | 一种基于纹理特征的农产品缺陷检测方法及系统 |
KR102355634B1 (ko) * | 2020-04-14 | 2022-02-08 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
CN111680626A (zh) * | 2020-06-09 | 2020-09-18 | 重庆大学 | 一种基于多层卷积神经网络的水环境遥感数据建模方法 |
US11709225B2 (en) * | 2020-06-19 | 2023-07-25 | Nxp B.V. | Compression of data employing variable mantissa size |
US20210407039A1 (en) * | 2020-06-30 | 2021-12-30 | Intel Corporation | Apparatus and method for approximate trilinear interpolation for scene reconstruction |
US20210407168A1 (en) * | 2020-06-30 | 2021-12-30 | Intel Corporation | Apparatus and method for approximate trilinear interpolation for scene reconstruction |
US11257281B2 (en) * | 2020-07-10 | 2022-02-22 | Cesium GS, Inc. | Systems and methods for adaptive visual and temporal quality of time-dynamic (4D) volume rendering |
JP7341387B2 (ja) * | 2020-07-30 | 2023-09-11 | オムロン株式会社 | モデル生成方法、探索プログラム及びモデル生成装置 |
CN112090078B (zh) * | 2020-08-13 | 2021-10-15 | 深圳中清龙图网络技术有限公司 | 游戏角色移动控制方法、装置、设备和介质 |
CN112068791B (zh) * | 2020-09-04 | 2024-01-23 | 京东方科技集团股份有限公司 | 旋转显示设备的显示数据的存储方法、寻址方法及设备 |
CN112364693B (zh) * | 2020-10-12 | 2024-04-16 | 星火科技技术(深圳)有限责任公司 | 基于双目视觉的障碍识别方法、装置、设备及存储介质 |
CN112002021B (zh) * | 2020-10-30 | 2021-01-22 | 成都四方伟业软件股份有限公司 | 一种基于unity3d的聚合打点可视化方法及装置 |
CN112295225B (zh) * | 2020-11-02 | 2021-08-10 | 不鸣科技(杭州)有限公司 | 一种寻路网格的多线程更新方法 |
US11657522B2 (en) * | 2020-11-11 | 2023-05-23 | Toyota Research Institute, Inc. | Sparse auxiliary network for depth completion |
US11861328B2 (en) | 2020-11-11 | 2024-01-02 | Samsung Electronics Co., Ltd. | Processor for fine-grain sparse integer and floating-point operations |
US11861327B2 (en) | 2020-11-11 | 2024-01-02 | Samsung Electronics Co., Ltd. | Processor for fine-grain sparse integer and floating-point operations |
US12028507B2 (en) | 2021-03-11 | 2024-07-02 | Quintar, Inc. | Augmented reality system with remote presentation including 3D graphics extending beyond frame |
US11645819B2 (en) | 2021-03-11 | 2023-05-09 | Quintar, Inc. | Augmented reality system for viewing an event with mode based on crowd sourced images |
US11657578B2 (en) | 2021-03-11 | 2023-05-23 | Quintar, Inc. | Registration for augmented reality system for viewing an event |
US12003806B2 (en) * | 2021-03-11 | 2024-06-04 | Quintar, Inc. | Augmented reality system for viewing an event with multiple coordinate systems and automatically generated model |
US11527047B2 (en) | 2021-03-11 | 2022-12-13 | Quintar, Inc. | Augmented reality system for viewing an event with distributed computing |
CN113365370B (zh) * | 2021-05-24 | 2022-09-02 | 内蒙古工业大学 | 一种基于LoRa技术的智能移动系统 |
CN113419539B (zh) * | 2021-07-14 | 2022-07-01 | 燕山大学 | 具有复杂地形可通过性判断的移动机器人路径规划方法 |
DE102021208822A1 (de) * | 2021-08-12 | 2023-02-16 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zur Verlustreduzierung bei einer Kommunikationsschnittstelle |
CN113506339A (zh) * | 2021-09-10 | 2021-10-15 | 北京科技大学 | 设备的工作功率的控制方法、装置及存储介质 |
US11417069B1 (en) * | 2021-10-05 | 2022-08-16 | Awe Company Limited | Object and camera localization system and localization method for mapping of the real world |
US20230215108A1 (en) * | 2021-12-31 | 2023-07-06 | Samsung Electronics Co., Ltd. | System and method for adaptive volume-based scene reconstruction for xr platform applications |
CN114371998B (zh) * | 2021-12-31 | 2024-06-11 | 华南理工大学 | 一种基于考虑约束的并行广度优先搜索的架构测试方法 |
US12118667B2 (en) * | 2022-06-13 | 2024-10-15 | Verizon Patent And Licensing Inc. | Methods and systems for unified rendering of light and sound content for a simulated 3D environment |
US11776206B1 (en) | 2022-12-23 | 2023-10-03 | Awe Company Limited | Extended reality system and extended reality method with two-way digital interactive digital twins |
US12117979B1 (en) * | 2023-08-01 | 2024-10-15 | Sap Se | Timestamp-based deletions for interdependent data objects |
CN117312608B (zh) * | 2023-08-14 | 2024-06-04 | 河海大学 | 一种基于深度优先搜索的河网节点简并方法 |
CN116805347B (zh) * | 2023-08-22 | 2023-11-10 | 中国电子科技集团公司第十五研究所 | 基于体数据六边界面几何构型的体纹理镀膜插值方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110228055A1 (en) * | 2010-03-22 | 2011-09-22 | Microsoft Corporation | Space skipping for multi-dimensional image rendering |
US20150294500A1 (en) * | 2014-04-11 | 2015-10-15 | Thomas Marshall Tucker | Hybrid Dynamic Tree Data Structure and Accessibility Mapping for Computer Numerical Controlled Machining Path Planning |
KR20160063367A (ko) * | 2013-09-27 | 2016-06-03 | 퀄컴 인코포레이티드 | 외부 하이브리드 포토 맵핑 |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5652851A (en) * | 1993-07-21 | 1997-07-29 | Xerox Corporation | User interface technique for producing a second image in the spatial context of a first image using a model-based operation |
US5983251A (en) * | 1993-09-08 | 1999-11-09 | Idt, Inc. | Method and apparatus for data analysis |
US6694163B1 (en) * | 1994-10-27 | 2004-02-17 | Wake Forest University Health Sciences | Method and system for producing interactive, three-dimensional renderings of selected body organs having hollow lumens to enable simulated movement through the lumen |
US5548694A (en) * | 1995-01-31 | 1996-08-20 | Mitsubishi Electric Information Technology Center America, Inc. | Collision avoidance system for voxel-based object representation |
US6160907A (en) * | 1997-04-07 | 2000-12-12 | Synapix, Inc. | Iterative three-dimensional process for creating finished media content |
FI116990B (fi) * | 1997-10-20 | 2006-04-28 | Nokia Oyj | Menetelmä ja järjestelmä akustisen virtuaaliympäristön käsittelemiseksi |
AU2001239926A1 (en) * | 2000-02-25 | 2001-09-03 | The Research Foundation Of State University Of New York | Apparatus and method for volume processing and rendering |
US7301538B2 (en) * | 2003-08-18 | 2007-11-27 | Fovia, Inc. | Method and system for adaptive direct volume rendering |
US7242401B2 (en) * | 2004-06-25 | 2007-07-10 | Siemens Medical Solutions Usa, Inc. | System and method for fast volume rendering |
US7692648B2 (en) | 2006-01-18 | 2010-04-06 | Siemens Medical Solutions Usa, Inc. | System and method for empty space skipping in sliding texture based volume rendering by trimming slab polygons |
US20080024494A1 (en) * | 2006-07-25 | 2008-01-31 | Perumal Poopathy | Method and system for image based rendering large volumetric datasets |
US8049752B2 (en) * | 2006-07-25 | 2011-11-01 | Siemens Medical Solutions Usa, Inc. | Systems and methods of determining sampling rates for volume rendering |
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 |
US8605947B2 (en) | 2008-04-24 | 2013-12-10 | GM Global Technology Operations LLC | Method for detecting a clear path of travel for a vehicle enhanced by object detection |
US20100010786A1 (en) | 2008-07-08 | 2010-01-14 | Cynthia Maxwell | Sound synthesis method and software system for shape-changing geometric models |
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 |
US8190585B2 (en) * | 2010-02-17 | 2012-05-29 | Lockheed Martin Corporation | Supporting multiple different applications having different data needs using a voxel database |
EP2643820B1 (en) * | 2010-11-24 | 2018-01-24 | Google LLC | Rendering and navigating photographic panoramas with depth information in a geographic information system |
US8847965B2 (en) * | 2010-12-03 | 2014-09-30 | The University Of North Carolina At Chapel Hill | Methods, systems, and computer readable media for fast geometric sound propagation using visibility computations |
USRE48083E1 (en) * | 2011-01-17 | 2020-07-07 | Stc.Unm | System and methods for random parameter filtering |
US9116011B2 (en) * | 2011-10-21 | 2015-08-25 | Here Global B.V. | Three dimensional routing |
US20140100839A1 (en) * | 2012-09-13 | 2014-04-10 | David Joseph Arendash | Method for controlling properties of simulated environments |
US9488492B2 (en) | 2014-03-18 | 2016-11-08 | Sri International | Real-time system for multi-modal 3D geospatial mapping, object recognition, scene annotation and analytics |
US9398393B2 (en) * | 2012-12-11 | 2016-07-19 | The University Of North Carolina At Chapel Hill | Aural proxies and directionally-varying reverberation for interactive sound propagation in virtual environments |
US20140270182A1 (en) * | 2013-03-14 | 2014-09-18 | Nokia Corporation | Sound For Map Display |
GB2549217B (en) * | 2013-03-14 | 2017-11-22 | Imagination Tech Ltd | 3-D Graphics rendering with implicit geometry |
US20140368504A1 (en) | 2013-06-12 | 2014-12-18 | Microsoft Corporation | Scalable volumetric 3d reconstruction |
US20150294041A1 (en) * | 2013-07-11 | 2015-10-15 | The University Of North Carolina At Chapel Hill | Methods, systems, and computer readable media for simulating sound propagation using wave-ray coupling |
US9984498B2 (en) | 2013-07-17 | 2018-05-29 | Microsoft Technology Licensing, Llc | Sparse GPU voxelization for 3D surface reconstruction |
US9761037B2 (en) * | 2013-10-17 | 2017-09-12 | Nvidia Corporation | Graphics processing subsystem and method for updating voxel representation of a scene |
US20170109462A1 (en) * | 2013-11-27 | 2017-04-20 | Akademia Gorniczo-Hutnicza Im. Stanislawa Staszica W Krakowie | System and a method for determining approximate set of visible objects in beam tracing |
EP3125765A4 (en) | 2014-03-04 | 2018-04-18 | The Trustees of Columbia University in the City of New York | Regularization of images |
US10679407B2 (en) * | 2014-06-27 | 2020-06-09 | The University Of North Carolina At Chapel Hill | Methods, systems, and computer readable media for modeling interactive diffuse reflections and higher-order diffraction in virtual environment scenes |
US9418458B2 (en) | 2015-01-05 | 2016-08-16 | Superfish Ltd. | Graph image representation from convolutional neural networks |
US11370422B2 (en) * | 2015-02-12 | 2022-06-28 | Honda Research Institute Europe Gmbh | Method and system in a vehicle for improving prediction results of an advantageous driver assistant system |
US20160239706A1 (en) | 2015-02-13 | 2016-08-18 | Qualcomm Incorporated | Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks |
US10176642B2 (en) * | 2015-07-17 | 2019-01-08 | Bao Tran | Systems and methods for computer assisted operation |
US9754405B1 (en) * | 2015-08-10 | 2017-09-05 | Ngrain (Canada) Corporation | System, method and computer-readable medium for organizing and rendering 3D voxel models in a tree structure |
US10643381B2 (en) * | 2016-01-12 | 2020-05-05 | Qualcomm Incorporated | Systems and methods for rendering multiple levels of detail |
AU2017227708A1 (en) | 2016-03-01 | 2018-10-18 | ARIS MD, Inc. | Systems and methods for rendering immersive environments |
US9760690B1 (en) | 2016-03-10 | 2017-09-12 | Siemens Healthcare Gmbh | Content-based medical image rendering based on machine learning |
US10078333B1 (en) * | 2016-04-17 | 2018-09-18 | X Development Llc | Efficient mapping of robot environment |
NZ748891A (en) * | 2016-05-28 | 2019-12-20 | Acoustic Knowledge Llc | Digital camera system for acoustic modeling |
US10134182B1 (en) * | 2016-06-23 | 2018-11-20 | Zoox, Inc. | Large scale dense mapping |
EP3501010B1 (en) * | 2016-08-19 | 2023-11-01 | Movidius Ltd. | Rendering operations using sparse volumetric data |
CN114806540A (zh) | 2021-01-20 | 2022-07-29 | 三星显示有限公司 | 量子点及包含量子点的油墨组合物、光学构件和电子器件 |
US11915436B1 (en) * | 2021-08-30 | 2024-02-27 | Zoox, Inc. | System for aligning sensor data with maps comprising covariances |
-
2017
- 2017-08-19 EP EP17842251.5A patent/EP3501010B1/en active Active
- 2017-08-19 CN CN202410028163.4A patent/CN117764811A/zh active Pending
- 2017-08-19 WO PCT/US2017/047696 patent/WO2018035507A1/en unknown
- 2017-08-19 CN CN201780063370.1A patent/CN110383340B/zh active Active
- 2017-08-19 CN CN201780064229.3A patent/CN110494895B/zh active Active
- 2017-08-19 EP EP24194224.2A patent/EP4446984A2/en active Pending
- 2017-08-19 EP EP17842249.9A patent/EP3501008A4/en active Pending
- 2017-08-19 US US16/326,674 patent/US11037361B2/en active Active
- 2017-08-19 US US16/326,689 patent/US10748326B2/en active Active
- 2017-08-19 US US16/326,683 patent/US10861217B2/en active Active
- 2017-08-19 CN CN201780064277.2A patent/CN110392903B/zh active Active
- 2017-08-19 CN CN201780063371.6A patent/CN110392902B/zh active Active
- 2017-08-19 WO PCT/US2017/047697 patent/WO2018035508A1/en unknown
- 2017-08-19 WO PCT/US2017/047695 patent/WO2018035506A1/en unknown
- 2017-08-19 KR KR1020197007940A patent/KR102546996B1/ko active IP Right Grant
- 2017-08-19 EP EP17842250.7A patent/EP3501009A4/en not_active Withdrawn
- 2017-08-19 CN CN202311170467.6A patent/CN117197314A/zh active Pending
- 2017-08-19 US US16/326,694 patent/US11367246B2/en active Active
- 2017-08-19 EP EP17842252.3A patent/EP3501011A4/en active Pending
- 2017-08-19 WO PCT/US2017/047694 patent/WO2018035505A1/en unknown
-
2020
- 2020-08-14 US US16/994,511 patent/US11222459B2/en active Active
- 2020-12-07 US US17/114,363 patent/US11593987B2/en active Active
-
2021
- 2021-06-14 US US17/347,511 patent/US11920934B2/en active Active
-
2022
- 2022-01-07 US US17/571,044 patent/US11680803B2/en active Active
- 2022-06-18 US US17/843,974 patent/US11965743B2/en active Active
-
2023
- 2023-01-27 US US18/102,613 patent/US12085392B2/en active Active
- 2023-06-16 US US18/336,520 patent/US20240094003A1/en active Pending
- 2023-10-30 US US18/497,871 patent/US20240118086A1/en active Pending
-
2024
- 2024-02-12 US US18/439,376 patent/US20240219181A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110228055A1 (en) * | 2010-03-22 | 2011-09-22 | Microsoft Corporation | Space skipping for multi-dimensional image rendering |
KR20160063367A (ko) * | 2013-09-27 | 2016-06-03 | 퀄컴 인코포레이티드 | 외부 하이브리드 포토 맵핑 |
US20150294500A1 (en) * | 2014-04-11 | 2015-10-15 | Thomas Marshall Tucker | Hybrid Dynamic Tree Data Structure and Accessibility Mapping for Computer Numerical Controlled Machining Path Planning |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11965743B2 (en) | Operations using sparse volumetric data | |
US11532117B2 (en) | Density coordinate hashing for volumetric data | |
WO2019226686A2 (en) | Deep learning system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |