KR20200094747A - 비주얼 포그 - Google Patents

비주얼 포그 Download PDF

Info

Publication number
KR20200094747A
KR20200094747A KR1020207015274A KR20207015274A KR20200094747A KR 20200094747 A KR20200094747 A KR 20200094747A KR 1020207015274 A KR1020207015274 A KR 1020207015274A KR 20207015274 A KR20207015274 A KR 20207015274A KR 20200094747 A KR20200094747 A KR 20200094747A
Authority
KR
South Korea
Prior art keywords
visual
data
image
processing
compressed
Prior art date
Application number
KR1020207015274A
Other languages
English (en)
Other versions
KR102656864B1 (ko
Inventor
샤오-웬 양
옌-쾅 첸
라가드 모하메드 얼세히드 알타라우네
후안 파블로 무노즈 치아브란도
시우 웬 친
쿠샬 닷타
서브라마니아 알. 덜루어
줄리오 씨. 자모라 에스퀴벨
오마르 유리시스 플로레즈 초쿠
비샤카 굽타
스캇 디. 한
라메시쿠마르 일릭칼
닐쉬 쿠마르 제인
시티 카이루니 아말리나 카마롤
아닐 에스. 케샤바무르티
헹 카 라우
조나단 에이. 레프먼
이팅 리아오
마이클 지. 밀셉
이브라히마 제이. 엔디오르
루이스 카를로스 마리아 레미스
애디캠 브이. 산제이
어스맨 사르워
이브 엠. 스쿨러
네드 엠. 스미스
발라바조시울라 에스. 소마야줄루
크리스티나 알. 스트롱
오메시 틱쿠
스레니바스 바라다라잔
지저스 에이. 크루즈 바가스
하스나 모우스타파
애런 라구나트
카탈린 클라라 바트파이-월코트
마루티 굽타 하이드
디팍 에스. 벰바
제시카 맥카티
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20200094747A publication Critical patent/KR20200094747A/ko
Application granted granted Critical
Publication of KR102656864B1 publication Critical patent/KR102656864B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/53Querying
    • G06F16/535Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/53Querying
    • G06F16/538Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/54Browsing; Visualisation therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/211Selection of the most significant subset of features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/2163Partitioning the feature space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • G06F18/24143Distances to neighbourhood prototypes, e.g. restricted Coulomb energy networks [RCEN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1867Post-processing of the composed and rasterized print image
    • G06K15/1886Storage of the print image data or of parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0007Image acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/95Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/96Management of image or video recognition tasks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/191Design or setup of recognition systems or techniques; Extraction of features in feature space; Clustering techniques; Blind source separation
    • G06V30/19173Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/26Techniques for post-processing, e.g. correcting the recognition result
    • G06V30/262Techniques for post-processing, e.g. correcting the recognition result using context analysis, e.g. lexical, syntactic or semantic context
    • G06V30/274Syntactic or semantic context, e.g. balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/161Detection; Localisation; Normalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/20Movements or behaviour, e.g. gesture recognition
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/70Services for machine-to-machine communication [M2M] or machine type communication [MTC]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/243Classification techniques relating to the number of classes
    • G06F18/24323Tree-organised classifiers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2117User registration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20024Filtering details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20048Transform domain processing
    • G06T2207/20052Discrete cosine transform [DCT]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20048Transform domain processing
    • G06T2207/20056Discrete and fast Fourier transform, [DFT, FFT]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20048Transform domain processing
    • G06T2207/20064Wavelet transform [DWT]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20212Image combination
    • G06T2207/20221Image fusion; Image merging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30242Counting objects in image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/24Fluid dynamics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/223Analysis of motion using block-matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V2201/00Indexing scheme relating to image or video recognition or understanding
    • G06V2201/10Recognition assisted with metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/192Recognition using electronic means using simultaneous comparisons or correlations of the image signals with a plurality of references
    • G06V30/194References adjustable by an adaptive method, e.g. learning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/02Protecting privacy or anonymity, e.g. protecting personally identifiable information [PII]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Medical Informatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioethics (AREA)
  • Human Computer Interaction (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Power Engineering (AREA)
  • Neurology (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • Social Psychology (AREA)
  • Psychiatry (AREA)
  • Image Analysis (AREA)
  • Telephonic Communication Services (AREA)
  • Traffic Control Systems (AREA)

Abstract

일 실시예에서, 장치는: 복수의 태스크들을 포함하는 작업부하를 식별하고; 작업부하에 기초하여 작업부하 그래프를 생성하며 - 작업부하 그래프는 복수의 태스크들과 연관된 정보를 포함함 -; 디바이스 접속성 그래프를 식별하고 - 디바이스 접속성 그래프는 복수의 프로세싱 디바이스들과 연관된 디바이스 접속성 정보를 포함함 -; 작업부하와 연관된 프라이버시 정책을 식별하며; 복수의 프로세싱 디바이스들과 연관된 프라이버시 레벨 정보를 식별하고; 프라이버시 정책 및 프라이버시 레벨 정보에 기초하여 프라이버시 제약조건을 식별하며; 작업부하 스케줄을 결정하는 - 작업부하 스케줄은 작업부하를 복수의 프로세싱 디바이스들에 매핑하는 것을 포함하고, 작업부하 스케줄은 프라이버시 제약조건, 작업부하 그래프, 및 디바이스 접속성 그래프에 기초하여 결정됨 - 프로세서를 포함한다. 이 장치는 작업부하 스케줄을 복수의 프로세싱 디바이스들에게 송신하는 통신 인터페이스를 추가로 포함한다.

Description

비주얼 포그
관련 출원들에 대한 상호 참조
본 특허 출원은 2017년 12월 28일자로 출원되고 발명의 명칭이 "VISUAL FOG"인 미국 가특허 출원 제62/611,536호 및 2018년 6월 28일자로 출원되고 발명의 명칭이 "VISUAL FOG"인 미국 가특허 출원 제62/691,464호의 출원일의 이익을 주장하며, 이 미국 가특허 출원들의 내용은 이로써 명백히 참고로 포함된다.
명세서의 분야
본 개시내용은 일반적으로 컴퓨팅 시스템들 및 네트워크들의 분야에 관한 것이며, 배타적으로가 아니라 보다 상세하게는, 비주얼 컴퓨팅에 관한 것이다.
현대 컴퓨팅의 발전은 다양한 주류 컴퓨팅 애플리케이션들에 대한 비주얼 컴퓨팅의 증가된 사용을 가져왔다. 특히, 대규모 비디오 애널리틱스 및 비주얼 데이터 프로세싱에 의존하는 수많은 비주얼 컴퓨팅 애플리케이션들을 위해 카메라들의 신속한 배포가 활용되어 왔다. 그렇지만, 대규모 비주얼 컴퓨팅에 대한 기존의 접근법들은 수많은 한계들을 겪는다. 예를 들어, 기존의 비주얼 컴퓨팅 접근법들은 자원들을 비효율적으로 활용하고 제한된 기능성, 프라이버시, 및 보안을 제공하는 경직된 설계들을 사용하여 구현된다. 그 결과, 기존의 접근법들은 종종 높은 레이턴시를 겪고, 부정확하며, 신뢰할 수 없고, 유연성이 없으며, 효율적으로 스케일링될 수 없다.
본 개시내용은 첨부 도면들과 함께 읽을 때 이하의 상세한 설명으로부터 가장 잘 이해된다. 산업계에서의 표준 관행에 따라, 다양한 특징들이 반드시 축척대로 그려져 있지 않고, 예시 목적들을 위해서만 사용된다는 점에 유의해야 한다. 스케일이, 명시적으로 또는 암시적으로, 도시되는 경우, 이는 하나의 예시적인 예만을 제공한다. 다른 실시예들에서, 다양한 특징들의 치수들은 논의의 명확함을 위해 임의적으로 증가 또는 감소될 수 있다.
도 1은 특정 실시예들에 따른 비주얼 포그 시스템의 예시적인 실시예를 예시한다.
도 2, 도 3, 도 4, 및 도 5는 특정 실시예들에 따라 사용될 수 있는 사물 인터넷(IoT) 네트워크들 및 아키텍처들의 예들을 예시한다.
도 6 및 도 7은 특정 실시예들에 따라 사용될 수 있는 예시적인 컴퓨터 아키텍처들을 예시한다.
도 8은 비주얼 포그 노드들에 대한 아키텍처의 예시적인 실시예를 예시한다.
도 9, 도 10, 도 11, 및 도 12a 및 도 12b는 비주얼 포그 아키텍처의 예시적인 실시예들을 예시한다.
도 13 및 도 14는 비주얼 질문 답변(visual question answering)(VQA) 프레임워크와 연관된 예시적인 실시예들을 예시한다.
도 15 및 도 16은 비주얼 포그 컴퓨팅을 위한 디바이스 중심 스케줄링의 예시적인 실시예들을 예시한다.
도 17은 비주얼 포그 아키텍처를 위한 런타임 프로세싱 파이프라인의 예시적인 실시예를 예시한다.
도 18은 비주얼 데이터 스토리지 아키텍처의 예시적인 실시예를 예시한다.
도 19는 비주얼 데이터를 탐색하기 위해 메타데이터를 활용하는 비전 프로세싱 파이프라인의 예를 예시한다.
도 20 및 도 21은 속성 그래프를 사용하여 비주얼 메타데이터를 표현하는 예들을 예시한다.
도 22는 비주얼 데이터 프로세싱을 돕기 위해 설계된 애널리틱 이미지 포맷의 예시적인 실시예를 예시한다.
도 23은 다양한 이미지 포맷들에 대한 성능 그래프를 예시한다.
도 24a 내지 도 24c는 다중 도메인 캐스케이드 컨볼루션 신경 네트워크(convolutional neural network)(CNN)의 예시적인 실시예를 예시한다.
도 25a와 도 25b, 도 26, 도 27, 도 28, 도 29, 도 30, 및 도 31a와 도 31b는 다중 도메인 컨볼루션 신경 네트워크(CNN)에 대한 버터플라이 연산들의 사용을 예시한다.
도 32 및 도 33은 압축된 비주얼 데이터를 프로세싱하기 위한 3차원(3D) CNN의 예시적인 실시예를 예시한다.
도 34는 픽셀 도메인 CNN의 예를 예시한다.
도 35는 픽셀 도메인 비주얼 애널리틱스 파이프라인의 예를 예시한다.
도 36 및 도 37은 압축 도메인 비주얼 애널리틱스 파이프라인들의 예시적인 실시예들을 예시한다.
도 38은 압축된 비주얼 데이터를 사용하여 트레이닝되는 CNN의 정밀도를 보여주는 성능 그래프를 예시한다.
도 39는 컨텍스트 인식 이미지 압축의 예시적인 실시예에 대한 플로차트를 예시한다.
도 40a 내지 도 40c는 프라이버시 보호(privacy-preserving) 인구통계 식별 시스템의 예시적인 실시예를 예시한다.
도 41, 도 42, 및 도 43은 프라이버시 보호 분산 비주얼 데이터 프로세싱의 예시적인 실시예를 예시한다.
도 44, 도 45, 및 도 46은 분산 컴퓨팅 네트워크들에 대한 자기 주권 디바이스 식별(self-sovereign device identification)의 예시적인 실시예들을 예시한다.
도 47은 충돌 해결 없이 비주얼 포그 네트워크에서의 디바이스 온보딩/커미셔닝의 예를 예시한다.
도 48 및 도 49는 자기 주권 블록체인을 사용하는 분산 컴퓨팅을 위한 알고리즘 식별의 예시적인 실시예들을 예시한다.
도 50, 도 51, 및 도 52는 전통적인 애널리틱 이미지 포맷들을 프로세싱하기 위한 예시적인 실시예들을 예시한다.
도 53은 프라이버시 보호 인구통계 식별의 예시적인 실시예에 대한 플로차트를 예시한다.
도 54는 프라이버시 보호 분산 비주얼 프로세싱의 예시적인 실시예에 대한 플로차트를 예시한다.
도 55는 자동차 유비쿼터스 증인에 대한 예시적인 사용 사례를 예시한다.
도 56은 유비쿼터스 증인에 대한 예시적인 데이터 흐름을 예시한다.
도 57은 자동차 이상 검출 및 재구성에 대한 예시적인 사용 사례를 예시한다.
도 58은 IP 기반 이상 검출 및 재구성에 대한 예시적인 프로세스 흐름을 예시한다.
도 59는 ICN 기반 이상 검출 및 재구성에 대한 예시적인 프로세스 흐름을 예시한다.
도 60은 ICN 기반 이상 검출 및 재구성에 대한 개별 노드의 예시적인 프로세스 흐름을 예시한다.
도 61은 유비쿼터스 비주얼 컴퓨팅 증인의 예시적인 실시예에 대한 플로차트를 예시한다.
도 62는 수렴형 노드 라우터의 예시적인 실시예를 예시한다.
도 63은 수렴형 노드 라우터들을 사용하는 예시적인 네트워크 토폴로지를 예시한다.
도 64는 컨텍스트 인식 이미지 압축을 활용하는 이미지 저장 시스템의 예시적인 실시예를 예시한다.
도 65는 컨텍스트 인식 이미지 압축을 위한 인터-프레임 인코딩의 예를 예시한다.
도 66, 도 67, 및 도 68은 스마트 카메라들을 사용하여 비주얼 객체들의 자동화된 시맨틱 추론을 수행하기 위한 예시적인 실시예들을 예시한다.
도 69 및 도 70은 개선된 보안을 위한 비주얼 포그 스트림 다중화와 연관된 예시적인 실시예들을 예시한다.
도 71은 프라이버시 보호 VQA 데이터 흐름의 예시적인 실시예를 예시한다.
도 72 및 도 73은 프라이버시 보호 VQA 데이터 흐름을 위한 예시적인 새니타이제이션(sanitization) 기술들을 예시한다.
도 74 및 도 75는 애널리틱 이미지 포맷과 연관된 재귀적 사분면 분할 알고리즘(recursive quadrant division algorithm)에 대한 의사코드를 예시한다.
도 76a 내지 도 76e는 단일 관심 영역을 갖는 이미지에 대한 재귀적 사분면 분할 알고리즘의 예를 예시한다.
도 77a 내지 도 77f는 다수의 관심 영역들을 갖는 이미지에 대한 재귀적 사분면 분할 알고리즘의 예를 예시한다.
도 78a와 도 78b 및 도 79a와 도 79b는 애널리틱 이미지 포맷과 연관된 영역 기반 타일링 알고리즘(region-based tiling algorithm)에 대한 의사코드를 예시한다.
도 80a 내지 도 80c는 단일 관심 영역을 갖는 이미지에 대한 영역 기반 타일링 알고리즘의 예를 예시한다.
도 81a 내지 도 81c는 다수의 오버랩하는 관심 영역들을 갖는 이미지에 대한 다양한 타일링 알고리즘들의 예를 예시한다.
도 82는 온라인 및 오프라인 고객 활동 둘 다에 기초한 통합 고객 모델의 예를 예시한다.
도 83은 고객의 점포내 비주얼 풋프린트와 온라인 활동을 링크시키는 예를 예시한다.
도 84는 온라인 활동들과 점포내 고객 활동들을 사용하여 강건한 고객 모델을 구성하는 예를 예시한다.
도 85는 다수의 사용자들의 쇼핑 활동들의 비교를 예시한다.
도 86은 머리 포즈를 사용하여 고객 데이터 포인트들을 추론하는 예를 예시한다.
도 87은 전통적인 데이터와 비주얼 데이터 둘 다를 사용하여 개선된 고객 모델을 생성하기 위한 예시적인 데이터 흐름을 예시한다.
도 88은 통합된 온라인 및 점포내 고객 프로파일들을 활용하는 예시적인 애플리케이션의 아키텍처를 예시한다.
도 89는 다중 도메인 캐스케이드 CNN의 예시적인 실시예에 대한 플로차트를 예시한다.
도 90은 다중 도메인 CNN의 예시적인 실시예에 대한 플로차트를 예시한다.
도 91은 자기 주권 디바이스 아이덴티티들을 관리하기 위한 블록체인의 예시적인 실시예에 대한 플로차트를 예시한다.
도 92는 분산 컴퓨팅 알고리즘들을 관리하기 위한 블록체인의 예시적인 실시예에 대한 플로차트를 예시한다.
본 특허 출원은 2017년 12월 28일자로 출원되고 발명의 명칭이 "VISUAL FOG"인 미국 가특허 출원 제62/611,536호 및 2018년 6월 28일자로 출원되고 발명의 명칭이 "VISUAL FOG"인 미국 가특허 출원 제62/691,464호의 출원일의 이익을 주장하며, 이 미국 가특허 출원들의 내용은 이로써 명백히 참고로 포함된다.
이하의 개시내용은 본 개시내용의 상이한 특징들을 구현하기 위한 많은 상이한 실시예들, 또는 예들을 제공한다. 본 개시내용을 간략화하기 위해 컴포넌트들 및 배열들의 특정 예들이 아래에서 설명된다. 이들은, 물론, 예들에 불과하고 제한하는 것으로 의도되지 않는다. 게다가, 본 개시내용은 다양한 예들에서 참조 번호들 및/또는 문자들을 반복할 수 있다. 이러한 반복은 간략함 및 명확함을 위한 것이며, 그 자체가 논의되는 다양한 실시예들 및/또는 구성들 간의 관계에 영향을 미치지 않는다. 상이한 실시예들은 상이한 장점들을 가질 수 있으며, 임의의 실시예에 특정의 장점이 반드시 요구되는 것은 아니다.
본 개시내용의 특징들 및 기능성을 구현하는 데 사용될 수 있는 예시적인 실시예들이 첨부된 도면들을 더 상세히 참조하여 이제 설명될 것이다.
비주얼 포그 소개
도 1은 특정 실시예들에 따른 비주얼 포그 시스템(100)의 예시적인 실시예를 예시한다. 현대 컴퓨팅의 발전은 다양한 주류 컴퓨팅 애플리케이션들에 대한 컴퓨터 비전 기술들 및 대규모 비주얼 컴퓨팅의 증가된 사용을 가져왔다. 특히, 대규모 비디오 애널리틱스 및 비주얼 데이터 프로세싱에 의존하는 다양한 비주얼 컴퓨팅 애플리케이션들을 위해 카메라들의 신속한 배포 및 다른 유형들의 컴퓨터 비전 기술들이 활용되어 왔다. 예를 들어, 대규모 비주얼 컴퓨팅은 보안 및 감시, 운송(예를 들어, 교통 모니터링, 내비게이션, 주차, 인프라스트럭처 계획, 보안 또는 앰버 경보들), 소매(예를 들어, 고객 애널리틱스), 엔터프라이즈 애플리케이션들 등에 활용될 수 있다.
그렇지만, 대규모 비주얼 컴퓨팅에 대한 기존의 접근법들은 수많은 한계들을 겪는다. 특히, 기존의 비주얼 컴퓨팅 접근법들은 자원들(예를 들어, 프로세싱, 대역폭, 및 저장 자원들)을 비효율적으로 활용하고 제한된 기능성을 제공하는 경직된 설계들을 사용하여 구현된다. 예를 들어, 기존의 접근법들을 사용하여, 비주얼 데이터는 전형적으로 네트워크의 에지에 있는 디바이스들에 의해 캡처되고 프로세싱 및 저장을 위해 단순히 클라우드로 퍼널링되며(funneled), 따라서 클라우드 인프라스트럭처에 크게 의존한다. 그렇지만, 비주얼 데이터의 큰 크기로 인해, 이 접근법은 전형적으로 상당한 네트워크 대역폭을 소비하고 클라우드에서 상당한 프로세싱 및 저장 자원들을 요구한다. 그 결과, 기존의 접근법들은 종종 높은 레이턴시 및 비효율적인 자원 이용률을 겪고, 또한 부정확하며, 신뢰할 수 없고, 유연성이 없으며, 효율적으로 스케일링될 수 없을 수 있다.
그에 따라, 본 개시내용은 효율적이고 신뢰할 수 있는 방식으로 대규모 비주얼 컴퓨팅을 수행하기 위한 비주얼 포그 컴퓨팅 시스템(100)의 다양한 실시예들을 설명한다. 예를 들어, 비주얼 컴퓨팅 태스크들을 위해 클라우드 자원들(130)에 전적으로 또는 주로 의존하기보다는, 비주얼 포그 시스템(100)은 클라우드 자원들(130)과 에지 자원들(110) 둘 다 - 이는 집합적으로 "포그"라고 지칭될 수 있음 - 를 활용한다. 이러한 방식으로, 비주얼 포그 시스템(100)은 모든 이용가능한 "포그" 자원들을 활용하여 비주얼 컴퓨팅 태스크들을 더 효율적으로 수행할 수 있으며, 따라서 자원 이용률, 레이턴시, 정확성, 정밀도, 및 신뢰성을 개선시킬 수 있다. 더욱이, 본 개시내용 전반에 걸쳐 추가로 설명되는 바와 같이, 비주얼 포그 시스템(100)은 애드혹 질의들(ad-hoc queries)을 지원하고 고도로 스케일링가능하고(highly scalable) 유연한 설계를 사용하여 구현될 수 있으며, 따라서 이를 많은 비주얼 컴퓨팅 애플리케이션들 및 사용 사례들에 적합하게 만들어 준다.
도 1의 예시된 실시예에서, 비주얼 포그 시스템(100)은 에지 자원들(110) 및 복수의 연관된 비주얼 센서들(120), 클라우드 자원들(130), 및 통신 네트워크들(150)을 포함하며, 이들은 제각기 아래에서 추가로 논의된다. 더욱이, 다양한 실시예들에서, 비주얼 포그 시스템(100)의 이러한 컴포넌트들은 나머지 도면들과 관련하여 본 개시내용 전반에 걸쳐 설명되는 비주얼 컴퓨팅 기능성의 일부 또는 모든 양태들로 구현될 수 있다.
에지 자원들(110)은 통신 네트워크의 "에지" 인근에 배포되거나 접속된 임의의 장비, 디바이스들, 및/또는 컴포넌트들을 포함할 수 있다. 예시된 실시예에서, 예를 들어, 에지 자원들(110)은, 아래에서 추가로 설명되는 바와 같이, 최종 사용자 디바이스들(112a, 112b)(예를 들어, 데스크톱들, 랩톱들, 모바일 디바이스들), 사물 인터넷(IoT) 디바이스들(114), 및 게이트웨이들 또는 라우터들(116)을 포함한다. 에지 자원들(110)은, 로컬 영역 네트워크(150a) 및/또는 광역 네트워크(150b)와 같은, 하나 이상의 통신 네트워크(150)를 통해 서로 및/또는 다른 원격 네트워크들 및 자원들(예를 들어, 클라우드 자원들(130))과 통신할 수 있다. 더욱이, 예시된 실시예에서, 에지 자원들(110)은 그들의 주변과 연관된 비주얼 표현들 및 데이터를 캡처하기 위한 복수의 비주얼 센서들(120)(예를 들어, 카메라들)을 집합적으로 포함한다. 일부 실시예들에서, 예를 들어, 특정 최종 사용자 디바이스들(112) 및/또는 IoT 디바이스들(114)은 하나 이상의 카메라 및/또는 다른 유형들의 비주얼 센서들(120)을 포함할 수 있다. 비주얼 센서들(120)은, 카메라들, 자외선(UV) 센서들, 레이저 거리계들(예를 들어, LIDAR(light detection and ranging)), 적외선(IR) 센서들, EO/IR(electro-optical/infrared) 센서들 등과 같은, 임의의 유형의 비주얼 또는 광학 센서들을 포함할 수 있다.
최종 사용자 디바이스들(112)은, 예를 들어, 예들 중에서도, 데스크톱 컴퓨터들, 랩톱들, 태블릿들, 모바일 폰들 및 다른 모바일 디바이스들, 및 웨어러블 디바이스들(예를 들어, 스마트 워치들, 스마트 안경들, 헤드셋들)을 포함하여, 비주얼 포그 시스템(100)에서 사용자와의 상호작용을 가능하게 해주거나 용이하게 하는 임의의 디바이스를 포함할 수 있다.
IoT 디바이스들(114)은 사물 인터넷(IoT) 시스템 또는 네트워크와 통신할 수 있는 및/또는 그에 참여할 수 있는 임의의 디바이스를 포함할 수 있다. IoT 시스템들은 특정 애플리케이션 또는 사용 사례에 대해 상호연동하고 시너지 효과가 있는(synergizing) 각종의 상이한 디바이스들(예를 들어, IoT 디바이스들(114))로 구성된 새로운 또는 개선된 애드혹 시스템들 및 네트워크들을 지칭할 수 있다. 점점 더 많은 제품들과 장비가 진화하여 "스마트"하게 됨에 따라 그러한 애드혹 시스템들이 등장하고 있으며, 이는 그것들이 컴퓨터 프로세서들에 의해 제어되거나 모니터링되고 다른 디바이스들과 통신할 수 있다는 것을 의미한다. 예를 들어, IoT 디바이스(114)는, 클라우드 자원들(130) 및/또는 다른 에지 자원들(110)과 같은, 비주얼 포그 시스템(100)의 다른 컴포넌트들과의 상호연동을 가능하게 하는 컴퓨터 프로세서 및/또는 통신 인터페이스를 포함할 수 있다. IoT 디바이스들(114)은 처음부터 IoT 능력들을 갖게 개발된 "그린필드(greenfield)" 디바이스들일 수 있거나, 초기에 IoT 능력들 없이 개발되었던 기존의 레거시 디바이스들에 IoT 능력들을 통합함으로써 생성되는 "브라운필드(brownfield)" 디바이스들일 수 있다. 예를 들어, 일부 경우들에서, IoT 디바이스들(114)은, 장비, 장난감들, 도구들, 차량들, 생물들(예를 들어, 식물들, 동물들, 인간들) 등과 같은, "사물들"에 통합되거나 부착되는 센서들 및 통신 모듈들로부터 구축될 수 있다. 대안적으로 또는 부가적으로, 특정 IoT 디바이스들(114)은 시스템(100)의 다양한 컴포넌트들과 통신하기 위해, 에지 게이트웨이들 또는 라우터들(116)과 같은, 중간 컴포넌트들에 의존할 수 있다.
IoT 디바이스들(114)은 그들의 환경의 특성들과 연관된 센서 데이터 및 신호들을 모니터링, 검출, 측정, 및 생성하기 위한 다양한 유형들의 센서들을 포함할 수 있다. 일부 실시예들에서, 예를 들어, 특정 IoT 디바이스들(114)은 그들의 주변과 연관된 비주얼 표현들 및 데이터를 캡처하기 위한 비주얼 센서들(120)(예를 들어, 카메라들)을 포함할 수 있다. IoT 디바이스들(114)은, 예들 중에서도, 움직임, 무게, 물리적 접촉, 온도, 바람, 소음, 빛, 위치, 습도, 방사선, 액체, 특정 화합물들, 배터리 수명, 무선 신호들, 컴퓨터 통신, 및 대역폭과 같은 특성들을 검출하도록 구성된 다른 유형들의 센서들을 또한 포함할 수 있다. 센서들은 물리적 센서들(예를 들어, 물리적 모니터링 컴포넌트들) 및 가상 센서들(예를 들어, 소프트웨어 기반 모니터링 컴포넌트들)을 포함할 수 있다. IoT 디바이스들(114)은 그들 각자의 환경들에서 다양한 액션들을 수행하는 액추에이터들을 또한 포함할 수 있다. 예를 들어, 액추에이터는, 다른 예들 중에서도, 보안 시스템(예를 들어, 경보기, 카메라, 자물쇠들(locks)) 또는 가전 기기(예를 들어, 오디오 시스템, 조명, HVAC 기기들, 차고 도어들)의 전원 또는 동작을 토글하는 것과 같은, 특정 기능성을 선택적으로 활성화시키기 위해 사용될 수 있다.
실제로, 본 개시내용은 IoT 디바이스들(114) 및 연관된 센서들/액추에이터들의 잠재적으로 무한한 유니버스(universe)의 사용을 고려한다. IoT 디바이스들(114)은, 예를 들어, 운송(예를 들어, 자동차, 항공사들), 산업 제조, 에너지(예를 들어, 발전소들), 원격통신(예를 들어, 인터넷, 셀룰러, 및 텔레비전 서비스 제공자들), 소매, 의료(예를 들어, 건강관리, 의약품) 및/또는 식음료를 포함하여, 임의의 유형의 시스템(100) 및/또는 산업과 연관된 임의의 유형의 장비 및/또는 디바이스들을 포함할 수 있다. 운송 산업에서, 예를 들어, IoT 디바이스들(114)은, 내비게이션 시스템들, 자율 비행 또는 주행 시스템들, 교통 모니터링 및/또는 계획 시스템들, 주차 시스템들, 및/또는 센서들에 의해 모니터링되는 임의의 내부 기계 또는 전기 컴포넌트들(예를 들어, 엔진들)과 같은, 항공기들, 자동차들, 또는 선박들과 연관된 장비 및 디바이스들을 포함할 수 있다. IoT 디바이스들(114)은, 예들 중에서도, 산업 제조 및 생산, 출하(예를 들어, 화물 트래킹), 통신 네트워크들(예를 들어, 게이트웨이들, 라우터들, 서버들, 셀룰러 타워들), 서버 팜들, 발전소들, 풍력 발전 단지들(wind farms), 석유 및 가스 파이프라인들, 수처리 및 배수, 폐수 집수 및 처리, 및 날씨 모니터링(예를 들어, 온도, 바람, 및 습도 센서들)과 연관된 장비, 디바이스들, 및 인프라스트럭처를 또한 포함할 수 있다. IoT 디바이스들(114)은, 예를 들어, 스마트 엔터테인먼트 시스템들(예를 들어, 텔레비전들, 오디오 시스템들, 비디오 게임 시스템들), 스마트 가전 또는 사무 기기들(예를 들어, HVAC(heat-ventilation-air-conditioning) 기기들, 냉장고들, 세탁기들 및 건조기들, 커피 브루어들(coffee brewers)), 전력 제어 시스템들(예를 들어, 자동 전기, 조명, 및 HVAC 컨트롤들), 보안 시스템들(예를 들어, 경보기들, 자물쇠들, 카메라들, 모션 검출기들, 지문 스캐너들, 얼굴 인식 시스템들), 및 다른 홈 자동화 시스템들과 같은, 임의의 유형의 "스마트" 디바이스 또는 시스템을 또한 포함할 수 있다. IoT 디바이스들(114)은, 건물, 벽, 바닥, 지면, 가로등 기둥, 간판, 급수탑, 또는 임의의 다른 고정 또는 정적 구조물 상에 장착되는 것과 같이, 정적으로 위치될 수 있다. IoT 디바이스들(114)은, 예들 중에서도, 차량들 또는 항공기들 내의 디바이스들, 드론들, (예를 들어, 화물을 트래킹하기 위한) 패키지들, 모바일 디바이스들, 및 웨어러블 디바이스들과 같이, 모바일일 수 있다. 더욱이, 임의의 유형의 에지 자원(110)은, 예들 중에서도, 최종 사용자 디바이스들(112) 및 에지 게이트웨이들(116)을 포함한, IoT 디바이스(114)로 또한 간주될 수 있다.
에지 게이트웨이들 및/또는 라우터들(116)은 에지 자원들(110)로의 및 에지 자원들(110)로부터의 통신을 용이하게 하기 위해 사용될 수 있다. 예를 들어, 게이트웨이들(116)은 초기에 임의의 그러한 능력들 없이 개발되었던 기존의 레거시 디바이스들(예를 들어, "브라운필드" IoT 디바이스들(114))에 통신 능력들을 제공할 수 있다. 게이트웨이들(116)은 또한, Bluetooth 또는 ZigBee 통신 능력들을 갖는 IoT 디바이스들(114)과 같은, 단거리, 독점적, 또는 다른 방식으로 제한된 통신 능력들을 갖는 에지 자원들(110)의 지리적 범위(geographical reach)를 확장시키는 데 이용될 수 있다. 예를 들어, 게이트웨이들(116)은, 그들 고유의 통신 능력들(예를 들어, Bluetooth, ZigBee)을 사용하여 IoT 디바이스들(114)에 프론트-홀(front-haul)을 제공하고 다른 유선 또는 무선 통신 매체(예를 들어, 이더넷, Wi-Fi, 셀룰러)를 사용하여 다른 네트워크들(150) 및/또는 클라우드 자원들(130)에 백-홀(back-haul)을 제공하는 것에 의해, IoT 디바이스들(114)과 원격 네트워크들 또는 서비스들 사이의 중개자들로서 역할할 수 있다. 일부 실시예들에서, 게이트웨이(116)는 전용 게이트웨이 디바이스에 의해, 또는, 다른 IoT 디바이스(114), 최종 사용자 디바이스(112), 또는 다른 유형의 에지 자원(110)과 같은, 범용 디바이스에 의해 구현될 수 있다. 일부 경우들에서, 게이트웨이들(116)은 또한 특정 네트워크 관리 및/또는 애플리케이션 기능성(예를 들어, 비주얼 컴퓨팅 기능성, IoT 애플리케이션 및 관리 기능성)을, 개별적으로 또는, 클라우드 자원들(130) 및/또는 다른 에지 자원들(110)과 같은, 다른 컴포넌트들와 함께 중 어느 하나로, 구현할 수 있다.
클라우드 자원들(130)은, "클라우드"에서 다른 방식으로 지칭될 수 있는, 네트워크를 통해 원격으로 호스팅되는 임의의 자원들 또는 서비스들을 포함할 수 있다. 일부 실시예들에서, 예를 들어, 클라우드 자원들(130)은 데이터 센터 내의 서버들(예를 들어, 애플리케이션 서버들, 데이터베이스 서버들) 상에서 원격으로 호스팅될 수 있다. 클라우드 자원들(130)은, 예들 중에서도, 비주얼 컴퓨팅 애플리케이션들 및 서비스들, IoT 애플리케이션 및 관리 서비스들, 데이터 스토리지, 계산 서비스들(예를 들어, 데이터 애널리틱스, 탐색, 진단 및 결함 관리), 보안 서비스들(예를 들어, 감시, 경보들, 사용자 인증), 매핑 및 내비게이션, 지오로케이션 서비스들, 네트워크 또는 인프라스트럭처 관리, 지불 프로세싱, 오디오 및 비디오 스트리밍, 메시징, 소셜 네트워킹, 뉴스, 및 날씨를 포함하지만 이들로 제한되지 않는, 에지 자원들(110)에 의해 또는 에지 자원들(110)에 위해 이용될 수 있는 임의의 자원들, 서비스들, 및/또는 기능성을 포함할 수 있다.
통신 네트워크들(150a, 150b)은 시스템(100)의 컴포넌트들 사이의 통신을 용이하게 하기 위해 사용될 수 있다. 예시된 실시예에서, 예를 들어, 에지 자원들(110)은 서로 및/또는, 광역 네트워크(WAN)(150b) 및/또는 클라우드 자원들(130)과 같은, 다른 원격 네트워크들 또는 자원들과의 통신을 용이하게 하기 위해 로컬 영역 네트워크(LAN)(150a)에 접속된다. 다양한 실시예들에서, 비주얼 포그 시스템(100)은, 로컬 영역 네트워크들, 광역 네트워크들, 공중 네트워크들, 인터넷, 셀룰러 네트워크들, Wi-Fi 네트워크들, 단거리 네트워크들(예를 들어, Bluetooth 또는 ZigBee), 및/또는 임의의 다른 유선 또는 무선 통신 네트워크들 또는 매체들을 포함한, 임의의 수의 또는 임의의 유형의 통신 네트워크(들)(150)를 사용하여 구현될 수 있다.
일반적으로, 에지 자원들(110)(및 특히 IoT 디바이스들(114))은 매우 큰 볼륨의 다양한 데이터를 생성할 수 있다. 일 예로서, 비주얼 센서들(120)을 갖는 에지 자원들(110)은, 비디오 및/또는 이미지들과 같은, 큰 볼륨의 비주얼 데이터를 생성할 수 있다. 에지 자원들(110)은 전형적으로 프로세싱 및/또는 저장을 위해 이 데이터를 클라우드(130)로 오프로드한다. 그렇지만, 클라우드 자원들(130)은 IoT 디바이스들(114) 및 다른 에지 자원들(110)에 의해 생성되는 데이터의 빠르게 증가하는 볼륨, 다양성, 및 속도를 핸들링하는 데 반드시 적합하지는 않을 수 있다. 예를 들어, 클라우드 기반 프로세싱은, 예들 중에서도, 시간에 민감한 또는 극비(highly confidential) 데이터를 프로세싱하는 것, 또는 네트워크 대역폭 제약들에 직면할 때와 같은, 특정 상황들에서 이상적이지 않을 수 있다. 그에 따라, 일부 실시예들에서, 비주얼 포그 시스템(100)은 에지 자원들(110)을 사용하여 클라우드(130)의 성능 및 능력들을 증대시키기 위해 "에지" 프로세싱을 활용할 수 있다. 에지 프로세싱은, 큰 볼륨의 데이터를 프로세싱 및 저장을 위해 클라우드로 단순히 퍼널링하기보다는, 데이터가 생성되는 곳 인근에서, (예를 들어, 에지 자원들(110)을 사용하여) 네트워크 에지에서 특정 데이터를 프로세싱하는 것을 수반하는 접근법이다. 심층 분석 및/또는 장기 저장을 위해서와 같이, 적절한 경우, 특정 데이터가 여전히 클라우드로 송신될 수 있다. (예를 들어, 클라우드 기반 프로세싱이 비효율적이고, 비효과적이며, 및/또는 안전하지 않을 때) 클라우드 기반 프로세싱의 단점들을 보완하고, 따라서 IoT 디바이스들(114) 및/또는 다른 에지 자원들(110)에 의해 생성되는 데이터의 증가하는 볼륨, 다양성, 및 속도의 핸들링을 개선시키기 위해 에지 프로세싱이 사용될 수 있다. 예를 들어, 일부 경우들에서, 클라우드에서보다는 데이터의 소스 인근에서(예를 들어, 네트워크 에지에서) 데이터를 프로세싱하는 것은 성능을 개선시킬 수 있고 그리고/또는 시스템 고장들 또는 재난들을 피할 수 있다. 에지 프로세싱은 또한 네트워크 대역폭을 절감할 수 있으며, 이는 대역폭 제약들 및/또는 제한된 네트워크 접속성에 직면할 때 특히 유리할 수 있다.
일부 경우들에서, "클라우드"(130)의 기능성이 에지 자원들(110)에 의해 효과적으로 확장되어, 따라서 네트워크 에지에 걸쳐 "포그"를 형성하기 때문에, 에지 자원들(110) 및 클라우드 자원들(130) 둘 다의 집합적 사용은 "포그" 컴퓨팅이라고 지칭될 수 있다. 더욱이, 일부 실시예들에서는, “포그" 내의 디바이스들(110)은, 예들 중에서도, 디바이스들이 서로를 발견하고 서로 접속할 수 있게 해주는, 2015년 12월 23일에 OCF(Open Connectivity Foundation™)에 의해 공개된, OIC(open interconnect consortium) 표준 규격 1.0; "Thread Group"이라는 이름의 조직들의 연합에 의해 개발된, "스마트" 홈 자동화 및 유사한 배포들에서 사용되는 사물 인터넷(IoT) 디바이스들에 대한 네트워킹 프로토콜인 Thread; OLSR(optimized link state routing) 프로토콜; 및/또는 B.A.T.M.A.N.(better approach to mobile ad-hoc networking)과 같은, 상호접속 표준 또는 프로토콜을 사용하여 서로 접속 및/또는 통신할 수 있다.
더욱이, 일부 실시예들에서, 포그 컴퓨팅은 대규모 비주얼 컴퓨팅 애플리케이션들을 위해 비주얼 포그 시스템(100)에 의해 활용될 수 있다. 예를 들어, 일부 실시예들에서, 비주얼 포그 시스템(100)의 컴포넌트들(예를 들어, 에지 자원들(110), 클라우드 자원들(130))은 나머지 도면들과 관련하여 본 개시내용 전반에 걸쳐 설명되는 비주얼 컴퓨팅 기능성의 일부 또는 모든 양태들로 구현될 수 있다.
시스템(100)의 컴퓨팅 디바이스들 중 임의의 것, 전부, 또는 일부는, 특정의 운영 체제의 실행을 가상화하도록 적응된 가상 머신들과 함께, Linux 또는 다른 UNIX 기반 운영 체제들, Microsoft Windows, Windows Server, MacOS, Apple iOS, Google Android, 또는 임의의 커스터마이즈된 및/또는 독점적 운영 체제를 포함한, 임의의 운영 체제를 실행하도록 적응될 수 있다.
도 1이 복수의 요소들을 포함하거나 이들과 연관되어 있는 것으로 설명되어 있지만, 도 1의 시스템(100) 내에 예시된 모든 요소들이 본 개시내용의 각각의 대안적인 구현에서 이용될 수 있는 것은 아니다. 부가적으로, 도 1의 예들과 관련하여 설명된 요소들 중 하나 이상은 시스템(100)의 외부에 위치될 수 있는 반면, 다른 경우들에서, 특정 요소들은 다른 설명된 요소들은 물론, 예시된 구현에서 설명되지 않은 다른 요소들 중 하나 이상 내에 또는 그의 일 부분으로서 포함될 수 있다. 게다가, 도 1에 예시된 특정 요소들이 다른 컴포넌트들과 조합될 수 있는 것은 물론, 본 명세서에 설명된 그 목적들에 부가하여 대안의 또는 부가의 목적들을 위해 사용될 수 있다.
비주얼 포그 컴퓨팅 시스템(100)의 구현과 연관된 부가의 실시예들은 나머지 도면들과 관련하여 추가로 설명된다. 그에 따라, 도 1의 비주얼 포그 시스템(100)이 본 개시내용 전반에 걸쳐 설명된 실시예들의 임의의 양태들로 구현될 수 있음이 이해되어야 한다.
예시적인 사물 인터넷(IoT) 구현들
도 2 내지 도 5는 본 명세서에 개시된 실시예들에 따라 사용될 수 있는 사물 인터넷(IoT) 네트워크들 및 디바이스들의 예들을 예시한다. 예를 들어, 본 개시내용 전반에 걸쳐 설명된 동작들 및 기능성이 예시적인 형태의 전자 프로세싱 시스템 내의 IoT 디바이스 또는 머신에 의해 구체화될 수 있으며, 전자 프로세싱 시스템 내에서 전자 프로세싱 시스템으로 하여금, 예시적인 실시예에 따른, 본 명세서에서 논의된 방법론들 중 임의의 것을 수행하게 하기 위해 명령어들의 세트 또는 시퀀스가 실행될 수 있다. 머신은 그 머신에 의해 취해질 액션들을 지정하는 명령어들을 (순차적으로 또는 다른 방식으로) 실행할 수 있는 개인 컴퓨터(PC), 태블릿 PC, PDA(personal digital assistant), 모바일 전화 또는 스마트폰, 또는 임의의 머신의 양태들에 의해 구체화되는 머신을 포함한, IoT 디바이스 또는 IoT 게이트웨이일 수 있다. 게다가, 이상의 예에서 단일 머신만이 묘사되고 참조될 수 있지만, 그러한 머신은 또한 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어들의 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로(jointly) 실행하는 머신들의 임의의 컬렉션을 포함하는 것으로 취해져야 한다. 게다가, 프로세서 기반 시스템에 대한 이들 및 비슷한 예들은 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어들을 개별적으로 또는 공동으로 실행하기 위해 프로세서(예컨대, 컴퓨터)에 의해 제어되거나 동작되는 하나 이상의 머신의 임의의 세트를 포함하는 것으로 취해져야 한다.
도 2는 링크들을 통해 각자의 게이트웨이들에 커플링된 각자의 사물 인터넷(internet-of-things)(IoT) 네트워크들에 대한 예시적인 도메인 토폴로지를 예시한다. 사물 인터넷(IoT)은 매우 낮은 레벨들에서의 기능성 및 데이터 취득을 제공하기 위해 많은 수의 컴퓨팅 디바이스들이 서로 그리고 인터넷에 상호접속되는 개념이다. 따라서, 본 명세서에서 사용되는 바와 같이, IoT 디바이스는 다른 IoT 디바이스들 및, 인터넷과 같은, 보다 넓은 네트워크와 통신하는, 그 중에서도 특히, 감지 또는 제어와 같은, 기능을 수행하는 반자율 디바이스(semiautonomous device)를 포함할 수 있다.
종종, IoT 디바이스들은 메모리, 크기, 또는 기능성이 제한되어 있어, 더 적은 수의 더 큰 디바이스들과 유사한 비용으로 더 많은 수가 배포될 수 있게 해준다. 그렇지만, IoT 디바이스는 스마트 폰, 랩톱, 태블릿, 또는 PC, 또는 다른 더 큰 디바이스일 수 있다. 게다가, IoT 디바이스는, 스마트 폰 또는 다른 컴퓨팅 디바이스 상의 애플리케이션과 같은, 가상 디바이스일 수 있다. IoT 디바이스들은, 데이터 저장, 프로세스 제어 등을 위해, IoT 디바이스들을 다른 IoT 디바이스들에 그리고 클라우드 애플리케이션들에 커플링시키는 데 사용되는 IoT 게이트웨이들을 포함할 수 있다.
IoT 디바이스들의 네트워크들은, 배수 시스템들, 전력 분배 시스템들, 파이프라인 제어 시스템들, 플랜트 제어 시스템들, 조명 스위치들, 서모스탯들, 자물쇠들, 카메라들, 경보기들, 모션 센서들 등과 같은, 상용 및 홈 자동화 디바이스들을 포함할 수 있다. IoT 디바이스들은, 예를 들어, 시스템들을 제어하거나 데이터에 액세스하기 위해, 원격 컴퓨터들, 서버들, 및 다른 시스템들을 통해 액세스가능할 수 있다.
인터넷 및 비슷한 네트워크들의 미래의 성장은 매우 많은 수의 IoT 디바이스들을 수반할 수 있다. 그에 따라, 본 명세서에서 논의된 기술들의 맥락에서, 그러한 미래의 네트워킹을 위한 다수의 혁신들은 이러한 계층들 전부가 방해받지 않고 성장하는 것, 접속된 자원들을 발견하고 액세스가능하게 만드는 것, 및 접속된 자원들을 숨기고 구획화(compartmentalize)하는 능력을 지원하는 것의 필요성을 해결할 것이다. 임의의 수의 네트워크 프로토콜들 및 통신 표준들이 사용될 수 있으며, 여기서 각각의 프로토콜 및 표준은 특정 목적들을 해결하도록 설계되어 있다. 게다가, 프로토콜들은 위치, 시간 또는 공간에 관계없이 동작하는 인간 액세스가능 서비스들(human accessible services)을 지원하는 패브릭의 일부이다. 혁신들은, 하드웨어 및 소프트웨어와 같은, 서비스 전달(service delivery) 및 연관된 인프라스트럭처; 보안 강화; 및 서비스 레벨 및 서비스 전달 협약에 명시된 서비스 품질(QoS) 조건에 기초한 서비스들의 제공을 포함한다. 이해될 것인 바와 같이, 도 2 내지 도 5에서 소개된 것들과 같은, IoT 디바이스들 및 네트워크들의 사용은 유선 및 무선 기술들의 조합을 포함하는 이종 접속성 네트워크(heterogeneous network of connectivity)에 많은 새로운 과제들을 제시한다.
도 2는 구체적으로는, 백본 링크들(202)을 통해 각자의 게이트웨이들(254)에 커플링된 IoT 네트워크들(256, 258, 260, 262)과 함께, IoT 디바이스들(204)을 포함하는 다수의 사물 인터넷(IoT) 네트워크들에 대해 사용될 수 있는 도메인 토폴로지의 간략화된 도면을 제공한다. 예를 들어, 다수의 IoT 디바이스들(204)은 게이트웨이(254)와, 그리고 게이트웨이(254)를 통해 서로 통신할 수 있다. 도면을 간략화하기 위해, 모든 IoT 디바이스(204) 또는 통신 링크(예를 들어, 링크(216, 222, 228 또는 232))가 라벨링되어 있지는 않다. 백본 링크들(202)은 광학 네트워크들을 포함한, 임의의 수의 유선 또는 무선 기술들을 포함할 수 있으며, LAN(local area network), WAN(wide area network), 또는 인터넷의 일부일 수 있다. 부가적으로, 그러한 통신 링크들은 다양한 디바이스들의 상호접속을 용이하게 하는 다중화/역다중화(MUXing/deMUXing) 컴포넌트들의 사용을 포함한, IoT 디바이스들(204)과 게이트웨이들(254) 둘 다 사이의 광학 신호 경로들을 용이하게 한다.
네트워크 토폴로지는 BLE(Bluetooth low energy) 링크들(222)을 사용하는 네트워크(256)와 함께 제공되는 메시 네트워크와 같은, 임의의 수의 유형들의 IoT 네트워크들을 포함할 수 있다. 존재할 수 있는 다른 유형들의 IoT 네트워크들은 IEEE 802.11(Wi-Fi®) 링크들(228)을 통해 IoT 디바이스들(204)과 통신하는 데 사용되는 WLAN(wireless local area network) 네트워크(258), LTE/LTE-A(4G) 또는 5G 셀룰러 네트워크를 통해 IoT 디바이스들(204)과 통신하는 데 사용되는 셀룰러 네트워크(260), 및 LPWA(low-power wide area) 네트워크(262), 예를 들어, 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 네트워크들이 중앙집중식 제어 시스템들 없이도 기능할 수 있게 해줄 수 있다. 그에 따라, 본 명세서에서 설명된 개선된 기술들은 현재의 구현들을 훨씬 넘어서 네트워크 관리 및 동작 기능들을 자동화하고 향상시키는 데 사용될 수 있다.
예에서, 백본 링크들(202)을 통해서와 같은, IoT 디바이스들(204) 사이의 통신은 AAA(authentication, authorization, and accounting)를 위한 탈중앙화된 시스템에 의해 보호될 수 있다. 탈중앙화된 AAA 시스템에서, 분산 지불, 신용, 감사, 인가, 및 인증 시스템들은 상호접속된 이종 네트워크 인프라스트럭처에 걸쳐 구현될 수 있다. 이것은 시스템들 및 네트워크들이 자율 동작들을 향해 갈 수 있게 해준다. 이러한 유형들의 자율 동작들에서, 머신들은 심지어 인적 자원들을 위한 계약을 체결하고 다른 머신 네트워크들과 파트너쉽들을 협상할 수 있다. 이것은 상호 목적들의 달성 및 개략적으로 기술된 계획된 서비스 레벨 협약들에 대비한 균형잡힌 서비스 전달을 가능하게 해줄 수 있는 것은 물론, 계량, 측정, 트레이싱 능력(traceability) 및 트래킹 능력(trackability)을 제공하는 솔루션들을 달성할 수 있게 해줄 수 있다. 새로운 공급망 구조들 및 방법들의 생성은 임의의 인간 개입 없이 다수의 서비스들이 생성되고(created), 가치 창출되며(mined for value), 소멸되게(collapsed)할 수 있다.
그러한 IoT 네트워크들은 사운드, 조명, 전자 트래픽, 얼굴 및 패턴 인식, 냄새, 진동과 같은 감지 기술들을 IoT 디바이스들 사이의 자율 조직화들에 통합함으로써 더욱 향상될 수 있다. 감각 시스템들의 통합은 계약 서비스 목적들에 대비한 체계적이고 자율적인 통신 및 서비스 전달 코디네이션, 자원들의 오케스트레이션 및 QoS(Quality of Service) 기반 스워밍(swarming) 및 융합을 가능하게 해줄 수 있다. 네트워크 기반 자원 프로세싱의 개별 예들 중 일부는 다음과 같은 것을 포함한다.
예를 들어, 메시 네트워크(256)는 인라인 데이터-정보 변환들(inline data-to-information transforms)을 수행하는 시스템들에 의해 향상될 수 있다. 예를 들어, 다중 링크 네트워크(multi-link network)를 포함하는 프로세싱 자원들의 자기 형성 체인들(self-forming chains)은 효율적인 방식으로 원시 데이터를 정보로 변환하는 것, 그리고 자산들 및 자원들과 각각의 연관된 관리를 구별하는 능력을 분배할 수 있다. 게다가, 데이터 무결성, 품질, 보증을 개선시키고 데이터 신뢰의 척도를 전달하기 위해 인프라스트럭처 및 자원 기반 신뢰 및 서비스 지표들의 적절한 컴포넌트들이 삽입될 수 있다.
WLAN 네트워크(258)는, 예를 들어, 다중 표준 접속성을 제공하기 위해 표준들 변환을 수행하는 시스템들을 사용하여, 상이한 프로토콜들을 사용하는 IoT 디바이스들(204)이 통신할 수 있게 해줄 수 있다. 추가의 시스템들은 가시적 인터넷 자원들 및 숨겨진 인터넷 자원들을 포함하는 다중 표준 인프라스트럭처에 걸쳐 심리스 상호접속성(seamless interconnectivity)을 제공할 수 있다.
셀룰러 네트워크(260)에서의 통신은, 예를 들어, 데이터를 오프로드(offload)하거나, 더 많은 원격 디바이스들로 통신을 확장하거나, 둘 다를 하는 시스템들에 의해 향상될 수 있다. LPWA 네트워크(262)는 비-인터넷 프로토콜(IP) 대 IP 상호접속들, 어드레싱, 및 라우팅을 수행하는 시스템들을 포함할 수 있다. 게다가, IoT 디바이스들(204) 각각은 그 디바이스와의 광역 통신을 위한 적절한 트랜시버를 포함할 수 있다. 게다가, 각각의 IoT 디바이스(204)는 부가의 프로토콜들 및 주파수들을 사용하는 통신을 위한 다른 트랜시버들을 포함할 수 있다.
마지막으로, IoT 디바이스들의 클러스터들은 다른 IoT 디바이스들과는 물론 클라우드 네트워크와 통신하도록 장비될 수 있다. 이것은 IoT 디바이스들이 디바이스들 사이에 애드혹 네트워크를 형성할 수 있게 해줄 수 있어, 그들이, 포그 디바이스라고 지칭될 수 있는, 단일 디바이스로서 기능할 수 있게 해줄 수 있다. 이 구성은 아래의 도 3과 관련하여 추가로 논의된다.
도 3은 클라우드 컴퓨팅 네트워크의 에지에서 포그 디바이스로서 동작하는 IoT 디바이스들(디바이스들(302))의 메시 네트워크와 통신하는 클라우드 컴퓨팅 네트워크를 예시한다. IoT 디바이스들의 메시 네트워크는, 클라우드(300)의 에지에서 동작하는, 포그(320)라고 지칭될 수 있다. 다이어그램을 간략화하기 위해, 모든 IoT 디바이스(302)가 라벨링되어 있는 것은 아니다.
포그(320)는 다수의 IoT 디바이스들(302)이, 예를 들어, 라디오 링크들(322)에 의해, 서로 통신하는 대규모로 상호접속된 네트워크(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 디바이스들(302), 이 예에서, 게이트웨이들(304), 데이터 집계기들(data aggregators)(326), 및 센서들(328)이 도시되어 있지만, IoT 디바이스들(302) 및 기능성의 임의의 조합들이 사용될 수 있다. 게이트웨이들(304)은 클라우드(300)와 포그(320) 사이의 통신을 제공하는 에지 디바이스들일 수 있고, 모션 데이터, 흐름 데이터(flow data), 온도 데이터 등과 같은, 센서들(328)로부터 획득되는 데이터에 대한 백 엔드 프로세스 기능을 또한 제공할 수 있다. 데이터 집계기들(326)은 임의의 수의 센서들(328)로부터 데이터를 수집할 수 있고, 분석을 위해 백 엔드 프로세싱 기능을 수행할 수 있다. 결과들, 원시 데이터, 또는 둘 다는 게이트웨이들(304)을 통해 클라우드(300)로 전달될 수 있다. 센서들(328)은, 예를 들어, 데이터를 수집하기도 하고 데이터를 프로세싱하기도 할 수 있는, 완전 IoT 디바이스들(full IoT devices)(302)일 수 있다. 일부 경우들에서, 센서들(328)은 기능성, 예를 들어, 데이터를 수집하는 것 및 데이터 집계기들(326) 또는 게이트웨이들(304)이 데이터를 프로세싱할 수 있게 해주는 것에서 더 제한될 수 있다.
임의의 IoT 디바이스(302)로부터의 통신은 게이트웨이들(304)에 도달하기 위해 IoT 디바이스들(302) 중 임의의 것과의 사이의 편리한 경로(예를 들어, 가장 편리한 경로)를 따라 전달될 수 있다. 이러한 네트워크들에서, 상호접속들의 횟수는 상당한 중복성(redundancy)을 제공하여, 다수의 IoT 디바이스들(302)의 손실에도, 통신이 유지될 수 있게 해준다. 게다가, 메시 네트워크의 사용은, 다른 IoT 디바이스(302)에 접속하기 위한 범위(range)가 게이트웨이들(304)에 접속하기 위한 범위보다 훨씬 더 작을 수 있기 때문에, 매우 낮은 전력이거나 인프라스트럭처로부터의 멀리 떨어져 위치되는 IoT 디바이스들(302)이 사용될 수 있게 해줄 수 있다.
이러한 IoT 디바이스들(302)로부터 제공되는 포그(320)는 클라우드(300)의 에지에 위치된 단일 디바이스, 예를 들어, 포그 디바이스로서, 서버(306)와 같은, 클라우드(300) 내의 디바이스들에 제시될 수 있다. 이 예에서, 포그 디바이스로부터 오는 경보들은 포그(320) 내의 특정 IoT 디바이스(302)로부터 오는 것으로 식별되지 않고 송신될 수 있다. 이러한 방식으로, 포그(320)는, 그 중에서도, 데이터 애널리틱스(data analytics), 데이터 집계, 및 머신 러닝과 같은 프로세싱 또는 데이터 집중적인 태스크들을 수행하기 위한 컴퓨팅 및 저장 자원들을 제공하는 분산 플랫폼인 것으로 간주될 수 있다.
일부 예들에서, IoT 디바이스들(302)은 명령형 프로그래밍 스타일(imperative programming style)을 사용하여 구성될 수 있으며, 예를 들어, 각각의 IoT 디바이스(302)는 특정 기능 및 통신 파트너들을 갖는다. 그렇지만, 포그 디바이스를 형성하는 IoT 디바이스들(302)은 선언적 프로그래밍 스타일(declarative programming style)로 구성될 수 있어, IoT 디바이스들(302)이, 조건들, 질의들, 및 디바이스 고장들에 응답하여 필요한 자원들을 결정하는 것과 같이, 그들의 동작들 및 통신을 재구성할 수 있게 해준다. 예로서, IoT 디바이스들(302)에 의해 모니터링되는 장비의 서브세트의 동작들에 관한 서버(306)에 위치된 사용자로부터의 질의는 포그(320) 디바이스가 질의에 답변하는 데 필요한, 특정의 센서들(328)과 같은, IoT 디바이스들(302)을 선택하는 것을 결과할 수 있다. 이러한 센서들(328)로부터의 데이터는 이어서, 질의에 답변하기 위해 포그(320) 디바이스에 의해 서버(306)에게 송신되기 전에, 센서들(328), 데이터 집계기들(326), 또는 게이트웨이들(304)의 임의의 조합에 의해 집계되고 분석될 수 있다. 이 예에서, 포그(320) 내의 IoT 디바이스들(302)은, 흐름 센서들 또는 온도 센서들로부터의 데이터를 추가하는 것과 같이, 질의에 기초하여 사용되는 센서들(328)을 선택할 수 있다. 게다가, IoT 디바이스들(302) 중 일부가 동작하지 않는 경우, 포그(320) 디바이스 내의 다른 IoT 디바이스들(302)은, 이용가능한 경우, 유사한 데이터를 제공할 수 있다.
도 4는 다수의 사물 인터넷(IoT) 디바이스들과 통신하는 클라우드 컴퓨팅 네트워크, 또는 클라우드(400)의 도면을 예시한다. 클라우드(400)는 인터넷을 나타낼 수 있거나, LAN(local area network) 또는, 회사의 독점 네트워크와 같은, WAN(wide area network)일 수 있다. IoT 디바이스들은, 다양한 조합들로 그룹화된, 임의의 수의 상이한 유형들의 디바이스들을 포함할 수 있다. 예를 들어, 교통 제어 그룹(406)은 도시에서 거리들을 따라 있는 IoT 디바이스들을 포함할 수 있다. 이러한 IoT 디바이스들은 정지 신호등들, 교통 흐름 모니터들, 카메라들, 기상 센서들 등을 포함할 수 있다. 교통 제어 그룹(406) 또는 다른 서브그룹들은, LPWA 링크들, 광학 링크들 등과 같은, 유선 또는 무선 링크들(408)을 통해 클라우드(400)와 통신할 수 있다. 게다가, 유선 또는 무선 서브네트워크(412)는 IoT 디바이스들이, 로컬 영역 네트워크, 무선 로컬 영역 네트워크 등을 통해서와 같이, 서로 통신할 수 있게 해줄 수 있다. IoT 디바이스들은 클라우드(500)와 같은 원격 위치들과 통신하기 위해 게이트웨이(510 또는 528)와 같은 다른 디바이스를 사용할 수 있고; IoT 디바이스들은 또한 클라우드(500)와의 또는 게이트웨이(510)와의 통신을 용이하게 하기 위해 하나 이상의 서버(530)를 사용할 수 있다. 예를 들어, 하나 이상의 서버(530)는 로컬 영역 네트워크 사이에서 로컬 에지 클라우드 또는 포그 구현을 지원하기 위해 중간 네트워크 노드로서 동작할 수 있다. 게다가, 묘사된 게이트웨이(528)는, 다양한 IoT 디바이스들(514, 520, 524)이 클라우드(500)에서의 자원들의 할당 및 사용에 대해 제약되거나 동적인 것과 같이, 클라우드 대 게이트웨이 대 다수의 에지 디바이스들 구성(cloud-to-gateway-to-many edge devices configuration)에서 동작할 수 있다.
IoT 디바이스들의 다른 예시적인 그룹들은, 그 중에서도, 원격 기상 관측소들(remote weather stations)(414), 로컬 정보 단말들(416), 경보 시스템들(418), 현금 자동 입출금기들(automated teller machines)(420), 경보 패널들(422), 또는, 응급 차량들(424) 또는 다른 차량들(426)과 같은, 움직이는 차량들을 포함할 수 있다. 이러한 IoT 디바이스들 각각은 다른 IoT 디바이스들과, 서버들(404)과, 다른 IoT 포그 디바이스 또는 시스템(도시되어 있지 않지만, 도 3에 묘사됨)과, 또는 이들의 조합과 통신할 수 있다. IoT 디바이스들의 그룹들은 다양한 주거, 상업, 및 산업 환경(사설 또는 공공 환경들 둘 다를 포함함)에 배포될 수 있다.
도 4으로부터 알 수 있는 바와 같이, 많은 수의 IoT 디바이스들이 클라우드(400)를 통해 통신할 수 있다. 이것은 상이한 IoT 디바이스들이 자율적으로 정보를 요청하거나 정보를 다른 디바이스들에 제공할 수 있게 해줄 수 있다. 예를 들어, IoT 디바이스들의 그룹(예를 들어, 교통 제어 그룹(406))은 원격 기상 관측소들(414)의 그룹에 현재의 일기 예보를 요청할 수 있고, 이는 인간 개입 없이 예측을 제공할 수 있다. 게다가, 응급 차량(424)은 절도가 진행 중인 현금 자동 입출금기(420)에 의해 경보를 받을 수 있다. 응급 차량(424)이 현금 자동 입출금기(420)를 향해 진행할 때, 응급 차량(424)은, 예를 들어, 응급 차량(424)이 교차로에 방해받지 않고 접근하기에 충분한 시간 동안 교차로에서의 교차 교통(cross traffic)을 차단시키기 위해 신호등이 적색으로 전환되는 것에 의해 그 위치까지의 교통정리(clearance)를 요청하기 위해 교통 제어 그룹(406)에 액세스할 수 있다.
원격 기상 관측소들(414) 또는 교통 제어 그룹(406)과 같은, IoT 디바이스들의 클러스터들은 다른 IoT 디바이스들과는 물론 클라우드(400)와 통신하도록 장비될 수 있다. 이것은 IoT 디바이스들이 디바이스들 사이에 애드혹 네트워크(ad-hoc network)를 형성할 수 있게 해줄 수 있어, 그들이, (예를 들어, 도 3을 참조하여 앞서 설명된 바와 같이) 포그 디바이스 또는 시스템이라고 지칭될 수 있는, 단일 디바이스로서 기능할 수 있게 해준다.
도 5는 본 명세서에서 설명된 기술들을 구현하기 위해 IoT 디바이스(550)에 존재할 수 있는 컴포넌트들의 예에 대한 블록 다이어그램이다. IoT 디바이스(550)는 예에 도시되거나 상기 개시내용에서 참조되는 컴포넌트들의 임의의 조합들을 포함할 수 있다. 컴포넌트들은 IoT 디바이스(550)에 적응된, IC들, 이들의 부분들, 이산 전자 디바이스들(discrete electronic devices), 또는 다른 모듈들, 로직, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합으로서, 또는 더 큰 시스템의 섀시 내에 다른 방식으로 통합된 컴포넌트들로서 구현될 수 있다. 부가적으로, 도 5의 블록 다이어그램은 IoT 디바이스(550)의 컴포넌트들의 하이 레벨 뷰를 묘사하도록 의도되어 있다. 그렇지만, 다른 구현들에서는, 도시된 컴포넌트들 중 일부가 생략될 수 있고, 부가의 컴포넌트들이 존재할 수 있으며, 도시된 컴포넌트들의 상이한 배열이 발생할 수 있다.
IoT 디바이스(550)는 마이크로프로세서, 다중 코어 프로세서, 멀티스레드 프로세서, 초저전압 프로세서, 임베디드 프로세서, 또는 다른 알려진 프로세싱 요소일 수 있는 프로세서(552)를 포함할 수 있다. 프로세서(552)는 프로세서(552) 및 다른 컴포넌트들이 단일 집적 회로, 또는 Intel의 Edison™ 또는 Galileo™ SoC 보드들과 같은, 단일 패키지로 형성되는 시스템 온 칩(SoC)의 일부일 수 있다. 예로서, 프로세서(552)는 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. 또는 그 고객, 또는 이들의 라이선시들(licensees) 또는 채택자들(adopters)로부터 라이선싱된 ARM 기반 설계와 같은, 임의의 수의 다른 프로세서들이 사용될 수 있다. 프로세서들은 Apple® Inc.의 A5 내지 A10 프로세서, Qualcomm® Technologies, Inc.의 Snapdragon™ 프로세서, 또는 Texas Instruments, Inc.의 OMAP™ 프로세서와 같은 유닛들을 포함할 수 있다.
프로세서(552)는 인터커넥트(556)(예를 들어, 버스)를 통해 시스템 메모리(554)와 통신할 수 있다. 주어진 양의 시스템 메모리를 제공하기 위해 임의의 수의 메모리 디바이스들이 사용될 수 있다. 예들로서, 메모리는 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)과 같은, 임의의 수의 다른 메모리 구현들이 사용될 수 있다.
데이터, 애플리케이션들, 운영 체제들 등과 같은 정보의 영속적 저장을 제공하기 위해, 스토리지(558)는 또한 인터커넥트(556)를 통해 프로세서(552)에 커플링될 수 있다. 예에서, 스토리지(558)는 SSDD(solid state disk drive)를 통해 구현될 수 있다. 스토리지(558)로 사용될 수 있는 다른 디바이스들은, SD 카드들, microSD 카드들, xD 픽처 카드들 등과 같은, 플래시 메모리 카드들, 및 USB 플래시 드라이브들을 포함한다. 저전력 구현들에서, 스토리지(558)는 프로세서(552)와 연관된 온-다이 메모리 또는 레지스터들일 수 있다. 그렇지만, 일부 예들에서, 스토리지(558)는 마이크로 하드 디스크 드라이브(HDD)를 사용하여 구현될 수 있다. 게다가, 그 중에서도, 저항 변화 메모리들, 상 변화 메모리들, 홀로그래픽 메모리들, 또는 화학적 메모리들과 같은, 임의의 수의 신기술들이 설명된 기술들에 부가하여 또는 그 대신에 스토리지(558)로 사용될 수 있다.
컴포넌트들은 인터커넥트(556)를 통해 통신할 수 있다. 인터커넥트(556)는 ISA(industry standard architecture), EISA(extended ISA), PCI(peripheral component interconnect), PCIx(peripheral component interconnect extended), PCIe(PCI express), 또는 임의의 수의 다른 기술들을 포함한, 임의의 수의 기술들을 포함할 수 있다. 인터커넥트(556)는, 예를 들어, SoC 기반 시스템에서 사용되는, 독점적 버스(proprietary bus)일 수 있다. 그 중에서도, I2C 인터페이스, SPI 인터페이스, 포인트 투 포인트 인터페이스들, 및 전력 버스와 같은, 다른 버스 시스템들이 포함될 수 있다.
인터커넥트(556)는 다른 메시 디바이스들(564)과의 통신을 위해, 프로세서(552)를 메시 트랜시버(562)에 커플링시킬 수 있다. 메시 트랜시버(562)는, 그 중에서도, Bluetooth® Special Interest Group에 의해 정의된 바와 같은, BLE(Bluetooth® low energy) 표준, 또는 ZigBee® 표준을 사용하는, IEEE 802.15.4 표준 하에서의 2.4 기가헤르츠(GHz) 전송들과 같은, 임의의 수의 주파수들 및 프로토콜들을 사용할 수 있다. 특정의 무선 통신 프로토콜을 위해 구성된, 임의의 수의 라디오들(radios)이 메시 디바이스들(564)에 대한 접속들을 위해 사용될 수 있다. 예를 들어, WLAN 유닛은 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준에 따라 Wi-Fi™ 통신을 구현하는 데 사용될 수 있다. 그에 부가하여, 예를 들어, 셀룰러 또는 다른 무선 광역 프로토콜에 따른, 무선 광역 통신은 WWAN 유닛을 통해 발생할 수 있다.
메시 트랜시버(562)는 상이한 범위에서의 통신을 위해 다수의 표준들 또는 라디오들을 사용하여 통신할 수 있다. 예를 들어, IoT 디바이스(550)는 전력을 절감하기 위해, BLE에 기초한 로컬 트랜시버, 또는 다른 저전력 라디오를 사용하여, 예를 들어, 약 10 미터 이내의, 가까운 디바이스들과 통신할 수 있다. 예를 들어, 약 50 미터 이내의, 더 멀리 떨어진 메시 디바이스들(564)은 ZigBee 또는 다른 중간 전력 라디오들을 통해 도달될 수 있다. 양쪽 통신 기법들은 상이한 전력 레벨들에서 단일 라디오를 통해 이루어질 수 있거나, 또는, 별개의 트랜시버들, 예를 들어, BLE를 사용하는 로컬 트랜시버 및 ZigBee를 사용하는 별개의 메시 트랜시버를 통해 이루어질 수 있다.
로컬 또는 광역 네트워크 프로토콜들을 통해 클라우드(500) 내의 디바이스들 또는 서비스들과 통신하기 위해 무선 네트워크 트랜시버(566)가 포함될 수 있다. 무선 네트워크 트랜시버(566)는, 그 중에서도, IEEE 802.15.4 또는 IEEE 802.15.4g 표준들을 따르는 LPWA 트랜시버일 수 있다. IoT 디바이스(550)는 Semtech 및 LoRa Alliance에 의해 개발된 LoRaWAN™(Long Range Wide Area Network)을 사용하여 넓은 영역에 걸쳐 통신할 수 있다. 본 명세서에 설명된 기술들은 이러한 기술들로 제한되지 않고, Sigfox와 같은, 장거리, 저 대역폭 통신, 및 다른 기술들을 구현하는 임의의 수의 다른 클라우드 트랜시버들과 함께 사용될 수 있다. 게다가, IEEE 802.15.4e 규격에 설명된, 시간 슬롯 채널 호핑(time-slotted channel hopping)과 같은, 다른 통신 기술들이 사용될 수 있다.
본 명세서에 설명된 바와 같은, 메시 트랜시버(562) 및 무선 네트워크 트랜시버(566)에 대해 언급된 시스템들에 부가하여 임의의 수의 다른 라디오 통신 및 프로토콜들이 사용될 수 있다. 예를 들어, 라디오 트랜시버들(562 및 566)은 고속 통신을 구현하기 위해 확산 스펙트럼(SPA/SAS) 통신을 사용하는 LTE 또는 다른 셀룰러 트랜시버를 포함할 수 있다. 게다가, 중속 통신(medium speed communications)을 위한 Wi-Fi® 네트워크들 및 네트워크 통신의 프로비저닝과 같은, 임의의 수의 다른 프로토콜들이 사용될 수 있다.
라디오 트랜시버들(562 및 566)은 임의의 수의 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)에 의해 발표된 표준들을 준수하는 라디오들을 포함한, 임의의 수의 위성 업링크 기술들이 무선 네트워크 트랜시버(566)에 대해 사용될 수 있다. 본 명세서에 제공된 예들은 이에 따라 다양한 다른 통신 기술들, 기존의 통신 기술들 및 아직 만들어지지 않은(not yet formulated) 통신 기술들 둘 다에 적용가능한 것으로 이해된다.
클라우드(500)에 또는, 메시 디바이스들(564)과 같은, 다른 디바이스들에 유선 통신을 제공하기 위해 네트워크 인터페이스 제어기(NIC)(568)가 포함될 수 있다. 유선 통신은 이더넷 접속을 제공할 수 있거나, 그 중에서도, CAN(Controller Area Network), LIN(Local Interconnect Network), DeviceNet, ControlNet, Data Highway+, PROFIBUS, 또는 PROFINET과 같은, 다른 유형들의 네트워크들에 기초할 수 있다. 제2 네트워크에 대한 접속을 가능하게 해주기 위해 부가의 NIC(568), 예를 들어, 이더넷을 통해 클라우드에 대한 통신을 제공하는 NIC(568), 및 다른 유형의 네트워크를 통해 다른 디바이스들에 대한 통신을 제공하는 제2 NIC(568)가 포함될 수 있다.
인터커넥트(556)는 프로세서(552)를 외부 디바이스들 또는 서브시스템들을 접속시키는 데 사용되는 외부 인터페이스(570)에 커플링시킬 수 있다. 외부 디바이스들은, 가속도계들, 레벨 센서들, 흐름 센서들, 광학 광 센서들(optical light sensors), 카메라 센서들, 온도 센서들, GPS(global positioning system) 센서들, 압력 센서들, 기압 센서들 등과 같은, 센서들(572)을 포함할 수 있다. 외부 인터페이스(570)는 추가로 IoT 디바이스(550)를 전력 스위치들, 밸브 액추에이터들, 가청 사운드 생성기, 비주얼 경고 디바이스 등과 같은, 액추에이터들(574)에 접속시키는 데 사용될 수 있다.
일부 임의적 예들에서, 다양한 입/출력(I/O) 디바이스들이 IoT 디바이스(550) 내에 존재하거나, IoT 디바이스(550)에 접속될 수 있다. 예를 들어, 센서 판독치 또는 액추에이터 위치와 같은, 정보를 보여주기 위해 디스플레이 또는 다른 출력 디바이스(584)가 포함될 수 있다. 입력을 수용하기 위해, 터치 스크린 또는 키패드와 같은, 입력 디바이스(586)가 포함될 수 있다. 출력 디바이스(584)는 이진 상태 지시기들(예를 들어, LED들) 및 다중 문자 비주얼 출력들과 같은 간단한 비주얼 출력들, 또는 디스플레이 스크린들(예를 들어, LCD 스크린들)과 같은 더 복잡한 출력들을 포함한, 임의의 수의 오디오 또는 비주얼 디스플레이 형태들을 포함할 수 있으며, 문자들, 그래픽들, 멀티미디어 객체들 등의 출력은 IoT 디바이스(550)의 동작으로부터 발생되거나 생성된다.
배터리(576)가 IoT 디바이스(550)에 전력을 공급할 수 있지만, IoT 디바이스(550)가 고정된 위치에 탑재되는 예들에서, IoT 디바이스(550)는 전기 그리드에 커플링된 전원(power supply)을 가질 수 있다. 배터리(576)는 리튬 이온 배터리, 또는, 아연-공기 배터리, 알루미늄-공기 배터리, 리튬-공기 배터리 등과 같은, 금속-공기 배터리일 수 있다.
배터리(576)의 충전 상태(state of charge)(SoCh)를 트래킹하기 위해 배터리 모니터/충전기(578)가 IoT 디바이스(550)에 포함될 수 있다. 배터리 모니터/충전기(578)는, 배터리(576)의 건강 상태(state of health)(SoH) 및 기능 상태(state of function)(SoF)와 같은, 고장 예측들을 제공하기 위해 배터리(576)의 다른 파라미터들을 모니터링하는 데 사용될 수 있다. 배터리 모니터/충전기(578)는 Linear Technologies의 LTC4020 또는 LTC2990, 애리조나주 피닉스 소재의 ON Semiconductor의 ADT7488A, 또는 텍사스주 달라스 소재의 Texas Instruments의 UCD90xxx 제품군의 IC와 같은, 배터리 모니터링 집적 회로를 포함할 수 있다. 배터리 모니터/충전기(578)는 배터리(576)에 관한 정보를 인터커넥트(556)를 통해 프로세서(552)에 통신할 수 있다. 배터리 모니터/충전기(578)는 프로세서(552)가 배터리(576)의 전압 또는 배터리(576)로부터의 전류 흐름을 직접 모니터링할 수 있게 해주는 아날로그-디지털(ADC) 변환기를 또한 포함할 수 있다. 배터리 파라미터들은, 전송 주파수, 메시 네트워크 동작, 감지 주파수 등과 같은, IoT 디바이스(550)가 수행할 수 있는 액션들을 결정하는 데 사용될 수 있다.
전력 블록(580), 또는 그리드에 커플링된 다른 전원은 배터리(576)를 충전시키기 위해 배터리 모니터/충전기(578)와 커플링될 수 있다. 일부 예들에서, 무선으로, 예를 들어, IoT 디바이스(550) 내의 루프 안테나를 통해 전력을 획득하기 위해 전력 블록(580)이 무선 전력 수신기로 대체될 수 있다. 그 중에서도, 캘리포니아주 밀피타스 소재의 Linear Technologies의 LTC4020 칩과 같은, 무선 배터리 충전 회로가 배터리 모니터/충전기(578)에 포함될 수 있다. 선택되는 특정 충전 회로들은 배터리(576)의 크기, 그리고 이에 따라, 요구되는 전류에 의존한다. 충전은, 그 중에서도, Airfuel Alliance에 의해 공표된 Airfuel 표준, Wireless Power Consortium에 의해 공표된 Qi 무선 충전 표준, 또는 Alliance for Wireless Power에 의해 공표된 Rezence 충전 표준을 사용하여 수행될 수 있다.
스토리지(558)는 본 명세서에 설명된 기술들을 구현하기 위한 소프트웨어, 펌웨어, 또는 하드웨어 커맨드들의 형태의 명령어들(582)을 포함할 수 있다. 비록 그러한 명령어들(582)이 메모리(554) 및 스토리지(558)에 포함된 코드 블록들로서 도시되어 있지만, 코드 블록들 중 임의의 것이, 예를 들어, ASIC(application specific integrated circuit)에 내장된, 하드와이어드 회로들(hardwired circuits)로 대체될 수 있음이 이해될 수 있다.
예에서, 메모리(554), 스토리지(558), 또는 프로세서(552)를 통해 제공되는 명령어들(582)은 IoT 디바이스(550)에서의 전자적 동작들을 수행하라고 프로세서(552)에 지시하는 코드를 포함하는 비일시적, 머신 판독가능 매체(560)로서 구체화될 수 있다. 프로세서(552)는 인터커넥트(556)를 통해 비일시적, 머신 판독가능 매체(560)에 액세스할 수 있다. 예를 들어, 비일시적, 머신 판독가능 매체(560)는 광학 디스크들, 플래시 드라이브들, 또는 임의의 수의 다른 하드웨어 디바이스들과 같은 저장 유닛들을 포함할 수 있다. 비일시적, 머신 판독가능 매체(560)는, 예를 들어, 본 개시내용 전반에 걸쳐 설명된 동작들 및 기능성의 플로차트(들) 및 블록 다이어그램(들)과 관련하여 설명된 바와 같이, 액션들의 특정 시퀀스 또는 흐름을 수행하라고 프로세서(552)에 지시하는 명령어들을 포함할 수 있다.
예시적인 컴퓨팅 아키텍처들
도 6 및 도 7은 본 명세서에 개시된 실시예들에 따라 사용될 수 있는 예시적인 컴퓨터 프로세서 아키텍처들을 예시한다. 예를 들어, 다양한 실시예들에서, 도 6 및 도 7의 컴퓨터 아키텍처들은 본 개시내용 전반에 걸쳐 설명된 비주얼 포그 기능성을 구현하는 데 사용될 수 있다. 예를 들어, 랩톱들, 데스크톱들, 핸드헬드 PC들, 개인 휴대 단말들(personal digital assistants), 엔지니어링 워크스테이션들, 서버들, 네트워크 디바이스들, 네트워크 허브들, 스위치들, 임베디드 프로세서들, 디지털 신호 프로세서들(DSP들), 그래픽 디바이스들, 비디오 게임 디바이스들, 셋톱 박스들, 마이크로 컨트롤러들, 셀 폰들, 휴대용 미디어 플레이어들, 핸드헬드 디바이스들, 및 다양한 다른 전자 디바이스들이 또한 적합하기 때문에, 다른 실시예들은 본 기술분야에서 알려진 다른 프로세서 및 시스템 설계들 및 구성들을 사용할 수 있다. 일반적으로, 본 명세서에 개시된 바와 같은 프로세서 및/또는 다른 실행 로직을 포함할 수 있는 매우 다양한 시스템들 또는 전자 디바이스들이 일반적으로 적합하다.
도 6은 프로세서(600)의 예시적인 실시예에 대한 블록 다이어그램을 예시한다. 프로세서(600)는 본 개시내용 전반에 걸쳐 설명된 실시예들과 관련하여 사용될 수 있는 한 유형의 하드웨어 디바이스의 예이다. 프로세서(600)는, 마이크로프로세서, 임베디드 프로세서, 디지털 신호 프로세서(DSP), 네트워크 프로세서, 다중 코어 프로세서, 단일 코어 프로세서, 또는 코드를 실행하는 다른 디바이스와 같은, 임의의 유형의 프로세서일 수 있다. 비록 단지 하나의 프로세서(600)가 도 6에 예시되어 있지만, 프로세싱 요소는 대안적으로 도 6에 예시된 프로세서(600)를 하나 초과 포함할 수 있다. 프로세서(600)는 단일 스레드(single-threaded) 코어일 수 있거나, 또는 적어도 일 실시예에서, 프로세서(600)는 코어당 하나 초과의 하드웨어 스레드 컨텍스트(또는 "로직 프로세서")를 포함할 수 있다는 점에서 다중 스레드(multi-threaded)일 수 있다.
도 6은 또한 실시예에 따른 프로세서(600)에 커플링된 메모리(602)를 예시한다. 메모리(602)는 본 기술분야의 통상의 기술자에게 알려져 있거나 다른 방식으로 이용가능한 바와 같은 매우 다양한 메모리들(메모리 계층구조의 다양한 계층들을 포함함) 중 임의의 것일 수 있다. 그러한 메모리 요소들은 RAM(random access memory), ROM(read only memory), FPGA(field programmable gate array)의 로직 블록들, EPROM(erasable programmable read only memory), 및 EEPROM(electrically erasable programmable ROM)을 포함할 수 있지만, 이들로 제한되지 않는다.
프로세서(600)는 본 명세서에서 상세히 설명된 알고리즘들, 프로세스들, 또는 연산들과 연관된 임의의 유형의 명령어들을 실행할 수 있다. 일반적으로, 프로세서(600)는 요소 또는 물품(예를 들어, 데이터)을 하나의 상태 또는 하나의 것으로부터 다른 상태 또는 다른 것으로 변환시킬 수 있다.
프로세서(600)에 의해 실행될 하나 이상의 명령어일 수 있는 코드(604)는 메모리(602)에 저장될 수 있거나, 또는 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 적합한 조합으로, 또는 적절한 경우 그리고 특정의 요구들에 기초하여 임의의 다른 내부 또는 외부 컴포넌트, 디바이스, 요소, 또는 객체에 저장될 수 있다. 일 예에서, 프로세서(600)는 코드(604)에 의해 지시된 프로그램 명령어 시퀀스(program sequence of instructions)를 따를 수 있다. 각각의 명령어는 프런트 엔드 로직(606)에 들어가고 하나 이상의 디코더(608)에 의해 프로세싱된다. 디코더는 미리 정의된 포맷의 고정 폭 마이크로 연산과 같은 마이크로 연산을, 그의 출력으로서, 생성할 수 있거나, 또는 원래의 코드 명령어를 반영하는 다른 명령어들, 마이크로명령어들, 또는 제어 신호들을 생성할 수 있다. 프런트 엔드 로직(606)은 레지스터 리네이밍 로직(register renaming logic) 및 스케줄링 로직을 또한 포함할 수 있는데, 이들은 일반적으로 자원들을 할당하고 실행을 위한 명령어에 대응하는 연산을 큐잉한다.
프로세서(600)는 실행 유닛들(616a, 616b, 616n 등)의 세트를 갖는 실행 로직(614)을 또한 포함할 수 있다. 일부 실시예들은 특정 기능들 또는 기능 세트들에 전용된 다수의 실행 유닛들을 포함할 수 있다. 다른 실시예들은 특정의 기능을 수행할 수 있는 단지 하나의 실행 유닛만 또는 하나의 실행 유닛을 포함할 수 있다. 실행 로직(614)은 코드 명령어들에 의해 지정된 연산들을 수행한다.
코드 명령어들에 의해 지정된 연산들의 실행의 완료 이후에, 백 엔드 로직(618)은 코드(604)의 명령어들을 회수(retire)할 수 있다. 일 실시예에서, 프로세서(600)는 비순차 실행(out of order execution)을 가능하게 해주지만 명령어들의 순차 회수(in order retirement)를 요구한다. 회수 로직(620)은 다양한 알려진 형태들(예를 들어, 재정렬 버퍼들(re-order buffers) 등)을 취할 수 있다. 이러한 방식으로, 적어도 디코더에 의해 생성되는 출력, 레지스터 리네이밍 로직(610)에 의해 이용되는 하드웨어 레지스터들 및 테이블들, 그리고 실행 로직(614)에 의해 수정되는 임의의 레지스터들(도시되지 않음) 면에서, 코드(604)의 실행 동안 프로세서(600)가 변환된다.
비록 도 6에 도시되어 있지는 않지만, 프로세싱 요소는 프로세서(600)를 갖는 칩 상의 다른 요소들을 포함할 수 있다. 예를 들어, 프로세싱 요소는 프로세서(600)와 함께 메모리 제어 로직을 포함할 수 있다. 프로세싱 요소는 I/O 제어 로직을 포함할 수 있고 그리고/또는 메모리 제어 로직과 통합된 I/O 제어 로직을 포함할 수 있다. 프로세싱 요소는 하나 이상의 캐시를 또한 포함할 수 있다. 일부 실시예들에서, (플래시 메모리 또는 퓨즈들과 같은) 비휘발성 메모리가 프로세서(600)를 갖는 칩 상에 또한 포함될 수 있다.
도 7은 멀티프로세서(700)의 예시적인 실시예에 대한 블록 다이어그램을 예시한다. 도 7에 도시된 바와 같이, 멀티프로세서 시스템(700)은 포인트-투-포인트 인터커넥트 시스템이며, 포인트-투-포인트 인터커넥트(750)를 통해 커플링된 제1 프로세서(770) 및 제2 프로세서(780)를 포함한다. 일부 실시예들에서, 프로세서들(770 및 780) 각각은 도 6의 프로세서(600)의 어떤 버전일 수 있다.
프로세서들(770 및 780)은 통합 메모리 제어기(IMC) 유닛들(772 및 782)을 제각기 포함하는 것으로 도시되어 있다. 프로세서(770)는 자신의 버스 제어기 유닛들의 일부로서 포인트-투-포인트(P-P) 인터페이스들(776 및 778)을 또한 포함하고; 이와 유사하게, 제2 프로세서(780)는 P-P 인터페이스들(786 및 788)을 포함한다. 프로세서들(770, 780)은 P-P 인터페이스 회로들(778, 788)을 사용하여 포인트-투-포인트(P-P) 인터페이스(750)를 통해 정보를 교환할 수 있다. 도 7에 도시된 바와 같이, IMC들(772 및 782)은 프로세서들을 각자의 프로세서들에 로컬로 부착된 메인 메모리의 부분들일 수 있는 각자의 메모리들, 즉 메모리(732) 및 메모리(734)에 커플링시킨다.
프로세서들(770, 780) 각각은 포인트 투 포인트 인터페이스 회로들(776, 794, 786, 798)을 사용하여 개별 P-P 인터페이스들(752, 754)을 통해 칩세트(790)와 정보를 교환할 수 있다. 칩세트(790)는 임의로 고성능 인터페이스(739)를 통해 코프로세서(738)와 정보를 교환할 수 있다. 일 실시예에서, 코프로세서(738)는, 예를 들어, 하이-스루풋 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 임베디드 프로세서, 매트릭스 프로세서 등과 같은, 특수 목적 프로세서이다.
프로세서가 저전력 모드에 놓여 있는 경우 어느 한 프로세서 또는 양쪽 프로세서들의 로컬 캐시 정보가 공유 캐시에 저장될 수 있도록, 공유 캐시(도시되지 않음)는 어느 한 프로세서 내에 또는 양쪽 프로세서들의 외부에 포함될 수 있지만, P-P 인터커넥트를 통해 프로세서들과 접속된다.
칩세트(790)는 인터페이스(796)를 통해 제1 버스(716)에 커플링될 수 있다. 일 실시예에서, 제1 버스(716)는 PCI(Peripheral Component Interconnect) 버스, 또는 PCI Express 버스 또는 다른 제3 세대 I/O 인터커넥트 버스와 같은 버스일 수 있지만, 본 개시내용의 범위가 그렇게 제한되지 않는다.
도 7에 도시된 바와 같이, 다양한 I/O 디바이스들(714)이, 제1 버스(716)를 제2 버스(720)에 커플링시키는 버스 브리지(718)와 함께, 제1 버스(716)에 커플링될 수 있다. 일 실시예에서, 코프로세서들, 하이-스루풋 MIC 프로세서들, GPGPU들, (예를 들어, 그래픽 가속기들 또는 디지털 신호 프로세싱(DSP) 유닛들과 같은) 가속기들, 매트릭스 프로세서들, 필드 프로그래머블 게이트 어레이들, 또는 임의의 다른 프로세서와 같은, 하나 이상의 부가의 프로세서(들)(715)가 제1 버스(716)에 커플링된다. 일 실시예에서, 제2 버스(720)는 LPC(low pin count) 버스일 수 있다. 일 실시예에서, 예를 들어, 키보드 및/또는 마우스(722), 통신 디바이스들(727) 그리고 명령어/코드 및 데이터(730)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 저장 디바이스와 같은 저장 유닛(728)을 포함한, 다양한 디바이스들이 제2 버스(720)에 커플링될 수 있다. 게다가, 오디오 I/O(724)가 제2 버스(720)에 커플링될 수 있다. 다른 아키텍처들이 가능하다는 점에 유의한다. 예를 들어, 도 7의 포인트-투-포인트 아키텍처 대신에, 시스템은 멀티-드롭 버스 또는 다른 그러한 아키텍처를 구현할 수 있다.
도 7의 임의의 컴포넌트의 전부 또는 일부는 별개의 또는 독립형 컴포넌트 또는 칩으로서 구현될 수 있거나, 또는 다양한 컴퓨터 컴포넌트들을 단일 칩으로 통합하는 SoC(system-on-a-chip)와 같은, 다른 컴포넌트들 또는 칩들과 통합될 수 있다.
본 명세서에 개시된 메커니즘들의 실시예들은 하드웨어, 소프트웨어, 펌웨어, 또는 그러한 구현 접근법들의 조합으로 구현될 수 있다. 특정 실시예들은 적어도 하나의 프로세서, 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 요소들을 포함함), 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그래밍가능 시스템들 상에서 실행되는 컴퓨터 프로그램들 또는 프로그램 코드로서 구현될 수 있다.
본 명세서에서 설명된 기능들을 수행하고 출력 정보를 생성하기 위해, 도 7에 예시된 코드(730)와 같은, 프로그램 코드가 입력 명령어들에 적용될 수 있다. 출력 정보가, 알려진 방식으로, 하나 이상의 출력 디바이스에 적용될 수 있다. 본 출원의 목적들을 위해, 프로세싱 시스템은, 예를 들어; DSP(digital signal processor), 마이크로컨트롤러, ASIC(application specific integrated circuit), 또는 마이크로프로세서와 같은, 프로세서를 갖는 임의의 시스템을 포함한다.
프로그램 코드는 프로세싱 시스템과 통신하기 위해 고수준 절차적 또는 객체 지향 프로그래밍 언어로 구현될 수 있다. 프로그램 코드는, 원하는 경우, 어셈블리어 또는 기계어로 또한 구현될 수 있다. 사실, 본 명세서에서 설명된 메커니즘들은 범위가 임의의 특정 프로그래밍 언어로 제한되지 않는다. 어느 경우든지, 언어는 컴파일되는 또는 인터프리트되는 언어일 수 있다.
적어도 하나의 실시예의 하나 이상의 양태는, 머신에 의해 판독될 때, 머신으로 하여금 본 명세서에 설명된 기술들을 수행하기 위한 로직을 제조하게 하는, 프로세서 내의 다양한 로직을 표현하는 머신 판독가능 매체 상에 저장된 대표적인 명령어들에 의해 구현될 수 있다. “IP 코어들"이라고 알려진, 이러한 표현들은 유형적(tangible) 머신 판독가능 매체 상에 저장될 수 있고, 로직 또는 프로세서를 실제로 제조하는 제조 머신들에 로딩하기 위해, 다양한 고객들 또는 제조 시설들에 공급될 수 있다.
그러한 머신 판독가능 저장 매체들은, 제한 없이, 하드 디스크들, 플로피 디스크들, 광학 디스크들, CD-ROM들(compact disk read-only memories), CD-RW들(compact disk rewritables), 및 자기-광학 디스크들을 포함한 임의의 다른 유형의 디스크, ROM들(read-only memories), DRAM들(dynamic random access memories), SRAM들(static random access memories)과 같은 RAM들(random access memories), EPROM들(erasable programmable read-only memories), 플래시 메모리들, EEPROM들(electrically erasable programmable read-only memories)과 같은 반도체 디바이스들, PCM(phase change memory), 자기 또는 광학 카드들, 또는 전자 명령어들을 저장하는 데 적합한 임의의 다른 유형의 매체들과 같은 저장 매체들을 포함한, 머신 또는 디바이스에 의해 제조되거나 형성되는 물품들의 비일시적, 유형적 장치들(non-transitory, tangible arrangements)을 포함할 수 있다.
그에 따라, 본 개시내용의 실시예들은 명령어들을 포함하는 또는 본 명세서에서 설명된 구조들, 회로들, 장치들, 프로세서들 및/또는 시스템 특징들을 정의하는, HDL(Hardware Description Language)과 같은, 설계 데이터를 포함하는 비일시적, 유형적 머신 판독가능 매체들을 또한 포함한다. 그러한 실시예들은 프로그램 제품들이라고도 지칭될 수 있다.
비주얼 포그 아키텍처
도 8은 비주얼 포그 노드들에 대한 아키텍처(800)의 예시적인 실시예를 예시한다. 일부 실시예들에서, 예를 들어, 포그 노드 아키텍처(800)는 비주얼 포그 네트워크 또는 시스템(예를 들어, 도 1의 비주얼 포그 시스템(100))에서 포그 노드들(810)의 기능성을 구현하는 데 사용될 수 있다. 포그 노드(810)는, 예를 들어, 네트워크의 에지로부터 클라우드에 이르는 임의의 노드 또는 컴포넌트를, 전부 통틀어(inclusively), 포함할 수 있다.
예시된 실시예에서, 포그 노드(810)는, 보조 API(820), 프리미티브 비전 API(830), 및 스토리지 API(840)와 같은, 포그 노드(810)에 대한 기본적인 능력들을 제공하는 다양한 애플리케이션 프로그래밍 인터페이스들(API들)을 포함한다. 일부 실시예들에서, 예를 들어, 이러한 API들은 하위 레벨 알고리즘 개발자들에 의해 사용되거나 구현될 수 있다.
보조 API(820)는, 보안(822a), 통신(822b), 압축(822c)(예를 들어, 코덱들) 등과 같은, 포그 노드(810)에 대한 다양한 기본적인 기능성을 제공한다.
프리미티브 비전 API(830)는 포그 노드(810)에 대한 기본적인 비전 프로세싱 능력들을 제공한다. 예를 들어, 프리미티브 비전 API(830)는 프리미티브 비전 연산들(예를 들어, 사람 또는 객체 검출, 얼굴 인식)을 수행하는 데 사용될 수 있는 복수의 비전 커널들(832)에 대한 액세스를 제공한다. 프리미티브 비전 API(830)는 다양한 머신 러닝 및/또는 신경 네트워크 프레임워크들(예를 들어, Caffe, OpenCV, TensorFlow)에 대한 액세스를 또한 제공할 수 있다.
스토리지 API(840)는 포그 노드(810)에 대한 저장 능력들을 제공한다. 일부 실시예들에서, 예를 들어, 스토리지 API(840)는, 그래프 데이터베이스들, 관계형 데이터베이스들, 어레이 기반 데이터베이스들(예를 들어, TileDB) 등과 같은, 상이한 유형들의 비주얼 데이터를 저장하기 위한 다양한 데이터베이스들(842)을 포함할 수 있다. 일부 실시예들에서, 예를 들어, 특정 비주얼 데이터를 저장하는 데 사용되는 특정의 데이터베이스는, 원시 비주얼 데이터 또는 픽셀들, 압축된 비주얼 데이터, 비주얼 메타데이터 등과 같은, 데이터의 유형에 의존할 수 있다.
더욱이, 포그 노드(810)는 비전 애플리케이션들의 개발자들에 의해 사용되거나 구현될 수 있는 상위 레벨 비전 기능성을 제공하는 비전 애플리케이션 API(850)를 추가로 포함한다. 예를 들어, 비전 애플리케이션 API(850)는 비주얼 포그 네트워크와 연관된 모든 데이터 및 디바이스들에 대한 필수적인 프라이버시 처리를 정의하는 프라이버시 정책(852)을 포함할 수 있다. 비전 애플리케이션 API(850)는 다양한 프리미티브 비전 연산들 또는 비전 커널들에 대한 액세스를 제공하는 비전 커널 관리 서비스(854)를 또한 포함할 수 있다. 일부 실시예들에서, 예를 들어, 비전 커널 관리 서비스(854)는 비전 커널 리포지토리로부터 비전 커널들을 검색할 수 있다. 예를 들어, 특정의 비전 애플리케이션이 사람 검출 기능성을 이용하는 경우, 비전 커널 관리 서비스(854)는 특정의 포그 노드(810)의 이용가능한 하드웨어를 사용하여 사람 검출을 수행하기 위한 적절한 비전 커널을 검색할 수 있다.
포그 노드(810)는, 비주얼 애널리틱스 및 비주얼 질의들을 수행하기 위해 최종 사용자들 또는 운영자들에 의해 사용될 수 있는, 비전 애널리틱스 API(860) 및 질의 API(870)를 추가로 포함한다. 예를 들어, 비전 애널리틱스 API(860)는 비주얼 데이터의 인라인(예를 들어, 실시간) 및/또는 오프라인 프로세싱, 애플리케이션 론칭, 스케줄링, 자원 모니터링 등을 수행할 수 있다. 비전 애널리틱스 API(860)는 다양한 비전 애플리케이션들(예를 들어, 사람들 탐색/트래킹, 객체 검출/트래킹 등)에 대한 액세스를 제공하는 비전 애플리케이션 관리 서비스(862)를 또한 포함할 수 있다. 일부 실시예들에서, 예를 들어, 비전 애플리케이션 관리 서비스(862)는 비전 애플리케이션 리포지토리로부터 비전 애플리케이션들을 검색할 수 있다. 이러한 방식으로, 최종 사용자가 사람들 탐색을 수행하고자 하는 경우, 비전 애플리케이션 관리 서비스(862)는 사람들 탐색을 위한 적절한 비전 애플리케이션을 검색할 수 있다. 일부 실시예들에서, 예를 들어, 사람들 탐색 비전 애플리케이션은 사람 검출 및 그에 뒤이은 얼굴 인식을 수행하는 비전 커널들을 사용할 수 있다. 그렇지만, 최종 사용자는 애플리케이션을 구현하는 데 사용되는 기본 비전 커널들 또는 비전 연산들에 대한 어떠한 지식도 없이 사람들 탐색 비전 애플리케이션을 활용할 수 있다.
더욱이, 질의 API(870)는 최종 사용자들이 비주얼 탐색 요청들 또는 질의들을 제출할 수 있게 해주는 인터페이스를 제공한다. 일부 실시예들에서, 예를 들어, 질의 API(870)는 자연어, (예를 들어, 논리 연산자들을 사용하는) 함수 구문(functional syntax), 관계 구문(relational syntax) 등과 같은 다양한 구문들로 유연한 비주얼 질의들을 지원할 수 있다. 일부 실시예들에서, 질의 API(870)는 비주얼 질의들을 위해 지원되는 프리미티브 연산들을 포함하는 질의 프리미티브 리포지토리(874)를 추가로 포함할 수 있다. 더욱이, 질의 API(870)는 비주얼 질의들을 비주얼 포그 노드들에 의해 실행될 수 있는 비주얼 프로세싱 데이터 흐름들로 컴파일하기 위한 질의 컴파일러(872)를 포함할 수 있다.
도 9 내지 도 12는 비주얼 포그 아키텍처들의 예시적인 실시예들을 예시한다.
예를 들어, 도 9는 카메라들(902), 센서들(904), 로컬 애널리틱스 프레임워크(906), 인라인 애널리틱스 프레임워크(908), 오프라인 애널리틱스 프레임워크(910), 스토리지(912), 및 제시/해석 프레임워크(914)를 포함하는 예시적인 비주얼 포그 아키텍처(900)를 예시한다. 예시된 실시예에서, 예를 들어, 카메라들(902) 및/또는 센서들(904)은, 이미지들 및/또는 비디오와 같은, 비주얼 데이터를 생성할 수 있다. 비주얼 데이터는 이어서, 네트워크 에지에서(예를 들어, 비주얼 데이터를 캡처한 카메라들(902) 또는 센서들(904) 인근에서) 예비 프로세싱 및 애널리틱스를 수행하는 데 사용될 수 있는, 로컬 애널리틱스 프레임워크(906)에 제공될 수 있다. 부분적으로 프로세싱된 비주얼 데이터는 실시간으로 추가 프로세싱을 위해 인라인 애널리틱스 프레임워크(908)에 제공될 수 있다. 다양한 실시예들에서, 예를 들어, 인라인 애널리틱스는 포그 디바이스들 또는 자원들(예를 들어, 모바일 디바이스들, IoT 디바이스들, 게이트웨이들, 및/또는 클라우드)의 임의의 조합에 의해 수행될 수 있고 그리고/또는 그에 걸쳐 분산될 수 있다. 인라인 애널리틱스 프레임워크(908)로부터의 결과적인 비주얼 데이터 및/또는 메타데이터는 이어서 데이터 스토리지(912)에 저장될 수 있다. 더욱이, 비주얼 탐색 질의가 (예를 들어, 최종 사용자로부터) 제시/해석 프레임워크(914)에 의해 후속하여 수신될 수 있다. 그에 따라, 제시/해석 프레임워크(914)는 질의에 대한 응답이 이미 프로세싱되거나 생성된 비주얼 데이터 및/또는 메타데이터에 기초하여 만들어질(formulated) 수 있는지를 결정하기 위해 데이터 스토리지(912) 및/또는 인라인 애널리틱스 프레임워크(908)와 상호작용할 수 있다. 그렇지만, 질의에 응답하기 위해 추가 프로세싱이 수행될 필요가 있는 경우, 제시/해석 프레임워크(914)는 비주얼 데이터의 추가적인 오프라인 프로세싱을 수행하기 위해 오프라인 애널리틱스 프레임워크(910)와 상호작용할 수 있다. 다양한 실시예들에서, 예를 들어, 오프라인 애널리틱스는 포그 디바이스들 또는 자원들(예를 들어, 모바일 디바이스들, IoT 디바이스들, 게이트웨이들, 및/또는 클라우드)의 임의의 조합에 의해 수행될 수 있고 그리고/또는 그에 걸쳐 분산될 수 있다. 그에 따라, 데이터 스토리지(912), 인라인 애널리틱스 프레임워크(908), 및/또는 오프라인 애널리틱스 프레임워크(910) 중 어느 하나로부터 획득되는 정보에 기초하여, 제시/해석 프레임워크(914)는 이어서 비주얼 질의에 응답할 수 있다.
도 10은 비주얼 포그 아키텍처와 연관된 예시적인 비주얼 프로세싱 파이프라인(1000)을 예시한다. 예시된 예에서, 비주얼 데이터(1002)는 먼저 카메라들 및/또는 비주얼 센서들에 의해 캡처될 수 있고, 비주얼 데이터(1002)는 이어서 특정 비주얼 기능들(1004)(예를 들어, 얼굴 검출) 및/또는 다른 애널리틱스를 수행하도록 프로세싱될 수 있어, 데이터 스토리지(1010)에 저장될 수 있는 비주얼 메타데이터(1012)의 세트를 결과할 수 있다. 더욱이, 최종 사용자는 후속하여 비주얼 데이터(1002)와 연관된 애드혹 탐색 질의(1006)를 제출할 수 있고, 질의 컴파일러/인터프리터(1008)는 이어서 질의를 질의에 응답하기 위해 (예를 들어, 이용가능한 포그 노드들 또는 자원들을 사용하여) 실행될 수 있는 비주얼 프로세싱 데이터 흐름으로 컴파일할 수 있다. 일부 경우들에서, 예를 들어, 이미 완료된 프로세싱에 기초하여 질의 결과(1016)를 만들어내는 것이 가능할 수 있다. 예를 들어, 일부 경우들에서, 이미 생성된 기존의 비주얼 메타데이터(1012)에 적절한 로직 연산들(1014)을 적용함으로써 질의 결과(1016)가 만들어질 수 있다. 그렇지만, 다른 경우들에서, 질의 결과(1016)를 만들어내기 위해 비주얼 데이터(1002)에 대해 추가의 비주얼 프로세싱 및/또는 기능들(1004)이 수행될 필요가 있을 수 있다. 어느 경우든지, 컴파일러/인터프리터(1008)는 질의에 응답하기 위한 필수적인 비전 프로세싱 데이터 흐름을 생성할 수 있고, 결과적인 비전 프로세싱 데이터 흐름이 질의 결과(1016)를 만들어내기 위해 실행될 수 있다.
도 11은 다른 예시적인 비주얼 포그 아키텍처(1100)를 예시한다. 예시된 실시예에서, 카메라들(1140b)에 의해 캡처되는 비주얼 데이터는, 실시간으로(예를 들어, 질의에 응답하여보다는 비주얼 데이터가 처음으로 캡처될 때) 비주얼 데이터에 대해 초기 프리-프로세싱을 수행하는, 분산 런타임 환경(1120)에 제공된다. 분산 런타임 환경(1120)에 의해 생성되는 결과적인 비주얼 데이터 또는 메타데이터는 이어서 데이터 스토리지(1130)에 저장된다.
별개로, 사용자 정의 비전 함수들(user-defined vision functions)(UVF들)(1104a 내지 1104c)을 포함하는 비주얼 탐색 질의들이 비주얼 포그(1100)의 최종 사용자들(1102)로부터 수신된다. 최종 사용자(1102)로부터 수신되는 UVF(1104)는 UVF를 실행하기 위한 비전 데이터 흐름 그래프를 생성하기 위해 먼저 컴파일러(1110)에 의해 프로세싱된다. 그에 따라, 비전 데이터 흐름 그래프는 이어서 UVF(1104)에 대한 결과를 생성하기 위해 분산 런타임 환경(1120)에 의해 실행된다. 일부 실시예들에서, 예를 들어, 분산 런타임 환경(1120)은 (예를 들어, 원래의 비주얼 데이터의 초기 또는 실시간 프로세싱으로부터) 이미 생성된 기존의 비주얼 메타데이터를 사용하여, 및/또는 비주얼 데이터에 대해 추가 분석을 수행함으로써(예를 들어, 특정의 비전 애플리케이션(1150)을 실행함으로써) 결과를 결정할 수 있다. UVF(1104)의 실행으로부터 획득되는 결과는 이어서 요청하는 최종 사용자(1102)에게 다시 제공될 수 있다.
게다가, 다양한 실시예들에서, 분산 런타임 환경(1120)은 이용가능한 포그 디바이스들 또는 자원들(1140)(예를 들어, 클라우드 서버들(1140a), 카메라들(1140b), 모바일 디바이스들, IoT 디바이스들, 게이트웨이들, 및/또는 다른 포그/에지 디바이스들)에 걸쳐 비전 작업부하들을 스케줄링 또는 분배함으로써 설명된 비주얼 데이터 프로세싱(예를 들어, 초기 프리-프로세싱 및/또는 UVF 프로세싱)을 수행할 수 있다.
도 12a 및 도 12b는 다른 예시적인 비주얼 포그 아키텍처(1200)를 예시한다. 예시된 실시예에서, 비주얼 포그 아키텍처(1200)는, 카메라들 또는 비주얼 센서들(1216a), 게이트웨이들(1216b), 및 클라우드 서버들(1216c)을 포함하는, 포그 디바이스들(1216)의 네트워크를 포함한다. 카메라들 또는 비주얼 센서들(1216a)은, 예를 들어, 비주얼 데이터(1217)를 캡처하는 데 사용된다. 더욱이, 컴퓨터 비전 전문가(1202)는 캡처된 비주얼 데이터(1217)를 활용하는 명령형 비전 프로그램(1203)을 개발할 수 있다. 비전 프로그램(1203)은, 예를 들어, 비전 프로세싱 데이터 흐름들(1209)을 정의하고 비전 프로세싱 작업부하들(1211)을 생성하기 위해 프로그래밍 프레임워크(1208) 및 결합성(composability) 프레임워크(1210)를 사용하여 구현될 수 있다.
예시된 실시예에서, 예를 들어, 비전 프로그램(1203)은 비주얼 포그(1200)에서 캡처되는 비주얼 데이터(1217)를 프로세싱하기 위해 분산 런타임 환경(1214)을 활용한다. 분산 런타임 환경(1214)은, 예를 들어, 비주얼 포그(1200)에서의 이용가능한 포그 디바이스들(1216)의 컬렉션을 사용하여 비주얼 데이터 프로세싱을 수행할 수 있다.
일부 실시예들에서, 예를 들어, 분산 런타임 환경(1214)은 실시간으로(예를 들어, 질의에 응답하여보다는 비주얼 데이터가 처음으로 캡처될 때) 캡처된 비주얼 데이터(1217)에 대해 초기 프리-프로세싱을 수행하는 데 사용될 수 있다. 분산 런타임 환경(1214)에 의해 생성되는 결과적인 비주얼 데이터 또는 메타데이터(1217)는 이어서 데이터베이스 또는 데이터 스토리지(1218)에 저장될 수 있다.
더욱이, 비전문가 또는 최종 사용자(1204)는 비주얼 포그(1200)에 의해 캡처되는 비주얼 데이터(1217)와 연관된 선언적 질의(1205)를 후속하여 제출할 수 있다. 선언적 질의(1205)는, 질의에 응답하기 위한 데이터 흐름(1209)을 생성하기 위해 컴파일러 또는 인터프리터를 사용하는, 비주얼 질문 답변(VQA) 시스템(1206)에 의해 프로세싱된다. 일부 경우들에서, 예를 들어, (예를 들어, 원래의 비주얼 데이터(1217)의 초기 또는 실시간 프로세싱 동안 및/또는 이전 질의들(1205)과 연관된 프로세싱 동안) 이미 생성된 기존의 비주얼 메타데이터(1217)를 사용하여 질의(1205)에 응답하는 것이 가능할 수 있다. 그렇지만, 다른 경우들에서, 질의(1205)에 응답하기 위해 비주얼 데이터(1217)에 대해 추가 프로세싱이 수행될 필요가 있을 수 있다. 어느 경우든지, 질의(1205)에 응답하기 위한 적절한 데이터 흐름(1209)이 생성될 수 있고, 결과적인 데이터 흐름(1209)은 하나 이상의 기본 비전 프로세싱 작업부하들(1211)로 추가로 파티셔닝될 수 있다. 더욱이, 분산 런타임 환경(1214)에서 포그 디바이스들(1216)의 자원 이용가능성(1215)에 기초하여, 이용가능한 포그 디바이스들(1216)에 걸쳐 작업부하들(1211)을 분배하기 위한 스케줄(1213)이 생성될 수 있다. 그에 따라, 각자의 작업부하들(1211)은 이어서 생성된 스케줄(1213)에 기초하여 포그 디바이스들(1216)에 걸쳐 분배될 수 있고, 각각의 포그 디바이스(1216)는 그 각자의 작업부하(들)(1211)를 실행할 수 있다. 이러한 방식으로, 질의(1205)에 응답하기 위한 데이터 흐름(1209)은 분산 접근법을 사용하여 다양한 포그 디바이스들(1216)에 의해 실행된다. 질의(1205)에 대한 응답은 이어서 최종 사용자(1204)에게 제공될 수 있고, 결과적인 비주얼 메타데이터(1217)는 후속하는 질의들에 응답하기 위해 데이터베이스(1218)에 저장될 수 있다.
비주얼 질문 답변(VQA)
도 13 및 도 14는 비주얼 질문 답변(visual question answering)(VQA) 프레임워크와 연관된 예시적인 실시예들을 예시한다. 일부 실시예들에서, 예를 들어, 비주얼 포그 아키텍처는 최종 사용자들이 애드혹 비주얼 탐색 질의들을 제출하기 위한 유연하고 효율적인 인터페이스를 제공하기 위해 VQA 프레임워크를 구현할 수 있다. 비주얼 프로세싱 시스템들에서, 예를 들어, 효율적인 방식으로 큰 데이터 세트들(예를 들어, 수백만 개의 이미지)을 탐색하기 위해 질의를 제출하고 관련 이미지들 또는 관련 정보의 서브세트를 식별하는 능력이 중요하다. 그렇지만, 기존의 비주얼 프로세싱 솔루션들은 경직된 또는 유연성 없는 접근법들을 사용하여 구현되며, 비주얼 데이터를 효율적으로 탐색할 수 없다. 그에 따라, 도 13 및 도 14의 비주얼 질문 답변(VQA) 프레임워크는 기존의 솔루션들의 결점들을 완화시키기 위해 사용될 수 있다.
일부 실시예들에서, 예를 들어, VQA 프레임워크는 자연어, (예를 들어, 논리 연산자들을 사용하는) 함수 구문, 관계 구문 등과 같은 다양한 구문들을 사용하여 유연한 또는 애드혹 비주얼 탐색 질의들을 지원할 수 있다. 그에 따라, 비주얼 탐색 질의가 사용자로부터 수신될 때, 질의는 비주얼 포그 아키텍처에서 다양한 포그 노드들에 걸쳐 분배되고 이들에 의해 실행될 수 있는 비주얼 프로세싱 데이터 흐름으로 컴파일될 수 있다. 이러한 방식으로, 최종 사용자들은 탐색들을 실행하는 데 요구되는 기본 아키텍처 또는 프로세싱에 대한 어떠한 지식도 없이 큰 비주얼 데이터 세트들에서 복잡한 탐색들을 수행할 수 있다.
더욱이, 일부 실시예들에서, 사용자들 또는 개발자들은, 사용자 정의 비전 함수들(UVF들)이라고 지칭되는, 비주얼 탐색 질의들에서 사용할 수 있는 커스텀 비전 함수들을 정의할 수 있다. 예로서, 비주얼 동등성(visually equivalency)을 위해 또는 비주얼 데이터에 대해 "동일한" 연산들을 수행하기 위해 UVF가 정의될 수 있다. 많은 애드혹 비주얼 질의들은, 예를 들어, 동일한 객체 또는 사람에 관련된 정보가 식별되거나 함께 그룹화될 것을 요구한다. 그렇지만, 상이한 이미지들 또는 비디오 스트림들에 걸쳐 동일한 객체 또는 사람을 식별하는 것은 어려울 수 있다. 일부 실시예들에서, 예를 들어, 이 태스크는 다수의 카메라들에 걸쳐 특징 추출들이 수행될 것을 요구할 수 있다. 그렇지만, 각각의 카메라로부터 추출되는 각자의 특징들이 종종 상이하고, 모든 카메라들이 동일한 시야를 갖는 것은 아니며, 따라서 일부 카메라들로부터는 특정 특징들이 성공적으로 추출될 수 있지만 다른 카메라들로부터는 그렇지 않을 수 있다. 그에 따라, 일부 실시예들에서, 사용자는 비주얼 데이터에 대해 비주얼 동등성 또는 "동일한" 연산들이 어떻게 수행되어야 하는지를 정의하기 위해 UVF를 구현할 수 있다. 일부 실시예들에서, 예를 들어, 비주얼 동등성에 대한 UVF는 객체들의 특징 벡터들이 서로 "충분히 가까운" 경우 객체들을 "동일한" 것으로 정의할 수 있으며, 이는 특징 벡터들이 충분히 유사해야 하지만 정확한 매치일 필요는 없다는 것을 의미한다. 게다가, 상이한 카메라들로부터의 특징 벡터들이 특정 특징들을 갖지 않는 경우, 부분 특징들만이 비교될 것이고 "충분히 가까운"이라는 정의가 그에 따라 스케일링될 것이다.
도 13은 비주얼 질문 답변(VQA) 파이프라인(1300)의 예시적인 실시예를 예시한다. 예시된 예에서, 비주얼 질의(1302)가 최종 사용자로부터 먼저 수신되고, 데이터 흐름 컴파일러(1304)는 이어서 비주얼 질의(1302)를 비주얼 프로세싱 파이프라인 또는 데이터 흐름(1308)으로 컴파일하기 위해 사용된다. 일부 실시예들에서, 예를 들어, 데이터 흐름 컴파일러(1304)는 결과적인 비주얼 프로세싱 데이터 흐름(1308)을 생성하기 위해 비전 커널 모듈들의 라이브러리(1306)(예를 들어, 얼굴 인식, 포즈 인식, 객체 인식 등)를 사용할 수 있다.
일부 경우들에서, 예를 들어, 비주얼 프로세싱 데이터 흐름(1308)은 이미 생성되어 데이터 스토리지(1314)에 저장된 기존의 비주얼 메타데이터를 활용할 수 있다. 예를 들어, 인라인 애널리틱스 프레임워크(1310)는 실시간으로(예를 들어, 질의에 응답하여보다는 비주얼 데이터가 처음으로 캡처될 때) 초기 비주얼 데이터 프로세싱을 수행하는 데 사용될 수 있고, 오프라인 애널리틱스 프레임워크(1312)는 탐색 질의들에 응답하기 위해 요구되는 추가 비주얼 데이터 프로세싱을 수행하는 데 사용될 수 있다. 더욱이, 인라인 애널리틱스 프레임워크(1310) 및 오프라인 애널리틱스 프레임워크(1312) 둘 다는 그들의 결과적인 비주얼 메타데이터를 후속하는 비주얼 탐색 질의들에 응답하는 데 사용하기 위해 데이터 스토리지(1314)에 저장할 수 있다. 그에 따라, 일부 경우들에서, 특정의 질의(1302)에 대한 비주얼 프로세싱 데이터 흐름(1308)은 이미 생성되어 데이터 스토리지(1314)에 저장된 기존의 비주얼 메타데이터를 활용할 수 있다. 그렇지만, 다른 경우들에서, 추가 프로세싱이 질의(1302)에 응답하기 위해 요구될 수 있고, 따라서 비주얼 프로세싱 데이터 흐름(1308)은 부가 프로세싱을 수행하기 위해 오프라인 애널리틱스 프레임워크(1312)를 활용할 수 있다. 어느 경우든지, 비주얼 질의(1302)에 대한 응답을 생성하기 위해 컴파일러(1304)에 의해 생성되는 비주얼 프로세싱 파이프라인 또는 데이터 흐름(1308)이 런타임 환경에 의해 실행된다.
도 14는 비주얼 질문 답변(VQA) 컴파일러(1400)의 예시적인 실시예를 예시한다. 일부 실시예들에서, 예를 들어, 컴파일러(1400)는 VQA 질의들 및/또는 사용자 정의 비전 함수들(UVF들)(1402)을 비주얼 포그 아키텍처에서 다양한 포그 노드들에 걸쳐 분배되고 이들에 의해 실행될 수 있는 비주얼 데이터 흐름 그래프들(1417)로 컴파일하는 데 사용될 수 있다.
예시된 실시예에서, 예를 들어, UVF들(1402)은 선언적 API(1412)를 통해 컴파일러(1400)에 제공된다. 컴파일러(1400)는 이어서 UVF들(1402)을 실행하는 데 요구되는 상위 레벨 비전 연산들의 그래프(1415)를 생성할 수 있으며, 이 그래프는, 차례로, 비전 데이터 흐름 그래프(1417)를 생성하는 데 사용될 수 있다. 일부 실시예들에서, 예를 들어, 비전 데이터 흐름 그래프(1417)는 특정의 UVF들(1402)을 실행하는 데 요구되는 비주얼 프로세싱 파이프라인을 표현하는 유향 비순환 그래프(directed acyclic graph)(DAG)일 수 있다. 더욱이, 컴파일러(1400)는, 예를 들어, 중복성들을 제거하기 위해 다수의 UVF들(1402)의 데이터 흐름들의 중복 부분들을 병합함으로써, 비전 데이터 흐름 그래프(1417)를 최적화하기 위해 데이터 흐름 중복제거(dataflow de-duplication)를 사용할 수 있다.
일부 실시예들에서, 예를 들어, 컴파일러(1400)는 기본 비전 모듈들(1418)로부터의 정보(예를 들어, 이종 하드웨어 상에 작업부하들을 스케줄링하는 데 요구되는 하드웨어 특정 정보)를 사용하여 비전 데이터 흐름 그래프(1417)를 생성할 수 있다. 컴파일러(1400)는 UVF들(1402)을 실행하는 데 요구되는 비주얼 데이터 및/또는 메타데이터를 획득하기 위해 다수의 데이터베이스 API 호출들을 또한 생성할 수 있다. 다양한 실시예들에서, 이러한 데이터베이스 API 호출들은 비전 데이터 흐름 그래프(1417)의 일부일 수 있거나 그로부터 분리될 수 있는 것 중 어느 하나이다. 더욱이, 일부 실시예들에서는, 컴파일러(1400)는 이용가능한 비주얼 메타데이터에 따라 상이한 결과들을 생성할 수 있다.
이러한 방식으로, 컴파일러(1400)에 의해 생성되는 결과적인 비전 데이터 흐름 그래프(1417)는 UVF들(1402)에 응답하기 위한 결과들을 생성하기 위해 런타임 환경에 의해 후속하여 실행될 수 있다.
런타임
비주얼 포그 패러다임은, 태스크 병렬성 및 데이터 병렬성이 주어진 경우, 무수한 상이한 비주얼 프로세싱 애플리케이션들에 대한 라이브 감지를 제공하는, 인터넷 및/또는 다른 대규모 네트워크들에 걸쳐 분산되는 수만 개(또는 그 이상)의 이종 카메라 지원 에지 디바이스들을 구상한다. 비주얼 컴퓨팅 파이프라인들에 필요한 스케일, 계산 요구들, 및 대역폭은, 클라우드, 인터넷 게이트웨이 디바이스들, 및 에지 디바이스들 자체를 포함한, 분산 컴퓨팅 인프라스트럭처로의 지능적인 오프로딩을 필요로 한다.
일부 실시예들에서, 예를 들어, 비주얼 프로세싱은, 디바이스 접속성, 디바이스 자원 능력들, 디바이스 자원 이용가능성, 작업부하 유형, 프라이버시 제약조건들 등을 포함한, 다양한 기준들에 기초하여 이용가능한 포그 디바이스들에 걸쳐 스케줄링 또는 분배될 수 있다. 프라이버시 제약조건들은, 예를 들어, 어느 콘텐츠가 허용되어야 하고 어느 것이 필터링되어야 하는지를 알려주는 데 사용될 수 있다. 일부 경우들에서, 필터링된 콘텐츠는 낮아진 픽셀 깊이, 흐릿한 픽셀들, 또는 이웃하는 필터링되지 않은 픽셀들을 사용하는 근사화 및 추론에 의해 채워진 누락된 콘텐츠로 표현될 수 있다. 게다가, 머신 러닝이 스케줄링 결정들을 최적화하는 데 활용될 수 있다.
작업부하 배포 및/또는 마이그레이션은 범용 플러그인(universal plugin) API들을 갖는 핫 플러그가능한(hot-pluggable) 런타임 환경을 사용하여 구현할 수 있다. 예를 들어, 종래의 작업부하 배포/마이그레이션은 비용이 많이 들 수 있는데, 그 이유는 그것이 런타임 환경 및 툴체인들을 할당된 노드들로 송신하는 것을 요구할 수 있기 때문이다. 그렇지만, 핫 플러그가능한 런타임들을 사용하면, 작업부하들이 핫 스왑가능(hot-swappable)하다(예를 들어, 중지 런타임(stop runtime), 교체 플러그인(replace plugin), 시작 런타임(start runtime)).
더욱이, 플러그인 또는 비전 커널 리포지토리는 작업부하 배포를 용이하게 하기 위해 사용될 수 있다. 예를 들어, 클라우드 기반 또는 분산 리포지토리는 각각의 지원되는 비전 능력에 대한 디바이스 및 구현 추상화들의 컬렉션을 관리하는 데 사용될 수 있다. 이러한 방식으로, 리포지토리는 적절한 플러그인들 또는 비전 커널들을 포그 노드들에 그들 각자의 작업부하 할당들에 기초하여 분배할 수 있다.
비주얼 데이터에 대해 이미 수행된 임의의 이전 프로세싱의 상태를 유지하기 위해 비주얼 포그 런타임에 의해 증분적 프로세싱이 활용될 수 있어, 이전 프로세싱의 결과들이 후속하는 비주얼 프로세싱 및 질의들에 활용될 수 있게 해준다. 예를 들어, 비주얼 데이터에 대해 수행되는 임의의 프로세싱의 결과들은, 후속하는 비주얼 질의들에 대한 중복 프로세싱을 수행하는 것을 피하기 위해 추후 사용을 위해 저장될 수 있는, 비주얼 메타데이터로서 표현될 수 있다. 이러한 방식으로, 비주얼 질의 또는 UVF가 수신될 때, 컴파일러에 의해 생성되는 데이터 흐름은 이미 생성되어 재사용될 수 있는 이용가능한 메타데이터에 따라 변할 수 있다.
메타데이터 사전 프로비저닝(pre-provisioning)은 공통의 또는 빈번한 유형들의 프로세싱을 사전에 완료하기 위해 비주얼 데이터를 프리-프로세싱함으로써 비전 질의 레이턴시를 감소시키는 데 사용될 수 있다. 일부 실시예들에서, 예를 들어, 머신 러닝 모델은 수행되는 프리-프로세싱의 유형들을 최적화하는 데 사용될 수 있다. 예를 들어, 동일한 유형의 질의들의 패턴들 또는 유사한 유형들의 프로세싱을 수반하는 질의들의 패턴들에 기초하여, 다른 모달리티들(예를 들어, 날씨, 교통)을 또한 고려하면서 다양한 질의들의 관계들을 모델링하기 위해 머신 러닝이 사용될 수 있다. 예를 들어, 비전 질의들 및 UVF들의 최근의 이력에 기초하여 특정 유형들의 프로세싱을 사전 스케줄링함으로써 메타데이터가 사전 프로비저닝될 수 있다. 이러한 방식으로, 공통의 또는 유사한 비전 작업부하들의 패턴들은 질의 레이턴시를 감소시키기 위해 그 유형들의 작업부하들에 대한 새로 캡처된 비주얼 데이터에 대해 프리-프로세싱을 트리거할 수 있다.
유사하게, 스트림 우선순위화 또는 프리페칭은 과거의 경향들 및/또는 워크플로들에 기초하여 저 레이턴시 비주얼 데이터 로딩 또는 페칭을 수행하는 데 사용될 수 있다. 예를 들어, 비전 프로세싱 이력은 질의 레이턴시를 개선시키기 위해 특정 데이터 스트림들을 우선순위화하는 데 그리고/또는 특정의 애플리케이션에 대한 데이터를 메모리로부터 프리페치하는 데 사용될 수 있다. 사전에 수행되는 신속 프로세싱(expedited processing)을 수반하는 메타데이터 사전 프로비저닝과 비교할 때, 스트림 우선순위화는 비주얼 데이터를 획득하는 것 또는 비주얼 데이터가 필요할 가능성이 있는 위치로(예를 들어, 카메라로부터 특정 프로세싱 노드들로) 비주얼 데이터를 이동시키는 것을 수반한다.
캐싱된 비주얼 애널리틱스는, 증분적 프로세싱과 유사하게, 캐싱된 워크플로들을 사용하여 비주얼 프로세싱을 최적화하는 데 사용될 수 있다. 예를 들어, 이미 획득되어 프로세싱된 특정의 비주얼 스트림들에 대해 수행되는 프로세싱 또는 작업부하들의 유형과 함께, 그 스트림들에 관한 캐싱된 정보에 기초하여, 후속하는 비전 프로세싱 데이터 흐름들은 이전에 수행되었고 결과들이 캐싱되었던 특정 프로세싱 단계들을 생략할 수 있다. 예를 들어, 비주얼 애널리틱스 애플리케이션은 다수의 프리미티브 비전 연산들을 수반한다. 그렇지만, 비주얼 애널리틱스 결과들을 캐싱하고 가능한 경우 이들을 후속하는 연산들에 재사용함으로써 계산의 양이 감소될 수 있다. 예를 들어, 비주얼 애널리틱스 애플리케이션을 실행할 때, 중복 계산을 피하기 위해 이전의 프로세싱으로부터 결과되는 캐싱된 비주얼 메타데이터가 탐색될 수 있다. 일부 실시예들에서, 예를 들어, 캐싱된 비주얼 애널리틱스는 다음과 같이 구현될 수 있다:
1. 각각의 프리미티브 비전 연산은 캐시 태그를 사용하여 태깅되거나 라벨링된다;
2. 비주얼 데이터의 각각의 인스턴스 또는 스트림(예를 들어, 각각의 저장된 비디오)에 대해, 이미 생성된 임의의 대응하는 비주얼 메타데이터가 메타데이터 데이터베이스 또는 캐시에 저장된다;
3. 비주얼 데이터의 특정의 인스턴스 또는 스트림과 관련하여 특정의 프리미티브 비전 연산에 대해 캐시 태그 히트가 있는 경우, 특정의 프리미티브 비전 연산이 생략될 수 있고 그 대신에 기존의 비주얼 메타데이터가 사용될 수 있다; 그리고
4. 그렇지만, 캐시 태그 미스가 있는 경우, 특정의 프리미티브 비전 연산이 실행되고, 결과적인 메타데이터가 후속 사용을 위해 메타데이터 데이터베이스에 캐싱된다.
과적합(overfitting) 문제를 해결하기 위해 분산 신경 네트워크 추론에 텐서 분해(tensor factorization)가 또한 사용될 수 있다. 예를 들어, 연속적인 신경 네트워크 계층들의 대표적인 가중치들은 모델을 "평활화(smooth out)"하기 위해 텐서 분해를 활용할 수 있다.
도 15 및 도 16은 비주얼 포그 컴퓨팅을 위한 디바이스 중심 스케줄링의 예시적인 실시예들을 예시한다. 일부 실시예들에서, 예를 들어, 비주얼 포그 스케줄링은 (1) 디바이스 자원 용량들, 및 (2) 작업부하 자원 요구사항들에 의존할 수 있다. 전자는 일정하고 일관된 채로 있지만, 후자는 디바이스의 하드웨어 사양들 및 소프트웨어 툴체인들에 따라 달라질 수 있다. 예를 들어, 일부 실시예들에서, CPU들, GPU들, FPGA들, ASIC들 등과 같은, 상이한 유형들의 하드웨어에 제각기 최적화되어 있는 안면 인식 능력의 다수의 구현들이 있을 수 있다. 이러한 방식으로, 비주얼 포그 컴퓨팅에서의 추가적인 최적화를 위한 기회를 만들기 위해 단일 비전 능력의 다수의 구현들이 활용될 수 있다.
그에 따라, 상이한 유형들의 하드웨어 및/또는 소프트웨어를 갖는 디바이스들의 이종성(heterogeneity)을 해결하기 위해, 예시된 실시예들은 비전 능력들 리포지토리를 사용하여 디바이스 중심 스케줄링을 구현한다. 일부 실시예들에서, 예를 들어, 비전 능력들 리포지토리는 상이한 하드웨어 및/또는 소프트웨어 환경들에 최적화되어 있는 특정의 비전 능력의 다수의 구현들을 포함할 수 있다. 이러한 방식으로, 비전 작업부하들은 자원 이용가능성을 식별해주는 자원별 원격측정 정보(per-resource telemetry information)와 함께, 그들 각자의 유형들의 자원들 및 능력들에 기초하여 포그 디바이스들에 걸쳐 스케줄링 또는 분배될 수 있다.
기본적인 원리는 능력들(예를 들어, 얼굴 검출, 제스처 인식)을 그들의 기본 커널들/구현들(예를 들어, SIFT 기반 구현들, 딥 신경 네트워크 구현들)로부터 추상화하는 것이다. 이 유형의 추상화는 디바이스별로 임의적인 비전 능력을 배포하는 유연성을 제공한다. 예를 들어, 자원 기반 스케줄링을 사용하여, 다양한 포그 디바이스들에 걸친 최적의 태스크-대-디바이스 매핑을 결정하고 또한 각각의 디바이스가 그의 할당된 태스크들을 위해 사용해야 하는 대응하는 비전 능력 구현들을 식별하기 위해 이종 자원 유형들의 상이한 포그 디바이스들이 전체적으로 고려될 수 있다. 더욱이, 지능형 스케줄링 결정들을 더욱 용이하게 하기 위해 자원별로 포그 디바이스들의 자원 이용가능성(예를 들어, CPU, GPU, FPGA, ASIC 등)을 모니터링하는 데 자원 원격측정이 사용될 수 있다. 게다가, 비전 능력 리포지토리는 상이한 비전 능력의 구현들의 컬렉션들을 호스팅하고, 디바이스가 특정의 비전 능력의 이용가능한 구현을 요청할 수 있게 해주는 요청-응답 서비스를 또한 제공할 수 있다.
이러한 방식으로, 비주얼 포그 컴퓨팅을 위한 엔드-투-엔드(E2E) 성능(예를 들어, 레이턴시 및 대역폭 효율) 및 스케일링가능성(scalability)을 개선시키기 위해 디바이스 중심 스케줄링이 사용될 수 있다.
도 15는 비주얼 컴퓨팅 시스템에서 디바이스 중심 스케줄링을 구현하기 위한 예시적인 아키텍처(1500)를 예시한다. 예시된 실시예에서, 예를 들어, 비주얼 컴퓨팅 아키텍처(1500)는 사용자들(1502), 스케줄링 서버(1504), 비전 커널 리포지토리(1506), 및 다양한 유형들의 포그 디바이스들(1510)을 포함한다. 포그 디바이스(1510)는, 예를 들어, 네트워크의 에지로부터 클라우드에 이르는 임의의 디바이스를, 전부 통틀어, 포함할 수 있다. 예시된 실시예에서, 예를 들어, 포그 디바이스들(1510)은 카메라들(1510a), 게이트웨이들(1510b), 및 클라우드 서버들(1510c)을 포함한다.
일부 실시예들에서, 사용자들(1502)은 카메라들(1510a)에 의해 캡처되는 비주얼 데이터에 대한 탐색 질의들을 제출할 수 있다. 더욱이, 그 질의들에 효율적으로 응답하기 위해, 스케줄링 서버(1504)는 다양한 포그 디바이스들(1510)에 걸쳐 비전 프로세싱 작업부하들을 스케줄링 또는 분배할 수 있다. 일부 실시예들에서, 예를 들어, 스케줄링 서버(1504)는, 포그 내의 자원들의 유형들(예를 들어, 다양한 포그 디바이스들(1510)의 이종 유형들의 자원), 자원 원격측정 정보(예를 들어, 자원 유형별로 포그 자원들의 이용가능성), 및 비전 능력 리포지토리(1506)에서 이용가능한 비전 능력들의 구현들과 같은, 다양한 기준들에 기초하여 지능형 스케줄링 결정들을 수행할 수 있다.
스케줄링 프로세스의 예시적인 실시예가, 예를 들어, 도 16과 관련하여 아래에 설명된다.
도 16은 비주얼 컴퓨팅 시스템에서 디바이스 중심 스케줄링의 예시적인 실시예에 대한 플로차트(1600)를 예시한다. 일부 실시예들에서, 예를 들어, 플로차트(1600)는 도 15의 비주얼 컴퓨팅 아키텍처(1500)를 사용하여 구현될 수 있다.
플로차트는 블록(1602)에서 이용가능한 비전 능력 구현들을 수집하는 것으로 시작될 수 있다. 일부 실시예들에서, 예를 들어, 스케줄링 서버는 비전 능력 리포지토리로부터의 비전 능력들의 이용가능한 구현들의 컬렉션을 지속적으로 동기화시킨다.
플로차트는 이어서 포그 디바이스들의 자원 원격측정을 수집하기 위해 블록(1604)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 스케줄링 서버는 자원 유형별로 모든 포그 디바이스들의 자원 이용가능성을 수집할 수 있다. 예를 들어, 스케줄링 서버는 모든 포그 디바이스들에 걸친 CPU들, GPU들, FPGA들, ASIC들, 및/또는 임의의 다른 자원 유형의 자원 이용가능성에 관한 정보를 수집할 수 있다.
이러한 방식으로, 블록(1602)에서 수집되는 이용가능한 비전 능력 구현들 및 블록(1604)에서 수집되는 자원 원격측정 정보에 기초하여, 스케줄링 서버는 후속하여 비주얼 포그 패러다임으로 최적의 태스크-대-디바이스 매핑에 기초하여 비전 작업부하들을 스케줄링할 수 있다.
예를 들어, 플로차트는 이어서 새로운 비전 작업부하가 사용자로부터 수신되었는지를 결정하기 위해 블록(1606)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 사용자는, 새로운 비전 작업부하가 포그 디바이스들에 걸쳐 스케줄링 또는 분배될 것을 요구할 수 있는, 새로운 비주얼 질의를 제출할 수 있다.
새로운 비전 작업부하가 수신되지 않았다고 블록(1606)에서 결정되면, 플로차트는 이어서 새로운 비전 작업부하가 수신될 때까지 이용가능한 비전 능력 구현들을 동기화시키고 자원 원격측정 정보를 수집하는 것을 계속하기 위해 다시 블록(1602)으로 진행할 수 있다.
새로운 비전 작업부하가 수신되었다고 블록(1606)에서 결정되면, 플로차트는 이어서 모든 보류 중인 작업부하들을 재스케줄링하기 위해 블록(1608)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 사용자에 대한 새로운 비전 작업부하를 수신하는 것은 집합적 작업부하들이 가능한 가장 효율적인 방식으로(예를 들어, 최적의 태스크-대-디바이스 매핑에 기초하여) 포그 디바이스들에 걸쳐 분배되도록 보장하기 위해 모든 보류 중인 작업부하들을 재스케줄링하도록 스케줄링 서버를 트리거할 수 있다.
일부 실시예들에서, 예를 들어, 스케줄링은, 이용가능한 포그 자원들의 유형들, 그 자원들에 대한 원격측정 정보, 및 그 포그 자원들에 이용가능한 비전 능력 구현들과 같은, 다양한 기준들에 기초하여 수행될 수 있다.
일부 실시예들에서, 예를 들어, 다수의 자원 유형들의 제약조건들을 준수하는 스케줄은 정수 선형 프로그래밍(integer linear programming)(ILP)을 사용하여 결정될 수 있다. 정수 선형 프로그래밍(ILP)은 선형 관계들에 의해 표현되는 수학적 모델을 풀거나 최적화하기 위한 수학적 최적화 또는 실현성 기술이다. 특히, ILP는, 부가의 선형 등식 및 선형 부등식 제약조건들에 따라, 선형 목적 함수를 최적화하는 데 사용될 수 있다. 예로서, ILP 문제는 다음과 같이 표현될 수 있다:
minimize:
Figure pct00001
(목적 항)
subject to:
Figure pct00002
(부등식 제약조건)
Figure pct00003
(등식 제약조적)
and:
Figure pct00004
(이진 제약조건).
더욱이, 이 ILP 모델은, 다른 부가의 제약조건들(예를 들어, 디바이스 자원 제약조건들)을 또한 준수하면서, 지정된 목적(예를 들어, 총 네트워크 이용률)을 충족시키는 최적의 스케줄
Figure pct00005
을 결정하는 데 사용될 수 있다. 위의 ILP 모델에서, 예를 들어, x는 가능한 스케줄들
Figure pct00006
의 컬렉션을 제시하고, Kx의 길이이며, 목적 항(objective term)은 최소화될 스케줄링 목적(예를 들어, 총 네트워크 이용률)을 제시하며, 부등식/등식 제약조건들은 임의의 부가 제약조건들(예를 들어, 디바이스, 자원, 네트워크, 매핑, 및/또는 프라이버시 제약조건들)을 제시한다. 디바이스 자원 제약조건은, 예를 들어, ILP 모델의 부등식 제약조건으로서 제시될 수 있다. 예를 들어, 다수의 자원 유형들의 제약조건들을 고려하기 위해, 이들은 위의 ILP 모델에서
Figure pct00007
의 형태로 다수의 부등식들로 확장될 수 있다.
그에 따라, 스케줄링 결정들에 기초하여, 스케줄링 서버는 각각의 포그 디바이스에 0개 이상의 태스크를 할당한다. 일부 실시예들에서, 예를 들어, 태스크는
Figure pct00008
형태의 튜플로 지정될 수 있고, 여기서 p는 비전 능력을 나타내고, r은 자원 유형을 나타낸다(예를 들어, p = 얼굴 검출, r = Movidius 프로세서).
플로차트는 이어서 업데이트된 작업부하 스케줄이 이용가능한지를 결정하기 위해 블록(1610)으로 진행할 수 있다. 예를 들어, 새로운 비전 작업부하가 수신되고 보류 중인 작업부하들이 재스케줄링된 후에, 스케줄링 서버는 포그 디바이스들에 분배될 필요가 있는 업데이트된 또는 개선된 작업부하 스케줄을 가질 수 있다. 그렇지만, 일부 실시예들에서, 스케줄링 서버는 새로 생성된 스케줄이 현재 작업부하 스케줄보다 양호하거나 효율적인 경우에만 작업부하 스케줄을 업데이트할 수 있다.
작업부하 스케줄이 업데이트되지 않았다고 블록(1610)에서 결정되면, 플로차트는 현재 작업부하 스케줄이 궁극적으로 업데이트될 때까지 이용가능한 비전 능력 구현들을 동기화시키고 자원 원격측정을 수집하는 것을 계속하기 위해 다시 블록(1602)으로 진행할 수 있다.
그렇지만, 업데이트된 작업부하 스케줄이 이용가능하다고 블록(1610)에서 결정되면, 플로차트는 업데이트된 스케줄을 모든 포그 디바이스들에 푸시하기 위해 블록(1612)으로 진행할 수 있다.
플로차트는 이어서 비전 능력 구현들에 대한 요청들을 포그 디바이스들로부터 수신하기 위해 블록(1614)으로 진행할 수 있다. 예를 들어, 각각의 포그 디바이스는 특정의 포그 디바이스에 할당되는 태스크들에 대한 비전 능력들의 구현들을 요청하기 위해 비전 능력 리포지토리에 질의할 수 있다. 일부 실시예들에서, 예를 들어, 특정의 포그 디바이스로부터의 요청은 그의 할당된 태스크들 t 각각을 식별해줄 수 있다.
플로차트는 이어서 각각의 포그 디바이스에 대한 적절한 비전 능력 구현들을 식별하기 위해 블록(1616)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 비전 능력 리포지토리는 (태스크 t, 구현 i)의 형태의 키-값 쌍들의 사전일 수 있으며, 여기서 구현 i는 다양한 형태들(예를 들어, C/C++로 된 동적 연결 라이브러리(dynamic linking library))로 분배될 수 있다. 그에 따라, 특정의 포그 디바이스로부터의 요청에서 지정된 태스크(들) t에 기초하여, 비전 능력 리포지토리는 그 포그 디바이스에 대한 대응하는 구현(들) i를 식별한다. 일부 실시예들에서, 예를 들어, 비전 능력 리포지토리는 그 포그 디바이스의 이용가능한 자원들에 기초하여 포그 디바이스에 의해 요청되는 각각의 비전 능력의 최적의 구현을 식별한다.
플로차트는 이어서 식별된 비전 능력 구현들을 각각의 포그 디바이스에 분배하기 위해 블록(1618)으로 진행할 수 있다. 이러한 방식으로, 각각의 포그 디바이스는 이어서 적절한 비전 능력 구현들을 사용하여 그의 할당된 태스크들을 수행할 수 있다.
이 시점에서, 플로차트가 완료될 수 있다. 그렇지만, 일부 실시예들에서, 플로차트가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 플로차트는 비전 작업부하들을 스케줄링하는 것을 계속하기 위해 블록(1602)에서 재시작될 수 있다.
도 17은 비주얼 포그 아키텍처를 위한 런타임 프로세싱 파이프라인(1700)의 예시적인 실시예를 예시한다. 예시된 실시예에서, 예를 들어, 비주얼 포그 아키텍처에서 카메라들 또는 비주얼 센서들에 의해 캡처되는 비주얼 데이터(1701)(예를 들어, 비디오 또는 이미지들)의 원시 스트림은 스트림 인그레스 프레임워크(1702)에 대한 입력으로서 제공된다. 스트림 인그레스 프레임워크(1702)는 비주얼 데이터(1701)의 원시 스트림을 디코딩하고, 디코딩된 스트림(1703)은 이어서 분산 프리-프로세싱 프레임워크(1704)에 대한 입력으로서 제공된다. 분산 프리-프로세싱 프레임워크(1704)는 이어서, 데이터 프리-프로세싱, 필터링, 및/또는 집계와 같은, 네트워크 에지에 있는(예를 들어, 비주얼 데이터를 캡처한 카메라들 또는 센서들 인근의) 특정 포그 자원들을 사용하여 일부 예비 프로세싱을 수행한다. 결과적인 필터링된 스트림(1705)은 이어서 최종 사용자들로부터의 비주얼 탐색 질의들 및/또는 사용자 정의 비전 함수들(UVF들)(1709)에 응답할 시에 후속 사용을 위해 데이터 스토리지(1706)에 저장될 수 있다.
예를 들어, 최종 사용자들은 비주얼 포그 시스템에 의해 캡처되는 비주얼 데이터와 연관된 비주얼 탐색 질의들 및/또는 사용자 정의 비전 함수들(UVF들)(1709)을 후속하여 제출할 수 있다. 그에 따라, UVF들(1709)은 UVF 컴파일러(1710)에 제공되며, UVF 컴파일러(1710)는 UVF들을 실행하는 데 사용될 수 있는 비전 데이터 흐름 그래프(1711)로 UVF들(1709)을 컴파일한다. 예를 들어, 비전 데이터 흐름 그래프(1711)는 비주얼 포그 아키텍처에서 이용가능한 포그 노드들에 걸쳐 비전 데이터 흐름 그래프(1711)와 연관된 작업부하들을 분배 또는 스케줄링하는 분산 UVF 실행 프레임워크(1712)에 제공된다.
작업부하들이 실행을 완료한 후에, 분산 UVF 실행 프레임워크(1712)는 UVF들(1709)의 실행으로부터 결과되는 출력(1713)을 생성한다. 예를 들어, 출력(1713)은 UVF들(1709)의 실행에 의해 생성되는 비주얼 데이터 및/또는 메타데이터(1707)의 필터링된 스트림을 포함할 수 있거나 또는 이로부터 도출될 수 있다. 더욱이, 일부 실시예들에서는, 비주얼 데이터 및/또는 메타데이터(1707)의 결과적인 스트림은 이어서 후속하는 비주얼 탐색 질의들 또는 UVF들에 응답하기 위해 데이터 스토리지(1706)에 저장될 수 있다.
스토리지
실제 세계에서 생성되는 비주얼 데이터의 볼륨이 계속 증가함에 따라, 비주얼 데이터가 인간들에 의해 수동으로 검토되기보다는 컴퓨터들에 의해 자동으로 프로세싱되는 것이 점점 통상적으로 되고 있다. 그렇지만, 비주얼 데이터의 증가하는 볼륨으로 인해, 데이터 액세스가 비주얼 데이터 프로세싱에서 병목(bottleneck)으로 되었는데, 그 이유는 기존의 비주얼 데이터 저장 접근법들이 다양한 결점들을 겪기 때문이다.
예시하기 위해, 이미지 분류는 이미지의 콘텐츠를 식별하기 위해 신경 네트워크를 사용하는 통상적인 비주얼 데이터 연산이다. 예를 들어, 머신 러닝에서, 컨볼루션 신경 네트워크(CNN)는 입력이 일반적으로 이미지라고 가정되는 피드 포워드 인공 신경 네트워크의 한 유형이다. CNN은 이미지 분류에 통상적으로 사용되며, 여기서 목표는 어느 정도의 신뢰도로 이미지의 콘텐츠를 결정하는 것이다. 예를 들어, CNN은 객체 클래스들 또는 특징들이 라벨링되어 있는 이미지들의 세트를 사용하여 특정 분류 태스크를 위해 먼저 트레이닝되고, CNN은 이어서 다른 이미지들이 각자의 객체 클래스들을 포함하는지의 확률을 결정하는 데 사용될 수 있다.
비주얼 데이터(예를 들어, 이미지들, 비디오)는, 그것이 CNN에 의해 프로세싱될 수 있기 전에, 저장 시스템으로부터 먼저 로딩되어야 한다. 과거에는, 데이터 액세스 레이턴시가 전형적으로 CNN 비전 프로세싱 레이턴시보다 작았으며, 이는 CNN 프로세싱 동안 데이터 액세스가 수행될 수 있게 해주었다. 그렇지만, 하드웨어 및 소프트웨어 최적화들이 CNN 비전 프로세싱 알고리즘들의 성능을 계속하여 개선시킴에 따라, 기존의 솔루션들의 데이터 액세스 레이턴시가 병목으로 되었다. 더욱이, 기존의 솔루션들은 전형적으로 비주얼 데이터를 비주얼 데이터 프로세싱을 지원하도록 설계된 포맷보다는 그의 원래의 포맷으로 저장하며, 이는 성능을 더욱 저해한다.
기존의 솔루션들은 또한 비주얼 데이터를 효율적으로 탐색할 수 없다. 예를 들어, 큰 데이터 세트(예를 들어, 수백만 개의 이미지)가 주어지면, 질의를 사용하여 관련 이미지들의 서브세트를 효율적으로 식별하는 능력이 중요하다. 이미지 분류에 사용되는 CNN의 출력은 전형적으로 다양한 객체들이 이미지에 존재할 확률에 대응하는 값들의 벡터를 포함한다. 그렇지만, 기존의 솔루션들은 전형적으로 당면한 태스크에 대해 이 정보를 사용하고 이어서 이를 폐기하여, 후속 사용을 위해 이 프로세싱이 반복될 것을 요구한다. 예를 들어, 개와 고양이가 있는 이미지를 프로세싱하는 데 사용되는 CNN은 둘 다에 대한 확률을 제공할 수 있지만, 목표가 개들이 있는 이미지들을 발견하는 것인 경우, 고양이들에 관한 정보가 전형적으로 손실되거나 폐기되며, 따라서 향후 사용을 방해한다. 이러한 방식으로, 고양이들을 포함하는 이미지들에 대한 후속 탐색은 전형적으로 각각의 이미지에 대해 CNN이 또다시 실행될 것을 요구할 것이다.
그에 따라, 도 18은 비주얼 데이터에 대한 효율적인 액세스를 제공하고 비주얼 데이터 프로세싱에 사용되는 기존의 스토리지 솔루션들의 결점들을 제거하도록 설계된 비주얼 데이터 스토리지 아키텍처(1800)의 예시적인 실시예를 예시한다. 특히, 스토리지 아키텍처(1800)는 비주얼 데이터를 탐색하기 위한 효율적인 메타데이터 스토리지는 물론, 비주얼 데이터를 저장하기 위한 분석 친화적 포맷들을 제공한다.
예시된 실시예에서, 예를 들어, 스토리지 아키텍처(1800)는, 아래에서 추가로 설명되는 바와 같이, 클라이언트 API(1801), 메타데이터 데이터베이스(1804), 비주얼 컴퓨팅 라이브러리(visual compute library)(1806), 및 지속적 데이터 스토리지(1810)로부터 비주얼 탐색 질의들을 수신하기 위한 요청 서버(1802)를 포함한다.
일부 실시예들에서, 예를 들어, 스토리지 아키텍처(1800)는 비주얼 데이터 액세스를 위한(예를 들어, 비주얼 데이터와 메타데이터 둘 다를 위한) 통합 API(1801)를 제공할 수 있다. 예를 들어, 비주얼 데이터는 통상적으로 파일들로서 또는 다양한 유형들의 데이터베이스들(예를 들어, 키-값, 관계형, 및/또는 그래프 데이터베이스들)에 직접 저장된다. 비주얼 메타데이터는 전형적으로, 예를 들어, 데이터베이스들에 저장되는 반면, 이미지들과 비디오들은 전형적으로 파일들로서 저장된다. 더욱이, 상이한 유형들의 파일 시스템들 및 데이터베이스들은 사용자들이 데이터에 액세스하고 데이터를 저장할 수 있게 해주기 위해 다양한 프로그래밍 및/또는 질의 언어들로 API 함수들을 제공한다. 그에 따라, 일부 실시예들에서, 비주얼 스토리지 아키텍처(1800)는 임의의 저장 소스로부터 임의의 유형의 비주얼 데이터를 검색하기 위한 멀티-모달 질의들을 지원하는 통합 API(예를 들어, JSON 기반)로 구현될 수 있다. 일부 실시예들에서, 예를 들어, 통합 API는 상이한 저장 위치들로부터 비주얼 메타데이터와 원래의 비주얼 데이터를 검색 및/또는 결합하는 데 사용될 수 있다. 통합 API는 또한 비주얼 데이터가 요청하는 사용자에게 반환되기 전에 비주얼 데이터에 대해 특정 유형들의 프로세싱이 수행될 수 있게 해줄 수 있다. 게다가, 통합 API는 사용자들이 이미지들, 특징 벡터들, 및 비디오들과 같은 비주얼 엔티티들을 명확히 인식할 수 있게 해줄 수 있고, 그 비주얼 엔티티들의 서로 간의 관계 및 특정의 비전 애플리케이션과 연관된 다른 엔티티들과의 관계에 기초하여 그 비주얼 엔티티들에 대한 액세스를 단순화할 수 있다.
더욱이, 일부 실시예들에서, 비주얼 데이터를 더 효율적으로(예를 들어, 분산 에지-투-클라우드 네트워크의 상이한 부분들에서 장기 또는 단기 저장을 사용하여) 저장하기 위해 멀티-티어 레이지 데이터 저장 접근법(multi-tier lazy data storage approach)이 사용될 수 있다. 예를 들어, 비주얼 데이터의 유형 또는 중요도에 기초하여 상이한 위치들에 그리고 다양한 양들의 시간 동안 비주얼 데이터를 저장하기 위해 다수의 저장 티어들이 사용될 수 있다. 일부 실시예들에서, 예를 들어, 비디오 카메라들은 지난 하루 내에 캡처된 모든 비디오를 저장할 수 있고, 게이트웨이들은 지난 한 주 내의 모션 활동들을 갖는 비디오를 저장할 수 있으며, 클라우드는 지난 한 해 내의 특정 중요한 이벤트들과 연관된 비디오를 저장할 수 있다.
유사하게, 저장 티어들에 걸친 비주얼 데이터의 지능적인 배치 및 에이징(aging)은 데이터 저장 효율(예를 들어, 분산 에지-투-클라우드 시스템 내에서 비주얼 데이터를 어디에 저장할지, 언제 데이터가 핫 스토리지(hot storage)로부터 웜 스토리지(warm storage)로 콜드 스토리지(cold storage)로 이동되어야 하는지 등을 결정하는 것)을 추가로 개선시킬 수 있다. 예를 들어, 비주얼 데이터 및 메타데이터는 데이터 액세스 패턴들에 기초하여 구별되고 분리될 수 있다. 더욱이, 비전 프로세싱에 필요할 때 데이터가 더 빠르게 판독될 수 있게 해주기 위해 분석 친화적 저장 포맷들이 사용될 수 있다. 이러한 다양한 데이터 포맷들은, 데이터의 의도된 용도 및 수명에 기초하여, 다양한 이종 메모리 및 저장 기술들에 매핑될 수 있는 핫 데이터 티어, 웜 데이터 티어, 및 콜드 데이터 티어를 형성하는 데 사용될 수 있다. 예를 들어, 저장 티어들은 핫 데이터, 콜드 데이터, 및 임의로 웜 데이터를 표현하는 데 사용될 수 있다. 핫 데이터는 빈번히 액세스되고; 웜 데이터는 가끔 액세스되며; 콜드 데이터는 (있다 해도) 거의 액세스되지 않는다. 그에 따라, 콜드 데이터는 더 느린 하드웨어에 저장될 수 있는데 그 이유는 데이터의 검색을 위한 낮은 액세스 레이턴시가 덜 중요하기 때문이다. 이러한 방식으로, 비주얼 데이터의 어느 부분들이 언제 핫 티어들에 남아 있어야 하는지 및 그것이 언제 콜더 티어들(colder tiers)로 마이그레이션되어야 하는지, 및 어느 저장 포맷이 사용되어야 하는지를 결정하는 데 지능적 결정들이 사용될 수 있다. 예를 들어, 관심 영역들은 전체 이미지/비디오보다 훨씬 오랫동안 분석 친화적 포맷으로 핫 스토리지에 남아 있을 수 있다.
메타데이터 데이터베이스(1804)는 비주얼 데이터의 효율적인 탐색들을 용이하게 하는 방식으로 메타데이터를 저장하는 데 사용된다. 예를 들어, CNN을 사용하여 이미지 분류를 수행할 때, 결과적인 이미지-객체 관계들 또는 확률들은 메타데이터로서 저장될 수 있고, 메타데이터는 이미지들의 후속 탐색들에 사용될 수 있으며, 따라서 각각의 탐색을 위해 이미지들을 반복하여 프로세싱할 필요성을 없애줄 수 있다. 예를 들어, 도 19는 비주얼 데이터를 탐색하기 위해 메타데이터를 활용하는 비전 프로세싱 파이프라인(1900)의 예를 예시한다. 예시된 예에서, 블록(1902)에서 들어오는 비주얼 데이터의 스트림이 네트워크 또는 파일 시스템으로부터 수신되고, 블록(1904)에서 (예를 들어, CNN을 사용하여) 메타데이터를 도출하기 위해 비주얼 데이터에 대해 비전 프로세싱이 수행되며, 블록(1906)에서 메타데이터가 저장되고, 블록(1908)에서 관련 비주얼 데이터에 대한 탐색 질의들이 수신되며, 탐색 질의들이 이어서 블록(1906)에서 획득되는 메타데이터 또는 블록(1904)에서 수행되는 부가의 비전 프로세싱 중 어느 하나를 사용하여 충족된다.
일부 실시예들에서, 스토리지 아키텍처(1800)는 동일한 객체 또는 사람을 포함하는 이미지들, 동일한 위치에서 촬영된 이미지들 등과 같은, 비주얼 데이터 간의 관계들을 식별하기 위해 비주얼 메타데이터를 속성 그래프로서 저장될 수 있다. 예를 들어, 도 20 및 도 21은 속성 그래프를 사용하여 비주얼 메타데이터를 표현하는 예들을 예시한다. 이러한 방식으로, 비주얼 메타데이터가 이러한 관계들을 식별하기 위해 쉽게 탐색될 수 있으며, 따라서 "사람 A를 포함하는 위치 Y에서 촬영된 모든 이미지들을 발견하기"와 같은 유연한 탐색 질의들을 가능하게 해줄 수 있다.
더욱이, 일부 실시예들에서, 스토리지 아키텍처(1800)의 메타데이터 데이터베이스(1804)는 비주얼 메타데이터가 더 효율적으로 탐색될 수 있게 해주기 위해 영구 메모리 그래프 데이터베이스(persistent memory graph database)(PMGD)로서 구현될 수 있다. 예를 들어, 영구 메모리(PM) 기술을 사용하여, 비주얼 메타데이터를 포함하는 그래프 데이터베이스가 메모리에도 그리고 영속적으로도 저장할 수 있다. 이러한 방식으로, 영구 메모리 그래프 데이터베이스(PMGD)는 PM 캐싱 아키텍처로 작동하는 데이터 구조들 및 트랜잭션 시맨틱스를 갖는 메모리 계층구조를 활용하고, 기입 요청들을 감소시키며(DRAM에 비해 PM의 더 낮은 기입 대역폭을 해결함), 플러시들 및 메모리 커밋들의 횟수를 감소시키도록 설계될 수 있다. 이 접근법은 관련 비주얼 데이터를 식별하기 위해 비주얼 메타데이터의 그래프 데이터베이스가 효율적으로 탐색될 수 있게 해준다.
게다가, 비주얼 메타데이터의 빠른 탐색을 달성하기 위해 특징 벡터 저장 최적화들이 사용될 수 있다. 예를 들어, 특징 벡터들은 비주얼 데이터(예를 들어, 얼굴들, 사람들, 객체들)에서 관심 영역들 또는 관심 특징들을 식별하기 위해 다양한 비전 알고리즘들에 의해 생성될 수 있고, 이들은 전형적으로 n-차원 부동 소수점 값들의 벡터들로서 표현된다. 주어진 특징 벡터에 대한 최근접 이웃을 발견하는 것은, 특히 수십억 개의 잠재적 특징 벡터(예를 들어, 각각의 이미지 또는 비디오 프레임의 각각의 관심 영역에 대한 특징 벡터)로 인해 클라우드 스케일에서, 계산 비용이 많이 드는 통상적인 동작이다. 그에 따라, 일부 실시예들에서, 특징 벡터들은 효율적인 포맷을 사용하여 비주얼 메타데이터로서 표현되고 저장될 수 있다. 예를 들어, 비주얼 메타데이터는 특징 벡터들이 어디에 존재하는지를 나타내는 분석 친화적 어레이 포맷을 사용하여 저장될 수 있고, 탐색 공간을 좁히기 위해 메타데이터 스토리지 내의 관심 차원들에 인덱스가 구축될 수 있다.
스토리지 아키텍처(1800)는, 이미지들 또는 비디오와 같은, 비주얼 데이터 자체를 저장하기 위한 별도의 데이터 스토리지(1810)를 또한 포함한다. 이러한 방식으로 메타데이터와 비주얼 데이터를 분리시키는 것은 각각의 유형의 데이터가 이종 시스템에서 가장 적합한 하드웨어에 매핑될 수 있게 해주며, 따라서 요청 서버(1802)가 비주얼 데이터 요청을 핸들링하는 가장 효율적인 방식을 식별하기 위한 유연성을 제공한다.
더욱이, 스토리지 아키텍처(1800)는 또한 비주얼 프로세싱을 돕기 위해 설계된 애널리틱 이미지 포맷을 사용하여 데이터 스토리지(1810)에 비주얼 데이터를 저장할 수 있다. 예시된 실시예에서, 예를 들어, 스토리지 아키텍처(1800)의 비주얼 컴퓨팅 라이브러리(VCL)(1806)는 전통적인 포맷들(1808)에 부가하여 애널리틱 이미지 포맷들(1807)에 대한 프로세싱을 핸들링하도록 설계된다. 예를 들어, 비주얼 컴퓨팅 라이브러리(1806)는, 도 22와 관련하여 추가로 설명되는 바와 같이, TileDB와 같은 어레이 기반 데이터 관리 시스템을 사용하여 애널리틱 이미지 포맷(1807)을 구현할 수 있다. 애널리틱 이미지 포맷(1807)은 이미지 데이터 및 이미지 내의 관심 영역들에 대한 빠른 액세스를 제공한다. 더욱이, 애널리틱 이미지 포맷(1807)이 이미지 데이터를 어레이로서 저장하기 때문에, 애널리틱 이미지 포맷(1807)은 비주얼 컴퓨팅 라이브러리(1806)가 이미지 데이터의 어레이에 대해 직접 계산들을 수행할 수 있게 해준다. 비주얼 컴퓨팅 라이브러리(1806)는 또한 애널리틱 이미지 포맷(1807)과 전통적인 이미지 포맷들(1808)(예를 들어, JPEG 및 PNG) 사이에서 이미지들을 변환할 수 있다. 유사하게, 비디오들은 머신 기반 분석을 용이하게 하도록 설계된 머신 친화적 비디오 포맷을 사용하여 저장될 수 있다. 예를 들어, 비디오들은 전형적으로 이들이 인간들에 의해 소비될 것이라는 가정 하에서 인코딩되고, 압축되며, 저장된다. 이 가정은 종종 인간의 눈과 뇌가 프로세싱할 수 없는 정보를 제거함으로써 비디오 인코딩에 활용된다. 그렇지만, 머신 기반 프로세싱을 위해 의도된 비디오들은 비디오 또는 비디오 프레임 내에서 전체 이미지들 또는 관심 영역들을 검색하는 데 요구되는 시간을 가속시키고, 심지어 머신 러닝 비디오 프로세싱 메커니즘들의 정확성을 향상시키도록 설계된 대안의 저장 방법들로부터 이득을 볼 수 있다.
도 22는 비주얼 데이터 프로세싱을 돕기 위해 설계된 애널리틱 이미지 포맷(2200)의 예시적인 실시예를 예시한다. 일부 실시예들에서, 예를 들어, 스토리지 아키텍처(1800)는 비주얼 데이터 프로세싱 및 분석을 용이하게 하는 포맷으로 이미지들을 저장하기 위해 애널리틱 이미지 포맷(2200)을 사용할 수 있다.
CNN들과 같은, 딥 러닝 신경 네트워크들은, 예들 중에서도, 객체/에지 검출, 세그먼트화, 및 분류를 포함한, 이미지 프로세싱을 위해 빈번히 사용된다. 예를 들어, 디스크로부터 이미지들을 프리페치하고 디스크 페치 및 디코드 시간들을 다른 컴퓨팅 스레드들과 오버랩하게 하기 위해 백그라운드 스레드들을 사용하여, 트레이닝 및 추론 둘 다 동안 이미지들이 전형적으로 디스크로부터 판독된다. 그렇지만, 이미지들을 프로세싱할 준비를 하기 위해 디스크로부터 이미지들을 판독하고 이미지들을 압축해제/디코딩하는 데 컴퓨팅 사이클들이 여전히 낭비될 수 있으며, 따라서 이미지 프로세싱 시스템의 전체적인 처리율(예를 들어, 이미지 수/초)을 감소시킬 수 있다.
더욱이, 전통적인 손실 이미지 포맷들(예를 들어, JPEG)은 인간에 의해 지각가능하지 않는 고주파 정보를 폐기함으로써 이미지 데이터를 압축하도록 설계된다. 그렇지만, 폐기된 정보가 인간에게는 무의미할 수 있지만, 그것이 이미지 프로세싱에 사용되는 딥 러닝 신경 네트워크들의 정확성과 성능을 개선시킬 수 있다.
예를 들어, 이미지들은 무손실 방식 또는 손실 방식 중 어느 하나로 압축될 수 있다. 무손실 이미지 압축은 이미지 내의 모든 정보를 보존하는 반면, 손실 압축은 더 나은 압축률들을 달성하기 위해 시지각(visual perception) 및 통계적 속성들을 이용하지만, 일부 데이터가 손실되는 것을 결과한다. JPEG 압축 알고리즘은 웹에서 이미지들에 대해 종종 사용되는 통상적으로 사용되는 손실 알고리즘이다. JPEG 알고리즘은 이산 코사인 변환들(DCT)에 기초하고, 인간의 눈에 지각가능하지 않은 고주파 세부사항들을 폐기하고, 이는 훨씬 더 작은 이미지 파일 크기들을 결과한다. 그렇지만, 정확한 이미지 재생이 요구되는 경우들에서, 또는 이미지가 여러 번 편집될 것일 때, 무손실 압축이 선호된다. 예를 들어, PNG는 비트맵 이미지를 사용하여 무손실 압축을 지원하는 이미지 파일 포맷이다. PNG에서, 이미지들은 라인별로 필터 유형을 사용하여 변환되고, 이어서 DEFLATE 알고리즘을 사용하여 압축된다. 상이한 애플리케이션들 및 사용 사례들에 적합한 유사한 기술들을 배후에 갖는 수많은 다른 이미지 포맷들이 있다. 전통적인 무손실 이미지 포맷(예를 들어, PNG)이 이미지 프로세싱 목적들을 위해 모든 이미지 데이터를 유지하는 데 사용될 수 있지만, 그것은 더 낮은 압축률의 대가로 오는 것이다.
게다가, 전통적인 포맷들(예를 들어, JPEG 및 PNG)을 사용하여 저장되는 이미지들은 임의의 프로세싱이 시작될 수 있기 전에 내부 어레이 포맷으로 변환되어야 한다. 예를 들어, 전통적인 포맷들을 사용하여 저장되는 이미지들에 대해 임의의 연산들이 수행될 수 있기 전에, 전체 이미지 파일이 디스크로부터 판독되고 내부 어레이 포맷으로 디코딩되어야 한다. 그렇지만, 애널리틱스에서, 크기조정 및 크로핑과 같은 연산들은 종종 임의의 종류의 학습 또는 이해가 일어나기 전에 수행되며, 따라서 전통적인 이미지 포맷들을 이미지 프로세싱 및 애널리틱스에 비효율적이게 한다.
그에 따라, 전통적인 이미지 포맷들(예를 들어, JPEG 및 PNG)은 인간 소비를 위해 설계되고, 이들에 대해 연산들을 수행하는 것은 종종 시간이 많이 걸리고 비효율적이다. 더욱이, 손실 이미지 포맷들(예를 들어, JPEG)은 머신 러닝에 유용할 수 있는 정보를 폐기하며, 따라서 이미지 프로세싱에 그다지 적합하지 않다. 더욱이, 기존의 데이터베이스 관리 시스템들이 이미지들을 저장하는 데 사용될 수 있지만, 이들은 이미지 데이터를 위해 설계되어 있지 않으며 따라서 이미지 데이터를 효율적으로 저장하지 않는다.
도 22의 애널리틱 이미지 포맷(2200)은 이미지 프로세싱을 돕고 기존의 이미지 포맷들의 결점들을 완화시키도록 설계된다. 예를 들어, 이미지 포맷(2200)은, 무손실이고 전통적인 이미지 포맷들을 프로세싱하는 데 요구되는 고비용의 디코딩 프로세스를 제거하는, 어레이 기반 데이터 저장 포맷을 사용하여 구현된다. 일부 실시예들에서, 예를 들어, 애널리틱 이미지 포맷(2200)은 TileDB와 같은 어레이 기반 데이터 스토리지 관리자를 사용하여 구현될 수 있다. TileDB는 어레이들을 사용하여 표현되는 큰 볼륨들의 과학 데이터를 효율적으로 관리하도록 설계된 데이터 관리 시스템이다. TileDB는 이미지들에 특정적이지는 않지만, TileDB는 어레이 기반 데이터에 대한 빠른 액세스를 제공하도록 설계되어 있다. 그에 따라, 일부 실시예들에서, 이미지 포맷(2200)은 이미지 프로세싱 목적들을 위해 TileDB의 성능 향상(performance boost)을 달성하도록 TileDB를 사용하여 구현될 수 있다.
일부 실시예들에서, 예를 들어, 애널리틱 이미지 포맷(2200)은 이미지의 픽셀 데이터가 어떻게 어레이 기반 포맷으로(예를 들어, TileDB와 같은 어레이 기반 데이터 스토리지 관리자를 사용하여) 저장되고 액세스되는지를 정의함으로써 구현될 수 있다. 이러한 방식으로, 이미지 포맷(2200)은 큰 이미지들을 프로세싱하는 데 효율성을 가능하게 해주며, 이는 이미지 애널리틱스를 위한 전체 시간을 감소시킨다. 비주얼 이해 알고리즘들이 더 빨라지고 알고리즘들을 수행하기 위한 하드웨어가 더 나아짐에 따라, 이미지들을 검색하고 프로세싱하는 시간이 점점 더 중요해지고 있다. 그렇지만, 애널리틱 이미지 포맷(2200)을 사용함으로써, 이미지들의 저장 및 검색이 비주얼 프로세싱 파이프라인에서 병목으로 되지 않는다.
예를 들어, 애널리틱 이미지 포맷(2200)은 이미지가 무손실 압축된 픽셀 값들의 어레이로서 저장될 수 있게 해준다. 그에 따라, 프로세싱을 위해 이미지 데이터가 필요할 때, 이미지 데이터는, 전통적인 이미지 포맷들에 대해 요구되는 바와 같이, 프로세싱되기 전에 디코딩될 필요가 없다. 이것은 데이터가 검색되고 사용가능하게 되는 속도를 개선시키지만, 여전히 어느 정도의 압축을 제공한다. 이 접근법이 트레이닝 또는 추론 이전에 이미지들이 애널리틱 이미지 포맷(2200)으로 기입될 것을 요구하지만, 부가의 기입 오버헤드는 최소이다.
더욱이, TileDB가 희소 및 조밀 데이터 액세스 둘 다에 대해 많은 어레이 데이터베이스 관리자들보다 우수하기 때문에, 이는 애널리틱 이미지 포맷(2200)을 구현하기 위한 이상적인 선택안이다. 그렇지만, 다른 실시예들에서, 애널리틱 이미지 포맷(2200)은 임의의 다른 유형의 어레이 기반 데이터 관리자 또는 데이터 포맷을 사용하여 구현될 수 있다. TileDB와 같은 빠르고 향상된 어레이 저장 시스템의 사용은 이미지 포맷(2200)이 디스크로부터 이미지들의 느린 판독들을 제거할 수 있게 해주고, 어레이들로의 전통적인 이미지 포맷들의 인-루프 변환(in-loop conversion)을 제거할 수 있게 해준다.
이미지 포맷(2200)은 또한, 이미지 내의 관심 영역들에 액세스하는 것과 같은, 서브어레이 액세스들이 통상적인 애플리케이션들에서 유리하다. 예를 들어, 빠른 서브어레이 액세스들을 가능하게 해줌으로써, 크기조정 및 크로핑과 같은, 이미지 애널리틱스에 필요한 통상적인 동작들의 속도를 개선시키기 위해 TileDB와 같은 어레이 데이터 관리자가 사용될 수 있다.
도 22는 TileDB와 같은 어레이 기반 데이터 관리자를 사용하여 이미지를 애널리틱 이미지 포맷(2200)으로 변환하는 프로세스를 예시한다. 예시된 예에서, 원래의 이미지가 먼저 수신되고(2202), 이어서 최적의 타일 크기를 사용하여 복수의 타일들(2204)로 분할되며, 타일들은 이어서 어레이 기반 스토리지 포맷을 사용하여 타일별로 압축되고 메모리에 기입된다(2206).
일부 실시예들에서, 애널리틱 동작들을 위한 최적의 타일 크기는 각각의 이미지에 대해 동적으로 결정될 수 있다. 예를 들어, 특정의 이미지에 대한 최적의 타일 크기를 결정하기 위해, 이미지에 대한 이상적인 타일 크기 및 압축을 결정하기 위해 상이한 타일 크기들 및 압축 알고리즘들을 사용하여 그 이미지의 랜덤한 부분이 선택되고 이어서 프로세싱될 수 있다. 더욱이, 데이터가 실제로 필요할 때까지 이미지 프로세싱 동작들이 종종 연기되기 때문에, 성능에 영향을 주지 않으면서 실험을 수행하는 데 이용가능한 시간 기간이 있다.
선택된 타일 크기의 타일들에 완벽하게 적합하지는 않는 이미지는, 도 22에 묘사된 바와 같이, 빈 문자들로 패딩되는 부분적으로 빈 타일들을 가질 것이다. 이러한 방식으로, 이미지의 원래의 크기는 메타데이터(예를 들어, 높이, 폭, 및 채널들의 개수)로서 저장될 수 있고, 이미지가 후속하여 스토리지로부터 판독될 때, 빈 문자들을 판독하는 것 또는 패딩을 피하도록 이미지의 실제 치수들을 결정하기 위해 메타데이터가 체크될 수 있다.
고해상도 이미지들의 경우, 이미지 포맷(2200)은 판독 및 기입과 같은 통상적인 동작들의 속도는 물론, 크로핑 및 크기조정과 같은, 이미지 애널리틱스에 사용되는 동작들의 속도를 개선시킨다. 예를 들어, 이미지 포맷(2200)을 사용하여 이미지들을 저장하는 것은 판독 성능을 개선시키는데, 그 이유는 이미지들이 압축되지만 인코딩되지 않으며, 따라서 이미지들이 파일 시스템으로부터 판독될 때 디코딩될 필요가 없기 때문이다. 그에 부가하여, 이미지 포맷(2200)은 이미지 픽셀들의 서브어레이들에 대한 빠른 액세스를 가능하게 해주어, 전체 이미지를 판독하고 이어서 이를 적절한 크기로 크로핑하는 것보다는 크로핑을 특정 서브어레이를 판독하는 간단한 일로 만들어준다.
예를 들어, 도 23은 도 22로부터의 애널리틱 이미지 포맷(2200)의 성능을, 전통적인 무손실 이미지 포맷인, PNG 이미지 포맷과 비교하는 그래프(2300)를 예시한다. 도 23에 도시된 바와 같이, 애널리틱 이미지 포맷은 기입, 판독, 크로핑, 및 크기조정에 대해 PNG보다 나은 성능을 제공한다. 애널리틱 이미지 포맷이, 전체 이미지 파일을 판독하고 이어서 원하는 크기로 크로핑하는 것보다는, 파일로부터 관련 정보만이 판독될 수 있게 해주기 때문에, 크로핑에서 가장 큰 개선이 보인다. 그에 따라, 공통 데이터 액세스 및 애널리틱 동작들에 대한 성능 개선은 애널리틱 이미지 포맷(2200)이 이미지 프로세싱 목적들에 매우 유리하다는 것을 입증한다.
도 50은 전통적인 이미지 포맷들과 애널리틱 이미지 포맷들에 대한 예시적인 기입 프로세싱 흐름(5000)을 예시한다. 예시된 프로세싱 흐름(5000)에서, 예를 들어, 원시 픽셀 데이터(5002)는 전통적인 이미지 포맷 또는 애널리틱 이미지 포맷 중 어느 하나를 사용하여 디스크(5010)에 기입될 수 있다. 프로세싱 흐름(5000)의 상부 경로는 전통적인 이미지 포맷들(예를 들어, PNG)을 기입하기 위한 흐름을 예시하는 반면, 하부 경로는 애널리틱 이미지 포맷들을 기입하기 위한 흐름을 예시한다.
전통적인 이미지 포맷들과 관련하여, 예를 들어, 원시 픽셀 데이터(5002)는 인코딩되고(5004), 압축되며(5006), 이어서 저장된다(5010). 그렇지만, 애널리틱 이미지 포맷들과 관련하여, 원시 픽셀 데이터(5002)는 압축되고(5008) 이어서 저장되지만(5010), 인코딩 단계가 생략된다. 결과적인 애널리틱 이미지 포맷은 디스크 상에서 더 큰 파일 크기를 결과할 수 있지만, 데이터 액세스 동작들(예를 들어, 기입) 및 다른 이미지 동작들의 레이턴시는 감소될 수 있다.
더욱이, 전통적인 이미지 포맷들과 애널리틱 이미지 포맷들에 대한 판독 프로세싱 흐름은 기입 프로세싱 흐름(5000)의 역으로서 구현될 수 있다. 예를 들어, 전통적인 이미지 포맷들과 관련하여, 인코딩된/압축된 데이터가 디스크로부터 판독되고, 압축해제되며, 이어서 원래의 이미지로 디코딩된다. 애널리틱 이미지 포맷들과 관련하여, 압축된 데이터가 디스크로부터 판독되고 이어서 원래의 이미지로 압축해제되지만, 기입 프로세싱 흐름(5000) 동안 인코딩 단계가 생략되었기 때문에 디코딩 단계는 생략된다.
표 1은 예시적인 애널리틱 이미지 포맷 스키마를 예시한다. 일부 실시예들에서, 예를 들어, 표 1의 애널리틱 이미지 포맷 스키마는 이미지들을 조밀 어레이들로서 저장하기 위해 어레이 기반 데이터베이스 관리자(예를 들어, TileDB)를 사용하여 구현될 수 있다.
Figure pct00009
표 1의 스키마는 이미지 데이터를 배열하는 데 사용될 수 있는 어레이에 관한 파라미터들을 지정한다. 더욱이, 애널리틱 이미지 포맷의 일부 파라미터들은 고정된 반면, 다른 파라미터들은 이미지별로 결정된다. 예를 들어, 이미지들은 2개의 차원, 높이와 폭만을 가지며, 따라서 차원들의 개수는 물론 차원들의 이름들을 고정시킨다. 어트리뷰트들의 개수는 1로 설정되며, 이는 각각의 셀이 대응하는 픽셀에 대한 청색, 녹색, 및 적색(BGR) 값들을 보유한다는 것을 의미한다. 픽셀이 3개의 값 전부에 의해 정의되기 때문에, 3개의 값 전부는 일반적으로 함께 판독된다. 그렇지만, 다른 실시예들에서, 컬러 값들은 별도로 저장될 수 있다. 타일내(intra-tile) 및 어레이-레벨 타일 순서는 행 우선(row major)으로 고정된다. 행 우선 순서는 데이터가 타일 내에서 행 단위로 왼쪽으로부터 오른쪽으로 기입 및 판독되고, 타일들이 동일한 방식으로 기입 및 판독된다는 것을 의미한다. 이 정보는 어레이 데이터베이스가 서브어레이 판독들을 효율적으로 수행할 수 있게 해준다.
어레이의 차원들 및 도메인은 원래의 이미지의 해상도에 의존하며 따라서 이미지별로 동적으로 계산된다. 이미지들이 하나의 차원 또는 양쪽 차원들에서 나누어 떨어지는(evenly divisible) 개수의 픽셀들을 갖지 않기 때문에, 이것은 때때로 어레이의 차원들이 이미지의 원래의 해상도와 매칭하지 않는 것을 결과한다. 이것은 표 1에 반영되어 있으며, 여기서 어레이 높이는 이미지 높이보다 1 픽셀 더 크다. 이미지 치수와 어레이 도메인 사이의 차이를 보충하기 위해, 이미지가 빈 문자들로 패딩된다. 이것의 예는 도 22에서 볼 수 있으며, 여기서 특정 타일들 내의 공백은 빈 문자들에 대응한다. 실제 어레이에서, 어레이 도메인의 크기는 필요할 때 단일 픽셀만큼 증가된다. 이미지의 원래의 크기(높이, 폭, 및 채널들의 개수)는 디폴트로 메타데이터로서 저장된다. 애널리틱 포맷으로 된 이미지가 판독될 때, 이미지의 치수들을 결정하기 위해 메타데이터가 먼저 판독되고, 따라서 빈 문자들을 판독하는 일을 피한다.
타일 익스텐트들(tile extents)은 어레이 차원들에 의존하고 일단 어레이 차원들이 알려지면 계산된다. 모든 타일들은 동일한 높이와 폭을 갖는다. 타일들의 최적의 개수는 이미지 콘텐츠 및 해상도에 기초하여 달라질 수 있고, 따라서 일부 실시예들에서, 타일들의 최적의 개수는 이미지별로 결정될 수 있다. 예를 들어, 최상의 타일 크기를 결정하기 위해, 이미지의 일 부분이 그 이미지에 대한 최상의 조합을 결정하기 위해 상이한 타일 크기들 및 압축 알고리즘들을 사용하여 랜덤하게 선택되고 테스트될 수 있다. 데이터가 실제로 필요할 때까지 모든 동작들이 연기되기 때문에, 성능에 영향을 미치지 않는 실험을 수행할 시간 기간이 있다. 그렇지만, 다른 실시예들에서, 차원당 미리 정의된 최소 개수의 타일들(예를 들어, 차원당 4개의 타일)이 타일 높이 및 폭을 결정하기 위한 기초로서 사용될 수 있다.
애널리틱 이미지 데이터를 압축하는 데 사용되는 압축 알고리즘은 고정된 디폴트(예를 들어, LZ4 압축 알고리즘)를 갖지만, 다른 압축 알고리즘들이 수동으로 설정될 수 있다.
도 51은 전통적인 이미지 포맷들과 애널리틱 이미지 포맷들에 대한 비주얼 컴퓨팅 라이브러리(VCL)(5100)의 예시적인 실시예를 예시한다. 예를 들어, VCL(5100)은 사용자가 애널리틱 이미지 포맷은 물론 전통적인 이미지 포맷들과 상호작용할 수 있는 인터페이스를 제공한다.
사용자가 VCL(5100)을 사용하여 애널리틱 이미지를 생성할 때, 애널리틱 이미지 스키마는 표 1에서 위에서 설명된 파라미터들을 사용하여 자동으로 설정된다. VCL(5100)은 이어서 애널리틱 이미지에 대한 인터페이스를 제공하기 위해 특수 변환 동작들과 조합된 TileDB(5102)(예를 들어, 예시된 실시예에서 사용되는 어레이 데이터베이스 관리자)의 함수 호출들로 추상화 계층을 생성한다. VCL(5100)은 또한 추상화 계층을 OpenCV(5104)로 확장하여, PNG 및 JPEG 이미지 포맷들에 대한 지원을 제공한다. VCL(5100)은 OpenCV(5104)를 사용하여 PNG 포맷 또는 JPEG 포맷 중 어느 하나로 저장되는 이미지들에 대해 I/O 및 변환 동작들 둘 다를 수행한다. 애널리틱 포맷으로 저장되는 이미지들의 경우, VCL(5100)은 변환 동작들을 핸들링하고 I/O 동작들에 대해 TileDB(5102)를 사용한다.
초기에 이미지를 애널리틱 포맷으로 저장하기 위해, 이미지의 원시 픽셀 데이터는 어떤 방식으로(예를 들어, 디스크 상에 저장되는 PNG 또는 JPEG 파일에 대한 경로, OpenCV 행렬, 인코딩된 픽셀 데이터의 버퍼, 원시 픽셀 데이터의 버퍼 등으로서) VCL(5100)에 전달된다. 이 데이터는 애널리틱 포맷으로 기입하기 위해 원시 픽셀 버퍼로 변환된다. 이미지들에 대한 TileDB 어레이 스키마가 (예를 들어, 표 1의 파라미터들을 사용하여) 이 시점에서 이미 설정되어 있기 때문에, TileDB 함수들이 데이터를 디스크에 기입하는 데 사용될 수 있다.
애널리틱 포맷으로 된 이미지를 판독하는 것은 원래의 이미지 해상도를 결정하기 위해 메타데이터가 먼저 판독될 것을 요구한다. 이것은 이미지 데이터만이 판독되고 빈 문자들이 무시되도록 보장한다. 원시 애널리틱 포맷 또는 TileDB 데이터는 버퍼 내로 판독되어, (예를 들어, 도 52에 예시된 바와 같이) "타일 순서"라고 지칭되는, 데이터가 기입되었던 순서로 데이터를 유지한다. 이러한 이유는 데이터가 사용자에게 반환될 필요가 없는 경우(예를 들어, 사용자가 데이터를 조작하고 이를 또다시 기입하는 것만을 원하는 경우) 타일 순서 버퍼를 사용하는 것이 더 빠르기 때문이다. 그렇지만, 데이터가 사용자에게 반환되어야 하는 경우, 버퍼는 이미지 순서로 재정렬되며, 이는 (예를 들어,도 52에 예시된 바와 같이) 이미지의 각각의 행을 순차적으로 갖는 버퍼를 결과한다. 이미지 순서는, 예를 들어, 전형적으로 OpenCV(5104)와 같은 다른 프로그램들에 의해 예상된다.
이미지 프로세싱에서 다른 빈번히 사용되는 연산인 크로핑은 프로세싱을 위해 이미지 내의 관심 영역을 검색하는 데 사용된다. (전통적인 이미지 포맷들에 대해 요구되는 바와 같이) 전체 이미지를 판독하고 이어서 서브영역을 선택하는 것보다는, 애널리틱 또는 TileDB 크로핑 함수는 애널리틱 이미지 데이터의 서브어레이를 지정하기 위해 크로핑 파라미터들을 사용한다. 서브어레이는 그러면 판독되는 이미지의 유일한 부분이다.
이미지 프로세싱에서 다른 빈번히 사용되는 연산인 크기조정은 이미지의 치수들을 (예를 들어, 더 작은 크기 또는 더 큰 크기 중 어느 하나로) 크기조정하는 데 사용된다. TileDB 크기조정은 이미지가 판독된 후에 그러나 데이터가 여전히 타일 순서로 있는 동안 발생한다. VCL(5100)은, OpenCV 디폴트에 따라, 이중선형 보간을 사용하는 TileDB에 대한 한 버전의 크기조정을 구현한다. 예를 들어, 선형 보간에서, 2개의 지점에 기초하여 새로운 값이 계산되고; 이중선형 보간은 2개의 상이한 방향에서 이것을 행하고 이어서 결과들의 선형 보간을 취한다. 이 지점들은 원래의 이미지에서 (행, 열)에 의해 식별된다. 데이터가 타일 순서로 되어 있으면, 버퍼에서 그 지점의 값을 찾기 위해 각각의 지점이 어느 타일의 일부인지를 식별하는 것이 필요하다. 결과적인 크기조정된 이미지 버퍼가 이미지 순서로 되어 있지만, 이를 타일 순서로 유지하기 위해 다른 접근법들이 사용될 수 있다.
압축/압축 학습
효율적인 압축 알고리즘들 및 비주얼 데이터를 저장하고 프로세싱하기 위한 기술들을 사용하여 대규모 비주얼 프로세싱 시스템들의 성능이 개선될 수 있다. 그렇지만, 기존의 비주얼 프로세싱 솔루션들의 압축 접근법들은 다양한 결점들을 겪고 있다. 예를 들어, 기존의 솔루션들은 (예를 들어, 딥 러닝 신경 네트워크들을 사용하여) 임의의 프로세싱이 수행될 수 있기 전에 비주얼 데이터가 완전히 압축해제될 것을 요구한다. 더욱이, 기존의 솔루션들은 전형적으로 이미지들을 개별적으로 압축하고 저장하며, 따라서 중복 비주얼 데이터를 갖는 유사한 또는 관련된 이미지들의 컬렉션들의 잠재적 압축 이점들을 활용하지 못한다.
그에 따라, 본 개시내용은 비주얼 데이터를 더 효율적으로 압축하고 프로세싱하기 위한 다양한 실시예들을 제시한다. 일부 실시예들에서, 예를 들어, 신경 네트워크들은 압축된 비주얼 데이터에 대해 직접 동작하도록 설계될 수 있으며, 따라서 비주얼 데이터가 프로세싱될 수 있기 전에 비주얼 데이터를 압축해제할 필요성을 없애줄 수 있다. 더욱이, 컨텍스트 인식 압축 기술들은 비주얼 데이터 및/또는 비주얼 메타데이터를 더 효율적으로 압축하는 데 사용될 수 있다. 예를 들어, 시간상 근접하여 촬영된, 동일한 위치에서 촬영된, 및/또는 동일한 객체의 이미지들의 그룹과 같은, 중복 비주얼 데이터의 별개의 인스턴스들을 더 효율적으로 압축하기 위해 컨텍스트 인식 압축이 사용될 수 있다. 유사하게, (예를 들어, 컨텍스트 인식 무손실 압축 코덱을 사용하여) 비주얼 메타데이터를 더 효율적으로 압축하기 위해 컨텍스트 인식 압축이 사용될 수 있다. 일부 실시예들에서, 예를 들어, 비주얼 메타데이터를 분류하도록 컨볼루션 신경 네트워크(CNN)를 사전 트레이닝시키는 것, 비주얼 메타데이터의 긴 스트링들을 더 짧은 심벌들(예를 들어, 미리 정의된 인간 코드들)로 대체하는 것, 비주얼 메타데이터에 대해 다중 스케일 중복제거를 수행하는 것, 및 마지막으로 압축 알고리즘(예를 들어, LZ77 무손실 압축 알고리즘 또는 다른 유사한 대안)을 사용하여 결과적인 비주얼 메타데이터를 압축하는 것에 의해 비주얼 메타데이터가 압축될 수 있다.
도 24a 내지 도 24c 및 도 89는 다중 도메인 캐스케이드 컨볼루션 신경 네트워크(CNN)의 예시적인 실시예들을 예시한다. 예를 들어, 분산 비주얼 애널리틱스 시스템들에서, 이미지 및 비디오는 종종 (예를 들어, 픽셀 도메인으로부터 압축 도메인으로의) 전송 이전에 압축되고, 후속하여 (예를 들어, 다시 픽셀 도메인으로의) 전송 이후, 신경 네트워크들을 사용하는 딥 러닝과 같은, 임의의 프로세싱이 수행될 수 있기 전에 압축해제된다. 예로서, 에지 디바이스들에 의해 캡처되는 이미지 및 비디오는 압축되어 클라우드로 전송될 수 있고, 이어서 임의의 추가 프로세싱이 시작되기 전에 클라우드에 의해 압축해제될 수 있다.
이 접근법은 다양한 단점들을 겪는다. 첫째, 비주얼 데이터가 프로세싱될 수 있기 전에 비주얼 데이터를 완전히 압축해제하기 위해 여분의 계산이 요구되며, 따라서 (예를 들어, 일부 경우들에서 최대 100%만큼) 전체 프로세싱 시간을 상당히 증가시킨다. 예를 들어, 프로세싱이 수행될 수 있기 전에, 비주얼 데이터는 하드웨어 또는 소프트웨어 디코딩을 사용하여 다시 픽셀 도메인으로 완전히 압축해제되어야 한다. 그에 따라, 모든 프로세서들이 내장된 비디오 압축해제 가속기들을 포함하지는 않는 경우에, 압축해제는 비디오 애널리틱스를 위한 부가 비용을 발생시킬 수 있다.
다음으로, 압축해제된 데이터를 개별적인 프로세싱 컴포넌트들 사이에서(예를 들어, 압축해제 엔진과 분석 엔진 사이에서) 전송하기 위해 여분의 대역폭이 요구되며, 따라서 (예를 들어, 일부 경우들에서 최대 20배만큼) 대역폭 사용량을 상당히 증가시킨다.
더욱이, 프로세싱 이전에 비주얼 데이터를 완전히 압축해제해야 하는 요구사항은 에지-투-클라우드 의미에서 완전히 분산된 신경 네트워크를 활용할 수 있는 능력을 배제한다. 예를 들어, 픽셀 도메인에서 배타적으로 비주얼 데이터를 프로세싱하기 위해 분산 애널리틱스를 사용하는 것은 비주얼 데이터가 다수의 스케일들에서 분석될 것을 요구한다.
게다가, 에지 디바이스들에 의해 캡처되는 비주얼 데이터에 대해 프로세싱을 수행하기 위해 클라우드에 의존하는 것은 종종 전송 대역폭의 낭비를 결과하는데, 그 이유는 에지로부터 클라우드로 전송되는 많은 이미지들 또는 비디오들이 임의의 관심 객체들 또는 관심 특징들을 포함하지 않을 수 있기 때문이다. 많은 경우들에서, 예를 들어, 더 낮은 복잡성의 애널리틱스 알고리즘들을 사용하여 네트워크 에지에 더 가까이에서(예를 들어, 비주얼 데이터를 캡처하는 센서들 인근에서) 객체 검출 및 분류를 수행하는 것이 가능할 수 있어, 사소한 또는 중요하지 않은 데이터의 전송 비용을 잠재적으로 절감할 수 있다.
그에 따라, 도 24a 내지 도 24c는 압축 도메인 및 픽셀 도메인에서 비주얼 데이터를 프로세싱하여, 따라서 비주얼 데이터가 프로세싱될 수 있기 전에 비주얼 데이터를 압축해제해야 하는 요구사항을 없애주는 데 사용될 수 있는 다중 도메인 캐스케이드 CNN(2400)의 예시적인 실시예를 예시한다. 이러한 방식으로, 다중 도메인 캐스케이드 CNN(2400)은 압축 도메인 데이터를 입력으로서 사용하여 비주얼 포그 시스템에서 분산 비주얼 애널리틱스를 수행하는 데 사용될 수 있다.
일부 실시예들에서, 예를 들어, 다중 도메인 캐스케이드 CNN(2400)은 다수의 결정 스테이지들을 포함하는 캐스케이디드 CNN일 수 있다. 예를 들어, 제1 또는 초기(early) 결정 스테이지에서, 압축 도메인 비주얼 데이터 또는 특징들(예를 들어, 모션 벡터들)의 서브세트는 초기 결정을 생성하려고 시도하기 위해 사용될 수 있다. 비주얼 데이터가 초기 스테이지에서 검출 또는 분류될 수 없다면, 부가의 압축 도메인 데이터(예를 들어, 모션 예측 잔차들)가 후속 또는 후기(late) 결정 스테이지에 대한 입력으로서 제공될 수 있다. 마지막으로, 개선된 정확성을 위해 그리고/또는 후기 결정 스테이지가 성공하지 못한 경우에, 비주얼 데이터는 완전히 압축해제될 수 있고 최종 결정 스테이지는 압축해제된 비주얼 데이터를 사용하여 수행될 수 있다.
예시된 실시예에서, 예를 들어, CNN(2400)은 (도 24a에 예시된) 초기 결정 스테이지, (도 24b에 예시된) 후기 결정 스테이지, 및 (도 24c에 예시된) 최종 결정 스테이지를 포함한다. 더욱이, CNN(2400)은 압축된 비주얼 데이터(2402)를 입력(예를 들어, H.264와 같은 모션 보상 예측 코딩 스킴으로 압축되는 비디오 시퀀스 데이터)으로서 프로세싱하도록 설계된다.
일부 실시예들에서, 예를 들어, CNN(2400)에 대한 입력으로서 제공되는 압축된 비주얼 데이터(2402)는 먼저 상이한 구문 요소들(예를 들어, 모션 벡터들, 매크로블록(MB) 코딩 모드들, 양자화된 예측 잔차들)를 분리 및 추출하기 위해 부분적으로 디코딩될 수 있으며, 따라서 부분 압축 데이터(2404)의 서브세트를 생성할 수 있다.
도 24a에 도시된 바와 같이, 초기 결정 스테이지에서, 부분 압축 데이터(2404)(예를 들어, 모션 벡터들)는 초기 결정(2406)을 식별하려고 시도하기 위해 제1 스테이지 CNN(2405a)에 대한 입력으로서 제공된다. 일부 실시예들에서, 초기 결정이 이루어질 수 있으면 CNN 프로세싱이 종료될 수 있다. 예를 들어, 일부 실시예들에서, 초기 결정 스테이지는 비주얼 데이터를 캡처했던 센서 인근의 포그 또는 에지 노드에 의해 수행될 수 있다. 그에 따라, 초기 결정이 이루어질 수 있다면, 후속 프로세싱 스테이지를 위해 부가의 비주얼 데이터를 (예를 들어, 클라우드 내의) 다른 노드로 전송하는 것이 불필요할 수 있고, 따라서 그렇지 않았으면 추후 스테이지를 위해 요구될 대역폭 및/또는 자원들(예를 들어, 에너지)을 절감할 수 있다. 예를 들어, 목표가 교통 카메라들을 사용하여 움직이는 보행자들을 검출하는 것이라고 가정하면, 움직임이 검출되지 않으면, 움직이는 객체들이 없을 가능성이 있다. 그에 따라, 초기 결정이 이루어질 수 있고, 비주얼 데이터의 임의의 추가 전송 또는 프로세싱이 중단될 수 있다. 그렇지만, 다른 실시예들에서, 초기 결정이 이루어질 수 있더라도 CNN(2400)의 후속 CNN 프로세싱 스테이지들이 여전히 수행될 수 있다. 더욱이, 제1 스테이지 CNN(2405a)의 복잡성은 상이한 사용 사례들, 자원 이용가능성 등에 기초하여 달라질 수 있다.
초기 결정 스테이지가 제1 스테이지 CNN(2405a)을 사용하여 부분 압축 데이터(2404)를 검출하거나 분류할 수 없는 경우, CNN(2400)은, 도 24b에 도시된 바와 같이, 후기 결정 스테이지로 진행할 수 있다. 도 24b의 후기 결정 스테이지에서, 예를 들어, 부가의 압축 데이터(2410)(예를 들어, 모션 예측 잔차들)가 후기 결정(2408)을 결정하려고 시도하기 위해 제2 스테이지 CNN(2405b)을 사용하여 평가된다.
마지막으로, 개선된 정확성을 위해 그리고/또는 후기 결정 스테이지가 성공하지 못한 경우에(예를 들어, 후기 결정 스테이지가 제2 스테이지 CNN(2405b)을 사용하여 부가의 압축 데이터(2410)를 검출 또는 분류할 수 없는 경우에), CNN(2400)은, 도 24c에 도시된 바와 같이, 최종 결정 스테이지로 진행할 수 있다. 도 24c의 최종 결정 스테이지에서, 예를 들어, 압축된 비주얼 데이터(2402)는 압축해제 엔진(2412)을 사용하여 완전히 압축해제될 수 있고, 압축해제된 비주얼 데이터(2414)(예를 들어, 픽셀 도메인 데이터)는 이어서 최종 결정(2416)을 결정하기 위해 최종 스테이지 CNN(2405c)을 사용하여 평가될 수 있다.
그에 따라, 다중 도메인 캐스케이드 CNN(2400)의 집합적 스테이지들이 도 24c에 묘사되어 있으며, 여기서 초기 스테이지는 압축 도메인 데이터의 초기 서브세트에 기초하여 초기 결정을 생성하는 데 사용되고, 추후 스테이지들은 부가의 압축 도메인 데이터 및 궁극적으로 픽셀 도메인 데이터에 기초하여 개선된(refined) 또는 최종 결정들을 생성하는 데 사용된다.
다중 도메인 캐스케이드 CNN(2400)의 설명된 실시예들은 수많은 장점들을 제공한다. 먼저, 비주얼 데이터(예를 들어, 이미지들 또는 비디오)는 그의 콘텐츠가 딥 러닝 신경 네트워크들을 사용하여 분석될 수 있기 전에 완전히 압축해제될 필요가 없으며, 따라서 비주얼 데이터를 디코딩 또는 압축해제하는 데 전형적으로 요구되는 메모리 사용량 및 계산을 감소시킨다. 다음으로, CNN(2400)의 캐스케이딩 접근법은, 예컨대, 에지 또는 포그 노드가 초기 결정에 도달할 수 있을 때, 특정 압축된 데이터를 클라우드로 전송할 필요가 없게 하며, 따라서 대역폭 사용량을 개선시킨다. 마지막으로, 전체적인 분석의 대부분이 종종 초기 결정 스테이지에서 발생하는데, 이는 전형적으로 단순화된 CNN 또는 머신 러닝 모델을 수반하며, 따라서 전체적인 계산 복잡성을 감소시킨다.
도 89는 다중 도메인 캐스케이드 컨볼루션 신경 네트워크(CNN)의 예시적인 실시예에 대한 플로차트(8900)를 예시한다. 다양한 실시예들에서, 예를 들어, 플로차트(8900)는 본 개시내용 전반에 걸쳐 설명된 비주얼 컴퓨팅 아키텍처 및 기능성을 사용하여 구현될 수 있다.
예시된 예에서, 캐스케이디드 CNN은 각각의 스테이지에서 상이한 CNN을 사용하여 다수의 스테이지들에서 에지 디바이스들(예를 들어, 센서들 및/또는 카메라들)에 의해 캡처되는 비주얼 데이터를 프로세싱하도록 설계되어 있다. 예를 들어, 초기 스테이지들은 주로 압축 도메인 데이터를 프로세싱하도록 설계된 CNN들을 사용할 수 있는 반면, 추후 스테이지들은 주로 픽셀 도메인 데이터를 프로세싱하도록 설계된 CNN들을 사용할 수 있다.
더욱이, 일부 실시예들에서, 각자의 스테이지들은 (예를 들어, 비주얼 데이터의 소스 인근의) 네트워크 에지와 클라우드 사이에 배포된 상이한 프로세싱 디바이스들에 의해 수행될 수 있다. 예를 들어, 비주얼 데이터가 캡처되고, 압축되며, 에지로부터 클라우드로 전송될 때, 통과 경로(path of traversal)를 따라 있는 각자의 노드들 및/또는 프로세싱 디바이스들은 특정 프로세싱 스테이지(들)를 수행할 수 있다. 일부 실시예들에서, 예를 들어, 네트워크 에지 인근의 프로세싱 디바이스들은 주로 압축 도메인 데이터에 대해 동작하는 CNN들을 사용하여 초기 프로세싱 스테이지들을 수행할 수 있는 반면, 클라우드 내의 그리고/또는 클라우드 인근의 프로세싱 디바이스들은 주로 픽셀 도메인 데이터에 대해 동작하는 CNN들을 사용하여 추후 프로세싱 스테이지들을 수행할 수 있다. 더욱이, (예를 들어, 에지와 클라우드 사이에 있는) 포그 내의 프로세싱 디바이스들은 압축 도메인 데이터, 픽셀 도메인 데이터, 및/또는 이들의 조합에 대해 동작하는 CNN들을 사용하여 중간에 있는 프로세싱 스테이지들을 수행할 수 있다.
이러한 방식으로, 각각의 홉에서 비주얼 데이터를 압축해제할 필요없이, 비주얼 데이터가 에지로부터 클라우드까지의 경로를 따라 있는 각자의 디바이스들 및 노드들을 통과할 때 비주얼 데이터가 분산 방식으로 프로세싱될 수 있다.
예를 들어, 에지 디바이스들(예를 들어, 비주얼 데이터의 소스에 또는 그 인근에 있는 디바이스들)이 전형적으로 자원 제약된 디바이스들이면, 이들은 압축된 비주얼 데이터에 대해 직접 (예를 들어, 더 낮은 복잡성의 알고리즘들을 사용하여) 제한된 초기 프로세싱을 수행하도록 설계될 수 있다.
일부 실시예들에서, 예를 들어, 이러한 "초기 스테이지" 디바이스들은, 모션 벡터들, 예측 잔차들, 변환 계수들, 양자화 파라미터들, 매크로블록(MB) 모드들 등과 같은, 특정 유형들의 압축 도메인 특징들을 프로세싱하도록 트레이닝되는 CNN들을 사용할 수 있다. 모션 벡터들은, 예를 들어, 유사한 콘텐츠를 포함하는 압축된 비디오 프레임들 사이에서 발생하는 모션을 표현하는 데 사용되는 반면, 예측 잔차들은 (예를 들어, 모션 벡터를 적용한 후에) 유사한 비디오 프레임들 사이의 차이 또는 잔차를 표현하는 데 사용된다. 변환 계수들은, 이산 코사인 변환(DCT), 정수 변환, 연속 웨이블릿 변환(CWT), 고속 푸리에 변환(FFT) 등과 같은, 데이터를 압축하는 데 사용되는 특정 유형의 변환의 계수들이다. 양자화 파라미터들은 중요도에 기초하여 비주얼 데이터의 특정 부분들 또는 블록들의 정밀도를 감소시키는 역할을 한다(예를 들어, 배경들과 같은 저주파 블록들은 인간 지각에 영향을 주지 않으면서 더 작은 정밀도로 표현될 수 있다). 매크로블록(MB) 모드들은 비주얼 데이터의 상이한 블록들을 압축하는 데 사용되는 변환들의 유형들(예를 들어, DCT, 정수, CWT, FFT) 및 파라미터들을 지칭한다.
따라서, "초기 스테이지" 디바이스들에 의해 사용되는 CNN들은, 위에서 논의된 것들 중 임의의 것과 같은, 특정 유형들의 압축 도메인 특징들을 분석하도록 트레이닝될 수 있다. 이러한 방식으로, 이러한 "초기 스테이지" 디바이스들은 비주얼 데이터를 압축해제할 필요 없이(예를 들어, 압축된 데이터의 특정 특징들을 사용하여) 어느 정도의 초기 프로세싱을 수행할 수 있다. 더욱이, 일부 실시예들에서는, 압축된 비트 스트림에 포함될 수 있는 특정 유형들의 메타데이터가 "초기 스테이지" 분석에서 또한 사용될 수 있다. 게다가, 일부 실시예들에서, 비주얼 데이터를 최초로 캡처했던 에지 디바이스가 충분한 프로세싱 능력들을 갖는 경우(예를 들어, 스마트-카메라), 그 디바이스는 원시 비주얼 데이터가 전송을 위해 압축되기 전에 원시 비주얼 데이터에 대해 어떤 초기 프로세싱을 수행할 수 있다. 더욱이, 비주얼 데이터가 후속하여 압축되고 후속하는 CNN 프로세싱 스테이지들을 위해 다른 디바이스들로 전송될 때, 초기 프로세싱으로부터 생성되는 메타데이터는 압축된 비주얼 데이터의 일부로서 포함될 수 있다.
더욱이, 이러한 "초기 스테이지" 디바이스들이 초기 프로세싱에 기초하여 비주얼 데이터를 충분히 해석할 수 있다면, 비주얼 데이터의 후속 전송 및/또는 프로세싱이 회피될 수 있다. 예를 들어, 감시 애플리케이션과 관련하여, 초기 스테이지 디바이스가 캡처된 비주얼 데이터 내에 움직임이 없다고 결론지을 수 있다면, 디바이스는 추가 프로세싱이 필요하지 않다고 결론지을 수 있다. 그렇지만, 초기 스테이지 디바이스가 움직임을 검출하거나 임의의 움직임이 있는지를 신뢰성있게 결정할 수 없는 것 중 어느 하나이면, 초기 스테이지 디바이스는 압축된 데이터의 일부 또는 전부를, 상이한 CNN을 사용하여 후속 프로세싱 스테이지를 수행할 수 있는, 네트워크 내의 다음 프로세싱 디바이스 또는 노드로 송신할 수 있다.
이러한 방식으로, 특정의 디바이스가 연관된 프로세싱 스테이지를 완료한 후에, 디바이스는 추가 프로세싱을 위해 특정 데이터를 포워딩할 수 있거나, 또는 디바이스가 확실하게 결정에 도달할 수 있었는지 그리고/또는 비주얼 데이터를 해석할 수 있었는지에 따라 디바이스가 프로세싱을 완전히 종료할 수 있다. 예를 들어, 디바이스가 확실하게 결정에 도달할 수 없는 경우, 디바이스는, 압축된 데이터의 일부 또는 전부, 특정 압축해제된 데이터, 및/또는 현재 또는 이전 프로세싱 스테이지들에서 생성되었던 임의의 관련 메타데이터와 같은, 일부 특정 비주얼 데이터를 다음 디바이스 또는 노드로 포워딩할 수 있다. 일부 경우들에서, 예를 들어, 디바이스가 확실하게 비주얼 데이터를 해석할 수 없을 때에도, 디바이스는 특정 결론들을 도출할 수 있고 그리고/또는, 디바이스가 비주얼 메타데이터로서 표현할 수 있는, 비주얼 데이터와 연관된 특정 정보를 도출할 수 있다. 그에 따라, 도움이 된다면, 이 비주얼 메타데이터는 또한 후속 스테이지들을 수행하는 데 사용되는 프로세싱 디바이스들로 포워딩될 수 있다.
이러한 방식으로, 후속 스테이지들과 연관된 CNN들은 비주얼 데이터가 클라우드 내의 또는 클라우드 인근의 더 정교한 프로세싱 노드들을 통해 흐를 때 점진적으로 더 복잡한 알고리즘들을 사용하여 비주얼 데이터와 연관된 부가의 특징들(예를 들어, 부가의 유형들의 압축 도메인 데이터, 이전 스테이지들 동안 생성되는 비주얼 메타데이터, 및 궁극적으로 원시 압축되지 않은 데이터)을 프로세싱하도록 설계될 수 있다. 궁극적으로, 비주얼 데이터가 클라우드 내의 또는 클라우드 인근의 디바이스(예를 들어, 클라우드 기반 서버)에 도달할 때 이전 스테이지들에서 수행된 프로세싱이 결정적이지 않거나 불완전한 경우, 디바이스는 더 정교하고 계산 집약적인 CNN을 사용하여 원시 비주얼 데이터를 프로세싱하기 위해 비주얼 데이터를 완전히 압축해제할 수 있다.
도 89에 의해 예시된 예에서, 플로차트(8900)는 캐스케이디드 CNN의 예시적인 실시예를 구현한다. 플로차트는 블록(8902)에서 네트워크의 "에지"에 또는 그 인근에 배포될 수 있는, 카메라들 및/또는 다른 유형들의 비전 센서들과 같은, 하나 이상의 센서를 사용하여 비주얼 데이터를 캡처하는 것으로 시작된다.
플로차트는 이어서, 비주얼 데이터가 제1 디바이스에 의해 압축되는, 블록(8904)으로 진행한다. 예를 들어, 제1 디바이스는, 비주얼 데이터를 캡처했던 센서 및/또는 그 센서 인근의 다른 에지 디바이스와 같은, 분산 컴퓨팅 네트워크 내의 복수의 디바이스들 중 하나일 수 있다. 더욱이, 제1 디바이스는 임의의 적합한 압축 기술(들)(예를 들어, H.264)을 사용하여 비주얼 데이터를 압축할 수 있다.
플로차트는 이어서, 압축된 데이터가 제1 디바이스로부터 네트워크 내의 다른 디바이스(예를 들어, 에지 게이트웨이와 같은 인근 에지 디바이스)로 전송되고 후속하여 그에 의해 수신되는, 블록(8906)으로 진행한다.
플로차트는 이어서, 수신된 데이터가 연관된 CNN을 사용하여 프로세싱되는, 블록(8908)으로 진행한다. 예를 들어, 어떤 형태의 압축된 비주얼 데이터를 수신하는 각각의 디바이스는 압축된 데이터에 대해 특정의 프로세싱 스테이지를 수행할 수 있다. 더욱이, 각각의 프로세싱 스테이지는 상이한 유형들의 비주얼 데이터(예를 들어, 압축된 비주얼 데이터, 원시 비주얼 데이터, 및/또는 이 둘의 어떤 조합)를 분석하도록 트레이닝된 상이한 컨볼루션 신경 네트워크(CNN)를 사용하여 수행될 수 있다.
예를 들어, 네트워크 에지에 또는 그 인근에 있는 그리고/또는 포그에 있는 특정 디바이스들은, 예컨대, 특정 유형들의 압축된 데이터 특징들(예를 들어, 모션 벡터들, 예측 잔차들, 변환 계수들, 양자화 파라미터들, 및/또는 매크로블록 코딩 모드들)을 분석함으로써, 압축된 데이터에 대해 직접 동작하도록 설계된 CNN들을 사용할 수 있다. 일부 실시예들에서, 예를 들어, 상이한 에지 디바이스들에 의해 사용되는 CNN들은 상이한 유형들의 압축된 데이터 특징들에 대해 동작하도록 제각기 설계될 수 있다. 더욱이, 일부 실시예들에서는, 상이한 유형들의 압축된 데이터 특징들은 상이한 소스들(예를 들어, 센서들 또는 다른 디바이스들)에 의해 제각기 생성 및/또는 제공될 수 있다.
다른 예로서, 포그 내에 있는(예를 들어, 에지와 클라우드 사이의 어딘가에 있는) 특정 디바이스들은, 이들의 프로세싱 능력들에 따라, 압축된 데이터, 압축되지 않은 데이터, 및/또는 이 둘의 어떤 조합에 대해 동작하도록 설계된 CNN들을 사용할 수 있다. 마지막으로, 클라우드 내의 또는 그 인근의 특정 디바이스들은 부분적으로 압축해제된 데이터 및/또는 완전히 압축해제된 비주얼 데이터에 대해 동작하도록 설계된 CNN들을 사용할 수 있다.
그에 따라, 특정의 디바이스가 압축된 비주얼 데이터를 수신할 때, 디바이스는 그 디바이스와 연관된 현재 CNN을 사용하여 현재 프로세싱 스테이지를 수행할 수 있다.
플로차트는 이어서, 현재 프로세싱 스테이지에 대한 출력이 CNN으로부터 획득되는, 블록(8910)으로 진행한다. 일부 경우들에서, 예를 들어, CNN으로부터의 출력은, 비주얼 데이터가 특정 특징들, 객체들, 액션들, 움직임들, 특성들, 시나리오들, 조건들 등을 포함할 가능성과 같은, 비주얼 데이터와 연관된 특정 정보를 나타낼 수 있다.
플로차트는 이어서 (예를 들어, 현재 및/또는 이전 프로세싱 스테이지들에서 사용되는 CNN(들)로부터의 출력에 기초하여) 비주얼 데이터와 연관된 프로세싱이 완료되었는지를 결정하기 위해 블록(8912)으로 진행한다.
예를 들어, 현재 프로세싱 스테이지에서의 CNN이 필수적인 정보를 도출하고 그리고/또는 특정 프로세싱 결정(들)에 도달하는 목적들을 위해 비주얼 데이터를 충분히 해석할 수 없다면, 비주얼 데이터와 연관된 프로세싱은 불완전할 수 있다. 그에 따라, 플로차트는 다시, 압축된 데이터가 상이한 CNN들을 사용하여 부가의 프로세싱 스테이지들을 수행하기 위해 네트워크 내의 다른 프로세싱 디바이스(들)로 전송되는, 블록(8906)으로 진행한다.
프로세싱이 완료된 것으로 블록(8912)에서 궁극적으로 결정될 때까지, 압축된 비주얼 데이터가 각자의 프로세싱 디바이스들을 거쳐 에지로부터 클라우드로 전송될 때 플로차트가 이러한 방식으로 반복된다. 예를 들어, 현재 프로세싱 스테이지에서의 CNN이 필수적인 정보를 도출하고 그리고/또는 특정 프로세싱 결정(들)에 도달하는 목적들을 위해 비주얼 데이터를 충분히 해석할 수 있다면, 비주얼 데이터와 연관된 프로세싱은 완료될 수 있고, 플로차트는 비주얼 데이터와 연관된 결과를 출력하기 위해 블록(8914)으로 진행할 수 있다. 예를 들어, 결과는 비주얼 데이터와 연관된 프로세싱에 기초하여 도출되었던 특정의 정보 및/또는 결정들을 나타낼 수 있다.
이 시점에서, 플로차트가 완료될 수 있다. 그렇지만, 일부 실시예들에서, 플로차트가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 플로차트는 비주얼 데이터를 캡처하고 프로세싱하는 것을 계속하기 위해 블록(8902)에서 재시작될 수 있다.
도 25 내지 도 31은 원시 비주얼 데이터와 압축된 비주얼 데이터 둘 다를 프로세싱할 수 있는 다중 도메인 컨볼루션 신경 네트워크(CNN)를 구현하기 위한 버터플라이 연산들의 사용을 예시한다.
위에서 논의된 바와 같이, 많은 비주얼 애널리틱스 시스템들은 (예를 들어, 딥 러닝 신경 네트워크들을 사용하여) 임의의 비주얼 프로세싱이 수행될 수 있기 전에 비주얼 데이터가 완전히 압축해제될 것을 요구하는데, 이는, 더 높은 프로세싱 레이턴시, 부가의 전송 대역폭 등을 포함한, 다양한 비효율성들을 겪는 접근법이다. 그에 따라, 본 개시내용은 압축된 비주얼 데이터를 직접 분석할 수 있는 딥 러닝 신경 네트워크의 다양한 실시예들을 제시한다. 특히, 설명된 실시예들은 픽셀 도메인 또는 압축 도메인 중 어느 하나에서 비주얼 데이터 프로세싱을 가능하게 해주기 위해 버터플라이 연산들을 사용하는 다중 도메인 CNN을 제시한다.
예시하기 위해, 기존의 딥 러닝 CNN들(예를 들어, 인셉션(inception) 또는 ResNet CNN 모델들)은 전형적으로 내부 모듈을 여러 번 반복하고, 내부 모듈은 (병목과 유사하게) 종단에서 다수의 컨볼루션 계층들로부터의 결과들 및/또는 원래의 입력을 집계한다. 예를 들어, 도 25a 및 도 25b는 전통적인 27-계층 인셉션 모델 CNN(2500)을 예시하고, 도 26 및 도 27은 인셉션 모델 CNN에 대한 예시적인 내부 모듈들(2600 및 2700)을 예시한다. 특히, 도 26은 차원 감소를 사용하지 않고 구현되는 내부 모듈(2600)을 예시한 반면, 도 27은 차원 감소를 사용하여 구현되는 내부 모듈(2700)을 예시한다. 이러한 CNN 구현들은 픽셀 도메인에서 비주얼 데이터(예를 들어, 원시 또는 압축되지 않은 비주얼 데이터)를 프로세싱하도록 설계된다.
그렇지만, 도 28 및 도 29는 픽셀 도메인 또는 압축 도메인 중 어느 하나에서 다중 도메인 비주얼 데이터 프로세싱을 가능하게 해주기 위해 버터플라이 연산들을 사용하는 예시적인 CNN 내부 모듈들(2800 및 2900)을 예시한다. 버터플라이 연산들은, 예를 들어, 압축 도메인 데이터(예를 들어, DCT 도메인 데이터)를 다시 픽셀 도메인으로 변환할 때 사용될 수 있는 부분 역변환들이다. 그에 따라, 버터플라이 계층들을 CNN에 통합함으로써, CNN은 압축된 비주얼 데이터를 그의 원래의 입력으로서 제공받을 수 있고, 압축된 데이터가 연속적인 CNN 계층들에 의해 프로세싱될 때, 압축된 데이터는 CNN 내의 버터플라이 계층들을 사용하여 적어도 부분적으로 역변환된다.
도 28은 차원 감소를 사용하지 않고 구현되는 내부 CNN 모듈(2800)을 예시한 반면, 도 29는 차원 감소를 사용하여 구현되는 내부 CNN 모듈(2900)을 예시한다. 더욱이, 이러한 예들에 도시된 바와 같이, 부가의 버터플라이 계층들 또는 필터들이 정규 컨볼루션(regular convolution) 계층들에 병렬로 추가된다. 일부 실시예들에서, 예를 들어, 2x2 및/또는 4x4 버터플라이 연산들이 정규 컨볼루션 및 풀링 계층들에 병렬로 추가될 수 있다. 예를 들어, 일부 실시예들에서, 버터플라이 연산들은 도 31a 및 도 31b에 예시된 예시적인 버터플라이 연산과 유사하게 구현될 수 있다.
도 28의 내부 모듈(2800)과 관련하여, 예를 들어, 버터플라이 계층들(2830a, 2830b)은 컨볼루션 계층들(2810a 내지 2810c) 및 풀링 계층들(2820)에 병렬로 추가되고, 버터플라이 계층들(2830)은 수직 N-포인트 버터플라이 연산들(2830a) 및 수평 N-포인트 버터플라이 연산들(2830b)을 포함한다. 예를 들어, 일부 실시예들에서, 버터플라이 연산들은 비주얼 데이터 내의 수직 및 수평 데이터 요소들 둘 다에 대해 수행될 수 있다. 유사하게, 도 29의 내부 모듈(2900)과 관련하여, 버터플라이 계층들(2930a, 2930b)은 컨볼루션 계층들(2910a 내지 2910e) 및 풀링 계층들(2920a, 2920b)에 병렬로 추가되고, 버터플라이 계층들(2930)은 수직 N-포인트 버터플라이 연산들(2930a) 및 수평 N-포인트 버터플라이 연산들(2930b)을 포함한다.
그렇지만, CNN이 완전한 역 DCT를 수행할 필요가 없기 때문에, 이 접근법이 다수의 버터플라이 계층들이 단일 내부 모듈 내에 적층될 것을 요구하지 않는다는 점에 유의한다. 예를 들어, 다수의 컨볼루션 계층들의 목표는 입력 데이터를 추출/완전 연결 계층들(fully connected layers)이 상이한 클러스터들을 쉽게 분리시킬 수 있는 특징 공간으로 변환하는 것이다. 그에 따라, 버터플라이 계층들은 전체 역 DCT(complete inverse DCT)를 수행할 필요가 없고, 그 대신에, 이들은 입력 데이터를 추출하여 특징 공간으로 변환하는 것을 돕도록 간단히 설계될 수 있다. 이러한 방식으로, 조직화된 버터플라이 계층들의 전체(complete) 또는 전체(entire) 스택이 CNN에 포함될 필요는 없다.
더욱이, 각각의 버터플라이의 가중치들이 트레이닝 페이즈 동안 조정될 수 있고, 따라서 버터플라이 계층들을 사용할지 및/또는 이들에 얼마나 의존할지의 결정이 자동으로 조정될 것이다.
도 30은 버터플라이 계층들(3002)과 일반 계층들(normal layers)(3004)이 병렬로보다는 순차적으로 배열된 다중 도메인 CNN(3000)의 대안적인 실시예를 예시한다.
도 31a 및 도 31b는 1차원(1D) N-포인트 버터플라이 연산의 예를 예시한다. 특히, 예시된 예는 4-포인트 버터플라이 연산이며, 이는 버터플라이 연산이 4개의 데이터 포인트(3110a 내지 3110d)의 거리에 걸쳐 수행된다는 것을 의미한다. 그렇지만, 다른 실시예들에서, 버터플라이 연산들은 임의의 개수의 데이터 포인트들에 걸쳐 구현될 수 있다. 더욱이, 일부 실시예들에서는, 데이터 포인트들(3110a 내지 3110d)은, DCT 계수들과 같은, 압축된 픽셀 데이터를 표현할 수 있다.
일부 실시예들에서, 예를 들어, 버터플라이 연산들은, 비주얼 데이터 내의 수평 또는 수직 데이터 요소들과 같은, 비주얼 데이터로부터의 1차원(1D) 요소들의 컬렉션에 대해 순차적으로 수행될 수 있다. 예를 들어, 각각의 버터플라이 연산은 개별적인 가산 및 감산 연산들을 사용하여(예를 들어, 큰 거리에 걸쳐 2개의 포인트의 합과 큰 거리에 걸쳐 2개의 포인트의 차이를 계산함으로써) 2개의 출력 또는 채널을 생성할 수 있다. 예를 들어, 입력의 첫 번째 포인트와 네 번째 포인트가 함께 가산되어 그들의 합계(첫 번째 포인트 + 네 번째 포인트)를 계산할 수 있고, 입력의 첫 번째 포인트와 네 번째 포인트가 또한 감산되어 그들의 차이(첫 번째 포인트 - 네 번째 포인트)를 계산할 수 있다. 롤링 윈도(rolling window)를 사용하여 이러한 방식으로 입력에 대해 부가의 버터플라이 연산들이 순차적으로 수행될 수 있다. 예를 들어, 다음 버터플라이 연산에서, 두 번째 포인트와 다섯 번째 포인트를 사용하여 합과 차이가 계산될 수 있고, 이 프로세스는 입력 내의 모든 요소들이 프로세싱될 때까지 이러한 방식으로 반복될 수 있다.
도 31a 및 도 31b에, 예를 들어, 버터플라이 연산에 대한 가산 및 감산 연산들이 도시되어 있다. 특히, 도 31a는 가산 연산을 예시하고, 도 31b는 감산 연산을 예시한다. 도 31a에서, 예를 들어, 첫 번째 포인트(3110a)와 네 번째 포인트(3110d)는 함께 가산되어 이들의 합을 표현하는 새로운 포인트(3120a)를 계산한다. 유사하게, 도 31b에서, 네 번째 포인트(3110d)는 첫 번째 포인트(3110a)로부터 감산되어 이들의 차이를 표현하는 새로운 포인트(3130d)를 계산한다.
그에 따라, 버터플라이 연산들이 픽셀 도메인과 압축 도메인(예를 들어, DCT 도메인) 둘 다에서 비주얼 데이터의 프로세싱을 가능하게 해주기 위해 이러한 방식으로 CNN에 통합될 수 있으며, 따라서 딥 러닝 신경 네트워크를 사용하여 비주얼 데이터의 콘텐츠를 분석하기 전에 비주얼 데이터를 완전히 압축해제해야 하는 요구사항을 없애줄 수 있다. 예를 들어, CNN을 사용하여 비주얼 데이터를 프로세싱하기 전에 비주얼 데이터를 완전히 압축해제하기 위해 역 DCT 변환을 명시적으로 수행하는 것보다는, CNN이 그 대신에 CNN에 압축해제 기능성을 본질적으로 통합시키기 위해 버터플라이 계층들을 사용하여 구현될 수 있으며, 따라서 CNN이 압축된 데이터를 입력으로서 제공받을 수 있게 해줄 수 있다.
도 32 및 도 33은 압축된 비주얼 데이터를 프로세싱할 수 있는 3차원(3D) CNN(3200)의 예시적인 실시예를 예시한다. 일부 실시예들에서, 예를 들어, 3D CNN(3200)은 본 개시내용 전반에 걸쳐 설명된 압축 기반 CNN 실시예들(예를 들어, 도 24 및 도 28 내지 도 31의 CNN들)의 구현에서 또는 이들과 관련하여 사용될 수 있다.
많은 비주얼 애널리틱스 시스템들은, 딥 러닝 신경 네트워크에 의한 프로세싱과 같은, 임의의 프로세싱이 수행될 수 있기 전에 비주얼 데이터가 압축해제될 것을 요구한다. 예시하기 위해, 도 34는 픽셀 도메인 CNN(3400)의 예를 예시하고, 도 35는 연관된 픽셀 도메인 비주얼 애널리틱스 파이프라인(3500)의 예를 예시한다. 예시된 예에서, 픽셀 도메인 CNN(3400)은 픽셀 또는 이미지 도메인에서의 데이터를 사용하여(예를 들어, 압축해제된 비주얼 데이터를 사용하여) 비주얼 애널리틱스를 위한 객체 검출 및 분류를 수행한다. 예를 들어, CNN의 초기 계층들에 있는 컨볼루션 커널들은 이미지 데이터에 대한 2차원(2D) 컨볼루션들을 구현하며, 이전 계층들로부터의 특징들의 조합들을 순차적으로 추출하기 위해 컨볼루션들, 풀링, 및 ReLU(rectified linear unit) 연산들의 다수의 계층들이 반복된다. 더욱이, CNN(3400)이 픽셀 도메인 데이터에 대해 동작하기 때문에, 압축된 비주얼 데이터가 CNN(3400)에 의해 프로세싱될 수 있기 전에 압축된 비주얼 데이터는 완전히 압축해제되어야 한다. 예를 들어, 도 35의 비주얼 애널리틱스 파이프라인(3500)에 의해 도시된 바와 같이, 원래의 픽셀 도메인 데이터(3502)는 먼저 (예를 들어, 네트워크를 통한 전송 이전에) 비디오 인코더(3510)에 의해 압축되고, 압축된 데이터(3504)는 후속하여 (예를 들어, CNN을 사용하여) 비디오 애널리틱스(3540)를 수행하기 전에 비디오 디코더(3520)에 의해 압축해제된다.
그렇지만, 도 32 및 도 33의 예시된 실시예에서, 3D CNN(3200)은 압축된 비주얼 데이터를 프로세싱 효율을 개선시키도록 설계된 3D 포맷을 사용하여 직접 프로세싱한다. 예를 들어, 입력 이미지는 DCT 도메인으로 변환될 수 있고 DCT 변환 계수들을 상이한 채널들로 분리시키기 위해 3D 포맷으로 리셰이핑될 수 있다. 이러한 방식으로, 리셰이핑된 DCT 변환 데이터는 공간 도메인 계수들과 변환 도메인 계수들 사이의 더 나은 상관을 제공하는 방식으로 배열된다. 리셰이핑된 DCT 변환 데이터는 이어서 (예를 들어, 특징 추출을 수행하기 위해 3D 컨볼루션들을 사용하여) CNN에 의해 직접 프로세싱될 수 있으며, 이는 궁극적으로 CNN이 더 빨리 트레이닝될 수 있게 해준다. 예를 들어, 기존의 접근법들에 의해 요구되는 압축해제 단계를 제거함으로써, 특히 내장된 하드웨어 비디오 압축해제 가속기들을 포함하지 않는 컴퓨팅 환경들에 대해, 프로세싱 효율이 개선된다.
일부 실시예들에서, 예를 들어, 3D CNN(3200)은 3D 행렬을 사용하여 DCT 도메인에서 표현되는 압축된 비주얼 데이터(예를 들어, 비디오 프레임들)에 대해 직접 동작하도록 설계될 수 있다. 예를 들어, 일부 실시예들에서, DCT 블록 인덱스들은 3D 행렬의 x 차원 및 y차원에 의해 표현될 수 있는 반면, DCT 변환 크기 벡터들은 z 차원을 따라 조직화될 수 있다. 이러한 방식으로, 새로운 CNN 아키텍처의 제1 계층에서의 컨볼루션 커널들은 압축된 데이터의 공간 및 주파수 도메인 상관들 및 특징들을 더 잘 캡처하도록 설계된 3D 필터들을 사용하여 구현될 수 있으며, 따라서 DCT 도메인에서의 CNN 동작의 성능을 개선시킨다.
통상적인 비디오 및 이미지 인코딩 스킴들의 대부분은 공간적 픽셀 강도들을 주파수 도메인 표현들로 변환하기 위해 이산 코사인 변환들(DCT)을 사용한다. 예시된 실시예는, 일단 이미지 데이터가 4x4 픽셀 블록들로 분할되고 DCT와 같은 변환을 거치면, 변환된 데이터가 원래의 데이터와 상이한 상관 속성들을 갖는다는 관찰에 기초한다. 예를 들어, DCT 변환과 관련하여, 인접 블록들의 DC 계수들은 종종 강한 상관을 갖는 반면, 인접 블록들의 대응하는 더 높은 주파수의 AC 계수들도 유사하게 상관될 수 있다.
그에 따라, 도 32는 2D 이미지를, DCT 데이터가 CNN에 의해 더 효율적으로 프로세싱될 수 있게 해주는 방식으로 배열되는, DCT 데이터의 3D 행렬로 변환하기 위한 접근법을 예시한다. 예시된 예에서, 크기 NxN의 입력 이미지(참조 번호 3210)는 먼저 4x4 픽셀 블록들(예시적인 참조 번호 3212)로 분해되고, 각각의 4x4 픽셀 블록은 DCT 변환을 거친다. 결과적인 DCT 변환 도메인 데이터(참조 번호 3220)는 이어서 3D 행렬로 저장되며, 여기서 x 차원 및 y 차원은 공간적 블록 인덱스들에 대응하고 z 차원은 벡터당 16개의 계수를 포함하는 DCT 계수들(참조 번호 3222)의 벡터들을 포함한다. 따라서, 결과적인 변환 도메인 데이터(참조 라벨 3220)는 크기 KxKx16의 차원들을 가지며, 여기서 K = N/4이다.
다음으로, 도 33에 도시된 바와 같이, 3D 행렬(참조 라벨 3220)을 사용하여 표현되는 변환 도메인 데이터는 3D 필터들을 사용하는 3D 컨볼루션 커널들의 제1 계층을 포함하는 CNN(참조 라벨 3200)에 입력된다. 이 계층은, 후속 계층들에 대한 입력으로서 사용될 수 있는, 주파수 축(z 차원)에서의 임의의 특정 시그니처들과 함께 x-y 평면에서의 공간적으로 상관된 특징들 둘 다를 추출한다.
예시된 실시예는 압축된 비주얼 데이터를 효율적인 방식으로 직접 프로세싱할 수 있는 능력을 포함하여, 다수의 장점들을 제공하며, 따라서 (예를 들어, 딥 러닝 신경 네트워크를 사용하여) 데이터의 콘텐츠를 분석하기 전에 데이터를 압축해제할 필요성을 없애준다. 이러한 방식으로, 비주얼 애널리틱스의 전체적인 계산 복잡성이 감소될 수 있다. 더욱이, 압축 또는 DCT 도메인 데이터가 양자화되고 따라서 원래의 비주얼 데이터(예를 들어, 비디오 프레임)보다 더 컴팩트한 형태를 사용하여 표현되기 때문에, 전체적인 CNN 복잡성은 종래의 픽셀 도메인 CNN에 비해 추가로 감소될 수 있다. 예를 들어, JPEG 또는 M-JPEG와 같은 특정 압축 포맷들로 압축되는 비주얼 데이터(예를 들어, 이미지들 또는 비디오)와 관련하여, DCT 계수들은 양자화되고, 전형적으로 최고 주파수 성분들은 양자화에 의해 제로 아웃될 수 있다. 따라서, CNN에 의해 프로세싱되는 비-제로 데이터의 총 볼륨은 원래의 이미지 데이터와 비교하여 감소된다. 그에 따라, (예를 들어, DCT 계수 양자화로 인한) 압축된 데이터의 데이터 볼륨 감소에 기초하여, CNN 복잡성이 추가로 감소될 수 있고, 수렴(convergence)의 트레이닝 속도가 개선될 수 있다.
도 90은 다중 도메인 컨볼루션 신경 네트워크(CNN)의 예시적인 실시예에 대한 플로차트(9000)를 예시한다. 다양한 실시예들에서, 예를 들어, 플로차트(9000)는 본 개시내용 전반에 걸쳐 설명된 비주얼 컴퓨팅 아키텍처 및 기능성을 사용하여 구현될 수 있다.
전형적인 CNN은 압축되지 않은 또는 원시 비주얼 데이터에 대해 동작하도록 설계되며, 따라서 임의의 프로세싱이 수행될 수 있기 전에 비주얼 데이터가 완전히 압축해제될 것을 요구한다. 예를 들어, CNN은 다수의 계층들을 가질 수 있고, 각각의 계층은 전형적으로 압축되지 않은 또는 "픽셀 도메인" 비주얼 데이터를 프로세싱하도록 설계된 하나 이상의 필터(예를 들어, 컨볼루션 및 풀링 필터들)를 가질 수 있다. 그렇지만, 예시된 예에서, 다중 도메인 CNN은 압축되지 않은 및 압축된 비주얼 데이터 둘 다를 프로세싱할 수 있다. 예를 들어, 다중 도메인 CNN은, 특정 계층들의 기존의 픽셀 도메인 필터들에 병렬로 추가될 수 있는, 압축된 비주얼 데이터를 프로세싱하도록 설계된 부가의 필터들을 포함한다. 일부 실시예들에서, 예를 들어, 부가의 "압축 도메인" 필터들은 (예를 들어, 도 25 내지 도 35와 관련하여 위에서 설명된 바와 같이) 버터플라이 필터들 또는 3D 컨볼루션 필터들을 사용하여 구현될 수 있다. 게다가, 트레이닝 동안, CNN은, 입력이 압축되지 않았는지 압축되었는지에 따라, 적절한 경우, 각자의 픽셀 도메인 필터들 또는 압축 도메인 필터들에 의존하도록 트레이닝될 수 있다. 예를 들어, 전형적인 CNN들에서와 같이, 각각의 압축 도메인 필터의 가중치들이 트레이닝 페이즈 동안 조정될 수 있고, 이 압축 도메인 필터들을 사용할지 및/또는 이들에 얼마나 의존할지의 결정이 자동으로 조정될 것이다. 이러한 방식으로, CNN은 픽셀 도메인 또는 압축 도메인 중 어느 하나에서 비주얼 데이터를 프로세싱할 수 있다.
일부 실시예들에서, 예를 들어, 압축 도메인 필터들은 (예를 들어, 도 25 내지 도 31과 관련하여 설명된 바와 같이) 버터플라이 필터들을 사용하여 구현될 수 있다. 이 버터플라이 필터들은 기존의 픽셀 도메인 CNN 필터들(예를 들어, 컨볼루션 및 풀링 필터들)에 병렬로 또는 순차적으로(예를 들어, 전형적인 CNN 계층들에 선행하는 하나 이상의 버터플라이 계층을 사용하여) 추가될 수 있다. 이러한 방식으로, 버터플라이 필터들은 비주얼 데이터에 대해 부분 역변환을 수행할 것이며, 따라서 비주얼 데이터(압축되어 있을 때)를 CNN에 의해 프로세싱될 수 있는 특징 공간으로 변환하는 것을 돕는다.
대안적으로 또는 부가적으로, 압축 도메인 필터들은 (예를 들어, 도 32 내지 도 35와 관련하여 설명된 바와 같이) 압축된 비주얼 데이터에 대해 동작하도록 설계된 3D 컨볼루션 필터들을 사용하여 구현될 수 있다. 예를 들어, 관련된 변환 계수들을 동일한 채널로 그룹화하기 위해 2차원(2D) 압축된 비주얼 데이터가 3차원(3D) 표현으로 변환될 수 있다. 이러한 방식으로, 3D 컨볼루션이 이어서 변환된 3D 압축된 데이터에 대해 수행될 수 있으며, 따라서 관련된 변환 계수들이 함께 프로세싱될 수 있게 해줄 수 있다.
도 90에 의해 예시된 예에서, 플로차트(9000)는 설명된 다중 도메인 CNN의 예시적인 실시예를 구현한다. 플로차트는, 카메라들 및/또는 다른 유형들의 비전 센서들과 같은, 하나 이상의 센서를 사용하여 비주얼 표현이 캡처되는, 블록(9002)에서 시작된다. 플로차트는 이어서, 비주얼 표현에 대응하는 비주얼 데이터가 획득되는, 블록(9004)으로 진행한다. 일부 실시예들에서, 예를 들어, 비주얼 데이터는 센서들 인근의 디바이스에 의해 또는 이로부터 그리고/또는 네트워크를 통해 획득될 수 있다. 더욱이, 비주얼 데이터는 압축되어 있지 않거나 또는 압축되어 있는 것 중 어느 하나일 수 있다.
플로차트는 이어서, 비주얼 데이터가 다중 도메인 CNN에 대한 입력으로서 제공되는, 블록(9006)으로 진행하고, 이어서, 입력이 CNN의 제1 계층에 제공되는, 블록(9008)으로 진행한다.
플로차트는 이어서, 입력이 현재 CNN 계층의 픽셀 도메인 및/또는 압축 도메인 필터(들)를 사용하여 프로세싱되는, 블록(9010)으로 진행한다. 픽셀 도메인 필터들은, 예를 들어, 컨볼루션 및 풀링 필터들과 같은, 전형적인 CNN 필터들일 수 있다. 그렇지만, 압축 도메인 필터들은, 버터플라이 필터들 또는 3D 컨볼루션 필터들과 같은, 압축된 비주얼 데이터를 프로세싱하도록 설계된 필터들일 수 있다. 예를 들어, 압축 도메인 필터들은 비주얼 데이터가 압축될 때 전형적으로 상관되는 비주얼 데이터의 비연속적 요소들을 프로세싱하는 데 사용될 수 있다. 더욱이, CNN은 비주얼 데이터가 압축해제될 때 픽셀 도메인 필터들과 연관된 프로세싱에 의존하도록 트레이닝될 수 있고, 비주얼 데이터가 압축될 때 압축 도메인 필터들과 연관된 프로세싱에 의존하도록 추가로 트레이닝될 수 있다.
일부 실시예들에서, 예를 들어, 압축 도메인 필터들은, 각각이 비주얼 데이터와 연관된 부분 역변환을 수행하는 데 사용될 수 있는, 버터플라이 필터들일 수 있다. 예를 들어, 버터플라이 필터는 비주얼 데이터 내의 복수의 요소 쌍들에 대한 합 및 차이를 계산할 수 있다. 각각의 요소 쌍은, 예를 들어, (예를 들어, 수평으로 또는 수직으로) 특정의 거리만큼 떨어져 있는 비주얼 데이터 내의 위치들에 배치될 수 있다.
대안적으로 또는 부가적으로, 압축 도메인 필터들은 3D 컨볼루션 필터들일 수 있다. 3D 컨볼루션 필터는, 예를 들어, 비주얼 데이터의 3차원(3D) 변환에 기초하여 생성되는 3차원(3D) 비주얼 데이터와 연관된 프로세싱을 수행하는 데 사용될 수 있다. 예를 들어, 3D 비주얼 데이터는 비주얼 데이터에 대해 3D 변환을 수행함으로써 생성될 수 있고, 결과적인 3D 비주얼 데이터는 이어서 3D 컨볼루션 필터에 대한 입력으로서 제공될 수 있다.
일부 실시예들에서, 예를 들어, 3D 변환에 사용되는 비주얼 데이터가 압축될 때 특정의 차원 내에서 하나 이상의 인접한 요소 사이에 상관이 있도록 3D 변환은 비주얼 데이터를 3개의 차원으로 재배열한다. 예를 들어, 비주얼 데이터가 압축될 때, 3D 변환은 관련된 또는 상관된 변환 계수들(예를 들어, DCT 계수들)을 동일한 채널로 그룹화할 수 있고, 따라서 그 계수들이 함께 프로세싱될 수 있게 해줄 수 있다.
일부 실시예들에서, 예를 들어, 3D 비주얼 데이터는 먼저 비주얼 데이터를 다수의 블록들로 파티셔닝함으로써 생성될 수 있으며, 여기서 각각의 블록은 비주얼 데이터의 복수의 요소들을 포함한다. 예를 들어, 비주얼 데이터가 압축될 때, 요소들은 변환 계수들(예를 들어, DCT 계수들)에 대응할 수 있다. 블록들은 이어서 3D 비주얼 데이터 내의 제1 차원 및 제2 차원을 따라 배열될 수 있는 반면, 각각의 블록과 연관된 요소들은 3D 비주얼 데이터의 제3 차원을 따라 배열될 수 있다. 이러한 방식으로, 변환에 사용되는 비주얼 데이터가 압축되어 있을 때, 결과적인 3D 비주얼 데이터는 관련된 또는 상관된 변환 계수들(예를 들어, DCT 계수들)을 동일한 채널에 포함하며, 따라서 그 계수들이 함께 프로세싱될 수 있게 해준다.
플로차트는 이어서 CNN에 후속 계층이 있는지를 결정하기 위해 블록(9012)으로 진행한다. 블록(9012)에서의 답변이 예이면, 플로차트는 CNN의 다음 계층에 입력을 제공하기 위해 블록(9014)으로 진행한다. 일부 실시예들에서, 예를 들어, CNN의 현재 계층의 출력은 CNN의 다음 계층에 대한 입력으로서 제공될 수 있다. 블록(9012)에서의 답변이 아니오이면, CNN 프로세싱이 완료되고, 플로차트는 이어서 CNN의 출력에 기초하여 비주얼 데이터를 분류하기 위해 블록(9016)으로 진행한다.
이 시점에서, 플로차트가 완료될 수 있다. 그렇지만, 일부 실시예들에서, 플로차트가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 플로차트는 비주얼 데이터를 캡처하고 프로세싱하는 것을 계속하기 위해 블록(9002)에서 재시작될 수 있다.
도 36 및 도 37은 (예를 들어, 본 개시내용 전반에 걸쳐 설명된 압축 기반 CNN 실시예들을 사용하여) 압축된 비주얼 데이터에 대해 비주얼 애널리틱스를 수행하는 비주얼 애널리틱스 파이프라인들(3600 및 3700)의 예시적인 실시예들을 예시한다. 이 도면들에 의해 도시된 바와 같이, 비주얼 애널리틱스 파이프라인에서의 디코딩 또는 압축해제 단계는 임의적이고 그리고/또는 완전히 생략될 수 있다. 예를 들어, 도 36의 비주얼 애널리틱스 파이프라인(3600)에 의해 도시된 바와 같이, 원래의 픽셀 도메인 데이터(3602)는 먼저 (예를 들어, 네트워크를 통한 전송 이전에) 비디오 인코더(3610)에 의해 압축되고, 압축된 데이터(3604)는 임의로 완전히 또는 부분적으로 압축된 데이터(3606)에 대해 비주얼 애널리틱스(3630)를 수행하기 전에 비디오 디코더(3620)에 의해 부분적으로 압축해제될 수 있다. 유사하게, 도 37의 비주얼 애널리틱스 파이프라인(3700)에 의해 도시된 바와 같이, 원래의 픽셀 도메인 데이터(3702)는 먼저 (예를 들어, 네트워크를 통한 전송 이전에) 비디오 인코더(3710)에 의해 압축되고, 비주얼 애널리틱스(예를 들어, 이미지 분류)(3720)가 이어서 압축된 데이터(3704)에 대해 직접 수행된다.
도 38은, 본 개시내용 전반에 걸쳐 설명된 압축 기반 CNN들과 같은, 압축된 비주얼 데이터(예를 들어, 4x4 변환 DCT 입력들)를 사용하여 트레이닝되는 CNN의 정밀도를 보여주는 성능 그래프(3800)를 예시한다.
도 39는 컨텍스트 인식 이미지 압축의 예시적인 실시예에 대한 플로차트(3900)를 예시한다. 일부 실시예들에서, 플로차트(3900)는 본 개시내용 전반에 걸쳐 설명된 실시예들 및 기능성을 사용하여 구현될 수 있다.
오늘날, 많은 사람들은 자신의 사진들을 저장하거나 백업하기 위해 클라우드에 의존한다. 전형적으로, 사진들은 개별적으로 압축된 파일들 또는 유닛들로서 저장된다. 그렇지만, 현재 컴퓨팅 시대에는, 그 접근법이 종종 비효율적이다. 예를 들어, 사람들은 점점 더 자신의 모바일 디바이스들을 사용하여 사진을 촬영하며, 각각의 새로운 세대의 모바일 디바이스들은 점점 더 많은 메가픽셀들을 지원하는 카메라들로 업데이트되며, 이는 더 많은 저장 공간을 요구하는 더 큰 볼륨들의 사진들을 결과한다. 더욱이, 사람들은 종종 한 번에 동일한 객체 또는 장면의 사진들을 여러 장 캡처하며, 이는 종종, 상당한 중복성과 함께, 그 사진들 사이에 밀접한 시간 상관을 결과한다. 그에 따라, 유사한 사진들에 걸친 중복성으로 인해, 각각의 사진을 개별적으로 압축하고 저장하는 것은 비효율적인 접근법일 수 있다. 예를 들어, 전통적으로, 각각의 사진은, JPEG와 같은, 특정의 이미지 압축 포맷을 사용하여 독립적으로 압축되고 저장된다. 그렇지만, 각각의 사진을 개별적으로 압축함으로써, 현재의 접근법들은 유사한 사진들의 그룹들 사이의 인터-픽처 상관들을 활용하지 못하며, 따라서 사진들을 저장하기 위해 더 많은 저장 공간이 요구된다. 예를 들어, 거의 동일한 두 장의 사진은 여전히 단일 사진의 두 배의 저장소를 요구할 것이다.
그에 따라, 예시된 실시예에서, 유사한 또는 관련된 사진들의 그룹들이 더 효율적으로 압축되고 저장된다. 예를 들어, 사진들과 연관된 컨텍스트 정보가 추출되고 유사한 또는 관련된 사진들을 식별하는 데 사용되며, 유사한 사진들은 이어서 그룹으로서 결합하여 압축된다. 컨텍스트적 정보는, 예를 들어, 시간상 아주 근접하여 및/또는 동일한 위치에서 촬영되었던 단일 사용자로부터의 사진들의 그룹을 식별하는 데 사용될 수 있다. 다른 예로서, 컨텍스트적 정보는 상이한 사용자들에 의해 그러나 동일한 위치에서 촬영된 사진들의 그룹을 식별하는 데 사용될 수 있다. 그에 따라, 식별된 유사한 사진들의 그룹은 인터-포토 상관들(inter-photo correlations)을 활용하고 궁극적으로 사진들을 더 효율적으로 압축하기 위해 비디오 코딩을 사용하여 압축될 수 있다. 이러한 방식으로, 표준 이미지 압축보다는 비디오 압축을 사용하여 관련된 또는 상관된 이미지들을 압축하는 것은 사진들에 대해 요구되는 저장 공간을 상당히 감소시킬 수 있다(예를 들어, 일부 경우들에서 2 내지 5배 더 적은 저장 공간). 그에 따라, 이 접근법은 클라우드에서 스토리지를 절감하거나 감소시키는 데 사용될 수 있다.
플로차트는 블록(3902)에서 먼저 새로운 사진을 획득하는 것으로 시작될 수 있다. 일부 경우들에서, 예를 들어, 새로운 사진은 모바일 디바이스의 카메라에 의해 캡처될 수 있다. 그렇지만, 다른 경우들에서, 임의의 유형의 디바이스 또는 카메라가 사진을 캡처하는 데 사용될 수 있다.
플로차트는 이어서 새로운 사진과 연관된 컨텍스트 정보를 수집하기 위해 블록(3904)으로 진행할 수 있다. 예를 들어, 사진이 (예를 들어, 모바일 디바이스에 의해) 새로 캡처될 때, 타임스탬프, GPS 좌표들, 디바이스 배향 및 모션 상태들 등과 같은, 사진과 연관된 대응하는 컨텍스트 정보가 수집된다.
플로차트는 이어서 새로운 사진에 대한 매칭하는 마스터 사진이 식별될 수 있는지를 결정하기 위해 블록(3906)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 새로운 사진이 기존의 마스터 사진들 중 임의의 것에 밀접하게 상관되는지를 결정하기 위해 새로운 사진의 컨텍스트 정보가 다른 이전에 캡처된 마스터 사진들의 컨텍스트 정보와 비교된다. 예를 들어, 사진이 동일한 위치에서, 특정 양의 시간 내에, 그리고 마스터 사진과 비교하여 전화 움직임이 거의 없이 촬영되면, 새 사진이 마스터 사진과 높은 상관을 가질 가능성이 있다. 게다가, 일부 실시예들에서, 사진 상관을 확인하기 위해 이미지 프로세싱 기술들(예를 들어, 특징 추출/매칭)이 이어서 적용될 수 있다. 일부 실시예들에서, 예를 들어, SIFT(scale-invariant feature transform)는 (예를 들어, 이미지 특징들을 검출, 추출, 및/또는 비교함으로써) 한 쌍의 사진이 충분히 상관되거나 매칭되는지를 결정하는 데 사용될 수 있다. 게다가, 일부 실시예들에서, 이미지 데이터 자체가, 이미지 픽셀들, 이미지 구조들, 추출된 이미지 특징들 등과 같은, 유사한 또는 상관된 사진들을 식별하는 데 사용될 수 있는 컨텍스트 정보로서 취급될 수 있다.
블록(3906)에서 매칭하는 마스터 사진이 식별되면, 플로차트는 매칭하는 마스터 사진을 사용하여 새로운 사진을 인코딩하기 위해 블록(3908)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 비디오 코덱(예를 들어, H.264)은 새로운 사진을 마스터 사진과 연관된 인터-프레임으로서 압축하는 데 사용될 수 있다. 예를 들어, 비디오 코덱들은 전형적으로 인터-프레임 인코딩을 제공하는데, 인터-프레임 인코딩은 사실상 코딩 효율을 개선시키기 위해 유사한 이미지들 사이의 시간적 상관을 활용한다.
일부 실시예들에서, 마스터 사진은 다른 부모 또는 관련된 이미지들을 참조하지 않고 압축되는 임의의 사진을 포함할 수 있는 반면, 슬레이브 사진은 (예를 들어, 비디오 코덱의 인터-프레임 모드를 사용하여) 마스터 또는 부모 이미지를 참조하여 압축되는 임의의 사진을 포함할 수 있다. 그에 따라, 전체 이미지의 디스플레이를 위해 슬레이브 사진이 디코딩될 필요가 있을 때, 연관된 마스터 사진이 신속하게 식별될 수 있도록, 슬레이브 사진은 그의 마스터 사진의 관련 정보를 효율적으로 기록 또는 상관시켜야 한다.
블록(3906)에서 매칭하는 마스터 사진이 식별되지 않으면, 플로차트는 새로운 사진을 그 자체로 인코딩하기 위해 블록(3910)으로 진행할 수 있다. 예를 들어, 새로운 사진이 기존의 마스터 사진들 중 어느 것과도 매칭하지 않을 때, 새로운 사진은 임의의 다른 사진들을 참조하지 않고 인코딩되며, 플로차트는 이어서 새로운 사진을, 새로운 사진이 다른 후속하여 캡처된 사진들을 사용하여 잠재적으로 압축될 수 있게 해주는, 마스터 사진으로 지정하기 위해 블록(3912)으로 진행할 수 있다.
이 시점에서, 플로차트가 완료될 수 있다. 그렇지만, 일부 실시예들에서, 플로차트가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 플로차트는 새로 캡처된 사진들을 획득하고 압축하는 것을 계속하기 위해 블록(3902)에서 재시작될 수 있다.
도 64는 컨텍스트 인식 이미지 압축을 활용하는 이미지 저장 시스템(6400)의 예시적인 실시예를 예시한다. 일부 실시예들에서, 예를 들어, 이미지 저장 시스템(6400)은 도 39의 플로차트(3900)로부터의 컨텍스트 인식 이미지 압축 기능성을 구현하기 위해 사용될 수 있다.
예시된 실시예에서, 이미지 저장 시스템(6400)은, 아래에서 추가로 설명되는 바와 같이, 이미지 저장 디바이스(6410) 및 복수의 모바일 디바이스들(6420a 내지 6420c)을 포함한다.
이미지 저장 디바이스(6410)는 적어도 하나의 프로세서(6411), 메모리 요소(6412), 통신 인터페이스(6413), 및 데이터 스토리지(6414)를 포함한다. 데이터 스토리지(6414)는 컨텍스트 인식 이미지 압축 엔진(6415) 및 복수의 압축된 이미지들(6416)을 포함한다. 컨텍스트 인식 이미지 압축 엔진(6415)은, 압축된 이미지들(6416)이 더 효율적으로 압축 및 저장될 수 있게 해주는, 컨텍스트 인식 이미지 압축을 수행하기 위해 프로세서(6411)에 의해 실행될 수 있는 로직 및/또는 명령어들을 포함한다.
모바일 디바이스들(6420a 내지 6420c) 각각은 적어도 하나의 프로세서(6421), 메모리 요소(6422), 통신 인터페이스(6423), 데이터 스토리지(6424), 카메라(6425), 및 센서(들)(6426)를 포함한다. 간략화를 위해, 모바일 디바이스들(6420a 내지 6420c)의 기본 컴포넌트들은 모바일 디바이스(6420a)에 대해서만 예시되어 있다.
이미지 저장 시스템(6400)의 각자의 컴포넌트들은 (예를 들어, 도 39 및/또는 도 56과 관련하여 추가로 설명된 바와 같이) 컨텍스트 인식 이미지 압축 기능성을 구현하기 위해 사용될 수 있다. 특히, 이미지 저장 시스템(6400)은 이미지들과 연관된 컨텍스트 정보에 기초하여 유사한 또는 관련된 이미지들의 그룹들을 함께 압축함으로써 이미지들의 효율적인 저장을 제공한다.
일부 실시예들에서, 예를 들어, 이미지 저장 시스템(6400)은 특정의 사용자와 연관된 모바일 디바이스(6420)에 의해 캡처되는 복수의 압축된 이미지들(6416)을 포함하는 데이터 스토리지(6414)를 포함할 수 있다. 압축된 이미지들(6416)은 마스터 이미지 및 슬레이브 이미지 둘 다를 포함할 수 있다. 일부 실시예들에서, 예를 들어, 마스터 이미지는 임의의 다른 이미지들을 참조하지 않고 압축되는(예를 들어, 그 자체로 및/또는 분리되어(in isolation) 압축되는) 이미지일 수 있는 반면, 슬레이브 이미지는 적어도 하나의 마스터 이미지를 참조하여 압축되는 이미지일 수 있다. 압축된 이미지들(6416)은 연관된 컨텍스트 정보를 또한 포함할 수 있다. 일반적으로, 특정의 이미지와 연관된 컨텍스트 정보는, 시간, 위치, 디바이스 아이덴티티, 디바이스 배향 또는 방향, 디바이스 움직임 등과 같은, 이미지가 캡처되었던 컨텍스트와 연관된 임의의 유형의 정보를 포함할 수 있다. 일부 실시예들에서, 예를 들어, 특정 컨텍스트 정보는, GPS 수신기, 자이로스코프, 가속도계, 나침반 등과 같은, 모바일 디바이스(6420)의 하나 이상의 센서(6426)에 의해 수집될 수 있다.
그에 따라, 모바일 디바이스(6420)가 자신의 연관된 카메라(6425)를 사용하여 새로운 이미지를 캡처할 때, 모바일 디바이스(6420)는 압축되지 않은 이미지 및 그의 연관된 컨텍스트 정보를 (예를 들어, 통신 인터페이스(6423)를 통해) 이미지 저장 디바이스(6410)에 제공할 수 있다. 이러한 방식으로, 컨텍스트 정보는 새로 캡처된 이미지와 유사할 수 있는 임의의 이전에 캡처된 이미지(6416)를 식별하기 위해 활용될 수 있다. 특히, 컨텍스트 정보에 기초하여 상관들을 식별함으로써, 새로 캡처된 압축되지 않은 이미지가 이미지 저장 디바이스(6410)에 저장된 대응하는 압축 마스터 이미지(6416)와 연관되는지가 결정될 수 있다. 예를 들어, 새로 캡처된 이미지가 특정 양의 시간 내에, 동일한 또는 유사한 위치에서, 동일한 모바일 디바이스에 의해, 유사한 디바이스 배향 또는 방향으로, 및/또는 디바이스 움직임이 거의 또는 전혀 없이 캡처되었다면, 새로 캡처된 이미지는 압축된 마스터 이미지(6416)와 연관되는 것으로 결정될 수 있다.
게다가, 일부 실시예들에서, 이미지 특징 매칭 기술들(예를 들어, SIFT 알고리즘)이 이어서 이미지 상관을 확인하기 위해 적용될 수 있다. 예를 들어, 새로 캡처된 이미지의 특징들과 컨텍스트적으로 유사한 마스터 이미지(6416)의 특징들 사이의 상관을 식별하기 위해 이미지 특징 매칭이 사용될 수 있다.
새로 캡처된 압축되지 않은 이미지가 대응하는 압축 마스터 이미지(6416)와 연관된 것으로 결정되면, 압축되지 않은 이미지는 대응하는 마스터 이미지를 참조하여 압축될 수 있다. 일부 실시예들에서, 예를 들어, 압축되지 않은 이미지는 인터-프레임 인코딩을 사용하여 대응하는 마스터 이미지를 참조하여 압축될 수 있다. 인터-프레임 인코딩은 사실상 (예를 들어, 도 65와 관련하여 아래에서 추가로 설명되는 바와 같이) 코딩 효율을 개선시키기 위해 유사한 이미지들 사이의 중복성을 활용한다. 일부 실시예들에서, 예를 들어, 인터-프레임 인코딩(예를 들어, H.264)을 사용하는 비디오 코덱이 압축을 수행하는 데 사용될 수 있다. 결과적인 압축된 이미지는 그러면 슬레이브 이미지로 지정될 수 있는데, 그 이유는 그것이 마스터 이미지를 참조하여 압축되었기 때문이다.
새로 캡처된 압축되지 않은 이미지가 임의의 압축된 마스터 이미지(6416)와 연관되지 않은 것으로 결정되면, 압축되지 않은 이미지는 어떤 다른 이미지들도 참조하지 않고 압축될 수 있다. 일부 실시예들에서, 예를 들어, 압축되지 않은 이미지는 인트라-프레임 인코딩을 사용하여 압축될 수 있다. 인트라-프레임 코딩은 코딩 효율을 개선시키기 위해 공간적 중복성(예를 들어, 단일 프레임 또는 이미지 내의 픽셀들 간의 상관들)을 활용한다. 결과적인 압축된 이미지는 그러면 마스터 이미지로 지정될 수 있는데, 그 이유는 그것이 어떤 다른 이미지들도 참조하지 않고 압축되었기 때문이다. 이러한 방식으로, 결과적인 압축된 이미지는 유사한 것으로 결정되는 후속하여 캡처된 이미지들을 압축하기 위해 마스터 이미지로서 후속하여 사용될 수 있다.
그에 따라, 새로 캡처된 이미지를 (예를 들어, 대응하는 마스터 이미지를 참조하여 또는 대응하는 마스터 이미지를 참조하지 않고 중 어느 하나로) 압축한 후, 결과적인 압축된 이미지는 이어서 이미지 저장 디바이스(6410)에 저장될 수 있다.
도 64와 관련하여 예시되고 설명된 컨텍스트 인식 이미지 압축의 예시적인 실시예는 많은 가능한 실시예들을 예시한 것에 불과하다. 다양한 실시예들에서, 예를 들어, 위에서 설명된 압축 접근법은 각각의 이미지가 캡처될 때 각각의 이미지를 순차적으로 압축하기보다는 최근에 캡처된 이미지들의 배치들(batches)을 함께 압축하기 위해 주기적으로 수행될 수 있다. 그에 부가하여, 일부 실시예들에서, 특정 이미지들은 다수의 마스터 이미지들을 참조하여 압축될 수 있고, 그리고/또는 특정 이미지들은 마스터 이미지 및 슬레이브 이미지 둘 다(예를 들어, 마스터 이미지를 참조하여 압축되지만 다른 슬레이브 이미지를 압축하는 데 또한 사용되는 이미지)로서 역할할 수 있다. 더욱이, 다양한 실시예들에서, 이미지 저장 시스템(6400), 이미지 저장 디바이스(6410), 및/또는 모바일 디바이스들(6420)의 기본 컴포넌트들 및 기능성은 결합되고, 분리되며, 및/또는 임의의 개수의 디바이스들 또는 컴포넌트들에 걸쳐 분산될 수 있다. 다양한 실시예들에서, 예를 들어, 이미지 저장 디바이스(6410)는 클라우드에서(예를 들어, 클라우드 기반 데이터 스토리지 서버로서) 구현될 수 있고, 네트워크 에지에서(예를 들어, 각각의 모바일 디바이스(6420) 내에서 그리고/또는 독립형 에지 저장 디바이스로서) 구현될 수 있으며, 그리고/또는 클라우드와 네트워크 에지 둘 다에 걸쳐 분산될 수 있는 것 중 어느 하나이다. 예를 들어, 일부 실시예들에서, 이미지 저장 디바이스(6410)의 압축 및/또는 저장 기능성은 각각의 모바일 디바이스(6420)에 의해 구현될 수 있고 그리고/또는 그 내에 통합될 수 있다.
도 65는 컨텍스트 인식 이미지 압축을 위한 인터-프레임 인코딩의 예(6500)를 예시한다. 예시된 예에서, 슬레이브 이미지(6510)는 압축된 슬레이브 이미지(6530)를 생성하기 위해 마스터 이미지(6520)를 참조하여 인터-프레임으로서 압축된다.
예시된 예에서, 슬레이브 이미지(6510)는 먼저, 매크로블록들이라고 지칭될 수 있는, 다수의 블록들로 분할되고, 각각의 매크로블록은 이어서 인터-프레임 인코딩을 사용하여 압축된다. 간략화를 위해, 예시된 예는 슬레이브 이미지(6510)의 단일 매크로블록(6512)에 대한 인터-프레임 인코딩 프로세스만을 묘사하지만, 슬레이브 이미지(6510)의 나머지 매크로블록들도 유사한 방식으로 인코딩될 수 있다.
슬레이브 매크로블록(6512)의 원시 픽셀 값들을 인코딩하는 것보다는, 슬레이브 매크로블록(6512)에 대한 인터-프레임 인코딩 프로세스는 유사한 매칭하는 매크로블록(6522)을 포함하는 마스터 이미지(6520)를 식별하는 것으로 시작된다. 일부 실시예들에서, 예를 들어, 대응하는 마스터 이미지(6520)에서의 매칭하는 마스터 매크로블록(6522)은, 본 개시내용 전반에 걸쳐 추가로 설명되는 바와 같이, 컨텍스트 정보 및/또는 특징 매칭 알고리즘들을 사용하여 식별될 수 있다.
그렇지만, 슬레이브 매크로블록(6512) 및 대응하는 매칭하는 마스터 매크로블록(6522)은 그들 각자의 이미지 프레임들(6510, 6520) 내에서 상이한 위치들에 있을 수 있다. 그에 따라, 슬레이브 매크로블록(6512) 및 대응하는 매칭하는 마스터 매크로블록(6522)의 상대적 움직임 및/또는 위치들을 식별하기 위해 모션 추정이 수행될 수 있다. 일부 실시예들에서, 예를 들어, 마스터 이미지(6520)에서의 매칭하는 마스터 매크로블록(6522)의 위치를 가리키는 모션 벡터(6531)가 생성될 수 있다. 예를 들어, 모션 벡터(6531)는 슬레이브 매크로블록(6512)의 위치에서 시작될 수 있고, 마스터 매크로블록(6522)의 대응하는 위치에서 종료될 수 있다.
게다가, 슬레이브 매크로블록(6512)과 매칭하는 마스터 매크로블록(6522)이 유사할 수 있지만, 이들이 정확한 매치일 가능성은 없다. 그에 따라, 예측 에러(6532)를 생성하기 위해 슬레이브 매크로블록(6512)과 매칭하는 마스터 매크로블록(6522) 사이의 차이들이 계산된다.
슬레이브 매크로블록(6512)은 이어서, 대응하는 마스터 이미지(6520)에 대한 참조, 모션 벡터(6531), 및 예측 에러(6532)를 포함할 수 있는, 압축된 포맷으로 인코딩될 수 있다. 슬레이브 이미지(6510)의 나머지 매크로블록들은 압축된 슬레이브 이미지(6530)를 생성하기 위해 유사한 방식으로 인코딩될 수 있다.
이러한 방식으로, 압축된 슬레이브 이미지(6530)는 원래의 슬레이브 이미지(6510)를 재생성하기 위해 후속하여 디코딩될 수 있다. 예를 들어, 압축된 슬레이브 이미지(6530) 내의 각각의 인코딩된 매크로블록에 대해, 마스터 이미지(6520)는 연관된 마스터 이미지 참조에 기초하여 식별될 수 있고, 마스터 이미지(6520) 내의 대응하는 매크로블록(6522)은 연관된 모션 벡터(6531)에 기초하여 식별될 수 있으며, 슬레이브 매크로블록(6512)의 원시 픽셀들은 그러면 연관된 예측 에러(6532)에 기초하여 마스터 매크로블록(6522)으로부터 복구될 수 있다.
도 65의 예시된 예는 컨텍스트 인식 이미지 압축을 위한 인터-프레임 인코딩의 다양한 가능한 구현들을 예시한 것에 불과하다. 다양한 실시예들에서, 예를 들어, 가능한 변형들 중에서도, 인터-프레임 인코딩이 슬레이브 이미지를 임의의 개수의 기본 매크로블록들로 분할함으로써 수행될 수 있거나, 또는 대안적으로, 인터-프레임 인코딩이 슬레이브 이미지 전체에 대해 수행될 수 있다.
프라이버시/보안
분산 비주얼 프로세싱 시스템들에서, 기본 사용자들 또는 피사체들의 민감한 비주얼 데이터(예를 들어, 사람들의 얼굴들이 있는 이미지들 또는 비디오)를 보호하기 위해 효과적인 프라이버시 및 보안 정책들을 구현하는 것이 중요한다. 그에 따라, 일부 실시예들에서, 본 개시내용 전반에 걸쳐 설명된 비주얼 포그 아키텍처는 다양한 프라이버시 및 보안 안전장치들을 사용하여 구현될 수 있다.
일부 실시예들에서, 예를 들어, 프라이버시 보호 분산 비주얼 프로세싱은, 임의의 적용가능한 프라이버시 및/또는 보안 제약조건들을 또한 준수하면서, 효율적인 방식으로 이용가능한 포그 노드들에 걸쳐 비전 작업부하들을 스케줄링 또는 분배하기 위해 사용될 수 있다.
유사하게, 데이터의 특정의 민감도 레벨에 따라, 비주얼 데이터를 상이한 위치들에 그리고/또는 상이한 시간 지속기간들 동안 저장하기 위해 다중-티어 저장 접근법이 사용될 수 있다. 예를 들어, 클라우드는 덜 민감한 또는 상위 레벨 비주얼 데이터 또는 메타데이터의 장기 저장을 위해 사용될 수 있는 반면, (예를 들어, 프레미스 게이트웨이들(premise gateways)에 있는) 에지 디바이스들은 매우 민감한 비주얼 데이터의 저장을 위해 사용될 수 있다.
더욱이, 특정 비전 연산들은 프라이버시 보호 접근법들을 사용하여 구현될 수 있다. 예를 들어, 일부 비전 애플리케이션들(예를 들어, 자동화된 인구통계 식별)의 경우, 특징 추출 및 인식은 침해적 정면 뷰들(intrusive frontal views)보다는 톱-다운 뷰들을 캡처하는 카메라들 및 센서들을 사용하여 구현될 수 있다.
다른 예로서, 게이트웨이 클라우드 인증은 JSON 웹 토큰들을 사용하여 게이트웨이들 및/또는 다른 포그 디바이스들을 클라우드에 안전하게 인증하기 위해 사용될 수 있다.
다른 예로서, 지갑들 또는 분산 키들이, MESH 또는 GOSSIP 기반 통신 프로토콜과 함께, 개선되고 더 안전한 키 관리 솔루션들을 제공하는 데 사용될 수 있다.
스트림 다중화는, 예를 들어, 다수의 채널들에 걸쳐 비주얼 센서들을 다중화하고 엔트로피를 도입하여 채널 예측을 더 어렵게 만드는 것에 의해, 스트리밍 미디어에 대한 애플리케이션 계층 라우팅에서 사용될 수 있다. 예를 들어, 채널 예측을 복잡하게 하도록 설계된 엔트로피 및 다른 잡음(예를 들어, 채프 신호들(chaff signals))을 도입하고, 따라서 악의적인 행위자들이 비디오 피드들을 알아내려는(pick up on) 노력들을 좌절시킴으로써 부가의 보안이 제공될 수 있다.
다른 예로서, 자기 주권 블록체인은 멀티 테넌트 디바이스 식별(multi-tenant device identification)을 제공하기 위해 사용될 수 있다. 예를 들어, 블록체인은 (예를 들어, 레거시 시스템들의 경우에도) 다수의 비주얼 포그 네트워크들에 걸쳐 디바이스 아이덴티티들의 오케스트레이션 및 승인(acceptance)을 핸들링하고, 따라서 디바이스들이 서드파티 또는 중앙집중식 서비스들에 의존하지 않고 그들의 아이덴티티를 주장할 수 있게 해주기 위해 사용될 수 있다. 자기 주권 블록체인은, 분산 컴퓨팅 알고리즘들의 컬렉션을 관리하는 것과 같은, 다른 목적들을 위해 유사하게 사용될 수 있다.
다른 예로서, 블록체인 라이프사이클 관리(예를 들어, 블록체인들의 인스턴스화 및 라이프사이클을 관리하는 것)는 비주얼 포그 아키텍처에서 사용되는 블록체인들에 대한 부가의 레벨의 보안을 제공하기 위해 사용될 수 있다. 예를 들어, 블록체인 라이프사이클 관리는 특정의 블록체인이 올바르게 구현되고 예상대로 거동하도록 보장하기 위해 사용될 수 있다.
다른 예로서, 이해당사자 관리는, 공정한 방식으로 충돌들에 대해 중재하면서, 자기 이해(self-interests)가 주장될 수 있게 해주기 위한 프로토콜들 및 프레임워크들의 세트를 제공하기 위해 사용될 수 있다.
도 40a 내지 도 40c는 프라이버시 보호 인구통계 식별 시스템(4000)의 예시적인 실시예를 예시한다. 인간 인구통계학적 어트리뷰트들(예를 들어, 연령, 성별, 인종 등)을 식별하는 것이 다양한 사용 사례들 및 애플리케이션들에 활용될 수 있다. 예시적인 사용 사례들은 인간-컴퓨터 상호작용, 감시, 비즈니스 및 소비자 애널리틱스 등을 포함한다. 소매 및 의료 부문들에서, 예를 들어, 타깃 오디언스(target audience)를 정의하고 고객 프로파일들을 개발하는 것이 성공적인 브랜드 전략 개발에 대한 중요한 인자가 되었다.
일부 실시예들에서, 예를 들어, 인간 인구통계를 식별하기 위해 컴퓨터 비전 및/또는 얼굴 인식 기술이 사용될 수 있다. 예를 들어, 컴퓨터 비전 얼굴 인식 기술을 사용하여 추출되는 정면 및/또는 측면 얼굴 특징들에 기초하여 인구통계가 식별될 수 있다. 그렇지만, 공개적으로 정면 얼굴 인식 기술을 사용하는 것은 잠재적인 프라이버시 문제들을 초래할 수 있다. 더욱이, 인구통계 식별은 상이한 분야들에 걸쳐 중요하며, 특히 2020년도까지 200억개 이상의 접속된 디바이스를 가질 것으로 예상되는 사물 인터넷(IoT) 시대에서, 정면 기반 센서들 및 인식 기술들로만 제한되어서는 안된다. 게다가, 정면 기반 비전 센서들로 제한될 때, 넓은 프로세싱 시야각들을 또한 제공하면서 사람 폐색 문제를 극복하는 인구통계 식별 시스템을 개발하는 것이 어려울 수 있다.
그에 따라, 도 40a 내지 도 40c의 예시된 실시예에서, 프라이버시 보호 인구통계 식별 시스템(4000)은 인간 인구통계를 식별하기 위해 하나 이상의 탑뷰 센서(4015)를 사용한다. 일부 실시예들에서, 예를 들어, 단일 센서(4015) 또는 다수의 센서들(4015) 중 어느 하나가, 종래의 정면 뷰들보다는, 인간들의 톱-다운 뷰들을 캡처하는 데 사용될 수 있다. 더욱이, 인간 인구통계는 그러면 센서들(4015)에 의해 캡처되는 톱-다운 뷰들로부터 추출되는 특징들에 기초하여 식별될 수 있다. 이러한 방식으로, 탑뷰 센서들(4015)의 사용은, 프라이버시를 보호하고, 더 넓은 센서 시야각들을 제공하며, 폐색에 대한 취약성을 감소시키면서, 인간 인구통계가 자동으로 식별될 수 있게 해준다.
도 40a는 인구통계 식별 시스템(4000)의 상위 레벨 구현을 예시한다. 예시된 실시예에서, 에지 디바이스들(4010)은 인간들을 감지하는 데 사용되는 탑뷰 센서들(4015a 내지 4015c)의 다수의 세트들을 포함한다. 예를 들어, 탑뷰 센서들(4015a 내지 4015c)의 각각의 세트는 그들의 주변 환경에 관한 정보를 캡처할 수 있는 하나 이상의 센서를 포함할 수 있다. 인간들을 검출하고 그들의 인구통계를 식별하기 위해 탑뷰 센서들(4015a 내지 4015c)에 의해 캡처되는 정보가 이어서 포그(4020)에서 프로세싱된다. 포그(4020)에 의해 추출되는 컨텍스트적 정보(예를 들어, 인간 인구통계)는 이어서, 사람들 프로파일링 또는 히트 맵들을 생성하는 것과 같은, 추가 애널리틱스를 위해 클라우드(4030)로 전송될 수 있다. 대안적으로 또는 부가적으로, 특정 컨텍스트적 정보는 사용자들의 프라이버시 정책들로 인해 보류 또는 난독화될 수 있거나, 또는 도움이 되는 경우, 이는 비인가 공개를 방지하기 위해 암호화될 수 있다. 애널리틱스 알고리즘이 에지 또는 엔드포인트에 분산되고 적용되며 (다수의 결과들을 집계하는) 애널리틱스 결과가 커리 함수(curry function)에 의해 출력되는, 함수 커링(function currying)이 또한 사용될 수 있다.
도 40b는 도 40a의 인구통계 식별 시스템(4000)과 연관된 탑뷰 센서(들)(4015)의 세트의 예를 예시한다. 예시된 예에 도시된 바와 같이, 탑뷰 센서들(4015)은 인간들(4002)에 의해 접근가능한 영역 위에 배치된 하나 이상의 센서의 컬렉션을 포함한다. 일부 실시예들에서, 예를 들어, 탑뷰 센서들(4015)은 입구 인근에서 소매 점포의 천장에 장착될 수 있다. 더욱이, 탑뷰 센서들(4015)은, 비전 카메라, 적외선 카메라, LiDAR(light detection and ranging) 센서 등과 같은, 임의의 유형 및/또는 조합의 센서(들)를 포함할 수 있다. 이러한 방식으로, 탑뷰 센서들(4015)은 센서들 아래를 통과하는 인간들(4002)의 탑뷰 표현들을 캡처하는 데 사용될 수 있다. 더욱이, 도 40c와 관련하여 추가로 설명되는 바와 같이, 탑뷰 센서들(4015)에 의해 캡처되는 탑뷰 표현들은 이어서 센서들에 의해 캡처되는 인간들(4002)의 인구통계를 식별하기 위해 추가로 프로세싱될 수 있다.
도 40c는 도 40a의 인구통계 식별 시스템(4000)에서 포그(4020)에 의해 수행되는 인구통계 식별 프로세스의 예를 예시한다. 예시된 예에서, 인구통계 식별 프로세스는 (i) 인구통계 분류 모델을 트레이닝시키는 것, (ii) 탑뷰 센서 데이터를 입력으로서 갖는 트레이닝된 인구통계 분류 모델을 사용하여 인구통계 정보를 식별하는 것을 수반한다.
인구통계 분류 모델을 트레이닝시키는 프로세스는 블록(4021) 내지 블록(4024)에 의해 예시된다. 블록(4021)에서, 탑뷰 인간 데이터의 트레이닝 데이터베이스가 먼저 획득되거나 생성되어야 한다. 일부 실시예들에서, 예를 들어, 트레이닝 데이터베이스는, 카메라 이미지들, 적외선 이미지들, 점 구름들(point clouds) 등과 같은, 탑뷰 센서들(4015)에 의해 캡처되는 데이터를 포함할 수 있다. 블록(4022)에서, 전형적으로 인간 인구통계를 대표하는 특징들이 이어서, 주성분 분석(PCA), 이산 코사인 변환들(DCT), 머신 러닝(예를 들어, 신경 네트워크를 사용하는 딥 러닝) 등과 같은, 특징 추출 방법론들을 사용하여 데이터베이스로부터 선택/트레이닝된다. 블록(4023)에서, 선택된/트레이닝된 특징들은 이어서 인구통계 분류 모델을 트레이닝시키기 위해 사용되는 프로세스에 대한 입력으로서 제공된다. 블록(4024)에서, 트레이닝된 인구통계 모델은 이어서, 아래에서 추가로 설명되는 바와 같이, 인구통계 식별 프로세스 동안의 후속 사용을 위해 포그(4020)에 저장된다.
인간 인구통계를 식별하는 프로세스는 블록(4025) 내지 블록(4029)에 의해 예시된다. 블록(4025)에서, 센서 데이터는, 비전 카메라, 적외선 카메라, LiDAR 센서 등과 같은, 하나 이상의 탑뷰 센서(들)(4015)를 사용하여 에지 디바이스들(4010)에 의해 캡처된다. 데이터 변환들, 잡음 제거 등과 같은, 포그(4020)에서의(예를 들어, 온-프레미스) 데이터 프리-프로세싱을 수행하기 위해 원시 센서 데이터(예를 들어, RGB 이미지들, 열 이미지들, 점 구름들)가 이어서 에지(4010)로부터 포그(4020)로 전송된다. 블록(4026)에서, 프리-프로세싱된 입력 스트림에 대해 사람 검출이 이어서 수행된다. 일부 실시예들에서, 예를 들어, 사람이 기본 비주얼 데이터에서 캡처되는지를 결정하기 위해 프리-프로세싱된 입력 스트림이 분석된다. 예를 들어, 탑뷰 카메라로부터의 프리-프로세싱된 이미지 데이터는 이미지가 사람을 포함하는지를 결정하기 위해 분석될 수 있고, 만약 그렇다면, 사람을 포함하는 이미지의 부분이 추출될 수 있다. 블록(4027)에서, 전형적으로 인간 인구통계를 대표하는 특징들이 이어서 검출된 사람으로부터 특징 추출/머신 러닝 기술들을 사용하여 선택되거나 추출된다. 블록(4028)에서, 블록(4027)으로부터의 추출된 특징들 및 블록(4024)으로부터의 사전 트레이닝된 인구통계 모델은 이어서 검출된 사람의 인구통계학적 어트리뷰트들을 분류하기 위해 인구통계 분류기에 의해 사용된다. 블록(4029)에서, 검출된 사람과 연관된 인구통계 정보가 이어서 인구통계 분류기의 출력에 기초하여 식별된다. 프라이버시 요구사항들은 사람 데이터를 인구통계 데이터와 연관시키는 4021 데이터로부터 4029 인구통계 정보를 분리시킬 수 있다. 사용자-제어 프라이버시 메커니즘은 사람 데이터와 인구통계 데이터의 연관 또는 링킹을 인가할 수 있다. 사람 데이터 및 인구통계 데이터를 도출하기 위해 사용되는 원래의 이미지는 프라이버시에 민감한 콘텐츠/컨텍스트의 후속 재도출을 방지하기 위해 추가 액세스로부터 숨겨질 수 있다.
탑뷰 인구통계 식별의 설명된 실시예들은 수많은 장점들을 제공한다. 예로서, 설명된 실시예들은 인구통계 정보가 단일 센서 또는 다중 센서 접근법을 사용하여 캡처되는 인간들의 톱-다운 뷰에 기초하여 정확하게 식별될 수 있게 해준다. 정면 뷰 접근법과 비교하여, 예를 들어, 톱-다운 또는 공중 투시는 프로세싱을 위한 더 넓은 시야각을 제공하고, 센서들에 의해 캡처되는 사람의 차폐 또는 폐색의 문제를 감소시키며, 시스템에 의해 캡처되고 프로세싱되는 사람들 및 특징들과 연관된 깊이 정보를 보존한다. 그에 부가하여, 설명된 실시예들은 덜 프라이버시 침해적인데, 그 이유는 이들이, 정면 뷰들과 같은, 다른 더 침해적인 뷰들보다는 사람들의 탑 뷰들만을 캡처하기 때문이다. 설명된 실시예들은 또한 변경되거나 변화될 수 있는 특징들보다는 영구적이거나 지속되는 인체측정 특징들에 기초하여 인구통계 정보를 식별한다. 더욱이, 모션 기반 검출 접근법들과는 달리, 설명된 실시예들은 정적 뷰들 또는 이미지들만을 사용하여 동작할 수 있고 연속적인 이미지 시퀀스들 또는 비디오들을 요구하지 않는다. 게다가, 설명된 실시예들은 소매, 디지털 감시, 스마트 빌딩들, 및/또는, 인간 감지, 사람 식별, 사람 재식별(예를 들어, 다수의 모니터링된 영역들에 걸쳐 사람들을 검출/트래킹/재식별하는 것)을 수반하는 다른 임의의 다른 애플리케이션들을 포함한, 다양한 사용 사례들 및 애플리케이션들에 활용될 수 있다.
도 53은 프라이버시 보호 인구통계 식별의 예시적인 실시예에 대한 플로차트(5300)를 예시한다. 일부 실시예들에서, 예를 들어, 플로차트(5300)는 도 40a 내지 도 40c의 인구통계 식별 시스템(4000)에 의해 구현될 수 있다.
플로차트는 블록(5302)에서 탑뷰 감지 디바이스로부터 센서 데이터를 획득하는 것으로 시작될 수 있다. 탑뷰 감지 디바이스는, 예를 들어, (예를 들어, 톱-다운 투시로부터) 탑뷰 감지 디바이스 아래의 환경과 연관된 센서 데이터를 캡처하는 데 사용될 수 있다. 일부 실시예들에서, 탑뷰 감지 디바이스는, 카메라, 적외선 센서, 열 센서, 레이저 기반 센서(예를 들어, LiDAR) 등을 포함한, 복수의 센서들을 포함할 수 있다.
플로차트는 이어서 센서 데이터에 대해, 데이터 변환들, 필터링, 잡음 감소 등과 같은, 프리프로세싱을 수행하기 위해 블록(5304)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 원시 센서 데이터는 프리프로세싱을 수행하는 데 사용되는 프로세서로 전송될 수 있고 그리고/또는 프로세서에 의해 획득될 수 있다. 예를 들어, 프리프로세싱은, 온-프레미스 에지 게이트웨이와 같은, 네트워크 에지에 또는 그 인근에(예를 들어, 탑뷰 감지 디바이스 인근에) 있는 에지 프로세싱 디바이스에 의해 수행될 수 있다.
플로차트는 이어서 탑뷰 감지 디바이스 아래의 환경의 비주얼 표현을 생성하기 위해 블록(5306)으로 진행할 수 있다. 비주얼 표현은, 예를 들어, 탑뷰 감지 디바이스에 의해 캡처되는 센서 데이터(예를 들어, 카메라 이미지들, 적외선 이미지들, 점 구름들 등)를 사용하여 생성될 수 있다. 일부 실시예들에서, 예를 들어, 비주얼 표현은 톱-다운 투시로부터의 환경의 3차원(3D) 표현 또는 매핑일 수 있다. 더욱이, 일부 실시예들에서는, 비주얼 표현은 네트워크 에지에서 또는 그 인근에서(예를 들어, 탑뷰 감지 디바이스 인근에서) 생성될 수 있다. 예를 들어, 일부 실시예들에서, 에지 프로세싱 디바이스(예를 들어, 온-프레미스 에지 게이트웨이)는 비주얼 표현을 생성하는 데 사용될 수 있다.
플로차트는 이어서 사람이 비주얼 표현에서 검출되는지를 결정하기 위해 블록(5308)으로 진행할 수 있다. 예를 들어, 센서 데이터가 캡처될 때 사람이 탑뷰 감지 디바이스 아래에 위치된 경우, 센서 데이터를 사용하여 생성되는 비주얼 표현은 탑뷰 투시로부터의 사람의 표현을 포함할 수 있다. 그에 따라, 비주얼 표현이 사람을 포함하는지를 결정하기 위해 (예를 들어, 이미지 프로세싱 기술들을 사용하여) 비주얼 표현이 분석될 수 있다. 일부 실시예들에서, 예를 들어, 사람 검출은 네트워크 에지에서 또는 그 인근에서(예를 들어, 탑뷰 감지 디바이스 인근에서) 에지 프로세싱 디바이스(예를 들어, 온-프레미스 에지 게이트웨이)에 의해 수행될 수 있다.
사람이 비주얼 표현에서 검출되지 않는다고 블록(5308)에서 결정되면, 플로차트는 사람이 검출될 때까지 센서 데이터를 획득하고 프로세싱하는 것을 계속하기 위해 다시 블록(5302)으로 진행할 수 있다.
그렇지만, 사람이 비주얼 표현에서 검출된다고 블록(5308)에서 결정되면, 사람의 탑뷰 표현이 비주얼 표현으로부터 추출될 수 있고, 플로차트는 이어서 사람과 연관된 하나 이상의 특징을 식별하기 위해 블록(5310)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 사람과 연관된 인체측정 특징들(예를 들어, 사람의 크기 및 비율과 연관된 특징들 또는 측정들)을 식별하거나 추출하기 위해 사람의 탑뷰 표현이 분석될 수 있다. 예를 들어, 일부 실시예들에서, 인체측정 특징들은, 이산 코사인 변환(DCT), 주성분 분석(PCA), 머신 러닝 기술 등과 같은, 이미지 프로세싱 기술을 사용하여 특징 추출을 수행함으로써 식별될 수 있다. 더욱이, 일부 실시예들에서는, 특징 식별 또는 추출은 네트워크 에지에서 또는 그 인근에서(예를 들어, 탑뷰 감지 디바이스 인근에서) 에지 프로세싱 디바이스(예를 들어, 온-프레미스 에지 게이트웨이)에 의해 수행될 수 있다.
플로차트는 이어서 식별된 특징들에 기초하여 사람과 연관된 인구통계 정보(예를 들어, 연령, 성별, 인종)를 식별하기 위해 블록(5312)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 머신 러닝 모델이 인간 인체측정 특징들에 기초하여 인구통계 정보를 인식하도록 트레이닝될 수 있다. 이러한 방식으로, 머신 러닝 모델은 연관된 인구통계 정보를 인식하기 위해 사람의 식별된 특징들을 분류하는 데 사용될 수 있다.
일부 실시예들에서, 인구통계 식별은 네트워크 에지에서 또는 그 인근에서(예를 들어, 탑뷰 감지 디바이스 인근에서) 에지 프로세싱 디바이스(예를 들어, 온-프레미스 에지 게이트웨이)에 의해 수행될 수 있다. 더욱이, 일부 실시예들에서는, 에지 프로세싱 디바이스는, 히트 맵 또는 사람들 프로파일을 생성하는 것과 같은, 추가 애널리틱스를 수행하기 위해 인구통계 정보를 (예를 들어, 통신 인터페이스를 사용하여) 클라우드 프로세싱 디바이스로 전송할 수 있다.
이 시점에서, 플로차트가 완료될 수 있다. 그렇지만, 일부 실시예들에서, 플로차트가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 플로차트는 탑뷰 감지 디바이스로부터 센서 데이터를 계속 획득하고 프로세싱하기 위해 블록(5302)에서 재시작될 수 있다.
도 41 내지 도 43은 프라이버시 보호 분산 비주얼 데이터 프로세싱의 예시적인 실시예를 예시한다.
비주얼 컴퓨팅에서, 다중 타깃 다중 카메라 트래킹(multi-target multi-camera tracking)(MTMCT) 및 타깃 재식별(re-identification)(ReID)은 상이한 사용 사례들에 걸쳐 가장 통상적인 작업부하들 중 일부이다. MTMCT는 다수의 뷰들 또는 카메라들에 걸쳐 다수의 객체들을 트래킹하는 것을 수반하는 반면, ReID는 객체가 외관의 상당한 변화들을 겪은 후에도 (예를 들어, 강건한 특징들을 추출함으로써) 객체를 재식별하는 것을 수반한다. 예를 들어, 소매에서, MTMCT는 종종 상점 내의 쇼핑객들을 트래킹하는 데 사용되는 반면, ReID는, 쇼핑객들의 강건한 특징들이 나중에, 쇼핑객이 외관의 상당한 변화를 갖거나 상이한 상점을 방문할 때와 같은, 상이한 상황들에서 (예를 들어, MTMCT 사용하여) 재식별될 수 있도록, 쇼핑객들의 강건한 특징들을 추출하고 요약하는 데 사용될 수 있다.
현재, (예를 들어, 수만 개의 카메라 스트림들 또는 그 이상을 갖는) 대규모 비주얼 컴퓨팅 시스템들로 스케일링가능한 MTMCT 및 ReID를 수행하기 위한 일관된 엔드-투-엔드(E2E) 솔루션들이 없다. 특히, 대역폭 제한들은 카메라들이 연속적인 비디오 스트림들을 프로세싱을 위해 클라우드로 송신하는 종래의 클라우드 컴퓨팅 패러다임에서 그러한 시스템을 배포하는 것을 어렵게 만든다. 예를 들어, 그러한 시스템들에 의해 생성되는 큰 볼륨의 비디오 데이터로 인해, 그 데이터 전부를 프로세싱을 위해 클라우드로 퍼널링하는 것이 실현가능하지 않다. 다른 한편으로, 비디오 데이터의 소스 인근의 에지 디바이스들이 전체적인 비주얼 프로세싱 작업부하를 실시간으로 프로세싱할 수 있을 가능성이 없다.
더욱이, 프라이버시가 또한 그러한 시스템을 스케일링 아웃(scaling out)함에 있어서 도전과제인데, 그 이유는 비주얼 데이터를 프로세싱을 위해 클라우드로 송신하는 것이 프라이버시 문제들을 초래할 수 있기 때문이다. 예를 들어, 고객 프라이버시를 보호하기 위해, 많은 소매업체들은 임의의 비디오 또는 이미지들이 그들의 점포들로부터 전송되는 것을 허용하지 않을 것이거나, 또는 이들은 고객들의 원래의 이미지들을 포기하고 상관없는 인구통계 또는 사람 데이터만을 유지할 수 있다. 일부 경우들에서, 점포가 특정 고객 데이터를 그의 연관된 인구통계와 링크하도록 인가받기 전에 고객 동의가 요구될 수 있다.
그에 따라, 도 41 내지 도 43은 프라이버시 보호 방식으로 MTMCT 및 ReID 능력들로 비주얼 컴퓨팅 시스템들을 스케일링 아웃하는 문제를 해결하는 실시예를 예시한다. 예시된 실시예는 에지 디바이스들, 게이트웨이들, 및 클라우드에 걸쳐 MTMCT 및 ReID를 수행하기 위한 에지-투-에지(E2E) 아키텍처를 제시한다. 이 아키텍처는 스케일링가능하고 프라이버시를 보호하며, 소매에서의 쇼핑객 통찰들, 디지털 보안 및 감시에서의 사람들 탐색, 스포츠에서 선수 트래킹 및 재생 등과 같은, 많은 버티컬 애플리케이션들 또는 사용 사례들로 쉽게 일반화할 수 있다.
일부 실시예들에서, 예를 들어, 비전 작업부하들은 지정된 프라이버시 제약조건들에 기초하여 비주얼 포그 노드들에 걸쳐 스케줄링되고 실행될 수 있다. 예로서, MTMCT 및/또는 ReID 작업부하들에 대한 프라이버시 제약조건들은 얼굴들을 갖는 사진들을 출력하는 태스크들이 온-프레미스에 남아 있을 것(예를 들어, 태스크들 또는 그들의 출력 중 어느 것도 프레미스를 넘어 또는 클라우드로 할당되거나 전송되지 않아야 함), 익명화될 것(예를 들어, 얼굴이 흐릿하게 됨), 그리고/또는 향상된 링크 보안을 갖는 디바이스들에만 배포될 것을 요구할 수 있다.
일부 실시예들에서, 예를 들어, 비주얼 데이터를 모조리 프로세싱을 위해 클라우드로 퍼널링하는 것보다는, 비주얼 데이터 및 작업부하들이 어떻게 프로세싱되고 비주얼 컴퓨팅 시스템에 걸쳐 분산되는지에 관한 지능적 결정들이 이루어질 수 있다. 특정의 비주얼 애플리케이션의 프라이버시 요구사항들에 기초하여, 예를 들어, 프라이버시를 보호하면서도 성능 효율을 달성하기 위해 비주얼 컴퓨팅 시스템의 엔드-투-엔드 패러다임 내에 프라이버시 경계가 정의될 수 있다.
일부 실시예들에서, 예를 들어, 작업 파티셔닝(job partitioning)은 비주얼 애널리틱스 작업부하를 프리미티브 비주얼 연산들을 표현하는 정점들 및 그들의 의존성들을 표현하는 간선들(edges)을 갖는 유향 비순환 그래프(directed acrylic graph)(DAG)로 파티셔닝하는 데 사용될 수 있다. 이러한 방식으로, 그래프는 특정의 작업부하에 대한 다양한 태스크들 및 연관된 의존성들을 표현하는 데 사용될 수 있다. 더욱이, 프라이버시 정책은 각각의 의존성에 대해 개별적으로 정의될 수 있다. 유사하게, 디바이스 접속성 그래프는 에지-투-클라우드 패러다임에서 다양한 디바이스들 및 그들의 접속성을 표현하는 데 사용될 수 있고, 그래프에서의 각각의 접속성 간선에 대해 프라이버시 레벨 협약(privacy level agreement)(PLA)이 확립될 수 있다. 이러한 방식으로, 에지-투-클라우드 아키텍처는 프라이버시를 손상시키지 않으면서 엔드-투-엔드 작업부하 분배를 수행하는 일관된 관리 인터페이스를 포함하도록 구현될 수 있다. 예를 들어, 위에서 설명된 작업 파티셔닝 접근법을 사용하여, 작업부하 분배는 사실상 에지-투-클라우드 패러다임에서 작업부하의 태스크들을 디바이스들에 할당하는 매핑 문제로 된다. 일부 실시예들에서, 예를 들어, 글로벌 스케줄러는 프라이버시 제약조건들을 보호하면서 성능을 최대화하기 위해 태스크들과 디바이스들 사이의 최적의 매핑을 결정하는 데 사용될 수 있다.
일부 경우들에서, PLA는 사용자들의 프라이버시 프로파일들 및 점포를 대신하여 프라이버시 보호 기능성을 제공하려는 의지를 고려하는 SLA 협약과 유사할 수 있다. 비주얼 포그 디바이스들, 센서들, 및 게이트웨이들은 강화된 메커니즘들을 사용하여 PLA 정책을 추가로 구현할 수 있으며, 여기서 Intel SGX 또는 ARM TrustZone과 같은 TEE(trusted execution environment)는 PLA 정책을 시행하는 탬퍼링 방지 환경(tamper-resistant environment)을 확립한다.
도 41은 MTMCT 및 ReID를 수행하기 위한 예시적인 비주얼 작업부하 그래프(4100)를 예시한다. 예시적인 작업부하(4100)는, 프리-프로세싱(4102), 검출(4104), 트래킹(4106), 매칭(4108), 및 데이터베이스 액세스(4110)를 포함한, 복수의 태스크들을 포함한다. 게다가, 이러한 다양한 태스크들 사이의 의존성들은 예시된 예에서 실선들 및 점선들로 표현된다. 더욱이, 실선들은 원래의 비주얼 데이터의 무제한 액세스 또는 전송을 표현하는 반면, 점선들은 제한된 또는 프라이버시 보호 액세스 또는 전송(예를 들어, 특징 벡터들과 같은, 비주얼 메타데이터만을 전송하는 것)을 표현한다. 이러한 방식으로, 예를 들어, 각각의 태스크가 원래의 비주얼 데이터에 대한 무제한 액세스 또는 제한된 액세스를 갖는지를 지정함으로써, 작업부하에 대한 프라이버시 정책이 정의될 수 있다.
도 42는 에지-투-클라우드 디바이스 접속성 그래프(4200)의 예를 예시한다. 예시된 예에서, 그래프(4200)는 카메라들(4210a 내지 4210c), 게이트웨이들(4220a 및 4220b), 및 클라우드(4230)를 포함하는, 3-티어 에지-투-클라우드 네트워크의 다양한 디바이스들 사이의 접속성을 예시한다. 특히, 에지-투-클라우드 통신(예를 들어, 카메라 대 게이트웨이 대 클라우드)은 물론 피어-투-피어 통신(예를 들어, 게이트웨이-대-게이트웨이) 둘 다에 대해 디바이스 접속성이 예시되어 있다. 더욱이, 각자의 디바이스들 사이의 접속성은 실선들 및 점선들을 사용하여 표현된다. 예를 들어, 실선들은 고도 보안의 접속성 링크들을 표현하는 반면, 점선들은 제한된 보안의 접속성 링크들을 표현한다. 이러한 방식으로, 예를 들어, 그래프에서의 각각의 접속성 에지에 대한 필수적인 보안을 지정함으로써, 에지-투-클라우드 패러다임에 대해 프라이버시 정책 또는 프라이버시 레벨 협약(PLA)이 정의될 수 있다.
도 43은 프라이버시 보호 작업부하 배포(4300)를 예시한다. 특히, 작업부하 배포(4300)는 도 42의 에지-투-클라우드 네트워크(4200) 상에서의 도 41의 작업부하(4100)의 예시적인 배포를 예시한다.
예시된 예에서, 작업부하를 배포하기 위해 태스크-대-디바이스 매핑을 수행할 때 프라이버시는 명시적 제약조건으로서 취급된다. 일부 실시예들에서, 예를 들어, 매핑 문제가 종래 기술의 정수 선형 프로그래밍(ILP) 솔버들을 사용하여 효율적으로 풀릴 수 있게 해주기 위해 작업부하들이 선형 형태들로 표현될 수 있다.
일부 실시예들에서, 예를 들어, 에지-투-클라우드 네트워크 상에서 특정의 작업부하를 스케줄링할 때, 작업부하 및 에지-투-클라우드 네트워크 각각은, 유향 비순환 그래프(DAG)와 같은, 그래프를 사용하여 표현될 수 있다. 예를 들어, 작업부하 및 그의 기본 태스크들은 작업부하 또는 태스크 의존성 그래프
Figure pct00010
Figure pct00011
에 의해 표현될 수 있고, 여기서 각각의 정점
Figure pct00012
는 태스크를 표현하고, 각각의 간선
Figure pct00013
는 태스크 u 와 태스크 V 사이의 의존성을 표현한다. 유사하게, 에지-투-클라우드 네트워크는 네트워크 또는 디바이스 접속성 그래프
Figure pct00014
에 의해 표시될 수 있고, 여기서 각각의 정점
Figure pct00015
Figure pct00016
는 네트워크 내의 디바이스를 표현하고, 각각의 간선
Figure pct00017
는 디바이스 u로부터 디바이스 v로의 접속성을 표현한다.
더욱이, 작업부하 그래프에서 각각의 태스크 의존성에 대한 프라이버시 정책(PP)은, 숫자
Figure pct00018
가 작을수록 데이터 전송이 취약하도록, PP 함수
Figure pct00019
을 사용하여 정의될 수 있다. 유사하게, 디바이스 접속성 그래프에서 각각의 접속성 링크에 대한 프라이버시 레벨 협약(PLA)은, 숫자
Figure pct00020
가 작을수록 링크가 안전하도록, PLA 함수
Figure pct00021
Figure pct00022
을 사용하여 정의될 수 있다.
이러한 방식으로, 프라이버시 정책(PP) 함수 및 프라이버시 레벨 협약(PLA) 함수에 기초하여, 프라이버시 제약조건(PC)은
Figure pct00023
로서 정의될 수 있고, 여기서
Figure pct00024
는 특정의 작업부하로부터 에지-투-클라우드 패러다임으로의 매핑 함수이다. 본질적으로,
Figure pct00025
는 작업부하 그래프에서의 간선을 에지-투-클라우드 접속성 그래프에서의 경로에 매핑한다. 예를 들어, 비주얼 포그 컴퓨팅의 맥락에서,
Figure pct00026
는 데이터 전송을 위해 사용되어야 하는 포그 디바이스 쌍들 사이의 특정의 네트워크 접속성 링크들과 함께, 작업부하의 태스크들이 할당되어야 하는 특정의 포그 디바이스들을 결정하는 스케줄링 함수이다. 그에 따라, 상기 프라이버시 제약조건(PC)은 특정의 접속성 링크의 프라이버시 레벨 협약(PLA)이 그 접속성 링크를 통해 송신되는 특정의 데이터 전송의 프라이버시 정책(PP)을 수용할 수 있을 것을 요구한다. 예를 들어, 일부 실시예들에서, PP 레벨 1(무제한 액세스)의 데이터 전송은 PLA 레벨 1(고도 보안)의 링크에만 매핑될 수 있는 반면, PP 레벨 2(프라이버시 보호)의 데이터 전송은 PLA 레벨 1(고도 보안) 및 PLA 레벨 2(제한된 보안)의 접속성 링크들에만 매핑될 수 있다.
더욱이, 일부 실시예들에서, 상기 프라이버시 제약조건(PC)을 준수하는 비주얼 포그 스케줄은 정수 선형 프로그래밍(ILP)을 사용하여 결정될 수 있다. 정수 선형 프로그래밍(ILP)은 선형 관계들에 의해 표현되는 수학적 모델을 풀거나 최적화하기 위한 수학적 최적화 또는 실현성 기술이다. 특히, ILP는, 부가의 선형 등식 및 선형 부등식 제약조건들에 따라, 선형 목적 함수를 최적화하는 데 사용될 수 있다. 일부 경우들에서, 예를 들어, ILP 문제는 다음과 같이 표현될 수 있다:
minimize:
Figure pct00027
(목적 항)
subject to:
Figure pct00028
(부등식 제약조건)
Figure pct00029
(등식 제약조건)
and:
Figure pct00030
(이진 제약조건).
더욱이, 이 ILP 모델은, 프라이버시 제약조건 및 임의의 다른 디바이스, 네트워크, 또는 매핑 제약조건들과 같은, 다른 부가의 제약조건들을 또한 준수하면서, 지정된 목적(예를 들어, 총 네트워크 이용률)을 충족시키는 최적의 스케줄
Figure pct00031
를 결정하는 데 사용될 수 있다. 예를 들어, 비주얼 포그 스케줄링을 수행하기 위해 상기 예시적인 ILP 모델을 사용할 때, x는 가능한 스케줄들
Figure pct00032
의 컬렉션을 제시하고, K는 x의 길이이며, 목적 항은 최소화될 스케줄링 목적(예를 들어, 총 네트워크 이용률)을 제시하고, 부등식/등식 제약조건들은, 디바이스, 네트워크, 매핑, 및/또는 프라이버시 제약조건들과 같은, 임의의 부가 제약조건들을 제시한다. 상기 프라이버시 제약조건(PC)은, 예를 들어, ILP 문제의 부등식 제약조건으로서 제시될 수 있다.
도 54는 프라이버시 보호 분산 비주얼 프로세싱의 예시적인 실시예에 대한 플로차트(5400)를 예시한다. 일부 실시예들에서, 예를 들어, 플로차트(5400)는 본 개시내용 전반에 걸쳐 설명된 비주얼 컴퓨팅 실시예들(예를 들어, 도 41 내지 도 43의 프라이버시 보호 분산 비주얼 프로세싱 기술들 및/또는 본 개시내용에 전반에 걸쳐 설명된 비주얼 컴퓨팅 아키텍처)를 사용하여 구현될 수 있다.
플로차트는 블록(5402)에서 새로운 작업부하를 식별하는 것으로 시작될 수 있다. 일부 실시예들에서, 예를 들어, 새로운 작업부하는 하나 이상의 센서에 의해 캡처되는 센서 데이터를 프로세싱하는 것과 연관된 복수의 태스크들을 포함할 수 있다. 예를 들어, 일부 실시예들에서, 센서 데이터는 하나 이상의 비전 기반 센서(예를 들어, 카메라, 적외선 센서, 및/또는 레이저 기반 센서)에 의해 캡처되는 비주얼 데이터일 수 있다.
플로차트는 이어서 작업부하에 기초하여 작업부하 그래프를 생성하기 위해 블록(5404)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 작업부하 그래프는 작업부하의 기본 태스크들과 연관된 정보를, 그 태스크들 사이의 태스크 의존성들과 함께, 포함할 수 있다.
플로차트는 이어서 디바이스 접속성 그래프를 생성하거나 식별하기 위해 블록(5406)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 디바이스 접속성 그래프는, 에지, 클라우드, 및/또는 중간 네트워크 프로세싱 디바이스들과 같은, 복수의 프로세싱 디바이스들과 연관된 디바이스 접속성 정보를 포함할 수 있다. 디바이스 접속성 정보는, 예를 들어, 복수의 프로세싱 디바이스들 사이의 디바이스 접속성 링크들과 연관된 정보를 포함할 수 있다.
플로차트는 이어서 작업부하 및/또는 그의 기본 태스크들과 연관된 프라이버시 정책을 식별하기 위해 블록(5408)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 프라이버시 정책은 작업부하 태스크들 사이의 태스크 의존성들과 연관된 프라이버시 요구사항들을 포함할 수 있다.
플로차트는 이어서 복수의 프로세싱 디바이스들과 연관된 프라이버시 레벨 정보를 식별하기 위해 블록(5410)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 프라이버시 레벨 정보는 복수의 프로세싱 디바이스들 사이의 디바이스 접속성 링크들에 의해 제공되는 프라이버시 레벨들을 포함할 수 있다. 더욱이, 일부 실시예들에서는, 프라이버시 레벨 정보는 프라이버시 레벨 협약에 의해 지정될 수 있다.
플로차트는 이어서 프라이버시 정책 및 프라이버시 레벨 정보에 기초하여 작업부하 스케줄링에 대한 프라이버시 제약조건을 식별하기 위해 블록(5412)으로 진행할 수 있다. 일부 실시예들에서, 예를 들어, 프라이버시 제약조건은 특정의 접속성 링크의 프라이버시 레벨이 데이터 전송을 위해 그 접속성 링크에 매핑되는 임의의 태스크 의존성의 프라이버시 정책을 수용할 수 있을 것을 요구할 수 있다.
플로차트는 이어서 작업부하 스케줄을 결정하기 위해 블록(5414)으로 진행할 수 있다. 작업부하 스케줄은, 예를 들어, 작업부하를 복수의 프로세싱 디바이스들에 매핑하는 것을 포함할 수 있다. 더욱이, 일부 실시예들에서는, 작업부하 스케줄은 프라이버시 제약조건, 작업부하 그래프, 및 디바이스 접속성 그래프에 기초하여 결정될 수 있다. 예를 들어, 일부 실시예들에서, 작업부하 스케줄은 (예를 들어, 도 41 내지 도 43과 관련하여 설명된 바와 같이) 프라이버시 제약조건, 작업부하 그래프, 및 디바이스 접속성 그래프에 기초하여 정수 선형 프로그래밍 모델을 푸는 것에 의해 결정될 수 있다. 이러한 방식으로, 결과적인 작업부하 스케줄은 프라이버시 제약조건을 준수하는 방식으로 결정된다. 일부 경우들에서, 프라이버시 제약조건은 작업부하 그래프, 디바이스 접속성 그래프, 작업부하 스케줄, 및/또는 센서 네트워크 동작의 다른 컴포넌트로부터 (인구통계 데이터, 사용자 데이터, 또는 다른 컨텍스트와 같은) 감지된 또는 추론된 콘텐츠의 분리(disassociation)를 요구할 수 있다. 게다가, 작업부하 스케줄은 커리 함수들을 이용할 수 있으며, 여기서 프라이버시 제약조건은 애널리틱스 함수를 로컬로 수행하도록 스케줄링 함수에 지시할 수 있다(신뢰할 수 없는 당사자의 제어 하에 있을 수 있는 집계 및 애널리틱스 노드에 잠재적으로 프라이버시에 민감한 데이터를 분배하는 것을 피함). 더욱이, 일부 실시예들에서는, 머신 러닝 모델은 프라이버시 제약된 작업부하 스케줄링을 최적화하는 데 사용될 수 있다.
일부 실시예들에서, 결과적인 작업부하 스케줄은 이어서 작업부하를 실행하기 위해 (예를 들어, 통신 인터페이스를 통해) 복수의 프로세싱 디바이스들에 분배될 수 있다.
이 시점에서, 플로차트가 완료될 수 있다. 그렇지만, 일부 실시예들에서, 플로차트가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 플로차트는 새로운 작업부하들을 스케줄링하는 것을 계속하기 위해 블록(5402)에서 재시작될 수 있다.
도 44 내지 도 46은 분산 컴퓨팅 네트워크들에 대한 자기 주권 디바이스 식별의 예시적인 실시예들을 예시한다. 일부 실시예들에서, 예를 들어, 포그 노드(예를 들어, IoT 센서, 액추에이터, 카메라, 제어기, 게이트웨이, 및/또는 임의의 다른 유형의 포그 노드)는 다수의 상이한 분산 컴퓨팅 네트워크들(예를 들어, 비주얼 포그 네트워크들)에 참여할 수 있는 "멀티 테넌트" 노드일 수 있다. 일부 실시예들에서, 멀티 테넌트 프로세싱은, TEE(Trusted Execution Environment)(예를 들어, Intel SGX 또는 ARM TrustZone)와 같은, 테넌트 격리 기술의 사용을 수반할 수 있다. 부가적으로, 테넌트 격리는 운영 체제-부과 자원 제한들, 네임스페이스 제한들, 및/또는, 달리 "컨테이너"라고 알려진, 프로세스 액세스 제어들을 사용하여 달성될 수 있다. 테넌트 격리는 추가로 가상화를 사용하여 달성될 수 있으며, 여기서 제1 VM은 제1 테넌트를 제2 VM의 제2 테넌트로부터 격리시킨다.
게다가, 특정 네트워크들은 (예를 들어, OCF(Open Connectivity Foundation) 및/또는 Intel의 SDO(Secure Device Onboard) 기술의 온보딩/커미셔닝 프로토콜들을 사용하여) 포그 노드가 각각의 네트워크에 액세스하도록 허용되기 전에 새로운 포그 노드가 "온보딩되거나" 또는 "커미셔닝될" 것을 요구할 수 있다. 그렇지만, 많은 비주얼 컴퓨팅 솔루션들은 노드의 소유권이 단일(singular) - 이는 각각의 노드가 하나의 소유자만을 갖는다는 것을 의미함 - 이라고 가정할 수 있다. 그에 따라, 멀티 테넌트 포그 노드가 다수의 포그 네트워크들에 참여하는 것으로부터 소유권 분쟁들이 발생할 수 있다. 그렇지만, 멀티 테넌트 포그 노드의 실제 또는 원래의 소유자는 이러한 소유권 분쟁들을 피하는 데 관심이 있다. 그에 따라, 많은 비주얼 컴퓨팅 솔루션들이, (예를 들어, OCF 또는 Intel SDO에 의해 정의되는 바와 같은) 각각의 네트워크의 온보딩 또는 커미셔닝 프로토콜들을 또한 준수하면서 다수의 포그 네트워크들에 참여할 수 있는, 멀티 테넌트 포그 노드들에는 부적합하다.
그에 따라, 예시된 실시예들에서, 포그 노드가 다른 포그 네트워크들에 참여하거나 이들로 로밍할 때에도 멀티 테넌트 포그 노드는 노드 소유자가 소유권의 주장을 유지할 수 있게 해주기 위해 자기 주권 디바이스 아이덴티티를 사용할 수 있다. 일부 실시예들에서, 예를 들어, 포그 노드들 또는 디바이스들의 아이덴티티들을 등록하기 위해 자기 주권 아이덴티티 블록체인이 사용될 수 있다. 블록체인은, 예를 들어, 암호화 접근법들을 사용하여 링크되고 그리고/또는 보안되는 레코드들 또는 블록들의 동적 리스트일 수 있다. 일부 실시예들에서, 예를 들어, 블록체인에서의 각각의 블록은 이전 블록, 타임스탬프, 트랜잭션 데이터 등에 링크되는 해시 포인터를 포함할 수 있다. 그에 따라, 일부 실시예들에서, 블록체인은 효율적이고, 검증가능하며, 그리고/또는 영구적인 방식으로 트랜잭션들을 기록하기 위한 분산 원장으로서 사용될 수 있다. 비주얼 컴퓨팅에서, 예를 들어, 새로운 포그 노드에 대한 디바이스 식별자를 추가하기 전에, 블록체인은 식별자가 다른 노드에 의해 이전에 주장되지 않았음을 검증하기 위해 임의로 사용될 수 있다. 게다가, 포그 노드의 디바이스 아이덴티티를 검증하는 데 사용되는 공개 키가 또한 블록체인에 제공될 수 있어, 디바이스가 자신이 그의 아이덴티티의 정당한 소유자임을 나중에 증명할 수 있게 해준다.
도 44는 멀티 테넌트 디바이스 식별을 갖는 분산 컴퓨팅 아키텍처(4400)의 예시적인 실시예를 예시한다. 예시된 실시예에서, 아키텍처(4400)는, 아래에서 추가로 설명되는 바와 같이, 포그 네트워크 A 및 포그 네트워크 B(4410a 및 4410b), 자기 주권 아이덴티티 블록체인(4420), 및 새로운 포그 디바이스(4430)를 포함한다.
다수의 포그 네트워크들(4410)에서 사용되려고 모색하지만 임의의 특정 포그 네트워크에 독점적이지 않은 새로운 포그 디바이스(4430)는 포그 네트워크들 각각에 대한 가상 샌드박스 환경을 생성하고 유지하기에 충분한 자원들 또는 능력들을 갖지 않을 수 있다. 더욱이, 각각의 포그 네트워크(4410)는 그 네트워크에 독점적이고 다른 포그 네트워크들로 로밍하지 않는 그 자신의 로컬 포그 디바이스들의 큰 세트를 가질 수 있다. 그에 따라, 충돌하는 아이덴티티를 갖는 새로운 디바이스(4430)가 특정의 포그 네트워크로 로밍할 때까지 디바이스 식별자들을 재사용하는 것이 중복적인 식별자들의 중대한 문제를 제기하지 않을 수 있다.
그렇지만, 디바이스의 아이덴티티를 변경하는 것과 연관된 비용이 종종 있는데, 그 이유는 자격증명들, 액세스 토큰들, 및 애플리케이션 로직이 디바이스 아이덴티티에 링크될 수 있기 때문이다. 더욱이, 충돌하는 식별자들을 갖는 디바이스들의 각자의 소유자들은, 비용을 부담하는 일 없이, (예를 들어, 소유권 분쟁들을 피하기 위해) 충돌을 해결하는 데 자기 이해를 갖는다. 예를 들어, 충돌하는 디바이스들은 제각기 서로를 "외부에서 온 것(foreign)"이라고 볼 수 있으며, 따라서 각각의 디바이스는 다른 "외부" 디바이스가 아이덴티티 변경의 비용을 부담하기를 원할 수 있다. 그에 따라, 충돌하는 아이덴티티들을 갖는 디바이스들의 대립하는 자기 이해를 해결하기 위해, 블록체인(4420)은 디바이스에 아이덴티티의 사용에 대한 우선권을 부여하기 위한 공정한 알고리즘을 제공하는 데 사용될 수 있다. 일부 실시예들에서, 예를 들어, 특정의 아이덴티티를 블록체인(4420)에 먼저 등록한 디바이스가 충돌의 경우에 우선권을 부여받는다.
도 45는 자기 주권 디바이스 아이덴티티의 이름 등록을 수행하기 위한 예시적인 호 흐름(4500)을 예시한다. 일부 실시예들에서, 예를 들어, 새로운 포그 디바이스를 비주얼 포그 네트워크에 온보딩하기 전에 자기 주권 디바이스 아이덴티티의 등록이 수행될 수 있다. 예를 들어, 비주얼 포그 네트워크에 온보딩되기 전에, 포그 디바이스는 디바이스 아이덴티티의 자신의 선택을 블록체인에 등록할 수 있다.
더욱이, 블록체인은, 예를 들어, 먼저 중복들에 대해 체크하고 중복들이 존재하지 않는 경우에만 등록을 허용함으로써, 중복 아이덴티티 등록들을 방지하기 위한 정책을 가질 수 있다. 예를 들어, 중복 아이덴티티 검출은 아이덴티티 등록에 사용되는 트랜잭션 블록들을 베팅(vetting)하기 위한 요구사항으로서 블록체인 프로세싱 노드에 의해 수행될 수 있다. 예시된 호 흐름(4500)에서, 예를 들어, 각각의 노드는 다음과 같은 단계들을 수행한다:
(1) 새로운 디바이스로부터 트랜잭션 요청을 수신한다: TXn+1 = {S1, “A71C3”}, 여기서 S1 = Sign_Kalice(“A71C3”);
(2) 해시 H1 = SHA256(“A71C3”)을 계산한다;
(3) 트랜잭션 어트리뷰트들의 해시 트리를 탐색하고, 여기서 Bx-poss = Search(TxTree, H1)이다;
(4) IF Bx-poss = “H1” THEN ERROR_DUP_FOUND를 반환한다;
(5) ELSE IF Bx-poss = “”THEN TXn+1 을 현재 블록에 추가하고, 여기서 CurrentBlock = [TXn+1, TXn, TXn-1, …, TXn-m]이다;
(6) 새로운 현재 블록 해시 BH = SHA256([TXn+1, TXn, TXn-1, …, TXn-m])을 계산한다;
(7) BH를 Bcurr-pos (현재 위치)에서 블록체인에 기입한다; 그리고
(8) 튜플 (H1, BH, Bx-poss)를 TxTree에 삽입한다.
그렇지만, 일부 실시예들에서, 아이덴티티 또는 이름 등록 동안 중복들에 대해 체크하지 않고 그 대신에 중복 아이덴티티들을 해결하기 위해 분쟁 해결에 의존하는 정책과 같은, 덜 제한적인 정책이 사용될 수 있다. 예를 들어, 디바이스가 새로운 포그 네트워크에 온보딩될 때, 식별자가 이전에 사용되었는지를 결정하기 위해 블록체인이 조회될 수 있고, 만약 그렇다면, 충돌 해결이 수행될 수 있다. 덜 제한적인 정책의 장점들은, 예들 중에서도, 개선된 성능 및 대량 등록 작업부하들을 지원하는 능력을 포함한다.
도 46은 자기 주권 디바이스 아이덴티티들의 충돌 해결을 위한 예시적인 호 흐름(4600)을 예시한다. 일부 상황들에서, 예를 들어, 등록 시에 새로운 디바이스 식별자가 전역적으로 고유하다는 것을 검증할 필요가 없을 수 있으며, 그 대신에, 새로운 디바이스가 로컬 포그 네트워크에 온보딩되고 기존의 디바이스가 이미 동일한 아이덴티티를 가질 때 충돌하는 아이덴티티들이 해결될 수 있다. 예를 들어, 비-전역적 식별자들을 사용하는 것에 의해 그리고 상호작용들이 외부 네트워크로부터의 엔티티를 수반할 때 식별자들을 스위칭하는 것에 의해 프라이버시 목표들이 달성될 수 있다. 프라이버시 목표들을 달성하는 것은 (제조업체들이 다수의 네트워크들에서 발생하고 다수의 소유자들 및 사용자들을 관여시키는 다양한 트랜잭션 세트를 교차 상관시키기 위해 후속하여 사용될 수 있는 전역적으로 고유한 ID들을 공급하는 것을 수반하는 전략보다는) 동적으로 해결되는 더 빈번한 디바이스 ID 충돌들을 결과할 수 있다.
그에 따라, 일부 실시예들에서, 특정의 포그 네트워크 상의 충돌하는 디바이스 아이덴티티들은 충돌 해결 호 흐름(4600)을 사용하여 해결될 수 있다. 예시된 호 흐름(4600)에서, 예를 들어, 블록체인은 아이덴티티 등록 우선순위(예를 들어, 중복 아이덴티티를 블록체인에 등록한 첫 번째 디바이스가 우선권을 받음)에 기초하여 충돌들을 해결하기 위해 사용된다. 그에 따라, 이 접근법은 디바이스 식별자들이 전역적으로 고유할 것을 요구하지는 않지만, 동일한 포그 네트워크 상의 다수의 디바이스들이 동일한 아이덴티티를 갖는 경우에, 이는 그 특정의 네트워크와 상호작용할 때 디바이스들 중 하나가 상이한 식별자를 선택할 것을 요구한다. 더욱이, 어느 디바이스가 그의 아이덴티티를 변경하는 비용을 지불해야 하는지에 대한 분쟁이 블록체인을 사용하여 해결된다. 비교로서, 도 47은 충돌 해결을 이용하지 않는 비주얼 포그 네트워크에서의 디바이스 온보딩/커미셔닝의 예를 예시한다.
이러한 방식으로, 도 44 내지 도 46의 예시된 실시예들에 기초하여, 디바이스 아이덴티티 주장은 시스템 온 칩(SoC) 또는 임의의 다른 유형의 컴퓨팅 칩, 회로, 또는 디바이스와 같은, 디바이스의 제조 동안 언제든지 수행될 수 있다. 더욱이, 디바이스 "소유권"에 대한 주장보다는, 디바이스 아이덴티티 주장은 아이덴티티 소유권의 주장을 수반하며, 여기서 디바이스는 아이덴티티의 소유자이다. 그에 따라, 특정의 디바이스의 공급망 내의 임의의 적절한 엔티티(예를 들어, ODM(original design manufacturer), OEM(original equipment manufacturer), 유통업체, 소매업체, VAR(value-added reseller), 설치자, 또는 최종 고객)는 특정의 엔티티의 원숙함(sophistication) 및 능력에 기초하여 디바이스의 아이덴티티를 주장할 수 있다.
도 48 및 도 49는 자기 주권 블록체인을 사용하는 분산 컴퓨팅을 위한 알고리즘 식별의 예시적인 실시예들을 예시한다.
분산 컴퓨팅 상호운용성은 각각의 노드에서 정보를 프로세싱하는 데 사용되는 특정의 알고리즘에 관한 참여 노드들 간의 합의에 의존한다. 일부 경우들에서, 예를 들어, 노드들 간의 알고리즘 합의는 알고리즘 식별자들의 레지스트리 또는 데이터베이스를 관리하는 중앙 기관에 의존할 수 있다. 이러한 방식으로, 분산 노드들은 적절한 알고리즘들의 선택을 위해 레지스트리에 의존해야하며, 그렇지 않으면 상호운용성이 달성되지 않는다.
그렇지만, 예컨대, 레지스트리가 오프라인으로 될 때, 레지스트리가 새로운 알고리즘 식별자들을 게시하는 데 더딜 때(예를 들어, 따라서 새로운 알고리즘이 배포될 수 있는 속도를 느려지게 함), 중앙 기관이 정치화의 대상으로 될 때(예를 들어, 프로세싱 비용, 정치적 선호, 및/또는 분산 컴퓨팅 애플리케이션의 경제성과 관계가 없는 다른 형태들의 조작에 대한 배상으로 등록 요청들이 보류될 때) 등에, 중앙 기관들에 대한 이러한 의존성은 서비스 중단들을 가져올 수 있다. 예를 들어, 이러한 접근법들은 종종 고도로 중앙집중화되어 있으며, 국제 또는 정부 기관들을 수반할 수 있으며 이는 정치화 및/또는 정부 규제(예를 들어, 망 중립성(net neutrality))의 영향을 받기 쉬울 수 있다. 더욱이, 어느 알고리즘들을 사용할 것인지에 대한 합의가 분산 컴퓨팅의 기본이기 때문에, 알고리즘 식별자들을 관리하기 위한 중앙집중식 접근법은 인공적인 병목 또는 질식 지점을 만들 수 있으며, 규제 또는 통제를 부과하려고 모색하는 엔티티들은 사실상 분산 컴퓨팅 노드들 간의 상호운용성을 제한하거나 방지하기 위해 중앙집중식 설계를 활용할 수 있다.
그에 따라, 도 48 및 도 49의 예시된 실시예들에서, 블록체인은 (예를 들어, 자기 주권 알고리즘 식별자들을 사용하여) 분산 컴퓨팅 알고리즘들의 컬렉션을 등록하는 데 사용된다. 일부 실시예들에서, 예를 들어, 블록체인은 알고리즘 등록 요청을 블록체인 트랜잭션으로서 프로세싱할 수 있으며, 여기서 등록자는 고유한 알고리즘 식별자를 선택하고 알고리즘 함수를 지정한다. 다양한 실시예들에서, 알고리즘 함수는 인간 판독가능 형태(예를 들어, 자연어 설명 또는 의사코드), 머신 판독가능 형태, 및/또는 머신 실행가능 형태로 지정될 수 있다. 더욱이, 알고리즘 등록을 수락하기 위한 조건 또는 전제조건으로서, 특정의 알고리즘은 블록체인 프로세싱 노드들에 의한 다양한 레벨들의 "인증(certification)"을 받을 수 있다. 이러한 방식으로, 등록된 알고리즘 식별자를 변경하지 않으면서 점진적인 레벨들의 보증으로 알고리즘이 수락될 수 있다.
그에 따라, 설명된 실시예들은 유용한 분산 컴퓨팅 알고리즘을 발견하는 누구라도 그 알고리즘을 대규모 커뮤니티에 알려지게 하고 이용가능하게 할 수 있게 해준다. 블록체인 네트워크들이, 예를 들어, 수가 많고 대규모 사용자 커뮤니티들에 개방되어 있다고 가정된다. 이러한 방식으로, 커뮤니티의 멤버들은 관료주의적 걸림돌들 및 감독에 의해 방해받지 않으면서 분산 컴퓨팅 시스템들을 구축할 수 있다. 그 결과, 알고리즘 개발과 실제 배포 사이의 시간이 최소화될 수 있다.
도 48은 자기 주권 알고리즘 식별을 갖는 분산 컴퓨팅 아키텍처(4800)의 예시적인 실시예를 예시한다. 예시된 실시예에서, 아키텍처(4800)는 포그 네트워크 A 및 포그 네트워크 B(4810a 및 4810b)를, 분산 컴퓨팅 알고리즘들(4430)을 등록하고 식별하기 위한 자기 주권 블록체인(4820)과 함께, 포함한다. 일부 실시예들에서, 예를 들어, 아키텍처(4800)는 비주얼 포그 컴퓨팅에 사용되는 알고리즘들을 등록 및/또는 식별하는 데 사용될 수 있다.
예로서, 유용한 분산 컴퓨팅 알고리즘(4430)이 제1 포그 네트워크(예를 들어, 포그 네트워크 A(4810a))에서 발명되고, 발견되며, 그리고/또는 개선되면, 제1 포그 네트워크는 새로운 알고리즘을 알고리즘 식별에 사용되는 자기 주권 블록체인(4420)에 등록할 수 있다. 블록체인(4420)의 블록체인 프로세싱 노드들은 이어서 (예를 들어, 알고리즘의 계산 속성들 및 결과에 기초하여) 알고리즘의 적법성에 관해 점진적으로 더 강한 보증들을 제공하기 위해 알고리즘을 점진적으로 베팅할 수 있다. 더욱이, 제2 포그 네트워크(예를 들어, 포그 네트워크 B(4810b))는 후속하여 새로운 알고리즘의 이용가능성을 통지받을 수 있고, (예를 들어, 블록체인(4420)에서의 알고리즘의 베팅 상태를 조회함으로써) 새로운 알고리즘이 적절하게 베팅되었는지를 결정할 수 있다. 제2 포그 네트워크가 새로운 알고리즘의 베팅에 만족하면, 제2 포그 네트워크는 알고리즘을 사용하기로 동의할 수 있다. 예를 들어, 일부 실시예들에서, 알고리즘이 적절히 베팅된 후에, 제1 포그 네트워크와 제2 포그 네트워크는 새로운 알고리즘을 사용하기 시작하기로 동의할 수 있다.
일부 실시예들에서, 알고리즘 등록 및 베팅 프로세스는: (1) 자기 주권 알고리즘 식별자(self-sovereign algorithm identifier)(SSAI)의 등록; (2) 알고리즘의 인간 판독가능 설명의 피어-리뷰(peer-review); (3) 알고리즘의 머신 판독가능 표현의 머신 분석(예를 들어, 안전한 행동 속성들을 식별하기 위한 로직 프로세서에 의한 분석); 및 (4) 알고리즘의 머신 실행가능 구현의 실행(예를 들어, 예상된 행동을 분석하는 데 사용되는 샌드박스 환경에서의 실행)을 수반할 수 있다. 더욱이, 일단 특정 임계치(예를 들어, 과반수)의 블록체인 프로세싱 노드들 또는 평가자들이 유사한 베팅 결과들을 달성하면, 알고리즘 아이덴티티 및 그의 베팅 기준들/결과들은 블록체인(4420)의 블록에 기록된다.
도 49는 자기 주권 블록체인을 사용하여 분산 컴퓨팅 알고리즘을 등록하기 위한 예시적인 호 흐름(4900)을 예시한다. 일부 실시예들에서, 예를 들어, 알고리즘은 하나 이상의 분산 또는 포그 컴퓨팅 환경에 걸쳐 알고리즘의 사용을 용이하게 하기 위해 자기 주권 블록체인을 사용하여 등록될 수 있다. 일부 경우들에서, 예를 들어, 분산 컴퓨팅 환경은, 컴퓨팅 환경이 특정의 함수(들)를 수행하고, 모든 컴퓨팅 노드들이 함수 이름과 시맨틱스에 관해 합의하도록 함수 이름이 블록체인에 등록되어 다른 함수들과 명확하게 구분되는, FaaS(Functions-as-a-Service) 또는 "서버리스(serverless)" 함수들이라고 지칭될 수 있다. 더욱이, 일부 실시예들에서는, 블록체인은 알고리즘이 예상대로 거동하도록 보장하고 알고리즘 식별자가 아직 사용 중이 아님을 검증하기 위해 다양한 레벨들의 베팅을 활용할 수 있다.
예시된 호 흐름(4900)에서, 예를 들어, 각각의 블록체인 프로세싱 노드는 다음과 같은 단계들을 수행한다:
(1) 새로운 디바이스로부터 트랜잭션 요청을 수신한다: TXn+1 = {S1, “91E21”}, 여기서 S1 = Sign_Kalice(“91E21”, “Human-readable-description”, “Machine-readable-description”, “Machine-executable-implementation”)이다;
(2) 임의적인 알고리즘 베팅(예를 들어, 인간 판독가능 알고리즘 설명의 피어-리뷰, 머신 판독가능 알고리즘 설명/표현의 논리적 분석, 머신 실행가능 알고리즘 형태의 샌드박스 실행);
(3) 해시 H1 = SHA256(“91E21”)을 계산한다;
(4) 트랜잭션 어트리뷰트들의 해시 트리를 탐색하고, 여기서 Bx-poss = Search(TxTree, H1)이다;
(5) IF Bx-poss = “H1” THEN ERROR_DUP_FOUND를 반환한다;
(6) ELSE IF Bx-poss = “”THEN TXn+1 을 현재 블록에 추가하고, 여기서 CurrentBlock = [TXn+1, TXn, TXn-1, …, TXn-m]이다;
(7) 새로운 현재 블록 해시 BH = SHA256([TXn+1, TXn, TXn-1, …, TXn-m])을 계산한다;
(8) BH를 Bcurr-pos (현재 위치)에서 블록체인에 기입한다; 그리고
(9) 튜플 (H1, BH, Bx-poss)를 TxTree에 삽입한다.
일단 베팅 프로세스가 완료되면, 블록체인은 알고리즘의 베팅되고 등록된 인스턴스 및 그의 연관된 식별자를 포함한다. 이러한 방식으로, 분산 컴퓨팅 노드들은 이어서 (예를 들어, 알고리즘 식별자 및 임의로 그의 머신 판독가능 및/또는 머신 실행가능 형태들에 기초하여) 알고리즘을 사용하기 시작할 수 있다.
도 91은 디바이스 아이덴티티 블록체인의 예시적인 실시예에 대한 플로차트(9100)를 예시한다. 다양한 실시예들에서, 예를 들어, 플로차트(9100)는 본 개시내용 전반에 걸쳐 설명된 비주얼 컴퓨팅 아키텍처 및 기능성을 사용하여 구현될 수 있다.
일부 실시예들에서, 예를 들어, 디바이스 아이덴티티 블록체인은 다수의 네트워크들에 참여할 수 있고 그리고/또는 다수의 네트워크들을 통해 통신할 수 있는 디바이스들의 컬렉션(예를 들어, 다수의 IoT 네트워크들에 참여할 수 있는 IoT 디바이스들, 다수의 비주얼 포그 네트워크들에 참여할 수 있는 카메라들/센서들, 및/또는 다수의 분산 컴퓨팅 네트워크들에 참여할 수 있는 임의의 다른 유형의 디바이스)에 대한 자기 주권 디바이스 아이덴티티들을 관리하는 데 사용될 수 있다. 더욱이, 일부 실시예들에서는, 디바이스 아이덴티티 블록체인은 하나 이상의 블록체인 프로세싱 디바이스에 의해 관리될 수 있다. 예를 들어, 일부 경우들에서, 블록체인 프로세싱 디바이스들의 컬렉션은 분산 방식으로 디바이스 아이덴티티 블록체인을 집합적으로 관리할 수 있다.
그에 따라, 특정의 디바이스는, 디바이스가 하나 이상의 분산 컴퓨팅 네트워크에 합류하기 전에, 그의 연관된 디바이스 아이덴티티를 디바이스 아이덴티티 블록체인에 등록할 수 있다. 이러한 방식으로, 디바이스가 후속하여 특정의 네트워크(들)에 온보딩하려고 시도할 때, 네트워크(들)는 디바이스가 자신의 주장된 디바이스 아이덴티티의 진정한 소유자임을 검증하기 위해 디바이스 아이덴티티 블록체인에 질의할 수 있다.
예를 들어, 새로운 디바이스가 특정의 네트워크에 온보딩하려고 시도할 때, 블록체인 프로세싱 디바이스(들)는 네트워크로부터 아이덴티티 조회 요청을 수신할 수 있고, 네트워크는 새로운 디바이스에 의해 주장된 디바이스 아이덴티티와 연관된 트랜잭션을 디바이스 아이덴티티 블록체인에서 조회 또는 탐색하도록 블록체인 디바이스들에 요청할 수 있다. 대응하는 디바이스 아이덴티티 트랜잭션은 이어서 다시 네트워크로 전송될 수 있고, 따라서 네트워크가 새로운 디바이스에 의해 주장된 디바이스 아이덴티티가 실제로 그 디바이스에 의해 소유되거나 그 디바이스에 등록되어 있음을 검증할 수 있게 해준다. 디바이스가 다른 네트워크들에 온보딩하려고 시도할 때, 그 네트워크들이 새로운 디바이스가 그의 주장된 아이덴티티의 진정한 소유자임을 유사하게 확인할 수 있도록 유사한 프로세스가 뒤따를 수 있다.
플로차트는, 디바이스 아이덴티티 트랜잭션이 제1 디바이스로부터 수신되는, 블록(9102)에서 시작된다. 일부 실시예들에서, 예를 들어, 디바이스 아이덴티티 트랜잭션은 디바이스 아이덴티티, 디지털 서명, 및/또는 제1 디바이스와 연관된 공개 키를 포함하고 그리고/또는 지시할 수 있다.
플로차트는 이어서, 디바이스 아이덴티티의 해시가 (예를 들어, SHA-2(Secure Hash Algorithm 2) 또는 임의의 다른 적합한 해시 알고리즘을 사용하여) 계산되는, 블록(9104)으로 진행한다.
플로차트는 이어서, 계산된 해시에 기초하여, 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 이미 등록되어 있는지를 결정하기 위해 블록(9106)으로 진행한다. 일부 실시예들에서, 예를 들어, 블록체인이 해시와 연관된 기존의 트랜잭션을 포함하는지를 결정하기 위해 디바이스 아이덴티티 블록체인과 연관된 해시 트리가 탐색될 수 있다.
블록(9106)에서의 답변이 예이면, 플로차트는, 디바이스 아이덴티티가 이미 등록되었음을 지시하는 에러가 제1 디바이스로 반환/전송되는, 블록(9108)으로 진행한다.
블록(9106)에서의 답변이 아니오이면, 플로차트는, 디바이스 아이덴티티 트랜잭션이 디바이스 아이덴티티 블록체인에 추가되는, 블록(9110)으로 진행한다. 일부 실시예들에서, 예를 들어, 디바이스 아이덴티티 트랜잭션은 디바이스 아이덴티티 블록체인과 연관된 최근 트랜잭션들의 현재 블록에 추가될 수 있다. 일단 현재 블록이 완료되면, 현재 블록은 이어서 해싱되어 디바이스 아이덴티티 블록체인에 기입될 수 있다. 이러한 방식으로, 일단 디바이스 아이덴티티 트랜잭션이 블록체인에 추가되면, 다른 디바이스들이 후속하여 동일한 디바이스 아이덴티티를 등록하려고 시도하는 경우 에러가 반환될 것이다.
이 시점에서, 플로차트가 완료될 수 있다. 그렇지만, 일부 실시예들에서, 플로차트가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 플로차트는 디바이스 아이덴티티 트랜잭션들을 프로세싱하는 것을 계속하기 위해 블록(9102)에서 재시작될 수 있다.
도 92는 분산 컴퓨팅 알고리즘들을 관리하기 위한 블록체인의 예시적인 실시예에 대한 플로차트(9200)를 예시한다. 다양한 실시예들에서, 예를 들어, 플로차트(9200)는 본 개시내용 전반에 걸쳐 설명된 비주얼 컴퓨팅 아키텍처 및 기능성을 사용하여 구현될 수 있다.
일부 실시예들에서, 예를 들어, 알고리즘 블록체인은 분산 컴퓨팅 네트워크(들)의 프로세싱 디바이스들에 의해 사용되는 알고리즘들(예를 들어, IoT 네트워크(들) 상의 IoT 디바이스들에 의해 사용되는 알고리즘들, 비주얼 포그 네트워크(들) 상의 카메라들/센서들 및/또는 다른 프로세싱 디바이스들에 의해 사용되는 알고리즘들, 및/또는 임의의 유형의 분산 컴퓨팅 네트워크에 대한 임의의 다른 유형의 디바이스에 의해 사용되는 알고리즘들)을 관리하는 데 사용될 수 있다. 더욱이, 일부 실시예들에서는, 알고리즘 블록체인은 하나 이상의 블록체인 프로세싱 디바이스에 의해 관리될 수 있다. 예를 들어, 일부 경우들에서, 블록체인 프로세싱 디바이스들의 컬렉션은 분산 방식으로 알고리즘 블록체인을 집합적으로 관리할 수 있다.
이러한 방식으로, 분산 컴퓨팅 네트워크(들)의 디바이스들에 대한 새로운 알고리즘들이 개발됨에 따라, 알고리즘들은 알고리즘 블록체인에 제출되고, 베팅되며, 이어서 적절한 베팅이 완료된 후에 블록체인에 추가될 수 있다. 이러한 방식으로, 일단 새로운 알고리즘이 블록체인에 추가되면, 그 알고리즘은 특정 분산 컴퓨팅 네트워크(들)의 디바이스들에 의해 사용될 수 있다.
예를 들어, 제1 네트워크는 새로운 알고리즘을 블록체인 프로세싱 디바이스(들)에 제출할 수 있고, 새로운 알고리즘은 적절한 베팅 및/또는 유효성 확인이 수행된 후에 알고리즘 블록체인에 후속하여 추가될 수 있다. 제2 네트워크는 이어서 새로운 알고리즘이 이용가능하다는 것을 통지받을 수 있고, 제2 네트워크는 이어서 새로운 알고리즘이 이용가능하고 적절히 유효성 확인되었거나 베팅되었음을 검증하기 위해 알고리즘 블록체인에 질의할 수 있다.
예를 들어, 제2 네트워크가 새로운 알고리즘의 이용가능성을 통지받은 후에, 블록체인 프로세싱 디바이스(들)는 (예를 들어, 알고리즘 식별자를 지정하는) 알고리즘 조회 요청을 제2 네트워크로부터 수신할 수 있다. 블록체인 프로세싱 디바이스(들)는 이어서 알고리즘 식별자와 연관된 알고리즘 등록 트랜잭션을 식별하기 위해 알고리즘 블록체인을 탐색할 수 있고, 대응하는 알고리즘 등록 트랜잭션이 이어서 제2 네트워크로 전송될 수 있다. 제2 네트워크가 새로운 알고리즘이 (예를 들어, 알고리즘 등록 트랜잭션에 포함된 유효성 확인 정보에 기초하여) 적절하게 베팅되었다고 결정하면, 제2 네트워크 내의 기본 디바이스들은 새로운 알고리즘을 사용하기 시작할 수 있다.
플로차트는, 알고리즘 등록 트랜잭션이 특정의 네트워크로부터(및/또는 그 네트워크와 연관된 디바이스로부터) 수신되는, 블록(9202)에서 시작된다. 알고리즘 등록 트랜잭션은, 예를 들어, 알고리즘 식별자, 알고리즘에 대한 설명, 및/또는 알고리즘의 표현(예를 들어, 알고리즘의 머신 판독가능 및/또는 머신 실행가능 표현)을 포함할 수 있다.
플로차트는 이어서, 알고리즘을 유효성 확인하기 위해 특정 테스트들이 수행되는, 블록(9204)으로 진행한다. 예를 들어, 하나 이상의 행동 속성을 식별하기 위해(예를 들어, 안전한 것으로 또는 그렇지 않고 불안전한/보안되지 않은/악의적인 것으로 중 어느 하나로 간주되는 행동을 식별하기 위해) 알고리즘의 표현이 분석될 수 있다. 알고리즘의 표현은 또한 (예를 들어, 샌드박스에서) 실행될 수 있으며, 그의 실행이 모니터링 및/또는 분석될 수 있다. 일부 경우들에서, 이러한 유효성 확인 테스트들은 블록체인 프로세싱 디바이스들에 의해 집합적으로 수행될 수 있다.
일단 블록체인 디바이스들이 알고리즘을 베팅하는 것을 완료하면, 플로차트는 이어서 알고리즘이 유효성 확인되었는지를 결정하기 위해 블록(9206)으로 진행한다. 블록(9206)에서의 답변이 아니오이면, 플로차트는, 알고리즘이 거부되는, 블록(9208)으로 진행한다. 블록(9206)에서의 답변이 예이면, 플로차트는, 알고리즘 등록 트랜잭션이 알고리즘 블록체인에 추가되는, 블록(9210)으로 진행한다. 하나 이상의 네트워크가 이어서 알고리즘의 이용가능성을 통지받을 수 있고, 그 네트워크들 상의 디바이스들은 알고리즘을 사용하기 시작할 수 있다.
이 시점에서, 플로차트가 완료될 수 있다. 그렇지만, 일부 실시예들에서, 플로차트가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 플로차트는 알고리즘 등록 트랜잭션들을 프로세싱하는 것을 계속하기 위해 블록(9202)에서 재시작될 수 있다.
애플리케이션들
본 개시내용 전반에 걸쳐 설명된 비주얼 포그 아키텍처 및 실시예들은, 디지털 보안 및 감시, 비즈니스 자동화 및 애널리틱스(예를 들어, 소매 및 기업), 운송(예를 들어, 교통 모니터링, 내비게이션, 주차, 인프라스트럭처 계획, 보안 또는 앰버 경보), 교육, 비디오 방송 및 재생, 인공 지능 등과 같은, 다양한 대규모 비주얼 컴퓨팅 애플리케이션들 및 사용 사례들에 사용될 수 있다.
예로서, 설명된 실시예들은 이벤트들 또는 비상 상황들을 자동으로 검출하고, 적절한 요원에게 통지하는 것, 관련된 또는 인근 카메라들에 의한 이벤트의 기록을 트리거하는 것 등과 같은, 특정 대응 조치들을 수행할 수 있는 긴급 구조원들을 위한 웨어러블 카메라들을 구현하는 데 사용될 수 있다.
다른 예로서, 설명된 실시예들은 다수의 상이한 카메라들, 센서들, 및/또는 위치들로부터의 비주얼 데이터 스트림들에 걸쳐 사람들 탐색 또는 얼굴 인식 능력들을 갖는 디지털 감시 및 보안(digital surveillance and security)(DSS) 시스템을 구현하는 데 사용될 수 있다.
다른 예로서, 설명된 실시예들은 번호판 식별 및 사기 검출 능력들(예를 들어, 대응하는 차량 기록과 매칭하지 않는 번호판을 갖는 자동차를 식별하는 것, 동일한 번호판을 갖는 다수의 자동차들을 식별하는 것 등)을 갖는 디지털 감시 및 보안(DSS) 시스템을 구현하는 데 사용될 수 있다.
다른 예로서, 설명된 실시예들은, 점포내 쇼핑객 이동(trip) 요약(예를 들어, 쇼핑객과 상호작용한 제품들 또는 매장들(departments)의 리스트), 점포간 쇼핑객 이동 요약(예를 들어, 신규 고객들과 재방문 고객들이 단일 또는 다수의 위치를 갖는 점포에 들어갈 때 이들을 구별함으로써 반복 고객들을 식별하는 것) 등과 같은, (예를 들어, 소매 쇼핑객들에 대한) 고객 통찰들 및 애널리틱스를 제공하기 위해 사용될 수 있다.
유사하게, 설명된 실시예들은 고객 또는 쇼핑객 통찰들 및 애널리틱스의 시각화(예를 들어, 인간 소비에 대한 비주얼 메타데이터의 그래프 표현을 시각화하는 것)를 제공하는 데 사용될 수 있다.
다른 예로서, 설명된 실시예들은 프라이버시 보호 방식으로(예를 들어, 성별, 연령, 인종 등의 인구통계학적 매핑을 위해 탑뷰 카메라들 또는 센서들을 사용하여) 자동화된 인구통계 식별을 수행하는 데 사용될 수 있다.
다른 예로서, 설명된 실시예들은 (예를 들어, 탑뷰 센서들 또는 카메라들 및/또는 멀티-모달 군중 감정 히트 매핑을 사용하여) 군중의 표현을 생성하기 위해 소매 점포들 또는 다른 오프라인(brick-and-mortar) 환경들에서 히트 매핑을 수행하는 데 사용될 수 있다. 일부 실시예들에서, 예를 들어, 예들 중에서도, 점포 레이아웃들의 최적화를 위해 히트 매핑이 활용될 수 있다.
다른 예로서, 설명된 실시예들은 멀티-모달 실시간 고객 리뷰들을 구현하는 데 사용될 수 있다. 예를 들어, 고객 리뷰들 및/또는 고객 만족도 정보가, 특정의 상점 또는 오프라인 환경의 임의의 제품들 또는 점포내 활동들에 대한 정량적 고객-대-고객 리뷰들로 변환될 수 있는, 다중 감각 데이터를 사용하여 실시간으로 수집 및 분석될 수 있다.
유사하게, 설명된 실시예들은 고객들로부터의 제품 리뷰들 및 소매업체들로부터의 고객 리뷰들 둘 다의 수집 및 분석에 초점을 맞출 수 있는, 멀티-모달 소매업체-쇼핑객 이중 리뷰를 구현하는 데 사용될 수 있다.
다른 예로서, 설명된 실시예들은 자동화된 고객 만족도 분석을 위해 사용될 수 있다. 예를 들어, 비언어적 의사 소통 또는 보디 랭귀지(body language)에 기초하여 체크 아웃 시에 고객 만족도를 측정하기 위해 비주얼 데이터가 사용될 수 있다. 이러한 방식으로, 수동 고객 피드백을 요구함이 없이(예를 들어, 버튼 또는 설문조사를 통해) 고객 만족도가 자동으로 추론될 수 있다.
다른 예로서, 설명된 실시예들은 직원-고객 상호작용들의 유효성을 모니터링하기 위해 사용될 수 있다. 예를 들어, 원하는 제품들 또는 아이템들을 발견하는 것과 관련하여 고객들과 판매원들 간의 의사소통의 유효성을 측정하고 트래킹하기 위해 비주얼 데이터가 사용될 수 있다. 일부 실시예들에서, 예를 들어, 점포 내의 사용자들을 트래킹하고, 고객-직원 접촉 및 상호작용들을 식별하며, 직원 및/또는 고객 응답들을 모니터링하기 위해 비주얼 데이터가 사용될 수 있다.
다른 예로서, 설명된 실시예들은 한 그룹의 사람들 내에서 컨텍스트적 정보(예를 들어, 관계들 또는 액션들)를 식별함으로써 역동적인 분위기 환경들을 제공하는 데 사용될 수 있다. 예를 들어, 개인들 및 이들의 연관된 컨텍스트적 정보를 식별하여 (예를 들어, 물리적 근접성 및/또는 대응하는 움직임에 기초하여) 이들이 동일한 그룹의 일부인지를 결정하기 위해, 그리고 만약 그렇다면, 그룹(예를 들어, 점포에서 함께 쇼핑하는 가족)의 다양한 파라미터들 또는 특성들을 식별하기 위해 비주얼 데이터가 사용될 수 있다.
다른 예로서, 설명된 실시예들은 이중 경매 실시간 입찰(real-time bidding)(RTB)을 구현하는 데 사용될 수 있다. 일부 실시예들에서, 예를 들어, 오프라인 소매업체들을 위한 다중-쇼핑객, 다중-입찰자 실시간 입찰(RTB)을 구현하기 위해 비주얼 데이터가 사용될 수 있다.
다른 예로서, 설명된 실시예들은 비주얼 데이터 및/또는 센서들에 기초하여 점포 레이아웃들에 대한 변경들을 모니터링하고 검출하는 데 사용될 수 있다.
다른 예로서, 설명된 실시예들은 로봇 인벤토리 트래킹 및 물류에 사용될 수 있다(예를 들어, 소매 점포들, 창고들, 사무실들 등의 인벤토리를 트래킹하기 위해 고정 및/또는 이동 카메라들을 사용함).
다른 예로서, 설명된 실시예들은 로봇 장비 검사에 사용될 수 있다(예를 들어, 공장, 플랜트, 창고, 점포, 사무실 등에 있는 장비의 안전성 및/또는 건강을 검사하기 위해 컴퓨터 비전 기술을 사용함).
다른 예로서, 설명된 실시예들은, 예를 들어, 고객 팁핑(tipping) 행동에 전형적으로 영향을 미치는 인자들을 반영하는 비주얼 데이터 및/또는 다중 감각 입력들에 기초하여, 자동화된 팁핑 추천들을 제공하는 데 사용될 수 있다.
다른 예로서, 설명된 실시예들은, 작업장 품질 관리, 직원 모니터링 등과 같은, 작업장 자동화를 위해 사용될 수 있다. 일부 실시예들에서, 예를 들어, 비주얼 데이터는 생산성을 개선시키기 위해 직원 감정들을 분석하는 데 사용될 수 있다.
다른 예로서, 설명된 실시예들은 교육 및/또는 자동화된 학습에 사용될 수 있다(예를 들어, 적절한 경우 추가 지원을 제공하기 위해 교실에서의 또는 가정에서의 학생 행동을 분석하기 위해 비주얼 데이터를 사용함).
다른 예로서, 설명된 실시예들은, 사용자 중심 비디오 렌더링, 집중 리플레이들(focused replays) 등과 같은, 비디오 재생을 위해 사용될 수 있다. 예를 들어, 사용자 중심 비디오 렌더링은 (예를 들어, 가상 현실(VR) 및/또는 증강 현실(AR) 애플리케이션들의 경우) 사용자가 무엇에 초점을 맞추고 있는지를 분석하고, 사용자의 초점 영역을 벗어난 비디오의 부분들에 대해 프로세싱을 수행하지 않거나 저해상도 프로세싱을 수행함으로써 360도 비디오에 대해 집중 렌더링(focused rendering)을 수행하는 데 사용될 수 있다. 다른 예로서, 초점 기반 비디오 리플레이들은 비디오 리플레이의 렌더링을, 대부분의 선수들이 위치되는 스포츠 리플레이의 부분과 같은, 관심 영역에 자동으로 집중시키는 데 사용될 수 있다.
다른 예로서, 설명된 실시예들은 인공 지능 시스템들을 트레이닝시키는 데 사용될 수 있다. 일부 실시예들에서, 예를 들어, 비주얼 데이터는, 딥 러닝 신경 네트워크들과 같은, 인공 지능 또는 머신 러닝 모델을 트레이닝시키는 데 사용될 수 있는 실측 자료(ground truth) 정보를 자동으로 생성하는 데 사용될 수 있다.
다른 예로서, 설명된 실시예들은, 도 55 내지 도 61과 관련하여 아래에 추가로 설명되는 바와 같이, 유비쿼터스 비주얼 컴퓨팅 증인을 구현하는 데 사용될 수 있다.
이 예들은 본 개시내용 전반에 걸쳐 설명되는 비주얼 포그 아키텍처를 사용하여 구현될 수 있는 비주얼 애플리케이션들 및 사용 사례들의 무한한 유니버스를 예시하는 것에 불과하다.
유비쿼터스 비주얼 컴퓨팅 증인
도 55 및 도 56은 유비쿼터스 비주얼 컴퓨팅 증인의 예시적인 실시예를 예시한다. 유비쿼터스 증인은 적시적이고, 정확하며, 포괄적인 방식으로 관심의 이벤트들, 사고들, 또는 이상들에 대한 증거를 수집하는 문제를 해결한다. 예를 들어, 경찰서는, 범죄 활동, 자동차 사고들(예를 들어, 원인을 식별하기 위해) 등에 대한 조사들을 수행할 것을 종종 요구하는, 법 집행 및 공공 안전에 전념하는 정부 기관이다. 마찬가지로, 마을 방범대(neighborhood watch)는 마을 내에서의 범죄 및 기물 파손을 모니터링하고 방지하는 데 전념하는 사람들의 조직화된 그룹이다. 이러한 유형들의 기능들은, 목격자들, 물리적 환경들, 전자적 소스들(예를 들어, 감시 시스템들) 등을 포함한, 다양한 소스들로부터 증거가 수집될 것을 종종 요구한다. 전술한 사용 사례에서의 주요 이슈들은 종종 가장 중요한 증거가 서드파티들로부터 얻어진다는 사실에 있다. 마을 방범대에서, 예를 들어, 이웃의 카메라는 인근 주택에서의 또는 그 주변에서의 사고의 훨씬 더 명확한 뷰를 캡처할 수 있다. 자동차 사고 조사들에서, 인근 자동차들, 도로변 인프라스트럭처 또는 도로변 유닛들(RSU들)(예를 들어, 가로등 기둥들, 간판들, 신호등들) 등과 같은, 다수의 소스들로부터 증거가 수집되고 결합될 필요가 있다. 따라서, 포괄적인 데이터 집계 및 적시성 둘 다는 사실 수집(fact-gathering) 프로세스에 중요하다.
증거 수집을 위한 기존의 접근법들은 다양한 단점들을 겪고 있다. 예를 들어, 증거 수집을 위한 자동화된 솔루션들이 없다. 더욱이, 데이터를 지속적으로 생성 및/또는 스트리밍하는 전자 디바이스들(예를 들어, 센서들, 카메라들)의 경우, 데이터 유지 정책들은 자원 제약들로 인해 다소 짧을 수 있다. 예를 들어, SD 카드 상의 제한된 저장 용량으로 인해 차량 대시보드/감시 카메라들의 경우 데이터가 2시간 동안만 유지될 수 있다. 게다가, 증거 수집에 대한 수동 접근법들은 종종 다양한 도전들에 직면한다. 상세하게는, 데이터의 소유권은, 특히 데이터에 대한 액세스를 중개하는 공유 기관이 없는 경우, 문제들을 야기할 수 있다.
그에 따라, 본 개시내용은 유비쿼터스 비주얼 컴퓨팅 증인의 다양한 실시예들을 설명한다. 특히, 본 개시내용은 다양한 예시적인 사용 사례들에 대해 비주얼 포그 컴퓨팅 및 비주얼 포그 네트워킹의 인프라스트럭처를 사용하여 구현되는 유비쿼터스 증인의 신규의 새로운 애플리케이션을 제안한다. 게다가, 설명된 유비쿼터스 증인은 증거 수집과 관련하여 데이터 유지 및 데이터 집계와 연관된 도전 과제들을 해결한다. 특히, 유비쿼터스 증인은 비주얼 포그 컴퓨팅을 사용하여 실시간 데이터 컬렉션을 제공한다. 예를 들어, 관심을 끄는 이벤트(예를 들어, 비정상의, 특이한, 드문)가 발생할 때, 로컬 데이터의 스냅숏이 이벤트를 검출한 주체 디바이스(subject device)에 의해 잠금되고(예를 들어, 안전하게 저장되고), 따라서 데이터가 오버라이트되는 것을 방지한다. 게다가, 이벤트를 검출한 주체는 다른 관련 주체들(예를 들어, 많은 경우들에서 인근 주체들)에게 그들 각자의 대응 데이터 스냅숏들을 잠그도록 실시간으로 통지한다. 게다가, 어느 데이터를 저장할지 대 만료시킬지(예를 들어, 다른 형태들의 데이터와 대비하여 비주얼 데이터)를 우선순위화하기 위해 데이터 유지 문제가 서비스 품질(QoS) 지정들을 사용하여 해결될 수 있다. 게다가, 비주얼 포그 컴퓨팅을 사용하여, 다음 단계의 데이터 집계를 위한 대역폭을 절감하기 위해 데이터가 프리-프로세싱될 수 있다. 특히, 유비쿼터스 증인은 비주얼 포그 네트워킹을 사용하여 자동화된 데이터 집계를 제공한다. 예를 들어, 일단 데이터가 다양한 주체 디바이스들에 의해 유지되고 임의로 프리-프로세싱되면, 각자의 주체 디바이스들에 걸쳐 분산된 데이터 및 메타데이터 컬렉션이 비주얼 포그 네트워킹 및/또는 정보 중심 네트워킹(information-centric networking)(ICN)을 사용하여 집계되며, 따라서 각자의 데이터 스냅숏들이 비주얼 포그 패러다임 내의 디바이스들 또는 노드들에 의해 서로 연관되고 적절히 저장될 수 있게 해준다.
이러한 방식으로, 유비쿼터스 증인은 증거 수집과 관련하여 다양한 장점들을 제공한다. 예를 들어, 관련 주체 디바이스들이 그들 각자의 데이터 스냅숏들을 수집하고 잠금하도록 실시간으로 통지받기 때문에, 사고와 연관된 중심적 또는 주요 증거가 데이터 유지 정책들에 의해 방해받지 않는다. 다른 예로서, 데이터를 수집하고, 집계하며 그리고/또는 라우팅하기 위한 더 효율적인 접근법을 제공하기 위해 정보 중심 네트워킹(ICN) 및/또는 이벤트 기반 데이터 라우팅이 활용될 수 있다. 일부 실시예들에서, 예를 들어, 관련 데이터는 위치, 시간, 트리거링 이벤트, 소스, 목적지(예를 들어, 담당 기관들), 및/또는 이벤트 또는 사고의 주요 특징들을 설명하는 임의의 두드러진 어트리뷰트별로 라우팅될 수 있다.
도 55는 자동차 유비쿼터스 증인에 대한 예시적인 사용 사례(5500)를 예시한다. 예시된 사용 사례(5500)는 에지 디바이스들(5510a 내지 5510e), 포그 디바이스들(5520a 내지 5520c), 및 통신 네트워크(5530)를 포함한다. 예시된 예에서, 에지 디바이스들(5510a 내지 5510e)은 동작 중에 데이터를 수집하기 위한 온보드 센서들 및/또는 카메라들을 갖는 자동차들인 반면, 포그 디바이스들(5520a 내지 5520c)은 로컬 또는 인근 데이터 컬렉션을 위한 센서들 및/또는 카메라들을 갖는 교통 신호등들 또는 다른 도로변 유닛들(RSU들)이다. 더욱이, 통신 네트워크(5530)는, 이벤트 기반 데이터 관리 및 저장 기술들을 사용하여 자동차들(5510) 및 RSU들(5520) 둘 다로부터의 데이터의 실시간 수집 및 집계를 용이하게 하기 위해 사용될 수 있는, 비주얼 포그 및/또는 정보 중심 네트워킹 능력들을 포함할 수 있다. 이러한 방식으로, 유비쿼터스 자동차 증인은, 도 56과 관련하여 아래에서 추가로 설명되는 바와 같이, 비주얼 포그 컴퓨팅(VFC)과 비주얼 포그 네트워킹 또는 정보 중심 네트워킹(ICN)의 조합을 사용하여 구현될 수 있다.
도 56은 유비쿼터스 증인에 대한 예시적인 데이터 흐름(5600)을 예시한다. 일부 실시예들에서, 예를 들어, 데이터 흐름(5600)은 도 55에 예시된 예시적인 자동차 사용 사례와 관련하여 수행될 수 있다.
예시된 데이터 흐름은 블록(5602)에서 사고가 검출되었는지를 결정하는 것으로 시작된다. 다양한 실시예들에서, 예를 들어, 센서 데이터(예를 들어, 차량들 및/또는 다른 유형들의 장비의 내부 센서들로부터의 데이터)의 예기치 않은 또는 현저한 변화들을 식별하는 것, 컴퓨터-비전 및/또는 머신 러닝 기술들을 사용하여 이벤트 검출 및 인식을 수행하는 것 등과 같은, 임의의 적합한 접근법을 사용하여 센서 데이터를 프로세싱하는 것에 의해 사고가 검출될 수 있다.
일단 사고가 검출되면, 이는 임의의 주변 디바이스들에 의한 인근 데이터 컬렉션(블록(5608))과 함께 검출 디바이스에 의한 로컬 데이터 컬렉션(블록(5604))을 트리거할 것이고, 사고가 또한 이름을 부여받을 것이다(블록(5610)).
예를 들어, 블록(5604)에서, 검출 디바이스는 로컬 데이터 컬렉션을 수행하는데, 로컬 데이터 컬렉션은 사고와 연관된 데이터 및/또는 메타데이터를 취득 및/또는 생성하기 위해 로컬 애널리틱스를 수행하는 것을 수반할 수 있다. 메타데이터는, 예를 들어, 예들 중에서도, 관심 영역들(ROI들), 지오로케이션 이름들(예를 들어, 주소들, 도시들, 주들, 우편 번호들, 랜드마크들, 국가들), 컴퓨터 비전 기술들(예를 들어, 이미지 분류 또는 세그먼트화)을 사용하여 도출되는 사고의 현장에 있는 태깅(tagging) 또는 라벨들, 날씨, 및/또는 사고와 연관된 임의의 다른 컨텍스트적 또는 상황적 정보를 포함할 수 있거나 다른 방식으로 식별해줄 수 있다. 게다가, 관련 데이터는 데이터가 유지되도록 보장하기 위해 고 우선순위 QoS로 지정될 수 있다.
블록(5606)에서, 메커니즘들은 이어서 인근 디바이스들에 사고를 통보하기 위해 이용되며, 이는 그 디바이스들이 그들의 데이터를 잠그는 것은 물론 특정의 상황들 및/또는 사용 사례에서 적절할 수 있는 임의의 다른 액션들을 수행할 수 있게 해준다. 예를 들어, 마을 방범대의 맥락에서, ZigBee 및/또는 LTE는 데이터 수집 목적들을 위해 인근 디바이스들에 사고를 통지하기 위해 사용될 수 있는 반면, LTE 및/또는 DSRC(dedicated short-range communications)는 자동차 사고들의 맥락에서 사용될 수 있다. 기본 무선 통신 인프라스트럭처에 상관없이, 인근 또는 이웃하는 디바이스들의 관련 데이터를 잠그는 프로세스를 트리거하기 위해 사고를 검출했던 디바이스로부터 그의 이웃들로 경보 메시지가 라우팅된다(블록(5608)).
블록(5610)에서, 사고는 이어서 식별, 라우팅, 및/또는 네트워킹 목적들을 위해 "이름"을 부여받는다. 일부 실시예들에서, 예를 들어, 사고 이름은, 위치, 시간, 이벤트, 사고의 유형, 우선순위/중요도/사망자수, 이벤트의 캡처된 이미지/비디오 등과 같은, 사고와 연관된 정보의 임의의 조합을 사용하여 도출될 수 있다. 이러한 방식으로, 이 설명 정보의 연결은, 아래에서 추가로 설명되는 바와 같이, 정보 중심 네트워크(ICN) 내에서 기본 이벤트 데이터를 요청하는 목적들을 위해 이벤트 이름(5612)으로서 역할할 수 있다.
블록(5818)에서, 예를 들어, 정보 중심 네트워크(ICN)는 사고 이름(예를 들어, 데이터와 연관된 어트리뷰트들)에 기초하여 관련 데이터(예를 들어, 로컬 디바이스 데이터(5614) 및/또는 인근 디바이스 데이터(5616))를 요청하고, 라우팅하며 집계하는 데 사용될 수 있다. 이러한 방식으로, 네트워크는 이어서 특정의 관심 사고와 연관된 데이터를 라우팅하거나 그에 대해 질의받을 수 있다. 예를 들어, 마을 방범대에서의 도난의 증거가 요청될 수 있고 후속하여 인근 경찰서(5822)로 보내질 수 있는 반면, 자동차 과속의 증거가 요청될 수 있고 후속하여 DMV(department of motor vehicles)(5824) 및/또는 보험 회사로 보내질 수 있다.
더욱이, 사고와 연관된 데이터는 또한 사고에 관련된 후속 질의들을 충족시키기 위해 특정 네트워크 자원들(5820)에 의해 저장될 수 있다. 예를 들어, 블록(5826)에서, 사용자는 사고 이름에서의 다양한 어트리뷰트들을 사용하여 사고와 연관된 증거에 대해 질의할 수 있다. 예를 들어, 사용자는 네트워크에 질의하는 목적들을 위해 사고의 대략적인 시간과 장소만 알 수 있으며, 따라서 네트워크는 관련 데이터 스토어들에 질의를 배포할 수 있고, 관련 데이터를 갖는 데이터 스토어들이 이어서 응답할 수 있다.
이러한 방식으로, 유비쿼터스 증인은 비주얼 포그 컴퓨팅을 활용하여 에지 및/또는 포그 노드들에서의 데이터 프로세싱 및/또는 프리-프로세싱을 수행하는 것, 뒤이어서 비주얼 포그 네트워킹 및/또는 정보 중심 네트워킹(ICN)을 사용하여 사고에 대한 증거 컬렉션(예를 들어, 다양한 소스들로부터의 데이터 및 메타데이터)을 연관시키고 그리고/또는 집계하고, 증거를 적절한 목적지(들)로 적시에 라우팅하며, 그리고/또는 증거를 적절한 데이터 스토어들에 저장하는 것에 의해 구현될 수 있다. 게다가, 일부 실시예들에서, 유비쿼터스 증인은, 도 62 및 도 63과 관련하여 아래에서 추가로 설명되는 바와 같이, "수렴형 노드" 라우터들을 활용하는 네트워크 토폴로지 내에서 구현될 수 있다.
도 57 내지 도 60은 유비쿼터스 비주얼 컴퓨팅 증인에 대한 이상 검출 및 이벤트 재구성의 예들을 예시한다. 자동차 산업과 관련하여, 예를 들어, 차량들은 현재 다수의 데이터(예를 들어, 속도, 방향, 연료 레벨들)를 감지하고 기록하도록 설계된 센서들의 어레이를 장비하고 있다. 이러한 센서들은 종종 차량 내에 내부적으로 존재하는 것은 물론 차량 상에 외부적으로 장착된다. 외부적으로 장착된 센서들은, 예를 들어, 도로, 차선 경계들, 주변 차량들 또는 장애물들 등을 기록 또는 캡처하는 데 사용되는 카메라들과 같은, 비주얼/오디오 센서들을 포함할 수 있다. 더욱이, 커넥티드 및 자율주행 차량들의 진행 중인 개발과 관련하여, 그러한 센서들의 범위 및 기능성은 증가하기만 할 것이다. 유사하게, 도로변 인프라스트럭처에 설치(instrument)하기 위해 배포되는 센서들의 개수도 또한 급격히 증가할 것이다. 이 거대한 볼륨의 수집된 데이터에 대한 중요한 사용 사례는, 차량들, 사람들, 및/또는 인프라스트럭처를 수반하는 특이한 이벤트 또는 사고의 검출과 같은, 이상 검출이다. 예를 들어, 다차원적인 방식으로 이상에 이르게 하는 이벤트들의 시퀀스를 재구성하기 위해 근접 감각 데이터(proximate sensory data)가 동화(assimilate)될 수 있다. 게다가, 이상이 사람 또는 재산에 대한 손상을 수반하는 차량 사고일 때, 이러한 유형의 재구성은, 특히 전통적인 목격자들이 없는 경우에, 배상 및 보험의 목적들을 위해 일차적 책임 당사자들을 결정하는 데 또한 사용될 수 있다.
그렇지만, 현재, 차량들 및 도로변 인프라스트럭처에서의 다양한 센서들에 의해 생성되는 데이터는, 개별적인 벤더 특정 또는 애플리케이션 특정 클라우드들에 종종 저장되기 때문에, 종종 격리된다. 다음과 같은 것을 포함하지만 이들로 제한되지 않는, 이것에 대한 다양한 이유들이 있다: (1) 단일 차량 내의 센서들이 상이한 제조업체들에 의해 배포될 수 있고 그들 각자의 데이터가 벤더 소유의 클라우드들로 라우팅될 수 있다; (2) 차량들이, 감각 데이터에 대한 잠재적으로 상이한 독점적 포맷들을 포함한, 정보를 캡처하고 저장하는 상이한 방식들을 가지는 상이한 벤더들에 의해 제조될 수 있기 때문에, 인근 차량들로부터 데이터를 획득하는 것이 종종 어렵다; 그리고 (3) 관여된 엔티티들이 맨 처음에 이용가능하거나 추적가능할 수 있거나 또는 이용가능하지 않거나 추적가능하지 않을 수 있다.
그에 따라, 기존의 솔루션들과 관련하여, 센서 융합은 각각의 개별 차량 내에 엄격하게 존재하며, 각각의 센서 벤더에 의해 엄격하게 사일로화(silo)된다. 따라서, 센서 융합은 분리되어 있는 각각의 차량의 시야로부터 수집되는 이미지 데이터를 집계하기 위해서만 활용될 수 있다. 더욱이, 기존의 비디오 집계 솔루션들이 다수의 카메라들로부터의 스트림들을 수집할 수 있지만(예를 들어, 비디오 감시 또는 증강 현실과 같은 인프라스트럭처 기반 솔루션들), 센서들이 다수의 상이한 제조업체들에 의해 소유되고, 센서들의 "블랙 박스" 데이터가 일반적으로 독점적이며, 매우 적은 조직간 액세스 또는 코디네이션이 있을 때 그 솔루션들은 효과적이지 않다. 그에 따라, 도로변 인프라스트럭처에서의 카메라들을 사용하는 비디오 집계 및 스티칭(stitching)은 전형적으로 특정 기능들(예를 들어, 교통 관리 서비스들, 도로 조건들의 인식, 및/또는 감시)로 제한된다. 이들 각자의 접근법들은 글로벌적으로 분산된 방식으로, 온 더 플라이로(on the fly)(예를 들어, 실시간으로), 그리고 다수의 당사자들로부터, 특히 정적 엔티티 및 모바일 엔티티 둘 다로부터의 데이터의 융합과 관련하여, 이상 검출을 다루는 데 부족하다.
그에 따라, 본 개시내용은, 자율주행 차량들 및 스마트 시티들과 같은, 스마트 자동화 시스템들을 위한 다차원 이상 이벤트 재구성을 위한 솔루션을 제시한다. 특히, 설명된 실시예들은 검출된 이상들의 다차원 재구성을 가능하게 해주며, 여기서 다차원 양태는 다수의 소스들로부터의 멀티-모달 감각 정보를 사용하여 많은 상이한 관점들로부터 이벤트를 재현하는 능력을 지칭한다. 이러한 소스들은, 다수의 차량들, 도로변 인프라스트럭처, 및/또는 각각의 차량에 대한 규제에 의해 요구되는 정보의 "블랙 박스"에 존재할 수 있는, 센서들, 카메라들, 및/또는 다른 오디오/비주얼 요소들을 포함할 수 있다. 목적은 (상이한 밴티지 포인트들(vantage points)로부터) 다수의 차원들로 (특정의 시점 및 공간에서 발생한) 이벤트를 재현하기에 충분한 재구성 데이터를 요청하면서, 동시에 요청을 유계 관련성 영역(bounded region of relevance) 내로 스코핑(scoping)하는 것이다.
이상 검출 및 이벤트 재구성은 잠재적인 이상이 검출될 때 시작되는 멀티-스테이지 프로세스이다. 일부 실시예들에서, 예를 들어, 임의의 적합한 프로세싱 기술들(예를 들어, 컴퓨터 비전, 머신 러닝, 인공 신경 네트워크들)을 사용하여 하나 이상의 소스로부터의 센서 데이터를 분석함으로써 이상이 검출될 수 있다. 이상(예를 들어, 이상의 시간, 위치 및/또는 유형)의 검출 및 식별은 그러면 이벤트 재구성 프로세스에 대한 입력들로서 역할할 수 있다. 일부 실시예들에서, 예를 들어, 이벤트 재구성 프로세스는, 아래에 설명되는 바와 같이, (1) 디지털 증인 식별, (2) 데이터 수집, 및 (3) 다차원 이벤트 재구성을 수반할 수 있다.
1. 디지털 증인 식별.
일단 이상이 검출되면, 응답의 제1 스테이지는, 이상에 직접적으로 관여된 당사자들 및 이상에 대한 디지털 증인들인 당사자들 - 이들 둘 다는 이상을 재구성하는 데 필요한 데이터를 소유할 수 있음 - 을 포함한, 관여된 당사자들을 식별하는 것이다.
2. 데이터 수집.
제2 스테이지는 식별된 관련 당사자들로부터의 데이터 수집을 수반한다. 데이터 수집 스테이지는, 예들 중에서도, IP 기반 라우팅을 사용하는 클라우드 기반 솔루션, 및/또는 정보 중심 네트워킹(ICN) 또는 ICN 기반 라우팅을 활용하는 에지 기반 솔루션을 포함한, 임의의 적합한 접근법 및/또는 기술을 사용하여 구현될 수 있다. 게다가, 일부 실시예들에서, “수렴형 노드" 라우터들로 구현되는 네트워크 토폴로지는, 도 62 및 도 63과 관련하여 아래에서 추가로 설명되는 바와 같이, 데이터 수집 프로세스를 용이하게 하기 위해 활용될 수 있다.
3. 다차원 이벤트 재구성.
제3 스테이지는 이어서 수집된 데이터를 사용하여 다차원 이벤트 재구성을 수행한다. 일부 실시예들에서, 예를 들어, 3차원(3D) 이벤트 재구성은, 시간 동기화된 방식으로 모든 감각 정보를 동화시키기 위해 상이한 미디어에 적절한(media-appropriate) 프로세싱 알고리즘들을 사용하여, 다양한 상이한 유형들의 감각 데이터(예를 들어, 이미지, 오디오, 비디오)로부터 이벤트를 재현하는 데 사용될 수 있다.
그에 따라, 본 개시내용은 스마트 운송 인프라스트럭처 내에서 운영되는 커넥티드 및 자율주행 차량들을 포함한, 다양한 사용 사례들에 대해 활용될 수 있는, 일반적인 이상 검출 및 이벤트 재구성을 위한 신규의 솔루션을 제시한다. 이러한 방식으로, 이상 검출 및 이벤트 재구성 목적들을 위해 다수의 차량들 및 주변 인프라스트럭처의 감지 능력들이 활용될 수 있다.
도 57은 자동차 이상 검출 및 이벤트 재구성에 대한 예시적인 사용 사례(5700)를 예시한다. 예시된 사용 사례(5700)는, 도로의 측면 상의 다수의 도로변 유닛들(RSU들)(5720)(예를 들어, 교통 신호등들, 가로등 기둥들, 도로 표지판들, 및/또는 다른 도로변 인프라스트럭처)과 함께, 도로 상에서 주행하는 복수의 자동차들(5710)을 포함한다. 자동차들(5710) 및 RSU들(5720) 각각은, 서로의 통신 및/또는 다른 네트워크들과의 통신을 용이하게 하기 위한 통신 인터페이스(들)와 함께, 그들 각자의 동작 환경들과 연관된 데이터를 캡처하기 위한 센서들 및/또는 카메라들의 컬렉션으로 장비되어 있다.
더욱이, 예시된 예는 2대의 차량 간의 충돌을 수반하는 자동차 이상의 시간 및 공간에서의 스냅숏을 묘사한다. 충돌은 충돌에 관여된 차량들(증인들로서 직접적으로 관여되거나 또는 간접적으로 관여된 것 중 어느 하나) 및/또는 도로변 인프라스트럭처 또는 RSU들 중 임의의 것에 의해 (예를 들어, 시간 및 위치의 세부사항들과 함께) 비정상 사고로서 검출되고 기록될 수 있다. 다양한 실시예들에서, 예를 들어, 센서 데이터(예를 들어, 차량들 및/또는 다른 유형들의 장비의 내부 센서들로부터의 데이터)의 예기치 않은 또는 현저한 변화들을 식별하는 것, 컴퓨터-비전 및/또는 머신 러닝 기술들을 사용하여 이벤트 검출 및 인식을 수행하는 것 등과 같은, 임의의 적합한 접근법을 사용하여 센서 데이터를 프로세싱하는 것에 의해 이상이 검출될 수 있다.
일단 이상이 검출되면, 아래에서 추가로 설명되는 바와 같이, 충돌 및 이를 약간 넘어서는 것에 이르게 하는 이벤트들의 정확한 시퀀스가 재구성될 수 있다. 예를 들어, 도 58 내지 도 60은 인터넷 프로토콜(IP) 네트워크들과 정보 중심 네트워크들(ICN) 둘 다를 사용하는 이상 검출 및 재구성을 위한 다양한 솔루션들을 제시한다.
IP 기반 실시예들과 관련하여, 예를 들어, 이벤트 재구성 프로세스는 재구성 프로세스에 유용한 데이터를 가질 수 있는 모든 엔티티들을 식별하는 것으로 시작된다. 많은 경우들에서, 예를 들어, 잠재적으로 관련있는 엔티티들이 이상이 발생한 특정의 시간 윈도 동안 "이상 커버리지 영역(anomaly coverage area)"(5730)이라고 지칭되는 관심 영역 내에 존재하는 엔티티들이라고 가정될 수 있다. 이러한 엔티티들 또는 "증인들"을 식별하는 프로세스는, 사고에 관여된 차량(들) 및/또는 인근 도로변 인프라스트럭처에 의해서를 포함한, 다수의 방식들로 트리거될 수 있다.
일부 실시예들에서, 예를 들어, 관련 엔티티들 또는 "증인들"을 식별하는 프로세스는, 사고에 직접 관여된 차량 또는 사고를 단지 목격하는 인근 차량과 같은, 이상을 검출하는 차량에 의해 트리거될 수 있다. 위에서 언급된 바와 같이, 예를 들어, 많은 차량들은 센서들, 카메라들, 및 어떤 레벨의 자동화로 장비되어 있으며, 커넥티드 및 자율주행 차량들의 진행 중인 개발로 인해 그 기술의 범위와 정교함이 계속하여 증가하고 있다. 그에 따라, 차량은 그 다양한 기술들을 활용하여 (예를 들어, 갑작스러운 충격, 에어백 전개, 다른 차량과의 충돌의 충격, 특이한 오디오 또는 비디오 등에 기초하여) 비정상 사고 또는 이벤트를 검출할 수 있다. 비정상 이벤트의 검출 시에, 차량 시스템은 경보를 트리거하고 사고전과 사고후에 연장되는 시간 윈도 내에서의 (카메라 비디오 스트림들을 포함하는) 모든 센서 로그들을 차량의 클라우드 시스템들(예를 들어, 차량 제조업체, 보험회사, 지방 자치단체 등의 클라우드들)로 송신하라는 자동 푸시 요청을 생성한다. 클라우드는, 비정상 이벤트와 연관된 데이터의 수신 시에, 그러면 타임스탬프 정보를 사용하여 비주얼/감각 데이터의 탐색을 수행하여 자동차 번호판들 및 주변 차량들 및/또는 인프라스트럭처의 다른 식별 정보를 발견하기 위해 애널리틱스 엔진을 이용할 수 있다. 자동차 번호판 정보는 이어서 차량 데이터베이스(예를 들어, 미국에서의 DMV(Department of Motor Vehicles) 또는 다른 국가들에서의 동등한 기관에 의해 유지되는 공개적으로 이용가능한 데이터베이스)를 사용하여 대응하는 차량 소유자들에 매핑될 수 있다. 클라우드 엔진은 이어서 애플리케이션 서버를 사용하여 이벤트를 재구성하기 위해 식별된 차량들 및 이들의 소유자들에게 정보에 대한 요청을 송신한다. 대안적으로, 사고에 관여된 차량들은 업로드 이전이라도 그들 자체의 로컬 애널리틱스 엔진 내에서 그들 자체의 로그들을 프로세싱할 수 있고, 이어서 로컬 애널리틱스 엔진을 통해, 이상 커버리지 영역(5730) 내에 있었던 다른 차량들 및 증인들을 식별할 수 있다.
대안적으로, 관련 엔티티들 또는 "증인들"을 식별하는 프로세스는 이상 커버리지 영역(5730) 내에 위치된 도로변 인프라스트럭처에 의해 트리거될 수 있다. 예를 들어, 도로변 인프라스트럭처는, 교통 신호등들, 가로등들, 가로등 기둥들, 도로 표지판들 등과 같은, 에지 및 포그 컴퓨팅 능력들(예를 들어, 저장, 프로세싱, 통신/라우팅, 센서들/카메라들)을 갖는 다양한 유형들의 도로변 유닛들(RSU들)을 포함할 수 있다. 이러한 방식으로, 이상 커버리지 영역(5730) 내의 도로변 인프라스트럭처는 비정상 사고를 검출하거나, 목격하거나, 또는 다른 방식으로 경고받을 수 있으며, 따라서 사고에 대한 경보 또는 응답을 트리거할 수 있다. 예를 들어, 인프라스트럭처 장비는 증인의 증거를 제공하기 위해 사고전과 사고후에 연장되는 시간 윈도로부터의 감각 데이터(예를 들어, 비디오 스트리밍 피드들)를 적절한 기관 및/또는 클라우드 목적지(예를 들어, 도로변 유닛(RSU) 인프라스트럭처 클라우드)로 송신할 수 있다. 이러한 방식으로, 이벤트 재구성 프로세스는, 도 58과 관련하여 아래에서 추가로 설명되는 바와 같이, 도로변 인프라스트럭처에 의해 트리거된다.
도 58은 IP 네트워크들을 통해 도로변 유닛(RSU) 인프라스트럭처에 의해 오케스트레이션되는 이상 검출 및 재구성을 위한 프로세스 흐름(5800)을 예시한다. 특히, RSU 로컬 클라우드는 객체 인식 기술들을 사용하여 애널리틱스를 수행하고 그 자체의 RSU 클라우드에 대해 이벤트 트리거를 생성하면서(블록(5802)), 동시에 그의 콘텐츠를 그 클라우드에 업로드한다(블록(5804)). 병행하여, 관여된 다른 엔티티들(예를 들어, 차량들)도 또한 그들의 데이터를 그들 자체의 로컬 클라우드들에 업로드한다(블록(5806)). RSU 클라우드는 추가 애널리틱스를 수행하고, 이상에 관여된 엔티티들에 대한 부가 정보를 획득하며, 질의들을 그 엔티티들의 클라우드들로 송신하여 그들의 데이터를 수집한다(블록(5808)). 그 클라우드들은 이어서 (예를 들어, 커버리지 영역, 시간 델타에 기초하여) 이상 탐색 질의에 응답하는 대응하는 데이터로 응답한다(블록(5810)). 게다가, 더 많은 데이터가 수집되고 부가의 프로세싱이 수행됨에 따라, 잠재적으로 관련있는 데이터를 갖는 부가의 엔티티들이 식별될 수 있고, 그 엔티티들은 유사한 방식으로 그들 각자의 데이터에 대해 질의받을 수 있다. 비정상 사고와 연관된 전체 데이터세트가 관련있는 것으로 식별된 모든 엔티티들부터 수집될 때까지 프로세스가 이러한 방식으로 계속될 수 있다.
예로서, 일단 데이터 요구 요청들이 송신되면, RSU 클라우드 또는 그의 연관된 지방 자치단체, 차량 제조업체, 보험 제공자 등과 같은, 프로세스를 초기에 트리거한 엔티티에서 응답 데이터가 후속하여 집계될 수 있다. 게다가, 일부 경우들에서, 대체로 위에서 설명된 동일한 프로세스를 사용하여, RSU들을 소유하는 지방 자치단체들(예를 들어, 교통 안전 대책들을 개선시키기 위해), 차량 제조업체들(예를 들어, 그들의 커넥티드 차량 기술을 개선시키기 위해), 및 보험 제공자(예를 들어, 사회적 사고 패턴들을 이해하기 위해)와 같은, 다수의 상이한 참가자들에 의해 동일한 이상이 재구성될 수 있다. 데이터가 수집된 후에, 이벤트를 재현하기 위해 데이터가 이어서 함께 스티칭되어야만 한다. 다양한 실시예들에서, 예를 들어, 이벤트 재구성은, 센서 융합, 컴퓨터 비전, 인공 신경 네트워크들, 머신 러닝 등과 같은, 임의의 적합한 프로세싱 기술들을 사용하여 다수의 소스들 및 관점들로부터의 센서 데이터를 다차원 표현으로 통합하는 것에 의해 수행될 수 있다.
일부 실시예들에서, 다양한 클라우드들은 다른 클라우드들 또는 엔티티들이 수신자들에 의해 파싱 및 디코딩될 수 있는 포맷으로 데이터에 대해 질의하고 데이터를 수신할 수 있게 해주는 애플리케이션 프로그래밍 인터페이스들(API들)을 제공할 수 있다. 게다가, 각각의 개별 클라우드 내의 각각의 개별 데이터베이스는, 데이터를 요청하거나 데이터에 대해 질의하는 엔티티들이 응답 데이터를 수신할 권한(permission)을 갖는지를 포함하여, 그 엔티티들의 적법성을 결정하는 일을 담당할 수 있다. 유사하게, 데이터의 수신기는 그의 질의에 응답하여 수신되는 데이터의 진위성을 결정하는 일을 담당할 수 있다. 다양한 실시예들에서, 이러한 유형들의 안전장치들은 오프라인 프로세스를 사용하여 구현될 수 있거나, 또는 데이터 액세스를 위한 필수적인 시스템들 및 인가들이 적절하게 배포되고 구성되어 있는 경우 실시간으로 발생할 수 있다.
도 59 및 도 60은 정보 중심 네트워크들(ICN들)을 통한 이상 검출 및 재구성을 위한 프로세스 흐름을 예시한다. 예를 들어, 예시된 프로세스 흐름에서, 도 57의 사용 사례에 도시된 참여 엔티티들(예를 들어, 차량들, 주변 인프라스트럭처, 및/또는 이상 커버리지 영역 내의 임의의 다른 구경꾼들 또는 증인들)이 ICN 가능 네트워크의 일부인 것으로 가정된다. 아래에서 논의되는 바와 같이, 이 맥락에서 동작 효율을 개선시키기 위해 이용될 수 있는 ICN 네트워크들과 IP 네트워크들 사이의 두 가지 중요한 차이점이 있다.
첫째, ICN 네트워크는 IP 어드레스에 의해서보다는 (종종, 데이터의 목적, 소유자, 위치, 및/또는 다른 컨텍스트적 정보와 같은, 데이터에 관련된 일련의 어트리뷰트들인) 이름에 의해 데이터를 라우팅할 수 있으며, 이는 위치 독립적인 라우팅을 가능하게 해준다. 이 능력은, 잠재적 특성들 또는 어트리뷰트들 중에서도, 이상의 시간 및 위치는 물론 불확실성의 델타를 포함하는 이름에 기초한 이상 관련 데이터를 요청하는, "퍼지 요청(fuzzy request)"의 사용을 통해 활용될 수 있다. 이러한 방식으로, 퍼지 요청은, 이상을 검출한 엔티티들의 아이덴티티들 또는 IP 어드레스들을 알 필요가 없이, 네트워크 자체에 대한 질의로서 기능한다. 게다가, 불확실성의 델타는, 이상이 발생한 시간 ± 비정상 이벤트 전과 후의 임계 에러 마진(threshold margin of error)에서, 스코핑된 물리적 관심 영역 내에 위치된 - 그리고 관심의 적격 데이터(qualifying data)를 수집한 - 임의의 엔티티들로부터의 응답들을 가능하게 해준다.
둘째, ICN 네트워크는 라우팅 계층에서 기본적으로 캐싱을 제공하는데, 이는 (예를 들어, 이동성, 간섭, 단절성(disconnectivity), 에너지 절약 슬립 모드 등으로 인해 데이터의 소스가 이용가능하지 않을 때) 데이터가 라우터를 통과할 때 데이터가 추후 사용을 위해 임의로 캐싱될 수 있다는 것을 의미한다. 이것은 다수의 위치들에서 그리고 요청자들에 잠재적으로 훨씬 더 가까이에서 데이터를 이용가능하게 만들어주는 부수 효과를 가지며, 이는 귀중하고 종종 제한된 네트워크 자원들을 절감한다. 그 결과, 퍼지 요청이 요구될 때, 이상의 대략적인 시간 및 위치 내에서 수집된 데이터를 갖는 임의의 증인들 또는 노드들은, 데이터가 그 노드에서 생성되었는지 또는 그 노드에 단순히 캐싱되었는지에 관계없이, 퍼지 요청에 응답할 수 있다.
감각 데이터를 캡처, 생성, 프로세싱 및/또는 저장하고 이를 네트워크 라우팅 계층에서 공유될 수 있는 형태로 이용가능하게 만들어주는 능력을 갖는 엔티티들은 ICN 네트워크에서 "생산자들" 또는 "게시자들"이라고 알려져 있는 반면, 정보를 요청하는 엔티티들은 "소비자들" 또는 "가입자들"이라고 알려져 있다. 물리적 네트워크 자체는 특정 접속성 솔루션(들)(예를 들어, LTE, DSRC, Wi-Fi, 5G)을 사용하여 기본 참가자들의 상호접속을 통해 형성되며, 따라서 그의 참여자들이 합류하고 이탈할 때(예를 들어, 차량들이 하나의 셀로부터 다른 셀로 이동하는 동안 기지국들에 접속하고 기지국들로부터 접속해제할 때) 네트워크가 지속적으로 변경된다.
이 프레임워크는 이상 커버리지 영역 내의 차량들 및 도로변 인프라스트럭처에 걸친 이상 정보의 분산 저장을 가능하게 해주면서, 또한 "가입자" 노드들(예를 들어, DMV, 보험 회사 조사 시스템들, 차량 제조업체 사고후 서비스들)이 이상의 저장된 뷰의 모든 단편들을 합쳐서 장면을 재구성할 수 있게 해준다. ICN이 기본 참여자들이 구체적으로 알려져 있거나 식별가능할 것을 요구하지 않고, 그 대신에 단지 관련 데이터의 이름 및/또는 어트리뷰트들이 알려져 있을 것을 요구하는 경우, 수많은 소스들로부터 이상 데이터를 수집하는 프로세스는 훨씬 더 간단하다. 장면 재구성이 이어서, 아래에서 추가로 설명되는 바와 같이, 캐스케이디드이고 협력적인 방식으로 발생할 수 있다.
도 59는 ICN 네트워크를 통한 이상 검출 및 재구성을 위한 전체적인 시스템 레벨 프로세스 흐름(5900)을 예시하는 반면, 도 60은 ICN 네트워크 내의 개별 노드에서의 프로세스 흐름(6000)을 예시한다. 도 59을 참조하면, 프로세스 흐름(5900)은 엔티티들 중 하나(정적 인프라스트럭처 요소 또는 차량과 같은 모바일 요소 중 어느 하나)가, 충돌과 같은, 이상을 검출할 때 시작된다. 예시된 예는 이상이 도로변 유닛(RSU)에 의해 검출되고, 도로변 유닛이 재구성 프로세스를 트리거하는 경보를 송신한다고 가정한다.
예를 들어, 이상을 검출할 시에, RSU는 패킷이 네트워크의 커버리지 범위 내에 있는 각자의 엔티티들에 의해 히어링 및/또는 수신될 수 있게 해주기 위해 멀티캐스트를 사용하여 ICN 네트워크를 통해 "스코핑된 인터레스트(scoped interest)" 패킷을 송신한다(블록(5902)). 전형적인 ICN 네트워크들에서, 예를 들어, 가입자는 원하는 콘텐츠 또는 데이터의 정확한 이름을 포함하는 "인터레스트 패킷"을 송신한다. 그렇지만, 이 경우에, 가입자가 콘텐츠의 정확한 이름을 알지 못하기 때문에, 스코핑된 인터레스트 패킷은 단지 원하는 콘텐츠의 특정 어트리뷰트들을 식별한다. 따라서, 스코핑된 인터레스트 패킷이 본질적으로 정확한 이름을 갖는 데이터에 대한 요청보다는 특정 기준들을 충족시키는 데이터에 대한 "퍼지" 요청이기 때문에, 스코핑된 인터레스트 패킷의 구조는 전통적인 ICN 인터레스트 패킷들과 상이하다. 일부 실시예들에서, 예를 들어, 스코핑된 인터레스트 패킷은, 기준 위치 x,y,z (RefLoc) 및 기준 시간 t (RefTime)를 기준으로 특정 델타들 내에서 캡처되는 데이터와 같은, 공간 및 시간에서의 대략적인 위치에 기초한 데이터를 요청할 수 있다.
그러한 이상 재구성 프로세스에 대한 명명 규칙(naming convention)은 탐색을 용이하게 하기 위해 사전에(a-priori) 설계되고 구현된다. 예를 들어, 각각의 참여 게시자는 동일한 명명 규칙을 따르며, 그결과 기록되는 감각 데이터의 객체 이름들이, 예컨대, 다음과 같은 포맷을 사용하여, 일관되게 명명된다:
GeographicalLocation/Date/Timestamp/EntityName.
지리적 위치는 차량용 지도들을 구성하는 데 사용되는 지도 타일들에 대한 명명 메커니즘과 유사한 표준화된 포맷일 수 있다. 날짜 및 타임스탬프는 특정의 지리적 위치에 대한 로컬 날짜 및 시간을 반영한다. 엔티티 이름은 차량 또는 인프라스트럭처 장비에 대한 고유 아이덴티티를 반영할 수 있다. 질의는 효율적인 탐색을 용이하게 하기 위해 명명 규칙과 동일한 포맷으로 된 지리적 위치, 날짜, 및 타임스탬프를 포함한다.
일부 실시예들에서, 스코핑된 인터레스트 패킷은 또한 각각의 노드가, 중간 홉들에서 수신되는 응답 데이터를, 이 데이터가 원래의 가입자에게 도달하기 전에, 집계 및/또는 압축하고, 따라서 네트워크 효율성을 개선시키기 위한 특정의 프로세싱 기능과 같은, 인터레스트 패킷에 응답하여 수집되는 임의의 데이터에 적용할 "기능"을 식별 및/또는 포함할 수 있다.
스코핑된 인터레스트 패킷은 다수의 차량들 또는 노드들에 의해 수신되고(블록(5904) 및 블록(5906)), 각각의 노드는 응답 데이터가 있는지 탐색하고 또한 패킷을 다른 노드들로 포워딩할 수 있다(블록(5908) 및 블록(5910)).
개별 노드의 프로세스 흐름은 도 60과 관련하여 추가로 예시되고 설명된다. 예를 들어, 도 60을 참조하면, RSU가 차량 또는 다른 노드에 의해 수신되는(블록(6004)) 스코핑된 인터레스트 패킷을 송신한 후에(블록(6002)), 노드는 다른 엔티티가 노드의 펜딩 인터레스트 패킷 테이블(pending interest packet table)에 버퍼링된 유사한 인터레스트 패킷을 발행했는지를 확인한다(블록(6006)). 유사한 인터레스트 패킷이 이미 수신되었다면, 이는 노드가 이 요청을 이미 보았다는 것을 의미하며, 따라서 노드는 현재 인터레스트 패킷을 삭제한다(블록(6008)). 유사한 인터레스트 패킷이 수신되지 않은 경우, 노드는 이 요청을 송신하지 않았으며, 따라서 노드는 그의 캐시 내의 명명된 콘텐츠에 대해 최장 프리픽스 매칭(longest prefix matching)을 수행하여 질의 파라미터들과 매칭하는 응답 콘텐츠가 있는지 탐색한다(블록(6010)). 응답 콘텐츠가 식별되면, 노드는 콘텐츠를 저장한다(블록(6014)).
그렇지만, 일단 노드가 인터레스트 패킷에 응답하여 매칭하는 콘텐츠를 제공하면 트랜잭션이 종료되는 종래의 ICN과 달리, 여기서 노드는 인터레스트 패킷을 다른 잠재적으로 관련있는 노드들로 포워딩하고(블록(6014)) 또한 동일한 질의 또는 사고에 대한 중복 인터레스트 패킷들을 프로세싱하는 것을 피하기 위해 패킷을 그의 펜딩 인터레스트 테이블(pending interest table)에 저장한다. 인터레스트 패킷이 전파되는 영역을 바운딩하기 위해, 필수적인 "근접성"이 초과될 때까지 인터레스트 패킷이 스코핑된 영역 내에서 계속 전파되도록 "스코핑된" 관심 영역이 인터레스트 패킷에 정의된다. 일부 경우들에서, 예를 들어, 스코핑된 영역은 이벤트를 잠재적으로 캡처할 수 있는 카메라들의 최대 범위 또는 가시성에 대응하는 반경과 같은, 비정상 이벤트를 중심으로 한 특정 반경으로서 정의될 수 있다. 특정의 노드가 주어진 "스코핑된 인터레스트" 패킷에 대해 임의의 매칭하는 콘텐츠를 발견하지 못하면, 이것은 질의가 그의 지리적 경계에 도달했다는 표시이며, 따라서 노드는 패킷을 더 이상 포워딩하지 않는다(블록(6012)).
포워딩된 스코핑된 인터레스트 패킷에 응답하여 응답 데이터 패킷들이 다양한 노드들 및 엔드 포인트들에 의해 수신될 때, 각각의 노드는 스코핑된 인터레스트 패킷에 대한 그 자신의 응답을 송신하기 전에 모든 응답들을 수집하기 위해 특정 타이머 T가 만료되기를 기다릴 수 있다(블록(6016)). 이러한 방식으로, 최종 응답은 단일 콘텐츠 제공자만보다는 많은 콘텐츠 제공자들로부터의 포괄적인 데이터 컬렉션을 포함한다. 이 접근법은 네트워크 계층에서의 다대일 유형의 트랜잭션을 가능하게 해주며, 여기서 스코핑된 인터레스트 패킷과 연관된 단일 요청은 다수의 제공자들에 의해 충족될 수 있으며, 다수의 제공자들은 차례로 스코핑된 인터레스트 패킷을 포워딩할 수 있지만, 각각의 제공자가 또한 다수의 제공자들로부터의 응답들을 누적하는지는 질의의 유형 및 네트워크의 깊이에 의존할 수 있다. 예를 들어, 많은 응답들이 중간 노드들에서 수신될 수 있는 경우, 노드들은 수신된 응답들을 그들 자신의 응답과 함께 송신하기 전에 수신된 응답들을 집계 및/또는 필터링하기로 선택할 수 있다(블록(6018)).
도 61은 유비쿼터스 비주얼 컴퓨팅 증인의 예시적인 실시예에 대한 플로차트(6100)를 예시한다. 일부 실시예들에서, 예를 들어, 플로차트(6100)는 본 개시내용 전반에 걸쳐 설명된 비주얼 컴퓨팅 아키텍처 및 기능성을 사용하여 구현될 수 있다.
플로차트는 블록(6102)에서 제1 디바이스의 하나 이상의 센서에 의해 캡처되는 센서 데이터에 액세스하는 것으로 시작된다. 제1 디바이스는, 예를 들어, 하나 이상의 프로세서, 센서, 및/또는 통신 인터페이스를 갖는 프로세싱 디바이스일 수 있다. 센서들은, 주변 환경의 비주얼 표현들을 생성하기 위한 비전 센서들(예를 들어, 카메라들, 깊이 센서들, 자외선(UV) 센서들, 레이저 거리계들(예를 들어, LIDAR(light detection and ranging)), 적외선(IR) 센서들, 전기 광학/적외선(EO/IR) 센서들, 차량들의 내부 센서들 및 다른 유형들의 장비 등과 같은, 주변 또는 동작 환경과 연관된 데이터를 캡처하는 데 사용되는 임의의 유형의 디바이스를 포함할 수 있다. 일부 실시예들에서, 예를 들어, 제1 디바이스는 차량과 연관될 수 있고, 센서들은 비전 센서들과 내부 기계적 센서들의 조합을 포함할 수 있다. 대안적으로, 제1 디바이스는 감시 시스템과 연관될 수 있고, 센서들은 하나 이상의 비전 센서를 포함할 수 있다.
플로차트는 이어서 제1 디바이스 근처에서 사고가 발생했다고 결정하기 위해 블록(6104)으로 진행한다. 일부 실시예들에서, 예를 들어, 사고는 제1 디바이스의 센서들에 의해 캡처되는 센서 데이터의 분석에 기초하여 검출될 수 있다. 예를 들어, 센서 데이터(예를 들어, 차량들 및/또는 다른 유형들의 장비의 내부 센서들로부터의 데이터)의 예기치 않은 또는 현저한 변화들을 식별하는 것, 컴퓨터-비전 및/또는 머신 러닝 기술들을 사용하여 이벤트 검출 및 인식을 수행하는 것 등과 같은, 임의의 적합한 접근법을 사용하여 센서 데이터를 프로세싱하는 것에 의해 사고가 검출될 수 있다. 일부 실시예들에서, 예를 들어, 센서 데이터의 분석 동안 이상이 식별될 수 있고, 이상이 특정의 사고 또는 이벤트를 나타낸다고 결정될 수 있다. 예를 들어, 정상 상태(steady-state) 동작 동안, 센서 신호들은 기준선을 확립하기 위해 모니터링 및/또는 기록될 수 있고, 센서 신호들이 기준선으로부터 벗어날 때 - 이는 통계적 분석, 임계치들, 레이트들 등을 사용하여 결정될 수 있음 - 이상이 식별될 수 있다. 대안적으로 또는 부가적으로, 비주얼 센서들로부터의 데이터는 (예를 들어, 특징 인식, 이미지 분류, 인공 지능, 머신 러닝, 인공 신경 네트워크 등을 사용하여) 비주얼 데이터에서 캡처되는 사고 및/또는 이벤트를 식별하기 위해 이미지 및/또는 비디오 프로세싱 기술들을 사용하여 분석될 수 있다. 게다가, 일부 실시예들에서, 사고의 검출은 일정 시간 기간에 걸친 다수의 이상들, 사고들, 및/또는 이벤트들의 누적 검출에 기초하여 트리거될 수 있다.
대안적으로, 제1 디바이스는 다른 디바이스에 의해 사고를 통지받을 수 있다. 예를 들어, 일부 실시예들에서, 제1 디바이스는 정보 중심 네트워크(ICN)를 통해 사고와 연관된 통지를 수신할 수 있고, 여기서 통지는 사고와 연관된 데이터에 대한 요청을 포함하고, 여기서 데이터에 대한 요청은, 제1 디바이스가 사고와 연관된 관련 데이터를 식별하기 위해 사용할 수 있는, 사고와 연관된 복수의 어트리뷰트들의 표시를 포함한다.
플로차트는 이어서 사고와 연관된 데이터를 식별하고 보존하기 위해 블록(6106)으로 진행한다. 특히, 제1 디바이스에 의해 캡처되는 센서 데이터는 사고와 연관된 관련 센서 데이터를 식별하기 위해 분석될 수 있다. 일부 경우들에서, 예를 들어, 사고의 대략적인 시간 및 위치 주위에서 제1 디바이스에 의해 캡처되는 센서 데이터는 사고와 관련있는 것으로 간주될 수 있다. 그에 따라, 관련 센서 데이터는, 예컨대, 이를 높은 우선순위 및/또는 서비스 품질(QoS) 지정을 사용하여 지정하고, 이를 적합한 메모리 또는 저장 디바이스에 저장함으로써, 보존될 수 있다. 대안적으로, 일부 실시예들에서, 나머지 데이터와 대비하여 가장 관련있는 데이터에 대한 상이한 지정들을 사용하여, 사고에 응답하여 모든 이용가능한 센서 데이터의 스냅숏이 보존될 수 있다. 이러한 방식으로, 필요한 경우, 전체 센서 데이터 컬렉션이 (예를 들어, 오프라인으로) 후속 프로세싱 및/또는 분석에 이용가능할 것이다.
플로차트는 이어서 근처의 다른 디바이스들에 통지하고 이들에 데이터를 요청하기 위해 블록(6108)으로 진행한다. 예를 들어, 제1 디바이스는 제1 디바이스 근처의 다른 디바이스들에게 사고와 연관된 데이터에 대한 요청과 함께 통지를 브로드캐스트/멀티캐스트할 수 있다. 다양한 실시예들에서, 예를 들어, 통지는 정보 중심 네트워크(ICN) 및/또는 IP 기반 네트워크를 통해 전송될 수 있다. 게다가, 일부 실시예들에서, 통지는 사고와 연관된 다양한 어트리뷰트들, 및/또는 사고와 연관된 이름 또는 식별자를 식별해줄 수 있으며, 수신 디바이스는 이를 사용하여 사고와 연관된 관련 데이터를 식별할 수 있다.
플로차트는 이어서 요청을 계속하여 포워딩할지를 결정하기 위해 블록(6110)으로 진행한다. 예를 들어, 통지가 제1 디바이스 근처의 다른 디바이스들에 의해 수신될 때, 각각의 수신 디바이스는 통지가 사고와 연관된 임의의 관련 데이터를 갖는지는 물론, 통지를 계속하여 포워딩할지를 결정할 수 있다. 일부 실시예들에서, 예를 들어, 각각의 수신 디바이스는, 사고의 시간 및/또는 위치와 같은, 통지에서 제공된 사고의 어트리뷰트들에 기초하여 관련 데이터(예를 들어, 센서 데이터)가 있는지 탐색할 수 있다. 더욱이, 관련 데이터가 특정의 디바이스에 의해 식별되면, 그 디바이스는 통지 및 데이터에 대한 요청을 그 근처의 다른 디바이스들에 포워딩할 수 있다. 그렇지만, 어떠한 관련 데이터도 그 디바이스에 의해 식별되지 않으면, 디바이스는 통지를 포워딩하는 것을 거부할 수 있다.
플로차트는 이어서 각자의 디바이스들에 의해 식별 및/또는 수신되는 관련 데이터를 통합, 집계, 및/또는 압축하기 위해 블록(6112)으로 진행한다. 예를 들어, 각각의 디바이스가 그 자신의 관련 데이터를 식별하고 또한 자신이 통지를 포워딩했던 다른 디바이스들로부터 관련 데이터를 수신할 때, 각각의 디바이스는 통지에 응답하여 데이터를 제공하기 전에 그의 데이터 컬렉션을 통합, 집계, 및/또는 압축할 수 있다. 이러한 방식으로, 각자의 디바이스들로부터의 모든 관련 데이터는 궁극적으로 사고와 연관된 통지에 응답하여 수집되고 통합된다.
플로차트는 통합된 데이터에 기초하여 사고를 재구성하기 위해 블록(6114)으로 진행한다. 다양한 실시예들에서, 예를 들어, 사고 재구성은, 센서 융합, 컴퓨터 비전, 인공 신경 네트워크들, 머신 러닝 등과 같은, 임의의 적합한 프로세싱 기술들을 사용하여 통합된 데이터로부터 사고의 다차원 표현을 생성하는 것에 의해 수행될 수 있다.
플로차트는 이어서 통합된 데이터 및/또는 재구성된 사고를, 경찰서, DMV, 보험 회사, 차량 제조업체, 또는 데이터를 필요로 하는 임의의 다른 사람 또는 엔티티와 같은, 적절한 엔티티에게 송신하기 위해 블록(6116)으로 진행한다.
이 시점에서, 플로차트가 완료될 수 있다. 그렇지만, 일부 실시예들에서, 플로차트가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 플로차트는 관심의 사고들을 검출, 재구성, 및/또는 보고하는 것을 계속하기 위해 블록(6102)에서 재시작될 수 있다.
수렴형 노드
사물 인터넷(IoT)에서, 네트워크들에 접속하는 센서들의 개수가 증가하고 있다. 카메라들과 같은, 이들 중 다수는 시간에 민감한 고볼륨 데이터 스트림들을 생성한다. 이러한 센서들이 네트워크의 바로 에지들에서 합류하기 때문에, 센서들의 데이터는 전형적으로 에지로부터 클라우드를 향한 방향으로 흐르고, 이는 네트워크가 원래 프로비저닝되었던 방식과 반대 방향이다. 더욱이, 단일 데이터 스트림의 크기는 대역폭 관점에서 중요할 수 있으며, 따라서 종종 실시간 애플리케이션들에 대한 레이턴시 제약들을 결과한다. 게다가, 이러한 흐름들 중 다수는 본질적으로 연속적이다. 따라서, 많은 고볼륨 스트림들이 동일한 라우터에 동시에 도착하여 수렴되는 경우 - 전형적인 계층적 및/또는 무선 네트워크 토폴로지들에서 종종 이러함 -, 이러한 데이터 흐름들이 메모리, 로컬 스토리지에, 및/또는 네트워크에서의 다음 홉을 따라 중 어느 하나에서 적합하지 않을 수 있다(이는 라우터가 그의 용량을 넘는 트래픽으로 과부하되는 경우 서비스 거부를 가져올 수 있음). 흐름들이 고볼륨이 아니거나 연속적이지 않을 때에도, 흐름들의 개수가 너무 많으면, 집계된 대역폭 요구사항들이 여전히 이용가능한 자원들(온 플랫폼(on platform) 및 오프 플랫폼(off platform) 둘 다)을 초과할 수 있다.
이러한 시나리오들은 데이터 임플로전(data implosion) 문제를 제시한다. 현재의 혼잡 제어 기술들은 부적절한데, 그 이유는 이들이 네트워크에서 라우터 버퍼 큐 자원들을 위해 경쟁하는 데이터 스트림들이 너무 많을 때 이 문제를 부분적으로만 해결하기 때문이다. 예를 들어, 일반 계층 3(L3) 라우터는 거대한 들어오는 데이터 스트림을 관리하기 위한 몇 가지 전략들을 갖는다: (1) 적합하지 않은 패킷들을 단순히 포워딩하지 않는다(예를 들어, 그들을 드롭시킨다); 또는 (2) 이용가능한 대역폭과 대비하여 요구된 대역폭의 미스매치(예를 들어, IP 헤더들에서의 명시적 혼잡 통지(explicit congestion notification)(ECN))를 소스는 물론 중간 라우터들에 간접적으로 시그널링한다. 전송 계층(예를 들어, TCP)에서, 혼잡이 완화될 때까지 패킷들의 흐름을 감소시키기 위해 혼잡을 검출하는 데 재전송 타임아웃들이 사용된다. 애플리케이션 계층에서, 데이터의 송신기는 (1) 데이터 교환이 시작되기 전에 구성 세부사항들을 사전에(up front) 요청 또는 협상할 기회를 갖거나, 또는 (2) 루트를 통한 데이터를 어떻게 적합하게 할지를 경로를 따르는 라우팅 힌트들로부터 추론하고 그리고/또는 (예를 들어, 데이터 흐름을 그의 원래의 포맷으로 취하고 이를 시스템을 통한 경로의 가장 제약된 부분을 적합하게 할 포맷으로 변환하는 것에 의해) 개별 데이터 스트림들을 변환할 기회를 가지며, 이는 네트워크를 통한 데이터를 어떻게 적합하게 할지를 애플리케이션과 동적으로 협상하는 것에 의해 달성될 수 있다. 혼잡이 또한 집성된 흐름들에 대해 더 크고 더 비싼 백본을 사용하지만, IoT의 유연성 및 잠재적인 스케일을 고려할 때 종종 매우 비싸고 실용적이지 않은 솔루션인 더 많은 대역폭과 같은, 더 많은 자원들을 추가하는 것에 의해 해결될 수 있다.
애플리케이션, 전송, 및 라우팅 계층에서의 기존의 혼잡 제어 기술들은 불충분한데, 그 이유는, 피크 또는 번잡 시간 트래픽에만 관련되는 일시적인 혼잡 문제보다는, 기존의 용량과 대비하여 흐름들의 증가로 인해 IoT 용량 문제가 존재하기 때문이다. 게다가, 상당한 비용을 초래함이 없이 네트워크 용량을 추가하는 것이 기존의 솔루션들로는 가능하지 않다.
혼잡 제어 알고리즘들이 네트워크 내의 전통적인 라우터 노드들에서의 데이터 오버런(data over-run)을 최소화하려고 하지만, 혼잡은 궁극적으로 패킷들의 큐가 커지는 것을 가져오며, 이는 엔드-투-엔드 지연을 증가시킨다. 큐가 오버플로할 때 - 이는 도착하는 데이터를 저장할 공간이 더 이상 없음을 의미함 -, 라우터는 패킷들을 드롭시키기 시작하며, 이는 순차적인 패킷들(in-order packets)의 전달을 요구하는 흐름들에 큰 영향을 미칠 수 있거나 또는 패킷들의 신뢰할 수 있는(그러나 어쩌면 비순차적인(out-of-order)) 전달을 요구하는 흐름들의 전달에도 약간의 영향을 미칠 수 있다. 예를 들어, 지연 및/또는 패킷 손실은, 데이터가 비정상 자동차 또는 환경 사고들에 대한 블랙 박스 또는 실측 자료(ground truth)로서 아카이빙되어야 하는 커넥티드 카에 장착된 카메라에 대해서는 용납가능하지 않음은 말할 것도 없이, 매우 파괴적일 수 있다.
그에 따라, 본 개시내용은 에지 및 포그 컴퓨팅 시스템들에서 N대1 방식으로 흐르는 비주얼 데이터 스트림들을 효율적으로 라우팅/프로세싱/캐싱하도록 설계된 "수렴형 노드"의 다양한 실시예들을 제시한다. 수렴형 노드는 들어오는 데이터의 양과 나가는 데이터에 이용가능한 자원들의 양 사이에 큰 차이가 있을 때에도 데이터의 계속된 전송을 가능하게 해준다. 이것은, 다수의 카메라들이 상이하지만 오버랩하는 관점들로부터의 이미지들을 캡처할 때와 같이, 컨텍스트적으로 관련된 스트림들의 집합적 프로세싱 및 캐싱으로 인해 가능하다.
수렴형 노드의 기본 발상은 IoT 데이터 흐름들의 임플로전(예를 들어, 스마트 환경에서 조밀한 카메라 배포로부터 업스트림으로 흐르는 데이터의 다대일 성질)을 이해하고 방지하기 위해 전통적인 L3 라우터의 기능성을 확장하는 것이다. 다수의 들어오는 스트림들이 종종 (예를 들어, 공간, 시간, 및 어쩌면 다른 방식들로) 컨텍스트적으로 관련되기 때문에, 수렴형 노드 IoT 라우터들은 새로운 전략: 스트림들을 함께 프로세싱, 분석, 및 변환하는 것을 제공한다. 예를 들어, 수렴형 노드는 사실상 다수의 들어오는 스트림들을 취하고 이들에 대해, 애널리틱스, 머신 러닝, 인공 지능 등과 같은, 변환 컴퓨팅 기능들(transformative compute functions)을 수행함으로써 단일 출력 스트림으로 변환하며, 이는 새로운 종류의 "압축"으로서 역할한다. 새로운 출현 스트림은 이어서 기여하는 및/또는 근처의 이해당사자들에 의한 재사용을 위해 저장된다.
수렴형 노드는 데이터 임플로전 문제를 피하면서 스케일(예를 들어, 고볼륨, 연속적, 저 레이턴시, 및/또는 고밀도 흐름들)에 따라 역방향 데이터 흐름들을 지원할 필요성을 갖는 IoT 배포들에 서비스를 제공하기 위해 L3 라우터들에 대한 몇 가지 새로운 요구사항들을 초래한다. 예를 들어, 수렴형 노드와 관련하여, 네트워크 데이터 흐름들은 노드에 수렴하고, (비행 중이고 다른 곳으로 가는 도중에) 다수의 들어오는 스트림들로부터 단일의 나가는 스트림으로 결합 또는 병합될 수 있다. 흐름들의 이러한 수렴의 영향은 라우팅, 프로세싱, 및 컴퓨팅 서브시스템들이 (예를 들어, 내부 공유 데이터 버스 또는 공유 메모리를 통해) 데이터의 저 레이턴시 핸들링을 지원하도록 하드웨어에 동시 설계될 수 있다는 것이다. 새로운 수렴형 노드에 의해 구현되는 바와 같은, L3 라우터의 확장된 능력들은 아래에서 추가로 설명된다.
(예를 들어, 가속기들 및/또는 FPGA들을 사용하는) 하드웨어 솔루션에서 부가의 효율성들이 얻어질 수 있지만, 수렴형 노드의 기능성이 소프트웨어로 구현될 수 있다. 예를 들어, 하드웨어 버전은 제로 복사 설계(zero-copy design)를 이용할 수 있으며, 제로 복사 설계는 데이터를 고려를 위해 각각의 서브시스템으로 복사하는 것/이동시키는 것을 피한다는 것을 의미하며, 그 대신에 기능성/서비스/연산을 데이터 자체로 이동시켜, "컴퓨팅을 데이터로 이동시킨다"는 철학을 따른다.
수렴형 노드는 비용 효율적인 방식으로 스케일링가능하고 기존의 솔루션들보다 우수한 성능을 제공하는 네트워크 혼잡에 대한 솔루션을 제공한다. 예를 들어, 수렴형 노드 라우터들은, 특히 비디오 및 비주얼 데이터 흐름들과 관련하여, 실제 네트워크들에 에지 컴퓨팅을 위한 서버들을 배포하는 네트워크 운영자들 및 다른 엔티티들에 상당한 비용 및 성능 이점들을 제공할 수 있다. 부가적으로, 이 솔루션은, 데이터가 지리적 영역별로 조직화되고 따라서 계층적 또는 다중-티어 토폴로지(예를 들어, 계층화된 관리 도메인들 또는 클라우드들)를 포기할 때 - 예들 중에서도, 비디오 감시, 에너지 모니터링, 및 건강관리 사용 사례들의 경우 종종 그러함 - 와 같이, 엔드-투-엔드 역방향 흐름들이 다수의 수렴형 노드들을 통과하는 컨텍스트들에 매우 적용가능하다.
수렴형 노드는 또한, (예를 들어, 다수의 스트림들에 걸친 시간 제약된 전달 및 시간에 민감한 코디네이션 둘 다를 충족시키기 위한) 고분해능 타임스탬프의 유용성과 같은, 시간에 민감한 능력들, TCC(time coordinated compute) 능력들을 구현하는 것 등에 관련된 이점들을 제공한다.
위에서 언급된 바와 같이, L3 라우터와 같은, 전통적인 라우터의 기능성을 확장함으로써 수렴형 노드가 구현될 수 있다. 이 확장된 “수렴형 노드” 라우터 내에서의 프로세스 흐름은 다음과 같을 수 있다: (1) IoT 에지 및 포그 시스템들에 대한 심각한 데이터 임플로전 문제를 이해하고 관리한다; (2) 다수의 컨텍스트적으로 관련된 스트림들을 동시에 프로세싱한다; (3) 스트림이 관심을 끌거나 눈에 띄는지 및 스트림이 어떻게 관심을 끌거나 눈에 띄는지를 분석하기 위해 패킷 헤더들 너머를 살펴본다; (4) 스트림들이 관련되고 "압축될" 수 있는지 및 스트림들이 어떻게 관련되고 "압축될" 수 있는지를, 이 용어의 더 넓은 의미로, 분석하기 위해 패킷 헤더들 너머를 살펴본다; (5) 기능들/서비스들/방법들을 동적으로 요청하고 페치하는 능력을 필요로 하는, 상이한 시나리오들에 대해 상이한 기능들을 이용할 수 있는, 전방으로 가는 단일의 새로운 스트림으로 등장할 기능적 전략을 식별한다; (6) 더 큰 자원 효율성을 위해, 컨텍스트적으로 관련된 이해당사자들, 특히 모바일, 무선, 저전력, 및/또는 근접한 이해당사자들에 의한 재사용을 위해 새로운 스트림을 캐싱한다; (7) 새로운 스트림이 향해가고 있었던, 반대 방향으로 새로운 스트림을 라우팅한다; (8) 새로운 스트림을 다른 방향들로, 예를 들어, 로컬 에지 클라우드 내에서 및/또는 이웃하는 클라우드들을 가로 질러, 라우팅하는 옵션을 제공한다; (9) 온 플랫폼 시간 지연을 최소화하기 위해 라우팅, 컴퓨팅 및 캐싱 서브시스템들을 동시 설계한다; (10) 서브시스템들 사이의 효율적인 데이터 핸드오프(hand-off of data)를 구현하기 위해 제로 복사 HW 설계 기술들을 이용한다; 그리고 (11) N대1 프로세스의 분석/변환 페이즈를 준비하기 위해, 플랫폼에서의 시간 동기화 능력들을 활용하여 다수의 데이터 스트림들에 걸쳐 동기화한다.
스트림들이 서로 컨텍스트적으로 관련되는 것으로 간주될 수 있는 다양한 방식들이 있다. 예를 들어, 일부 실시예들에서, 콘텐츠의 이름과 상이한 스트림들 사이의 넓은 상관(broad correlation)이 사용될 수 있다. ICN 컨텍스트에서, 특정의 콘텐츠 "이름"을 갖는 데이터를 요청하는 특정 ICN 인터레스트 패킷에 응답하는 모든 스트림들은 컨텍스트적으로 관련된 것으로 간주된다. 시스템은 PIT(Pending Interest Table)에서의 엔트리들을 "컨텍스트적으로 관련된" 그룹들에 대한 디렉토리에서의 엔트리들로서 재사용할 수 있다. 비-ICN 컨텍스트에서, 시스템은 여전히 콘텐츠의 이름 또는 이름 유사 어트리뷰트들을 활용하여 스트림들을, 콘텐츠의 URL/URI, 또는 전송 패킷 헤더 튜플들(예를 들어, 송신기 및 수신기 어드레스들 및 포트 번호들), 또는 동일한 서브넷 어드레스(예를 들어, 동일한 서브넷 어드레스 프리픽스)로부터 발신되는 스트림들과 같은, 컨텍스트적으로 관련된 그룹들로 조직화할 수 있다. 이름 기반 기술들의 사용은, 고도로 자원 집중적인 프로세스인, 콘텐츠 자체의 심층 패킷 검사(deep-packet inspection)를 사용하는 것보다 유익하다. 대안적으로, 일부 실시예들에서, ICN과 별개인, 비주얼 영역(visual realm)에서, "관심 영역"(예를 들어, 공간 및 시간상 근접성) 내의 스트림들은 컨텍스트적으로 관련된 패킷 그룹들로 조직화될 수 있다.
일부 실시예들에서, 예를 들어, 수렴형 노드는 전통적인 라우터 기능성 외에 다음과 같은 능력들을 포함할 수 있다: (1) 패킷 헤더들을 넘어서 데이터 흐름들에서의 데이터를 분석하는 것; (2) 컨텍스트적으로 관련된다는 것(예를 들어, 지리적 관심 영역 내에 있음, 동일한 벤더에 의해 소유됨, 동일한 버전의 멀웨어 소프트웨어를 실행함 등)이 무엇을 의미하는지를 정의하는 것; (3) N개의 컨텍스트적으로 관련된 들어오는 데이터 흐름을 집합적으로 프로세싱하는 것; (4) 이러한 흐름들이 라우팅/캐싱되기 전에 이들을 "압축"하기 위해 이들에 걸쳐 수행할 기능을 추천하는 것; (5) N개의 스트림을 더 적은 자원을 소비하는 단일의 새로운 데이터 흐름으로 변환하는 것; (6) 예컨대, 새로운 스트림에 기여했을 수 있는 인근 근접 센서들에 의한 및/또는 결과들에 관심이 있는 사람들에 의한 요청 및 검색을 위해, 어쩌면 새로운 스트림을 로컬로 캐싱/저장하는 것; 및 (7) 새로운 데이터 스트림을, 데이터가 원래 흐르고 있었던 북쪽 방향일 수 있지만, 피어 클라우드들 쪽으로 동서 방향으로 또는 이해당사자들 쪽으로 남쪽 방향으로와 같이, 더 넓은 유포를 또한 포함할 수 있는, 그의 다음 의도된 업스트림 목적지로 라우팅하는 것.
이러한 기능들이 (예를 들어, 도 62에 도시된 바와 같이) 역방향 데이터 흐름 경로 내의 단일 수렴형 노드에서 수행되는 것으로 일반적으로 설명되지만, 다수의 레벨들의 N대1 수렴된 데이터 흐름들을 지원하는 디지털 감시 시스템에서 그러할 수 있는 바와 같이, 데이터 스트림이 그의 최종 보관 장소(final archival resting place)에 도달할 때까지 그 기능들이 캐스케이딩 방식으로 여러 번 조우되고 반복될 수 있다. 이러한 엔드-투-엔드 데이터 흐름 및 이를 둘러싼 프로세싱-캐싱-라우팅 능력들은 rCDN(reverse content distribution network)이라고 지칭될 수 있다. 수렴형 노드들은, 도 63에 도시된 바와 같이, rCDN에서 엔드-투-엔드 경로를 따라 있는 확장 라우터들로서 간주된다.
수렴형 노드는, 그것이 패킷 헤더를 넘어서 데이터 스트림 내부를 살펴보지만 오히려, L3 라우터의 더 전통적인 주안점인, 콘텐츠 "패킷들 페이로드"에 중점을 둘 것을 요구한다는 점에서 이전의 L3 라우터 솔루션들과 상이하다. 부가적으로, 사후(post-facto)와 대비하여 데이터 스트림들이 비행 중인 동안 수렴형 노드는 그의 설명된 기능성을 수행할 수 있다. 수렴형 노드 라우터는, 압축, 암호화, 트랜스코딩, 라벨링, 집성/컨텍스트적 공통성에 기초하여 일부 흐름들을 더 큰 흐름들로 그룹화하는 것, 서브-샘플링, 결합(예를 들어, 스티칭), 및 애널리틱스(예를 들어, 통계적 분석, 머신 러닝(ML), 딥 러닝(DL) 또는 어떤 다른 형태의 인공 지능 또는 머신 러닝인지에 관계없이, 임의의 유형의 분석을 광범위하게 지칭함)을 포함하지만 이들로 제한되지 않는, 다양한 프로세싱 능력들을 나타낼 수 있는, N대1 변환을 수행한다.
수렴형 노드의 애널리틱스 기능성과 관련하여, 프로세스는 데이터를 그의 원래의 데이터 포맷으로 취하고 이를 다른 포맷으로 변환할 수 있다. 비주얼 시야에서 관심을 끄는 이벤트들의 출현을 트래킹하는 새로운 메타데이터 스트림을 생성하기 위해, 객체 인식 및 객체 카운팅과 같은, 데이터 스트림 내의 현상들의 요약에서 또는 데이터 스트림 내의 현상들의 라벨링에서 이러할 수 있다.
제안된 방법의 주요 이점은, 스트림들이 본질적으로 비디오/비주얼인지 여부에 관계없이, 이 방법이 N대1 데이터 임플로전을 겪는 임의의 조밀한 IoT 배포에 적용된다는 점이다. 게다가, 이 기술이 정보 중심 네트워크 아키텍처들과 잘 어울리지만, 이 기술이 그들에 의존하지는 않는다.
IoT 에지 및 포그 시스템들에 대한 심각한 데이터 임플로전 문제를 이해하고 관리하는 것; 다수의 컨텍스트적으로 관련된 스트림들을 동시에 프로세싱하는 것; 스트림이 관심을 끌거나 눈에 띄는지 및 스트림이 어떻게 관심을 끌거나 눈에 띄는지를 분석하기 위해 패킷 헤더들 너머를 살펴보는 것; 스트림들이 관련되고 "압축될" 수 있는지 및 스트림들이 어떻게 관련되고 "압축될" 수 있는지를 (이 용어의 더 넓은 의미로) 분석하기 위해 패킷 헤더들 너머를 살펴보는 것; 기능들/서비스들/방법들을 동적으로 요청하고 페치하는 능력을 필요로 하는, 상이한 시나리오들에 대해 상이한 기능들을 이용할 수 있는, 전방으로 가는 단일의 새로운 스트림으로 등장할 기능적 전략을 식별하는 것; 더 큰 자원 효율성을 위해, 컨텍스트적으로 관련된 이해당사자들, 특히 모바일, 무선, 저전력, 및/또는 근접한 이해당사자들에 의한 재사용을 위해 새로운 스트림을 캐싱하는 것; 새로운 스트림이 향해가고 있었던, 반대 방향으로 새로운 스트림을 라우팅하는 것; 새로운 스트림을 다른 방향들로, 예컨대, 로컬 에지 클라우드 내에서 및/또는 이웃하는 클라우드들을 가로 질러, 라우팅하는 옵션을 제공하는 것; 온 플랫폼 시간 지연을 최소화하기 위해 라우팅, 컴퓨팅 및 캐싱 서브시스템들을 동시 설계하는 것; 서브시스템들 사이의 효율적인 데이터 핸드오프를 구현하기 위해 제로 복사 하드웨어 설계 기술들을 이용하는 것; 및 N대1 프로세스의 분석/변환 페이즈를 준비하기 위해, 플랫폼에서의 시간 동기화 능력들을 활용하여 다수의 데이터 스트림들에 걸쳐 동기화하는 것을 포함하여, 수렴형 노드와 연관된 수많은 신규의 개념들이 있다.
스마트 카메라들을 사용한 자동화된 시맨틱 추론
머신 러닝은 통상적으로 카메라들을 사용한 비주얼 객체 인식에 사용된다. 예를 들어, 스마트 카메라들은 기준 템플릿(reference template)(RT)이라고 지칭되는 유사한 객체들의 커뮤니티를 사용하여 머신 러닝(ML) 엔진을 트레이닝시킴으로써 카메라의 시야에서 객체들을 검출하기 위해 ML 기반 객체 인식을 사용한다. 카메라들이 이전에 보이지 않는 객체들의 필드를 스캔할 때, 카메라는 기준 템플릿 값들과 비교되는 템플릿 결과들을 생성하는 패턴 인식 알고리즘을 적용한다. ML 설계자는 기준 템플릿을 그것이 인식하는 객체를 특성화하는 방식으로서 명명한다. 예를 들어, 몇 개의 구형 객체들을 트레이닝시킨 후에, 기준 템플릿은 "공" 또는 "구(sphere)"와 같은 이름을 부여받을 수 있다.
동일한 형상을 갖는 상이한 유형들의 객체들을 구별하기 위해, 각각의 객체(예를 들어, 탁구 공, 농구 공, 축구 공 등)에 대한 부가의 트레이닝이 필요하다. 축구 공에 대한 기준 템플릿은, "공" 또는 "구"와 같은, 더 추상적인 형태들에 대한 기준 템플릿과 상이하다. 매우 추상적(highly abstract)으로부터 구체적(specific)에 이르는 다양한 객체들에 대한 RT 데이터베이스를 개발하는 것은 각각의 객체 분류에 맞게 설계되는 트레이닝을 요구하며, 이는 노동 집약적일 수 있다.
이러한 객체 인식 접근법들은 다양한 단점들을 겪는다. 예를 들어, 객체 인식은 인식될 필요가 있는 각각의 특정 객체에 대한 트레이닝을 요구한다. 게다가, 추상적 객체들의 인식은 전형적으로 RT 매칭 확률에서 더 적은 정밀도를 허용하는 규칙에 의존한다. 예를 들어, 약한 확률(weak probability)(예를 들어, 99% 매치가 아닌 70% 매치)은 시야 내의 피사체들이 더 구체적(예를 들어, 탁구 공, 농구 공, 축구 공)일 때 더 추상적인 "공"이 매칭된다고 결론짓는 데 사용될 수 있다. 그렇지만, 이 접근법은, 공이지만 구형이 아닌, 축구 공과 매칭시키는 데 실패할 것이다.
게다가, 분류체계들, 온톨로지들, 및 시맨틱 함의(entailment) 태그들과 같은, 형식 로직 모델링(formal logic modeling)을 사용하는 객체 분류는 통상적으로 구체적인 사물들을 추상적인 사물들에 관련시키는 풍부한 클래스 라이브러리의 관점에서 "사물들"을 기술하는 데 사용된다. 시맨틱 함의 방법들은 객체 추상화들의 클래스 계층구조들을 구축하는데, 여기서 루트 근처의 객체들은 리프들 근처의 객체들보다 더 추상적이다. 로직 프로세서들은 계층구조를 순회하여 공통 부모 노드를 발견함으로써 리프 노드 객체들의 퍼지 동등성(fuzzy equivalence)에 관해 추론할 수 있다. 그렇지만, 시맨틱 라이브러리들은 그것을 애플리케이션 도메인에 올바르게 관련시키기 위해 계층구조에서의 객체들에 대해 통상적으로 용인된 태깅 신택스에 의존한다.
시맨틱 데이터베이스들 및 온톨로지들은 또한 큰 저장 자원들을 요구할 수 있고, 시맨틱 관계들이 정확하도록 보장하기 위해 모델에 대한 업데이트들은 종종 인간 베팅을 요구한다.
그에 따라, 도 66 내지 도 68은 스마트 카메라들을 사용하여 비주얼 객체들의 자동화된 시맨틱 추론을 수행하기 위한 예시적인 실시예들을 예시한다. 이 실시예들은 ML 기반 객체 인식 및 시맨틱 모델링 기술들 둘 다를 스마트 카메라들 내에 통합시키며, 따라서 시야 내에서 발생하는 객체 상호작용들에 관한 더 효과적인 추론을 가능하게 해준다.
설명된 실시예들은 수많은 장점들을 제공한다. 예를 들어, 3D 카메라들, 특수 머신 러닝 및/또는 신경 네트워크 프로세서들(예를 들어, Movidius), 3D XPoint 및 Optane과 같은 진보된 저장 기술들 등과 같은, 다양한 기술들을 결합함으로써 더 정교한 스마트 카메라들이 제작될 수 있다. 이 향상된 카메라 기술은 4차원(4D) 스마트 카메라 기술이라고 지칭될 수 있다.
4D 스마트 카메라 기술은, 예를 들어, 객체 상호작용 시맨틱스에 관한 카메라 추론을 가능하게 해준다. 예를 들어, 해변에서 피크닉의 스틸 이미지가 주어지면, 카메라는 접시, 비치 볼, 및 태양을 인식할 뿐만 아니라 이미지를 "해변에서의 피크닉”이라고 자동 명명하는 XIF(exchangeable image file format) 데이터를 생성할 수 있다. GPS 데이터와 결합되어, 자동 생성된 이름은 특정 해변의 이름을 또한 포함할 수 있다(예를 들어, "캐넌 비치에서 피크닉").
게다가, 온톨로지를 사용한 시맨틱 모델링은 보이지 않는 객체 클래스들의 동적 추가를 허용한다. 예를 들어, 온톨로지에 포함되지 않은 객체가 주어지면, 새로운 태그를 자동으로 생성하고 이를 분류체계에 추가하기 위해 크라우드소싱과 같은 사용자 상호작용들이 활용될 수 있다.
예로서, 이 기술은 축구 스포츠 이벤트에 대해 게임 볼(game ball)을 식별 및/또는 다른 근처의 공들(예를 들어, 아웃 오브 플레이(out of play)인, 사이드라인에 있는 및/또는 관람석에 있는 공들)과 구별하기 위해, 경기장, 득점, 볼 인 플레이(ball in play), 및 선수 위치들을 분석하기 위해, 및/또는 규칙 위반들(예를 들어, 오프사이드 선수와 같은, 파울들 및 페널티들)을 검출하기 위해 사용될 수 있다. 이러한 방식으로, 이 기술은 카메라가 게임의 심판을 보는 데 더 강력한 역할을 할 수 있게 해준다.
일부 실시예들에서, 예를 들어, 다음과 같은 컴포넌트들이 4D 스마트 카메라 기술을 구현하는 데 사용될 수 있다: (1) 객체 인식을 위한 기준 템플릿(RT) 데이터베이스를 갖는 ML 또는 신경 네트 컴퓨팅 플랫폼(예를 들어, Movidius 또는 Neuron 플랫폼); (2) 다양한 추상화 레벨들에서 풍부한 객체 세트를 관련시키는 온톨로지/분류체계 데이터베이스; (3) 온톨로지 데이터베이스로부터 도출되고 RT 데이터베이스에서 객체들을 태깅하는 데 사용되는 태그 어휘; (4) "관심을 끄는" 객체 상호작용 조건들(예를 들어, 스포츠 경기 중의 규칙 위반들, 해변에서의 피크닉 등)을 검출하도록 설계된 목표 지향 추론 규칙들의 세트; 그리고/또는 (5) 관심을 끄는 기준 템플릿들, 온톨로지들, 및 규칙들로 캐시들을 지속적으로 업데이트하는 캐시 워머들(cache warmers).
도 66은 4D 스마트 카메라 시스템(6600)의 예시적인 실시예를 예시한다. 예시된 예는 4D 스마트 카메라(6610), 기준 템플릿들, 온톨로지들, 및/또는 규칙들의 리포지토리(6620), 및 프로세싱될 장면 또는 환경(6630)을 포함한다.
예를 들어, 4D 스마트 카메라(6610)는 알려진 객체들이 온톨로지에 의해 공급되는 태그 어휘를 사용하여 태깅되는 트레이닝 장면(들)(6612)을 관찰하는 카메라(6611)를 포함한다. 트레이닝 에이전트는, "볼"에 대한 온톨로지가 "구"는 물론 "공"의 다른 더 추상적이고 더 특별한 표현들을 또한 서술한다는 점을 고려하여 객체 온톨로지가 "구" 시맨틱스가 추론될 수 있게 해줄 것임을 알고, 상이한 형상들 또는 치수들을 갖는 다양한 시맨틱적으로 유사한 객체들(예를 들어, 축구 공, 럭비 공, 구슬, 탁구 공, 행성 등)을 선택함으로써 트레이닝을 최적화할 수 있다. 기준 템플릿 값들은 이 4D 스마트 카메라 또는 다른 4D 스마트 카메라(6610)에 의한 추후 사용을 위해 RT 리포지토리(6620)에 저장된다.
트레이닝에 후속하여, 카메라(6611)는 ML 또는 신경 네트 객체 인식 프로세서(ORP)(6613)(예를 들어, Intel Movidius 또는 Neuron)를 사용하여 매칭되는 객체들을 포함하는 장면(6630)을 관찰한다. 기준 템플릿(RT) 캐시(6618a)(예를 들어, 인텔 3DXpoint)는 통상적으로 인식된 객체들을 위해 설계된 객체 인식 기준 템플릿들의 세트를 포함한다. 객체가 빈번히 인식될수록, 기준 템플릿이 캐시(6618a)에서 발견될 확률이 높다.
객체 인식 프로세서(6613)는 다수의 객체들(이용가능한 자원들이 주어지면 그만큼 장면에서 발견될 수 있음)을 식별하고 이들을 시맨틱 프로세서(SP)(6614)에 전달한다.
시맨틱 프로세서(6614)는 다양한 시맨틱적으로 함의된(semantically entailed) 객체들을 더 넓은 시맨틱 컨텍스트에 관련시키는 온톨로지 요소들을 획득하기 위해 온톨로지 캐시(6618b)를 사용한다. 이러한 객체들은, 목표 지향 규칙들이 적용되는, 추론 프로세서(IP)(6615)에 제공된다. 규칙들은, 매칭될 때, 더 중요한 컨텍스트(예를 들어, 축구 경기, 해변에서의 이벤트)를 암시하는 매칭 기준들의 세트이다.
추론 프로세서(6615)는 예상된 객체들에 힌트들을 제공함으로써 객체 인식 및 시맨틱 함의를 최적화할 수 있다. 예를 들어, 추론 프로세서(6615)의 하나의 규칙이 "해변에서의 피크닉"을 기술하면, 객체 인식 프로세서(6613)는, "태양", "바다", "접시" 등과 같은, 부가의 객체들을 발견할 것으로 예상할 수 있다.
객체 인식 프로세서(6613)는 예상된 객체들의 인식에 프로세싱 우선순위를 부여할 수 있다. 발견되면, 새로운 객체들은 시맨틱 함의를 위해 프로세싱될 수 있고 기준 템플릿(RT)에 추가될 수 있으며, 이는 가능한 컨텍스트들 중 하나와 더 완전히 매칭할 수 있다. 따라서, 4D 스마트 카메라(6610)는 실제 컨텍스트일 가능성이 가장 높은 장면 컨텍스트에 초점을 맞추기 위해 규칙 매칭을 최적화할 수 있다.
추론 프로세서(6615)가 높은 확률로 규칙을 매칭시키면, 추론 프로세서(6615)는 개선된 인간-컴퓨터 상호작용들을 위해 사용될 수 있는 장면 컨텍스트 및 시나리오에 대한 그의 선택안을 애플리케이션 프로세서(6616)에 공개한다. 다른 한편으로, 추론 프로세서(6615)가 더 낮은 확률로 규칙을 매칭시키면, 추론 프로세서(6615)는 (위에서 설명된 바와 같이) 힌트들을 공급함으로써 확률을 개선시키려고 시도할 수 있거나, 또는 더 높은 점수(예를 들어, 제1 선택 규칙보다 더 높음)로 매칭할 수 있는 "유사한" 규칙들을 공급하도록 규칙들 리포지토리(6620)에 지시하는 캐시 업데이트 요청들을 규칙들 리포지토리(6620)에 송신할 수 있다.
유사하게, 시맨틱 프로세서(6614)는 매칭하는 온톨로지 요소들 "근처에" 있는 온톨로지 데이터를 요청함으로써 (예를 들어, 캐시 워머(6617b)를 사용하여) 그의 캐시를 워밍할 수 있다.
도 67은 시맨틱 함의 태깅을 사용한 기준 템플릿 트레이닝의 예시적인 실시예에 대한 플로차트(6700)를 예시한다. 일부 실시예들에서, 예를 들어, 도 67의 플로차트는 도 68의 플로차트에 대한 전제 조건으로서 적용될 수 있다. 일단 기준 템플릿(RT) 데이터베이스가 (예를 들어, 도 67의 플로차트를 사용하여) 충분히 채워지면, 이는 도 68과 관련하여 설명된 동작들을 수행하는 데 사용될 수 있다.
플로차트는, 온톨로지 데이터베이스가 4D 스마트 카메라 온톨로지 캐시에 로드되는, 블록(6702)에서 시작된다. 이어서, 플로차트는 이어서, 큰 객체 세트가 트레이닝되어, 트레이닝된 객체들 및/또는 액션들에 대한 기준 템플릿들(RT)을 결과하는, 블록(6704)으로 진행한다. 플로차트는 이어서 RT 트레이닝 엔진이 기존의 실측 자료 트레이닝 값들을 사용하여 템플릿 값에 대한 대략적인 매치를 발견하는, 블록(6706)으로 진행한다. 플로차트는 이어서, RT 트레이닝 엔진이, 온톨로지를 사용하여 더 구체적인 객체 분류들로 내비게이팅하기 위해, 태그 선택을 개선하기 위해 사용자(들)와 질문들 및 답변들을 수행하는, 블록(6708)으로 진행한다.
이어서, 플로차트는, 대부분의 사용자 답변들이 더 구체적인 객체 분류를 식별해주는지가 결정되는, 블록(6710)으로 진행한다. 블록(6710)에서의 답변이 아니오이면, 플로차트는, 기준 템플릿(RT)이 (온톨로지로부터 획득되는) 일반 태그로 태깅되고 (이용가능한 경우) 부가의 사용자들에 의한 후속 Q/A를 위해 표시되는, 블록(6718)으로 진행한다. 블록(6710)에서의 답변이 예이면, 플로차트는 블록(6712)으로 진행한다.
블록(6712)에서, 사용자 답변된 분류가 온톨로지 캐시에 있는지가 결정된다. 블록(6712)에서의 답변이 아니오이면, 플로차트는, 새로운 태그가 온톨로지에 추가되는, 블록(6714)으로 진행한다. 블록(6712)에서의 답변이 예이면, 플로차트는, 기준 템플릿(RT)이 (온톨로지로부터 획득되는) 사용자 식별된 태그로 태깅되는, 블록(6716)으로 진행한다.
이 시점에서, 플로차트가 완료될 수 있다. 그렇지만, 일부 실시예들에서, 플로차트가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 플로차트는 기준 템플릿 트레이닝 프로세스를 계속하기 위해 블록(6702)에서 재시작될 수 있다.
도 68은 장면 선택의 예시적인 실시예에 대한 플로차트(6800)를 예시한다. 예를 들어, 예시된 플로차트는 사용자의 관심을 끄는 것으로 알려진 장면들의 규칙 베이스(rule base)에 대응하는 객체들 및 액션들의 출현에 기초한 장면 선택을 보여주는 데 사용될 수 있다.
도 68의 플로차트는 감지된 객체들과 액션들이 상호작용할 수 있는 장면들의 세트를 구성하기 위해 비주얼 머신 러닝 기술들을 사용하는 객체 및 액션 인식을 시맨틱 프로세싱 및 추론 프로세싱과 결합한다. 추론 규칙들은 가능한/예상된 상호작용 패턴들을 기술하고, 센서(들)에 의해 현재 검출되지 않은 부가의/예상된 객체들 및 액션들을 제안할 수 있다. 예상된 객체들/액션들을 인식하기 위해 감지 활동을 더 잘 캘리브레이션하거나 집중시키는 힌트들이 센서들에 제공될 수 있다. 예를 들어, 힌트는 실세계 객체들에서 분산을 허용하기 위해 ML 매칭에 대한 더 낮은 임계치를 허용할 수 있거나, 원래 RT 캐시의 일부가 아니었던 RT 값들을 식별하기 위해 인접한 객체들/액션들을 찾기 위해 시맨틱 프로세서에 의해 사용될 수 있다.
이 접근법은 예상된 또는 통상적인 상호작용 역학에 따라 장면을 캘리브레이션함으로써 비주얼 콘텐츠 인식 소프트웨어 및 하드웨어를 "더 스마트하게" 만든다. 이것은 "보조 사용자 인식(assistive user awareness)" 애플리케이션들에 대해 인식 레이턴시를 감소시키고 인식 정확도를 개선시킬 것이다.
플로차트는, 4D 스마트 카메라 객체 및 액션 인식 프로세서(object and action recognition processor)(ORP)가 기준 템플릿(RT) 데이터베이스 및/또는 캐시를 사용하여 객체들 및 액션들을 검출하는, 블록(6802)에서 시작된다.
플로차트는 이어서, 객체 인식 프로세서가 RT 태그를 감지된 템플릿과 연관시키고 태깅된 템플릿(tagged-template)(TT)을 시맨틱 프로세서(SP)로 포워딩하는, 블록(6804)으로 진행한다.
플로차트는 이어서 다른 객체 또는 액션이 인식되었는지를 결정하기 위해 블록(6806)으로 진행한다. 블록(6806)에서의 답변이 아니오이면, 플로차트는 다시 블록(6802)으로 진행한다. 블록(6806)에서의 답변이 예이면, 플로차트는, 다수의 TT 인스턴스들이 주어지면, 시맨틱 프로세서가 공통 온톨로지 부모를 식별하기 위해 태그를 사용하여 온톨로지 데이터베이스 및/또는 캐시를 탐색하는, 블록(6808)으로 진행한다.
플로차트는 이어서 예상된 객체 또는 액션이 현재 장면에 있는지를 결정하기 위해 블록(6810)으로 진행한다. 블록(6810)에서의 답변이 아니오이면, 플로차트는 블록(6822)으로 진행한다. 블록(6810)에서의 답변이 예이면, 플로차트는, 예상된 객체 또는 액션이 현재 장면과 연관되고, 장면이 이어서 추론 엔진(IE)으로 포워딩되는, 블록(6812)으로 진행한다.
플로차트는 이어서, 추론 엔진이 현재 장면을 다른 가능한 장면들과 매칭시키기 위해 규칙 데이터베이스 및/또는 캐시를 조회하는, 블록(6814)으로 진행한다.
플로차트는 이어서, 현재 객체들이 제1 장면보다 더 적합한 것(better fit)인 제2 장면에 적합한지를 결정하는, 블록(6816)으로 진행한다. 블록(6816)에서의 답변이 아니오이면, 플로차트는 블록(6820)으로 진행한다. 블록(6816)에서의 답변이 예이면, 플로차트는, 현재 장면이 제2 장면으로 전환되는, 블록(6818)으로 진행하고, 플로차트는 이어서 블록(6820)으로 진행한다.
블록(6820)에서, 부가의 예상된 객체들 및/또는 액션들이 현재 장면에서 발견되는지가 결정된다. 블록(6820)에서의 답변이 아니오이면, 플로차트는 블록(6822)으로 진행한다. 블록(6820)에서의 답변이 예이면, 플로차트는 블록(6824)으로 진행한다.
블록(6822)에서, 인식 힌트들이 객체 인식 프로세서 및/또는 시맨틱 프로세서로 송신되고, 플로차트는 다시 블록(6802)으로 진행한다.
블록(6824)에서, 현재 장면의 스코어가 용인가능한 정확도 임계치 초과인지가 결정된다. 블록(6824)에서의 답변이 아니오이면, 플로차트는 다시 블록(6816)으로 진행한다. 블록(6824)에서의 답변이 예이면, 플로차트는, 매칭된 장면이 사용자에게 보고되는, 블록(6826)으로 진행한다.
이 시점에서, 플로차트가 완료될 수 있다. 그렇지만, 일부 실시예들에서, 플로차트가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다.
개선된 보안을 위한 비주얼 포그 스트림 다중화
비주얼 포그 배포 시나리오들은 수천 대의 카메라 센서가 비디오 스트림들을 수천 개의 뷰어에게 전송하는 것을 포함할 수 있다. 라이브 미디어 스트리밍에서, 스트림들은 센서로부터 뷰어에게 직접 전달되지 않을 수 있고, 중간 노드들에 의해 버퍼링되고, 스트리밍되며, 그리고/또는 재생될 수 있다. 이러한 중간 노드들은, 본질적으로, 홉-바이-홉(hop-by-hop) 라우팅 기능을 수행한다. 이것은 잠재적인 공격자들이 다양한 유형들의 중간자(man-in-the-middle)(MITM) 공격들을 시도하기 위해 라우팅 노드들인 체하는 것을 더 쉽도록 해준다.
기존의 솔루션들은 '악의적인' 루트들을 피하기 위해 그리고 콘텐츠를 숨겨 두기 위해(아직 암호화되지 않은 경우) 버퍼링/라우팅 노드들을 신뢰한다. 비디오 스트리밍 포맷들이 중간 노드들을 지원할 필요가 있기 때문에, 이들은 악의적인 전송 가로채기에 취약하며, 송신기가 그러한 공격들을 막기 위해 할 수 있는 일이 많지 않다. 예를 들어, 콘텐츠가 암호화되어 있는 경우, 송신기와 수신기는 암호화 키를 가져야만 하지만, 비주얼 포그 사용 사례들의 경우, 각각이 상이한 키들을 요구하는 수천 개의 뷰어와 수천 개의 송신기가 있을 수 있다. 적절한 키들이 제때에 이용가능하도록 보장하는 것은 스케일링가능한 솔루션이 아니다.
그에 따라, 도 69 및 도 70은 개선된 보안을 위한 비주얼 포그 스트림 다중화와 연관된 예시적인 실시예들을 예시한다. 설명된 접근법은 콘텐츠를 스트리밍하는 데 어느 중간 노드(들)가 사용될 것인지의 선택을 랜덤화함으로써 중간 라우팅 능력들을 유리하게 사용한다. 일련의 랜덤화된 중개자들은 공격자들이 루트를 예상하지 못하게 하는 데(그리고 중간자 공격을 목표로 하지 못하게 하는 데) 매우 효과적일 수 있다.
설명된 접근법은 또한, 하나의 스트림이 성공적으로 공격되더라도, 콘텐츠의 서브세트만이 공격자 조작들의 영향을 받도록 다수의 루트들에 걸쳐 콘텐츠를 다중화한다. 예를 들어, 공격자가 스트림에 프레임들을 주입한 경우, 상이한 (N-M)개 소수(minority)의 스트림들과 대비하여 동일한 M개의 스트림들의 임계치가 있을 것이다. 이들은 무시될 수 있다.
스트림들은 각각의 스트리밍 세션에 대해 생성되는 키들을 사용하여(예를 들어, Diffie-Hellman을 사용하여) 요구 시에 암호화될 수 있다. 적법한 라우터/중간 노드들이 베팅되고 EPID(enhanced privacy ID) 그룹의 멤버인 경우, 이들은 신뢰할 수 있는 중개자들로 인증될 수 있어, 공격자가 자신을 중개자라고 주장하는 것을 어렵게 만든다. 대안적으로, 인증서에 그룹 이름 어트리뷰트를 할당하는 것에 의해 그리고 비대칭 키들을 빈번히 재활용하는 것에 의해 전통적인 비대칭 암호화를 사용하여 그룹 멤버십이 주장될 수 있다. 대칭 키 암호화에 기초한 다른 대안은 그룹 대칭 키를 각각의 그룹 참여자와 공유하고 그룹 멤버가 그룹으로부터 제거될 때마다 키를 재활용한다.
설명된 실시예들은 수많은 장점들을 제공한다. 예를 들어, 이 접근법은 내장된 중복성(built-in redundancy)으로 인해 비주얼 포그 비디오 콘텐츠의 이용가능성을 증가시킨다. 대역폭이 문제가 되지 않는 사용 사례들에서는, 중복성이 모든 프레임들에 적용된다. 대역폭이 문제가 되는 사용 사례들에서는, 중복성이 키 프레임들에 적용되고 다른 프레임들에 임의로 적용된다. 예를 들어, 라이브 미디어 스트리밍에서, I- 프레임들은 중복성을 가져야만 하는 반면, P-프레임들 또는 B-프레임들은 중복성을 갖지 않을 수 있고; 라이브 360 VR 비디오 스트리밍에서, 저해상도 파노라마는 중복성을 가져야만 하는 반면 고해상도 사용자 특정 뷰들은 중복성을 갖지 않을 수 있다.
그에 부가하여, M-of-N 임계치 메커니즘은 중간자 공격들이 덜 성공적이도록 보장하는데 그 이유는 뷰어들을 스푸핑하기 위해서는 M개의 성공적인 공격이 요구되기 때문이다. 대역폭이 문제가 되는 사용 사례들에서, 다른 프레임들을 재구성하는 데 필요한 키 프레임들의 전달이 보증된다.
게다가, 키 관리는 M-of-N 및 중복성 팬 아웃(fan out)을 수용하도록 스케일링될 수 있고, EPID 그룹 키들은 신뢰할 수 있는 중개자/라우터 노드들을 인증하는 데 사용될 수 있으며, 루트들의 랜덤화는 공격자가 특정의 콘텐츠를 목표로 하는 것을 어렵게 만든다.
도 69는 비주얼 포그 스트림 다중화를 위한 시스템(6900)의 예시적인 실시예를 예시한다.
시스템은 비주얼 포그 카메라 및/또는 센서(6910) 및 콘텐츠 스트림의 하나 이상의 가입자(뷰어)(6930)로 구성된다. 콘텐츠 스트림들은, 라우팅 노드들이라고 불리는, 비디오 콘텐츠를 버퍼링하고, 저장하며, 포워딩하는 중간 노드들(6920a 내지 6920g)의 세트를 사용하여 소비될 수 있다. 다수의 가입자들이 개별적으로(discretely)(별개의 재생 제어를 가짐) 콘텐츠를 소비할 수 있도록, 카메라(6910)로부터 가입자(들)(6930)에게 전송되는 콘텐츠 스트림의 다수의(N개의) 사본이 있을 수 있다. 큰 콘텐츠 스트림들은 카메라(6910)에서 파티셔닝되고 가입자(6930)에서 함께 스티칭되는 다수의 콘텐츠 이미지들로 분할될 수 있다. 원하는 경우, 심리스 스트리밍 사용자 경험을 제공하기 위해 버퍼링 및 다른 스트리밍 기술들이 사용될 수 있다.
예시된 접근법은 몇 개의 중간 라우팅 노드들(6920)을 수반하는 상이한 루트들을 통해 통신되는 부가의 중복 사본들을 생성한다. 각각의 라우팅 노드(6920)는 잠재적인 공격자들이 최종 루트를 쉽게 예측할 수 없도록 다음 홉 노드의 그의 선택을 랜덤화한다. 가입자(들)(6930)가 중복 스트림들의 M-of-N 비교를 수행할 수 있도록, 가입자(들)(6930)는 콘텐츠의 적어도 (M개의) 중복 사본에 의도적으로 가입한다. 비교를 행하는 목적은 가능한 탬퍼링을 검출하는 것이다. 예를 들어, 악의적인 라우팅 노드(R3)가 자신을 루트에 삽입시킨 경우, 어느 콘텐츠가 유효한 복사본인지를 결정하는 데 사용할 콘텐츠의 (M-1)개의 중복 사본이 있을 것이다.
대역폭이 문제가 되는 사용 사례들에서, 예시된 접근법은, 다른 프레임들의 중복 사본들을 선택적으로 생성하면서, 키 프레임들의 부가의 중복 사본들만을 만든다. 네트워크 인프라스트럭처가 주어지면 중복성의 백분율을 결정하기 위한 애플리케이션 특정 비가 계산될 수 있다. 대안적으로, 비는 또한 QoS에 기초하여(예를 들어, PID 제어기를 사용하여) 온라인으로 조정될 수 있다.
이하의 함수는 루트들의 총수를 결정하는 데 사용될 수 있다: Total = Product(Count(S), Count(N)); 여기서 가입자 Sx는 송신된 Total개의 사본 중 N개 이상의 수신된 사본으로부터 M개의 사본을 선택한다. 이 접근법은 암호화, 키 교환, 및/또는 인증을 구현하는 것이 실용적이지 않을 때 사용된다.
일부 경우들에서, 라우팅 기능을 수행하기 위한 결정이 제어될 수 있는 라우팅 노드들에 대한 베팅 절차들을 구현하는 것이 실용적일 수 있다. 이러한 조건들 하에서, 라우팅 노드들은 이들을 라우팅 노드로서 기능하도록 인가하는 EPID 그룹 자격증명을 할당받는다. EPID 그룹 키는 라우팅 노드들을 인증하는 데 사용될 수 있고:
EPID Group_X = (Name_X, Pub_key (KX), Priv_keys(K-1 X0, K-1 X1 ,…,K-1 Xz ),
여기서 z는 라우팅 노드들(R) + 가입자들(S) + 1 카메라(C)의 개수이다.
EPID 개인 키는 각각의 이미지와 연관된 무결성 체크 값에 서명하는 데 사용될 수 있다. 대안적으로, 콘텐츠가 암호화되어야 하는 경우, 콘텐츠 전달 이전에 Diffie-Hellman 키 교환이 수행될 수 있으며, 여기서 GA 및 GB 값들은 EPID 개인 키(K-1 Xn)에 의해 서명된다. 콘텐츠를 수신하도록 선택된 라우팅 노드(또는 가입자)는 EPID 공개 키(KX)를 사용하여 서명을 검증한다. 이것은 인가된 라우팅 노드들만이 콘텐츠 이미지들을 핸들링할 수 있고, 따라서 성공적인 중간자 공격에 대한 가능성을 최소화할 수 있음을 보장한다.
도 70은 비주얼 포그 스트림 다중화의 예시적인 실시예에 대한 플로차트(7000)를 예시한다.
예시된 플로차트에서, 예를 들어, 카메라는 멀티-홉 라우팅 네트워크를 통해 이미지의 다수의 사본들을 송신할 수 있고, 여기서 공격자는 어느 라우터 또는 다른 MITM 호스트들을 공격할지를 쉽게 예측할 수 없고 가입자의 임계치 정책(threshold policy)을 무력화(fool)하기 위해 임계치(T) 개의 노드들을 쉽게 손상시킬 수 없다.
플로차트는 블록(7002)에서 특정의 프레임이 "키" 프레임인지를 결정하는 것으로 시작된다. 블록(7002)에서의 답변이 예이면, 플로차트는 블록(7010)으로 진행한다. 블록(7002)에서의 답변이 아니오이면, 플로차트는 블록(7004)으로 진행한다.
블록(7004)에서, 프레임이 중복 프레임인지가 결정된다. 블록(7004)에서의 답변이 아니오이면, 플로차트는 블록(7010)으로 진행한다. 블록(7004)에서의 답변이 예이면, 플로차트는 블록(7006)으로 진행한다.
블록(7006)에서, 현재 중복성(μ)이 허용가능 중복성(r)보다 큰지: μ > r?인지가 결정된다. 블록(7006)에서의 답변이 아니오이면, 플로차트는 완료된다. 블록(7006)에서의 답변이 예이면, 플로차트는 블록(7008)으로 진행한다.
블록(7008)에서, 이하의 방정식이 충족되는지가 결정된다:
Figure pct00033
. 블록(7008)에서의 답변이 아니오이면, 플로차트는 완료된다. 블록(7008)에서의 답변이 예이면, 플로차트는 블록(7010)으로 진행한다.
블록(7010)에서, 프레임 카운터(F)가 증분된다:
Figure pct00034
. 플로차트는 이어서, 이하의 방정식이 계산되는, 블록(7012)으로 진행한다:
Figure pct00035
Figure pct00036
. 플로차트는 이어서, 카메라가
Figure pct00037
값을 선택하는, 블록(7014)으로 진행한다.
플로차트는 이어서 라우팅 노드(R x )를 선택하기 위해 블록(7016)으로 진행하며, 여기서 x = Count(1,N)이다. 플로차트는 이어서 라우팅 노드(R x )가 목적지(S)에 더 가까운지를 결정하기 위해 블록(7018)으로 진행한다. 블록(7018)에서의 답변이 아니오이면, 플로차트는 다시 블록(7016)으로 진행한다. 블록(7018)에서의 답변이 예이면, 플로차트는 블록(7020)으로 진행한다.
블록(7020)에서, xN보다 큰지: x > N?인지가 결정된다. 블록(7020)에서의 답변이 아니오이면, 플로차트는 다시 블록(7016)으로 진행한다. 블록(7020)에서의 답변이 예이면, 플로차트는, 송신기가 Diffie-Hellman 비밀 정수(a) 및 다른 값들(GP)을 선택하고,
Figure pct00038
를 계산하는, 블록(7022)으로 진행한다. 플로차트는 이어서, 송신기가 K-1 Xn에 의해 서명된 메시지(M1)를 송신하는, 블록(7024)으로 진행한다.
플로차트는 이어서 다음 노드가 가입자(S)인지를 결정하기 위해 블록(7026)으로 진행한다. 블록(7026)에서의 답변이 아니오이면, 플로차트는 블록(7028)으로 진행한다. 블록(7026)에서의 답변이 예이면, 플로차트는 블록(7030)으로 진행한다.
블록(7028)에서, 라우팅 네트워크는 다음 라우팅 노드를 랜덤하게 선택하고 메시지(M1)를 다음 노드로 전달하며, 플로차트는 다시 블록(7022)으로 진행한다.
블록(7030)에서, 가입자는 N보다 작은 값(M)을 선택하고, M/N은 용인가능한 비를 기술하는 임계치 값(T)을 획득한다.
플로차트는 이어서 M/NT보다 큰지: M/N > T?인지를 결정하기 위해 블록(7032)으로 진행한다. 블록(7032)에서의 답변이 아니오이면, 플로차트는 완료된다. 블록(7032)에서의 답변이 예이면, 플로차트는 블록(7034)으로 진행한다.
블록(7034)에서, 임의의 메시지가 메시지들의 세트 M1(0,…,N-1)와 상이한지가 결정된다. 블록(7034)에서의 답변이 예이면, 플로차트는, 현재 루트가 블랙리스트에 추가되고, 블랙리스트 카운터(B)가 증분되는, 블록(7036)으로 진행한다. 블록(7034)에서의 답변이 아니오이면, 플로차트는, 가입자가 메시지(M1)를 검증하고 그 콘텐츠를 보는, 블록(7038)으로 진행한다.
이 시점에서, 플로차트가 완료될 수 있다. 그렇지만, 일부 실시예들에서, 플로차트가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다.
새니타이제이션을 갖는 프라이버시 보호 비주얼 질문 답변(VQA)
비주얼 질문 답변(VQA)은, 특정 비주얼 표현(예를 들어, 이미지)이 주어지면, 특정 형태 또는 구문(예를 들어, 자연어)으로 인간에 의해 제기되는 질문들에 자동으로 답변할 수 있는 컴퓨팅 시스템들을 수반한다. VQA는 최종 사용자들이 풍부한 비주얼 데이터와 쉽게 상호작용하기 위한 가장 기본적인 수단으로서 역할한다.
실세계 환경에서, 사실상 어디서나(예를 들어, 모든 소매업체들에서 그리고 모든 거리 모퉁이에서) 비디오들이 기록된다. 오프라인 소매업체들은, 예를 들어, (실행가능한) 쇼핑객 통찰들을 도출하기 위해 가능한 한 많은 비디오 데이터를 수집하고자 할 수 있는 반면, 쇼핑객들은 자신의 신원들 및/또는 다른 개인 정보의 공개를 방지하고자 할 수 있다.
그렇지만, 기존의 비주얼 프로세싱 시스템들은 전형적으로 (예를 들어, 주의 맵들(attention maps)을 생성하는 것에 의해) 입력으로서의 원시 이미지들로부터 애널리틱스 및 통찰들을 도출하며, 이는 이미지들에 캡처되는 사람들의 프라이버시를 손상시킬 수 있는데, 그 이유는 그것이 사람들의 신원 및/또는 다른 개인 정보를 드러낼 수 있기 때문이다.
그에 따라, 본 개시내용은 비디오들에 캡처되는 사람들의 신원을 마스킹하기 위해 중간 토폴로지적 시공간 표현들을 사용하는 프라이버시 보호 VQA 시스템을 제시한다. 예를 들어, 사람의 신규의 중간 표현을 비주얼 프로세싱 파이프라인에 주입함으로써, 사람의 신원을 드러내는 일 및/또는 사람의 프라이버시를 손상시키는 일 없이 비주얼 질의들이 답변될 수 있다.
설명된 접근법은 VQA 시스템에 대한 입력으로서 역할할 원시 이미지의 중간 새니타이징된(sanitized) 표현을 사용한다. 이러한 방식으로, 이 접근법은, 원래의 이미지들에 캡처되어 있는 사람들의 신원들을 감추기 때문에, 프라이버시 보호이지만, 원래의 이미지들의 토폴로지적 공간적 및 시간적 관계들이 보존되기 때문에, 여전히 의미있는 애널리틱스가 도출될 수 있게 해준다. 이것은, 쇼핑객들의 신원들을 드러내는 일 없이 소매 애널리틱스 목적들을 위해 쇼핑객 통찰들이 도출될 수 있게 해주기 때문에, 소매 컨텍스트에서 특히 유익하다.
도 71은 프라이버시 보호 VQA 데이터 흐름(7100)의 예시적인 실시예를 예시한다. 예시된 데이터 흐름은 원래의 이미지 또는 비디오를 수정된 프라이버시 보호 VQA 입력으로 변환하기 위해 비주얼 프로세싱 파이프라인에 새니타이제이션(참조 번호 7106)을 도입한다.
원래의 원시 비주얼 데이터의 토폴로지적 공간적 및 시간적 관계들을 보존하는 임의의 새니타이제이션 기술이 사용될 수 있다. 일부 경우들에서, 자원 제약된 디바이스들(예를 들어, 전력 제약들 및/또는 제한된 컴퓨팅 능력들을 갖는 디바이스들)이 비주얼 데이터를 추가의 VQA 프로세싱을 위해 클라우드에 전달하기 전에, 자원 제약된 디바이스들에 의해 새니타이제이션 기술이 수행될 수 있도록 새니타이제이션 기술은 충분히 경량일 수 있다.
일부 실시예들에서, 예를 들어, 새니타이제이션 기술은 랜덤한 잡음을 원래의 이미지에 추가하는 것을 수반할 수 있다. 예를 들어, 이미지에서의 장면의 전체적인 특성들이 보존되면서 원래의 이미지 내의 사람의 신원이 숨겨지도록 랜덤한 잡음의 양이 제어될 수 있다.
새니타이제이션 기술은 또한, 도 72에 도시된 바와 같이, 이미지 내의 캡처된 사람들의 신원들을 마스킹하기 위해 아바타들의 사용을 수반할 수 있다. 예를 들어, 사람의 신원이 그들의 얼굴에 의해 드러나기 때문에, 원래의 이미지에 대해 얼굴 검출이 수행될 수 있고, 임의의 검출된 얼굴들이 이어서 아바타들로 대체될 수 있다. 일부 경우들에서, 예를 들어, 사람의 얼굴(예를 들어, 참조 번호 7210a 또는 7210b)은 사람의 신원을 드러내기에 충분히 상세하지 않으면서 사람의 얼굴 특성들과 닮은 아바타(예를 들어, 참조 번호 7220a 또는 7220b)로 대체될 수 있다. 이러한 방식으로, 협업 컨텍스트 내에서 다른 사람들과 명확하게 구분될 수 있는 다수의 참여자들을 수반하는 컨텍스트적 사용자 경험을 여전히 제공하면서, 개인의 신원이 픽셀 도메인에서 효과적으로 제거된다. 게다가, 전형적으로 주변의 비주얼 프레임들로부터 추론가능한 인구통계적 컨텍스트가 어떤 다른 가상 컨텍스트와 함께 제거되고, 난독화되며, 그리고/또는 증강될 수 있다.
새니타이제이션 기술은 또한, 도 73에 도시된 바와 같이, 세그먼트화를 사용한 픽셀 레벨 라벨링을 수반할 수 있다. 예를 들어, 원래의 이미지(7300)는, 사람들, 나무들, 도로들, 차량들, 건물들, 하늘 등과 같은, 이미지에 표현되는 각각의 유형의 객체(7310a 내지 7310e)에 대해 개별 픽셀 라벨링을 사용하는 형태로 변환될 수 있다. 도 73에서, 예를 들어, 각각의 객체 유형은 상이한 컬러를 사용하여 표현된다.
이러한 프라이버시 보호 비주얼 프로세싱 접근법은 VQA 시스템들(예를 들어, 도 71의 VQA 시스템(7100))을 스케일링 아웃하는 것의 핵심으로서 역할하는데, 그 이유는 비주얼 컴퓨팅 네트워크의 에지에서 사람들의 신원들이 제거될 수 있지만, 강력한 클라우드 컴퓨팅 인프라스트럭처가 여전히 애널리틱스 목적들을 위해 효과적으로 활용될 수 있기 때문이다.
새니타이제이션은 또한 컨볼루션 신경 네트워크들(CNN들), 순환 신경 네트워크들(recurrent neural networks)(RNN들) 및/또는 셰퍼드 보간 신경 네트워크들(shepard interpolation neural networks)(SINN들)에 의해 통보될 수 있으며, 여기서 트레이닝된 "내적(dot product)"은 프라이버시에 민감한 학습된 콘텐츠를 필터링하는 데 사용될 수 있다. 예를 들어, 컨볼루션 계층은 작은 수용 필드(receptive field)를 갖지만 입력 볼륨의 전체 깊이까지 확장되는, 학습가능한 필터들(또는 커널들)의 세트로 구성된 계층의 파라미터들을 사용한다. 포워드 패스(forward pass) 동안, 각각의 필터는 입력 볼륨의 폭과 높이에 걸쳐 컨볼루션되어(convolved), 필터의 엔트리들과 입력 사이의 내적을 계산하고 그 필터의 2차원 활성화 맵을 생성한다. 그 결과, 네트워크가 입력 내의 어떤 공간적 위치에서 어떤 특정 유형의 특징을 검출할 때 활성화되는 필터들을 네트워크가 알게 된다. 부가의 계층은, "인간들의 얼굴들" 또는 "지리적 위치들"과 같은, 프라이버시에 민감한 것으로 코딩되는 커널들의 "불용어 리스트(stop list)"를 사용할 수 있다. 프라이버시에 민감한 입력을 갖는 콘텐츠 필터가 검출될 때, 프라이버시 민감성(privacy sensitivity)이 있는지를 검출하기 위해 프라이버시 필터 커널들이 활성화된다. 참(true)인 경우, 컨볼루션 계층들은 또한, 상기 프라이버시 완화 전략들 중 임의의 것의 적용을 플래깅하거나 트리거하는 데 사용될 수 있는, 프라이버시 민감성을 인식할 것이다.
어레이 기반 스토리지에 대한 가변 크기 타일들
비디오 프로세싱은 점점 더 소프트웨어 시스템들이, 소매 점포들에서 쇼핑객 행동들을 식별하는 것, 보안을 위한 비디오 감시 시스템들, 트래픽 모니터링, 자율 운전자 보조 시스템들, 가상 현실 시스템들, 스포츠 방송들을 위한 실시간 3D 모델 생성 등을 위한 것이든 간에, 상위 레벨 태스크들을 수행하기 위한 기본 도구가 되어 가고 있다. 그러한 시스템들의 전형적인 인스턴스화들은 각각의 파이프라인 스테이지가 어떤 비디오 알고리즘을 실행하고 추가로 프로세싱하기 위해 다운스트림 스테이지에 대한 그의 출력을 방출하는 프로세싱 파이프라인들을 수반한다. 종종, 자원 제약된 환경들은 그러한 프로세싱을 클라우드에 배포한다. 그러한 시스템들의 전체적인 성능(레이턴시 및 처리량 둘 다)의 중요한 양태는 방대한 양의 비디오 데이터를 효율적으로 저장하고 검색하는 능력이다.
비디오 프로세싱 알고리즘들은 전형적으로 이미지 또는 비디오 프레임의 서브섹션들에 대해 동작한다. 이미지 또는 비디오 프레임 내의 그러한 "관심 영역들"(ROI들)은 중요한 객체들 또는 특징들을 식별해주며, 종종 추가 분석의 소스이다. 그렇지만, 스토리지로부터 이러한 영역들을 추출하는 것은 종종 시간이 많이 걸린다. 전통적인 이미지 포맷들이 저장되는 방식으로 인해, ROI가 판독될 수 있기 전에 전체 이미지를 먼저 판독할 필요가 있다. 어레이 기반 스토리지 관리자에 이미지를 저장할 때에도, 서브섹션이 어레이 내의 다수의 영역들에 걸쳐 있을 수 있어, 필요한 것보다 많은 데이터가 판독되게 한다. 따라서, 이미지 내의 관심 영역들에 대한 액세스는 종종 시간이 많이 걸릴 수 있다.
도 22와 관련하여 위에서 논의된 바와 같이, 일부 경우들에서, 이미지/비디오는 비주얼 데이터 프로세싱을 용이하게 하도록 설계된 애널리틱 이미지 포맷(예를 들어, TileDB와 같은 어레이 기반 스토리지 관리자를 사용하여 구현됨)을 사용하여 저장될 수 있다. 애널리틱 포맷에 대해 어레이 데이터 관리자를 사용하는 것이 유리한데, 그 이유는 그것이 이미지 위에 논리적 타일들을 생성함으로써 프레임들 및 이미지들 내의 서브섹션들에 대한 빠른 액세스를 제공하기 때문이다. 이러한 타일들은, 관련 정보를 포함하는 타일들만이 리드 백(read back)되도록, 개별적으로 압축되어 기입된다. 부가적으로, 일부 실시예들에서, 애널리틱 이미지 포맷은 LZ4 압축만을 사용하여 구현될 수 있으며, 이는 더 복잡한 인코딩 및 디코딩을 요구하는 전통적인 포맷들에 비해 성능을 개선시킨다.
어레이 기반 스토리지 관리자(예를 들어, TileDB)를 사용하여 이러한 애널리틱 이미지 포맷을 구현할 때, 스토리지 관리자는 전형적으로 구성 스키마를 통해 타일 레이아웃을 지정하는 메커니즘을 제공한다. 그렇지만, 타일들을 정의하는 능력이 상당히 거칠어(coarse grained), 어떠한 방식으로도 애플리케이션 인식(application-aware)되지 않는 고정 크기 타일들만을 허용한다. 결과적으로, ROI들이 종종 다수의 타일들에 걸쳐 있다. 그러한 ROI들을 검색하는 것은 관계없는 영역들(extraneous regions)이 크로핑되기 전에 추가 정보(extra information)를 연속 메모리 버퍼 내로 판독하는 것을 수반한다. 따라서, 애널리틱 이미지 포맷을 사용하는 것이 (예를 들어, 전체 파일을 판독해야 하는) 전통적인 이미지 포맷들보다 적은 데이터가 판독되는 것을 결과하지만, 여전히 어떤 불필요한 데이터 이동이 있을 수 있다.
그에 따라, 상이한 관심 영역들(ROI들)에 대한 가변 크기 타일들을 갖는 애널리틱 이미지 포맷이 도 74 내지 도 81과 관련하여 제시된다. 예를 들어, 이미지 또는 비디오 프레임이 어레이 기반 스토리지에 저장될 때, 그것은 가변 크기 타일들로 분할될 수 있고, 이러한 타일들은 이미지 또는 프레임 내의 애플리케이션 관련(application-relevant) 관심 영역들에 기초하여 정의될 수 있다. 이러한 방식으로, 이미지들 내의 관심 영역들은 이미지들이 어레이 기반 스토리지 관리자 내에 저장되는 방식의 원동력이며, 이는 궁극적으로 이미지 액세스 속도를 개선시킨다.
이러한 개선된 애널리틱 이미지 포맷은 다양한 장점들을 제공한다. 예를 들어, 이미지 저장 및 검색은, 첨단 운전자 보조 시스템들(advanced driver-assistance systems)(ADAS), 사물 인터넷(IoT), 감시, 가상 현실, 실시간 3D 비디오 등과 같은, 급성장하는 부류의 중요한 비디오 프로세싱 시스템들의 주된 병목들이다. 설명된 기술들 및 알고리즘들은 애널리틱 이미지 포맷에 대한 애플리케이션-지정된 가변 크기 타일 정의들을 생성하는 데 사용될 수 있으며, 이는 ROI들이 이러한 영역들에 대한 액세스의 속도가 개선되도록 하는 방식으로 저장될 수 있게 해준다. ROI들이 보통 전체 이미지보다 훨씬 더 작다는 것을 고려할 때(예를 들어, 미식 축구 게임에서, 선수는 종종 3840x2160 픽셀 프레임에서 약 100x100 픽셀 영역임), 일단 파일 데이터가 ROI들을 검색하기 위해 순서대로 판독되었으면 ROI 경계들과 매칭하는 타일 경계들은 또한 데이터 이동의 감소는 물론, 감소된 포스트-프로세싱을 가져온다. 게다가, 저장된 애플리케이션 데이터의 중요한 서브섹션들에 대한 저장 시스템 레벨 지식은 그러한 데이터에 대한 액세스를 추가로 개선시키기 위한 플랫폼 레벨 특징들을 생성하기 위한 수많은 길들을 열어 준다.
TileDB와 같은 어레이 데이터 관리자는 애널리틱 이미지 포맷의 기본 스토리지 관리자로서 사용될 수 있다. TileDB는, 예를 들어, 조밀 및 희소 어레이들의 저장 및 검색을 관리하는 데 최적화되어 있다. 어레이는 타일들로 분할되고, 각각의 타일은 압축되어 디스크에 순차적으로 기입된다. TileDB는 현재 동일한 크기의 타일들을 지원한다(예를 들어, 높이와 폭이 제각기 모든 타일들에 대해 동일해야만 한다). 따라서, 어레이 데이터 관리자가 이미지/비디오 프레임들 내에서 다양한 크기의 타일들을 지원하도록 개발되거나 다른 방식으로 확장되어야만 한다. 더욱이, 관심 영역 정보(예를 들어, 시작 좌표들(x, y) 및 높이 및 폭을 나타내는 경계 박스들)가, 애플리케이션의 비디오 또는 이미지 프로세싱 파이프라인에서 업스트림에서 추가로 실행되는 알고리즘들과 같은, 기존의 알고리즘들에 의해 제공되어야만 한다. 이러한 방식으로, ROI 정보는 이미지/비디오 프레임을 저장하기 위해 어레이 스토리지 관리자(예를 들어, TileDB)에 의해 사용되는 타일 경계들을 정의하는 데 사용될 수 있다. 예를 들어, TileDB에서의 어레이는 스키마에 의해 정의되며; 스키마는 어레이의 크기 및 타일의 크기에 대한 정보를 보유한다. 이러한 스키마 정의는 타일 크기가 고정인지 가변인지를 나타내도록 확장될 수 있고, 가변 크기 타일들의 경우에, 어떤 알고리즘이 사용되어야 하는지의 표시가 추가로 제공될 수 있다.
본 개시내용은, 아래에서 추가로 설명되는 바와 같이, 애플리케이션-지정된 ROI 경계들과 매칭하는 타일 레이아웃을 정의하기 위해 가변 크기 타일들을 활용하는 기술들의 다수의 실시예들을 설명한다.
제1 알고리즘은 도 74 및 도 75에 의해 예시된다. 특히, 제1 알고리즘은 (도 74에 도시된) 재귀적 사분면 분할 알고리즘이고, 여기서 이미지는 4개의 타일로 재귀적으로 분할된다. 경계 박스 정보는 어느 타일들이 관심 영역들을 포함하는지를 결정하는 데 사용된다(로직은 도 75에 설명되어 있음). 알고리즘은 관심 영역이 타일들의 세트 내에 완전히 포함될 때까지 계속된다. 알고리즘에서의 마지막 단계는 임의적인 병합 단계이며, 여기서 임의의 관심 영역의 경계를 나타내지 않는 타일들이 함께 병합되어 더 적은 수의 더 큰 타일들을 형성한다. 이것의 일반적인 형태는 단순히 재귀적 분할 알고리즘이고; 이에 대한 변형들은 분할할 타일들의 개수(예를 들어, 4개가 아닌 9개)를 나타내는 파라미터를 추가하는 것으로부터 각각의 차원을 따라 이진 분할(binary division)을 수행하는 것과 같은 더 복잡한 대안에 이른다.
도 76a 내지 도 76e는 재귀적 분할 알고리즘의 간단한 예를 예시한다. 먼저, (도 76a에서 음영 처리된 직사각형으로 도시된 바와 같이) 이미지(7600) 내의 관심 영역(7602)이 식별된다. 재귀적 사분면 알고리즘은 (도 76b에 도시된 바와 같이) 이미지(7600)를 4개의 타일로 분할하고, 이어서 상부 2개의 사분면/타일을 관심 영역을 포함하는 것으로 식별한다. 이 2개의 타일은 사분면들/타일들로 추가로 세분화되어, 하부 2개의 사분면/타일은 (도 76c에 의해 도시된 바와 같이) 그대로 남겨둔다. 관심 영역(7602)이 (도 76d에 도시된 바와 같이) 전체 타일들 내에 독점적으로 포함될 때까지 관심 영역을 포함하는 타일들이 이러한 방식으로 재귀적으로 식별되고 세분된다. 마지막 단계는 이어서 (도 76e에 도시된 바와 같이) 관심 영역(7602)의 경계를 나타내지 않는 타일들을 더 큰 타일들로 결합시킨다.
도 77a 내지 도 77f는 이미지에 걸쳐 확산되어 있는 다수의 관심 영역들에 대한 재귀적 사분면 분할 알고리즘의 예를 예시한다. 이 예에서, 관심 영역들은 선수들과 심판을 표현한다. 알고리즘의 각각의 반복은, 최종 서브도면(도 77f)으로 끝나는, 개별적인 서브도면에 도시되어 있으며, 여기서 모든 관심 영역은 3개 내지 6개의 타일에 의해 캡슐화되는 반면, 다른 타일들은 결합되어 더 큰 타일들을 형성하였다.
재귀적 분할 알고리즘은, 도 77a 내지 도 77f의 상부에 있는 선수에 대해 필요한 바와 같이, 관심 영역의 일부를 얻기 위해 추가 세분화를 종종 요구한다. 도 77d로부터 도 77e로 이동하는 것은 선수의 발을 제외하고 주로 잔디인 영역을 분할하는 것을 요구한다. 일부 실시예들에서, 재귀적 분할 알고리즘의 파라미터들이 (4개가 아닌 9개로 분할하는 것과 같은) 상이한 분할 규칙을 허용하도록 변화될 수 있지만, 이것은 관심 영역을 식별하는 데 필요한 타일들의 개수의 증가의 대가로 오는 것이다.
제2 알고리즘은 도 78 및 도 79에 의해 예시된다. 특히, 도 78a 및 도 78b는 영역 기반 타일링 알고리즘에 대한 의사코드를 예시하는 반면, 도 79a 및 도 79b는 영역 기반 타일링 알고리즘을 사용하여 구성되는 타일들과 연관된 장애물들을 식별하기 위한 의사코드를 예시한다. 예를 들어, 영역 기반 타일링 알고리즘은 (도 78a 및 도 78b의 의사코드에 의해 도시된 바와 같이) 초기 타일 세트를 관심 영역들로서 정의한다. 이어서, 타일 폭 및 높이를 가능한 한 연장함으로써 부가의 타일들이 결정되고, 여기서 목표는 (도 79a 및 도 79b의 의사코드에 의해 도시된 바와 같이) x 또는 y 차원 중 어느 하나에서 현재 타일의 구성을 방해하는 임의의 관심 영역들(또는 다른 타일들)이 있는지를 결정하는 것이다. 그에 따라, 이 알고리즘은 제1 알고리즘과 관련하여 위에서 언급된 단점을 해결한다.
도 80a 내지 도 80c는 제2 알고리즘(예를 들어, 도 78 및 도 79의 영역 기반 타일링 알고리즘)의 예를 예시한다. 도 80a 내지 도 80c의 예시된 예는 도 76a 내지 도 76e의 예에서 사용되는 동일한 이미지에 기초한다. 영역 기반 타일링 알고리즘에서, (도 80a에 도시된 바와 같이) 관심 영역(8002)이 먼저 이미지(8000) 내에서 식별되고, 관심 영역은 (도 80b에 도시된 바와 같이) 정의될 첫번째 타일이다. 그로부터, 이미지의 좌측 상단 코너인, (0,0)에 시작점이 추가된다. x 방향에서는 방해하는 타일이 없으며, 따라서 타일이 이미지의 전체 폭에 걸쳐 연장된다. 그렇지만, y 방향에서는, 관심 영역이 타일 생성을 방해하고 있어, 타일의 하부 경계를 생성한다. (도 80c에 도시된 바와 같이) 타일의 좌측 하단 코너에 시작점이 추가되고, 알고리즘이 계속된다. 간략화를 위해, 예시된 예는 직사각형 타일들을 독점적으로 사용하지만, 일부 실시예들은 다양한 형상들 및 크기들의 임의의 다각형 타일들을 사용하여 구현될 수 있다.
영역 기반 타일링 접근법의 주된 이점은 타일들이 관심 영역에 대해 더 정확할 수 있고, 이는 더 적은 타일들을 결과한다는 것이다. 그렇지만, 재귀적 사분면 분할 알고리즘은, 도 81a 내지 도 81c와 관련하여 아래에서 추가로 설명되는 바와 같이, 오버랩하는 관심 영역들이 있을 때 더 적절할 수 있다.
도 81a 내지 도 81c는 (도 81a에 처음에 도시된 바와 같이) 다수의 오버랩하는 관심 영역들(8102a, 8102b)을 갖는 이미지(8100)를 사용하는 예를 예시한다. 영역 기반 타일링 알고리즘을 사용하면, (도 81b에 도시된 바와 같이) 오버랩하는 픽셀(들)(8104)을 양쪽 관심 영역들(8102a, 8102b)에 존재하는 것으로 식별하는 것이 가능하지 않다. 실제로, 관심 영역들 중 하나(8102b)는 영역별로 분할하려고 시도할 때 다각형으로 끝난다. 그렇지만, 재귀적 분할 알고리즘에서는, (도 81c에 도시된 바와 같이) 양쪽 관심 영역들(8102a, 8102b)에 대해 오버랩하는 타일(8104)을 요청하는 것이 가능하다.
따라서, 영역 기반 타일링 알고리즘은 중첩하는 관심 영역들을 핸들링할 수 없는 반면, 재귀적 분할 알고리즘은 오버랩하는 픽셀(들)이 양쪽 관심 영역들에 존재할 수 있게 해준다. 그에 따라, 사용 시나리오에 따라, 위에서 설명된 각자의 실시예들 각각은 장단점이 있다. 최대 유연성을 위해, 가변 크기 타일들의 레이아웃을 선택하기 위한 기술들의 포트폴리오가 제공될 수 있고, 따라서 애플리케이션들이 가장 효율적인 접근법을 사용하여 데이터의 관련 서브섹션들의 저장을 제어할 수 있게 해준다.
통합된 온라인 및 점포내 고객 쇼핑 경험
온라인 쇼핑의 성공과 편의성에도 불구하고, 오늘날 쇼핑객들은 구매를 하기 전에 (예를 들어, 제품을 보고, 만지고, 그리고/또는 테스트하기 위해) 오프라인 소매업체들에 여전히 끌리고 있다. 실제로, 이로 인해, 온라인에서만 존재(presence)가 시작되었던 많은 소매업체들은 그 이후로 실제 존재(physical presence)를 포함하기 위해 그들의 풋프린트를 확장하였다.
통합된 접근법은 개선된 고객 참여(customer engagement)를 위한 보완적 이점들(예를 들어, 이전 오프라인/온라인 활동들에 기초한 온라인/오프라인 인센티브들을 추가하는 것)을 제공하는 것을 가능하게 해준다. 그렇지만, 온라인과 오프라인 쇼핑 경험들(예를 들어, 웹사이트 대 실제 점포)을 연결시키는 것은 간단하지가 않다.
신뢰할 수 있는 고객 모델들은 구성하고 업데이트하기가 어렵다. 오프라인 소매 점포들은 온라인 점포들이 할 수 있는 동일한 방식으로 고객들의 활동들에 기초하여 고객들의 프로파일들을 구축하는 메커니즘들이 없다. 예를 들어, 고객이 온라인 점포를 방문하고 있을 때, 점포는 고객이 행하는 모든 클릭 또는 마우스 호버를 캡처한다. 온라인 점포들에서, 클릭들 및 다른 마우스 이벤트들은 고객을 모델링하는 데 사용되는 중요한 데이터 포인트들이다. 이와 달리, 오프라인 점포에서는, 고객의 프로파일에서 설명되지 않은 많은 액션들이 점포를 방문하는 동안 고객에 의해 취해진다.
예를 들어, 오프라인 점포들에서의 대부분의 고객 모델링 기술들은 완료된 트랜잭션들(예를 들어, 구매들 및 때때로 반품들)에 의존한다. 즉, 점포는 고객이 무엇을 구입했는지만을 알고, 고객이 점포를 방문하는 동안 관심을 가졌을 수 있는 다른 제품들에 대해서는 거의 또는 전혀 알지 못한다. 더욱이, 많은 솔루션들이 온라인 쇼핑 또는 오프라인 쇼핑 중 어느 하나에 맞춰져 있고, 둘 다에 맞춰져 있지는 않으며, 따라서 그들 각자의 쇼핑 경험들을 분리된 채로 둔다. 게다가, 온라인 점포들과는 달리, 오프라인 점포들에서의 많은 기술들은, 예를 들어, 제품의 진열 앞에 몇 분 동안 서있는 것에 의해, (잠재적) 고객이 보여주는 제품에 대한 관심을 캡처하지 못한다. 이러한 한계의 부산물은 오프라인 점포가 잠재적인 고객들의 관심사들에 대해 후속 조치를 행할 수 없다는 것이다.
그에 따라, 본 개시내용은 오프라인 점포들에서의 이러한 한계를 해결하고 온라인과 점포내 고객 활동 사이의 간극을 추가로 메우는 다양한 실시예들을 제시한다. 이러한 실시예들은 점포의 방문 동안 고객에 의해 취해지는 액션들로부터 생성되는 그리고/또는 비주얼 데이터로부터 추론되는 다양한 데이터 포인트들을 고객 모델에 통합시킨다. 이러한 데이터 포인트들은 이어서 고객 모델링을 개선시키는 데 사용된다. 개선된 고객 모델은 더 나은 애널리틱스를 생성할 수 있어, 그 중에서도, 고객에 대한 더 나은 추천들을 결과할 수 있다. 이러한 방식으로, 설명된 실시예들은 신규의 고객 모델링을 사용하여 온라인과 오프라인 쇼핑 경험들 사이의 간극을 메운다.
도 82 및 도 83은 개선된 소매 고객 모델들과 연관된 예들을 예시한다. 특히, 도 82는 온라인 및 오프라인 고객 활동 둘 다에 기초한 통합 고객 모델의 예(8200)를 예시하는 반면, 도 83은 고객의 점포내 비주얼 풋프린트와 온라인 활동을 링크시키는 예(8300)를 예시한다. 점포 내부에 설치된 카메라들로부터의, 엄청난 양의 비주얼 데이터가 이용가능한 지능형 오프라인 점포들이 개발되고 있다. 이러한 지능형 점포들에서, 고객이 보통 점포에서 이동하는 동안 트래킹되고 제품의 취득을 추론하는 알고리즘들에 기초하여, 때로는, 카메라들과 같은, 센서들에 의해 캡처되는 데이터의 분석에 기초하여 과금된다. 도 82의 예에서, 전통적인 고객 모델이 오프라인 점포들에서 캡처되는 비주얼 데이터로부터 추론되는 고객 행동을 포함하도록 확장되며, 이는 고객의 다른 구매들 및 활동들(온라인 또는 점포내 중 어느 하나)과 결합되어 개선된 고객 모델(도 82, 8223)을 구성한다.
이 접근법은 온라인과 오프라인 아이덴티티들을 통합함으로써 디바이스-프리(device-free) 및 심리스 쇼핑 경험을 제공한다. 도 82 및 도 83에 예시된 바와 같이, 이 목표는 고객의 디지털 존재를 오프라인 점포 내의 카메라들에 의해 캡처되는 그들의 비주얼 풋프린트와 링크시키는 것에 의해 달성된다(도 82, 8213). 귀중한 활동들(예를 들어, 점포를 방문하는 동안 제품에 대한 지각된 관심, 웹사이트 상에서의 클릭들 등)이 고객의 오프라인 활동들과 온라인 활동들 둘 다를 브리징하기 위해 링크된다(도 82, 8207 내지 8210, 8215 내지 8218). 통합 고객 모델은 이어서, 그 중에서도, 제품들 및 서비스들의 더 나은 추천들을 제공하기 위해(도 82, 8206, 8219 내지 8222, 8224) 머신 러닝 알고리즘들(도 82, 8221)에 피드될 수 있다.
일부 경우들에서, 링킹이 (예를 들어, 연관된 프라이버시 정책 또는 PLA에 기초하여) 프라이버시 위반을 다른 방식으로 제시할 수 있기 때문에, 사용자는 이러한 아이덴티티들의 링킹에 옵트인(opt-in)하도록 요구받을 수 있다. 게다가, 온라인/오프라인 아이덴티티들을 사용자 경험을 개선시키도록 설계된 그룹들/카테고리들의 세트에 할당함으로써 (사용자 프라이버시 정책들을 위반하지 않고) 심리스 또는 다른 방식으로 바람직한 점포내 사용자 경험이 달성될 수 있다. 예를 들어, "VEGAN" 카테고리는 VEGAN 카테고리를 오프라인 아이덴티티와 연관시켰을 수 있는 오프라인 경험에 기초하여 카테고리에 적합한 제품들이 특별가로 제공되고(featured) 그리고/또는 점포내 아이덴티티들에 마케팅되도록 정의될 수 있다. 카테고리에서의 멤버십은 EPID 암호화 그룹 키를 사용하여 암호화적으로 달성될 수 있으며, 여기서 오프라인/점포내/온라인 경험은 먼저 그룹 키를 등록하고 여기서 SGX 또는 다른 TEE는 오프라인/점포내/온라인 아이덴티티들에 걸쳐 그룹 키를 공유하는 데 사용된다. 결과적으로, 오프라인 아이덴티티 경험이 VEGAN 그룹에서의 멤버십을 결과하면, 점포내 아이덴티티가 VEGAN 그룹 참여자로만으로서 인증받는 것으로 - 그 대신에 임의의 고유 아이덴티티를 보류하기로 함 - 선택할 수 있도록 TEE는 그룹 키를 점포내 아이덴티티와 공유할 것이다. 결과적으로, 점포내 경험은 VEGAN 그룹에서의 멤버십에 대한 지식으로 보강될 수 있다(그러나 바람직하지 않은 프라이버시 위반 사용자 경험을 나타낼 수 있는 다른 것은 없다).
이 접근법은 수많은 장점들을 제공한다. 특히, 이는 소매 부문에서 온라인과 오프라인 쇼핑 경험들을 효과적으로 엮기 위한 기반으로서 역할한다. 예를 들어, 설명된 솔루션은 온라인 쇼핑과 오프라인 쇼핑 사이의 심리스 전환을 용이하게 한다. 온라인 프로파일과 점포내 비주얼 풋프린트 사이의 매핑을 갖는 것에 의해(도 82, 8213), 설명된 솔루션은 온라인 또는 점포내 중 어느 하나의 고객의 활동들을 사용하여, 온라인 및 점포내에서의 고객의 페르소나들 및 활동들 둘 다가 고객 모델에 통합되도록 보장한다(도 82, 8210, 8218). 고객 모델링을 위한 이러한 신규의 기술들이 추가로 비주얼 데이터 분석을 통합하는 다른 소매 솔루션들에 추가될 수 있고, 따라서 그러한 소매 애플리케이션들을 훨씬 더 매력적으로 만들 수 있다.
게다가, 이 솔루션은 디바이스 프리인데, 그 이유는 그것이 어떠한 디바이스도 고객에 의해 휴대될 것을 요구하지 않기 때문이다. 고객은 오프라인에서의 그의 존재(도 82, 8213)에 매핑되는 계정을 온라인에서 만든다(도 82, 8203). 고객이 처음으로 실제 점포에 처음 들어갈 때, 고객은 키오스크에서 로그인하고 비주얼 풋프린트를 캡처하기 위해 고상하게 그리고 신속하게 스캔되며(도 82, 8214), 일단 초기의 비주얼 풋프린트가 이용가능하면, 이는 각각의 사후 방문(도 82, 8213) 동안, 고객을 다시 전체 스캔할 필요없이, 업데이트되고 트래킹된다. 전체 스캔을 위한 추정 시간은 1분 미만이다. 일단 완료되면, 비주얼 풋프린트가 여전히 유효한 것으로 간주되는 한, 고객은 점포에 있는 동안 더 이상 그의 온라인 계정에 로그온할 필요가 없다.
온라인과 오프라인 상점들 둘 다에서, 고객들과의 상호작용을 최대화하지 않는 비즈니스들은 실패할 가능성이 있다. 그에 따라, (아래에서 추가로 설명되는 바와 같이) 비주얼 데이터로부터의 부가의 비-전통적인 데이터 포인트들을 사용하여(도 82, 8216), 설명된 솔루션은 고객 행동을 추론하고(도 82, 8215), 점포내의 관련 고객 활동들로부터 관심을 끄는 데이터 포인트들을 캡처한다.
도 84는 온라인 활동들과 점포내 고객 활동들을 사용하여 더 강건한 고객 모델을 구성하는 예(8400)를 예시한다. 도 84에 도시된 바와 같이, 온라인 활동들과 점포내 활동들 둘 다로부터의 데이터 포인트들은 더 완전한 고객 모델로 결합된다. 예를 들어, 관련 활동들(a k )은 활동이 기록된 시간을 사용하여 인덱싱된다. 고객 활동들은 온라인 활동들(O i ) 또는 점포내 활동들(I j )로서 분류될 수 있다. 애널리틱스 컴포넌트에 의해 고려될 수 있는 암시적 매핑이 있다. 예를 들어, 온라인으로 방문된 페이지들 또는 섹션들이 실제 점포에서 방문된 영역들에 매핑될 수 있다. 결과적인 통합 고객 모델은 (예를 들어, 더 나은 제품 추천들을 제공함으로써(도 82, 8206, 8219, 8220, 8224)) 비즈니스와 고객 간의 상호작용들을 개선시키는 데 사용될 수 있는 애널리틱스(도 82, 8221)로부터 더 나은 결과들을 생성한다.
설명된 솔루션은, 특히 고객이 구입하는 것을 끝내지 않는 제품들에 대해(도 82, 8215 내지 8217, 8219), 점포를 방문하는 동안 고객이 제품들과 갖는 상호작용들에 특히 주의를 기울인다. 온라인 점포들과 유사한 방식으로, 오프라인 점포들은 이 데이터를 사용하여 고객 욕구들을 더 잘 식별할 수 있고(도 82, 8221), 전통적인 채널들(예를 들어, 우편, 이메일(도 82, 8222, 8224)) 및/또는 비-전통적인 채널들(예를 들어, 개인화된 비주얼 사이니지(도 82, 8219))을 사용하여 후속 조치를 행할 수 있다.
도 85는 다수의 사용자들 또는 고객들(8502a, 8502b)의 활동들의 비교를 갖는 예(8500)를 예시한다. 특히, 2명의 사용자의 행동에 대한 현실적인 비교는 그들의 온라인 활동들과 점포내 활동들 둘 다에 기초하여 수행된다(도 82, 8221). 도 85에 도시된 바와 같이, 사용자 1은 사용자 2보다 온라인 활동들과 점포내 활동들 간에 더 균형된 분배를 갖는다. 통합 고객 모델과 비주얼 데이터로부터 획득되는 비-전통적인 데이터 포인트들을 사용하여, 비즈니스는 더 포괄적인 고객 프로파일들에 액세스할 수 있고, 이는 그의 고객들의 요망들 및 욕구들에 대한 더 나은 이해를 얻을 수 있게 해준다. 게다가, 설명된 솔루션은 또한 비즈니스가 온라인 활동을 점포내 활동에 매핑할 수 있게 해준다. 위에서 언급된 바와 같이, 사용자에 의해 방문된 웹 페이지들이 점포 내의 실제 영역들에 매핑될 수 있다. 따라서, 비즈니스는 점포를 방문할 때 그의 사용자들의 잠재적인 행동들과 요망들에 대한 더 나은 이해를 갖는다.
(온라인 및 점포내 둘 다에서) 설명된 솔루션에 관여된 상이한 유형들의 고객 활동의 예가 표 2에 예시되어 있다.
Figure pct00039
Figure pct00040
표 2에 보여진 바와 같이, 고객은 처음에 온라인으로 시스템에 등록한다. 일단 고객이 등록되면, 모든 관련 활동이 수집되고 고객 모델을 개선시키는 데 사용된다. 온라인 활동들로부터 획득되는 데이터 포인트들에 부가하여, 몇 가지 비-전통적인 데이터 포인트들이 또한 고객 모델에 추가된다. 이러한 데이터 포인트들은 비주얼 데이터의 분석으로부터 획득된다(도 82, 8215).
예로서, 고객이 점포의 특정 영역(들)에서 소비한 시간의 양이 부가의 데이터 포인트들로서 트래킹될 수 있다. 특히, 점포를 방문할 때 비전 센서들(예를 들어, 카메라들)을 사용하여 고객이 지속적으로 트래킹된다. 고객이 상당한 양의 시간을 소비하는 경향이 있는 영역들은 제품들의 향후 마케팅에 중요한 데이터 포인트들이다. 이러한 데이터 포인트들은 점포에 있는 동안 고객에 의해 방문된 영역들에 관한 시간적 정보를 분석하는 것으로부터 획득된다. 온라인 점포들에서 발생하는 것과 유사하게, 고객이 특정의 영역에서 상당한 시간을 소비하고 있다면, 그 행동은 개선된 고객 모델의 생성에 사용되는 데이터 포인트로서 등록된다. 점포는 이어서 적절한 경우(예를 들어, 프로모션들에 관한 우편/이메일을 통해) 후속 조치를 행할 수 있으며, 따라서 고객과의 관계를 개선시킬 수 있다.
다른 예로서, 머리 포즈 추정, 고객 자세 검출, 및 제품 위치 트래킹이 부가의 데이터 포인트들을 도출하는 데 사용될 수 있다. 예를 들어, 도 86은 머리 포즈를 사용하여 고객 데이터 포인트들을 추론하는 예(8600)를 예시한다. 특히, 제품 위치 트래킹과 결합된 고객 머리 포즈 추정(8603)에 기초하여, 고객(8602)이 특정의 제품(8604)을 관찰하고 있는 것으로 추론될 수 있다. 관찰이 시간적 임계치를 초과하면, 데이터 포인트가 생성되고 고객 모델을 개선시키는 데 사용된다. 예를 들어, 점포 내부에 있는 동안, 고객은 제품의 방향으로 응시할 수 있다. 이 행동의 시간이 측정되고, 임계치가 초과되면, 이 이벤트에 대한 데이터 포인트가 생성된다. 이러한 방식으로, 고객이 특정의 물품을 관찰한 경우, 점포는 후속하여 제품에 관한 부가 정보를 제공하기 위해 고객에 대해 후속 조치를 행할 수 있다. 이 솔루션은 전통적인 고객 모델링에서 누락된 공백을 채운다. 시간적 임계화(temporal thresholding)와 비주얼 데이터의 분석의 조합을 사용하여, 부가의 데이터 포인트들이 고객 모델에 추가되어, 점포가 고객에 접근하여 제안들 및 다른 정보로 후속 조치를 할 수 있게 해준다. 고객 모델링을 개선시킴으로써, 점포는 매출을 증가시킬 것으로 예상된다.
다른 예로서, 고객이 (예를 들어, 손으로 만짐으로써) 상호작용하는 제품들이 부가의 데이터 포인트들로서 트래킹될 수 있다. 일부 실시예들에서, 예를 들어, 이러한 데이터 포인트들은 진열된 제품들의 매핑과 함께, 다수의 카메라들에 의해 캡처되는 바와 같은 고객의 손의 위치를 삼각측량하여 생성될 수 있다. 예를 들어, 고객의 손이 일부 제품들이 위치되는 선반(예를 들어, 세탁용 세제들)에 가까이 있거나 이를 만졌으며, 시간적 임계치가 초과된 경우, 특정의 제품/브랜드에 대한 고객의 명백한 관심과 관련하여 데이터 포인트가 생성된다.
점포내 비주얼 데이터로부터의 이러한 부가의 데이터 포인트들을 사용하여, 고객의 더 나은 모델이 구성될 수 있다. 예를 들어, 고객 X가 제품들 <k, l, m>을 구입했다는 것을 아는 것에 부가하여, 고객이, 점포내 또는 온라인 중 어느 하나에서, 제품들 <n, o>에 관심을 보인 것으로 또한 결정될 수 있다. 이 접근법은 귀중한 정보를 점포에 제공한다. 개선된 고객 모델들이 추천 시스템들과 함께 사용되어 고객들에 대한 제안들로 후속 처리를 할 수 있다. 이것은, 개선된 고객 관계들과 함께, 오프라인 점포들에 대한 증가된 매출을 결과할 것이다.
이하는 이 솔루션에 의해 트래킹되고 활용될 수 있는 고객 활동들의 유형들의 예들이다:
(1) 온라인 고객 프로파일들을 구축하는 데 사용되는 전통적인 활동들: 방문의 타임스탬프, 클릭된 제품들 및 다른 마우스 이벤트들, 탐색들 등;
(2) 점포내 고객의 프로파일을 구축하는 데 사용되는 전통적인 활동들: 구매들, 반품들 등;
(3) 점포내 비주얼 데이터로부터 추론되는 부가의 활동들: 임계치(t 1 ) 초과의 시간 동안 관찰된 제품들, 임계치(t 2 ) 초과의 시간 동안 방문된 영역들, 고객이 만진 제품들 등.
이러한 방식으로, 제1 또는 제2 카테고리들만이 아니라, 데이터 포인트들의 상기 카테고리들 전부를 사용하여 개선된 고객 모델이 구축될 수 있다.
도 87은 전통적인 데이터와 비주얼 데이터 둘 다를 사용하여 개선된 고객 모델을 생성하기 위한 예시적인 데이터 흐름(8700)을 예시한다. 예를 들어, 전통적인 점포내 데이터 포인트들(예를 들어, 제품 구매들) 및 온라인 데이터 포인트들(도 82, 8207 내지 8210, 8217)이 점포 내에서 캡처되는 비주얼 데이터로부터 도출되는 추론된 고객 행동에 대한 데이터 포인트들과 함께 사용된다(도 82, 8215, 8216). 전통적인 데이터 포인트들을 비주얼 데이터 포인트들과 결합함으로써, 더 나은 고객 모델이 생성된다.
도 88은 통합된 온라인 및 점포내 고객 프로파일들을 활용하는 예시적인 애플리케이션(8800)의 아키텍처를 예시한다. 특히, 3개의 소스로부터 획득되는 데이터 포인트들: 비주얼 데이터로부터 추론되는 점포내 고객 행동(도 82, 8215), 고객의 온라인 활동(도 82, 8210) 및 점포내 구매 정보(도 82, 8217)을 결합함으로써 더 나은 고객 프로파일이 생성된다. 개선된 고객 모델 및 인벤토리 정보를 사용하여, 점포는 이어서 계속하여 고객에게 제품들을 추천할 수 있으며, 이는 개선된 고객 모델에 기초하여 고객과의 더 의미있는 관계를 초래한다. 고객 액션으로부터 생성되는 각각의 데이터 포인트에 할당되는 가중치는 비즈니스의 유형에 따라 상이하게 가중된다. 각각의 유형의 데이터 포인트에 대한 가중치들의 최상의 할당을 발견하기 위해 전통적인 머신 러닝 알고리즘들이 사용될 수 있다.
고객들은 전형적으로 온라인으로 소매업체들과 개인 정보를 공유하는 것이 편안하지만, 오프라인 비즈니스들을 방문할 때 고객의 비주얼 풋프린트가 트래킹되고 저장되는 것은 잠재적인 프라이버시 문제들을 야기할 수 있다. 그에 따라, 이 솔루션은 비주얼 컴퓨팅 시스템들에 대한 프라이버시 보호에 관련되어 있는 본 개시내용 전반에 걸쳐 설명된 다른 실시예들과 결합될 수 있다 - 또는 다른 방식으로 이용가능하다 -. 예를 들어, 이 솔루션은 카메라들에 의해 캡처되는 사람들의 신원을 보호하는 데 중점을 둔 솔루션들과 결합될 수 있다. 카메라들은 소매 점포들에 보편화되어 있으며, 더 낫고 더 저렴한 디바이스들의 개발로, 현실 세계에 배포되는 카메라들의 개수는 늘어날 것으로만 예상된다. 이 솔루션은 그 경향을 활용하여 소매업체들이 그들의 고객들의 더 나은 모델들을 생성하는 데 도움을 주며, 컨텍스트에 따라 적절한 레벨의 프라이버시를 제공하도록 적응될 수 있다.
도면들에서의 플로차트들 및 블록 다이어그램들은 본 개시내용의 다양한 양태들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능성, 및 동작을 예시하고 있다. 이 점에서, 플로차트 또는 블록 다이어그램들에서의 각각의 블록은 명시된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행가능 명령어를 포함하는 모듈, 세그먼트, 또는 코드 부분을 나타낼 수 있다. 일부 대안적인 구현들에서, 블록에 표시된 기능들이 도면들에 표시된 순서와 달리 발생할 수 있다는 것에 또한 유의해야 한다. 예를 들어, 관여된 기능성에 따라, 연속적으로 도시된 2개의 블록이, 실제로는, 실질적으로 동시에 실행될 수 있거나, 또는 블록들이 때때로 반대의 순서로 또는 대안적인 순서들로 실행될 수 있다. 블록 다이어그램들 및/또는 플로차트 예시의 각각의 블록, 및 블록 다이어그램들 및/또는 플로차트 예시에서의 블록들의 조합들이 명시된 기능들 또는 동작들을 수행하는 특수 목적 하드웨어 기반 시스템들, 또는 특수 목적 하드웨어와 컴퓨터 명령어들의 조합들에 의해 구현될 수 있음에 또한 유의해야할 것이다.
전술한 개시내용은 본 기술분야의 통상의 기술자가 본 개시내용의 다양한 양태들을 더 잘 이해할 수 있도록 몇 개의 실시예들의 특징들을 개략적으로 설명한다. 본 기술분야의 통상의 기술자는 본 명세서에서 소개된 실시예들의 동일한 목적들을 수행하고 그리고/또는 동일한 장점들을 달성하기 위한 다른 프로세스들 및 구조들을 설계하거나 수정하기 위한 기초로서 본 개시내용을 용이하게 사용할 수 있음을 인식해야 한다. 본 기술분야의 통상의 기술자는 그러한 동등한 구성들이 본 개시내용의 사상 및 범위를 벗어나지 않는다는 것과, 본 개시내용의 사상 및 범위를 벗어나지 않으면서 본 명세서에 다양한 변경들, 치환들, 및 수정들을 행할 수 있음을 또한 알아야 한다.
본 명세서에 개시된 임의의 하드웨어 요소의 전부 또는 일부는, 중앙 프로세싱 유닛(CPU) 패키지를 포함하여, SoC(system-on-a-chip)로 쉽게 제공될 수 있다. SoC는 컴퓨터 또는 다른 전자 시스템의 컴포넌트들을 단일 칩에 집적하는 집적 회로(IC)를 나타낸다. SoC는 디지털, 아날로그, 혼합 신호, 및 라디오 주파수 기능들을 포함할 수 있으며, 이들 모두는 단일 칩 기판 상에 제공될 수 있다. 다른 실시예들은 단일 전자 패키지 내에 위치되고 전자 패키지를 통해 서로 밀접하게 상호작용하도록 구성된 복수의 칩들을 갖는 멀티-칩 모듈(MCM)을 포함할 수 있다. 다양한 다른 실시예들에서, 본 명세서에 개시된 컴퓨팅 기능성들은 ASIC들(Application Specific Integrated Circuits), FPGA들(Field Programmable Gate Arrays), 및 다른 반도체 칩들에서 하나 이상의 실리콘 코어로 구현될 수 있다.
본 명세서 전반에 걸쳐 사용된 바와 같이, 용어 "프로세서" 또는 "마이크로프로세서"는 (Intel’®의 업계 선두의 x86 및 x64 아키텍처들과 같은) 전통적인 마이크로프로세서뿐만 아니라 그래픽 프로세서들, 매트릭스 프로세서들, 및 임의의 ASIC, FPGA, 마이크로컨트롤러, 디지털 신호 프로세서(DSP), 프로그래머블 로직 디바이스, 프로그래머블 로직 어레이(PLA), 마이크로코드, 명령어 세트, 에뮬레이션된 또는 가상 머신 프로세서, 또는 임의의 유사한 "튜링 완전(Turing-complete)" 디바이스, 디바이스들의 조합, 또는 명령어들의 실행을 허용하는 로직 요소들(하드웨어 또는 소프트웨어)를 포함하는 것으로 이해되어야 한다.
특정 실시예들에서, 컴포넌트들 중 일부가 생략되거나 통합될 수 있음에 또한 유의한다. 일반적인 의미에서, 도면들에 묘사된 배열들은 논리적 분할들로서 이해되어야 하는 반면, 물리적 아키텍처는 이러한 요소들의 다양한 순열들, 조합들, 및/또는 혼성체들을 포함할 수 있다. 셀 수 없이 많은 가능한 설계 구성들이 본 명세서에 개략적으로 기술된 동작 목적들을 달성하기 위해 사용될 수 있음에 반드시 유의해야 한다. 그에 따라, 연관된 인프라스트럭처는 무수한 대체 배열들, 설계 선택들, 디바이스 가능성들, 하드웨어 구성들, 소프트웨어 구현들, 및 장비 옵션들을 갖는다.
일반적인 의미에서, 임의의 적합하게 구성된 프로세서는 본 명세서에 상세히 설명된 동작들을 달성하기 위해 데이터 또는 마이크로코드와 연관된 명령어들을 실행할 수 있다. 본 명세서에 개시된 임의의 프로세서는 요소 또는 물품(예를 들어, 데이터)을 하나의 상태 또는 하나의 것으로부터 다른 상태 또는 다른 것으로 변환시킬 수 있다. 다른 예에서, 본 명세서에 개략적으로 설명된 일부 활동들은 고정 로직 또는 프로그래밍가능 로직(예를 들어, 프로세서에 의해 실행되는 소프트웨어 및 / 또는 컴퓨터 명령어들)으로 구현될 수 있고, 본 명세서에서 식별되는 요소들은 프로그래밍가능 프로세서, 프로그래밍가능 디지털 로직(예를 들어, FPGA(field programmable gate array), EPROM(erasable programmable read only memory), EEPROM(electrically erasable programmable read only memory)), 디지털 로직, 소프트웨어, 코드, 전자 명령어들을 포함하는 ASIC, 플래시 메모리, 광학 디스크들, CD-ROM들, DVD ROM들, 자기 또는 광학 카드들, 전자 명령어들을 저장하기에 적합한 다른 유형들의 머신 판독가능 매체들, 또는 이들의 임의의 적합한 조합의 어떤 유형일 수 있다
동작 중에, 스토리지는 임의의 적합한 유형의 유형적, 비일시적 저장 매체(예를 들어, RAM(random access memory), ROM(read only memory), FPGA(field programmable gate array), EPROM(erasable programmable read only memory), EEPROM(electrically erasable programmable ROM), 또는 마이크로코드), 소프트웨어, 하드웨어(예를 들어, 프로세서 명령어들 또는 마이크로코드)에, 또는 적절한 경우 그리고 특정의 요구들에 기초하여 임의의 다른 적합한 컴포넌트, 디바이스, 요소, 또는 객체에 정보를 저장할 수 있다. 게다가, 트래킹되거나, 송신되거나, 수신되거나, 또는 프로세서에 저장되는 정보는, 특정의 요구들 및 구현들에 기초하여 임의의 데이터베이스, 레지스터, 테이블, 캐시, 큐, 제어 리스트, 또는 저장 구조로 제공될 수 있으며, 이들 전부는 임의의 적합한 타임프레임에서 참조될 수 있다. 본 명세서에 개시된 메모리 또는 저장 요소들 중 임의의 것은, 적절한 경우, '메모리' 및 '스토리지'라는 넓은 용어들 내에 포함되는 것으로 해석되어야 한다. 본 명세서에서의 비일시적 저장 매체는 개시된 동작들을 제공하도록, 또는 프로세서로 하여금 개시된 동작들을 수행하게 하도록 구성된 임의의 비일시적 특수 목적 또는 프로그래밍가능한 하드웨어를 포함하도록 명확히 의도된다. 비일시적 저장 매체는 또한 하드웨어 코딩된 명령어들, 및 임의로 하드웨어, 펌웨어, 또는 소프트웨어에 인코딩된 마이크로코드 명령어들 또는 시퀀스들을 저장하고 있는 프로세서를 명확히 포함한다.
본 명세서에서 설명된 기능성의 전부 또는 일부를 구현하는 컴퓨터 프로그램 로직은 하드웨어 기술 언어, 소스 코드 형태, 컴퓨터 실행가능 형태, 머신 명령어들 또는 마이크로코드, 프로그래밍가능 하드웨어, 및 다양한 중간 형태들(예를 들어, HDL 프로세서, 어셈블러, 컴파일러, 링커, 또는 로케이터에 의해 생성되는 형태들)을 포함하지만 이에 제한되지 않는 다양한 형태들로 구체화된다. 예에서, 소스 코드는, 다양한 운영 체제들 또는 운영 환경들에서 사용하기 위해 오브젝트 코드, 어셈블리 언어, 또는 OpenCL, FORTRAN, C, C ++, JAVA, 또는 HTML과 같은 고수준 언어와 같은, 다양한 프로그래밍 언어들로, 또는 Spice, Verilog, 및 VHDL과 같은 하드웨어 기술 언어들로 구현되는 일련의 컴퓨터 프로그램 명령어들을 포함한다. 소스 코드는 다양한 데이터 구조들 및 통신 메시지들을 정의하고 사용할 수 있다. 소스 코드는 (예를 들어, 인터프리터를 통해) 컴퓨터 실행가능 형태로 되어 있을 수 있거나, 또는 소스 코드는 (예를 들어, 번역기, 어셈블러, 또는 컴파일러를 통해) 컴퓨터 실행가능한 형태로 변환될 수 있거나, 또는 바이트 코드와 같은 중간 형태로 변환될 수 있다. 적절한 경우, 전술한 것 중 임의의 것이, 순차, 조합, 상태 머신들이든 또는 그렇지 않든 간에, 적절한 개별 또는 집적 회로들을 구축 또는 설명하는 데 사용될 수 있다.
일 예에서, 도면들의 임의의 개수의 전기 회로들은 연관된 전자 디바이스의 보드 상에 구현될 수 있다. 보드는 전자 디바이스의 내부 전자 시스템의 다양한 컴포넌트들을 보유할 수 있고, 다른 주변기기들을 위한 커넥터들을, 추가로, 제공할 수 있는 일반 회로 보드일 수 있다. 보다 구체적으로, 보드는 시스템의 다른 컴포넌트들이 전기적으로 통신할 수 있는 전기적 접속들을 제공할 수 있다. 특정의 구성 요구들, 프로세싱 요구들, 및 컴퓨팅 설계들에 기초하여 임의의 적합한 프로세서 및 메모리가 보드에 적합하게 커플링될 수 있다. 외부 스토리지, 부가의 센서들, 오디오/비디오 디스플레이에 대한 제어기들, 및 주변 디바이스들과 같은 다른 컴포넌트들은 플러그인 카드들로서, 케이블들을 통해 보드에 부착될 수 있거나, 또는 보드 자체에 통합될 수 있다. 다른 예에서, 도면들의 전기 회로들은 독립형 모듈들(예를 들어, 특정 애플리케이션 및 기능을 수행하도록 구성된 연관된 컴포넌트들 및 회로부를 갖는 디바이스)로서 구현될 수 있거나 전자 디바이스들의 애플리케이션 특정 하드웨어에 플러그인 모듈들로서 구현될 수 있다.
본 명세서에서 제공되는 수많은 예들에서, 상호작용이 2개, 3개, 4개, 또는 그 이상의 전기 컴포넌트의 관점에서 설명될 수 있음에 유의한다. 그렇지만, 이것은 명확성과 예의 목적들을 위해서만 이루어졌다. 시스템이 임의의 적합한 방식으로 통합 또는 재구성될 수 있음이 이해되어야 한다. 유사한 설계 대안들에 따라, 도면들의 예시된 컴포넌트들, 모듈들 및 요소들 중 임의의 것은 다양한 가능한 구성들로 결합될 수 있으며, 이들 모두는 본 명세서의 광의의 범위 내에 있다. 특정 경우들에서, 제한된 개수의 전기 요소들만을 참조함으로써 주어진 흐름 세트의 기능성들 중 하나 이상을 설명하는 것이 더 쉬울 수 있다. 도면들의 전기 회로들 및 그 교시가 쉽게 스케일링가능하고 많은 개수의 컴포넌트들은 물론, 더 복잡한/정교한 배열들 및 구성들을 수용할 수 있음이 이해되어야 한다. 그에 따라, 제공된 예들은 무수한 다른 아키텍처들에 잠재적으로 적용되는 바와 같이 전기 회로들의 범위를 제한하지 않아야 하거나 광의의 교시를 저해하지 않아야 한다.
다수의 다른 변화들, 대체들, 변형들, 변경들, 및 수정들이 본 기술분야의 통상의 기술자에게 확인될 수 있으며, 본 개시내용이 첨부된 청구항들의 범위 내에 속하는 바와 같은 모든 그러한 변화들, 대체들, 변형들, 변경들, 및 수정들을 포괄하도록 의도된다.
예시적인 구현들
이하의 예들은 본 개시내용 전체에 걸쳐 설명된 실시예들에 관한 것이다.
하나 이상의 실시예는 장치를 포함할 수 있으며, 이 장치는: 복수의 태스크들을 포함하는 작업부하를 식별하고; 작업부하에 기초하여 작업부하 그래프를 생성하며 - 작업부하 그래프는 복수의 태스크들과 연관된 정보를 포함함 -; 디바이스 접속성 그래프를 식별하고 - 디바이스 접속성 그래프는 복수의 프로세싱 디바이스들과 연관된 디바이스 접속성 정보를 포함함 -; 작업부하와 연관된 프라이버시 정책을 식별하며; 복수의 프로세싱 디바이스들과 연관된 프라이버시 레벨 정보를 식별하고; 프라이버시 정책 및 프라이버시 레벨 정보에 기초하여 프라이버시 제약조건을 식별하며; 작업부하 스케줄을 결정하는 - 작업부하 스케줄은 작업부하를 복수의 프로세싱 디바이스들에 매핑하는 것을 포함하고, 작업부하 스케줄은 프라이버시 제약조건, 작업부하 그래프, 및 디바이스 접속성 그래프에 기초하여 결정됨 - 프로세서; 및 작업부하 스케줄을 복수의 프로세싱 디바이스들에게 송신하는 통신 인터페이스를 포함한다.
장치의 일 예시적인 실시예에서, 작업부하 스케줄을 결정하는 프로세서는 추가로 프라이버시 제약조건에 기초하여 정수 선형 프로그래밍 모델을 푼다.
장치의 일 예시적인 실시예에서, 복수의 태스크들은 하나 이상의 센서로부터의 센서 데이터를 프로세싱하는 것과 연관되어 있다.
장치의 일 예시적인 실시예에서, 하나 이상의 센서는: 카메라; 적외선 센서; 또는 레이저 기반 센서 중 하나 이상을 포함한다.
장치의 일 예시적인 실시예에서, 센서 데이터는 비주얼 데이터를 포함한다.
장치의 일 예시적인 실시예에서, 작업부하 그래프는 복수의 태스크들 간의 복수의 태스크 의존성들과 연관된 정보를 추가로 포함한다.
장치의 일 예시적인 실시예에서, 프라이버시 정책은 복수의 태스크 의존성들과 연관된 복수의 프라이버시 요구사항들을 포함한다.
장치의 일 예시적인 실시예에서, 디바이스 접속성 정보는 복수의 프로세싱 디바이스들 간의 복수의 디바이스 접속성 링크들과 연관된 정보를 포함한다.
장치의 일 예시적인 실시예에서, 프라이버시 레벨 정보는 복수의 디바이스 접속성 링크들과 연관된 복수의 프라이버시 레벨들을 포함한다.
하나 이상의 실시예는 시스템을 포함할 수 있으며, 이 시스템은: 환경과 연관된 센서 데이터를 캡처하는 복수의 센서들; 복수의 프로세싱 디바이스들을 포함하고, 복수의 프로세싱 디바이스들은 복수의 에지 프로세싱 디바이스들 및 복수의 클라우드 프로세싱 디바이스들을 포함하고, 복수의 프로세싱 디바이스들은: 작업부하를 식별하고 - 작업부하는 복수의 센서들에 의해 캡처되는 센서 데이터를 프로세싱하는 것과 연관된 복수의 태스크들을 포함함 -; 작업부하에 기초하여 작업부하 그래프를 생성하며 - 작업부하 그래프는 복수의 태스크들과 연관된 정보를 포함함 -; 디바이스 접속성 그래프를 식별하고 - 디바이스 접속성 그래프는 복수의 프로세싱 디바이스들과 연관된 디바이스 접속성 정보를 포함함 -; 작업부하와 연관된 프라이버시 정책을 식별하며; 복수의 프로세싱 디바이스들과 연관된 프라이버시 레벨 정보를 식별하고; 프라이버시 정책 및 프라이버시 레벨 정보에 기초하여 프라이버시 제약조건을 식별하며; 작업부하 스케줄을 결정하고 - 작업부하 스케줄은 작업부하를 복수의 프로세싱 디바이스들에 매핑하는 것을 포함하고, 작업부하 스케줄은 프라이버시 제약조건, 작업부하 그래프, 및 디바이스 접속성 그래프에 기초하여 결정됨 -; 작업부하 스케줄을 복수의 프로세싱 디바이스들에게 분배한다.
시스템의 일 예시적인 실시예에서, 작업부하 스케줄을 결정하는 복수의 프로세싱 디바이스들은 추가로 프라이버시 제약조건에 기초하여 정수 선형 프로그래밍 모델을 푼다.
시스템의 일 예시적인 실시예에서, 복수의 센서들은: 카메라; 적외선 센서; 또는 레이저 기반 센서 중 하나 이상을 포함한다.
시스템의 일 예시적인 실시예에서, 작업부하 그래프는 복수의 태스크들 간의 복수의 태스크 의존성들과 연관된 정보를 추가로 포함한다.
시스템의 일 예시적인 실시예에서, 프라이버시 정책은 복수의 태스크 의존성들과 연관된 복수의 프라이버시 요구사항들을 포함한다.
시스템의 일 예시적인 실시예에서, 디바이스 접속성 정보는 복수의 프로세싱 디바이스들 간의 복수의 디바이스 접속성 링크들과 연관된 정보를 포함한다.
시스템의 일 예시적인 실시예에서, 프라이버시 레벨 정보는 복수의 디바이스 접속성 링크들과 연관된 복수의 프라이버시 레벨들을 포함한다.
하나 이상의 실시예는 명령어들이 저장되어 있는 적어도 하나의 머신 액세스가능 저장 매체를 포함할 수 있으며, 여기서 명령어들은, 머신 상에서 실행될 때, 머신으로 하여금: 복수의 태스크들을 포함하는 작업부하를 식별하게 하고; 작업부하에 기초하여 작업부하 그래프를 생성하게 하며 - 작업부하 그래프는 복수의 태스크들과 연관된 정보를 포함함 -; 디바이스 접속성 그래프를 식별하게 하고 - 디바이스 접속성 그래프는 복수의 프로세싱 디바이스들과 연관된 디바이스 접속성 정보를 포함함 -; 작업부하와 연관된 프라이버시 정책을 식별하게 하며; 복수의 프로세싱 디바이스들과 연관된 프라이버시 레벨 정보를 식별하게 하고; 프라이버시 정책 및 프라이버시 레벨 정보에 기초하여 프라이버시 제약조건을 식별하게 하며; 작업부하 스케줄을 결정하게 하고 - 작업부하 스케줄은 작업부하를 복수의 프로세싱 디바이스들에 매핑하는 것을 포함하고, 작업부하 스케줄은 프라이버시 제약조건, 작업부하 그래프, 및 디바이스 접속성 그래프에 기초하여 결정됨 -; 작업부하 스케줄을 복수의 프로세싱 디바이스들에게 분배하게 한다.
저장 매체의 일 예시적인 실시예에서, 머신으로 하여금 작업부하 스케줄을 결정하게 하는 명령어들은 추가로 머신으로 하여금 프라이버시 제약조건에 기초하여 정수 선형 프로그래밍 모델을 풀게 한다.
저장 매체의 일 예시적인 실시예에서, 복수의 태스크들은 하나 이상의 센서로부터의 센서 데이터를 프로세싱하는 것과 연관되어 있다.
저장 매체의 일 예시적인 실시예에서, 작업부하 그래프는 복수의 태스크들 간의 복수의 태스크 의존성들과 연관된 정보를 추가로 포함하고; 프라이버시 정책은 복수의 태스크 의존성들과 연관된 복수의 프라이버시 요구사항들을 포함한다.
저장 매체의 일 예시적인 실시예에서, 디바이스 접속성 정보는 복수의 프로세싱 디바이스들 간의 복수의 디바이스 접속성 링크들과 연관된 정보를 포함하고; 프라이버시 레벨 정보는 복수의 디바이스 접속성 링크들과 연관된 복수의 프라이버시 레벨들을 포함한다.
하나 이상의 실시예는 방법을 포함할 수 있으며, 이 방법은: 작업부하를 식별하는 단계 - 작업부하는 하나 이상의 센서로부터의 센서 데이터를 프로세싱하는 것과 연관된 복수의 태스크들을 포함함 -; 작업부하에 기초하여 작업부하 그래프를 생성하는 단계 - 작업부하 그래프는 복수의 태스크들과 연관된 정보를 포함함 -; 디바이스 접속성 그래프를 식별하는 단계 - 디바이스 접속성 그래프는 복수의 프로세싱 디바이스들과 연관된 디바이스 접속성 정보를 포함함 -; 작업부하와 연관된 프라이버시 정책을 식별하는 단계; 복수의 프로세싱 디바이스들과 연관된 프라이버시 레벨 정보를 식별하는 단계; 프라이버시 정책 및 프라이버시 레벨 정보에 기초하여 프라이버시 제약조건을 식별하는 단계; 작업부하 스케줄을 결정하는 단계 - 작업부하 스케줄은 작업부하를 복수의 프로세싱 디바이스들에 매핑하는 것을 포함하고, 작업부하 스케줄은 프라이버시 제약조건, 작업부하 그래프, 및 디바이스 접속성 그래프에 기초하여 결정됨 -; 및 작업부하 스케줄을 복수의 프로세싱 디바이스들에게 분배하는 단계를 포함한다.
방법의 일 예시적인 실시예에서, 작업부하 스케줄을 결정하는 단계는 프라이버시 제약조건에 기초하여 정수 선형 프로그래밍 모델을 푸는 단계를 포함한다.
방법의 일 예시적인 실시예에서: 작업부하 그래프는 복수의 태스크들 간의 복수의 태스크 의존성들과 연관된 정보를 추가로 포함하고; 프라이버시 정책은 복수의 태스크 의존성들과 연관된 복수의 프라이버시 요구사항들을 포함한다.
방법의 일 예시적인 실시예에서: 디바이스 접속성 정보는 복수의 프로세싱 디바이스들 간의 복수의 디바이스 접속성 링크들과 연관된 정보를 포함하고; 프라이버시 레벨 정보는 복수의 디바이스 접속성 링크들과 연관된 복수의 프라이버시 레벨들을 포함한다.
하나 이상의 실시예는 장치를 포함할 수 있으며, 이 장치는: 탑뷰 감지 디바이스 아래의 환경과 연관된 센서 데이터를 캡처하는 탑뷰 감지 디바이스; 및 탑뷰 감지 디바이스에 의해 캡처되는 센서 데이터를 획득하고; 센서 데이터에 기초하여, 탑뷰 감지 디바이스 아래의 환경의 비주얼 표현을 생성하며; 비주얼 표현이 사람의 표현을 포함한다고 결정하고; 사람의 표현과 연관된 하나 이상의 특징을 식별하며; 하나 이상의 특징에 기초하여 사람과 연관된 인구통계 정보를 식별하는 프로세서를 포함한다.
장치의 일 예시적인 실시예에서, 탑뷰 감지 디바이스는 복수의 센서들을 포함한다.
장치의 일 예시적인 실시예에서, 복수의 센서들은: 카메라; 적외선 센서; 또는 레이저 기반 센서 중 하나 이상을 포함한다.
장치의 일 예시적인 실시예에서, 사람의 표현은 사람의 탑뷰 표현을 포함한다.
장치의 일 예시적인 실시예에서, 인구통계 정보는: 연령; 성별; 또는 인종 중 하나 이상을 포함한다.
장치의 일 예시적인 실시예에서, 하나 이상의 특징은 사람과 연관된 하나 이상의 인체측정 특징을 포함한다.
장치의 일 예시적인 실시예에서, 사람의 표현과 연관된 하나 이상의 특징을 식별하는 프로세서는 추가로 사람의 표현에 대해 특징 추출을 수행한다.
장치의 일 예시적인 실시예에서, 사람의 표현에 대해 특징 추출을 수행하는 프로세서는 추가로 사람의 표현과 연관된 특징을 추출하기 위해 이산 코사인 변환을 수행한다.
장치의 일 예시적인 실시예에서, 사람의 표현에 대해 특징 추출을 수행하는 프로세서는 추가로 사람의 표현과 연관된 특징을 추출하기 위해 주성분 분석을 수행한다.
장치의 일 예시적인 실시예에서, 하나 이상의 특징에 기초하여 사람과 연관된 인구통계 정보를 식별하는 프로세서는 추가로 머신 러닝 모델을 사용하여 하나 이상의 특징을 분류한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로 센서 데이터에 대해 프리-프로세싱을 수행한다.
장치의 일 예시적인 실시예에서, 센서 데이터에 대해 프리-프로세싱을 수행하는 프로세서는 추가로: 데이터 변환; 또는 잡음 감소 중 하나 이상을 수행한다.
하나 이상의 실시예는 시스템을 포함할 수 있으며, 이 시스템은: 탑뷰 감지 디바이스 - 탑뷰 감지 디바이스는 탑뷰 감지 디바이스 아래의 환경과 연관된 센서 데이터를 캡처하는 복수의 센서들을 포함함 -; 및 탑뷰 감지 디바이스에 의해 캡처되는 센서 데이터를 획득하고; 센서 데이터에 기초하여, 탑뷰 감지 디바이스 아래의 환경의 비주얼 표현을 생성하며; 비주얼 표현이 사람의 표현을 포함한다고 결정하고; 사람의 표현과 연관된 하나 이상의 인체측정 특징을 식별하며; 하나 이상의 인체측정 특징에 기초하여 사람과 연관된 인구통계 정보를 식별하는 에지 프로세싱 디바이스를 포함한다.
시스템의 일 예시적인 실시예에서, 복수의 센서들은: 카메라; 적외선 센서; 또는 레이저 기반 센서 중 하나 이상을 포함한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 인체측정 특징에 기초하여 사람과 연관된 인구통계 정보를 식별하는 에지 프로세싱 디바이스는 추가로 머신 러닝 모델을 사용하여 하나 이상의 인체측정 특징을 분류한다.
시스템의 일 예시적인 실시예에서, 에지 프로세싱 디바이스는 에지 게이트웨이를 포함한다.
시스템의 일 예시적인 실시예에서, 이 시스템은 인구통계 정보에 기초하여 애널리틱스를 수행하는 클라우드 프로세싱 디바이스를 추가로 포함하고; 에지 프로세싱 디바이스는 인구통계 정보를 클라우드 프로세싱 디바이스에게 전송하는 통신 인터페이스를 포함한다.
시스템의 일 예시적인 실시예에서, 인구통계 정보에 기초하여 애널리틱스를 수행하는 클라우드 프로세싱 디바이스는 추가로: 히트 맵; 또는 사람들 프로필을 생성한다.
하나 이상의 실시예는 명령어들이 저장되어 있는 적어도 하나의 머신 액세스가능 저장 매체를 포함할 수 있으며, 여기서 명령어들은, 머신 상에서 실행될 때, 머신으로 하여금: 탑뷰 감지 디바이스에 의해 캡처되는 센서 데이터를 획득하게 하고 - 센서 데이터는 탑뷰 감지 디바이스 아래의 환경과 연관된 정보를 포함함 -; 센서 데이터에 기초하여, 탑뷰 감지 디바이스 아래의 환경의 비주얼 표현을 생성하게 하며; 비주얼 표현이 사람의 표현을 포함한다고 결정하게 하고; 사람의 표현과 연관된 하나 이상의 인체측정 특징을 식별하게 하며; 하나 이상의 인체측정 특징에 기초하여 사람과 연관된 인구통계 정보를 식별하게 한다.
저장 매체의 일 예시적인 실시예에서, 탑뷰 감지 디바이스는: 카메라; 적외선 센서; 또는 레이저 기반 센서 중 하나 이상을 포함한다.
저장 매체의 일 예시적인 실시예에서, 머신으로 하여금 사람의 표현과 연관된 하나 이상의 인체측정 특징을 식별하게 하는 명령어들은 추가로 머신으로 하여금 사람의 표현에 대해 특징 추출을 수행하게 한다.
저장 매체의 일 예시적인 실시예에서, 머신으로 하여금 하나 이상의 인체측정 특징에 기초하여 사람과 연관된 인구통계 정보를 식별하게 하는 명령어들은 추가로 머신으로 하여금 머신 러닝 모델을 사용하여 하나 이상의 인체측정 특징을 분류하게 한다.
하나 이상의 실시예는 방법을 포함할 수 있으며, 이 방법은: 탑뷰 감지 디바이스에 의해 캡처되는 센서 데이터를 획득하는 단계 - 센서 데이터는 탑뷰 감지 디바이스 아래의 환경과 연관된 정보를 포함함 -; 센서 데이터에 기초하여, 탑뷰 감지 디바이스 아래의 환경의 비주얼 표현을 생성하는 단계; 비주얼 표현이 사람의 표현을 포함한다고 결정하는 단계; 사람의 표현과 연관된 하나 이상의 인체측정 특징을 식별하는 단계; 및 하나 이상의 인체측정 특징에 기초하여 사람과 연관된 인구통계 정보를 식별하는 단계를 포함한다.
방법의 일 예시적인 실시예에서, 사람의 표현과 연관된 하나 이상의 인체측정 특징을 식별하는 단계는 사람의 표현에 대해 특징 추출을 수행하는 단계를 포함한다.
방법의 일 예시적인 실시예에서, 하나 이상의 인체측정 특징에 기초하여 사람과 연관된 인구통계 정보를 식별하는 단계는 머신 러닝 모델을 사용하여 하나 이상의 인체측정 특징을 분류하는 단계를 포함한다.
하나 이상의 실시예는 시스템을 포함할 수 있으며, 이 시스템은: 탑뷰 감지 디바이스에 의해 캡처되는 센서 데이터를 획득하기 위한 수단 - 센서 데이터는 탑뷰 감지 디바이스 아래의 환경과 연관된 정보를 포함함 -; 센서 데이터에 기초하여, 탑뷰 감지 디바이스 아래의 환경의 비주얼 표현을 생성하기 위한 수단; 비주얼 표현이 사람의 표현을 포함한다고 결정하기 위한 수단; 사람의 표현과 연관된 하나 이상의 인체측정 특징을 식별하기 위한 수단; 및 하나 이상의 인체측정 특징에 기초하여 사람과 연관된 인구통계 정보를 식별하기 위한 수단을 포함한다.
하나 이상의 실시예는 장치를 포함할 수 있으며, 이 장치는: 복수의 카메라들과 통신하는 통신 인터페이스; 및 객체의 초기 상태와 연관된 메타데이터를 획득하고 - 객체는 제1 시점에서 제1 비디오 스트림으로 복수의 카메라들 중 제1 카메라에 의해 캡처되고, 메타데이터는 제1 비디오 스트림에 기초하여 획득됨 -; 메타데이터에 기초하여, 제2 시점에서의 객체의 미래 상태를 예측하며; 제2 시점에서 객체를 캡처하기 위한 제2 카메라를 식별하고 - 제2 카메라는 객체의 미래 상태; 및 복수의 카메라들의 복수의 카메라 뷰들에 기초하여 복수의 카메라들로부터 식별됨 -; 제2 시점에서 제2 비디오 스트림으로 객체를 캡처하도록 제2 카메라를 구성하는 - 제2 카메라는 객체의 미래 상태에 기초하여 객체를 캡처하도록 구성됨 - 프로세서를 포함한다.
장치의 일 예시적인 실시예에서, 객체의 초기 상태와 연관된 메타데이터는: 객체의 현재 위치; 및 객체의 현재 이동 방향의 표시를 포함한다.
장치의 일 예시적인 실시예에서, 객체의 초기 상태와 연관된 메타데이터는 객체의 하나 이상의 현재 행동적 특성의 표시를 포함한다.
장치의 일 예시적인 실시예에서, 객체의 초기 상태와 연관된 메타데이터는 객체의 하나 이상의 물리적 특성의 표시를 포함한다.
장치의 일 예시적인 실시예에서, 메타데이터에 기초하여, 제2 시점에서의 객체의 미래 상태를 예측하는 프로세서는 추가로 머신 러닝 모델을 메타데이터에 적용하고, 여기서 머신 러닝 모델은 객체의 초기 상태에 기초하여 객체의 미래 상태를 예측하도록 트레이닝된다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로: 제2 시점에서의 객체의 실제 상태를 결정하고 - 객체의 실제 상태는 제2 시점에서 복수의 카메라들에 의해 캡처되는 하나 이상의 비디오 스트림에 기초하여 결정됨 -; 객체의 실제 상태와 객체의 초기 상태와 연관된 메타데이터 사이의 상관을 학습하도록 머신 러닝 모델을 최적화한다.
장치의 일 예시적인 실시예에서, 제2 시점에서 제2 비디오 스트림으로 객체를 캡처하도록 제2 카메라를 구성하는 프로세서는 추가로 객체의 미래 상태에 기초하여 객체를 캡처하도록 제2 카메라의 하나 이상의 설정을 조정한다.
장치의 일 예시적인 실시예에서, 객체의 미래 상태는 제2 시점에서의 객체의 미래 위치의 표시를 포함하고; 제2 시점에서 객체를 캡처하기 위한 제2 카메라를 식별하는 프로세서는 추가로 객체의 미래 위치가 제2 카메라의 카메라 뷰 내에 있다고 결정한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로: 제2 시점에서 제2 카메라에 의해 캡처되는 제2 비디오 스트림에 액세스하고; 객체의 초기 상태와 연관된 메타데이터에 기초하여 제2 비디오 스트림에서 객체를 검출하며; 제1 비디오 스트림 및 제2 비디오 스트림에서 객체를 트래킹한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로: 제1 카메라에 의해 캡처되는 제1 비디오 스트림에 액세스하고; 제1 비디오 스트림에 기초하여 객체가 식별될 수 없다고 결정하며; 객체의 미래 상태에 기초하여, 객체가 제2 시점에서 제2 카메라에 의해 캡처될 제2 비디오 스트림에 기초하여 식별될 수 있다고 결정하고; 제2 시점에서 제2 카메라에 의해 캡처되는 제2 비디오 스트림에 액세스하며; 제2 비디오 스트림에 기초하여 객체를 식별한다.
장치의 일 예시적인 실시예에서, 객체는 사람이고; 제2 비디오 스트림에 기초하여 객체를 식별하는 프로세서는 추가로 얼굴 인식을 사용하여 사람을 식별한다.
장치의 일 예시적인 실시예에서, 객체는 자동차이고; 제2 비디오 스트림에 기초하여 객체를 식별하는 프로세서는 추가로: 자동차의 번호판 번호를 식별하거나; 또는 자동차의 하나 이상의 물리적 특성을 식별한다.
하나 이상의 실시예는 시스템을 포함할 수 있으며, 이 시스템은: 복수의 비디오 스트림들을 캡처하는 복수의 카메라들; 및 제1 시점에서 복수의 카메라들 중 제1 카메라에 의해 캡처되는 제1 비디오 스트림에 액세스하고; 제1 비디오 스트림에서 객체를 검출하며; 객체의 초기 상태와 연관된 메타데이터를 생성하고 - 메타데이터는 제1 비디오 스트림에 기초하여 생성됨 -; 메타데이터에 기초하여, 제2 시점에서의 객체의 미래 상태를 예측하며; 제2 시점에서 객체를 캡처하기 위한 제2 카메라를 식별하고 - 제2 카메라는: 객체의 미래 상태; 및 복수의 카메라들의 복수의 카메라 뷰들에 기초하여 복수의 카메라들로부터 식별됨 -; 제2 시점에서 제2 비디오 스트림으로 객체를 캡처하도록 제2 카메라를 구성하는 - 제2 카메라는 객체의 미래 상태에 기초하여 객체를 캡처하도록 구성됨 - 하나 이상의 프로세싱 디바이스를 포함한다.
시스템의 일 예시적인 실시예에서, 제1 카메라는 제1 카메라에 대한 객체의 깊이를 결정하는 깊이 센서를 포함하고; 객체의 초기 상태와 연관된 메타데이터를 생성하는 하나 이상의 프로세싱 디바이스는 추가로: 제1 카메라에 대한 객체의 깊이에 기초하여 객체의 현재 위치를 결정하고; 객체의 현재 이동 방향을 결정한다.
시스템의 일 예시적인 실시예에서, 메타데이터에 기초하여, 제2 시점에서의 객체의 미래 상태를 예측하는 하나 이상의 프로세싱 디바이스는 추가로 머신 러닝 모델을 메타데이터에 적용하고, 여기서 머신 러닝 모델은 객체의 초기 상태에 기초하여 객체의 미래 상태를 예측하도록 트레이닝된다.
시스템의 일 예시적인 실시예에서, 하나 이상의 프로세싱 디바이스는 추가로: 제2 시점에서의 객체의 실제 상태를 결정하고 - 객체의 실제 상태는 제2 시점에서 복수의 카메라들에 의해 캡처되는 하나 이상의 비디오 스트림에 기초하여 결정됨 -; 객체의 실제 상태와 객체의 초기 상태와 연관된 메타데이터 사이의 상관을 학습하도록 머신 러닝 모델을 최적화한다.
시스템의 일 예시적인 실시예에서, 객체의 미래 상태는 제2 시점에서의 객체의 미래 위치의 표시를 포함하고; 제2 시점에서 객체를 캡처하기 위한 제2 카메라를 식별하는 하나 이상의 프로세싱 디바이스는 추가로 객체의 미래 위치가 제2 카메라의 카메라 뷰 내에 있다는 것을 결정한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 프로세싱 디바이스는 추가로: 제2 시점에서 제2 카메라에 의해 캡처되는 제2 비디오 스트림에 액세스하고; 객체의 초기 상태와 연관된 메타데이터에 기초하여 제2 비디오 스트림에서 객체를 검출하며; 제1 비디오 스트림 및 제2 비디오 스트림에서 객체를 트래킹한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 프로세싱 디바이스는 추가로: 제1 비디오 스트림에 기초하여 객체가 식별될 수 없다고 결정하며; 객체의 미래 상태에 기초하여, 객체가 제2 시점에서 제2 카메라에 의해 캡처될 제2 비디오 스트림에 기초하여 식별될 수 있다고 결정하고; 제2 시점에서 제2 카메라에 의해 캡처되는 제2 비디오 스트림에 액세스하며; 제2 비디오 스트림에 기초하여 객체를 식별한다.
하나 이상의 실시예는 명령어들이 저장되어 있는 적어도 하나의 머신 액세스가능 저장 매체를 포함할 수 있으며, 여기서 명령어들은, 머신 상에서 실행될 때, 머신으로 하여금: 객체의 초기 상태와 연관된 메타데이터를 획득하게 하고 - 객체는 제1 시점에서 제1 비디오 스트림으로 복수의 카메라들 중 제1 카메라에 의해 캡처되고, 메타데이터는 제1 비디오 스트림에 기초하여 획득됨 -; 메타데이터에 기초하여, 제2 시점에서의 객체의 미래 상태를 예측하게 하며; 제2 시점에서 객체를 캡처하기 위한 제2 카메라를 식별하게 하고 - 제2 카메라는: 객체의 미래 상태; 및 복수의 카메라들의 복수의 카메라 뷰들에 기초하여 복수의 카메라들로부터 식별됨 -; 제2 시점에서 제2 비디오 스트림으로 객체를 캡처하도록 제2 카메라를 구성하게 - 제2 카메라는 객체의 미래 상태에 기초하여 객체를 캡처하도록 구성됨 - 한다.
저장 매체의 일 예시적인 실시예에서, 머신으로 하여금, 메타데이터에 기초하여, 제2 시점에서의 객체의 미래 상태를 예측하게 하는 명령어들은 추가로 머신으로 하여금 머신 러닝 모델을 메타데이터에 적용하게 하고, 여기서 머신 러닝 모델은 객체의 초기 상태에 기초하여 객체의 미래 상태를 예측하도록 트레이닝된다.
저장 매체의 일 예시적인 실시예에서, 명령어들은 추가로 머신으로 하여금: 제2 시점에서의 객체의 실제 상태를 결정하게 하고 - 객체의 실제 상태는 제2 시점에서 복수의 카메라들에 의해 캡처되는 하나 이상의 비디오 스트림에 기초하여 결정됨 -; 객체의 실제 상태와 객체의 초기 상태와 연관된 메타데이터 사이의 상관을 학습하도록 머신 러닝 모델을 최적화하게 한다.
저장 매체의 일 예시적인 실시예에서, 명령어들은 추가로 머신으로 하여금: 제2 시점에서 제2 카메라에 의해 캡처되는 제2 비디오 스트림에 액세스하게 하고; 객체의 초기 상태와 연관된 메타데이터에 기초하여 제2 비디오 스트림에서 객체를 검출하게 하며; 제1 비디오 스트림 및 제2 비디오 스트림에서 객체를 트래킹하게 한다.
저장 매체의 일 예시적인 실시예에서, 명령어들은 추가로 머신으로 하여금: 제1 비디오 스트림에 기초하여 객체가 식별될 수 없다고 결정하게 하며; 객체의 미래 상태에 기초하여, 객체가 제2 시점에서 제2 카메라에 의해 캡처될 제2 비디오 스트림에 기초하여 식별될 수 있다고 결정하게 하고; 제2 시점에서 제2 카메라에 의해 캡처되는 제2 비디오 스트림에 액세스하게 하며; 제2 비디오 스트림에 기초하여 객체를 식별하게 한다.
하나 이상의 실시예는 방법을 포함할 수 있으며, 이 방법은: 객체의 초기 상태와 연관된 메타데이터를 획득하는 단계 - 객체는 제1 시점에서 제1 비디오 스트림으로 복수의 카메라들 중 제1 카메라에 의해 캡처되고, 메타데이터는 제1 비디오 스트림에 기초하여 획득됨 -; 메타데이터에 기초하여, 제2 시점에서의 객체의 미래 상태를 예측하는 단계; 제2 시점에서 객체를 캡처하기 위한 제2 카메라를 식별하는 단계 - 제2 카메라는: 객체의 미래 상태; 및 복수의 카메라들의 복수의 카메라 뷰들에 기초하여 복수의 카메라들로부터 식별됨 -; 제2 시점에서 제2 비디오 스트림으로 객체를 캡처하도록 제2 카메라를 구성하는 단계 - 제2 카메라는 객체의 미래 상태에 기초하여 객체를 캡처하도록 구성됨 - 를 포함한다.
방법의 일 예시적인 실시예에서, 메타데이터에 기초하여, 제2 시점에서의 객체의 미래 상태를 예측하는 단계는 머신 러닝 모델을 메타데이터에 적용하는 단계를 추가로 포함하고, 여기서 머신 러닝 모델은 객체의 초기 상태에 기초하여 객체의 미래 상태를 예측하도록 트레이닝된다.
하나 이상의 실시예는 시스템을 포함할 수 있으며, 이 시스템은: 객체의 초기 상태와 연관된 메타데이터를 획득하기 위한 수단 - 객체는 제1 시점에서 제1 비디오 스트림으로 복수의 카메라들 중 제1 카메라에 의해 캡처되고, 메타데이터는 제1 비디오 스트림에 기초하여 획득됨 -; 메타데이터에 기초하여, 제2 시점에서의 객체의 미래 상태를 예측하기 위한 수단; 제2 시점에서 객체를 캡처하기 위한 제2 카메라를 식별하기 위한 수단 - 제2 카메라는: 객체의 미래 상태; 및 복수의 카메라들의 복수의 카메라 뷰들에 기초하여 복수의 카메라들로부터 식별됨 -; 제2 시점에서 제2 비디오 스트림으로 객체를 캡처하도록 제2 카메라를 구성하기 위한 수단 - 제2 카메라는 객체의 미래 상태에 기초하여 객체를 캡처하도록 구성됨 - 을 포함한다.
하나 이상의 실시예는 장치를 포함할 수 있으며, 이 장치는: 제1 디바이스와 연관된 하나 이상의 센서에 의해 캡처되는 센서 데이터를 저장하는 메모리; 및 제1 디바이스와 연관된 하나 이상의 센서에 의해 캡처되는 센서 데이터에 액세스하고; 제1 디바이스 근처에서 사고가 발생했다고 결정하며; 사고와 연관된 제1 센서 데이터 컬렉션을 식별하고 - 제1 센서 데이터 컬렉션은 하나 이상의 센서에 의해 캡처되는 센서 데이터로부터 식별됨 -; 사고와 연관된 제1 센서 데이터 컬렉션을, 메모리 상에, 보존하며; 사고를 하나 이상의 제2 디바이스에 통지하는 - 하나 이상의 제2 디바이스는 제1 디바이스 근처에 위치됨 - 회로부를 포함하는 프로세서를 포함한다.
장치의 일 예시적인 실시예에서, 제1 디바이스 근처에서 사고가 발생했다고 결정하는 회로부는 추가로: 하나 이상의 센서에 의해 캡처되는 센서 데이터를 분석하고; 센서 데이터와 연관된 이상을 식별하며; 센서 데이터와 연관된 이상에 기초하여 사고를 검출한다.
장치의 일 예시적인 실시예에서, 이 회로부는 추가로: 정보 중심 네트워크를 통해 사고와 연관된 통지를 수신하고 - 통지는 사고와 연관된 데이터에 대한 요청을 포함하고, 데이터에 대한 요청은 사고와 연관된 복수의 어트리뷰트들의 표시를 포함함 -; 하나 이상의 센서에 의해 캡처되는 센서 데이터가 사고와 연관된 복수의 어트리뷰트들에 대응하는지를 결정한다.
장치의 일 예시적인 실시예에서, 사고와 연관된 복수의 어트리뷰트들은 사고의 시간 및 위치를 포함한다.
장치의 일 예시적인 실시예에서, 이 회로부는 추가로 사고에 대한 식별자를 생성하고, 여기서 식별자는 사고와 연관된 하나 이상의 어트리뷰트에 기초하여 생성된다.
장치의 일 예시적인 실시예에서, 사고를 하나 이상의 제2 디바이스에 통지하는 회로부는 추가로: 정보 중심 네트워크를 통해 사고와 연관된 통지를 브로드캐스트하고, 여기서 통지는 사고와 연관된 데이터에 대한 요청을 포함하고, 여기서 통지는 하나 이상의 제2 디바이스에 의해 수신된다.
장치의 일 예시적인 실시예에서, 이 회로부는 추가로: 사고와 연관된 하나 이상의 제2 센서 데이터 컬렉션을 수신하고 - 하나 이상의 제2 센서 데이터 컬렉션은 하나 이상의 제2 디바이스로부터 수신됨 -; 사고와 연관되는 통합된 센서 데이터 컬렉션을 생성하기 - 통합된 센서 데이터 컬렉션은 제1 센서 데이터 컬렉션 및 하나 이상의 제2 센서 데이터 컬렉션으로부터 생성됨 - 위한 것이다.
장치의 일 예시적인 실시예에서, 이 회로부는 추가로 통합된 센서 데이터 컬렉션을 사고와 연관된 엔티티에게 송신한다.
장치의 일 예시적인 실시예에서, 이 회로부는 추가로 통합된 센서 데이터 컬렉션에 기초하여 사고의 재구성된 표현을 생성한다.
장치의 일 예시적인 실시예에서, 사고는 자동차 사고를 포함하고, 여기서 제1 디바이스는 자동차 사고에 관여된 차량; 또는 자동차 사고 인근에 위치된 도로변 인프라스트럭처와 연관된다.
장치의 일 예시적인 실시예에서, 제1 디바이스는 감시 시스템과 연관되고, 여기서 하나 이상의 센서는 하나 이상의 카메라를 포함한다.
하나 이상의 실시예는 시스템을 포함할 수 있으며, 이 시스템은: 제1 디바이스의 동작 환경과 연관된 센서 데이터를 캡처하는 복수의 센서들; 하나 이상의 제2 디바이스와 통신하는 통신 인터페이스; 및 제1 디바이스 근처에서 사고가 발생했다고 결정하며; 사고와 연관된 제1 센서 데이터 컬렉션을 식별하고 - 제1 센서 데이터 컬렉션은 복수의 센서들에 의해 캡처되는 센서 데이터로부터 식별됨 -; 사고와 연관된 제1 센서 데이터 컬렉션을 보존하며; 사고를 하나 이상의 제2 디바이스에 통지하는 - 하나 이상의 제2 디바이스는 제1 디바이스 근처에 위치됨 - 프로세서를 포함한다.
시스템의 일 예시적인 실시예에서, 제1 디바이스 근처에서 사고가 발생했다고 결정하는 프로세서는 추가로: 복수의 센서들에 의해 캡처되는 센서 데이터의 분석에 기초하여 사고를 검출한다.
시스템의 일 예시적인 실시예에서, 프로세서는 추가로: 정보 중심 네트워크를 통해 사고와 연관된 통지를 수신하고 - 여기서 통지는 사고와 연관된 데이터에 대한 요청을 포함하고, 데이터에 대한 요청은 사고와 연관된 복수의 어트리뷰트들의 표시를 포함함 -; 복수의 센서들에 의해 캡처되는 센서 데이터가 사고와 연관된 복수의 어트리뷰트들에 대응하는지를 결정한다.
시스템의 일 예시적인 실시예에서, 사고를 하나 이상의 제2 디바이스에 통지하는 프로세서는 추가로: 정보 중심 네트워크를 통해 사고와 연관된 통지를 브로드캐스트하고, 여기서 통지는 사고와 연관된 데이터에 대한 요청을 포함하고, 여기서 통지는 하나 이상의 제2 디바이스에 의해 수신된다.
시스템의 일 예시적인 실시예에서, 프로세서는 추가로: 사고와 연관된 하나 이상의 제2 센서 데이터 컬렉션을 수신하고 - 하나 이상의 제2 센서 데이터 컬렉션은 하나 이상의 제2 디바이스로부터 수신됨 -; 사고와 연관되는 통합된 센서 데이터 컬렉션을 생성하기 - 통합된 센서 데이터 컬렉션은 제1 센서 데이터 컬렉션 및 하나 이상의 제2 센서 데이터 컬렉션으로부터 생성됨 - 위한 것이다.
시스템의 일 예시적인 실시예에서, 프로세서는 추가로 통합된 센서 데이터 컬렉션을 사고와 연관된 엔티티에게 송신한다.
시스템의 일 예시적인 실시예에서, 프로세서는 추가로 통합된 센서 데이터 컬렉션에 기초하여 사고의 재구성된 표현을 생성한다.
하나 이상의 실시예는 명령어들이 저장되어 있는 적어도 하나의 머신 액세스가능 저장 매체를 포함할 수 있으며, 여기서 명령어들은, 머신 상에서 실행될 때, 머신으로 하여금: 제1 디바이스와 연관된 하나 이상의 센서에 의해 캡처되는 센서 데이터에 액세스하게 하고; 제1 디바이스 근처에서 발생하는 사고를 검출하게 하며 - 사고는 센서 데이터의 분석에 기초하여 검출됨 -; 사고와 연관된 제1 센서 데이터 컬렉션을 식별하게 하고 - 제1 센서 데이터 컬렉션은 하나 이상의 센서에 의해 캡처되는 센서 데이터로부터 식별됨 -; 사고와 연관된 제1 센서 데이터 컬렉션을 보존하게 하며; 사고를 하나 이상의 제2 디바이스에 통지하게 - 하나 이상의 제2 디바이스는 제1 디바이스 근처에 위치됨 - 한다.
저장 매체의 일 예시적인 실시예에서, 명령어들은 추가로 머신으로 하여금: 정보 중심 네트워크를 통해 사고와 연관된 통지를 수신하게 하고 - 통지는 사고와 연관된 데이터에 대한 요청을 포함하고, 데이터에 대한 요청은 사고와 연관된 복수의 어트리뷰트들의 표시를 포함함 -; 하나 이상의 센서에 의해 캡처되는 센서 데이터가 사고와 연관된 복수의 어트리뷰트들에 대응하는지를 결정하게 한다.
저장 매체의 일 예시적인 실시예에서, 명령어들은 추가로 머신으로 하여금: 정보 중심 네트워크를 통해 사고와 연관된 통지를 브로드캐스트하게 하고 - 통지는 사고와 연관된 데이터에 대한 요청을 포함하고, 통지는 하나 이상의 제2 디바이스에 의해 수신됨 -; 사고와 연관된 하나 이상의 제2 센서 데이터 컬렉션을 수신하게 하며 - 하나 이상의 제2 센서 데이터 컬렉션은 하나 이상의 제2 디바이스로부터 수신됨 -; 사고와 연관되는 통합된 센서 데이터 컬렉션을 생성하게 하고 - 통합된 센서 데이터 컬렉션은 제1 센서 데이터 컬렉션 및 하나 이상의 제2 센서 데이터 컬렉션으로부터 생성됨 -; 통합된 센서 데이터 컬렉션을 사고와 연관된 엔티티에게 송신하게 한다.
저장 매체의 일 예시적인 실시예에서, 명령어들은 추가로 머신으로 하여금 통합된 센서 데이터 컬렉션에 기초하여 사고의 재구성된 표현을 생성하게 한다.
하나 이상의 실시예는 방법을 포함할 수 있으며, 이 방법은: 제1 디바이스와 연관된 하나 이상의 센서에 의해 캡처되는 센서 데이터에 액세스하는 단계; 제1 디바이스 근처에서 발생하는 사고를 검출하는 단계 - 사고는 센서 데이터의 분석에 기초하여 검출됨 -; 사고와 연관된 제1 센서 데이터 컬렉션을 식별하는 단계 - 제1 센서 데이터 컬렉션은 하나 이상의 센서에 의해 캡처되는 센서 데이터로부터 식별됨 -; 사고와 연관된 제1 센서 데이터 컬렉션을 보존하는 단계; 및 사고를 하나 이상의 제2 디바이스에 통지하는 단계 - 하나 이상의 제2 디바이스는 제1 디바이스 근처에 위치됨 - 를 포함한다.
방법의 일 예시적인 실시예에서, 이 방법은: 정보 중심 네트워크를 통해 사고와 연관된 통지를 수신하는 단계 - 통지는 사고와 연관된 데이터에 대한 요청을 포함하고, 데이터에 대한 요청은 사고와 연관된 복수의 어트리뷰트들의 표시를 포함함 -; 및 하나 이상의 센서에 의해 캡처되는 센서 데이터가 사고와 연관된 복수의 어트리뷰트들에 대응하는지를 결정하는 단계를 추가로 포함한다.
방법의 일 예시적인 실시예에서, 이 방법은: 정보 중심 네트워크를 통해 사고와 연관된 통지를 브로드캐스트하는 단계 - 통지는 사고와 연관된 데이터에 대한 요청을 포함하고, 통지는 하나 이상의 제2 디바이스에 의해 수신됨 -; 사고와 연관된 하나 이상의 제2 센서 데이터 컬렉션을 수신하는 단계 - 하나 이상의 제2 센서 데이터 컬렉션은 하나 이상의 제2 디바이스로부터 수신됨 -; 사고와 연관되는 통합된 센서 데이터 컬렉션을 생성하는 단계 - 통합된 센서 데이터 컬렉션은 제1 센서 데이터 컬렉션 및 하나 이상의 제2 센서 데이터 컬렉션으로부터 생성됨 -; 및 통합된 센서 데이터 컬렉션을 사고와 연관된 엔티티에게 송신하는 단계를 추가로 포함한다.
하나 이상의 실시예는 장치를 포함할 수 있으며, 이 장치는: 네트워크를 통해 복수의 디바이스들과 통신하는 통신 인터페이스; 및 복수의 디바이스들 중 제1 디바이스로부터 압축된 데이터를 수신하고 - 압축된 데이터는 하나 이상의 센서에 의해 캡처되는 비주얼 데이터와 연관됨 -; 현재 컨볼루션 신경 네트워크(convolutional neural network)(CNN)를 사용하여 압축된 데이터에 대해 현재 프로세싱 스테이지를 수행하며 - 현재 프로세싱 스테이지는 비주얼 데이터와 연관된 복수의 프로세싱 스테이지들 중 하나에 대응하고, 현재 CNN은 복수의 프로세싱 스테이지들과 연관된 복수의 컨볼루션 신경 네트워크(CNN)들 중 하나에 대응함 -; 현재 프로세싱 스테이지와 연관된 출력을 획득하고 - 출력은 현재 CNN으로부터 획득됨 -; 현재 프로세싱 스테이지와 연관된 출력에 기초하여, 비주얼 데이터와 연관된 프로세싱이 완료되었는지를 결정하며; 비주얼 데이터와 연관된 프로세싱이 완료되었다는 결정 시에, 비주얼 데이터와 연관된 결과를 출력하는 프로세서를 포함한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로, 비주얼 데이터와 연관된 프로세싱이 완료되지 않았다는 결정 시에, 압축된 데이터를 복수의 디바이스들 중 제2 디바이스에게 전송하고, 여기서 제2 디바이스는 복수의 프로세싱 스테이지들의 후속 프로세싱 스테이지를 수행한다.
장치의 일 예시적인 실시예에서, 복수의 CNN들은: 하나 이상의 제1 유형의 압축된 특징들을 프로세싱하도록 트레이닝된 제1 컨볼루션 신경 네트워크(CNN); 하나 이상의 제2 유형의 압축된 특징들을 프로세싱하도록 트레이닝된 제2 컨볼루션 신경 네트워크(CNN); 및 압축되지 않은 비주얼 데이터를 프로세싱하도록 트레이닝된 제3 컨볼루션 신경 네트워크(CNN)를 포함한다.
장치의 일 예시적인 실시예에서, 현재 CNN은 제1 CNN, 제2 CNN, 및 제3 CNN 중 하나이다.
장치의 일 예시적인 실시예에서, 하나 이상의 제1 유형의 압축된 특징들은 다음과 같은 유형들의 압축된 특징들: 모션 벡터들; 예측 잔차들; 변환 계수들; 양자화 파라미터들; 또는 매크로블록 코딩 모드들 중 하나 이상을 포함한다.
장치의 일 예시적인 실시예에서, 하나 이상의 제2 유형의 압축된 특징들은 하나 이상의 제1 유형의 압축된 특징들과 상이하다.
장치의 일 예시적인 실시예에서, 하나 이상의 제2 유형의 압축된 특징들 및 하나 이상의 제1 유형의 압축된 특징들은 상이한 소스들에 의해 생성된다.
장치의 일 예시적인 실시예에서, 복수의 CNN들의 각각의 컨볼루션 신경 네트워크(CNN)는 복수의 프로세싱 스테이지들의 특정의 프로세싱 스테이지와 연관된다.
장치의 일 예시적인 실시예에서, 복수의 프로세싱 스테이지들의 각각의 프로세싱 스테이지는 복수의 디바이스들 중 특정의 디바이스에 의해 수행된다.
장치의 일 예시적인 실시예에서, 비주얼 데이터와 연관된 결과는 프로세싱 결정을 포함한다.
하나 이상의 실시예는 명령어들이 저장되어 있는 적어도 하나의 머신 액세스가능 저장 매체를 포함할 수 있으며, 여기서 명령어들은, 머신 상에서 실행될 때, 머신으로 하여금: 복수의 디바이스들 중 제1 디바이스로부터 압축된 데이터를 수신하게 하고 - 압축된 데이터는 하나 이상의 센서에 의해 캡처되는 비주얼 데이터와 연관됨 -; 현재 컨볼루션 신경 네트워크(CNN)를 사용하여 압축된 데이터에 대해 현재 프로세싱 스테이지를 수행하게 하며 - 현재 프로세싱 스테이지는 비주얼 데이터와 연관된 복수의 프로세싱 스테이지들 중 하나에 대응하고, 현재 CNN은 복수의 프로세싱 스테이지들과 연관된 복수의 컨볼루션 신경 네트워크(CNN)들 중 하나에 대응함 -; 현재 프로세싱 스테이지와 연관된 출력을 획득하게 하고 - 출력은 현재 CNN으로부터 획득됨 -; 현재 프로세싱 스테이지와 연관된 출력에 기초하여, 비주얼 데이터와 연관된 프로세싱이 완료되었는지를 결정하게 하며; 비주얼 데이터와 연관된 프로세싱이 완료되었다는 결정 시에, 비주얼 데이터와 연관된 결과를 출력하게 하고; 비주얼 데이터와 연관된 프로세싱이 완료되지 않았다는 결정 시에, 압축된 데이터를 복수의 디바이스들 중 제2 디바이스에게 전송하게 한다.
저장 매체의 일 예시적인 실시예에서, 제2 디바이스는 복수의 프로세싱 스테이지들의 후속 프로세싱 스테이지를 수행한다.
저장 매체의 일 예시적인 실시예에서, 복수의 CNN들은: 하나 이상의 제1 유형의 압축된 특징들을 프로세싱하도록 트레이닝된 제1 컨볼루션 신경 네트워크(CNN); 하나 이상의 제2 유형의 압축된 특징들을 프로세싱하도록 트레이닝된 제2 컨볼루션 신경 네트워크(CNN) - 하나 이상의 제2 유형의 압축된 특징들은 하나 이상의 제1 유형의 압축된 특징들과 상이함 -; 및 압축되지 않은 비주얼 데이터를 프로세싱하도록 트레이닝된 제3 컨볼루션 신경 네트워크(CNN)를 포함하고; 현재 CNN은 제1 CNN, 제2 CNN, 및 제3 CNN 중 하나이다.
저장 매체의 일 예시적인 실시예에서, 하나 이상의 제1 유형의 압축된 특징들은 다음과 같은 유형들의 압축된 특징들: 모션 벡터들; 예측 잔차들; 변환 계수들; 양자화 파라미터들; 또는 매크로블록 코딩 모드들 중 하나 이상을 포함한다.
저장 매체의 일 예시적인 실시예에서, 복수의 CNN들의 각각의 컨볼루션 신경 네트워크(CNN)는 복수의 프로세싱 스테이지들의 특정의 프로세싱 스테이지와 연관된다.
하나 이상의 실시예는 방법을 포함할 수 있으며, 이 방법은: 복수의 디바이스들 중 제1 디바이스로부터 압축된 데이터를 수신하는 단계 - 압축된 데이터는 하나 이상의 센서에 의해 캡처되는 비주얼 데이터와 연관됨 -; 현재 컨볼루션 신경 네트워크(CNN)를 사용하여 압축된 데이터에 대해 현재 프로세싱 스테이지를 수행하는 단계 - 현재 프로세싱 스테이지는 비주얼 데이터와 연관된 복수의 프로세싱 스테이지들 중 하나에 대응하고, 현재 CNN은 복수의 프로세싱 스테이지들과 연관된 복수의 컨볼루션 신경 네트워크(CNN)들 중 하나에 대응함 -; 현재 프로세싱 스테이지와 연관된 출력을 획득하는 단계 - 출력은 현재 CNN으로부터 획득됨 -; 현재 프로세싱 스테이지와 연관된 출력에 기초하여, 비주얼 데이터와 연관된 프로세싱이 완료되었는지를 결정하는 단계; 비주얼 데이터와 연관된 프로세싱이 완료되었다는 결정 시에, 비주얼 데이터와 연관된 결과를 출력하는 단계; 및 비주얼 데이터와 연관된 프로세싱이 완료되지 않았다는 결정 시에, 압축된 데이터를 복수의 디바이스들 중 제2 디바이스에게 전송하는 단계를 포함한다.
방법의 일 예시적인 실시예에서, 제2 디바이스는 복수의 프로세싱 스테이지들의 후속 프로세싱 스테이지를 수행한다.
방법의 일 예시적인 실시예에서: 복수의 CNN들은: 하나 이상의 제1 유형의 압축된 특징들을 프로세싱하도록 트레이닝된 제1 컨볼루션 신경 네트워크(CNN); 하나 이상의 제2 유형의 압축된 특징들을 프로세싱하도록 트레이닝된 제2 컨볼루션 신경 네트워크(CNN) - 하나 이상의 제2 유형의 압축된 특징들은 하나 이상의 제1 유형의 압축된 특징들과 상이함 -; 및 압축되지 않은 비주얼 데이터를 프로세싱하도록 트레이닝된 제3 컨볼루션 신경 네트워크(CNN)를 포함하고; 현재 CNN은 제1 CNN, 제2 CNN, 및 제3 CNN 중 하나이다.
방법의 일 예시적인 실시예에서, 하나 이상의 제1 유형의 압축된 특징들은 다음과 같은 유형들의 압축된 특징들: 모션 벡터들; 예측 잔차들; 변환 계수들; 양자화 파라미터들; 또는 매크로블록 코딩 모드들 중 하나 이상을 포함한다.
하나 이상의 실시예는 시스템을 포함할 수 있으며, 이 시스템은: 비주얼 데이터를 캡처하는 하나 이상의 센서; 및 하나 이상의 센서에 의해 캡처되는 비주얼 데이터에 대응하는 압축된 데이터를 획득하고; 압축된 데이터로부터 제1 압축된 특징 세트를 추출하며; 제1 컨볼루션 신경 네트워크(CNN)를 사용하여 제1 압축된 특징 세트를 프로세싱하고 - 제1 CNN은 하나 이상의 제1 유형의 압축된 특징들을 프로세싱하도록 트레이닝됨 -; 압축된 데이터로부터 제2 압축된 특징 세트를 추출하며; 제2 컨볼루션 신경 네트워크(CNN)를 사용하여 제2 압축된 특징 세트를 프로세싱하고 - 제2 CNN은 하나 이상의 제1 유형의 압축된 특징들과 상이한 하나 이상의 제2 유형의 압축된 특징들을 프로세싱하도록 트레이닝됨 -; 압축된 데이터로부터 비주얼 데이터를 추출하고 - 비주얼 데이터는 압축된 데이터를 압축해제함으로써 추출됨 -; 제3 컨볼루션 신경 네트워크(CNN)를 사용하여 비주얼 데이터를 프로세싱하는 - 제3 CNN은 원시 비주얼 데이터를 프로세싱하도록 트레이닝됨 - 복수의 프로세싱 디바이스들을 포함한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 제1 유형의 압축된 특징들은 다음과 같은 유형들의 압축된 특징들: 모션 벡터들; 예측 잔차들; 변환 계수들; 양자화 파라미터들; 또는 매크로블록 코딩 모드들 중 하나 이상을 포함한다.
시스템의 일 예시적인 실시예에서, 복수의 프로세싱 디바이스들은: 제1 CNN을 사용하여 제1 압축된 특징 세트를 프로세싱하는 하나 이상의 제1 프로세싱 디바이스; 제2 CNN을 사용하여 제2 압축된 특징 세트를 프로세싱하는 하나 이상의 제2 프로세싱 디바이스; 및 제3 CNN을 사용하여 비주얼 데이터를 프로세싱하는 하나 이상의 제3 프로세싱 디바이스를 포함한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 제1 프로세싱 디바이스는 하나 이상의 에지 프로세싱 디바이스를 포함한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 제2 프로세싱 디바이스는 하나 이상의 포그 프로세싱 디바이스를 포함한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 제3 프로세싱 디바이스는 하나 이상의 클라우드 프로세싱 디바이스를 포함한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 센서는 하나 이상의 비전 센서를 포함하고, 여기서 하나 이상의 비전 센서는 적어도 하나의 카메라를 포함한다.
하나 이상의 실시예는 장치를 포함할 수 있으며, 이 장치는: 하나 이상의 센서에 의해 캡처되는 비주얼 표현과 연관된 비주얼 데이터를 저장하는 메모리; 및 하나 이상의 센서에 의해 캡처되는 비주얼 표현과 연관된 비주얼 데이터를 획득하고 - 비주얼 데이터는 압축되지 않은 비주얼 데이터 또는 압축된 비주얼 데이터를 포함함 -; 컨볼루션 신경 네트워크(CNN)를 사용하여 비주얼 데이터를 프로세싱하며 - CNN은 복수의 계층들을 포함하고, 복수의 계층들은 복수의 필터들을 포함하며, 복수의 필터들은: 압축되지 않은 데이터와 연관된 프로세싱을 수행하는 하나 이상의 픽셀 도메인 필터; 및 압축된 데이터와 연관된 프로세싱을 수행하는 하나 이상의 압축 도메인 필터를 포함함 -; CNN의 출력에 기초하여 비주얼 데이터를 분류하는 프로세서를 포함한다.
장치의 일 예시적인 실시예에서, 이 장치는 네트워크를 통해 하나 이상의 디바이스로부터 비주얼 데이터를 수신하는 통신 인터페이스를 추가로 포함하고, 여기서 하나 이상의 디바이스는 하나 이상의 센서와 연관된다.
장치의 일 예시적인 실시예에서: CNN은 비주얼 데이터가 압축해제될 때 하나 이상의 픽셀 도메인 필터와 연관된 프로세싱에 의존하도록 트레이닝되고; CNN은 비주얼 데이터가 압축될 때 하나 이상의 압축 도메인 필터와 연관된 프로세싱에 의존하도록 트레이닝된다.
장치의 일 예시적인 실시예에서, 하나 이상의 압축 도메인 필터는 추가로 비주얼 데이터의 비연속적 요소들과 연관된 프로세싱을 수행하고, 여기서 비주얼 데이터가 압축될 때 비연속적 요소들 사이에 상관이 있다.
장치의 일 예시적인 실시예에서, 하나 이상의 압축 도메인 필터는 하나 이상의 버터플라이 필터를 포함한다.
장치의 일 예시적인 실시예에서, 각각의 버터플라이 필터는 비주얼 데이터와 연관된 부분 역변환을 수행한다.
장치의 일 예시적인 실시예에서, 각각의 버터플라이 필터는 비주얼 데이터 내의 복수의 요소 쌍들에 대한 합 및 차이를 계산한다.
장치의 일 예시적인 실시예에서, 각각의 요소 쌍은 비주얼 데이터 내에서 특정의 거리만큼 떨어진 위치들에 위치된다.
장치의 일 예시적인 실시예에서, 하나 이상의 버터플라이 필터는: 수평 버터플라이 필터 - 수평 버터플라이 필터에 의해 프로세싱되는 복수의 요소 쌍들은 비주얼 데이터 내에서 상이한 수평 위치들에 위치됨 -; 및 수직 버터플라이 필터 - 수직 버터플라이 필터에 의해 프로세싱되는 복수의 요소 쌍들은 비주얼 데이터 내에서 상이한 수직 위치들에 위치됨 - 를 포함한다.
장치의 일 예시적인 실시예에서: 하나 이상의 압축 도메인 필터는 3차원(3D) 비주얼 데이터와 연관된 프로세싱을 수행하는 하나 이상의 3차원(3D) 컨볼루션 필터를 포함하고; 3D 비주얼 데이터는 비주얼 데이터의 3차원(3D) 변환에 기초하여 생성되며; 3D 변환에 사용되는 비주얼 데이터가 압축될 때 특정의 차원 내에서 하나 이상의 인접한 요소 사이에 상관이 있도록 3D 변환은 비주얼 데이터를 3개의 차원으로 재배열한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로: 3D 비주얼 데이터를 생성하고 - 3D 비주얼 데이터는 비주얼 데이터에 대해 3D 변환을 수행함으로써 생성됨 -; 3D 비주얼 데이터를 하나 이상의 3D 컨볼루션 필터에 대한 입력으로서 제공한다.
장치의 일 예시적인 실시예에서, 3D 비주얼 데이터를 생성하는 프로세서는 추가로: 비주얼 데이터를 복수의 블록들로 분할하고 - 각각의 블록은 복수의 요소들을 포함함 -; 3D 비주얼 데이터의 제1 차원 및 제2 차원을 따라 복수의 블록들을 배열하며; 3D 비주얼 데이터의 제3 차원을 따라 각각의 블록과 연관된 복수의 요소들을 배열한다.
장치의 일 예시적인 실시예에서, 비주얼 데이터가 압축될 때 각각의 블록과 연관된 복수의 요소들은 복수의 변환 계수들을 포함한다.
장치의 일 예시적인 실시예에서, 복수의 변환 계수들은 복수의 이산 코사인 변환(DCT) 계수들을 포함한다.
하나 이상의 실시예는 시스템을 포함할 수 있으며, 이 시스템은: 환경의 비주얼 표현을 캡처하는 하나 이상의 센서; 및 하나 이상의 센서에 의해 캡처되는 비주얼 표현과 연관된 비주얼 데이터를 획득하고 - 비주얼 데이터는 압축되지 않은 비주얼 데이터 또는 압축된 비주얼 데이터를 포함함 -; 컨볼루션 신경 네트워크(CNN)를 사용하여 비주얼 데이터를 프로세싱하며 - CNN은 복수의 계층들을 포함하고, 복수의 계층들은 복수의 필터들을 포함하며, 복수의 필터들은 하나 이상의 픽셀 도메인 필터 및 하나 이상의 압축 도메인 필터를 포함하고, 하나 이상의 픽셀 도메인 필터는 압축되지 않은 데이터와 연관된 프로세싱을 수행하기 위한 것이며; 하나 이상의 압축 도메인 필터는 압축된 데이터와 연관된 프로세싱을 수행하기 위한 것이고; CNN은 비주얼 데이터가 압축해제될 때 하나 이상의 픽셀 도메인 필터와 연관된 프로세싱에 의존하도록 트레이닝되며, CNN은 비주얼 데이터가 압축될 때 하나 이상의 압축 도메인 필터와 연관된 프로세싱에 의존하도록 트레이닝됨 -; CNN의 출력에 기초하여 비주얼 데이터를 분류하는 하나 이상의 프로세싱 디바이스를 포함한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 압축 도메인 필터는 추가로 비주얼 데이터의 비연속적 요소들과 연관된 프로세싱을 수행하고, 여기서 비주얼 데이터가 압축될 때 비연속적 요소들 사이에 상관이 있다.
시스템의 일 예시적인 실시예에서, 하나 이상의 압축 도메인 필터는 하나 이상의 버터플라이 필터를 포함하고, 여기서 각각의 버터플라이 필터는 비주얼 데이터와 연관된 부분 역변환을 수행한다.
시스템의 일 예시적인 실시예에서, 각각의 버터플라이 필터는 추가로 비주얼 데이터 내의 복수의 요소 쌍들에 대한 합 및 차이를 계산하고, 여기서 각각의 요소 쌍은 비주얼 데이터 내에서 특정의 거리만큼 떨어진 위치들에 위치된다.
시스템의 일 예시적인 실시예에서: 하나 이상의 압축 도메인 필터는 3차원(3D) 비주얼 데이터와 연관된 프로세싱을 수행하는 하나 이상의 3차원(3D) 컨볼루션 필터를 포함하고, 여기서 3D 비주얼 데이터는 비주얼 데이터의 3차원(3D) 변환에 기초하여 생성되며, 여기서 3D 변환에 사용되는 비주얼 데이터가 압축될 때 특정의 차원 내에서 하나 이상의 인접한 요소 사이에 상관이 있도록 3D 변환은 비주얼 데이터를 3개의 차원으로 재배열하고; 하나 이상의 프로세싱 디바이스는 추가로: 3D 비주얼 데이터를 생성하고 - 3D 비주얼 데이터는 비주얼 데이터에 대해 3D 변환을 수행함으로써 생성됨 -; 3D 비주얼 데이터를 하나 이상의 3D 컨볼루션 필터에 대한 입력으로서 제공한다.
시스템의 일 예시적인 실시예에서, 3D 비주얼 데이터를 생성하는 하나 이상의 프로세싱 디바이스는 추가로: 비주얼 데이터를 복수의 블록들로 분할하고 - 각각의 블록은 복수의 요소들을 포함하고, 비주얼 데이터가 압축될 때 복수의 요소들은 복수의 이산 코사인 변환(DCT) 계수들을 포함함 -; 3D 비주얼 데이터의 제1 차원 및 제2 차원을 따라 복수의 블록들을 배열하며; 3D 비주얼 데이터의 제3 차원을 따라 각각의 블록과 연관된 복수의 요소들을 배열한다.
하나 이상의 실시예는 명령어들이 저장되어 있는 적어도 하나의 머신 액세스가능 저장 매체를 포함할 수 있으며, 여기서 명령어들은, 머신 상에서 실행될 때, 머신으로 하여금: 하나 이상의 센서에 의해 캡처되는 비주얼 표현과 연관된 비주얼 데이터를 획득하게 하고 - 비주얼 데이터는 압축되지 않은 비주얼 데이터 또는 압축된 비주얼 데이터를 포함함 -; 컨볼루션 신경 네트워크(CNN)를 사용하여 비주얼 데이터를 프로세싱하게 하며 - CNN은 복수의 계층들을 포함하고, 복수의 계층들은 복수의 필터들을 포함하며, 복수의 필터들은 하나 이상의 픽셀 도메인 필터 및 하나 이상의 압축 도메인 필터를 포함하고, 하나 이상의 픽셀 도메인 필터는 압축되지 않은 데이터와 연관된 프로세싱을 수행하기 위한 것이며; 하나 이상의 압축 도메인 필터는 압축된 데이터와 연관된 프로세싱을 수행하기 위한 것이고; CNN은 비주얼 데이터가 압축해제될 때 하나 이상의 픽셀 도메인 필터와 연관된 프로세싱에 의존하도록 트레이닝되며, CNN은 비주얼 데이터가 압축될 때 하나 이상의 압축 도메인 필터와 연관된 프로세싱에 의존하도록 트레이닝됨 -; CNN의 출력에 기초하여 비주얼 데이터를 분류하게 한다.
저장 매체의 일 예시적인 실시예에서, 하나 이상의 압축 도메인 필터는 비주얼 데이터와 연관된 하나 이상의 부분 역변환을 수행하는 하나 이상의 버터플라이 필터를 포함한다.
저장 매체의 일 예시적인 실시예에서, 하나 이상의 압축 도메인 필터는 3차원(3D) 비주얼 데이터와 연관된 프로세싱을 수행하는 하나 이상의 3차원(3D) 컨볼루션 필터를 포함하고, 여기서 3D 비주얼 데이터는 비주얼 데이터의 3차원(3D) 변환에 기초하여 생성되며, 여기서 3D 변환에 사용되는 비주얼 데이터가 압축될 때 특정의 차원 내에서 하나 이상의 인접한 요소 사이에 상관이 있도록 3D 변환은 비주얼 데이터를 3개의 차원으로 재배열한다.
하나 이상의 실시예는 방법을 포함할 수 있으며, 이 방법은: 하나 이상의 센서에 의해 캡처되는 비주얼 표현과 연관된 비주얼 데이터를 획득하는 단계 - 비주얼 데이터는 압축되지 않은 비주얼 데이터 또는 압축된 비주얼 데이터를 포함함 -; 컨볼루션 신경 네트워크(CNN)를 사용하여 비주얼 데이터를 프로세싱하는 단계 - CNN은 복수의 계층들을 포함하고, 복수의 계층들은 복수의 필터들을 포함하며, 복수의 필터들은 하나 이상의 픽셀 도메인 필터 및 하나 이상의 압축 도메인 필터를 포함하고, 하나 이상의 픽셀 도메인 필터는 압축되지 않은 데이터와 연관된 프로세싱을 수행하기 위한 것이며; 하나 이상의 압축 도메인 필터는 압축된 데이터와 연관된 프로세싱을 수행하기 위한 것이고; CNN은 비주얼 데이터가 압축해제될 때 하나 이상의 픽셀 도메인 필터와 연관된 프로세싱에 의존하도록 트레이닝되며, CNN은 비주얼 데이터가 압축될 때 하나 이상의 압축 도메인 필터와 연관된 프로세싱에 의존하도록 트레이닝됨 -; 및 CNN의 출력에 기초하여 비주얼 데이터를 분류하는 단계를 포함한다.
방법의 일 예시적인 실시예에서, 하나 이상의 압축 도메인 필터는: 비주얼 데이터와 연관된 하나 이상의 부분 역변환을 수행하는 하나 이상의 버터플라이 필터; 또는 3차원(3D) 비주얼 데이터와 연관된 프로세싱을 수행하는 하나 이상의 3차원(3D) 컨볼루션 필터를 포함하고, 여기서 3D 비주얼 데이터는 비주얼 데이터의 3차원(3D) 변환에 기초하여 생성되며, 여기서 3D 변환에 사용되는 비주얼 데이터가 압축될 때 특정의 차원 내에서 하나 이상의 인접한 요소 사이에 상관이 3D 변환은 비주얼 데이터를 3개의 차원으로 재배열한다.
하나 이상의 실시예는 장치를 포함할 수 있으며, 이 장치는: 복수의 압축된 이미지들을 저장하는 저장 디바이스 - 복수의 압축된 이미지들은 하나 이상의 압축된 마스터 이미지 및 하나 이상의 압축된 슬레이브 이미지를 포함하고, 하나 이상의 압축된 슬레이브 이미지는 하나 이상의 압축된 마스터 이미지를 참조하여 압축됨 -; 및 압축되지 않은 이미지를 식별하고; 복수의 이미지들과 연관된 컨텍스트 정보에 액세스하며 - 복수의 이미지들은 압축되지 않은 이미지 및 하나 이상의 압축된 마스터 이미지를 포함함 -; 컨텍스트 정보에 적어도 부분적으로 기초하여, 압축되지 않은 이미지가 하나 이상의 압축된 마스터 이미지로부터의 대응하는 마스터 이미지와 연관되는지를 결정하고; 압축되지 않은 이미지가 대응하는 마스터 이미지와 연관되어 있다는 결정 시에, 대응하는 마스터 이미지를 참조하여 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하며; 압축되지 않은 이미지가 대응하는 마스터 이미지와 연관되어 있지 않다는 결정 시에, 하나 이상의 압축된 마스터 이미지를 참조하지 않고 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하고; 대응하는 압축된 이미지를 저장 디바이스 상에 저장하는 프로세서를 포함한다.
장치의 일 예시적인 실시예에서, 컨텍스트 정보에 적어도 부분적으로 기초하여, 압축되지 않은 이미지가 하나 이상의 압축된 마스터 이미지로부터의 대응하는 마스터 이미지와 연관되는지를 결정하는 프로세서는 추가로: 압축되지 않은 이미지 및 대응하는 마스터 이미지 각각과 연관된 컨텍스트 정보 사이의 상관을 식별하고; 압축되지 않은 이미지 및 대응하는 마스터 이미지 각각과 연관된 복수의 이미지 특징들 사이의 상관을 식별하며; 컨텍스트 정보 사이의 상관 및 복수의 이미지 특징들 사이의 상관에 적어도 부분적으로 기초하여, 압축되지 않은 이미지가 대응하는 마스터 이미지와 연관되어 있다고 결정한다.
장치의 일 예시적인 실시예에서, 컨텍스트 정보는 복수의 이미지들 중 적어도 하나의 이미지에 대한 다음과 같은 것: 시간; 및 위치를 포함한다.
장치의 일 예시적인 실시예에서, 컨텍스트 정보는 복수의 이미지들 중 적어도 하나의 이미지에 대한 다음과 같은 것: 이미지 픽셀 데이터; 또는 추출된 이미지 특징 데이터를 추가로 포함한다.
장치의 일 예시적인 실시예에서, 컨텍스트 정보는 복수의 이미지들 중 적어도 하나의 이미지에 대한 모바일 디바이스 배향을 추가로 포함한다.
장치의 일 예시적인 실시예에서, 압축되지 않은 이미지 및 대응하는 마스터 이미지 각각과 연관된 컨텍스트 정보 사이의 상관을 식별하는 프로세서는 추가로: 컨텍스트 정보에 기초하여, 압축되지 않은 이미지 및 대응하는 마스터 이미지가 유사한 시간에 그리고 유사한 위치에서 캡처되었다고 결정한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로: 대응하는 마스터 이미지를 참조하여 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축할 시에, 슬레이브 이미지 지정을 갖는 대응하는 압축된 이미지를 지정하고; 하나 이상의 압축된 마스터 이미지를 참조하지 않고 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축할 시에, 마스터 이미지 지정을 갖는 대응하는 압축된 이미지를 지정한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로: 압축되지 않은 이미지가 하나 이상의 압축된 마스터 이미지로부터의 대응하는 마스터 이미지와 연관되어 있지 않다고 결정하고; 하나 이상의 압축된 마스터 이미지를 참조하지 않고 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하며; 마스터 이미지 지정을 갖는 대응하는 압축된 이미지를 지정한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로: 제2 압축되지 않은 이미지를 식별하고; 제2 압축되지 않은 이미지가 마스터 이미지 지정을 갖는 대응하는 압축된 이미지와 연관되어 있다고 결정하며; 마스터 이미지 지정을 갖는 대응하는 압축된 이미지를 참조하여 제2 압축되지 않은 이미지를 압축한다.
장치의 일 예시적인 실시예에서: 대응하는 마스터 이미지를 참조하여 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하는 프로세서는 추가로 압축되지 않은 이미지를 인터-프레임 인코딩을 사용하여 압축하고; 하나 이상의 압축된 마스터 이미지를 참조하지 않고 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하는 프로세서는 추가로 압축되지 않은 이미지를 인트라-프레임 인코딩을 사용하여 압축한다.
장치의 일 예시적인 실시예에서, 압축되지 않은 이미지를 인터-프레임 인코딩을 사용하여 압축하는 프로세서는 추가로 압축되지 않은 이미지를 비디오 코덱을 사용하여 압축한다.
장치의 일 예시적인 실시예에서, 이 장치는 압축되지 않은 이미지 및 압축되지 않은 이미지와 연관된 컨텍스트 정보를 모바일 디바이스로부터 수신하는 통신 인터페이스를 추가로 포함한다.
장치의 일 예시적인 실시예에서, 이 장치는 모바일 디바이스이고, 모바일 디바이스는: 저장 디바이스; 프로세서; 및 압축되지 않은 이미지를 캡처하는 카메라를 포함한다.
장치의 일 예시적인 실시예에서, 모바일 디바이스는 압축되지 않은 이미지와 연관된 컨텍스트 정보를 캡처하는 하나 이상의 센서를 추가로 포함하고, 여기서 하나 이상의 센서는: GPS 수신기; 자이로스코프; 또는 가속도계 중 적어도 하나를 포함한다.
하나 이상의 실시예는 시스템을 포함할 수 있으며, 이 시스템은: 복수의 압축된 이미지들을 저장하는 저장 디바이스 - 복수의 압축된 이미지들은 하나 이상의 압축된 마스터 이미지 및 하나 이상의 압축된 슬레이브 이미지를 포함하고, 하나 이상의 압축된 슬레이브 이미지는 하나 이상의 압축된 마스터 이미지를 참조하여 압축됨 -; 모바일 디바이스로부터 압축되지 않은 이미지를 수신하는 통신 인터페이스; 및 모바일 디바이스로부터 수신되는 압축되지 않은 이미지를 식별하고; 복수의 이미지들과 연관된 컨텍스트 정보에 액세스하며 - 복수의 이미지들은 압축되지 않은 이미지 및 하나 이상의 압축된 마스터 이미지를 포함함 -; 컨텍스트 정보에 적어도 부분적으로 기초하여, 압축되지 않은 이미지가 하나 이상의 압축된 마스터 이미지로부터의 대응하는 마스터 이미지와 연관되는지를 결정하고; 압축되지 않은 이미지가 대응하는 마스터 이미지와 연관되어 있다는 결정 시에, 대응하는 마스터 이미지를 참조하여 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하며; 압축되지 않은 이미지가 대응하는 마스터 이미지와 연관되어 있지 않다는 결정 시에, 하나 이상의 압축된 마스터 이미지를 참조하지 않고 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하고; 대응하는 압축된 이미지를 저장 디바이스 상에 저장하는 프로세서를 포함한다.
시스템의 일 예시적인 실시예에서, 컨텍스트 정보에 적어도 부분적으로 기초하여, 압축되지 않은 이미지가 하나 이상의 압축된 마스터 이미지로부터의 대응하는 마스터 이미지와 연관되는지를 결정하는 프로세서는 추가로: 압축되지 않은 이미지 및 대응하는 마스터 이미지 각각과 연관된 컨텍스트 정보 사이의 상관을 식별하고; 압축되지 않은 이미지 및 대응하는 마스터 이미지 각각과 연관된 복수의 이미지 특징들 사이의 상관을 식별하며; 컨텍스트 정보 사이의 상관 및 복수의 이미지 특징들 사이의 상관에 적어도 부분적으로 기초하여, 압축되지 않은 이미지가 대응하는 마스터 이미지와 연관되어 있다고 결정한다.
시스템의 일 예시적인 실시예에서, 압축되지 않은 이미지 및 대응하는 마스터 이미지 각각과 연관된 컨텍스트 정보 사이의 상관을 식별하는 프로세서는 추가로: 컨텍스트 정보에 기초하여, 압축되지 않은 이미지 및 대응하는 마스터 이미지가 유사한 시간에 그리고 유사한 위치에서 캡처되었다고 결정한다.
시스템의 일 예시적인 실시예에서, 프로세서는 추가로: 대응하는 마스터 이미지를 참조하여 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축할 시에, 슬레이브 이미지 지정을 갖는 대응하는 압축된 이미지를 지정하고; 하나 이상의 압축된 마스터 이미지를 참조하지 않고 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축할 시에, 마스터 이미지 지정을 갖는 대응하는 압축된 이미지를 지정한다.
시스템의 일 예시적인 실시예에서, 프로세서는 추가로: 압축되지 않은 이미지가 하나 이상의 압축된 마스터 이미지로부터의 대응하는 마스터 이미지와 연관되어 있지 않다고 결정하고; 하나 이상의 압축된 마스터 이미지를 참조하지 않고 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하며; 마스터 이미지 지정을 갖는 대응하는 압축된 이미지를 지정하고; 모바일 디바이스로부터 수신되는 제2 압축되지 않은 이미지를 식별하며; 제2 압축되지 않은 이미지가 마스터 이미지 지정을 갖는 대응하는 압축된 이미지와 연관되어 있다고 결정하고; 마스터 이미지 지정을 갖는 대응하는 압축된 이미지를 참조하여 제2 압축되지 않은 이미지를 압축한다.
시스템의 일 예시적인 실시예에서: 대응하는 마스터 이미지를 참조하여 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하는 프로세서는 추가로 압축되지 않은 이미지를 인터-프레임 인코딩을 사용하여 압축하고; 하나 이상의 압축된 마스터 이미지를 참조하지 않고 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하는 프로세서는 추가로 압축되지 않은 이미지를 인트라-프레임 인코딩을 사용하여 압축한다.
시스템의 일 예시적인 실시예에서, 압축되지 않은 이미지를 인터-프레임 인코딩을 사용하여 압축하는 프로세서는 추가로 압축되지 않은 이미지를 비디오 코덱을 사용하여 압축한다.
하나 이상의 실시예는 명령어들이 저장되어 있는 적어도 하나의 머신 액세스가능 저장 매체를 포함할 수 있으며, 여기서 명령어들은, 머신 상에서 실행될 때, 머신으로 하여금: 모바일 디바이스에 의해 캡처되는 압축되지 않은 이미지를 식별하게 하고; 복수의 이미지들과 연관된 컨텍스트 정보에 액세스하게 하며 - 복수의 이미지들은 압축되지 않은 이미지 및 복수의 압축된 이미지들을 포함하고, 복수의 압축된 이미지들은 하나 이상의 압축된 마스터 이미지 및 하나 이상의 압축된 슬레이브 이미지를 포함하며, 하나 이상의 압축된 슬레이브 이미지는 하나 이상의 압축된 마스터 이미지를 참조하여 압축됨 -; 컨텍스트 정보에 적어도 부분적으로 기초하여, 압축되지 않은 이미지가 하나 이상의 압축된 마스터 이미지로부터의 대응하는 마스터 이미지와 연관되는지를 결정하게 하고; 압축되지 않은 이미지가 대응하는 마스터 이미지와 연관되어 있다는 결정 시에, 인터-프레임 인코딩을 사용하여 대응하는 마스터 이미지를 참조하여 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하게 하며; 압축되지 않은 이미지가 대응하는 마스터 이미지와 연관되어 있지 않다는 결정 시에, 인트라-프레임 인코딩을 사용하여 하나 이상의 압축된 마스터 이미지를 참조하지 않고 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하게 하고; 대응하는 압축된 이미지를 저장 디바이스 상에 저장하게 한다.
저장 매체의 일 예시적인 실시예에서, 컨텍스트 정보에 적어도 부분적으로 기초하여, 머신으로 하여금 압축되지 않은 이미지가 하나 이상의 압축된 마스터 이미지로부터의 대응하는 마스터 이미지와 연관되는지를 결정하게 하는 명령어들은 추가로 머신으로 하여금: 압축되지 않은 이미지 및 대응하는 마스터 이미지 각각과 연관된 컨텍스트 정보 사이의 상관을 식별하게 하고; 압축되지 않은 이미지 및 대응하는 마스터 이미지 각각과 연관된 복수의 이미지 특징들 사이의 상관을 식별하게 하며; 컨텍스트 정보 사이의 상관 및 복수의 이미지 특징들 사이의 상관에 적어도 부분적으로 기초하여, 압축되지 않은 이미지가 대응하는 마스터 이미지와 연관되어 있다고 결정하게 한다.
저장 매체의 일 예시적인 실시예에서, 명령어들은 추가로 머신으로 하여금: 압축되지 않은 이미지가 하나 이상의 압축된 마스터 이미지로부터의 대응하는 마스터 이미지와 연관되어 있지 않다고 결정하게 하고; 인터-프레임 인코딩을 사용하여 하나 이상의 압축된 마스터 이미지를 참조하지 않고 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하게 하며; 마스터 이미지 지정을 갖는 대응하는 압축된 이미지를 지정하게 하고; 모바일 디바이스에 의해 캡처되는 제2 압축되지 않은 이미지를 식별하게 하며; 제2 압축되지 않은 이미지가 마스터 이미지 지정을 갖는 대응하는 압축된 이미지와 연관되어 있다고 결정하게 하고; 마스터 이미지 지정을 갖는 대응하는 압축된 이미지를 참조하여 제2 압축되지 않은 이미지를 압축하게 한다.
하나 이상의 실시예는 방법을 포함할 수 있으며, 이 방법은: 모바일 디바이스에 의해 캡처되는 압축되지 않은 이미지를 식별하는 단계; 복수의 이미지들과 연관된 컨텍스트 정보에 액세스하는 단계 - 복수의 이미지들은 압축되지 않은 이미지 및 복수의 압축된 이미지들을 포함하고, 복수의 압축된 이미지들은 하나 이상의 압축된 마스터 이미지 및 하나 이상의 압축된 슬레이브 이미지를 포함하며, 하나 이상의 압축된 슬레이브 이미지는 하나 이상의 압축된 마스터 이미지를 참조하여 압축됨 -; 컨텍스트 정보에 적어도 부분적으로 기초하여, 압축되지 않은 이미지가 하나 이상의 압축된 마스터 이미지로부터의 대응하는 마스터 이미지와 연관되는지를 결정하는 단계; 압축되지 않은 이미지가 대응하는 마스터 이미지와 연관되어 있다는 결정 시에, 인터-프레임 인코딩을 사용하여 대응하는 마스터 이미지를 참조하여 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하는 단계; 압축되지 않은 이미지가 대응하는 마스터 이미지와 연관되어 있지 않다는 결정 시에, 인트라-프레임 인코딩을 사용하여 하나 이상의 압축된 마스터 이미지를 참조하지 않고 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하는 단계; 및 대응하는 압축된 이미지를 저장 디바이스 상에 저장하는 단계를 포함한다.
방법의 일 예시적인 실시예에서, 이 방법은: 압축되지 않은 이미지가 하나 이상의 압축된 마스터 이미지로부터의 대응하는 마스터 이미지와 연관되어 있지 않다고 결정하는 단계; 인터-프레임 인코딩을 사용하여 하나 이상의 압축된 마스터 이미지를 참조하지 않고 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하는 단계; 마스터 이미지 지정을 갖는 대응하는 압축된 이미지를 지정하는 단계; 모바일 디바이스에 의해 캡처되는 제2 압축되지 않은 이미지를 식별하는 단계; 제2 압축되지 않은 이미지가 마스터 이미지 지정을 갖는 대응하는 압축된 이미지와 연관되어 있다고 결정하는 단계; 및 마스터 이미지 지정을 갖는 대응하는 압축된 이미지를 참조하여 제2 압축되지 않은 이미지를 압축하는 단계를 추가로 포함한다.
하나 이상의 실시예는 장치를 포함할 수 있으며, 이 장치는: 하나 이상의 디바이스와 통신하는 통신 인터페이스; 디바이스 아이덴티티 블록체인을 저장하는 메모리; 및 제1 디바이스로부터 디바이스 아이덴티티 트랜잭션을 수신하고 - 디바이스 아이덴티티 트랜잭션은 디바이스 아이덴티티를 포함함 -; 디바이스 아이덴티티의 해시를 계산하며; 해시에 기초하여, 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있는지를 결정하고; 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있지 않다는 결정 시에, 디바이스 아이덴티티 트랜잭션을 디바이스 아이덴티티 블록체인에 추가하는 프로세서를 포함한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로, 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있다는 결정 시에, 에러를 제1 디바이스에게 전송하고, 여기서 에러는 디바이스 아이덴티티가 이미 등록되어 있다는 것을 나타낸다.
장치의 일 예시적인 실시예에서, 해시에 기초하여, 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있는지를 결정하는 프로세서는 추가로: 디바이스 아이덴티티 블록체인과 연관된 해시 트리를 탐색하여 디바이스 아이덴티티 블록체인이 해시와 연관된 기존 트랜잭션을 포함하는지를 결정한다.
장치의 일 예시적인 실시예에서, 디바이스 아이덴티티 트랜잭션을 디바이스 아이덴티티 블록체인에 추가하는 프로세서는 추가로: 디바이스 아이덴티티 트랜잭션을 디바이스 아이덴티티 블록체인과 연관된 현재 블록에 추가하고; 현재 블록을 디바이스 아이덴티티 블록체인에 기입한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로: 제1 네트워크로부터 아이덴티티 조회 요청을 수신하고 - 아이덴티티 조회 요청은 제1 디바이스를 제1 네트워크에 온보딩하려는 시도와 연관되고, 아이덴티티 조회 요청은 디바이스 아이덴티티를 포함함 -; 디바이스 아이덴티티 블록체인을 탐색하여 디바이스 아이덴티티와 연관된 디바이스 아이덴티티 트랜잭션을 식별하며; 디바이스 아이덴티티 트랜잭션을 제1 네트워크에게 전송하고, 여기서 제1 네트워크는, 디바이스 아이덴티티 트랜잭션에 기초하여, 디바이스 아이덴티티가 제1 디바이스에 등록되어 있다는 것을 검증한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로: 제2 네트워크로부터 제2 아이덴티티 조회 요청을 수신하고 - 제2 아이덴티티 조회 요청은 제1 디바이스를 제2 네트워크에 온보딩하려는 시도와 연관되고, 제2 아이덴티티 조회 요청은 디바이스 아이덴티티를 포함함 -; 디바이스 아이덴티티 블록체인을 탐색하여 디바이스 아이덴티티와 연관된 디바이스 아이덴티티 트랜잭션을 식별하며; 디바이스 아이덴티티 트랜잭션을 제2 네트워크에게 전송하고, 여기서 제2 네트워크는, 디바이스 아이덴티티 트랜잭션에 기초하여, 디바이스 아이덴티티가 제1 디바이스에 등록되어 있다는 것을, 검증한다.
장치의 일 예시적인 실시예에서, 제1 디바이스는 다수의 사물 인터넷(IoT) 네트워크들에 참여할 수 있는 사물 인터넷(IoT) 디바이스를 포함한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로: 제2 디바이스로부터 제2 디바이스 아이덴티티 트랜잭션을 수신하고 - 제2 디바이스 아이덴티티 트랜잭션은 디바이스 아이덴티티를 포함함 -; 디바이스 아이덴티티의 제2 해시를 계산하며; 제2 해시에 기초하여, 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있다고 결정하고; 에러를 제2 디바이스에게 전송하며, 여기서 에러는 디바이스 아이덴티티가 이미 등록되어 있다는 것을 나타낸다.
장치의 일 예시적인 실시예에서: 메모리는 추가로 알고리즘 블록체인을 저장하고; 프로세서는 추가로: 제1 네트워크로부터 알고리즘 등록 트랜잭션을 수신하고 - 알고리즘 등록 트랜잭션은 알고리즘 식별자 및 알고리즘의 표현을 포함함 -; 알고리즘을 유효성 확인하기 위해 하나 이상의 테스트를 수행하며; 알고리즘 등록 트랜잭션을 알고리즘 블록체인에 추가한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로 알고리즘이 이용가능하다는 것을 제2 네트워크에 통지한다.
장치의 일 예시적인 실시예에서, 프로세서는 추가로: 제2 네트워크로부터 알고리즘 조회 요청을 수신하고 - 알고리즘 조회 요청은 알고리즘 식별자를 포함함 -; 알고리즘 블록체인을 탐색하여 알고리즘 식별자와 연관된 알고리즘 등록 트랜잭션을 식별하며; 알고리즘 등록 트랜잭션을 제2 네트워크에게 전송하고, 여기서 제2 네트워크는, 알고리즘 등록 트랜잭션에 기초하여, 알고리즘을 사용할지를 결정한다.
장치의 일 예시적인 실시예에서, 알고리즘을 유효성 확인하기 위해 하나 이상의 테스트를 수행하는 프로세서는 추가로: 알고리즘의 표현을 분석하여 하나 이상의 행동적 속성을 식별하거나; 또는 샌드박스에서 알고리즘의 표현을 실행한다.
하나 이상의 실시예는 시스템을 포함할 수 있으며, 이 시스템은: 복수의 네트워크들을 통해 통신할 수 있는 복수의 디바이스들; 및 복수의 디바이스들 중 제1 디바이스로부터 디바이스 아이덴티티 트랜잭션을 수신하고 - 디바이스 아이덴티티 트랜잭션은 디바이스 아이덴티티를 포함함 -; 디바이스 아이덴티티의 해시를 계산하며; 해시에 기초하여, 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있는지를 결정하고; 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있지 않다는 결정 시에, 디바이스 아이덴티티 트랜잭션을 디바이스 아이덴티티 블록체인에 추가하는 하나 이상의 블록체인 디바이스를 포함한다.
시스템의 일 예시적인 실시예에서, 해시에 기초하여, 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있는지를 결정하는 하나 이상의 블록체인 디바이스는 추가로: 디바이스 아이덴티티 블록체인과 연관된 해시 트리를 탐색하여 디바이스 아이덴티티 블록체인이 해시와 연관된 기존 트랜잭션을 포함하는지를 결정한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 블록체인 디바이스는 추가로: 복수의 네트워크들 중 제1 네트워크로부터 아이덴티티 조회 요청을 수신하고 - 아이덴티티 조회 요청은 제1 디바이스를 제1 네트워크에 온보딩하려는 시도와 연관되고, 아이덴티티 조회 요청은 디바이스 아이덴티티를 포함함 -; 디바이스 아이덴티티 블록체인을 탐색하여 디바이스 아이덴티티와 연관된 디바이스 아이덴티티 트랜잭션을 식별하며; 디바이스 아이덴티티 트랜잭션을 제1 네트워크에게 전송하고, 여기서 제1 네트워크는, 디바이스 아이덴티티 트랜잭션에 기초하여, 디바이스 아이덴티티가 제1 디바이스에 등록되어 있다는 것을 검증한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 블록체인 디바이스는 추가로: 복수의 네트워크들 중 제2 네트워크로부터 제2 아이덴티티 조회 요청을 수신하고 - 제2 아이덴티티 조회 요청은 제1 디바이스를 제2 네트워크에 온보딩하려는 시도와 연관되고, 제2 아이덴티티 조회 요청은 디바이스 아이덴티티를 포함함 -; 디바이스 아이덴티티 블록체인을 탐색하여 디바이스 아이덴티티와 연관된 디바이스 아이덴티티 트랜잭션을 식별하며; 디바이스 아이덴티티 트랜잭션을 제2 네트워크에게 전송하고, 여기서 제2 네트워크는, 디바이스 아이덴티티 트랜잭션에 기초하여, 디바이스 아이덴티티가 제1 디바이스에 등록되어 있다는 것을, 검증한다.
시스템의 일 예시적인 실시예에서, 제1 디바이스는 다수의 사물 인터넷(IoT) 네트워크들에 참여할 수 있는 사물 인터넷(IoT) 디바이스를 포함한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 블록체인 디바이스는 추가로: 복수의 디바이스들 중 제2 디바이스로부터 제2 디바이스 아이덴티티 트랜잭션을 수신하고 - 제2 디바이스 아이덴티티 트랜잭션은 디바이스 아이덴티티를 포함함 -; 디바이스 아이덴티티의 제2 해시를 계산하며; 제2 해시에 기초하여, 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있다고 결정하고; 에러를 제2 디바이스에게 전송하며, 여기서 에러는 디바이스 아이덴티티가 이미 등록되어 있다는 것을 나타낸다.
시스템의 일 예시적인 실시예에서: 메모리는 추가로 알고리즘 블록체인을 저장하고; 하나 이상의 블록체인 디바이스는 추가로: 복수의 네트워크들 중 제1 네트워크로부터 알고리즘 등록 트랜잭션을 수신하고 - 알고리즘 등록 트랜잭션은 알고리즘 식별자 및 알고리즘의 표현을 포함함 -; 알고리즘을 유효성 확인하기 위해 하나 이상의 테스트를 수행하며; 알고리즘 등록 트랜잭션을 알고리즘 블록체인에 추가한다.
시스템의 일 예시적인 실시예에서, 하나 이상의 블록체인 디바이스는 추가로: 복수의 네트워크들 중 제2 네트워크로부터 알고리즘 조회 요청을 수신하고 - 알고리즘 조회 요청은 알고리즘 식별자를 포함함 -; 알고리즘 블록체인을 탐색하여 알고리즘 식별자와 연관된 알고리즘 등록 트랜잭션을 식별하며; 알고리즘 등록 트랜잭션을 제2 네트워크에게 전송하고, 여기서 제2 네트워크는, 알고리즘 등록 트랜잭션에 기초하여, 알고리즘을 사용할지를 결정한다.
하나 이상의 실시예는 명령어들이 저장되어 있는 적어도 하나의 머신 액세스가능 저장 매체를 포함할 수 있으며, 여기서 명령어들은, 머신 상에서 실행될 때, 머신으로 하여금: 제1 디바이스로부터 디바이스 아이덴티티 트랜잭션을 수신하게 하고 - 디바이스 아이덴티티 트랜잭션은 디바이스 아이덴티티를 포함함 -; 디바이스 아이덴티티의 해시를 계산하게 하며; 해시에 기초하여, 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있는지를 결정하게 하고; 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있지 않다는 결정 시에, 디바이스 아이덴티티 트랜잭션을 디바이스 아이덴티티 블록체인에 추가하게 한다.
저장 매체의 일 예시적인 실시예에서, 명령어들은 추가로 머신으로 하여금: 제2 디바이스로부터 제2 디바이스 아이덴티티 트랜잭션을 수신하게 하고 - 제2 디바이스 아이덴티티 트랜잭션은 디바이스 아이덴티티를 포함함 -; 디바이스 아이덴티티의 제2 해시를 계산하게 하며; 제2 해시에 기초하여, 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있다고 결정하게 하고; 에러를 제2 디바이스에게 전송하게 하며, 여기서 에러는 디바이스 아이덴티티가 이미 등록되어 있다는 것을 나타낸다.
저장 매체의 일 예시적인 실시예에서, 명령어들은 추가로 머신으로 하여금: 제1 네트워크로부터 알고리즘 등록 트랜잭션을 수신하게 하고 - 알고리즘 등록 트랜잭션은 알고리즘 식별자 및 알고리즘의 표현을 포함함 -; 알고리즘을 유효성 확인하기 위해 하나 이상의 테스트를 수행하게 하며; 알고리즘 등록 트랜잭션을 알고리즘 블록체인에 추가하게 한다.
하나 이상의 실시예는 방법을 포함할 수 있으며, 이 방법은: 제1 디바이스로부터 디바이스 아이덴티티 트랜잭션을 수신하는 단계 - 디바이스 아이덴티티 트랜잭션은 디바이스 아이덴티티를 포함함 -; 디바이스 아이덴티티의 해시를 계산하는 단계; 해시에 기초하여, 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있는지를 결정하는 단계; 및 디바이스 아이덴티티가 디바이스 아이덴티티 블록체인에 등록되어 있지 않다는 결정 시에, 디바이스 아이덴티티 트랜잭션을 디바이스 아이덴티티 블록체인에 추가하는 단계를 포함한다.
방법의 일 예시적인 실시예에서, 이 방법은: 제1 네트워크로부터 알고리즘 등록 트랜잭션을 수신하는 단계 - 알고리즘 등록 트랜잭션은 알고리즘 식별자 및 알고리즘의 표현을 포함함 -; 알고리즘을 유효성 확인하기 위해 하나 이상의 테스트를 수행하는 단계; 및 알고리즘 등록 트랜잭션을 알고리즘 블록체인에 추가하는 단계를 추가로 포함한다.

Claims (8)

  1. 장치로서,
    프로세서; 및
    통신 인터페이스
    를 포함하고, 상기 프로세서는:
    복수의 태스크들을 포함하는 작업부하를 식별하고;
    상기 작업부하에 기초하여 작업부하 그래프를 생성하며 - 상기 작업부하 그래프는 상기 복수의 태스크들과 연관된 정보를 포함함 -;
    디바이스 접속성 그래프를 식별하고 - 상기 디바이스 접속성 그래프는 복수의 프로세싱 디바이스들과 연관된 디바이스 접속성 정보를 포함함 -;
    상기 작업부하와 연관된 프라이버시 정책을 식별하며;
    상기 복수의 프로세싱 디바이스들과 연관된 프라이버시 레벨 정보를 식별하고;
    상기 프라이버시 정책 및 상기 프라이버시 레벨 정보에 기초하여 프라이버시 제약조건을 식별하며;
    작업부하 스케줄을 결정하고, 상기 작업부하 스케줄은 상기 작업부하를 상기 복수의 프로세싱 디바이스들에 매핑하는 것을 포함하고, 상기 작업부하 스케줄은 상기 프라이버시 제약조건, 상기 작업부하 그래프, 및 상기 디바이스 접속성 그래프에 기초하여 결정되고,
    상기 통신 인터페이스는 상기 작업부하 스케줄을 상기 복수의 프로세싱 디바이스들에게 송신하는, 장치.
  2. 장치로서,
    탑뷰 감지 디바이스 아래의 환경과 연관된 센서 데이터를 캡처하는 상기 탑뷰 감지 디바이스; 및
    프로세서
    를 포함하고, 상기 프로세서는:
    상기 탑뷰 감지 디바이스에 의해 캡처되는 상기 센서 데이터를 획득하고;
    상기 센서 데이터에 기초하여, 상기 탑뷰 감지 디바이스 아래의 상기 환경의 비주얼 표현을 생성하며;
    상기 비주얼 표현이 사람의 표현을 포함한다고 결정하고;
    상기 사람의 표현과 연관된 하나 이상의 특징을 식별하며;
    상기 하나 이상의 특징에 기초하여 상기 사람과 연관된 인구통계 정보를 식별하는, 장치.
  3. 장치로서,
    복수의 카메라들과 통신하는 통신 인터페이스; 및
    프로세서
    를 포함하고, 상기 프로세서는:
    객체의 초기 상태와 연관된 메타데이터를 획득하고 - 상기 객체는 제1 시점에서 제1 비디오 스트림으로 상기 복수의 카메라들 중 제1 카메라에 의해 캡처되고, 상기 메타데이터는 상기 제1 비디오 스트림에 기초하여 획득됨 -;
    상기 메타데이터에 기초하여, 제2 시점에서의 상기 객체의 미래 상태를 예측하며;
    상기 제2 시점에서 상기 객체를 캡처하기 위한 제2 카메라를 식별하고 - 상기 제2 카메라는
    상기 객체의 미래 상태; 및
    상기 복수의 카메라들의 복수의 카메라 뷰들
    에 기초하여 상기 복수의 카메라들로부터 식별됨 -;
    상기 제2 시점에서 제2 비디오 스트림으로 상기 객체를 캡처하도록 상기 제2 카메라를 구성하고, 상기 제2 카메라는 상기 객체의 미래 상태에 기초하여 상기 객체를 캡처하도록 구성되는, 장치.
  4. 장치로서,
    제1 디바이스와 연관된 하나 이상의 센서에 의해 캡처되는 센서 데이터를 저장하는 메모리; 및
    회로부를 포함하는 프로세서
    를 포함하고, 상기 회로부는:
    상기 제1 디바이스와 연관된 상기 하나 이상의 센서에 의해 캡처되는 상기 센서 데이터에 액세스하고;
    상기 제1 디바이스 근처에서 사고가 발생했다고 결정하며;
    상기 사고와 연관된 제1 센서 데이터 컬렉션을 식별하고 - 상기 제1 센서 데이터 컬렉션은 상기 하나 이상의 센서에 의해 캡처되는 상기 센서 데이터로부터 식별됨 -;
    상기 사고와 연관된 상기 제1 센서 데이터 컬렉션을, 상기 메모리 상에, 보존하며;
    상기 사고를 하나 이상의 제2 디바이스에 통지하고, 상기 하나 이상의 제2 디바이스는 상기 제1 디바이스 근처에 위치되는, 장치.
  5. 장치로서,
    네트워크를 통해 복수의 디바이스들과 통신하는 통신 인터페이스; 및
    프로세서
    를 포함하고, 상기 프로세서는:
    상기 복수의 디바이스들 중 제1 디바이스로부터 압축된 데이터를 수신하고 - 상기 압축된 데이터는 하나 이상의 센서에 의해 캡처되는 비주얼 데이터와 연관됨 -;
    현재 컨볼루션 신경 네트워크(convolutional neural network)(CNN)를 사용하여 상기 압축된 데이터에 대해 현재 프로세싱 스테이지를 수행하며 - 상기 현재 프로세싱 스테이지는 상기 비주얼 데이터와 연관된 복수의 프로세싱 스테이지들 중 하나에 대응하고, 상기 현재 CNN은 상기 복수의 프로세싱 스테이지들과 연관된 복수의 컨볼루션 신경 네트워크(CNN)들 중 하나에 대응함 -;
    상기 현재 프로세싱 스테이지와 연관된 출력을 획득하고 - 상기 출력은 상기 현재 CNN으로부터 획득됨 -;
    상기 현재 프로세싱 스테이지와 연관된 상기 출력에 기초하여, 상기 비주얼 데이터와 연관된 프로세싱이 완료되었는지를 결정하며;
    상기 비주얼 데이터와 연관된 상기 프로세싱이 완료되었다는 결정 시에, 상기 비주얼 데이터와 연관된 결과를 출력하는, 장치.
  6. 장치로서,
    하나 이상의 센서에 의해 캡처되는 비주얼 표현과 연관된 비주얼 데이터를 저장하는 메모리; 및
    프로세서
    를 포함하고, 상기 프로세서는:
    상기 하나 이상의 센서에 의해 캡처되는 상기 비주얼 표현과 연관된 상기 비주얼 데이터를 획득하고 - 상기 비주얼 데이터는 압축되지 않은 비주얼 데이터 또는 압축된 비주얼 데이터를 포함함 -;
    컨볼루션 신경 네트워크(CNN)를 사용하여 상기 비주얼 데이터를 프로세싱하며 - 상기 CNN은 복수의 계층들을 포함하고, 상기 복수의 계층들은 복수의 필터들을 포함하며, 상기 복수의 필터들은:
    압축되지 않은 데이터와 연관된 프로세싱을 수행하는 하나 이상의 픽셀 도메인 필터; 및
    압축된 데이터와 연관된 프로세싱을 수행하는 하나 이상의 압축 도메인 필터를 포함함 -;
    상기 CNN의 출력에 기초하여 상기 비주얼 데이터를 분류하는, 장치.
  7. 장치로서,
    복수의 압축된 이미지들을 저장하는 저장 디바이스 - 상기 복수의 압축된 이미지들은 하나 이상의 압축된 마스터 이미지 및 하나 이상의 압축된 슬레이브 이미지를 포함하며, 상기 하나 이상의 압축된 슬레이브 이미지는 상기 하나 이상의 압축된 마스터 이미지를 참조하여 압축됨 -; 및
    프로세서
    를 포함하고, 상기 프로세서는:
    압축되지 않은 이미지를 식별하고;
    복수의 이미지들과 연관된 컨텍스트 정보에 액세스하며 - 상기 복수의 이미지들은 상기 압축되지 않은 이미지 및 상기 하나 이상의 압축된 마스터 이미지를 포함함 -;
    상기 컨텍스트 정보에 적어도 부분적으로 기초하여, 상기 압축되지 않은 이미지가 상기 하나 이상의 압축된 마스터 이미지로부터의 대응하는 마스터 이미지와 연관되는지를 결정하고;
    상기 압축되지 않은 이미지가 상기 대응하는 마스터 이미지와 연관되어 있다는 결정 시에, 상기 대응하는 마스터 이미지를 참조하여 상기 압축되지 않은 이미지를 대응하는 압축된 이미지로 압축하며;
    상기 압축되지 않은 이미지가 상기 대응하는 마스터 이미지와 연관되어 있지 않다는 결정 시에, 상기 하나 이상의 압축된 마스터 이미지를 참조하지 않고 상기 압축되지 않은 이미지를 상기 대응하는 압축된 이미지로 압축하고;
    상기 대응하는 압축된 이미지를 상기 저장 디바이스 상에 저장하는, 장치.
  8. 장치로서,
    하나 이상의 디바이스와 통신하는 통신 인터페이스;
    디바이스 아이덴티티 블록체인을 저장하는 메모리; 및
    프로세서
    를 포함하고, 상기 프로세서는:
    제1 디바이스로부터 디바이스 아이덴티티 트랜잭션을 수신하고 - 상기 디바이스 아이덴티티 트랜잭션은 디바이스 아이덴티티를 포함함 -;
    상기 디바이스 아이덴티티의 해시를 계산하며;
    상기 해시에 기초하여, 상기 디바이스 아이덴티티가 상기 디바이스 아이덴티티 블록체인에 등록되어 있는지를 결정하고;
    상기 디바이스 아이덴티티가 상기 디바이스 아이덴티티 블록체인에 등록되어 있지 않다는 결정 시에, 상기 디바이스 아이덴티티 트랜잭션을 상기 디바이스 아이덴티티 블록체인에 추가하는, 장치.
KR1020207015274A 2017-12-28 2018-06-29 비주얼 포그 KR102656864B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762611536P 2017-12-28 2017-12-28
US62/611,536 2017-12-28
US201862691464P 2018-06-28 2018-06-28
US62/691,464 2018-06-28
PCT/US2018/040390 WO2019133052A1 (en) 2017-12-28 2018-06-29 Visual fog

Publications (2)

Publication Number Publication Date
KR20200094747A true KR20200094747A (ko) 2020-08-07
KR102656864B1 KR102656864B1 (ko) 2024-04-17

Family

ID=65230711

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207015274A KR102656864B1 (ko) 2017-12-28 2018-06-29 비주얼 포그

Country Status (5)

Country Link
US (13) US20200250003A1 (ko)
KR (1) KR102656864B1 (ko)
CN (1) CN112384947A (ko)
DE (1) DE112018006630T5 (ko)
WO (1) WO2019133052A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220077595A (ko) * 2020-12-02 2022-06-09 이화여자대학교 산학협력단 도시 컴퓨팅에서 엣지와 클라우드 간의 계층적 블록 체인 시스템 및 이 시스템을 생성하는 방법
KR20220080789A (ko) * 2020-12-07 2022-06-15 주식회사 네스텐네트웍스 다계층 블록 체인을 이용한 분산 네트워크
KR102505331B1 (ko) * 2022-03-10 2023-02-28 윤단호 It 시스템 구축 서비스 제공 장치, 방법 및 프로그램

Families Citing this family (299)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11669562B2 (en) * 2013-10-10 2023-06-06 Aura Home, Inc. Method of clustering photos for digital picture frames with split screen display
US10147984B2 (en) 2015-07-31 2018-12-04 SynCells, Inc. Portable and modular energy storage for multiple applications
US10303887B2 (en) * 2015-09-14 2019-05-28 T0.Com, Inc. Data verification methods and systems using a hash tree, such as a time-centric merkle hash tree
CA3040856C (en) 2015-10-21 2024-01-02 15 Seconds of Fame, Inc. Methods and apparatus for false positive minimization in facial recognition applications
WO2017177367A1 (en) * 2016-04-11 2017-10-19 Xiaogang Wang Method and system for object tracking
EP3340624B1 (en) * 2016-12-20 2019-07-03 Axis AB Encoding a privacy masked image
WO2018170401A1 (en) * 2017-03-16 2018-09-20 Siemens Aktiengesellschaft Visual localization in images using weakly supervised neural network
US11481740B1 (en) * 2017-04-25 2022-10-25 EMC IP Holding Company LLC Distributed ledger for peer-to-peer cloud data asset valuation
US11394573B2 (en) 2017-06-13 2022-07-19 SynCells, Inc. Energy virtualization layer with a universal smart gateway
US11125461B2 (en) 2017-06-13 2021-09-21 Gerard O'Hora Smart vent system with local and central control
US11271766B2 (en) * 2017-06-13 2022-03-08 SynCells, Inc. Energy virtualization layer with a universal smart gateway
US10937083B2 (en) 2017-07-03 2021-03-02 Medici Ventures, Inc. Decentralized trading system for fair ordering and matching of trades received at multiple network nodes and matched by multiple network nodes within decentralized trading system
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US10742750B2 (en) * 2017-07-20 2020-08-11 Cisco Technology, Inc. Managing a distributed network of function execution environments
US10880040B1 (en) 2017-10-23 2020-12-29 EMC IP Holding Company LLC Scale-out distributed erasure coding
US10592767B2 (en) * 2017-10-27 2020-03-17 Salesforce.Com, Inc. Interpretable counting in visual question answering
US20190180300A1 (en) * 2017-12-07 2019-06-13 Fifth Third Bancorp Geospatial market analytics
US10540574B2 (en) * 2017-12-07 2020-01-21 Shanghai Cambricon Information Technology Co., Ltd Image compression method and related device
CN108062562B (zh) * 2017-12-12 2020-03-10 北京图森未来科技有限公司 一种物体重识别方法及装置
US10630769B2 (en) * 2017-12-26 2020-04-21 Akamai Technologies, Inc. Distributed system of record transaction receipt handling in an overlay network
EP3719712B1 (en) * 2017-12-27 2022-09-07 Cambricon Technologies Corporation Limited Integrated circuit chip device
US11349753B2 (en) * 2017-12-28 2022-05-31 Intel Corporation Converged routing for distributed computing systems
US10607484B2 (en) * 2017-12-28 2020-03-31 Intel Corporation Privacy-preserving distributed visual data processing
US20200250003A1 (en) 2017-12-28 2020-08-06 Intel Corporation Visual fog
US10382554B1 (en) 2018-01-04 2019-08-13 Emc Corporation Handling deletes with distributed erasure coding
CN110084068B (zh) 2018-01-26 2023-09-29 阿里巴巴集团控股有限公司 区块链***及用于区块链***的数据处理方法
US10721070B2 (en) * 2018-03-07 2020-07-21 Private Identity Llc Systems and methods for privacy-enabled biometric processing
US11308222B2 (en) * 2018-03-22 2022-04-19 Via Science, Inc. Neural-network training using secure data processing
US10650616B2 (en) * 2018-04-06 2020-05-12 University Of Connecticut Fault diagnosis using distributed PCA architecture
US10771488B2 (en) * 2018-04-10 2020-09-08 Cisco Technology, Inc. Spatio-temporal anomaly detection in computer networks using graph convolutional recurrent neural networks (GCRNNs)
EP3553748A1 (en) * 2018-04-10 2019-10-16 InterDigital VC Holdings, Inc. Deep learning based image partitioning for video compression
US10579297B2 (en) 2018-04-27 2020-03-03 EMC IP Holding Company LLC Scaling-in for geographically diverse storage
US10825479B2 (en) * 2018-05-11 2020-11-03 Axon Enterprise, Inc. Systems and methods for cross-redaction
US11157524B2 (en) * 2018-05-18 2021-10-26 At&T Intellectual Property I, L.P. Automated learning of anomalies in media streams with external feed labels
US10560261B1 (en) * 2018-05-24 2020-02-11 DeepTruth, LLC Systems and techniques for capture of trusted media data
US10938568B2 (en) * 2018-06-05 2021-03-02 Eight Plus Ventures, LLC Image inventory production
US10606888B2 (en) 2018-06-05 2020-03-31 Eight Plus Ventures, LLC Image inventory production
US11868321B2 (en) * 2018-06-12 2024-01-09 Salesforce, Inc. Cryptographically secure multi-tenant data exchange platform
US11023130B2 (en) 2018-06-15 2021-06-01 EMC IP Holding Company LLC Deleting data in a geographically diverse storage construct
US10936920B2 (en) * 2018-06-17 2021-03-02 Uber Technologies, Inc. Determining geographical map features with multi-sensor input
EP3585008A1 (en) * 2018-06-20 2019-12-25 Siemens Aktiengesellschaft Cloud gateway device and method for operating a cloud gateway device
CN110633725B (zh) * 2018-06-25 2023-08-04 富士通株式会社 训练分类模型的方法和装置以及分类方法和装置
CN109117950B (zh) * 2018-08-01 2021-03-09 上海天数智芯半导体有限公司 基于人工智能设备的分层稀疏张量压缩方法
US10694032B2 (en) * 2018-08-05 2020-06-23 Michael Francis Byrne Systems and methods for blockchain wireless services in a controlled environment
US11218907B2 (en) * 2018-08-08 2022-01-04 Intel Corporation Publisher control in an information centric network
DE102018213554A1 (de) * 2018-08-10 2020-02-13 Audi Ag Verfahren und Anzeigeeinrichtung zur Visualisierung einer Anordnung sowie Wirkungsweise von Umfeldsensoren eines Kraftfahrzeugs
CN109241016B (zh) 2018-08-14 2020-07-07 阿里巴巴集团控股有限公司 多方安全计算方法及装置、电子设备
CN109255247B (zh) 2018-08-14 2020-08-14 阿里巴巴集团控股有限公司 多方安全计算方法及装置、电子设备
CN109359470B (zh) 2018-08-14 2020-09-01 阿里巴巴集团控股有限公司 多方安全计算方法及装置、电子设备
US10479356B1 (en) 2018-08-17 2019-11-19 Lyft, Inc. Road segment similarity determination
US11055854B2 (en) * 2018-08-23 2021-07-06 Seoul National University R&Db Foundation Method and system for real-time target tracking based on deep learning
US10467391B1 (en) 2018-08-23 2019-11-05 Eight Plus Ventures, LLC Manufacture of secure printed image inventories
WO2020044202A1 (en) * 2018-08-28 2020-03-05 Alavi Sohail Systems and method for mapping and referencing physical geographic addresses to a dynamically linked identifier
US10936856B2 (en) * 2018-08-31 2021-03-02 15 Seconds of Fame, Inc. Methods and apparatus for reducing false positives in facial recognition
US11809409B2 (en) 2018-09-19 2023-11-07 Salesforce, Inc. Multi-tenant distributed ledger interfaces
US11157484B2 (en) 2018-09-19 2021-10-26 Salesforce.Com, Inc. Advanced smart contract with decentralized ledger in a multi-tenant environment
US10639509B2 (en) 2018-09-22 2020-05-05 Fedex Corporate Services, Inc. Methods and systems for unresponsive ID node monitoring for an environmental anomaly
US11403517B2 (en) * 2018-09-27 2022-08-02 Intel Corporation Proximity-based distributed sensor processing
US11308133B2 (en) * 2018-09-28 2022-04-19 International Business Machines Corporation Entity matching using visual information
US11232207B2 (en) * 2018-10-01 2022-01-25 Textron Innovations Inc. Decentralized trust assessment
US11544630B2 (en) * 2018-10-15 2023-01-03 Oracle International Corporation Automatic feature subset selection using feature ranking and scalable automatic search
FR3087565B1 (fr) * 2018-10-18 2021-10-08 Thales Sa Analyse rapide d'images
US11061902B2 (en) 2018-10-18 2021-07-13 Oracle International Corporation Automated configuration parameter tuning for database performance
US11494757B2 (en) 2018-10-24 2022-11-08 Capital One Services, Llc Remote commands using network of trust
US11842331B2 (en) * 2018-10-24 2023-12-12 Capital One Services, Llc Network of trust for bill splitting
US11038891B2 (en) * 2018-10-29 2021-06-15 EMC IP Holding Company LLC Decentralized identity management system
CN111131345B (zh) * 2018-10-30 2022-04-15 伊姆西Ip控股有限责任公司 多云计算环境中的分散式节点查找器
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
EP3648013A1 (en) * 2018-11-02 2020-05-06 Tata Consultancy Services Limited Method and system for partitioning of deep convolution network for executing on computationally constraint devices
US10901635B2 (en) 2018-12-04 2021-01-26 EMC IP Holding Company LLC Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns
US11363017B2 (en) * 2018-12-07 2022-06-14 Verizon Patent And Licensing Inc. Smart home network security through blockchain
US11042611B2 (en) * 2018-12-10 2021-06-22 XNOR.ai, Inc. Digital watermarking of machine-learning models
US12019716B2 (en) * 2018-12-11 2024-06-25 Avago Technologies International Sales Pte. Limited Multimedia content recognition with local and cloud-assisted machine learning
US11523125B2 (en) * 2018-12-14 2022-12-06 Special Services Group, LLC Drone video compressor for remote video viewing
US10931777B2 (en) * 2018-12-20 2021-02-23 EMC IP Holding Company LLC Network efficient geographically diverse data storage system employing degraded chunks
US11119683B2 (en) 2018-12-20 2021-09-14 EMC IP Holding Company LLC Logical compaction of a degraded chunk in a geographically diverse data storage system
US10892782B2 (en) 2018-12-21 2021-01-12 EMC IP Holding Company LLC Flexible system and method for combining erasure-coded protection sets
US11294367B2 (en) * 2018-12-21 2022-04-05 Canvass Analytics Inc. Predictive analysis of industrial processes
US11023331B2 (en) 2019-01-04 2021-06-01 EMC IP Holding Company LLC Fast recovery of data in a geographically distributed storage environment
US11392709B2 (en) * 2019-01-08 2022-07-19 Intel Corporation Automatically enhancing privacy in live video streaming
WO2020146036A1 (en) * 2019-01-13 2020-07-16 Strong Force Iot Portfolio 2016, Llc Methods, systems, kits and apparatuses for monitoring and managing industrial settings
US11347788B2 (en) * 2019-01-16 2022-05-31 Toyota Research Institute, Inc. Systems and methods for generating a requested image view
US11322010B1 (en) * 2019-01-17 2022-05-03 Alarm.Com Incorporated Swimming pool monitoring
US10942827B2 (en) 2019-01-22 2021-03-09 EMC IP Holding Company LLC Replication of data in a geographically distributed storage environment
US11316600B2 (en) * 2019-01-23 2022-04-26 Cable Television Laboratories, Inc. Identifying and classifying disruptions at terminal devices in data transfer networks
US11470176B2 (en) * 2019-01-29 2022-10-11 Cisco Technology, Inc. Efficient and flexible load-balancing for clusters of caches under latency constraint
US10866766B2 (en) 2019-01-29 2020-12-15 EMC IP Holding Company LLC Affinity sensitive data convolution for data storage systems
US10942825B2 (en) 2019-01-29 2021-03-09 EMC IP Holding Company LLC Mitigating real node failure in a mapped redundant array of independent nodes
US10936239B2 (en) 2019-01-29 2021-03-02 EMC IP Holding Company LLC Cluster contraction of a mapped redundant array of independent nodes
US10408939B1 (en) * 2019-01-31 2019-09-10 StradVision, Inc. Learning method and learning device for integrating image acquired by camera and point-cloud map acquired by radar or LiDAR corresponding to image at each of convolution stages in neural network and testing method and testing device using the same
KR102114136B1 (ko) * 2019-02-11 2020-05-22 이노뎁 주식회사 모션벡터 블록체인을 이용한 압축영상의 객체 시퀀스 관리 방법
US11869065B1 (en) * 2019-02-11 2024-01-09 Amazon Technologies, Inc. System and method for vision-based event detection
US10733374B1 (en) * 2019-02-14 2020-08-04 Gideon Samid Live documentation (LiDo)
US11386655B2 (en) * 2019-02-15 2022-07-12 Rutgers, The State University Of New Jersey Image processing neural network systems and methods with scene understanding
WO2020172366A1 (en) * 2019-02-21 2020-08-27 Canon U.S.A., Inc. Method and system for image searching and evaluation using tags
US11475169B2 (en) * 2019-03-04 2022-10-18 Hewlett Packard Enterprise Development Lp Security and anomaly detection for Internet-of-Things devices
US10986184B1 (en) * 2019-03-05 2021-04-20 Edjx, Inc. Systems and methods for it management of distributed computing resources on a peer-to-peer network
DK3705969T3 (da) * 2019-03-06 2021-09-13 Hiab Ab Køretøjstilbehørsanordning
US11010596B2 (en) 2019-03-07 2021-05-18 15 Seconds of Fame, Inc. Apparatus and methods for facial recognition systems to identify proximity-based connections
CN110113140B (zh) * 2019-03-08 2020-08-11 北京邮电大学 一种雾计算无线网络中的计算卸载方法
US11893791B2 (en) 2019-03-11 2024-02-06 Microsoft Technology Licensing, Llc Pre-processing image frames based on camera statistics
US11514587B2 (en) * 2019-03-13 2022-11-29 Microsoft Technology Licensing, Llc Selectively identifying data based on motion data from a digital video to provide as input to an image processing model
US10990840B2 (en) 2019-03-15 2021-04-27 Scenera, Inc. Configuring data pipelines with image understanding
US11457231B2 (en) * 2019-03-15 2022-09-27 Mediatek Singapore Pte. Ltd. Methods and apparatus for signaling spatial relationships for point cloud multimedia data tracks
JP7283155B2 (ja) * 2019-03-19 2023-05-30 富士フイルムビジネスイノベーション株式会社 データ収集システム及びデータ収集方法
US11245926B2 (en) 2019-03-19 2022-02-08 Mediatek Singapore Pte. Ltd. Methods and apparatus for track derivation for immersive media data tracks
CN111723795B (zh) * 2019-03-21 2023-02-03 杭州海康威视数字技术股份有限公司 异常车牌识别方法、装置、电子设备及存储介质
CN109981772A (zh) * 2019-03-22 2019-07-05 西安电子科技大学 一种基于区块链的多域数据共享交换平台架构
US10931739B2 (en) * 2019-03-28 2021-02-23 Wipro Limited Method and system for generating strategy and roadmap for end-to-end information technology infrastructure cloud implementation
US10771807B1 (en) * 2019-03-28 2020-09-08 Wipro Limited System and method for compressing video using deep learning
US11029865B2 (en) 2019-04-03 2021-06-08 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes
US10944826B2 (en) 2019-04-03 2021-03-09 EMC IP Holding Company LLC Selective instantiation of a storage service for a mapped redundant array of independent nodes
US11138042B2 (en) * 2019-04-05 2021-10-05 Grass Valley Canada System and method of identifying equivalents for task completion
US11031009B2 (en) * 2019-04-10 2021-06-08 Hitachi, Ltd. Method for creating a knowledge base of components and their problems from short text utterances
JP7309429B2 (ja) * 2019-04-16 2023-07-18 キヤノンメディカルシステムズ株式会社 医用情報処理システム、および医用情報処理装置
US10931784B2 (en) * 2019-04-22 2021-02-23 Microsoft Technology Licensing, Llc Flexible triggering of triggered code
US11829996B1 (en) * 2019-04-25 2023-11-28 Phunware, Inc. Hybrid organizational system for data management and tracking
US11150978B2 (en) 2019-04-26 2021-10-19 Bank Of America Corporation Automated system for intelligent error correction within an electronic blockchain ledger
US11113146B2 (en) 2019-04-30 2021-09-07 EMC IP Holding Company LLC Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system
US11121727B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Adaptive data storing for data storage systems employing erasure coding
US11119686B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Preservation of data during scaling of a geographically diverse data storage system
US11184236B2 (en) 2019-04-30 2021-11-23 Intel Corporation Methods and apparatus to control processing of telemetry data at an edge platform
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
US11410474B2 (en) * 2019-05-06 2022-08-09 Verizon Patent And Licensing Inc. Vehicle inspection using augmented reality (AR)
CN110146642B (zh) * 2019-05-14 2022-03-25 上海大学 一种气味分析方法及装置
WO2020237089A1 (en) 2019-05-21 2020-11-26 Magic Leap, Inc. Caching and updating of dense 3d reconstruction data
WO2020236742A1 (en) * 2019-05-23 2020-11-26 Eight Plus Ventures, LLC Image inventory production
US11388238B2 (en) * 2019-06-03 2022-07-12 Bestie Bot Inc. Localized situational intelligent awareness from multiple sensor types through a 4-dimensional state system
US11310033B2 (en) * 2019-06-05 2022-04-19 Blackberry Limited System and method for operating pseudorandom generators
US11928557B2 (en) 2019-06-13 2024-03-12 Lyft, Inc. Systems and methods for routing vehicles to capture and evaluate targeted scenarios
US20200394458A1 (en) * 2019-06-17 2020-12-17 Nvidia Corporation Weakly-supervised object detection using one or more neural networks
US10999075B2 (en) * 2019-06-17 2021-05-04 Advanced New Technologies Co., Ltd. Blockchain-based patrol inspection proof storage method, apparatus, and electronic device
CN110210456A (zh) * 2019-06-19 2019-09-06 贵州理工学院 一种基于3d卷积神经网络的头部姿态估计方法
US11238659B2 (en) 2019-06-26 2022-02-01 Magic Leap, Inc. Caching and updating of dense 3D reconstruction data
US11157007B2 (en) * 2019-06-28 2021-10-26 Lyft, Inc. Approaches for encoding environmental information
US11449475B2 (en) 2019-06-28 2022-09-20 Lyft, Inc. Approaches for encoding environmental information
US11646886B2 (en) 2019-06-28 2023-05-09 Intel Corporation Data offload and time synchronization for ubiquitous visual computing witness
CN110298403B (zh) * 2019-07-02 2023-12-12 北京金融大数据有限公司 一种财经新闻中企业主体的情感分析方法和***
DE102019210227A1 (de) * 2019-07-10 2021-01-14 Robert Bosch Gmbh Vorrichtung und Verfahren zur Anomalieerkennung in einem Kommunikationsnetzwerk
US11068773B2 (en) * 2019-07-11 2021-07-20 Capital One Services, Llc Memory management in memory augmented deep neural networks
US11372683B2 (en) 2019-07-12 2022-06-28 Vmware, Inc. Placement of virtual GPU requests in virtual GPU enabled systems using a requested memory requirement of the virtual GPU request
US11263054B2 (en) * 2019-07-12 2022-03-01 Vmware, Inc. Memory-aware placement for virtual GPU enabled systems
US11209996B2 (en) 2019-07-15 2021-12-28 EMC IP Holding Company LLC Mapped cluster stretching for increasing workload in a data storage system
CN112287733A (zh) * 2019-07-22 2021-01-29 海巴智能科技(上海)有限公司 一种基于边缘计算的目标分布式融合识别方法
CN110415166B (zh) * 2019-07-29 2023-01-06 腾讯科技(深圳)有限公司 融合图像处理模型的训练方法、图像处理方法、装置及存储介质
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US11010929B2 (en) * 2019-07-30 2021-05-18 Hewlett Packard Enterprise Development Lp Image compression with bounded deep neural network perception loss
US11023145B2 (en) 2019-07-30 2021-06-01 EMC IP Holding Company LLC Hybrid mapped clusters for data storage
CN110471988B (zh) * 2019-08-09 2023-05-02 南京智骋致想电子科技有限公司 一种基于模块化的三段五层式人工智能***
US11443049B2 (en) * 2019-08-12 2022-09-13 Verizon Patent And Licensing Inc. Systems and methods for securely handling private data in a cloud environment
US11354437B2 (en) * 2019-08-12 2022-06-07 Verizon Patent And Licensing Inc. System and methods for providing data analytics for secure cloud compute data
CN112182831B (zh) * 2019-08-16 2021-08-17 北京天德科技有限公司 智能投顾产业测试和评估沙盒
US11740600B2 (en) * 2019-08-30 2023-08-29 Vrx Ventures Ltd. Computerized method, processing structure and server for controlling a target-motion device based on source-motion object
US11386400B2 (en) * 2019-09-03 2022-07-12 Citrix Systems, Inc. Unified event/task creation from auto generated enterprise communication channels and notifications
US11027196B2 (en) * 2019-09-04 2021-06-08 Take-Two Interactive Software, Inc. System and method for managing transactions in a multiplayer network gaming environment
US11360822B2 (en) * 2019-09-12 2022-06-14 Bank Of America Corporation Intelligent resource allocation agent for cluster computing
US11228322B2 (en) 2019-09-13 2022-01-18 EMC IP Holding Company LLC Rebalancing in a geographically diverse storage system employing erasure coding
US10565358B1 (en) 2019-09-16 2020-02-18 Eight Plus Ventures, LLC Image chain of title management
KR102310187B1 (ko) * 2019-09-25 2021-10-08 한국전자기술연구원 복수의 엣지와 클라우드를 포함하는 분산 컴퓨팅 시스템 및 이의 적응적 지능 활용을 위한 분석 모델 제공 방법
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
CN110738309B (zh) * 2019-09-27 2022-07-12 华中科技大学 Ddnn的训练方法和基于ddnn的多视角目标识别方法和***
US11788846B2 (en) 2019-09-30 2023-10-17 Lyft, Inc. Mapping and determining scenarios for geographic regions
EP3800912B1 (en) * 2019-10-03 2023-07-19 Accenture Global Solutions Limited Privacy-secure edge-zone computing for secure-operation authorization
CN110765900B (zh) * 2019-10-10 2023-09-05 安徽磐众信息科技有限公司 一种基于dssd的自动检测违章建筑方法及***
CN110704601A (zh) * 2019-10-11 2020-01-17 浙江大学 利用问题-知识引导的渐进式时空注意力网络解决需要常识的视频问答任务的方法
CN110909598B (zh) * 2019-10-16 2024-02-02 合肥湛达智能科技有限公司 一种基于深度学习的非机动车道交通违法行驶识别方法
CN111008639B (zh) * 2019-10-17 2024-02-27 安徽清新互联信息科技有限公司 一种基于注意力机制的车牌字符识别方法
US11816900B2 (en) 2019-10-23 2023-11-14 Lyft, Inc. Approaches for encoding environmental information
US11983186B2 (en) * 2019-10-23 2024-05-14 Honeywell International Inc. Predicting potential incident event data structures based on multi-modal analysis
CN114503550A (zh) * 2019-10-30 2022-05-13 索尼集团公司 信息处理***、信息处理方法、图像拍摄装置和信息处理装置
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11119690B2 (en) 2019-10-31 2021-09-14 EMC IP Holding Company LLC Consolidation of protection sets in a geographically diverse data storage environment
TWI779245B (zh) * 2019-10-31 2022-10-01 安碁資訊股份有限公司 異常流量偵測方法與異常流量偵測裝置
US11288139B2 (en) 2019-10-31 2022-03-29 EMC IP Holding Company LLC Two-step recovery employing erasure coding in a geographically diverse data storage system
US11587122B2 (en) * 2019-11-26 2023-02-21 Beijing Jingdong Shangke Information Technology Co., Ltd. System and method for interactive perception and content presentation
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
CN110944201A (zh) * 2019-12-02 2020-03-31 深圳云朵数据技术有限公司 一种视频去重压缩的方法、装置、服务器及存储介质
TWI772721B (zh) * 2019-12-06 2022-08-01 中華電信股份有限公司 運用區塊鏈管理網路設備之系統及方法
US11436611B2 (en) 2019-12-12 2022-09-06 At&T Intellectual Property I, L.P. Property archivist enabled customer service
US11727284B2 (en) * 2019-12-12 2023-08-15 Business Objects Software Ltd Interpretation of machine learning results using feature analysis
EP4073988A1 (en) * 2019-12-13 2022-10-19 Liveperson, Inc. Function-as-a-service cloud chatbot for two-way communication systems
US11579913B2 (en) * 2019-12-18 2023-02-14 Vmware, Inc. System and method for optimizing network topology in a virtual computing environment
CN111127146B (zh) * 2019-12-19 2023-05-26 江西财经大学 基于卷积神经网络与降噪自编码器的信息推荐方法及***
US11144220B2 (en) 2019-12-24 2021-10-12 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes
CN111126589B (zh) * 2019-12-31 2022-05-20 昆仑芯(北京)科技有限公司 神经网络数据处理装置、方法和电子设备
US11403782B2 (en) * 2019-12-31 2022-08-02 Alibaba Group Holding Limited Static channel filtering in frequency domain
US11341351B2 (en) 2020-01-03 2022-05-24 15 Seconds of Fame, Inc. Methods and apparatus for facial recognition on a user device
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
US11163539B2 (en) * 2020-01-07 2021-11-02 International Business Machines Corporation Virtual detection and technical issue modification
CN111245837B (zh) * 2020-01-13 2021-08-10 电子科技大学 一种基于区块链的车联网数据共享细粒度访问控制方法
US11231860B2 (en) 2020-01-17 2022-01-25 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage with high performance
US11379594B2 (en) * 2020-01-20 2022-07-05 International Business Machines Corporation Media obfuscation
US11082731B1 (en) * 2020-01-22 2021-08-03 Microsoft Technology Licensing, Llc Privacy-preserving video analytics
US11676161B2 (en) * 2020-02-25 2023-06-13 Nec Corporation Combined light and heavy models for image filtering
CN111401161A (zh) * 2020-03-04 2020-07-10 青岛海信网络科技股份有限公司 基于智能视频分析算法实现行为识别的智慧建筑管控***
US11190594B2 (en) * 2020-03-24 2021-11-30 Kiomars Anvari Frame structure used by an IoT device of an object navigation and protection system (NPS)
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
SG11202102364YA (en) * 2020-04-02 2021-04-29 Alipay Hangzhou Inf Tech Co Ltd Determining action selection policies of an execution device
CN111488476B (zh) * 2020-04-03 2023-06-27 北京爱芯科技有限公司 图像推送方法、模型训练方法及对应装置
US11636339B2 (en) * 2020-04-03 2023-04-25 Micron Technology, Inc. In-memory content classification and control
CN113595957B (zh) * 2020-04-30 2022-11-08 华为技术有限公司 一种网络防御方法及安全检测设备
CN113590770B (zh) * 2020-04-30 2024-03-08 北京京东乾石科技有限公司 一种基于点云数据的应答方法、装置、设备及存储介质
JP7425479B2 (ja) * 2020-05-01 2024-01-31 Awl株式会社 サイネージ制御システム、及びサイネージ制御プログラム
US11288229B2 (en) 2020-05-29 2022-03-29 EMC IP Holding Company LLC Verifiable intra-cluster migration for a chunk storage system
US11579942B2 (en) * 2020-06-02 2023-02-14 Vmware, Inc. VGPU scheduling policy-aware migration
US20230224526A1 (en) * 2020-06-08 2023-07-13 Myelin Foundry Private Limited Processing of multimedia content on an edge device
EP4162695A4 (en) * 2020-06-09 2023-08-02 Telefonaktiebolaget LM ERICSSON (PUBL) PROVISION OF SEMANTIC INFORMATION WITH ENCODED IMAGE DATA
US11503432B2 (en) 2020-06-15 2022-11-15 Snap Inc. Scalable real-time location sharing framework
US11483267B2 (en) 2020-06-15 2022-10-25 Snap Inc. Location sharing using different rate-limited links
US11290851B2 (en) * 2020-06-15 2022-03-29 Snap Inc. Location sharing using offline and online objects
TWI769466B (zh) * 2020-06-17 2022-07-01 台達電子工業股份有限公司 類神經網路系統及其操作方法
CN111746728B (zh) * 2020-06-17 2022-06-24 重庆大学 一种基于强化学习的新型水上清洁机器人及控制方法
US11611355B2 (en) 2020-06-22 2023-03-21 Tencent America LLC Techniques for parameter set and header design for compressed neural network representation
CN111538996B (zh) * 2020-07-08 2021-06-29 支付宝(杭州)信息技术有限公司 区块链一体机的可信启动方法及装置
EP4180954A4 (en) * 2020-07-10 2023-08-23 Panasonic Intellectual Property Management Co., Ltd. INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING METHOD, AND PROGRAM
US11190579B1 (en) 2020-07-17 2021-11-30 Cisco Technology, Inc. Edge to multi-cloud data processing and governance
US11516199B2 (en) 2020-07-17 2022-11-29 Cisco Technology, Inc. Zero trust for edge devices
US11363094B2 (en) * 2020-07-20 2022-06-14 International Business Machines Corporation Efficient data processing in a mesh network of computing devices
US20220027506A1 (en) * 2020-07-24 2022-01-27 Privacy4Cars, Llc Methods and Systems to Reduce Privacy Invasion
US20200377057A1 (en) * 2020-08-14 2020-12-03 Intel Corporation One-Point Relative Voltage Fingerprinting
CN111970555A (zh) * 2020-08-18 2020-11-20 深圳康佳电子科技有限公司 一种基于图像识别的智能电视实时游戏辅助方法及***
US11006077B1 (en) 2020-08-20 2021-05-11 Capital One Services, Llc Systems and methods for dynamically concealing sensitive information
CN112051383B (zh) * 2020-08-27 2022-09-06 上海交通大学 一种地下水水位波动带污染物迁移转化模拟实验装置
US11638131B2 (en) * 2020-08-27 2023-04-25 Toyota Motor Engineering & Manufacturing North America, Inc. Dynamic adjustment of vehicular micro cloud properties
SE545771C2 (en) * 2020-08-28 2024-01-09 Stream Analyze Sweden Ab Method and system for data processing
CN112184840B (zh) 2020-09-22 2022-09-02 上海交通大学 基于多尺度结构化字典学习的3d点云压缩***
CN112153344B (zh) * 2020-09-25 2021-10-15 智洋创新科技股份有限公司 基于嵌入式gpu平台和深度学习的配电房设备状态在线智能监控***及方法
CN112162752B (zh) * 2020-09-25 2021-05-18 成都华数工创科技有限公司 基于互联网水处理设计方法、装置、设备及储存介质
CN112148451B (zh) * 2020-09-27 2023-12-29 南京大学 一种低时延的协同自适应cnn推断***及方法
US20220101354A1 (en) * 2020-09-28 2022-03-31 Sensormatic Electronics, LLC Shopper influencer system and method
US11606694B2 (en) 2020-10-08 2023-03-14 Surendra Goel System that provides cybersecurity in a home or office by interacting with internet of things devices and other devices
CN112150152B (zh) * 2020-10-09 2023-08-08 浙江专线宝网阔物联科技有限公司 基于区块链与模糊认知映射融合的b-f神经网络可追溯算法
CN112433907B (zh) * 2020-10-26 2022-09-16 深圳有电物联科技有限公司 不间断电源的主机运行参量数据的处理方法、装置和电子装置
JP7481995B2 (ja) * 2020-10-28 2024-05-13 株式会社東芝 状態判定装置、方法およびプログラム
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
CN112577744B (zh) * 2020-11-02 2021-12-03 西南交通大学 基于SPA-图谱与ResNet相结合的滚动轴承故障识别方法
CN112073542B (zh) * 2020-11-12 2021-02-05 腾讯科技(深圳)有限公司 雾节点调度方法、装置、计算机设备和存储介质
CN112329925B (zh) * 2020-11-26 2023-12-15 北京奇艺世纪科技有限公司 模型生成方法、特征提取方法、装置及电子设备
US11855991B1 (en) * 2020-12-02 2023-12-26 Vivint, Inc. Management of a smart home automation community
US11509719B2 (en) 2020-12-03 2022-11-22 Seagate Technology Llc Blockchain technology in data storage system
EP4017003A1 (en) * 2020-12-17 2022-06-22 Palantir Technologies Inc. Approaches for lossy compression using machine learning
CN112559844B (zh) * 2020-12-17 2021-08-31 北京邮电大学 自然灾害舆情分析方法和装置
US11748251B2 (en) * 2021-01-08 2023-09-05 Microsoft Technology Licensing, Llc Storing tensors in memory based on depth
CN112751661B (zh) * 2021-01-14 2022-05-06 重庆邮电大学 一种基于同态加密的工业现场设备隐私数据保护方法
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
CN114861743A (zh) 2021-01-20 2022-08-05 伊姆西Ip控股有限责任公司 用于管理数据模式的方法、设备和程序产品
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
WO2022159128A1 (en) * 2021-01-20 2022-07-28 EMC IP Holding Company LLC Method, device, and program product for managing data pattern
CN112785632B (zh) * 2021-02-13 2024-05-24 常州市第二人民医院 基于epid的图像引导放疗中dr和drr影像跨模态自动配准方法
CN112966126B (zh) * 2021-02-26 2021-09-17 南京审计大学 一种面向海量非结构化数据内容可查询可追溯的高可靠知识库构建方法
US11847234B2 (en) 2021-03-12 2023-12-19 International Business Machines Corporation Verifiable training of model in untrusted environment
EP4060935A1 (en) * 2021-03-15 2022-09-21 AO Kaspersky Lab System and method for processing personal data by application of policies
US11336536B1 (en) * 2021-03-31 2022-05-17 Landis+Gyr Innovations, Inc. Dynamic processing distribution for utility communication networks
CN113132988B (zh) * 2021-04-16 2023-09-12 成都易明半导体有限公司 一种基于令牌验证的路灯控制器无线组网链路入网方法
CN113190858B (zh) * 2021-04-20 2024-02-02 中国人民大学 一种基于隐私保护的图像处理方法、***、介质和设备
CN115237856A (zh) 2021-04-23 2022-10-25 伊姆西Ip控股有限责任公司 文件标注的方法、设备和计算机程序产品
CN115331275A (zh) * 2021-04-23 2022-11-11 伊姆西Ip控股有限责任公司 图像处理的方法、计算机***、电子设备和程序产品
US11816187B2 (en) * 2021-04-30 2023-11-14 Intuit Inc. Anomaly detection in event-based systems using image processing
US11391599B1 (en) * 2021-05-02 2022-07-19 Kiomars Anvari Simple time of day acquisition technique for a navigation and protection system used by an object
US11949794B2 (en) 2021-05-08 2024-04-02 International Business Machines Corporation Data anonymization of blockchain-based processing pipeline
US11595485B2 (en) * 2021-05-14 2023-02-28 Verizon Patent And Licensing Inc. Systems and methods for demand-based dynamic service provisioning in an edge computing system
CN113379818B (zh) * 2021-05-24 2022-06-07 四川大学 一种基于多尺度注意力机制网络的相位解析方法
US11872463B2 (en) * 2021-05-26 2024-01-16 TRI HoldCo, Inc. Network-enabled signaling device system for sporting events
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
CN113163019B (zh) * 2021-05-28 2021-09-14 华中科技大学 一种基于sdn和边缘计算的物联网隐私保护服务发现***
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes
US11789703B2 (en) * 2021-06-21 2023-10-17 Hearsch Jariwala Blockchain-based source code modification detection and tracking system and method for artificial intelligence platforms
US11386775B1 (en) * 2021-07-04 2022-07-12 Kiomars Anvari Structure of an object control system (OCS) for navigation of moving objects
CN114968612B (zh) * 2021-07-14 2023-04-11 华为技术有限公司 一种数据处理方法、***及相关设备
CN113609523B (zh) * 2021-07-29 2022-04-01 南京邮电大学 一种基于区块链和差异隐私的车联网隐私数据保护方法
CN115706703A (zh) * 2021-08-13 2023-02-17 中移***集成有限公司 边缘ai加速处理方法和装置、电子设备及可读存储介质
GB2609921A (en) * 2021-08-16 2023-02-22 Maxilux Systems Ltd A control system and method
CN113761592B (zh) * 2021-08-18 2024-02-23 淮阴工学院 一种云存储中基于模糊身份的数据完整性检测方法
US11682298B2 (en) * 2021-08-23 2023-06-20 François VAUDRIN Practical method to collect and measure real-time traffic data with high accuracy through the 5G network and accessing these data by cloud computing
CN113691818B (zh) * 2021-08-25 2023-06-30 深圳龙岗智能视听研究院 视频目标检测方法、***、存储介质、计算机视觉终端
US11480529B1 (en) * 2021-09-13 2022-10-25 Borde, Inc. Optical inspection systems and methods for moving objects
US11757616B2 (en) * 2021-09-18 2023-09-12 Dalian Unversity of Technology Image encryption method based on improved class boosting scheme
WO2023049348A1 (en) * 2021-09-23 2023-03-30 Burstiq, Inc. Graph models of relationships between data stored in blocks on distributed ledgers that are learned through machine learning and platforms for creating, cataloging, and storing the same
US20230099700A1 (en) * 2021-09-24 2023-03-30 Micro Focus Llc Lifecycle hardware, firmware, and software tracking using blockchain
WO2023063772A1 (ko) * 2021-10-14 2023-04-20 (주)아모레퍼시픽 딥 러닝을 이용한 이미지 분석 기반의 피부 진단 시스템 및 방법
US11816582B2 (en) * 2021-10-21 2023-11-14 Snowflake Inc. Heuristic search for k-anonymization
US11538336B1 (en) * 2021-11-02 2022-12-27 Kiomars Anvari Object control system to control navigation of a moving vehicle when exiting a road or a freeway
US11887314B2 (en) * 2021-11-08 2024-01-30 SmartThings, Inc. Compressed domain motion detection
CN114170269B (zh) * 2021-11-18 2024-04-12 安徽清新互联信息科技有限公司 一种基于时空相关性的多目标跟踪方法、设备及存储介质
WO2023101480A1 (en) * 2021-12-01 2023-06-08 Samsung Electronics Co., Ltd. Systems and methods for intelligent management of a battery
WO2023119379A1 (ja) * 2021-12-20 2023-06-29 富士通株式会社 Nft唯一性確保プログラム、nft唯一性確保方法およびnft唯一性確保装置
WO2023129143A1 (en) * 2021-12-29 2023-07-06 Siemens Aktiengesellschaft System and method for enabling scalable processing throughput of high-volume data on industrial controllers
US20230230351A1 (en) * 2022-01-14 2023-07-20 Microsoft Technology Licensing, Llc Constructing processing pipeline at edge computing device
US11999377B2 (en) 2022-02-03 2024-06-04 International Business Machines Corporation Mobile robots enabled wind flow pattern analysis through wavelets
CN114627170B (zh) * 2022-03-11 2024-06-07 平安科技(深圳)有限公司 三维点云配准方法、装置、计算机设备及存储介质
US20230297878A1 (en) * 2022-03-18 2023-09-21 C3.Ai, Inc. Metadata-driven feature store for machine learning systems
US20230336738A1 (en) * 2022-04-14 2023-10-19 Tencent America LLC Multi-rate of computer vision task neural networks in compression domain
US11816134B1 (en) * 2022-06-27 2023-11-14 Dell Products L.P. System and method for reduction of data transmission in dynamic systems using causal graphs
KR102495603B1 (ko) * 2022-07-06 2023-02-06 주식회사 빅토리지 Ess 설비 데이터 자동 맵핑과 클라우드 연동을 위한 게이트웨이 엔진을 탑재한 전력 관리 시스템 및 그 구동방법
US11941043B2 (en) * 2022-07-25 2024-03-26 Dell Products L.P. System and method for managing use of images using landmarks or areas of interest
CN115378789B (zh) * 2022-10-24 2023-01-10 中国地质大学(北京) 一种多层次协作的流资源管理方法及***
CN116610906B (zh) * 2023-04-11 2024-05-14 深圳润世华软件和信息技术服务有限公司 设备故障诊断方法、装置、计算机设备及其存储介质
CN117351015B (zh) * 2023-12-05 2024-03-19 中国海洋大学 基于边缘监督和多域交叉相关的篡改检测方法及***
CN117445735B (zh) * 2023-12-25 2024-03-19 国网天津市电力公司武清供电分公司 云边协同的充电预警方法、设备及介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070250833A1 (en) * 2006-04-14 2007-10-25 Microsoft Corporation Managing virtual machines with system-wide policies
US20090327491A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Scheduling data delivery to manage device resources
US20100153377A1 (en) * 2008-12-12 2010-06-17 Palaniswamy Rajan System and method for enhanced automation of information technology management
US20120087572A1 (en) * 2010-10-11 2012-04-12 Goksel Dedeoglu Use of Three-Dimensional Top-Down Views for Business Analytics
US20120173728A1 (en) * 2011-01-03 2012-07-05 Gregory Matthew Haskins Policy and identity based workload provisioning
US20150347193A1 (en) * 2014-05-29 2015-12-03 Ab Initio Technology Llc Workload automation and data lineage analysis
US20160042401A1 (en) * 2014-07-10 2016-02-11 Volta Industries, LLC Systems and methods for providing targeted advertisements to a charging station for electric vehicles
US20180039745A1 (en) * 2016-08-02 2018-02-08 Atlas5D, Inc. Systems and methods to identify persons and/or identify and quantify pain, fatigue, mood, and intent with protection of privacy
US20190163982A1 (en) * 2017-11-28 2019-05-30 Visual Semantics, Inc. Method and apparatus for integration of detected object identifiers and semantic scene graph networks for captured visual scene behavior estimation

Family Cites Families (136)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471248A (en) * 1992-11-13 1995-11-28 National Semiconductor Corporation System for tile coding of moving images
EP0896295A3 (en) 1997-08-04 1999-11-03 Xerox Corporation Character recognition method and system
US6879266B1 (en) * 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US6029170A (en) * 1997-11-25 2000-02-22 International Business Machines Corporation Hybrid tree array data structure and method
US6236749B1 (en) 1998-03-23 2001-05-22 Matsushita Electronics Corporation Image recognition method
US6125212A (en) 1998-04-29 2000-09-26 Hewlett-Packard Company Explicit DST-based filter operating in the DCT domain
US6466223B1 (en) * 1999-03-24 2002-10-15 Microsoft Corporation Method and apparatus for texture memory management
US6897858B1 (en) * 2000-02-16 2005-05-24 Enroute, Inc. Partial image decompression of a tiled image
EP1662989B1 (en) 2000-06-16 2014-09-03 BodyMedia, Inc. System for monitoring and managing body weight and other physiological conditions including iterative and personalized planning, intervention and reporting capability
US7689437B1 (en) 2000-06-16 2010-03-30 Bodymedia, Inc. System for monitoring health, wellness and fitness
US7567721B2 (en) 2002-01-22 2009-07-28 Digimarc Corporation Digital watermarking of low bit rate video
US7020508B2 (en) 2002-08-22 2006-03-28 Bodymedia, Inc. Apparatus for detecting human physiological and contextual information
US7350210B2 (en) * 2002-11-25 2008-03-25 Sap Ag Generic data persistence application program interface
WO2004093001A1 (en) * 2003-04-11 2004-10-28 Sumtotal Llc Adaptive subtraction image compression
JP4374252B2 (ja) 2004-01-23 2009-12-02 Hoya株式会社 デジタルカメラの制御装置および遠隔制御システム
AU2005236997B2 (en) 2004-04-23 2010-04-29 Hitoshi Kiya Moving picture data encoding method, decoding method, terminal device for executing them, and bi-directional interactive system
WO2006120195A1 (en) * 2005-05-12 2006-11-16 Bracco Imaging S.P.A. Method for coding pixels or voxels of a digital image and a method for processing digital images
US20160345260A1 (en) 2005-05-30 2016-11-24 Invent.ly LLC Self Powered Device and Methods Conserving Energy in Communication
US8238678B2 (en) 2006-08-30 2012-08-07 Siemens Medical Solutions Usa, Inc. Providing representative image information
AU2007322085B2 (en) * 2006-11-16 2013-06-27 Stryker Corporation Wireless endoscopic camera
US10096038B2 (en) 2007-05-10 2018-10-09 Allstate Insurance Company Road segment safety rating system
US20080292216A1 (en) 2007-05-24 2008-11-27 Clive Walker Method and system for processing images using variable size tiles
US8452725B2 (en) 2008-09-03 2013-05-28 Hamid Hatami-Hanza System and method of ontological subject mapping for knowledge processing applications
JP5055166B2 (ja) 2008-02-29 2012-10-24 キヤノン株式会社 眼の開閉度判定装置、方法及びプログラム、撮像装置
US8406531B2 (en) 2008-05-15 2013-03-26 Yahoo! Inc. Data access based on content of image recorded by a mobile device
US8583668B2 (en) 2008-07-30 2013-11-12 Yahoo! Inc. System and method for context enhanced mapping
US20100049832A1 (en) * 2008-08-21 2010-02-25 Comverse Ltd Computer program product, a system and a method for providing video content to a target system
US8024317B2 (en) 2008-11-18 2011-09-20 Yahoo! Inc. System and method for deriving income from URL based context queries
KR20170023207A (ko) 2009-01-09 2017-03-02 인터디지탈 패튼 홀딩스, 인크 무선 송수신 유닛 및 무선 송수신 유닛에서의 사용을 위한 방법
US9491420B2 (en) 2009-09-20 2016-11-08 Tibet MIMAR Vehicle security with accident notification and embedded driver analytics
JP5524584B2 (ja) * 2009-11-20 2014-06-18 キヤノン株式会社 画像処理装置及びその制御方法
US8621636B2 (en) 2009-12-17 2013-12-31 American Express Travel Related Services Company, Inc. Systems, methods, and computer program products for collecting and reporting sensor data in a communication network
JP5538993B2 (ja) * 2010-04-28 2014-07-02 キヤノン株式会社 画像処理装置、画像処理方法、プログラム、および記憶媒体
US8533166B1 (en) 2010-08-20 2013-09-10 Brevity Ventures LLC Methods and systems for encoding/decoding files and transmission thereof
US8907772B1 (en) 2010-09-29 2014-12-09 Cyber Physical Systems, Inc. System and method for automatic unsafe driving determination and notification
EP2437498A1 (en) 2010-09-30 2012-04-04 British Telecommunications Public Limited Company Digital video fingerprinting
JP5496047B2 (ja) * 2010-10-07 2014-05-21 パナソニック株式会社 画像再生方法、画像再生装置、画像再生プログラム、撮像システム、および再生システム
US9036001B2 (en) * 2010-12-16 2015-05-19 Massachusetts Institute Of Technology Imaging system for immersive surveillance
CN202011377U (zh) * 2010-12-24 2011-10-19 广东好帮手电子科技股份有限公司 一种车载彩信防盗报警器
US9171075B2 (en) 2010-12-30 2015-10-27 Pelco, Inc. Searching recorded video
US9146172B2 (en) 2011-01-03 2015-09-29 Sentinel Hydrosolutions, Llc Non-invasive thermal dispersion flow meter with chronometric monitor for fluid leak detection
JP5663352B2 (ja) * 2011-03-03 2015-02-04 日本電産エレシス株式会社 画像処理装置、画像処理方法、及び画像処理プログラム
EP3678054A1 (en) 2011-08-31 2020-07-08 Zazzle Inc. Product options framework and accessories
US8810587B2 (en) 2012-03-02 2014-08-19 Adobe Systems Incorporated Conversion of contiguous interleaved image data for CPU readback
US9137246B2 (en) 2012-04-09 2015-09-15 Brivas Llc Systems, methods and apparatus for multivariate authentication
US9143776B2 (en) 2012-05-07 2015-09-22 Futurewei Technologies, Inc. No-reference video/image quality measurement with compressed domain features
US9648320B2 (en) 2013-02-22 2017-05-09 Comcast Cable Communications, Llc Methods and systems for processing content
CA2947936C (en) 2013-05-04 2023-02-21 Christopher Decharms Mobile security technology
DE102013211540A1 (de) 2013-06-19 2014-12-24 Siemens Aktiengesellschaft Verarbeitungskontext-abhängige Pseudonymisierung von sicherheitskritischen Medizindaten über ein Netzwerk
EP2816564B1 (en) * 2013-06-21 2020-07-22 Nokia Technologies Oy Method and apparatus for smart video rendering
US9832468B2 (en) 2013-07-17 2017-11-28 Samsung Electronics Co., Ltd. Electronic device for storing image and image storage method thereof
WO2015030796A1 (en) 2013-08-30 2015-03-05 Intel Corporation Extensible context-aware natural language interactions for virtual personal assistants
US9251435B2 (en) * 2013-09-20 2016-02-02 Oracle International Corporation Screenshot database for application verification
US20150104103A1 (en) * 2013-10-16 2015-04-16 Sony Corporation Surveillance camera that respects privacy
US10978184B2 (en) 2013-11-04 2021-04-13 Terarecon, Inc. Evolving contextual clinical data engine for medical information
US9400925B2 (en) * 2013-11-15 2016-07-26 Facebook, Inc. Pose-aligned networks for deep attribute modeling
GB2521407B (en) * 2013-12-18 2019-02-27 Displaylink Uk Ltd Display system
US9866673B2 (en) 2013-12-18 2018-01-09 Medlegal Network, Inc. Methods and systems of managing accident communications over a network
US9224213B2 (en) * 2013-12-31 2015-12-29 Facebook, Inc. Systems and methods for context based image compression
US9317889B1 (en) 2013-12-31 2016-04-19 Exelis Inc. Parallel image processing method and system
KR102200121B1 (ko) 2014-02-17 2021-01-08 삼성전자 주식회사 차량 흐름 예측 방법 및 장치
US9870621B1 (en) 2014-03-10 2018-01-16 Google Llc Motion-based feature correspondence
US10477232B2 (en) 2014-03-21 2019-11-12 Qualcomm Incorporated Search region determination for intra block copy in video coding
US20150331995A1 (en) 2014-05-14 2015-11-19 Tiecheng Zhao Evolving contextual clinical data engine for medical data processing
US10194163B2 (en) 2014-05-22 2019-01-29 Brain Corporation Apparatus and methods for real time estimation of differential motion in live video
US9854015B2 (en) 2014-06-25 2017-12-26 International Business Machines Corporation Incident data collection for public protection agencies
KR101605450B1 (ko) * 2014-08-04 2016-03-22 서울시립대학교산학협력단 다중시기 mai 간섭도의 적층 방법 및 그 장치
US20160042767A1 (en) 2014-08-08 2016-02-11 Utility Associates, Inc. Integrating data from multiple devices
US10482992B2 (en) * 2015-01-09 2019-11-19 Ceres, Inc. Genome browser
US20180025175A1 (en) * 2015-01-15 2018-01-25 Nec Corporation Information output device, camera, information output system, information output method, and program
US20160358129A1 (en) 2015-01-28 2016-12-08 Mtct Group Llc Methods and systems for fleet management
CA2981511C (en) 2015-03-31 2018-08-28 Nasdaq, Inc. Systems and methods of blockchain transaction recordation
US9955162B2 (en) 2015-03-31 2018-04-24 Lenovo (Singapore) Pte. Ltd. Photo cluster detection and compression
US9432430B1 (en) 2015-04-02 2016-08-30 Sas Institute Inc. Event stream processing device providing real-time incident identification
US10115194B2 (en) * 2015-04-06 2018-10-30 IDx, LLC Systems and methods for feature detection in retinal images
WO2016180480A1 (en) * 2015-05-12 2016-11-17 Here Global B.V. Compressing and decompressing data about radio signals
US9286657B1 (en) 2015-06-25 2016-03-15 Mylio, LLC Efficient image processing using dynamically sized tiles
US20170046613A1 (en) * 2015-08-10 2017-02-16 Facebook, Inc. Systems and methods for content classification and detection using convolutional neural networks
US9767565B2 (en) * 2015-08-26 2017-09-19 Digitalglobe, Inc. Synthesizing training data for broad area geospatial object detection
US20170112391A1 (en) 2015-10-27 2017-04-27 Bodymedia, Inc. Apparatus for detecting human physiological and contextual information
US9904874B2 (en) 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
US11941588B2 (en) * 2015-11-06 2024-03-26 Cable Television Laboratories, Inc. Systems and methods for blockchain virtualization and scalability
US20170132511A1 (en) 2015-11-10 2017-05-11 Facebook, Inc. Systems and methods for utilizing compressed convolutional neural networks to perform media content processing
US20170156594A1 (en) 2015-12-07 2017-06-08 Bodymedia, Inc. Systems, methods, and devices to determine and predict physilogical states of individuals and to administer therapy, reports, notifications, and the like therefor
US20170181645A1 (en) 2015-12-28 2017-06-29 Dexcom, Inc. Systems and methods for remote and host monitoring communications
WO2017127564A1 (en) 2016-01-19 2017-07-27 Priv8Pay, Inc. Network node authentication
US9996902B2 (en) * 2016-01-19 2018-06-12 Google Llc Image upscaling
US10713654B2 (en) * 2016-01-21 2020-07-14 International Business Machines Corporation Enterprise blockchains and transactional systems
US9849364B2 (en) 2016-02-02 2017-12-26 Bao Tran Smart device
WO2017135889A1 (en) 2016-02-05 2017-08-10 Hitachi, Ltd. Ontology determination methods and ontology determination devices
US10032081B2 (en) * 2016-02-09 2018-07-24 Oath Inc. Content-based video representation
US10346406B2 (en) * 2016-03-28 2019-07-09 International Business Machines Corporation Decentralized autonomous edge compute coordinated by smart contract on a blockchain
JP6727011B2 (ja) * 2016-04-14 2020-07-22 キヤノン株式会社 画像符号化装置及びその制御方法
CA3022363A1 (en) 2016-04-27 2017-11-02 Scott Technologies, Inc. Wireless device based auto check-in and information sourcing system for accountability management
CN105761500B (zh) 2016-05-10 2019-02-22 腾讯科技(深圳)有限公司 交通事故处理方法及交通事故处理装置
KR101780636B1 (ko) * 2016-05-16 2017-09-21 주식회사 코인플러그 인증 정보의 발급 방법 및 이를 지원하는 블록체인기반 인증 정보 관리 서버
US9635000B1 (en) 2016-05-25 2017-04-25 Sead Muftic Blockchain identity management system based on public identities ledger
WO2017220115A1 (en) 2016-06-20 2017-12-28 Rwe International Se Software defined networking system
WO2018006072A1 (en) 2016-06-30 2018-01-04 Clause, Inc. Systems and method for forming, storing, managing,and executing contracts
US10474932B2 (en) 2016-09-01 2019-11-12 Uptake Technologies, Inc. Detection of anomalies in multivariate data
EP3516545A1 (en) * 2016-09-21 2019-07-31 R-Stor Inc. Systems and methods for using a distributed ledger for data handling
US11188883B2 (en) * 2016-09-23 2021-11-30 International Business Machines Corporation Using ledger sensors to enable contextual contracts across various enterprise blockchain applications
GB201617913D0 (en) * 2016-10-24 2016-12-07 Trustonic Limited Multi-stakeholder key setup for lot
US20180137119A1 (en) * 2016-11-16 2018-05-17 Samsung Electronics Co., Ltd. Image management method and apparatus thereof
US10382485B2 (en) * 2016-12-23 2019-08-13 Vmware, Inc. Blockchain-assisted public key infrastructure for internet of things applications
US10051413B2 (en) 2016-12-28 2018-08-14 Motorola Solutions, Inc. Method for exchanging information corresponding to a public safety incident
CN114900858A (zh) 2016-12-30 2022-08-12 英特尔公司 用于无线电通信的方法和设备
US11296935B2 (en) * 2016-12-30 2022-04-05 Intel Corporation Service provision to IoT devices
US10719501B1 (en) * 2017-03-03 2020-07-21 State Farm Mutual Automobile Insurance Company Systems and methods for analyzing vehicle sensor data via a blockchain
CN106997463A (zh) 2017-03-29 2017-08-01 浙江师范大学 一种基于压缩感知域和卷积神经网络的路牌识别方法
US10871948B1 (en) * 2017-03-30 2020-12-22 Wells Fargo Bank, N.A. Smart contract blockchain abstraction API
CA3064499A1 (en) * 2017-06-14 2018-12-20 Visa International Service Association Systems and methods for creating multiple records based on an ordered smart contract
US10290107B1 (en) * 2017-06-19 2019-05-14 Cadence Design Systems, Inc. Transform domain regression convolutional neural network for image segmentation
US10795977B2 (en) * 2017-08-24 2020-10-06 Oracle International Corporation Digital asset traceability and assurance using a distributed ledger
US10963400B2 (en) * 2017-10-11 2021-03-30 International Business Machines Corporation Smart contract creation and monitoring for event identification in a blockchain
US10740620B2 (en) * 2017-10-12 2020-08-11 Google Llc Generating a video segment of an action from a video
US11063744B2 (en) * 2017-10-20 2021-07-13 Sap Se Document flow tracking using blockchain
US10761894B2 (en) 2017-10-30 2020-09-01 Sas Institute Inc. Methods and systems for automated monitoring and control of adherence parameters
EP3480749B1 (en) * 2017-11-06 2024-02-21 Imagination Technologies Limited Exploiting sparsity in a neural network
US10528819B1 (en) * 2017-11-20 2020-01-07 A9.Com, Inc. Compressed content object and action detection
US10642967B2 (en) * 2017-11-28 2020-05-05 American Express Travel Related Services Company, Inc. Single sign-on solution using blockchain
US10977844B2 (en) * 2017-11-29 2021-04-13 Adobe Inc. Presenting multiple image segmentations
US10567156B2 (en) * 2017-11-30 2020-02-18 Bank Of America Corporation Blockchain-based unexpected data detection
US10372787B2 (en) * 2017-12-12 2019-08-06 Facebook, Inc. Hardware accelerator pre-configured with coefficients for matrix-transform operations
US10558868B2 (en) * 2017-12-18 2020-02-11 GM Global Technology Operations LLC Method and apparatus for evaluating a vehicle travel surface
US11386405B2 (en) * 2017-12-19 2022-07-12 International Business Machines Corporation Dynamic blockchain transactional policy management
US10607484B2 (en) 2017-12-28 2020-03-31 Intel Corporation Privacy-preserving distributed visual data processing
US20200250003A1 (en) 2017-12-28 2020-08-06 Intel Corporation Visual fog
US10719744B2 (en) * 2017-12-28 2020-07-21 Intel Corporation Automated semantic inference of visual features and scenes
US20210365937A1 (en) * 2018-02-14 2021-11-25 Telefonaktiebolaget Lm Ericsson (Publ) Managing a smart contract in real-time
US20190303623A1 (en) * 2018-04-02 2019-10-03 Ca, Inc. Promotion smart contracts for software development processes
US11769156B2 (en) * 2018-05-15 2023-09-26 International Business Machines Corporation Automated data projection for smart contract groups on a blockchain
US20190378134A1 (en) * 2018-06-08 2019-12-12 R3 Ltd. Annotations for protocol flow implementing transactions of a distributed ledger system
US20190392118A1 (en) * 2018-06-20 2019-12-26 Adp, Llc Blockchain Version Control
US11256261B1 (en) * 2018-10-16 2022-02-22 Amazon Technologies, Inc. System for movement of autonomous mobile device
JP2023500378A (ja) * 2019-11-05 2023-01-05 ストロング フォース ヴィーシーエヌ ポートフォリオ 2019,エルエルシー バリューチェーンネットワークのためのコントロールタワーおよびエンタープライズマネジメントプラットフォーム

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070250833A1 (en) * 2006-04-14 2007-10-25 Microsoft Corporation Managing virtual machines with system-wide policies
US20090327491A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Scheduling data delivery to manage device resources
US20100153377A1 (en) * 2008-12-12 2010-06-17 Palaniswamy Rajan System and method for enhanced automation of information technology management
US20120087572A1 (en) * 2010-10-11 2012-04-12 Goksel Dedeoglu Use of Three-Dimensional Top-Down Views for Business Analytics
US20120173728A1 (en) * 2011-01-03 2012-07-05 Gregory Matthew Haskins Policy and identity based workload provisioning
US20150347193A1 (en) * 2014-05-29 2015-12-03 Ab Initio Technology Llc Workload automation and data lineage analysis
US20160042401A1 (en) * 2014-07-10 2016-02-11 Volta Industries, LLC Systems and methods for providing targeted advertisements to a charging station for electric vehicles
US20180039745A1 (en) * 2016-08-02 2018-02-08 Atlas5D, Inc. Systems and methods to identify persons and/or identify and quantify pain, fatigue, mood, and intent with protection of privacy
US20190163982A1 (en) * 2017-11-28 2019-05-30 Visual Semantics, Inc. Method and apparatus for integration of detected object identifiers and semantic scene graph networks for captured visual scene behavior estimation

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220077595A (ko) * 2020-12-02 2022-06-09 이화여자대학교 산학협력단 도시 컴퓨팅에서 엣지와 클라우드 간의 계층적 블록 체인 시스템 및 이 시스템을 생성하는 방법
KR20220080789A (ko) * 2020-12-07 2022-06-15 주식회사 네스텐네트웍스 다계층 블록 체인을 이용한 분산 네트워크
KR102505331B1 (ko) * 2022-03-10 2023-02-28 윤단호 It 시스템 구축 서비스 제공 장치, 방법 및 프로그램

Also Published As

Publication number Publication date
US20210194674A1 (en) 2021-06-24
US11521024B2 (en) 2022-12-06
US20230237144A1 (en) 2023-07-27
DE112018006630T5 (de) 2020-09-24
US11531850B2 (en) 2022-12-20
US20190044703A1 (en) 2019-02-07
US11450123B2 (en) 2022-09-20
US20220180651A1 (en) 2022-06-09
US20200250003A1 (en) 2020-08-06
US10797863B2 (en) 2020-10-06
US10778412B2 (en) 2020-09-15
US11481583B2 (en) 2022-10-25
KR102656864B1 (ko) 2024-04-17
US20200159961A1 (en) 2020-05-21
US10742399B2 (en) 2020-08-11
US11836240B2 (en) 2023-12-05
CN112384947A (zh) 2021-02-19
US20210266145A1 (en) 2021-08-26
US20190042867A1 (en) 2019-02-07
US20190045207A1 (en) 2019-02-07
US20230114468A1 (en) 2023-04-13
US11139958B2 (en) 2021-10-05
US20210243012A1 (en) 2021-08-05
US20230185895A1 (en) 2023-06-15
US20190042870A1 (en) 2019-02-07
US11562181B2 (en) 2023-01-24
WO2019133052A1 (en) 2019-07-04

Similar Documents

Publication Publication Date Title
US11450123B2 (en) Analytic image format for visual computing
US11462036B2 (en) Automated semantic inference of visual features and scenes
US11887360B2 (en) Ubiquitous witness for vehicle incidents
Ahmed et al. Fog computing applications: Taxonomy and requirements
Zhu et al. Emergent technologies in big data sensing: a survey
Yanfeng et al. A new surface recovery method based on hybrid reflectance model
Jeelani Perspectives Of Iot And Its Applications
CNIT et al. DELIVERABLE D5.

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