KR20220031681A - 다수의 컴퓨팅 디바이스들에 걸쳐 신경망을 분배하기 위한 시스템들 및 방법들 - Google Patents

다수의 컴퓨팅 디바이스들에 걸쳐 신경망을 분배하기 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR20220031681A
KR20220031681A KR1020227004217A KR20227004217A KR20220031681A KR 20220031681 A KR20220031681 A KR 20220031681A KR 1020227004217 A KR1020227004217 A KR 1020227004217A KR 20227004217 A KR20227004217 A KR 20227004217A KR 20220031681 A KR20220031681 A KR 20220031681A
Authority
KR
South Korea
Prior art keywords
neural network
data
layers
input data
data set
Prior art date
Application number
KR1020227004217A
Other languages
English (en)
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 KR20220031681A publication Critical patent/KR20220031681A/ko

Links

Images

Classifications

    • 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/0454
    • 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
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/0093Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00 with means for monitoring data relating to the user, e.g. head-tracking, eye-tracking
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • G02B27/0172Head mounted characterised by optical features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/013Eye tracking input arrangements
    • 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/044Recurrent networks, e.g. Hopfield networks
    • 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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/0138Head-up displays characterised by optical features comprising image capture systems, e.g. camera
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/014Head-up displays characterised by optical features comprising information/image processing systems
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B7/00Mountings, adjusting means, or light-tight connections, for optical elements
    • G02B7/02Mountings, adjusting means, or light-tight connections, for optical elements for lenses
    • G02B7/04Mountings, adjusting means, or light-tight connections, for optical elements for lenses with mechanism for focusing or varying magnification
    • G02B7/06Focusing binocular pairs
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B7/00Mountings, adjusting means, or light-tight connections, for optical elements
    • G02B7/02Mountings, adjusting means, or light-tight connections, for optical elements for lenses
    • G02B7/04Mountings, adjusting means, or light-tight connections, for optical elements for lenses with mechanism for focusing or varying magnification
    • G02B7/09Mountings, adjusting means, or light-tight connections, for optical elements for lenses with mechanism for focusing or varying magnification adapted for automatic focusing or varying magnification

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Optics & Photonics (AREA)
  • Human Computer Interaction (AREA)
  • Neurology (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Analysis (AREA)

Abstract

다수의 디바이스들에 걸쳐 신경망을 사용하기 위한 방법이 본 출원에서 개시된다. 방법은, 신경망의 제 1 하나 이상의 층들을 갖고 구성된 제 1 디바이스에 의해, 제 1 디바이스와 제 2 디바이스에 걸쳐 구현된 신경망을 통해 프로세싱을 위한 입력 데이터를 수신하는 것을 포함할 수 있다. 방법은 제 1 디바이스 상에 구현된 신경망의 제 1 하나 이상의 층들에 의해, 신경망의 제 2 하나 이상의 층들에 의한 프로세싱을 위해 입력 데이터의 하나 이상의 특징들을 식별하는 동안 입력 데이터에 대해 크기가 축소되는 데이터 세트를 출력하는 것을 포함할 수 있다. 방법은, 제 1 디바이스에 의해, 제 2 디바이스 상에 구현된 신경망의 제 2 하나 이상의 층들을 통해 상기 데이터 세트를 프로세싱을 위해 제 2 디바이스로 전달하는 것을 포함할 수 있다.

Description

다수의 컴퓨팅 디바이스들에 걸쳐 신경망을 분배하기 위한 시스템들 및 방법들
본 발명은 일반적으로, 이에 제한되지 않지만 헤드 장착 디스플레이 시스템에 구현된 신경망들을 포함한 신경망들에 관한 것이다.
본 발명은 신경망들에 관한 것이다. 보다 특히, 본 발명은 헤드 장착 디스플레이 시스템에 신경망들을 구현하는 것에 관한 것이다. 헤드 장착 디스플레이들은 증강 현실 및/또는 가상 현실 시스템들에서 사용될 수 있으며 일반적으로 프로세싱 회로부를 포함한다. 그러나, 헤드 장착 디스플레이에 국소적인 프로세싱 회로부의 프로세싱 능력들은 크기 및 열 발산 제약들로 인해 제한될 수 있다. 특정한 계산이 많은 프로세스들은 헤드 장착 디스플레이의 프로세싱 회로부상에서 국소적으로 수행하는 것이 어려울 수 있다. 부가적으로, 외부 프로세싱 유닛에 계산이 많은 프로세스들을 오프-로드하는 것은 래그를 야기할 수 있으며 데이터를 송신하기 위해 과도한 양의 에너지를 요구할 수 있다.
본 출원에서 개시된 다양한 실시예들은 방법과 관련된다. 몇몇 실시예들에서, 상기 방법은, 신경망의 제 1 하나 이상의 층들로 구성된 제 1 디바이스에 의해, 제 1 디바이스 및 제 2 디바이스에 걸쳐 구현된 신경망을 통해 프로세싱을 위한 입력 데이터를 수신하는 것을 포함한다. 몇몇 실시예들에서, 상기 방법은, 상기 제 1 디바이스 상에 구현된 신경망의 제 1 하나 이상의 층들에 의해, 신경망의 제 2 하나 이상의 층들에 의한 프로세싱을 위해 입력 데이터의 하나 이상의 특징들을 식별하는 동안 입력 데이터에 대하여 크기가 축소되는 데이터 세트를 출력하는 것을 포함한다. 몇몇 실시예들에서, 상기 방법은 상기 제 1 디바이스에 의해, 상기 제 2 디바이스 상에 구현된 신경망의 제 2 하나 이상의 층들을 통해 프로세싱을 위해 상기 데이터 세트를 제 2 디바이스로 전달하는 것을 포함한다.
몇몇 실시예들에서, 상기 방법은, 제 1 하나 이상의 층들에 의해, 네트워크를 통한 제 2 디바이스로의 송신을 위해 데이터 세트를 압축함으로써 데이터 세트를 축소하는 것을 추가로 포함한다.
몇몇 실시예들에서, 상기 제 2 하나 이상의 층들은 상기 입력 데이터 내에서 하나 이상의 특징들 중 한 특징을 검출한다.
몇몇 실시예들에서, 상기 방법은, 상기 제 1 디바이스에 의해, 상기 특징이 제 2 하나 이상의 층들에 의해 검출되었다는 표시를 상기 제 2 디바이스로부터 수신하는 것을 추가로 포함한다.
몇몇 실시예들에서, 상기 방법은, 상기 제 1 디바이스에 의해, 상기 하나 이상의 특징들 중 한 특징이 상기 제 1 디바이스에 의해 동작을 취하기 위한 정확도의 임계치를 충족함을 검출하는 것을 추가로 포함한다.
몇몇 실시예들에서, 상기 방법은, 상기 제 1 디바이스에 의해, 상기 검출에 응답하여, 상기 특징에 대한 동작을 수행하는 것을 추가로 포함한다.
몇몇 실시예들에서, 상기 방법은 상기 데이터 세트를 상기 제 2 디바이스로 전달하지 않고 동작을 수행하는 것을 추가로 포함한다.
본 출원에서 개시된 다양한 실시예들은 방법과 관련된다. 몇몇 실시예들에서, 상기 방법은 착용 가능한 헤드 디스플레이의 프로세서에 의해, 상기 착용 가능한 헤드 디스플레이에 의해 캡처된 입력 데이터를 수신하는 것을 포함한다. 몇몇 실시예들에서, 상기 방법은, 상기 신경망의 상기 프로세서 상에 구현된 신경망의 제 1 하나 이상의 층들에 의해, 제 2 하나 이상의 층들에 의한 프로세싱을 위해 입력 데이터의 하나 이상의 특징들을 식별하는 동안 상기 입력 데이터에 대하여 크기가 축소되는 데이터 세트를 생성하는 것을 포함한다. 몇몇 실시예들에서, 상기 방법은, 상기 프로세서에 의해, 상기 데이터 세트에서 하나 이상의 특징들 중 한 특징을 검출하는 것을 포함한다. 몇몇 실시예들에서, 상기 방법은, 상기 프로세서에 의해 상기 특징을 검출하는 것에 응답하여, 상기 신경망의 제 2 하나 이상의 층들을 구현한 제 2 디바이스로 데이터 세트를 전달하는 대신에 상기 특징에 대한 동작을 수행하는 것을 포함한다.
몇몇 실시예들에서, 상기 방법은, 상기 프로세서에 의해, 정확도의 임계치 내에서 상기 특징을 검출하는 것을 추가로 포함한다.
몇몇 실시예들에서, 상기 방법은 상기 착용 가능한 헤드 디스플레이를 통해 디스플레이되는 이미지를 수정하는 것을 포함한 동작을 수행하는 것을 추가로 포함한다.
몇몇 실시예들에서, 상기 방법은, 상기 프로세서 상에 구현된 제 1 하나 이상의 층들에 의해, 제 2 입력 데이터의 특징들 중 제 2 하나 이상을 식별하는 동안 제 2 입력 데이터에 대하여 크기가 축소되는 제 2 데이터 세트를 생성하는 것을 추가로 포함한다.
몇몇 실시예들에서, 상기 방법은, 상기 프로세서에 의해, 상기 제 2 하나 이상의 특징들의 제 2 특징이 정확도의 임계치 내에서 검출 가능하지 않음을 결정하는 것을 추가로 포함한다.
몇몇 실시예들에서, 상기 방법은, 상기 프로세서에 의해 상기 결정에 응답하여, 상기 신경망의 제 2 하나 이상의 층들을 구현한 제 2 디바이스로 상기 제 2 데이터 세트를 전달하는 것을 추가로 포함한다.
몇몇 실시예들에서, 상기 방법은 상기 프로세서에 의해, 상기 제 2 하나 이상의 층들에 의한 제 2 데이터 세트의 프로세싱의 결과의 표시를 상기 제 2 디바이스로부터 수신하는 것을 추가로 포함한다.
본 출원에서 개시된 다양한 실시예들은 시스템과 관련된다. 몇몇 실시예들에서, 상기 시스템은 제 1 디바이스 및 제 2 디바이스에 걸쳐 구현된 신경망을 통해 프로세싱을 위한 입력 데이터를 수신하도록 구성된 제 1 디바이스를 포함한다. 몇몇 실시예들에서, 상기 제 1 디바이스 상에 구현된 신경망의 제 1 하나 이상의 층들은 상기 신경망의 제 2 하나 이상의 층들에 의한 프로세싱을 위해 입력 데이터의 하나 이상의 특징들을 식별하는 동안 상기 입력 데이터에 대하여 크기가 축소되는 데이터 세트를 출력하도록 구성된다. 몇몇 실시예들에서, 상기 제 1 디바이스는 상기 제 2 디바이스 상에 구현된 신경망의 제 2 하나 이상의 층들을 통해 프로세싱을 위해 상기 데이터 세트를 제 2 디바이스로 전달하도록 구성된다.
몇몇 실시예들에서, 상기 제 1 하나 이상의 층들은 또한 상기 네트워크를 통해 상기 제 2 디바이스로의 송신을 위한 데이터 세트를 압축함으로써 상기 데이터 세트를 축소시키도록 구성된다.
몇몇 실시예들에서, 상기 제 2 하나 이상의 층들은 또한 상기 입력 데이터 내에서 하나 이상의 특징들 중 한 특징을 검출하도록 구성된다.
몇몇 실시예들에서, 상기 제 1 디바이스는 또한 상기 특징이 상기 제 2 하나 이상의 층들에 의해 검출되었다는 표시를 상기 제 2 디바이스로부터 수신하도록 구성된다.
몇몇 실시예들에서, 상기 제 1 디바이스는 또한 상기 하나 이상의 특징들 중 한 특징이 상기 제 1 디바이스에 의해 동작을 취하기 위한 정확도의 임계치를 충족함을 검출하도록 구성된다.
몇몇 실시예들에서, 상기 제 1 디바이스는 또한, 상기 검출에 응답하여, 상기 데이터 세트를 상기 제 2 디바이스로 전달하지 않고, 상기 특징에 대하여 상기 동작을 수행하도록 구성된다.
이들 및 다른 양상들과 구현들은 이하에서 상세하게 논의된다. 앞서 말한 정보 및 다음의 상세한 설명은 다양한 양상들 및 구현들의 예시적인 예들을 포함하며, 청구된 양상들 및 구현들의 특징 및 특질을 이해하기 위한 개요 또는 프레임워크를 제공한다. 도면들은 다양한 양상들 및 구현들의 예시 및 추가 이해를 제공하며, 본 명세서에 통합되고 그것의 부분을 구성한다. 본 발명은 첨부된 청구항들에서 정의된다.
첨부된 도면들은 일정한 비율로 그려지도록 의도되지 않는다. 다양한 도면들에서 유사한 참조 번호들 및 지정들은 유사한 요소들을 나타낸다. 명료함의 목적들을 위해, 모든 구성요소가 모든 도면에서 라벨링될 수는 없다.
도 1a는 본 발명의 예시적인 구현에 따라, 인공 지능(AI) 관련 프로세싱을 수행하기 위한 시스템의 실시예의 블록도이다.
도 1b는 본 발명의 예시적인 구현에 따라, 인공 지능(AI) 관련 프로세싱을 수행하기 위한 디바이스의 실시예의 블록도이다.
도 1c는 본 발명의 예시적인 구현에 따라, 인공 지능(AI) 관련 프로세싱을 수행하기 위한 디바이스의 실시예의 블록도이다.
도 1d는 본 발명의 예시적인 구현에 따른 컴퓨팅 환경의 블록도이다.
도 2a는 몇몇 실시예들에 따른, 디스플레이 시스템의 블록도이다.
도 2b는 몇몇 실시예들에 따른, 헤드-장착 디스플레이(HMD) 시스템의 개략도이다.
도 3a는 몇몇 실시예들에 따른, 입력 데이터의 특징들을 식별하고 동작을 수행하기 위해 신경망의 부분들을 사용하는 제어기들의 시스템의 블록도이다.
도 3b는 몇몇 실시예들에 따른, 입력 데이터의 하나 이상의 특징들을 식별하고 동작을 수행하기 위해 다수의 디바이스들에 걸쳐 분포된 신경망을 사용하기 위한 프로세스의 흐름도이다.
도 3c는 몇몇 실시예들에 따른, 부가적인 디바이스들을 가진 도 3a의 시스템의 블록도이다.
개요
특정한 실시예들을 상세하게 예시하는, 도면들로 돌아가기 전에, 본 발명은 설명에서 제시되거나 또는 도면들에서 예시된 세부사항들 또는 방법론들에 제한되지 않는다는 것이 이해되어야 한다. 본 출원에서 사용된 용어는 단지 설명의 목적을 위한 것이며 제한적인 것으로 간주되지 않아야 한다는 것이 또한 이해되어야 한다.
이하에서 본 발명의 다양한 실시예들의 설명을 판독할 목적들로, 명세서 및 그것들 각각의 콘텐트들의 섹션들에 대한 다음의 설명들이 도움이 될 것이다:
- 섹션 A는 본 시스템들, 방법들 및 디바이스들의 실시예를 실시하거나 또는 구현하는데 유용한 환경, 시스템, 구성 및/또는 다른 양상들을 설명한다; 및
- 섹션 B는 헤드 장착 디스플레이 환경에서 본 시스템들, 방법들 및 디바이스들의 실시예를 구현하기 위한 디바이스들, 시스템들 및 방법들의 실시예들을 설명한다; 및
- 섹션 C는 다수의 디바이스들에 걸쳐 본 시스템들, 방법들 및 디바이스들의 실시예를 구현하기 위한 디바이스들, 시스템들 및 방법들의 실시예들을 설명한다.
일반적으로 도면들을 참조하면, 신경망을 구현하거나 또는 다수의 디바이스들에 걸쳐 다수의 신경망들을 구현하기 위한 시스템들 및 방법들이, 몇몇 실시예들에 따라 도시된다. 시스템들 및 방법들은 다수의 디바이스들에 걸쳐 계산들을 분리함으로써 에너지 절감들을 위한 신경망 계산들을 최적화하도록 구현될 수 있다. 시스템은 제 1 디바이스 및 제 2 디바이스를 포함할 수 있다. 몇몇 실시예들에서, 제 1 디바이스는 제 1 신경망 또는 신경망의 하나 이상의 층들의 제 1 세트를 포함한다. 제 1 디바이스는 그래픽 프로세싱 유닛(GPU), 중앙 프로세싱 유닛(CPU) 등, 또는 임의의 다른 로컬 프로세싱 회로부, 제어기들, 프로세서들 등일 수 있다. 몇몇 실시예들에서, 제 1 디바이스는 헤드 장착 디스플레이(HMD), 증강 현실(AR), 또는 가상 현실(VR) 시스템의 로컬 컴퓨터 디바이스이다. 제 2 디바이스는 제 2 신경망 또는 신경망의 하나 이상의 층들의 제 2 세트를 포함할 수 있다. 몇몇 실시예들에서, 제 2 디바이스는 제 1 디바이스, 원격 디바이스, 무선으로 연결된 프로세싱 유닛, 인공 지능 가속화기, 데스크탑 유닛, 네트워크 디바이스 등에 대하여 외부 디바이스이다. 제 1 디바이스는 하나 이상의 센서들, 외부 제어기들, 외부 컴퓨터 시스템들, 사전-프로세싱 엔진들 등으로부터 입력 데이터(예컨대, 이미지 데이터)를 수신하며 입력 데이터를 제 1 신경망으로 제공하도록 구성된다. 제 1 신경망은 제 1 신경망으로의 출력으로서 입력 데이터의 하나 이상의 특징들을 식별할 수 있다. 몇몇 실시예들에서, 제 1 디바이스는 또한 입력 데이터의 하나 이상의 특징들의 각각과 연관되거나 또는 제 1 신경망의 하나 이상의 출력들의 각각과 연관된 에러 또는 정확도를 결정한다. 몇몇 실시예들에서, 제 1 디바이스는 제 2 디바이스가 입력 데이터의 추가 분석을 위해 요구되는지를 결정하기 위해 에러 또는 정확도 및 하나 이상의 대응하는 임계 값들을 사용한다. 제 1 디바이스는 제 2 디바이스 및 신경망의 제 2 부분을 사용하지 않고 그것이 충분히 정확한 결정을 할 수 있는지 여부를 결정하기 위해 에러 또는 정확도 또는 다른 로직을 사용할 수 있다.
제 1 디바이스는 입력 데이터에 기초하여 축소된 데이터 세트를 생성하며 제 2 디바이스 상에서 신경망으로의 입력으로서 축소된 데이터 세트를 제 2 디바이스로 제공할 수 있다. 몇몇 실시예들에서, 축소된 데이터 세트는 제 1 디바이스 상에서 신경망의 출력으로서 생성된다. 몇몇 실시예들에서, 축소된 데이터 세트는 입력 데이터의 하나 이상의 특징들을 식별하는 신경망의 출력들 외에 제 1 디바이스 상에서 신경망에 의해 생성된다. 몇몇 실시예들에서, 축소된 데이터 세트는 입력 데이터와 비교할 때 크기(예컨대, 저장 크기)가 더 작다. 예를 들어, 입력 데이터가 1200×1200 픽셀들을 가진 이미지 데이터이면, 축소된 데이터 세트는 또한 이미지 데이터지만 500×500 픽셀들의 크기를 가질 수 있다. 몇몇 실시예들에서, 축소된 데이터 세트는 에러 또는 정확도가 대응하는 임계 값들보다 크거나 또는 작다는 것에 응답하여 생성된다. 몇몇 실시예들에서, 축소된 데이터 세트는 제 1 디바이스의 신경망의 하나 이상의 출력들의 에러 및/또는 정확도에 관계없이 생성되지만 정확도가 대응하는 임계 값보다 작다는 것에 응답하여 또는 에러가 대응하는 임계 값보다 크다는 것에 응답하여 단지 제 2 디바이스로만 제공된다.
몇몇 실시예들에서, 제 1 디바이스는 입력 데이터의 하나 이상의 식별된 특징들에 기초하여 동작을 수행하도록 구성된다. 몇몇 실시예들에서, 제 1 디바이스는 입력 데이터의 하나 이상의 특징들에 기초하여 하나 이상의 동작들을 수행하도록 구성된다. 몇몇 실시예들에서, 제 1 디바이스는 제 2 디바이스의 신경망으로 축소된 데이터 세트를 동시에 제공하면서 동작을 수행하도록 구성된다. 몇몇 실시예들에서, 제 1 디바이스는 제 2 디바이스로 축소된 데이터 세트를 제공하지 않고 및/또는 축소된 데이터 세트를 생성하지 않고 동작(들)을 수행하도록 구성된다. 몇몇 실시예들에서, 동작은 제 2 디바이스의 신경망의 출력들에 응답하여 또는 그것에 기초하여 수행된다. 몇몇 실시예들에서, 제 2 디바이스의 신경망의 출력들은 부가적인 식별 특징들이다. 몇몇 실시예들에서, 입력 데이터의 특징들이 제 1 디바이스의 신경망을 정확하게 식별할 수 없다면, 축소된 데이터 세트는 입력 데이터의 하나 이상의 특징들을 식별하기 위해 제 2 디바이스로 제공된다.
유리하게는, 본 출원에서 설명된 시스템들 및 방법들은 HMD 디스플레이 시스템들, AR 시스템들, VR 시스템들 등을 위한 더 효율적인 프로세싱 시스템을 가능하게 한다. 본 출원에서 설명된 시스템들 및 방법들은 단지 제 1 디바이스 상에서 신경망의 일 부분을 구현함으로써 또는 제 1 디바이스 상에 계산이 더 적은 신경망을 구현함으로써 제 1 디바이스의 프로세싱 요건들을 감소시킨다. 제 1 디바이스가 입력 데이터를 정확하게 분석할 수 있다면, 제 1 디바이스는 디스플레이상에서 사용자에게 화상을 제공하는 것과 같은 동작들을 수행하기 위해 신경망의 결과들을 사용할 수 있으며, 그에 의해 제 1 및 제 2 디바이스 사이에서 트래픽/데이터 송신을 감소시키고 에너지 소비를 감소시킨다. 제 1 디바이스가 입력 데이터를 정확하게 분석할 수 없다면, 제 1 디바이스는 축소된 데이터 세트를 생성하며 이를 제 2 디바이스로 제공할 수 있고 여기에서 축소된 데이터 세트가 추가로 분석될 수 있다. 유리하게는, 이것은 제 1 및 제 2 디바이스들 간의 데이터 송신의 빈도를 감소시키고, 제 1 및 제 2 디바이스 간에 전달된 데이터의 크기를 감소시키며, 이를 가능하게 한다.
A. 인공 지능 관련 프로세싱을 위한 환경
섹션 B에서 시스템들, 디바이스들 및/또는 방법들의 실시예들의 세부사항들을 논의하기 전에, 시스템들, 디바이스들 및/또는 방법들의 특정한 실시예들을 실시하거나 또는 구현하는데 유용한 환경들, 시스템들, 구성들 및/또는 다른 양상들을 논의하는 것이 도움이 될 수 있다. 이제 도 1a를 참조하면, 인공 지능(AI) 관련 프로세싱을 수행하기 위한 시스템의 실시예가 묘사된다. 간단한 개요에서, 시스템은 입력 데이터(110)를 사용하여 AI 관련 프로세싱을 수행할 수 있는 하나 이상의 AI 가속화기들(108)을 포함한다. AI 가속화기(108)로서 참조되지만, 그것은 때때로 신경망 가속화기(NNA), 신경망 칩 또는 하드웨어, AI 프로세서, AI 칩 등으로서 불리운다. AI 가속화기(들)(108)는 입력 데이터(110) 및/또는 파라미터들(128)(예컨대, 가중치 및/또는 바이어스 정보)에 따라, 출력 데이터(112)를 출력하거나 또는 제공하기 위해 AI 관련 프로세싱을 수행할 수 있다. AI 가속화기(108)는 하나 이상의 신경망들(114)(예컨대, 인공 신경망들), 하나 이상의 프로세서(들) 및/또는 하나 이상의 저장 디바이스들(126)을 포함하고 및/또는 구현할 수 있다.
상기 언급된 요소들 또는 구성요소들의 각각은 하드웨어 또는 하드웨어 및 소프트웨어의 조합으로 구현된다. 예를 들어, 이들 요소들 또는 구성요소들의 각각은 임의의 애플리케이션, 프로그램, 라이브러리, 스크립트, 태스크, 서비스, 프로세스 또는 디지털 및/또는 아날로그 요소들(예컨대, 하나 이상의 트랜지스터들, 논리 게이트들, 레지스터들, 메모리 디바이스들, 저항성 요소들, 도전성 요소들, 용량성 요소들)을 포함할 수 있는 회로부와 같은 하드웨어 상에서 실행하는 임의의 유형 또는 형태의 실행 가능한 지시들을 포함할 수 있다.
입력 데이터(110)는 AI 가속화기(들)(108)의 신경망(114)을 구성하고, 튜닝하고, 트레이닝하며 및/또는 활성화하기 위해, 및/또는 프로세서(들)(124)에 의한 프로세싱을 위해 임의의 유형 또는 형태의 데이터를 포함할 수 있다. 신경망(114)은 때때로 인공 신경망(ANN)으로 불리운다. 신경망을 튜닝하고 및/또는 트레이닝하는 것은 이력 데이터와 같은 트레이닝 데이터 세트들(예컨대, 입력 데이터(110)로서)이 프로세싱을 위해 신경망으로 제공되는 기계 학습의 프로세스를 나타내거나 또는 이를 포함할 수 있다. 튜닝 또는 구성은 신경망이 정확도를 개선하도록 허용하기 위해 신경망(114)의 트레이닝 또는 프로세싱을 나타내거나 또는 이를 포함할 수 있다. 신경망(114)을 튜닝하거나 또는 구성하는 것은, 예를 들어, 문제의 유형 또는 신경망(114)에 대해 요구되는 목표에 대해 성공적인 것으로 증명되어 온 아키텍처들을 사용하여 신경망을 설계하고, 형성하고, 구축하고, 합성하며, 및/또는 수립하는 것을 포함할 수 있다. 몇몇 경우들에서, 하나 이상의 신경망들(114)은 동일한 또는 유사한 베이스라인 모델에서 초기화할 수 있지만, 튜닝, 트레이닝 또는 학습 프로세스 동안, 신경망들(114)의 결과들은 각각의 신경망(114)이 특정 유형의 입력을 프로세싱하고 상이한 목표 또는 목적을 위해 베이스라인 모델에 있거나 또는 튜닝되거나 또는 트레이닝되는 상이한 신경망과 비교하여 더 높은 레벨의 정확도 및 신뢰성을 갖고 특정 유형의 출력을 생성하도록 튜닝될 수 있도록 충분히 상이할 수 있다. 신경망(114)을 튜닝하는 것은 각각의 신경망(114)에 대한 상이한 파라미터들(128)을 설정하는 것, 각각의 신경망(114)에 대해 상이하게 파라미터들(128)을 미세-튜닝하는 것, 또는 상이한 가중치들(예컨대, 하이퍼파라미터들, 또는 학습 레이트들), 텐서 플로들(tensor flow) 등을 할당하는 것을 포함할 수 있다. 따라서, 신경망(들) 및/또는 시스템의 튜닝 또는 트레이닝 프로세스 및 목표에 기초하여 신경망(들)(114)에 대한 적절한 파라미터들(128)을 설정함으로써, 이것은 전체 시스템의 성능을 개선할 수 있다.
AI 가속화기(108)의 신경망(114)은 예를 들어, 컨볼루션 신경망(CNN), 심층 컨볼루션 망, 피드 포워드 신경망(예컨대, 다층 퍼셉트론(MLP)), 심층 피드 포워드 신경망, 방사 기저 함수 신경망, 코호넨(Kohone) 자기-조직화 신경망, 순환 신경망, 모듈식 신경망, 장기/단기 메모리 신경망 등을 포함한 임의의 유형의 신경망을 포함할 수 있다. 신경망(들)(114)은 자연어 프로세싱과 같은, 데이터(예컨대, 이미지, 오디오, 비디오) 프로세싱, 오브젝트 또는 특징 인식, 추천기 함수들, 데이터 또는 이미지 분류, 데이터(예컨대, 이미지) 분석 등을 수행하기 위해 배치되거나 또는 사용될 수 있다.
예로서, 및 하나 이상의 실시예들에서, 신경망(114)은 컨볼루션 신경망으로서 구성되거나 또는 이를 포함할 수 있다. 컨볼루션 신경망은 각각이 상이한 목적을 제공할 수 있는 하나 이상의 컨볼루션 셀들(또는 풀링 층들) 및 커널들을 포함할 수 있다. 컨볼루션 신경망은 컨볼루션 커널(때때로 간단히 "커널"로서 불리움)을 포함하고, 통합하며, 및/또는 사용할 수 있다. 컨볼루션 커널은 입력 데이터를 프로세싱할 수 있으며, 풀링 층들은 예를 들어, max와 같은, 비-선형 함수들을 사용하여 데이터를 단순화하며, 그에 의해 불필요한 특징들을 감소시킬 수 있다. 컨볼루션 신경망을 포함한 신경망(114)은 이미지, 오디오, 또는 임의의 데이터 인식 또는 다른 프로세싱을 가능하게 할 수 있다. 예를 들어, 입력 데이터(110)(예컨대, 센서로부터의)는 퍼널(funnel)을 형성하는 컨볼루션 신경망의 컨볼루션 층들로 전달되어, 입력 데이터(110)에서 검출된 특징들을 압축할 수 있다. 컨볼루션 신경망의 제 1 층은 제 1 특성들을 검출할 수 있고, 제 2 층은 제 2 특성들을 검출할 수 있다.
컨볼루션 신경망은 시각적 화상, 오디오 정보, 및/또는 임의의 다른 유형 또는 형태의 입력 데이터(110)를 분석하도록 구성된 심층, 피드-포워드 인공 신경망의 유형일 수 있다. 컨볼루션 신경망은 최소 사전프로세싱을 사용하도록 설계된 다층 퍼셉트론들을 포함할 수 있다. 컨볼루션 신경망은 그것들의 공유-가중 아키텍처 및 이동 불변 특성들에 기초하여 시프트 불변 또는 공간 불변 인공 신경망들을 포함하거나 또는 그것으로 불리울 수 있다. 컨볼루션 신경망들이 다른 데이터 분류/프로세싱 알고리즘들에 비교하여 비교적 적은 사전-프로세싱을 사용할 수 있으므로, 컨볼루션 신경망은 다른 데이터 분류/프로세싱 알고리즘들에 대해 수동-엔지니어링될 수 있는 필터들을 자동으로 학습하며, 그에 의해 신경망(114)을 구성하고, 수립하거나 또는 셋업하는 것과 연관된 효율을 개선하며, 그에 의해 다른 데이터 분류/프로세싱 기술들에 대하여 기술적 이점을 제공할 수 있다.
신경망(114)은 뉴런들 또는 노드들의 입력 층(116) 및 출력 층(122)을 포함할 수 있다. 신경망(114)은 또한 뉴런들 또는 노드들의 컨볼루션 층들, 풀링 층들, 완전 연결 층들, 및/또는 정규화 층들을 포함할 수 있는 하나 이상의 은닉 층들(118, 119)을 가질 수 있다. 신경망(114)에서, 각각의 뉴런은 이전 층에서 몇몇 수의 위치들로부터 입력을 수신할 수 있다. 완전 연결 층에서, 각각의 뉴런은 이전 층의 모든 요소로부터 입력을 수신할 수 있다.
신경망(114)에서의 각각의 뉴런은 이전 층에서의 수용 필드에서 온 입력 값들에 몇몇 함수를 적용함으로써 출력 값을 계산할 수 있다. 입력 값들에 적용되는 함수는 가중치들의 벡터 및 바이어스(통상적으로 실수들)에 의해 특정된다. 신경망(114)에서의 학습(예컨대, 트레이닝 단계 동안)은 바이어스들 및/또는 가중치들에 대해 증분적 조정들을 함으로써 진행될 수 있다. 가중치들의 벡터 및 바이어스는 필터로 불리울 수 있으며 입력의 몇몇 특징(예컨대, 특정한 형태)을 나타낼 수 있다. 컨볼루션 신경망들의 구별 특징은 많은 뉴런들이 동일한 필터를 공유할 수 있다는 것이다. 이것은 단일 바이어스 및 가중치들의 단일 벡터가 그 자신의 바이어스 및 가중치들의 벡터를 가진 각각의 수용 필드보다는, 상기 필터를 공유하는 모든 수용 필드들에 걸쳐 사용될 수 있기 때문에 메모리 풋프린트를 감소시킨다.
예를 들어, 컨볼루션 층에서, 시스템은 입력 층(116)에 컨볼루션 동작을 적용하여, 결과를 다음 층으로 전달할 수 있다. 컨볼루션은 입력 자극들에 대한 개개의 뉴런의 응답을 에뮬레이팅한다. 각각의 컨볼루션 뉴런은 단지 그것의 수용 필드에 대한 데이터만을 프로세싱할 수 있다. 컨볼루션 동작을 사용하는 것은 완전 연결 피드포워드 신경망과 비교하여 신경망에서 사용된 뉴런들의 수를 감소시킬 수 있다. 따라서, 컨볼루션 동작은 자유 파라미터들의 수를 감소시켜서, 네트워크가 더 적은 파라미터들을 갖고 더 심층이도록 허용할 수 있다. 예를 들어, 입력 데이터(예컨대, 이미지 데이터) 크기에 관계없이, 각각이 동일한 공유 가중치들을 가진, 크기 5×5의 타일링 영역들이 단지 25개의 학습 가능한 파라미터들만을 사용할 수 있다. 이러한 방식으로, 컨볼루션 신경망을 가진 제 1 신경망(114)은 역전파를 사용함으로써 많은 층들을 가진 종래의 다층 신경망들을 트레이닝할 때 소실 또는 폭주 기울기 문제를 해결할 수 있다.
신경망(114)(예컨대, 컨볼루션 신경망을 갖고 구성된)은 하나 이상의 풀링 층들을 포함할 수 있다. 하나 이상의 풀링 층들은 국소적 풀링 층들 또는 전역적 풀링 층들을 포함할 수 있다. 풀링 층들은 하나의 층에서의 뉴런 클러스터들의 출력들을 다음 층에서의 단일 뉴런으로 조합할 수 있다. 예를 들어, 최대 풀링은 이전 층에서 뉴런들의 클러스터의 각각으로부터의 최대 값을 사용할 수 있다. 또 다른 예는 평균 풀링이며, 이것은 이전 층에서 뉴런들의 클러스터의 각각으로부터의 평균 값을 사용할 수 있다.
신경망(114)(예컨대, 컨볼루션 신경망을 갖고 구성된)은 완전 연결 층들을 포함할 수 있다. 완전 연결 층들은 하나의 층에서의 모든 뉴런을 또 다른 층에서의 모든 뉴런에 연결할 수 있다. 신경망(114)은 컨볼루션 층들에서 공유된 가중치들을 갖고 구성될 수 있으며, 이것은 층에서의 각각의 수용 필드를 위해 사용되는 동일한 필터를 나타낼 수 있고, 그에 의해 메모리 풋프린트를 감소시키며 제 1 신경망(114)의 성능을 개선할 수 있다.
은닉 층들(118, 119)은 입력 데이터(예컨대, 인스턴스에 대한 가상 현실 시스템으로부터의, 센서 데이터)에 기초하여 정보를 검출하도록 튜닝되거나 또는 조정되는 필터들을 포함할 수 있다. 시스템은 신경망(114)(예컨대, 컨볼루션 신경망)에서 각각의 층을 통해 움직이므로, 시스템은 제 1 층으로부터 입력을 변환하고 변환된 입력을 제 2 층으로 출력할 수 있다. 신경망(114)은 검출되고, 프로세싱되며 및/또는 계산되는 오브젝트 또는 정보의 유형, 및 입력 데이터(110)의 유형에 기초하여 하나 이상의 은닉 층들(118, 119)을 포함할 수 있다.
몇몇 실시예들에서, 컨볼루션 층은 신경망(114)의 중심 빌딩 블록이다(예컨대, CNN으로서 구성된). 층의 파라미터들(128)은 작은 수용 필드를 가진, 학습 가능한 필터들(또는 커널들)의 세트를 포함하지만, 입력 볼륨의 전체 깊이를 통해 확장될 수 있다. 전방향 패스 동안, 각각의 필터는 입력 볼륨의 폭 및 높이에 걸쳐 컨볼빙되어, 필터의 엔트리들과 입력 사이에 내적을 계산하고 상기 필터의 2-차원 활성화 맵을 생성한다. 그 결과, 신경망(114)은 그것이 입력에서의 몇몇 공간 위치에서 몇몇 특정 유형의 특징을 검출할 때 활성화하는 필터들을 학습할 수 있다. 깊이 차원을 따라 모든 필터들에 대한 활성화 맵들을 쌓는 것은 컨볼루션 층의 전체 출력 볼륨을 형성한다. 출력 볼륨에서 모든 엔트리는 따라서 또한 입력에서의 작은 영역을 보고 동일한 활성화 맵에서의 뉴런들과 파라미터들을 공유하는 뉴런의 출력으로서 해석될 수 있다. 컨볼루션 층에서, 뉴런들은 이전 층이 제한된 서브면적으로부터 입력을 수신할 수 있다. 통상적으로, 서브면적은 정사각형 형태(예컨대, 크기 5×5)이다. 뉴런의 입력 면적은 그것의 수용 필드로 불리운다. 따라서, 완전 연결 층에서, 수용 필드는 전체 이전 층이다. 컨볼루션 층에서, 수용 면적은 전체 이전 층보다 작을 수 있다.
제 1 신경망(114)은 입력 데이터(110)를 검출하고, 분류하고, 분할하며 및/또는 변환하도록 트레이닝될 수 있다(예컨대, 입력 데이터(110)에 기초하여, 오브젝트들, 이벤트들, 워드들 및/또는 다른 특징들의 확률들을 검출하거나 또는 결정함으로써). 예를 들어, 신경망(114)의 제 1 입력 층(116)은 입력 데이터(110)를 수신하고, 데이터를 제 1 중간 출력으로 변환하도록 입력 데이터(110)를 프로세싱하며, 제 1 중간 출력을 제 1 은닉 층(118)으로 포워딩할 수 있다. 제 1 은닉 층(118)은 제 1 중간 출력을 수신하고, 제 1 중간 출력을 제 2 중간 출력으로 변환하도록 제 1 중간 출력을 프로세싱하며, 제 2 중간 출력을 제 2 은닉 층(119)으로 포워딩할 수 있다. 제 2 은닉 층(119)은 제 2 중간 출력을 수신하고, 제 2 중간 출력을 제 3 중간 출력으로 변환하도록 제 2 중간 출력을 프로세싱하며, 제 3 중간 출력을 예를 들어 출력 층(122)으로 포워딩할 수 있다. 출력 층(122)은 제 2 중간 출력을 수신하고, 제 3 중간 출력을 출력 데이터(112)로 변환하도록 제 3 중간 출력을 프로세싱하며, 출력 데이터(112)를 포워딩할 수 있다(예컨대, 사용자로의 렌더링을 위해, 저장 등을 위해, 가능하게는 사후-프로세싱 엔진으로). 출력 데이터(112)는 예들로서, 오브젝트 검출 데이터, 강화된/변환된/증대된 데이터, 추천, 분류, 및/또는 분할된 데이터를 포함할 수 있다.
다시 도 1a를 참조하면, AI 가속화기(108)는 하나 이상의 저장 디바이스들(126)을 포함할 수 있다. 저장 디바이스(126)는 AI 가속화기(들)(108)와 연관된 임의의 유형 또는 형태의 데이터를 저장하고, 유지하거나 또는 관리하도록 설계되거나 또는 구현될 수 있다. 예를 들어, 데이터는 AI 가속화기(들)(108)에 의해 수신되는 입력 데이터(110), 및/또는 출력 데이터(112)(예컨대, 다음 디바이스 또는 프로세싱 스테이지로 출력되기 전)를 포함할 수 있다. 데이터는 신경망(들)(114) 및/또는 프로세서(들)(124)의 프로세싱 스테이지들 중 임의의 것을 위해, 또는 그로부터의 중간 데이터를 포함할 수 있다. 데이터는 신경망(들)(114)의 뉴런으로의 입력 및 그곳에서의 프로세싱을 위해 하나 이상의 피연산자들을 포함할 수 있으며, 이것은 저장 디바이스(126)로부터 판독되거나 또는 액세스될 수 있다. 예를 들어, 데이터는 신경망(들)(114)의 하나 이상의 뉴런들(또는 노드들) 및/또는 층들에 대한 입력 데이터, 가중치 정보 및/또는 바이어스 정보, 활성화 함수 정보, 및/또는 파라미터들(128)을 포함할 수 있으며, 이것은 저장 디바이스(126)에 저장되며 그로부터 판독되거나 또는 액세스될 수 있다. 데이터는 신경망(들)(114)의 뉴런으로부터의 출력 데이터를 포함할 수 있으며, 이것은 저장 디바이스(126)로 기록되며 그것에 저장될 수 있다. 예를 들어, 데이터는 신경망(들)(114)의 하나 이상의 뉴런들(또는 노드들) 및/또는 층들에 대한 활성화 데이터, 개선된 또는 업데이트된 데이터(예컨대, 예를 들어 트레이닝 단계로부터의 가중치 정보 및/또는 바이어스 정보, 활성화 함수 정보, 및/또는 다른 파라미터들(128))를 포함할 수 있으며, 이것은 저장 디바이스(126)로 전달되거나 또는 기록되며, 그것에 저장될 수 있다.
몇몇 실시예들에서, AI 가속화기(108)는 하나 이상의 프로세서들(124)을 포함할 수 있다. 하나 이상의 프로세서들(124)은 신경망(들)(114) 또는 AI 가속화기(들)(108) 중 임의의 하나 이상에 대한 입력 데이터를 사전-프로세싱하기 위한, 및/또는 신경망(들)(114) 또는 AI 가속화기(들)(108) 중 임의의 하나 이상에 대한 출력 데이터를 사후-프로세싱하기 위한 임의의 로직, 회로부, 및/또는 프로세싱 구성요소(예컨대, 마이크로프로세서)를 포함할 수 있다. 하나 이상의 프로세서들(124)은 신경망(들)(114) 또는 AI 가속화기(들)(108)의 하나 이상의 동작들을 구성하고, 제어하며, 및/또는 관리하기 위한 로직, 회로부, 프로세싱 구성요소 및/또는 기능을 제공할 수 있다. 예를 들어, 프로세서(124)는 전력 소비를 제어하거나 또는 감소시키기 위해 신경망(114)과 연관된 데이터 또는 신호들을 수신할 수 있다(예컨대, 신경망(114)의 동작들을 구현한 회로부상에서의 클록-게이팅 제어들을 통해). 또 다른 예로서, 프로세서(124)는 별개의 프로세싱(예컨대, 예를 들어, 동시에 AI 가속화기(108)의 다양한 구성요소들에서), 순차적 프로세싱(예컨대, 상이한 시간들 또는 스테이지들에서, AI 가속화기(108)의 동일한 구성요소 상에서)을 위해, 또는 저장 디바이스의 상이한 메모리 슬라이스들에서, 또는 상이한 저장 디바이스들에서의 저장을 위해 데이터를 분할하고 및/또는 재-배열할 수 있다. 몇몇 실시예들에서, 프로세서(들)(124)는 예컨대, 신경망(114)의 뉴런들 및/또는 층들에 대한 특정 가중치, 활성화 함수 및/또는 파라미터 정보를 식별하고, 선택하며, 및/또는 로딩함으로써, 특정한 콘텍스트에 대해 동작하고, 특정한 유형의 프로세싱을 제공하도록, 및/또는 특정 유형의 입력 데이터를 어드레싱하도록 신경망(114)을 구성할 수 있다.
몇몇 실시예들에서, AI 가속화기(108)는 심층 학습 및/또는 AI 작업부하들을 핸들링하거나 또는 프로세싱하도록 설계되고 및/또는 구현된다. 예를 들어, AI 가속화기(108)는 인공 신경망들, 기계 비전 및 기계 학습을 포함한, 인공 지능 애플리케이션들을 위한 하드웨어 가속화를 제공할 수 있다. AI 가속화기(108)는 로봇 공학 관련, 사물 인터넷(IoT) 관련, 및 다른 데이터-집약적 또는 센서-구동 태스크들을 핸들링하기 위한 동작에 대해 구성될 수 있다. AI 가속화기(108)는 다중-코어 또는 다수의 프로세싱 요소(PE) 설계를 포함할 수 있으며, 인공 현실(예컨대, 가상, 증강 또는 혼합 현실) 시스템들, 스마트폰들, 태블릿들, 및 컴퓨터들과 같은 다양한 유형들 및 형태들의 디바이스들로 통합될 수 있다. AI 가속화기(108)의 특정한 실시예들은 적어도 하나의 디지털 신호 프로세서(DSP), 코-프로세서, 마이크로프로세서, 컴퓨터 시스템, 프로세서들의 이종 컴퓨팅 구성, 그래픽 프로세싱 유닛(GPU), 필드-프로그램 가능한 게이트 어레이(FPGA), 및/또는 애플리케이션-특정 집적 회로(ASIC)를 포함하거나 또는 그것을 사용하여 구현될 수 있다. AI 가속화기(108)는 트랜지스터 기반, 반도체 기반 및/또는 양자 컴퓨팅 기반 디바이스일 수 있다.
이제 도 1b를 참조하면, AI 관련 프로세싱을 수행하기 위한 디바이스의 예시적인 실시예가 묘사된다. 간단한 개요에서, 디바이스는 예컨대, 도 1a와 관련되어 상기 설명된 하나 이상의 특징들과 함께, AI 가속화기(108)를 포함하거나 또는 그것에 대응할 수 있다. AI 가속화기(108)는 하나 이상의 저장 디바이스들(126)(예컨대, 정적 랜덤-액세스 메모리(SRAM) 디바이스와 같은 메모리), 하나 이상의 버퍼들, 복수의 프로세싱 요소(PE) 회로들 또는 그것의 어레이, 다른 로직 또는 회로부(예컨대, 가산기 회로부), 및/또는 다른 구조들 또는 구성들(예컨대, 상호연결부들, 데이터 버스들, 클록 회로부, 전력 네트워크(들))을 포함할 수 있다. 상기 언급된 요소들 또는 구성요소들의 각각은 하드웨어에, 또는 적어도 하드웨어 및 소프트웨어의 조합으로 구현된다. 하드웨어는 예를 들어 회로 요소들(예컨대, 하나 이상의 트랜지스터들, 논리 게이트들, 레지스터들, 메모리 디바이스들, 저항성 요소들, 도전성 요소들, 용량성 요소들, 및/또는 와이어 또는 전기적 도전성 커넥터들)을 포함할 수 있다.
AI 가속화기(108)에 구현된 신경망(114)(예컨대, 인공 신경망)에서, 뉴런들은 다양한 형태들을 취할 수 있으며 프로세싱 요소들(PE들) 또는 PE 회로들로 불리울 수 있다. 뉴런은 대응하는 PE 회로로서 구현될 수 있으며, 뉴런에서 발생할 수 있는 프로세싱/활성화는 PE 회로에서 수행될 수 있다. PE들은 특정한 네트워크 패턴 또는 어레이에 연결되며, 상이한 패턴들은 상이한 기능 목적들을 제공한다. 인공 신경망에서의 PE는 전기적으로 동작하며(예컨대, 반도체 구현의 실시예에서), 아날로그, 디지털, 또는 하이브리드일 수 있다. 생물학적 시냅스의 효과와 유사하도록, PE들 간의 연결들은, 적절한 시스템 출력을 생성하도록 교정되거나 또는 "트레이닝"될 수 있는, 곱셈 가중치들을 할당받을 수 있다.
PE는 다음의 식들(예컨대, 뉴런의 매컬로크-피츠(McCulloch-Pitts) 모델을 나타내는)에 대하여 정의될 수 있다:
Figure pct00001
(1)
Figure pct00002
(2)
여기에서 ζ는 입력들의 가중 합(예컨대, 입력 벡터 및 탭-가중 벡터의 내적)이며, σ(ζ)는 가중 합의 함수이다. 가중치 및 입력 요소들이 벡터들(w 및 x)을 형성하는 경우, ζ 가중 합은 단순한 점 곱이 된다:
Figure pct00003
(3)
이것은 활성화 함수(예컨대, 임계치 비교의 경우에) 또는 전달 함수로서 불리울 수 있다. 몇몇 실시예들에서, 하나 이상의 PE들은 점 곱 엔진으로서 불리울 수 있다. 신경망(114)으로의 입력(예컨대, 입력 데이터(110)), x는 입력 공간으로부터 올 수 있으며 출력(예컨대, 출력 데이터(112))은 출력 공간의 부분이다. 몇몇 네트워크들에 대해, 출력 공간(Y)은 {0, 1}만큼 단순할 수 있거나, 또는 그것은 복잡한 다중-차원(예컨대, 다중 채널) 공간(예컨대, 컨볼루션 신경망에 대해)일 수 있다. 신경망들은 입력 공간에서 자유도 당 하나의 입력, 및 출력 공간에서 자유도 당 하나의 출력을 갖는 경향이 있다.
몇몇 실시예들에서, PE들은 시스톨릭(systolic) 어레이로서 배열되며 및/또는 구현될 수 있다. 시스톨릭 배열은 셀들 또는 노드들로 불리우는, PE들과 같은 결합된 데이터 프로세싱 유닛들(DPU들)의 네트워크(예컨대, 동종 네트워크)일 수 있다. 각각의 노드 또는 PE는 그것의 업스트림 이웃들로부터 수신된 데이터의 함수로서 부분 결과를 독립적으로 계산할 수 있고, 그 자체 내에 결과를 저장할 수 있으며 예를 들어 결과를 다운스트림으로 전달할 수 있다. 시스톨릭 어레이는 하드와이어드되거나 또는 특정 애플리케이션을 위해 구성된 소프트웨어일 수 있다. 노드들 또는 PE들은 고정되며 동일할 수 있고, 시스톨릭 어레이의 상호연결부는 프로그램 가능할 수 있다. 시스톨릭 어레이들은 동기식 데이터 전달들에 의존할 수 있다.
다시 도 1b를 참조하면, PE(120)로의 입력(x)은 저장 디바이스(126)(예컨대, SRAM)로부터 판독되거나 또는 액세스되는 입력 스트림(132)의 부분일 수 있다. 입력 스트림(132)은 PE들의 하나의 로우(수평 뱅크 또는 그룹)로 향해질 수 있으며, PE들 중 하나 이사에 걸쳐 공유되거나, 또는 각각의 PE들에 대한 입력들로서 데이터 부분들(중첩 또는 비-중첩 데이터 부분들)로 분할될 수 있다. 가중치 스트림(134)(예컨대, 저장 디바이스(126)로부터 판독된)에서의 가중치들(134)(또는 가중치 정보)은 PE들의 컬럼(수직 뱅크 또는 그룹)으로 향해지거나 또는 제공될 수 있다. 컬럼에서 PE들의 각각은 동일한 가중치(134)를 공유하거나 또는 대응하는 가중치(134)를 수신할 수 있다. 각각의 타겟 PE에 대한 입력 및/또는 가중치는 (예컨대, 저장 디바이스(126)로부터) 타겟 PE로 직접 라우팅될 수 있거나(예컨대, 다른 PE(들)를 통과하지 않고), 또는 하나 이상의 PE들을 통해(예컨대, PE들의 로우 또는 컬럼을 따라) 타겟 PE로 라우팅될 수 있다. 각각의 PE의 출력은 PE 어레이로부터 직접 라우팅될 수 있거나(예컨대, 다른 PE(들)를 통과하지 않고), 또는 PE 어레이를 빠져나가기 위해 하나 이상의 PE들을 통해(예컨대, PE들의 컬럼을 따라) 라우팅될 수 있다. PE들의 각각의 컬럼의 출력들은 각각의 컬럼의 가산기 회로부에서 합산되거나 또는 더해질 수 있으며, PE들의 각각의 컬럼에 대한 버퍼(130)로 제공될 수 있다. 버퍼(들)(130)는 수신된 출력들을 저장 디바이스(126)로 제공하고, 전달하고, 라우팅하고, 기록하며, 및/또는 저장할 수 있다. 몇몇 실시예들에서, 저장 디바이스(126)로 저장되는 출력들(예컨대, 신경망의 하나의 층으로부터의 활성화 데이터)은 저장 디바이스(126)로부터 검색되거나 또는 판독될 수 있으며, 나중에 프로세싱(신경망의 다음 층의)을 위해 PE들(120)의 어레이로의 입력들로서 사용될 수 있다. 특정한 실시예들에서, 저장 디바이스(126)로 저장되는 출력들은 AI 가속화기(108)에 대한 출력 데이터(112)로서 저장 디바이스(126)로부터 검색되거나 또는 판독될 수 있다.
이제 도 1c를 참조하면, AI 관련 프로세싱을 수행하기 위한 디바이스의 일 예시적인 실시예가 묘사된다. 간략한 개요에서, 디바이스는 예컨대, 도 1a 및 도 1b와 관련하여 상기 설명된 하나 이상의 특징들을 갖고, AI 가속화기(108)를 포함하거나 또는 그것에 대응할 수 있다. AI 가속화기(108)는 하나 이상의 PE들(120), 다른 로직 또는 회로부(예컨대, 가산기 회로부), 및/또는 다른 구조들 또는 구성들(예컨대, 상호연결부들, 데이터 버스들, 클록 회로부, 전력 네트워크(들))을 포함할 수 있다. 상기 언급된 요소들 또는 구성요소들의 각각은 하드웨어로, 또는 적어도 하드웨어 및 소프트웨어의 조합으로 구현된다. 하드웨어는 예를 들어, 회로 요소들(예컨대, 하나 이상의 트랜지스터들, 논리 게이트들, 레지스터들, 메모리 디바이스들, 저항성 요소들, 도전성 요소들, 용량성 요소들, 및/또는 와이어 또는 전기적 도전성 커넥터들)을 포함할 수 있다.
몇몇 실시예들에서, PE(120)는 하나 이상의 곱셈-누산(MAC) 유닛들 또는 회로들(140)을 포함할 수 있다. 하나 이상의 PE들은 때때로 (개별적으로 또는 총괄하여) MAC 엔진으로 불리울 수 있다. MAC 유닛은 곱셈-누산 연산(들)을 수행하도록 구성된다. MAC 유닛은 곱셈기 회로, 가산기 회로 및/또는 누산기 회로를 포함할 수 있다. 곱셈-누산 연산은 2개의 숫자들의 곱을 계산하며 상기 곱을 누산기에 더한다. MAC 연산은 누산기 피연산자(a), 및 입력들(b 및 c)과 관련하여, 다음과 같이 표현될 수 있다:
Figure pct00004
(4)
몇몇 실시예들에서, MAC 유닛(140)은 가산기에 앞서 조합 로직에 구현된 곱셈기(예컨대, 조합 로직을 포함하는) 및 결과를 저장하는 누산기 레지스터(예컨대, 순차적 및/또는 조합 로직을 포함하는)를 포함할 수 있다. 누산기 레지스터의 출력은 가산기의 하나의 입력으로 다시 공급될 수 있으며, 따라서 각각의 클록 사이클 상에서, 곱셈기의 출력은 레지스터로 더해질 수 있다.
상기 논의된 바와 같이, 상기 논의된 바와 같이, MAC 유닛(140)은 곱셈 및 덧셈 함수들 양쪽 모두를 수행할 수 있다. MAC 유닛(140)은 두 개의 스테이지들에서 동작할 수 있다. MAC 유닛(140)은 먼저 제 1 스테이지에서 주어진 숫자들(입력들)의 곱을 계산하며 제 2 스테이지 동작(예컨대, 덧셈 및/또는 누산) 동안 결과를 포워딩할 수 있다. n-비트 MAC 유닛(140)은 n-비트 곱셈기, 2n-비트 가산기, 및 2n-비트 누산기를 포함할 수 있다. MAC 유닛들(140)(예컨대, PE들에서)의 어레이 또는 복수의 그것은 병렬 적분, 컨볼루션, 상관, 행렬 곱셈, 데이터 정렬, 및/또는 데이터 분석 태스크들을 위해, 시스톨릭 어레이에 배열될 수 있다.
본 출원에서 설명된 다양한 시스템들 및/또는 디바이스들이 컴퓨팅 시스템에서 구현될 수 있다. 도 1d는 대표적인 컴퓨팅 시스템(150)의 블록도를 도시한다. 몇몇 실시예들에서, 도 1a의 시스템은 컴퓨팅 시스템(150)의 프로세싱 유닛(들)(156)의 적어도 부분을 형성할 수 있다. 컴퓨팅 시스템(150)은, 예를 들어, 스마트폰, 다른 이동 전화, 태블릿 컴퓨터, 착용 가능한 컴퓨팅 디바이스(예컨대, 스마트 워치, 안경들, 헤드 장착 디스플레이), 데스크탑 컴퓨터, 랩탑 컴퓨터와 같은 디바이스(예컨대, 소비자 디바이스)로서 구현되거나, 또는 분산형 컴퓨팅 디바이스들로 구현될 수 있다. 컴퓨팅 시스템(150)은 VR, AR, MR 경험을 제공하기 위해 구현될 수 있다. 몇몇 구현들에서, 컴퓨팅 시스템(150)은 프로세서들(156), 저장 디바이스(158), 네트워크 인터페이스(151), 사용자 입력 디바이스(152), 및 사용자 출력 디바이스(154)와 같은 종래의, 특수화된 또는 맞춤 컴퓨터 구성요소들을 포함할 수 있다.
네트워크 인터페이스(151)는 (로컬/원격) 서버 또는 백-엔드 시스템의 네트워크 인터페이스가 또한 연결되는 근거리/광역 네트워크(예컨대, 인터넷)로의 연결을 제공할 수 있다. 네트워크 인터페이스(151)는 유선 인터페이스(예컨대, 이더넷) 및/또는 Wi-Fi, Bluetooth, 또는 셀룰러 데이터 네트워크 표준들(예컨대, 3G, 4G, 5G, 60GHz LTE 등)과 같은 다양한 RF 데이터 통신 표준들을 구현한 무선 인터페이스를 포함할 수 있다.
사용자 입력 디바이스(152)는 사용자가 컴퓨팅 시스템(150)으로 신호들을 제공할 수 있는 임의의 디바이스(또는 디바이스들)를 포함할 수 있고; 컴퓨팅 시스템(150)은 특정한 사용자 요청들 또는 정보를 나타내는 것으로서 신호들을 해석할 수 있다. 사용자 입력 디바이스(152)는 키보드, 터치 패드, 터치 스크린, 마우스 또는 다른 포인팅 디바이스, 스크롤 휠, 클릭 휠, 다이얼, 버튼, 스위치, 키패드, 마이크로폰, 센서들(예컨대, 모션 센서, 눈 추적 센서 등) 등 중 임의의 것 또는 모두를 포함할 수 있다.
사용자 출력 디바이스(154)는 컴퓨팅 시스템(150)이 정보를 사용자에게 제공할 수 있는 임의의 디바이스를 포함할 수 있다. 예를 들어, 사용자 출력 디바이스(154)는 컴퓨팅 시스템(150)에 의해 생성되거나 또는 그것으로 전달된 디스플레이 이미지들에 대한 디스플레이를 포함할 수 있다. 디스플레이는 지원하는 전자장치들(예컨대, 디지털-아날로그 또는 아날로그-디지털 변환기들, 신호 프로세서들 등)과 함께, 다양한 이미지 생성 기술들, 예컨대, 액정 디스플레이(LCD), 유기 발광 다이오드들(OLED)을 포함한 발광 다이오드(LED), 투영 시스템, 음극선관(CRT) 등을 통합할 수 있다. 입력 및 출력 디바이스 양쪽 모두로서 기능하는 터치스크린과 같은 디바이스가 사용될 수 있다. 출력 디바이스들(154)이 디스플레이 외에 또는 그 대신에 제공될 수 있다. 예들은 지시등들, 스피커들, 촉각 "디스플레이" 디바이스들, 프린터들 등을 포함한다.
몇몇 구현들은 컴퓨터 판독 가능한 저장 매체에 컴퓨터 프로그램 지시들을 저장하는 마이크로프로세서들, 저장장치 및 메모리와 같은, 전자 구성요소들을 포함한다. 본 명세서에서 설명된 특징들 중 많은 것이 컴퓨터 판독 가능한 저장 매체상에 인코딩된 프로그램 지시들의 세트로서 특정되는 프로세스들로서 구현될 수 있다. 이들 프로그램 지시들이 하나 이상의 프로세서들에 의해 실행될 때, 그것들은 프로세서들로 하여금 프로그램 지시들에서 표시된 다양한 동작들을 수행하게 한다. 프로그램 지시들 또는 컴퓨터 코드의 예들은 컴파일러에 의해 생성되는 것과 같은, 기계 코드, 및 해석기를 사용하여 컴퓨터, 전자 구성요소, 또는 마이크로프로세서에 의해 실행되는 상위-레벨 코드를 포함한 파일들을 포함한다. 적절한 프로그래밍을 통해, 프로세서(156)는 본 출원에서 서버 또는 클라이언트에 의해 수행되는 것으로 설명된 기능, 또는 메시지 관리 서비스들과 연관된 다른 기능 중 임의의 것을 포함한, 컴퓨팅 시스템(150)에 대한 다양한 기능을 제공할 수 있다.
컴퓨팅 시스템(150)은 예시적이며 변형들 및 수정들이 가능하다는 것이 이해될 것이다. 본 발명과 관련하여 사용된 컴퓨터 시스템들은 본 출원에서 구체적으로 설명되지 않은 다른 능력들을 가질 수 있다. 뿐만 아니라, 컴퓨팅 시스템(150)은 특정한 블록들을 참조하여 설명되지만, 이들 블록들은 설명의 편리함을 위해 정의되며 구성요소 부분들의 특정한 물리적 배열을 내포하도록 의도되지 않는다는 것이 이해될 것이다. 예를 들어, 상이한 블록들은 동일한 설비에, 동일한 서버 랙에, 또는 동일한 마더보드 상에 위치될 수 있다. 뿐만 아니라, 블록들은 물리적으로 별개의 구성요소들에 대응할 필요는 없다. 블록들은, 예컨대, 프로세서를 프로그램하거나 또는 적절한 제어 회로부를 제공함으로써, 다양한 동작들을 수행하도록 구성될 수 있으며, 다양한 블록들은 초기 구성이 어떻게 획득되는지에 의존하여 재구성 가능하거나 또는 재구성 가능하지 않을 수 있다. 본 발명의 구현들은 회로부 및 소프트웨어의 임의의 조합을 사용하여 구현된 전자 디바이스들을 포함한 다양한 장치에서 실현될 수 있다. <AI 하드웨어에 대한 표준 문안의 끝>
B. 헤드 장착 디스플레이를 위한 시스템들, 방법들, 및 디바이스들
AR 시스템들은 적절한 깊이로 사용자에게 이미지들을 제공하기 위해 HMD(또한, 헤드-착용 디스플레이(HWD)로서 불리울 수 있음)를 사용할 수 있다. HMD는 씬에서 오브젝트들 또는 특징들에 대한 깊이 정보를 결정하며 결정된 깊이로 이들 오브젝트들 및 특징들을 렌더링할 수 있다(예컨대, 적어도 부분적으로 깊이 정보에 응답하여). 예를 들어, HMD는 좌측 눈 이미지들 및 우측 눈 이미지들을 순차적으로 또는 동시에 제공함으로써와 같은, 입체적으로 보일 수 있는 이미지들을 제공하여, 사용자가 3D 환경을 지각할 수 있게 하기 위해 사용될 수 있다. HMD 또는 AR 시스템은 좌측 눈 및 우측 눈 이미지들과 같은, 다수의 관점들에서 이미지들을 캡처하는 하나 이상의 카메라들을 포함할 수 있다.
HMD 또는 AR 시스템은, HMD의 사용자의 눈들의 위치들 및 배향들을 모니터링하거나 또는 추적하기 위해, 프로세서, 눈 추적 센서들, 또는 그것의 조합들에 의해 적어도 부분적으로 동작될 수 있는, 눈 추적 동작을 사용할 수 있다. 예를 들어, 눈 추적 동작은 사용자가 응시하고 있는 방향을 결정하기 위해 사용될 수 있다. 눈 추적 동작은 사용자의 눈들에 대하여 이미지들이 디스플레이되는 곳을 결정하기 위해서와 같은, 사용자에게 이미지들을 제공하기 위해 사용되는 HMD 또는 AR 시스템의 구성요소들로 방향 정보를 제공할 수 있다.
몇몇 실시예들에서, 시스템은 카메라들 또는 깊이 센서들로부터의 센서 데이터를 사용함으로써와 같은, HMD 또는 AR 시스템 주위의 씬 또는 환경에서의 오브젝트들의 위치들에 기초하여 씬 이해를 결정할 수 있다. 시스템은 사용자가 오브젝트를 잡고 있거나 또는 이동시키고, 오브젝트를 응시하거나, 또는 오브젝트와 연관된 텍스트를 읽고 있다고 결정함으로써와 같은, 센서 데이터에 기초하여 사용자가 하나 이상의 오브젝트들과 상호작용하고 있음을 결정할 수 있다. 시스템은 상기 오브젝트가 사용자의 응시 방향의 임계 범위에 있는 유일한 오브젝트임에 기초하여 사용자가 오브젝트와 상호작용하고 있음을 결정할 수 있다. 시스템은 오브젝트가 사운드를 출력하고 있음을 검출함으로써와 같은, 오디오 큐들에 기초하여 사용자가 오브젝트와 상호작용하고 있음을 결정할 수 있다. 시스템은, 가변초점 시스템이 이접 운동 평면에 매칭시키기 위해 초점을 조정할 수 있도록 이접 운동 평면을 추정하기 위해 응시 방향 또는 오브젝트의 위치를 사용함으로써와 같은, 이접 운동 큐로서 응시 방향 정보를 사용하여 가변초점 시스템을 교정할 수 있다. 시스템은 눈 추적을 위한 기계 학습 모델들을 동작시킬 수 있다. 시스템은 HMD의 하나 이상의 도파관들의 동적 균일성 정정을 가능하게 하기 위해서와 같은, HMD에 의한 렌더링 및 투영기 출력을 정정하기 위한 동공 위치들을 식별하기 위해 눈 추적 교정을 사용할 수 있다. 시스템은 눈 추적의 교정을 사용하여 포비티드 렌더링을 수행할 수 있다.
이제 도 2a를 참조하면, 시스템(280)은 복수의 센서들(238a...n), 프로세싱 회로부(250), 및 하나 이상의 디스플레이들(264)을 포함할 수 있다. 시스템(280)은 도 2b를 참조하여 설명된 HMD 시스템(200)을 사용하여 구현될 수 있다. 시스템(280)은 도 4를 참조하여 설명된 컴퓨팅 환경을 사용하여 구현될 수 있다. 시스템(280)은 VR 시스템들의 특징들을 통합하며 그것의 특징들을 구현하기 위해 사용될 수 있다. 프로세싱 회로부(250)의 적어도 일부는 GPU를 사용하여 구현될 수 있다. 프로세싱 회로부(250)의 기능들은 복수의 프로세싱 유닛들을 사용하여 분산형 방식으로 실행될 수 있다.
프로세싱 회로부(250)는 하나 이상의 회로들, 프로세서들, 및/또는 하드웨어 구성요소들을 포함할 수 있다. 프로세싱 회로부(250)는 본 출원에서 설명된 동작들 중 임의의 것을 수행하기 위해 임의의 로직, 기능들 또는 지시들을 구현할 수 있다. 프로세싱 회로부(250)는 회로들, 프로세서들 또는 하드웨어 구성요소들 중 임의의 것에 의해 실행 가능한 임의의 유형 또는 형태의 실행 가능한 지시들을 포함할 수 있다. 실행 가능한 지시들은 애플리케이션들, 프로그램들, 서비스들, 태스크들, 스크립트들, 라이브러리들, 프로세스들 및/또는 펌웨어를 포함한 임의의 유형일 수 있다. 오브젝트 위치 검출기(222), 눈 추적기(244), 또는 이미지 렌더러(260) 중 임의의 것은 그것들 각각의 기능들 및 동작들을 수행하기 위해 회로부 및 실행 가능한 지시들의 임의의 조합 또는 배열일 수 있다. 프로세싱 회로부(250)의 적어도 몇몇 부분들은 센서들(238)에 의해 실행된 이미지 프로세싱을 구현하기 위해 사용될 수 있다.
센서들(238a...n)은 비디오 카메라들을 포함하여, 이미지 캡처 디바이스들 또는 카메라들일 수 있다. 센서들(238a...n)은 비교적 낮은 품질(예컨대, 비교적 낮은 선명도, 분해능, 또는 동적 범위)의 이미지들을 생성하는 카메라들일 수 있으며, 이것은 시스템(280)의 SWAP을 감소시키도록 도울 수 있다. 예를 들어, 센서들(238a...n)은 약 수백 개의 픽셀들×수백 개의 픽셀들의 분해능들을 가진 이미지들을 생성할 수 있다. 동시에, 본 출원에서 설명된 바와 같이 시스템(280)에 의해 실행된 프로세스들은 깊이 특성들을 포함하여, 원하는 품질 특성들을 가진 디스플레이 이미지들을 사용자로의 프리젠테이션을 위해 생성하기 위해 사용될 수 있다.
센서들(238a...n)(일반적으로 본 출원에서 센서들(238)로서 불리움)은 임의의 유형의 하나 이상의 카메라들을 포함할 수 있다. 카메라들은 가시 광 카메라들(예컨대, 컬러 또는 흑백), 적외선 카메라들, 또는 그것의 조합들일 수 있다. 센서들(238a...n)은 각각 하나 이상의 렌즈들(226a...j)(일반적으로 본 출원에서 렌즈들(226)로서 불리움)을 포함할 수 있다. 몇몇 실시예들에서, 센서(238)는 각각의 렌즈(226)에 대한 카메라를 포함할 수 있다. 몇몇 실시예들에서, 센서(238)는 다수의 렌즈들(226a...j)을 가진 단일 카메라를 포함한다. 몇몇 실시예들에서, 센서(238)는, 각각이 다수의 렌즈들(226)을 가진, 다수의 카메라들을 포함할 수 있다. 센서(238)의 하나 이상의 카메라들은 미리 결정된 분해능이며 및/또는 미리 결정된 시야를 갖도록 선택되거나 또는 설계될 수 있다. 몇몇 실시예들에서, 하나 이상의 카메라들은 증강 현실을 위한 HMD의 시야에서와 같은, 오브젝트들을 검출하고 추적하기 위한 분해능 및 시야를 갖도록 선택되고 및/또는 설계된다. 하나 이상의 카메라들은 이미지 캡처 디바이스들에 의해 캡처된 씬 또는 환경에서 오브젝트들을 추적하는 것 및 본 출원에서 설명된 교정 기술들을 수행하는 것과 같은, 다수의 목적들을 위해 사용될 수 있다.
센서(238) 및 렌즈(226)의 하나 이상의 카메라들이 HMD의 사용자 또는 착용자의 좌측-눈 뷰 및 사용자 또는 착용자의 우측-눈 뷰에 대응하도록 HMD 상에 장착되고, 통합되고, 포함되거나 또는 배열될 수 있다. 예를 들어, HMD는 착용자의 좌측 눈에 또는 그 가까이에 대응하는 HMD의 좌측 측면 상에서 앞을 향해 장착된 제 1 렌즈를 가진 제 1 카메라 및 착용자의 우측 눈에 또는 그 가까이에 대응하는 HMD의 우측-측면 상에서 앞을 향해 장착된 제 2 렌즈를 가진 제 2 카메라를 포함할 수 있다. 좌측 카메라 및 우측 카메라는 입체 이미지 캡처링을 제공하는 카메라들의 전면 쌍을 형성할 수 있다. 몇몇 실시예들에서, HMD는 HMD의 최상부를 향해 제공하는 제 1과 제 2 카메라들 사이에 있으며 제 1, 제 2, 및 제 3 카메라들 사이에 삼각형 형태를 형성하는 제 3 카메라와 같은, 하나 이상의 부가적인 카메라들을 가질 수 있다. 이러한 제 3 카메라는 본 솔루션의 깊이 버퍼 생성 기술들을 수행할 때 삼각측량 기술들을 위해, 뿐만 아니라 오브젝트 추적을 위해 사용될 수 있다.
시스템(280)은 제 1 렌즈(226a)를 포함하는 제 1 센서(예컨대, 이미지 캡처 디바이스)(238a)로서, 상기 제 1 렌즈(238a)는 제 1 뷰의 제 1 이미지(234a)를 캡처하도록 배열되는, 상기 제 1 센서(238a), 및 제 2 렌즈(226b)를 포함하는 제 2 센서(238b)로서, 상기 제 2 센서(238b)는 제 2 뷰의 제 2 이미지(234b)를 캡처하도록 배열되는, 상기 제 2 센서(238b)를 포함할 수 있다. 제 1 뷰 및 제 2 뷰는 상이한 관점들에 대응하여, 깊이 정보가 제 1 이미지(234a) 및 제 2 이미지(234b)로부터 추출될 수 있게 할 수 있다. 예를 들어, 제 1 뷰는 좌측 눈 뷰에 대응할 수 있으며, 제 2 뷰는 우측 눈 뷰에 대응할 수 있다. 시스템(280)은 제 3 렌즈(226c)를 포함하는 제 3 센서(238c)를 포함할 수 있으며, 상기 제 3 센서(238c)는 제 3 뷰의 제 3 이미지(234c)를 캡처하도록 배열된다. 도 2b를 참조하여 설명된 바와 같이, 제 3 뷰는 제 1 렌즈(226a)와 제 2 렌즈(226b) 사이의 축으로부터 이격되는 상면도에 대응할 수 있으며, 이것은 시스템(280)이 제 1 렌즈(226a)와 제 2 렌즈(226b) 사이의 축에 대체로 평행하는 에지들(예컨대, 테이블의 에지)과 같은, 제 1 센서(238a)와 제 2 센서(238b)로 처리하기 어려울 수 있는 깊이 정보를 더 효과적으로 핸들링할 수 있게 할 수 있다.
센서들(238a...n)에 의해 캡처될 이미지의 광은 하나 이상의 렌즈들(226a...j)을 통해 수신될 수 있다. 센서들(238a...n)은 이에 제한되지 않지만, 전하-결합 디바이스(CCD) 또는 상보적 금속-산화물-반도체(CMOS) 회로부를 포함한, 센서 회로부를 포함할 수 있으며, 이것은 하나 이상의 렌즈들(226a...j)을 통해 수신된 광을 검출하고 수신된 광에 기초하여 이미지들(234a...k)을 생성할 수 있다. 예를 들어, 센서들(238a...n)은 제 1 뷰에 대응하는 제 1 이미지(234a) 및 제 2 뷰에 대응하는 제 2 이미지(234b)를 생성하기 위해 센서 회로부를 사용할 수 있다. 하나 이상의 센서들(238a...n)은 이미지들(234a...k)을 프로세싱 회로부(250)로 제공할 수 있다. 하나 이상의 센서들(238a...n)은 대응하는 시간스탬프를 이미지들(234a...k)에 제공할 수 있으며, 이것은 제 1 및 제 2 뷰들을 나타내며 응시 정보를 산출하기 위해 서로 비교되어야 하는 동일한 시간스탬프를 가진 특정한 제 1 및 제 2 이미지들(234a, 234b)을 식별하기 위해서와 같은, 이미지 프로세싱이 이미지들(234a...k) 상에서 실행될 때 이미지들(234a...k)의 동기화를 가능하게 할 수 있다.
센서들(238)은 HMD의 사용자(예컨대, 착용자)의 눈들 또는 머리의 위치들, 배향들, 또는 응시 방향들과 같은 정보를 제공할 수 있는 눈 추적 센서들(238) 또는 머리 추적 센서들(238)을 포함할 수 있다. 몇몇 실시예들에서, 센서들(238)은 머리 추적 동작들을 위한 이미지들을 제공하도록 구성된 인사이드 아웃 추적 카메라들이다. 센서들(238)은 사용자의 하나 또는 양쪽 눈들 모두의 위치 또는 배향 중 적어도 하나에 대응하는 데이터와 같은, 눈 추적 데이터(248)를 제공하는 눈 추적 센서들(238)일 수 있다. 센서들(238)은 사용자의 눈들을 향하는 방향으로 배향될 수 있다(예컨대, HMD의 바깥쪽 환경의 이미지들을 캡처하는 센서들(238)과 비교하여). 예를 들어, 센서들(238)은 사용자의 눈들에 관하여 센서 데이터를 검출하기 위해 사용자의 눈들을 향해 배향될 수 있는 적어도 하나의 제 4 센서(238d)(예컨대, 도 2b에 예시되는 바와 같이)를 포함할 수 있다.
몇몇 실시예들에서, 센서들(238)은 사용자의 눈들의 이미지들을 출력하며, 이것은 눈들의 눈 위치 또는 응시 방향을 검출하기 위해 프로세싱될 수 있다. 몇몇 실시예들에서, 센서들(238)은 사용자의 눈들에 관한 이미지 데이터를 프로세싱하며, 이미지 데이터에 기초하여 눈 위치 또는 응시 방향을 출력한다. 몇몇 실시예들에서, 센서들(238)은 눈들로 광(예컨대, 적외선 광)을 방출하며 방출된 광의 반사들을 검출함으로써와 같은, 눈 모션을 광학적으로 측정한다.
본 출원에서 추가로 논의되는 바와 같이, 눈 추적 동작은 HMD의 사용 동안 사용자의 눈들이 움직일 때 사용자의 눈들의 위치들 또는 배향들(예컨대, 응시 방향들)과 같은, 사용자의 눈들에 관한 데이터를 추적하기 위해 시스템(280) 또는 그것의 구성요소들에 의해 실행된 임의의 함수, 동작, 루틴, 로직, 또는 지시들을 포함할 수 있다. 예를 들어, 눈 추적 동작은 하나 이상의 센서들(238) 또는 눈 추적기(244) 중 적어도 하나를 사용하여 수행될 수 있다. 예를 들어, 눈 추적 동작은 사용자의 눈(들)의 눈 위치(236)를 결정하기 위해 센서(238)로부터의 눈 추적 데이터(248)를 프로세싱할 수 있다. 몇몇 실시예들에서, 눈 추적 동작은 사용자의 눈들에 관한 센서 데이터를 검출하는 센서 또는 센서들(238)과 결합되고, 그것에 장착되고, 그것과 일체형이고, 그것과 동일한 회로 보드 상에 구현되거나 또는 그 외 그것을 제공받는 프로세싱 회로부(250)의 일 부분을 사용하여 구현되는 눈 추적기(244)를 사용하여 수행될 수 있다(및 오브젝트 위치 검출기(222), 또는 이미지 렌더러(260) 중 적어도 하나와 상이한 프로세싱 하드웨어를 사용하여 구현될 수 있다). 몇몇 실시예들에서, 눈 추적 동작은 사용자의 눈들에 관한 센서 데이터(예컨대, 사용자의 눈들의 이미지들)를 검출하도록 구성되는 하나 이상의 센서들(238)로부터의 유선 또는 무선 연결에 의해 센서 데이터를 수신하는 눈 추적기(244)를 사용하여 수행될 수 있고; 예를 들어, 눈 추적기(244)는 오브젝트 위치 검출기(222), 또는 이미지 렌더러(260) 중 적어도 하나와 동일한 프로세싱 하드웨어를 사용하여 구현될 수 있다. 센서들(238)의 센서 하드웨어 및/또는 프로세싱 회로부(250)의 프로세싱 하드웨어의 다양한 이러한 조합들은 눈 추적 동작을 구현하기 위해 사용될 수 있다.
눈 추적기(244)는 다양한 방식들로 눈 위치(236)를 생성할 수 있다. 예를 들어, 눈 추적기(244)는 사용자의 하나 이상의 눈들의 위치 또는 배향 중 적어도 하나를 나타내는 하나 이상의 픽셀들을 식별하기 위해 눈 추적 데이터(248)를 프로세싱할 수 있다. 눈 추적기(244)는 눈 추적 데이터(248)를 사용하여, 사용자의 하나 이상의 눈들에 의해 반사된 광(예컨대, 850nm 광 눈 추적과 같은, 센서들(238)로부터의 적외선 또는 근-적외선 광과 같은, 센서들(238)로부터의 광)에 대응하는 픽셀들에 기초하여 눈 위치(236)를 식별할 수 있다. 눈 추적기(244)는 도파관들, 조합기들, 또는 렌즈 카메라들로부터와 같은, HMD 또는 AR 시스템에서의 다양한 조명 소스들 또는 반사들로부터의 광을 사용할 수 있다. 눈 추적기(244)는 사용자의 하나 이상의 눈들의 동공 중심 및 대응하는 반사(예컨대, 각막 반사) 간의 벡터를 결정함으로써 눈 위치(236) 또는 응시 방향을 결정할 수 있다. 눈 위치(236)는 사용자의 하나 이상의 눈들의 각각의 위치 또는 배향 중 적어도 하나와 같은 위치 데이터를 포함할 수 있다. 위치 데이터는 데카르트, 구면, 또는 다른 좌표 시스템에서 3-차원 좌표들과 같은, 3-차원 공간에 있을 수 있다. 눈 위치(236)는 사용자의 하나 이상의 눈들의 응시 방향을 포함한 위치 데이터를 포함할 수 있다.
몇몇 실시예들에서, 눈 추적기(244)는 기계 학습 모델을 포함한다. 기계 학습 모델은 눈 추적 데이터(248)에 기초하여 눈 위치(236)를 생성하기 위해 사용될 수 있다. 예를 들어, 눈 추적 데이터(248)는 눈 위치(236)(또는 눈 위치(236)의 응시 방향)를 출력할 수 있는 기계 학습 모델로의 입력으로서 이용될 수 있다. 기계 학습 모델은 눈 추적 데이터(248)에 대응하도록 결정된 눈 위치들(236)과 같은, 이력적 눈 추적 데이터(248) 및 대응하는 이력적 또는 라벨링된 눈 위치들(236)을 포함하는 트레이닝 데이터를 사용하여 트레이닝될 수 있다. 기계 학습 모델은 눈 추적 동작의 연속적인 교정을 가능하게 하기 위해 눈 추적 데이터(248)를 사용하여 계속해서 업데이트될 수 있다. 기계 학습 모델은 기계 학습 모델에 의해 생성된 후보 출력과 이력적 눈 위치들(236) 간의 차이를 모니터링하고, 차이를 감소시키기 위해 기계 학습 모델을 수정함으로써 트레이닝될 수 있다. 예를 들어, 목적 함수 또는 비용 함수는 차이를 사용하여 평가될 수 있으며, 기계 학습 모델은 목적 함수 또는 비용 함수를 사용하여 수정될 수 있다. 몇몇 실시예들에서, 기계 학습 모델은 신경망을 포함한다. 신경망은 제 1 층(예컨대, 입력 층), 제 2 층(예컨대, 출력 층), 및 하나 이상의 은닉 층들과 같은, 각각이 하나 이상의 노드들(예컨대, 뉴런들, 퍼셉트론들)을 포함하는, 복수의 층들을 포함할 수 있다. 신경망은 층들의 노드들 사이에서 수행될 수 있는 계산들과 연관된 가중치들 및 바이어스들과 같은 특성들을 포함할 수 있으며, 이것은 프로세싱 회로부(250)가 트레이닝 데이터를 사용하여 신경망을 트레이닝하기 위해 수정할 수 있다.
센서들(238)은 센서들(238) 주위의 환경의 이미지들(234)을 캡처할 수 있다. 예를 들어, 센서들(238)은 HMD의 사용자의 시야에서 또는 그 주위에서의 환경의 이미지들(234)을 캡처할 수 있다. 이미지들(234)은 환경으로부터 캡처된 광의 파라미터들(예컨대, 컬러, 밝기, 세기)을 나타내는 픽셀들의 컬러 또는 그레이스케일 어레이 또는 행렬과 같은, 환경의 표현들일 수 있다. 환경은 하늘, 구름, 도로들, 빌딩들, 거리들, 보행자들, 또는 사이클리스트들을 포함한, 자연 및 인공 구조들, 지형, 또는 다른 오브젝트들 양쪽 모두를 포함하는, 실내 또는 옥외 환경일 수 있다. 환경은 센서들에 의해 캡처된 이미지들(234)에 의해 표현될 수 있는, 하나 이상의 오브젝트들(예컨대, 실-세계 오브젝트들)을 포함할 수 있다.
프로세싱 회로부(250)는 오브젝트 위치 검출기(222)를 포함할 수 있다. 오브젝트 위치 검출기(222)는 센서들(238)로부터 이미지(234)를 수신할 수 있다. 오브젝트 위치 검출기(222)는 이미지(234)에 의해 표현된 하나 이상의 오브젝트들을 검출하기 위해 이미지(234) 또는 그것의 부분들을 프로세싱할 수 있다. 예를 들어, 오브젝트 위치 검출기(222)는 픽셀들 또는 픽셀들의 그룹들 간의 컬러들, 형태들, 에지들, 대비들, 및 픽셀들 간의 공간적 관계들을 나타내는 픽셀들 또는 픽셀들의 그룹들을 프로세싱함으로써와 같은, 픽셀들 또는 픽셀들의 그룹들과 같은 이미지(234)의 요소들을 프로세싱함으로써 이미지(234)에 의해 표현된 오브젝트들을 검출하거나 또는 식별할 수 있다. 오브젝트 위치 검출기(222)는 오브젝트들을 검출하도록 트레이닝된 공간 필터들, 세그먼트화, 또는 기계 학습 모델들을 실행함으로써 오브젝트들을 검출할 수 있다. 오브젝트 위치 검출기(222)는 에지들을 나타내는 픽셀들의 그룹들과 같은, 이미지(234)로부터의 후보 오브젝트들을 식별하고, 상기 후보 오브젝트들을 하나 이상의 템플릿 오브젝트들(예컨대, 오브젝트 데이터베이스에서의 템플릿 오브젝트들 또는 그것의 특징들)에 비교하며, 템플릿 오브젝트들에 매칭되는 후보 오브젝트들에 기초하여 이미지(234)의 오브젝트들을 식별할 수 있다. 오브젝트 위치 검출기(222)는 오브젝트들을 식별하기 위해 다양한 오브젝트 인식 알고리즘들 또는 모델들을 이용할 수 있다. 오브젝트들은 실-세계 또는 시뮬레이션된 오브젝트들일 수 있다.
몇몇 실시예들에서, 오브젝트 위치 검출기(222)는 이미지(234)에서 오브젝트의 유형, 클래스, 또는 다른 식별자를 구체적으로 식별하지 않는다. 오브젝트 위치 검출기(222)는 오브젝트가 센서들(238)에 의해 검출되었다는 표시를 센서들(238)로부터 수신할 수 있다. 예를 들어, 오브젝트 위치 검출기(222)는 특정한 이미지(234)가 오브젝트를 나타내는 표시를 수신할 수 있다(이 경우에, 오브젝트 위치 검출기(222)는 오브젝트에 대응하는 하나 이상의 픽셀들을 식별하기 위해 이미지(234)를 프로세싱할 수 있다). 몇몇 실시예들에서, 표시는 오브젝트에 대응하는 하나 이상의 픽셀들을 포함할 수 있다.
몇몇 실시예들에서, 오브젝트 위치 검출기(222)는 다양한 오브젝트들, 빌딩들, 구조들, 도로들, 또는 다른 실내 및 옥외 특징들의 위치 데이터를 포함할 수 있는 오브젝트 데이터베이스를 사용하여 오브젝트를 검출한다. 예를 들어, 오브젝트 위치 검출기(222)는 위치 데이터에 오브젝트들 또는 오브젝트들의 특징들을 매핑시키는 오브젝트 데이터베이스와 통신할 수 있다. 오브젝트 데이터베이스는 또한 유형, 클래스, 형태, 컬러, 크기, 또는 오브젝트들에 대한 다른 특징들에 개한 정보와 같은, 오브젝트들에 대한 시맨틱 또는 텍스트 정보를 유지할 수 있다. 오브젝트 데이터베이스는 이미지 데이터를 사용한 환경들의 재구성에 기초할 수 있다(센서들(238)에 의해 검출된 이미지들(234)을 사용하여 업데이트될 수 있다). 오브젝트 데이터베이스는 시스템(280)으로부터 원격인 서버에 의해 유지되고, 프로세싱되며(예컨대, 시맨틱 또는 텍스트 정보 또는 디스크립터들을 생성하기 위해), 업데이트될 수 있으며, 상기 시스템(280)은 오브젝트 데이터베이스를 액세스하기 위해 그것과 통신할 수 있다. 오브젝트 위치 검출기(222)는 HMD 또는 AR 시스템의 위치에 관한 데이터를 수신하며(예컨대, 도 2b를 참조하여 설명된 위치 센서(220)로부터), 오브젝트 데이터베이스로부터 하나 이상의 후보 오브젝트들을 검색하기 위해 상기 데이터를 사용할 수 있다. 오브젝트 위치 검출기(222)는 오브젝트를 식별하기 위해 하나 이상의 후보 오브젝트들 및 하나 이상의 후보 오브젝트들에 대해 오브젝트 데이터베이스에 의해 유지된 정보에 센서 데이터를 비교할 수 있다(예컨대, 오브젝트 데이터베이스로부터 수신된 정보에 센서 데이터를 매칭시킴으로써).
오브젝트 위치 검출기(222)는 이미지(234) 또는 이미지(234)가 오브젝트를 나타낸다는 표시와 같은, 센서들(238)로부터 수신된 정보를 사용하여 오브젝트의 위치를 결정할 수 있다. 예를 들어, 오브젝트 위치 검출기(222)는 오브젝트에 대응하는 하나 이상의 픽셀들을 식별할 수 있다. 몇몇 실시예들에서, 오브젝트 위치 검출기(222)는, 오브젝트의 위치로서 오브젝트에 대응하는 하나 이상의 픽셀들을 할당함으로써와 같은, 이미지(234)의 이미지 공간에서의 위치로서 오브젝트의 위치를 결정한다. 몇몇 실시예들에서, 오브젝트 위치 검출기(222)는 오브젝트의 위치를 결정하기 위해 깊이 정보를 사용함으로써와 같은, 3-차원 공간(예컨대, 실 세계 공간, AR 또는 VR 공간, HMD 또는 AR 시스템 주위의 환경에서의 공간)에서의 위치로서 오브젝트의 위치를 결정한다.
오브젝트 위치 검출기(222)는 오브젝트의 위치를 향한 응시 방향과 같은, 오브젝트의 위치를 사용하여 응시 방향을 결정할 수 있다. 예를 들어, 오브젝트 위치 검출기(222)는 사용자의 눈들의 예상된 위치를 식별하며, 사용자의 눈들로부터 오브젝트의 위치로의 벡터를 결정할 수 있다(또는 그 반대). 몇몇 실시예들에서, 예상된 위치는 좌측 눈 위치 및 우측 눈 위치를 포함하며, 오브젝트 위치 검출기(222)는 좌측 눈 위치와 우측 눈 위치를 평균화하거나, 또는 좌측 눈 위치로부터 오브젝트의 위치로 및 우측 눈 위치로부터 오브젝트의 위치로 각각의 벡터들을 평균화함으로써와 같은, 좌측 눈 위치 및 우측 눈 위치를 사용하여 응시 방향을 결정할 수 있다.
프로세싱 회로부(250)는 사용자가 오브젝트를 응시하고 있음을 검출할 수 있다. 예를 들어, 프로세싱 회로부(250)는 사용자가 오브젝트를 응시하고 있음을 검출하기 위해, 콘텍스트 정보와 같은, 사용자의 눈들 또는 씬 이해에 대한 센서 데이터를 사용할 수 있다(오브젝트 위치 검출기(222)가 그것의 위치를 결정하지 않은 다른 오브젝트들에 비교하여). 프로세싱 회로부(250)는 사용자가 오브젝트를 응시하고 있는지에 관해 각각의 오브젝트에 신뢰 스코어를 할당함으로써와 같은, 사용자가 오브젝트를 응시하고 있음을 검출하기 위해 센서 데이터의 임의의 조합을 사용하며, 센서 데이터의 기여들로부터 가중 평균으로서 상기 신뢰 스코어를 결정할 수 있다. 프로세싱 회로부(250)는 신뢰 스코어를 임계 신뢰도에 비교하며, 신뢰 스코어가 임계 신뢰도를 충족하거나 또는 이를 초과하는 것에 응답하여 사용자가 오브젝트를 응시하고 있음을 검출할 수 있다. 몇몇 실시예들에서, 프로세싱 회로부(250)는 오브젝트가 씬에서(예컨대, HMD의 시야에서) 최대 임계 수의 오브젝트들 중 하나라는 것에 기초하여 오브젝트에 비교적 더 높은 신뢰 스코어를 할당한다. 예를 들어, 오브젝트가 씬에서 유일한 오브젝트이면, 사용자가 오브젝트를 응시하고 있을 가능성은 더 높을 수 있다. 오브젝트가 말하고 있는 또 다른 사람과 같은 얼굴이거나 또는 이를 포함한다고 검출된다면, 사용자가 오브젝트를 응시하고 있을 가능성은 더 높을 수 있다.
프로세싱 회로부(250)는 이미지 렌더러(260)를 포함할 수 있다. 이미지 렌더러(260)는 3D 이미지 렌더러일 수 있다. 이미지 렌더러(260)는 HMD를 통해서와 같은, 하나 이상의 디스플레이 디바이스들 상에서 디스플레이하거나 또는 보여줄 디스플레이 또는 프리젠테이션 이미지들을 프로세싱하고, 생성하며, 렌더링하기 위해 이미지 관련 입력 데이터를 사용할 수 있다. 이미지 렌더러(260)는 디스플레이(264) 상에서의 디스플레이를 위해서 및 3D 방식으로 씬 또는 뷰를 나타내는 신 또는 뷰의 2D 이미지들을 만들거나 또는 생성할 수 있다. 렌더링될 디스플레이 또는 프리젠테이션 데이터는 씬 또는 뷰에서 3D 오브젝트들의 기하학적 모델들을 포함할 수 있다. 이미지 렌더러(260)는 센서(238)에 의해 캡처된 이미지들(234)에 대한 3D 디스플레이 데이터와 같은, 원하는 또는 미리 결정된 3D 이미지(들)를 제공하기 위해 렌더링될 디스플레이 또는 이미지 데이터의 픽셀 값들을 결정하고, 계산하거나 또는 산출할 수 있다. 이미지 렌더러(260)는 이미지들(234)을 수신하고 눈 위치(236)를 수신하며, 눈 위치(236)(또는 눈 위치(236)에 대응하는 응시 방향)에 기초하여 디스플레이들(264)에 의한 프리젠테이션을 위해 증강 현실 정보를 위치시킬 곳을 결정하기 위해서와 같은, 이미지들(234) 및 눈 위치(236)를 사용하여 디스플레이 이미지들을 생성할 수 있다.
이미지 렌더러(260)는 시간 및/또는 공간 파라미터들에 기초하여 하나 이상의 디스플레이들(264)로 디스플레이 데이터의 프레임들을 렌더링할 수 있다. 이미지 렌더러(260)는 이미지들이 센서들(238)에 의해 캡처되는 시간들에 대응하는 것과 같은, 시간적으로 순차적으로 이미지 데이터의 프레임들을 렌더링할 수 있다. 이미지 렌더러(260)는 HMD의 위치 및 배향과 같은, 센서들(238)로의 위치 및/또는 배향에서의 변화들에 기초한 디스플레이 데이터의 프레임들을 렌더링할 수 있다. 이미지 렌더러(260)는 우측-눈 뷰에 앞서 좌-측 눈 뷰 또는 그 반대를 디스플레이하는 것과 같은, 좌측-눈 뷰(들) 및 우측-눈 뷰(들)에 기초하여 디스플레이 데이터의 프레임들을 렌더링할 수 있다.
이미지 렌더러(260)는 이미지들(234a...k)을 캡처한 센서들(238a...n)의 움직임에 관한 모션 데이터를 사용하여 디스플레이 이미지들을 생성할 수 있다. 예를 들어, 센서들(238a...n)은 센서들(238a...n)을 포함하는 HMD를 착용한 사용자의 머리의 움직임으로 인해 위치 또는 배향 중 적어도 하나에서 변할 수 있다(예컨대, 도 2b의 HMD 시스템(200)을 참조하여 설명된 바와 같이). 프로세싱 회로부(250)는 위치 센서(예컨대, 도 2b를 참조하여 설명된 위치 센서(220))로부터 모션 데이터를 수신할 수 있다. 이미지 렌더러(260)는 이미지들(234a...k)이 캡처된 제 1 시점과 디스플레이 이미지들이 디스플레이될 제 2 시점 간의 위치 또는 배향 중 적어도 하나에서의 변화를 산출하기 위해 모션 데이터를 사용하며 산출된 변화를 사용하여 디스플레이 이미지들을 생성할 수 있다. 이미지 렌더러(260)는 이미지들(234a...k)에 대하여 디스플레이 이미지들을 보간하고 및/또는 외삽하기 위해 모션 데이터를 사용할 수 있다.
이미지 렌더러(260)가 프로세싱 회로부(250)의 부분으로서 도시되지만, 이미지 렌더러는 예를 들어, HMD 내에서, 디스플레이 디바이스와 같은, 별개의 디바이스 또는 구성요소의 다른 프로세싱 회로부의 부분으로서 형성될 수 있다.
시스템(280)은 하나 이상의 디스플레이들(264)을 포함할 수 있다. 하나 이상의 디스플레이들(264)은 임의의 유형 및 형태의 전자 시각 디스플레이일 수 있다. 디스플레이들은 미리 결정된 분해능 및 리프레시 레이트 및 크기를 갖거나 또는 갖도록 선택될 수 있다. 하나 이상의 디스플레이들은 LCD, LED, ELED 또는 OLED 기반 디스플레이들과 같은 임의의 유형의 기술일 수 있다. 하나 이상의 디스플레이들의 형태 인자는 안경 또는 고글로서 HMD 내에 맞도록 할 수 있으며 여기에서 디스플레이(들)는 안경 또는 고글의 프레임 내에 의지한다. 디스플레이들(264)은 프로세싱 회로부(250) 또는 이미지 렌더러(260) 또는 센서들(238)의 리프레시 레이트 또는 프레임 레이트와 동일하거나 또는 상이한 리프레시 레이트를 가질 수 있다. 디스플레이들(264)은 하나 이상의 도파관들(예컨대, 도 2b를 참조하여 설명된 도파관들(228))을 포함할 수 있으며, 따라서 눈 추적 동작의 교정은 눈 추적에 의해 표시된 동공 위치들을 사용하여 도파관들의 동작을 더 정확하게 제어하기 위해 사용될 수 있다.
이제 도 2b를 참조하면, 몇몇 구현들에서, HMD 시스템(200)은 시스템(280)을 구현하기 위해 사용될 수 있다. HMD 시스템(200)은 HMD 몸체(202), 좌측 센서(238a)(예컨대, 좌측 이미지 캡처 디바이스), 우측 센서(238b)(예컨대, 우측 이미지 캡처 디바이스), 및 디스플레이(264)를 포함할 수 있다. HMD 몸체(202)는 안경 또는 헤드셋과 같은, 다양한 형태 인자들을 가질 수 있다. 센서들(238a, 238b)은 HMD 몸체(202)에 장착되거나 또는 그것에 통합될 수 있다. 좌측 센서(238a)는 제 1 뷰(예컨대, 좌측 눈 뷰)에 대응하는 제 1 이미지들을 캡처할 수 있으며, 우측 센서(238b)는 제 2 뷰(예컨대, 우측 눈 뷰)에 대응하는 이미지들을 캡처할 수 있다.
HMD 시스템(200)은 최상부 센서(238c)(예컨대, 최상부 이미지 캡처 디바이스)를 포함할 수 있다. 최상부 센서(238c)는 제 1 뷰 또는 제 2 뷰와 상이한 제 3 뷰에 대응하는 이미지들을 캡처할 수 있다. 예를 들어, 최상부 센서(238c)는 좌측 센서(238a)와 우측 센서(238b) 사이에 및 좌측 센서(238a)와 우측 센서(238b) 사이의 베이스라인 위에 배치될 수 있다. 이것은 최상부 센서(238c)가 좌측 및 우측 센서들(238a, 238b)에 의해 캡처된 이미지들로부터 추출되는데 쉽게 이용 가능하지 않을 수 있는 깊이 정보를 갖고 이미지들을 캡처할 수 있게 할 수 있다. 예를 들어, 깊이 정보는 에지들(예컨대, 테이블의 에지)이 좌측 및 우측 센서들(238a, 238b) 사이의 베이스라인에 평행하는 좌측 및 우측 센서들(238a, 238b)에 의해 캡처된 이미지들로부터 효과적으로 추출되기 어려울 수 있다. 베이스라인으로부터 이격되는, 최상부 센서(238c)는 상이한 관점을 갖도록 제 3 이미지를 캡처하며, 따라서 좌측 및 우측 센서들(238a, 238b)과 상이한 깊이 정보가 제 3 이미지로부터 추출될 수 있게 할 수 있다.
HMD 시스템(200)은 센서들(238a, 238b), 뿐만 아니라 눈 추적 센서들(238)로부터 센서 데이터를 수신하는 것, 및 눈 추적 동작을 교정하기 위해 수신된 이미지들을 프로세싱하는 것을 포함하여, 도 2a를 참조하여 설명된 기능들 중 적어도 일부를 수행할 수 있는, 프로세싱 회로부(250)를 포함할 수 있다.
HMD 시스템(200)은 통신 회로부(204)를 포함할 수 있다. 통신 회로부(204)는 클라이언트 디바이스(208) 또는 서버(212) 중 적어도 하나로 전자 통신 신호를 송신하며 그로부터 전자 통신 신호를 수신하기 위해 사용될 수 있다. 통신 회로부(204)는 다양한 시스템들, 디바이스들, 또는 네트워크들과의 데이터 통신을 행하기 위해 유선 또는 무선 인터페이스들(예컨대, 잭들, 안테나들, 송신기들, 수신기들, 트랜시버들, 유선 단말기들)을 포함할 수 있다. 예를 들어, 통신 회로부(204)는 이더넷-기반 통신 네트워크를 통해 데이터를 송신하고 수신하기 위한 이더넷 카드 및 포트를 포함할 수 있다. 통신 회로부(204)는 근거리 네트워크들(예컨대, 빌딩 LAN), 광역 네트워크들(예컨대, 인터넷, 셀룰러 네트워크)를 통해 통신하며, 및/또는 직접 통신들(예컨대, NFC, Bluetooth)을 행할 수 있다. 통신 회로부(204)는 유선 및/또는 무선 통신들을 행할 수 있다. 예를 들어, 통신 회로부(204)는 하나 이상의 무선 트랜시버들(예컨대, Wi-Fi 트랜시버, Bluetooth 트랜시버, NFC 트랜시버, 셀룰러 트랜시버)을 포함할 수 있다. 예를 들어, 통신 회로부(204)는 클라이언트 디바이스(208) 또는 서버(212) 중 적어도 하나와 유선 또는 무선 연결들을 수립할 수 있다. 통신 회로부(204)는 클라이언트 디바이스(208)와 USB 연결을 수립할 수 있다. 클라이언트 디바이스(208)는 클라이언트 디바이스(208)와 통신 회로부(204) 간의 통신들을 가능하게 하기 위해 프로세싱 회로부(216a)를 포함할 수 있다. 유사하게, 서버(212)는 서버(212)와 통신 회로부(204) 간의 통신들을 가능하게 하기 위해 프로세싱 회로부(216b)를 포함할 수 있다. 몇몇 실시예들에서, 프로세싱 회로부(216)는 통신 회로부(204) 및/또는 프로세싱 회로부(250)와 동일하거나 또는 유사하다. 프로세싱 회로부(216)는 도 3a 내지 도 3c를 참조하여 이하에서 더 상세하게 설명되는 디바이스들(302)의 기능들, 프로세스들, 기술들, 데이터 프로세싱 등 중 임의의 것을 수행하도록 구성될 수 있다.
HMD 시스템(200)은 상이한 아키텍처들을 사용하여 배치될 수 있다. 몇몇 실시예들에서, HMD(예컨대, HMD 몸체(202) 및 HMD 몸체(202)에 부착된 구성요소들)는 프로세싱 회로부(250)를 포함하며 자립적 휴대용 유닛이다. 몇몇 실시예들에서, HMD는 스테이징 디바이스, 이동 전화 또는 착용 가능한 컴퓨팅 디바이스의 형태에서와 같은, 프로세싱 회로부 또는 그것의 부분들을 가진 임의의 유형의 휴대용 또는 이동 컴퓨팅 디바이스 또는 동반 디바이스와 협력하여 또는 그것과 함께 동작하는 프로세싱 회로부(250)의 부분들을 가진다. 몇몇 실시예들에서, HMD는 데스크탑 컴퓨팅 디바이스의 프로세싱 회로부, 또는 그것의 부분들과 협력하여 또는 함께 동작하는 프로세싱 회로부(250)의 부분들을 가진다. 몇몇 실시예들에서, HMD는 데이터 센터 또는 클라우드 컴퓨팅 환경에서 원격으로 배치될 수 있는, 서버 컴퓨팅 디바이스의 프로세싱 회로부, 또는 그것의 부분들과 협력하여 또는 함께 동작하는 프로세싱 회로부(250)의 부분들을 가진다. 상기 실시예들 중 임의의 것에서, HMD 또는 HMD와 함께 동작하는 임의의 컴퓨팅 디바이스는 본 출원에서 설명된 기능 및 동작들 중 임의의 것을 수행할 때 하나 이상의 서버들과 통신할 수 있다.
클라이언트 디바이스(208)는 이동 또는 휴대용 디바이스(전화, 태블릿, 랩탑 등), 또는 데스크탑 또는 개인용 컴퓨팅(PC) 디바이스와 같은, 임의의 형태 인자로 임의의 유형 및 형태의 범용 또는 특수 목적 컴퓨팅 디바이스일 수 있다. 몇몇 실시예들에서, 클라이언트 디바이스는 프로세싱 회로부 또는 그것의 부분들을 가질 수 있는, 스테이징 디바이스의 형태에서와 같은, 특수 목적 디바이스일 수 있다. 특수 목적 디바이스는 임의의 유형 및 형태의 액세서리 부착물을 통해 의복 또는 신체에 클라이언트 디바이스(208)를 부착함으로써와 같은, HMD를 착용하는 동안 사용자에 의해 운반되도록 설계될 수 있다. 클라이언트 디바이스(208)는 도 1 및 도 3과 관련하여 설명된 이미지 및 렌더링 프로세싱 파이프라인의 임의의 부분을 수행하기 위해 사용될 수 있다. HMD는 이미지 캡처 및 디스플레이(264)로의 렌더링과 같은 이미지 및 렌더링 프로세싱 파이프라인의 몇몇 또는 다른 부분들을 수행할 수 있다. HMD는 HMD의 것들보다 더 높은 규격들을 가질 수 있는 클라이언트 디바이스(208)의 컴퓨팅 전력 및 리소스들을 레버리징하기 위해 클라이언트 디바이스(208)를 갖고 데이터를 송신하고 수신할 수 있다.
서버(212)는 하나 이상의 클라이언트 디바이스들(208) 또는 클라이언트들로서 동작하는 다른 디바이스들로 애플리케이션들, 기능 또는 서비스들을 제공하는 임의의 유형 또는 형태의 컴퓨팅 디바이스일 수 있다. 몇몇 실시예들에서, 서버(212)는 클라이언트 디바이스(208)일 수 있다. 서버(212)는 하나 이상의 네트워크들을 통해 액세스 가능한 데이터 센터 또는 클라우드 컴퓨팅 환경에 배치될 수 있다. HMD 및/또는 클라이언트 디바이스(208)는 서버(212)의 컴퓨팅 전력 및 리소스들을 사용하며 레버리징할 수 있다. HMD 및/또는 클라이언트 디바이스(208)는 도 1 및 도 3과 관련하여 설명된 이미지 및 렌더링 프로세싱 파이프라인의 임의의 부분을 구현할 수 있다. 서버(212)는 도 1 및 도 3과 관련하여 설명된 이미지 및 렌더링 프로세싱 파이프라인의 임의의 부분, 및 몇몇 경우들에서, 클라이언트 디바이스(208) 또는 HMD에 의해 수행되지 않은 이미지 및 렌더링 프로세싱 파이프라인의 임의의 부분들을 구현할 수 있다. 서버(212)는 HMD 및/또는 클라이언트 디바이스(208) 상에서 애플리케이션들, 소프트웨어, 실행 가능한 지시들 및/또는 데이터에 대한 임의의 업데이트를 갖고 HMD 및/또는 클라이언트 디바이스(208)를 업데이트하기 위해 사용될 수 있다.
시스템(200)는 위치 센서(220)를 포함할 수 있다. 위치 센서(220)는 몸체(202)의 위치 또는 배향 중 적어도 하나를 출력할 수 있다. 이미지 캡처 디바이스들(238a, 238b, 238c)가 몸체(202)에 고정될 수 있으므로(예컨대, 위치 센서(220)에 대하여 미리 결정된 위치들에), 위치 센서(220)는 각각의 센서(238a, 238b, 238c)의 위치 또는 배향 중 적어도 하나를 출력할 수 있다. 위치 센서(220)는 관성 측정 유닛(IMU), 가속화기, 자이로스코프, 또는 자력계(예컨대, 자기 나침반) 중 적어도 하나를 포함할 수 있다.
시스템(200)은 가변초점 시스템(224)을 포함할 수 있다. 가변초점 시스템(224)은 가변 초점 길이를 가질 수 있으며, 따라서 가변초점 시스템(224)은 초점 길이 또는 배율이 변함에 따라 초점(예컨대, 초점의 포인트 또는 평면)을 변경할 수 있다. 가변초점 시스템(224)은 기계 렌즈, 액체 렌즈, 또는 편광 빔 판 중 적어도 하나를 포함할 수 있다.
몇몇 실시예들에서, 디스플레이(264)는 하나 이상의 도파관들(228)을 포함한다. 도파관들(228)은 하나 이상의 투영기들(232)로부터 디스플레이(264)에 의해 디스플레이될 디스플레이 이미지들에 대응하는 광(예컨대, 인-커플)을 수신하며, HMD의 사용자에 의한 시청을 위해서와 같은, 디스플레이 이미지들을 출력할 수 있다(예컨대, 인-커플). 도파관들(228)은 적절한 스케일로 디스플레이 이미지들을 출력하기 위해 수신된 광의 수평 또는 수직 확대를 수행할 수 있다. 도파관들(228)은 수신된 광에 기초하여 디스플레이 이미지들을 제공하기 위해 하나 이상의 렌즈들, 회절 격자들, 편광 표면들, 반사성 표면들, 또는 그것의 조합들을 포함할 수 있다. 투영기들(232)은 하나 이상의 도파관들(228)로 제공될 광을 생성하기 위해, 다른 것들 중에서, LCD, LED, OLED, DMD, 또는 LCOS 디바이스들과 같은, 다양한 투영 디바이스들 중 임의의 것을 포함할 수 있다. 투영기들(232)은 프로세싱 회로부(250)로부터(예컨대, 이미지 렌더러(260)로부터) 디스플레이 이미지들을 수신할 수 있다. 하나 이상의 도파관들(228)은 디스플레이 표면(예컨대, 유리)을 통해 제공될 수 있으며, 이것은 조합기(예컨대, 출력된 디스플레이 이미지들의 광과 HMD 주위의 실세계 환경으로부터의 광을 조합하는)로서 동작하도록 적어도 부분적으로 투명할 수 있다.
디스플레이(264) 및 하나 이상의 도파관들(228) 또는 하나 이상의 투영기들(232)과 같은, 그것의 구성요소들의 동작은 눈 추적 동작의 교정에 응답하여 수정되거나 또는 제어될 수 있다. 예를 들어, 프로세싱 회로부(250)는 하나 이상의 투영기들(232)이 교정된 눈 추적 동작에 기초한 사용자의 각각의 눈에 대응하는 동공 위치에 기초하여 하나 이상의 도파관들(228)을 사용하여 디스플레이 이미지들을 제공하게 할 수 있다. 프로세싱 회로부(250)는 하나 이상의 도파관들(228)을 통해 제공된 디스플레이 이미지들이 사용자의 눈들의 응시 방향들과 동조되도록 하나 이상의 도파관들(228)의 균일성을 정정하기 위해 교정된 눈 추적 동작을 사용할 수 있다.
디스플레이(264)는 눈 추적 동작에 의해 생성된 응시 방향에 대응하는 응시 포인트를 나타낼 수 있는 교정된 눈 추적 동작에 기초하여 포비티드 렌더링을 수행할 수 있다. 예를 들어, 프로세싱 회로부(250)는 응시 포인트에 기초하여 디스플레이(264)의 FOV의 주변 영역(예컨대, 디스플레이 이미지들의 에지의 임계 거리 내에 있거나 또는 응시 포인트로부터 임계 거리 이상 떨어진 디스플레이 이미지들의 복수의 픽셀들에 의해 표현된 주변 영역)에서 디스플레이(264)의 FOV의 중심 영역(예컨대, 응시 포인트로부터 임계 거리 내에 있는 복수의 픽셀들) 중 적어도 하나를 식별할 수 있다. 프로세싱 회로부(250)는 중심 영역에서보다 주변 영역에서 적은 품질(예컨대, 분해능, 픽셀 밀도, 프레임 레이트)을 갖도록 디스플레이 이미지들을 생성할 수 있으며, 이것은 HMD 시스템(200)의 동작과 연관된 프로세싱 수요를 감소시킬 수 있다.
C. 다수의 디바이스들에 걸쳐 신경망을 분배하기 위한 시스템들, 방법들, 및 디바이스들
이제 도 3a를 참조하면, 시스템(300)은 몇몇 실시예들에 따른, 제 1 디바이스(302a), 및 제 2 디바이스(302b)를 포함한다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 도 2a 및 도 2b를 참조하여 상기 상세하게 설명된 HMD 및/또는 AR 시스템이다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 도 2a 및 도 2b를 참조하여 상기 더 상세하게 설명된 HMD 및/또는 AR 시스템의 컴퓨터 디바이스이다. 예를 들어, 제 1 디바이스(302a)는 도 2a 및 도 2b를 참조하여 상기 더 상세하게 설명된 HMD 및/또는 AR 시스템의 중앙 프로세싱 유닛(CPU) 또는 GPU일 수 있다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 클라이언트 디바이스(예컨대, 클라이언트 디바이스(208)), 이동 컴퓨터 디바이스, 제 2 디바이스(302b)보다 낮은/적은 프로세싱 능력들을 가진 컴퓨터, AI 가속화기(108) 등이다. 몇몇 실시예들에서, 제 2 디바이스(302b)는 원격 디바이스, 외부 디바이스, HMD 및/또는 AR 시스템의 로컬이지만 별개의 프로세싱 유닛, AI 가속화기(108), 이동 컴퓨팅 디바이스, 클라우드에서의 서버 등, 또는 제 1 디바이스(302a)가 아닌 임의의 디바이스이다. 예를 들어, 제 2 디바이스(302b)는 서버(212), 데스크탑 컴퓨터, 외부 컴퓨터, 네트워크 컴퓨터, 원격 컴퓨터 등일 수 있다. 몇몇 실시예들에서, 제 2 디바이스(302b)는 제 1 디바이스(302a)보다 큰 또는 많은 프로세싱 능력들을 가진 제 1 디바이스(302a)가 아닌 임의의 컴퓨터 또는 컴퓨팅 디바이스이다. 몇몇 실시예들에서, 제 1 디바이스(302a) 및 제 2 디바이스(302b)는 유사한 컴퓨팅 디바이스들이다. 몇몇 실시예들에서, 도 3a 및 도 3b에 도시된 시스템(300)은 다수의 컴퓨팅 디바이스들에 걸쳐 신경망 계산들을 분배하는 신경망 "파이프라인"으로 불리운다.
제 1 디바이스(302a)는 몇몇 실시예들에 따라, 입력 데이터(110)를 수신하며 축소된 데이터 세트(310)를 출력한다. 제 2 디바이스(302b)는 입력으로서 축소된 데이터 세트(310)를 수신하며 출력 데이터(112)를 제 1 디바이스(302a)로 출력하거나 또는 제공할 수 있다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 제 1 디바이스(302a)가 입력 데이터(110)에 기초하여 정확하게 결정을 할 수 없다면 축소된 데이터 세트(310)를 제 2 디바이스(302b)로 출력한다.
제 1 디바이스(302a) 및 제 2 디바이스(302b)는 각각 프로세싱 회로(304a), 프로세서(306a), 및 메모리(308a)를 포함할 수 있다. 프로세싱 회로들(304)은 프로세싱 회로부(250)와 동일하거나 또는 유사할 수 있다. 제 1 디바이스(302a) 및 제 2 디바이스(302b)는 각각 제 1 디바이스(302a)와 제 2 디바이스(302b) 사이에서 통신들(예컨대, 데이터의 전달)을 가능하게 하는 통신 인터페이스를 포함할 수 있다. 제 1 및 제 2 디바이스들(302)의 통신 인터페이스들은 제 1 및 제 2 디바이스들(302a 및 302b) 사이에서 데이터 통신들을 행하기 위해 유선 또는 무선 통신 인터페이스들(예컨대, 잭들, 안테나들, 송신기들, 수신기들, 트랜시버들, 유선 단말기들 등)이거나 또는 이를 포함할 수 있다. 다양한 실시예들에서, 통신 인터페이스들을 통한 통신들은 직접적(예컨대, 로컬 유선 또는 무선 통신들)이거나 또는 통신 네트워크(예컨대, WAN, 인터넷, 셀룰러 네트워크 등)를 통할 수 있다. 예를 들어, 인터페이스들은 이더넷-기반 통신 링크 또는 네트워크를 통해 데이터를 전송하고 수신하기 위한 이더넷 카드 및 포트를 포함할 수 있다. 또 다른 예에서, 인터페이스들은 무선 통신 네트워크를 통해 통신하기 위해 Wi-Fi 트랜시버를 포함할 수 있다. 또 다른 예에서, 인터페이스들 중 하나 또는 양쪽 모두는 셀룰러 또는 이동 전화 통신 트랜시버들을 포함할 수 있다. 몇몇 실시예들에서, 통신 인터페이스들 양쪽 모두는 이더넷 인터페이스들 또는 USB 인터페이스들이다.
계속해서 도 3a를 참조하면, 제 1 및 제 2 디바이스들(302a 및 302b)은 프로세서(306) 및 메모리(308)를 포함한 프로세싱 회로(304)를 포함하는 것으로 도시된다. 프로세싱 회로(304)는 프로세싱 회로(304) 및 그것의 다양한 구성요소들이 통신 인터페이스를 통해 데이터를 전송하고 수신할 수 있도록 통신 인터페이스에 통신 가능하게 연결될 수 있다. 프로세서(306)는 범용 프로세서, 애플리케이션 특정 집적 회로(ASIC), 하나 이상의 필드 프로그램 가능한 게이트 어레이들(FPGA들), 프로세싱 구성요소들의 그룹, 또는 다른 적절한 전자 프로세싱 구성요소들로서 구현될 수 있다.
메모리(308)(예컨대, 메모리, 메모리 유닛, 저장 디바이스 등)는 본 출원에서 설명된 다양한 프로세스들, 층들 및 모듈들을 완성하거나 또는 가능하게 하기 위해 데이터 및/또는 컴퓨터 코드를 저장하기 위한 하나 이상의 디바이스들(예컨대, RAM, ROM, 플래시 메모리, 하드 디스크 저장장치 등)을 포함할 수 있다. 메모리(308)는 휘발성 메모리 또는 비-휘발성 메모리이거나 또는 이를 포함할 수 있다. 메모리(308)는 본 출원에서 설명된 다양한 활동들 및 정보 구조들을 지원하기 위한 데이터베이스 구성요소들, 오브젝트 코드 구성요소들, 스크립트 구성요소들, 또는 임의의 다른 유형의 정보 구조를 포함할 수 있다. 몇몇 실시예들에 따르면, 메모리(308)는 프로세싱 회로(304)를 통해 프로세서(306)에 통신 가능하게 연결되며 본 출원에서 설명된 하나 이상의 프로세스들을 실행하기 위해(예컨대, 프로세싱 회로(304) 및/또는 프로세서(306)에 의해) 컴퓨터 코드를 포함한다.
제 1 디바이스(302a)는 본 개시에서 설명된 임의의 센서들, 시스템들, 디바이스들 등으로부터 입력 데이터(110)를 수신할 수 있다. 예를 들어, 입력 데이터(110)는 눈 추적 데이터, 이미지 데이터, 카메라 데이터, 오브젝트 검출 데이터, 꼭짓점들, 텍스처들, 에지들, 표면들을 포함한 하나 이상의 가상 오브젝트들에 관한 데이터 등일 수 있다. 몇몇 실시예들에서, 입력 데이터(110)는 응시 방향(230), 눈 위치(236), 눈 추적 데이터(248), 센서들(238)에 의해 수집된 데이터, 이미지들(234), 이미지 렌더러(260)에 의해 출력된 데이터 등 중 임의의 것이다.
제 1 디바이스(302a)는 신경망(114a)으로서 도시된, 신경망의 하나 이상의 층들의 제 1 세트(예컨대, 층들(116 내지 122) 중 하나 이상, 또는 층들(116 내지 122)과 유사한 하나 이상의 층들) 또는 제 1 신경망을 포함한다. 유사하게, 제 2 디바이스(302b)는 신경망(114b)으로 도시된, 신경망의 하나 이상의 층들의 제 2 세트(예컨대, 층들(116 내지 122) 중 하나 이상, 또는 층들(116 내지 122)과 유사한 하나 이상의 층들) 또는 제 2 신경망을 포함한다. 몇몇 실시예들에서, 신경망(114a)은 1:n 총 층들을 가진 신경망(예컨대, 신경망(114))의 1:x 층들의 제 1 세트이다. 몇몇 실시예들에서, 신경망(114b)은 1:n 총 층들을 가진 동일한 신경망(예컨대, 신경망(114))의 x:n 층들의 제 2 세트이다. 몇몇 실시예들에서, 신경망(114a) 및 신경망(114b)은 그것들 자신의 입력, 출력, 및 은닉 층들을 가진 별개의 및 독립적인 신경망들로서 고려된다. 몇몇 실시예들에서, 신경망(114a)은 프로세싱 회로(304a), 프로세서(306a), 및 메모리(308a) 중 임의의 것 상에 구현된다. 예를 들어, 메모리(308a)는 프로세서(306a) 및/또는 프로세싱 회로(304a) 상에서의 구현 및 프로세싱을 위해 신경망(114a)을 저장할 수 있다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 HMD 및/또는 AR 시스템의 GPU이거나 또는 이를 포함하며 신경망(114a)은 GPU 상에 구현된다. 마찬가지로, 제 1 디바이스(302a)는 신경망(114a)의 구현을 위해 CPU 및/또는 AI 가속화기(예컨대, AI 가속화기(108), AI 가속화기(108)와 유사한 AI 가속화기 등)이거나 또는 이를 포함할 수 있다.
신경망(114a)은 입력 데이터(110)의 하나 이상의 특징들을 식별하기 위해 구현될 수 있다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 추가 분석, 데이터 프로세싱, 이미지 디스플레이, 동작들을 수행하는 것 등을 위해 입력 데이터(110)의 하나 이상의 식별된 특징들을 사용한다. 신경망(114a)은 입력 데이터(110)의 하나 이상의 특징들을 검출하기 위해 제 1 디바이스(302a)에 의해 구현될 수 있다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 하나 이상의 특징들이 신경망(114a)에 의해 검출되었거나 또는 하나 이상의 특징들이 신경망(114a)에 의해 검출되지 않았다는 표시 또는 통지를 제 2 디바이스(302b)로 출력한다. 제 2 디바이스(302b)는 축소된 데이터 세트(310)가 신경망(114b)으로의 입력으로서 사용되어야 하는지를 결정하기 위해 상기 표시 또는 통지를 사용할 수 있다.
몇몇 실시예들에서, 제 1 디바이스(302a)는 입력 데이터(110)의 하나 이상의 식별된 특징들 중 임의의 것을 축소된 데이터 세트(310)로서 제 2 디바이스(302b)로 출력한다. 예를 들어, 제 1 디바이스(302a)가 오브젝트, 사람, 형태 등을 식별하기 위해 이미지 데이터를 프로세싱하고 있다면, 제 1 디바이스(302a)는 오브젝트, 사람, 형태 등을 식별하기 위해 이미지 데이터(예컨대, 입력 데이터(110))를 신경망(114a)으로 제공할 수 있다. 오브젝트, 사람, 형태 등에 대한 추가 분석 및/또는 식별이 요구된다면, 신경망(114a)은 식별된 오브젝트, 사람, 형태 등의 이미지 데이터를 포함한 착수된 데이터 세트(310)를 부가적인 특징 식별 및/또는 검출을 위해 제 2 디바이스(302b)로 출력할 수 있다. 예를 들어, 입력 데이터(110)가 이미지 데이터이며 신경망(114a)이 사람이 이미지 데이터에 존재하는지를 식별하도록 구성된다면, 신경망(114a)은 사람이 이미지 데이터에 존재하는지를 식별하며, 욕된다면 추가 식별을 위해 축소된 데이터 세트(310)로서 사람과 연관된 이미지 데이터를 제 2 디바이스(302b)의 신경망(114b)으로 출력할 수 있다. 제 2 디바이스(302b)는 축소된 데이터 세트(310)를 수신하며 사람의 부가적인 특징들(예컨대, 얼굴 표정, 분위기, 나이 등)을 식별할 수 있다.
몇몇 실시예들에서, 신경망(114a) 및/또는 신경망(114b)의 출력들(예컨대, 출력 데이터(112) 및/또는 축소된 데이터 세트(310))은 특정한 특징들이 입력 데이터(예컨대, 입력 데이터(110) 및/또는 축소된 데이터 세트(310))에 존재하는지에 대한 검출을 포함한다. 몇몇 실시예들에서, 신경망(114a) 및/또는 신경망(114b)의 특정한 위치에서의 오브젝트의, 특정한 정확도 또는 임계치를 가진 검출, 특정한 방향에서의 눈들의 검출, 응시 등을 포함한다. 예를 들어, 신경망(114a) 및/또는 신경망(114b)의 출력은 입력 데이터(110)에서 오브젝트 또는 특징의 식별, 및/또는 정확도/에러 스코어(예컨대, 정확도(a) 및/또는 에러(e)) 중 임의의 것을 포함할 수 있다. 몇몇 실시예들에서, 신경망(114a) 및/또는 신경망(114b)의 출력은 제 1 디바이스(302a) 및/또는 제 2 디바이스(302b) 중 하나에 의한 동작 또는 그것에 의해 취해질 동작의 결정을 포함한다. 몇몇 실시예들에서, 신경망(114a) 및/또는 신경망(114b)의 출력은 특정한 특징들 또는 오브젝트들이 특정한 임계치(예컨대, 정확도(a)의 특정한 임계치 및/또는 에러(e)의 특정한 임계치) 내에서 입력 데이터(예컨대, 입력 데이터(110))에 없는지(예컨대, 존재하지 않는지)에 대한 표시를 포함한다. 예를 들어, 신경망(114a) 및/또는 신경망(114b)은 특정한 오브젝트 또는 특징이 입력 데이터(110)에 존재하지 않는다는 것을 확실성의 레벨을 갖고(예컨대, 에러(e) 및/또는 정확도(a)의 정도를 갖고) 결정할 수 있다.
몇몇 실시예들에서, 제 1 디바이스(302a)는 입력 데이터(110)의 식별된 또는 검출된 특징들이 동작을 수행하기에 불충분하다는 것에 응답하여 추가 분석 또는 프로세싱을 위해 축소된 데이터 세트(310)를 제 2 디바이스(302b)로 출력한다. 예를 들어, 제 1 디바이스(302a)가 동작을 수행하기 전에 입력 데이터(110)의 부가적인 특징들이 식별되길 요구하며, 신경망(114a)에 의해 식별되거나 또는 검출된 특징들이 부가적인 특징들을 포함하지 않는다면, 제 1 디바이스(302a)는 축소된 데이터 세트(310)를 제 2 디바이스(302b)로 출력할 수 있다.
몇몇 실시예들에서, 축소된 데이터 세트(310)는 입력 데이터(110)와 비교하여, 크기가 더 작고, 압축되고, 크기가 감소된다. 예를 들어, 입력 데이터(110)가 5메가바이트인 이미지 데이터이면, 축소된 데이터 세트(310)는 1메가바이트인 이미지 데이터일 수 있다. 몇몇 실시예들에서, 신경망(114a)은 입력 데이터(110)를 수신하며 크기가 감소되는 축소된 데이터 세트(310)를 출력하도록 구성된다. 몇몇 실시예들에서, 신경망(114a)은 입력 데이터(110)를 수신하며 축소된 데이터 세트(310)를 생성하기 위해 입력 데이터(110)를 압축하도록 구성된다. 몇몇 실시예들에서, 신경망(114a)은 입력 데이터(110)에 기초하여 축소된 데이터 세트(310)를 생성하기 위해 유손실 또는 무손실 압축 중 임의의 것을 사용한다. 유손실 또는 무손실 데이터(즉, 축소된 데이터 세트(310))는 그 후 제 1 디바이스(302a)와 제 2 디바이스(302b) 사이에서 전달되며 그것에 의해 이해될 수 있다. 몇몇 실시예들에서, 축소된 데이터 세트(310)는 입력 데이터(110)의 서브세트이다. 몇몇 실시예들에서, 축소된 데이터 세트(310)는 신경망(114a)에 의해 선택된 입력 데이터(110)의 부분들이다. 예를 들어, 신경망(114a)은 수용 가능한 레벨의 정확도(a) 및/또는 에러(e)를 갖고 입력 데이터(110)의 특정한 부분들에서 검출되지만 다른 특징들 또는 오브젝트들은 수용 가능한 레벨의 정확도(a) 및/또는 에러(e)를 갖고 입력 데이터(110)의 다른 부분들에서 검출될 수 없다. 신경망(114a)은 입력 데이터(110)의 나머지(예컨대, 특징들 및/또는 오브젝트들이 임계 레벨의 정확도(a) 및/또는 에러(e)를 갖고 신경망(114a)에 의해 검출되는 입력 데이터(110)의 부분들)가 부가적인 프로세싱을 위해 요구되지 않으므로 입력 데이터(110)의 다른 부분들을 축소된 데이터 세트(310)로서 신경망(114b)으로 출력할 수 있다.
몇몇 실시예들에서, 제 1 디바이스(302a)는 신경망(114a)에 의해 식별된 입력 데이터의 정확도, 에러, 신뢰도, 에러 행렬, 오차 행렬 등을 결정하도록 구성된다. 예를 들어, 제 1 디바이스(302a)는 신경망(114a)의 예측 정확도를 식별하는 오차 행렬을 생성하거나 또는 업데이트할 수 있다. 제 1 디바이스(302a)는 이후, 신경망(114a)의 "정확도"(a)로 불리우는, 신경망(114a)의 신뢰도 간격, 에러, 예측 에러, 정확도 등을 식별할 수 있다. 몇몇 실시예들에서, 정확도(a)는 정규화 값이다(예컨대, 0에서 1까지의 값, 여기에서 0은 최저 정확도이며 1은 최고 정확도이다). 몇몇 실시예들에서, 정확도(a)는 퍼센티지이다(예컨대, 0%에서 100%까지, 여기에서 0%는 최저 정확도이며 100%는 최고 정확도이다). 몇몇 실시예들에서, 제 1 디바이스(302a)는 추가 데이터 분석이 제 2 디바이스(302b)의 신경망(114b)을 사용하여 수행되어야 하는지를 결정하기 위해 신경망(114a)의 정확도(a)를 사용한다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 제 2 디바이스(302b)의 신경망(114b)이 입력 데이터(110)를 추가로 분석하기 위해 사용되어야 하는지를 결정하기 위해 임계 값(athreshold)에 정확도(a)를 비교한다. 몇몇 실시예들에서, 정확도(a)가 임계 값(athreshold)을 충족하거나 또는 이를 초과한다면(또는 에러를 고려하여 그 이하이면), 제 1 디바이스(302a)는 신경망(114a)이 충분히 정확하다고 결정하며 축소된 데이터 세트(310)는 제 2 디바이스(302b)로 제공되지 않는다. 몇몇 실시예들에서, 정확도가 임계 값(athreshold) 미만이면(또는 에러를 고려하여 그 이상이면), 제 1 디바이스(302a)는 추가 또는 부가적인 분석이 입력 데이터(110)에 대해 수행되어야 한다고 결정하며 축소된 데이터 세트(310)를 제 2 디바이스(302b)로 제공한다.
몇몇 실시예들에서, 제 1 디바이스(302a)는 신경망(114a)의 결과들(예컨대, 입력 데이터(110)의 식별된/검출된 특징들)이 하나 이상의 동작들을 수행하는데 충분히 정확한지를 결정하기 위해 정확도(a) 및 임계 값(athreshold)을 사용한다. 예를 들어, a > athreshold이거나 또는 a ≥ athreshold이면, 제 1 디바이스(302a)는 신경망(114a)의 결과들 또는 출력들이 하나 이상의 동작들을 수행하는데 충분하다고 결정할 수 있다. 몇몇 실시예들에서, a > athreshold이거나 또는 a ≥ athreshold이면, 제 1 디바이스(302a)는 축소된 데이터 세트(310)를 제 2 디바이스(302b)로 제공하지 않고 하나 이상의 동작들을 수행한다. 이러한 방식으로, 제 1 디바이스(302a)는 프로세싱 시간, 및 제 1 디바이스(302a)와 제 2 디바이스(302b) 간의 송신들의 수를 감소시키며, 그에 의해 에너지 소비 및 대역폭을 절약할 수 있다. 유리하게는, 이것은 제 1 디바이스(302a)와 제 2 디바이스(302b) 간의 트래픽을 감소시키고, 데이터를 송신하는 것과 연관된 대기시간을 감소시키며, 제 1 디바이스(302a)와 제 2 디바이스(302b) 사이에서 데이터를 전달하는 비용을 감소시킨다(예컨대, 에너지 소비를 감소시킨다).
몇몇 실시예들에서, 제 1 디바이스(302a)는 신경망(114a)의 각각의 출력에 대한(예컨대, 신경망(114a)에 의해 식별된/검출된 입력 데이터(110)의 각각의 특징에 대한) 정확도(a) 또는 에러(e)를 결정한다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 신경망(114a)의 각각의 출력에 대한 정확도(a) 및/또는 에러(e)를 각각 대응하는 임계 값(athreshold 및 ethreshold)에 비교한다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 정확도(a)가 임계 값(athreshold) 미만이라는 것에 응답하여 또는 에러(e)가 신경망(114a)의 출력들 중 하나 이상에 대한 대응하는 임계 값(ethreshold)보다 크다는 것에 응답하여 축소된 데이터 세트(310)를 출력한다. 몇몇 실시예들에서, 축소된 데이터 세트(310)는 불충분한 정확도(a) 및/또는 과도한 에러(e)와 연관된 입력 데이터(110)의 특징들을 식별하기 위해 신경망(114b)에 대해 요구되는 정보를 포함한다. 예를 들어, 신경망(114a)이 입력 데이터(110)의 5개의 특징들 중 4개를 정확하게 식별할 수 있지만 입력 데이터(110)의 제 5 특징을 정확하게 식별할 수 없다면(예컨대, e5 > ethreshold 또는 a5 < athreshold, 여기에서 e5 및 a5는 신경망(114a)에 의해 식별된 것으로서 제 5 특징의 에러 및 정확도이다), 신경망(114a)은 제 5 특징과 연관된 입력 데이터(110)를 축소된 데이터 세트(310)로서 신경망(114b)으로 출력할 수 있다. 신경망(114b)은 제 5 특징을 정확하게 식별하고 식별된 제 5 특징을 출력 데이터(112)로서 제 1 디바이스(302a)로 제공하기 위해 축소된 데이터 세트(310)를 사용할 수 있다.
몇몇 실시예들에서, 신경망(114b)의 출력은 출력 데이터(112)로서 제 1 디바이스(302a)로 제공된다. 출력 데이터(112)는 네트워크(114b)에 의해 식별된 임의의 부가적인 특징들에 관한 정보 또는 데이터 또는 신경망(114b)에 의해 더 정확하게 식별되는 입력 데이터(110)의 특징들을 포함할 수 있다.
몇몇 실시예들에서, 제 1 디바이스(302a)는 입력 데이터(110)의 특징들 중 임의의 것이 신경망(114a) 및/또는 신경망(114b)에 의해 식별된다는 것에 응답하여 또는 그것에 기초하여 동작을 수행하도록 구성된다. 예를 들어, 제 1 디바이스(302a)는 신경망(114a) 및/또는 신경망(114b)에 의해 식별된 입력 데이터(110)의 특징들 중 임의의 것에 기초하여, 그것을 사용하거나, 또는 그것에 응답하여, 디스플레이(264)를 위한 디스플레이 신호들(312)을 생성할 수 있다. 제 1 디바이스(302a)는 디스플레이 신호들(312)을 생성하며 사용자에게 상이한 화상을 제공하고, 디스플레이(264) 상에서 사용자에게 제공된 임의의 이미지들의 크기, 형태, 배향, 회전, 스큐, 외형, 컬러 등을 변경하기 위해 디스플레이(264)로 디스플레이 신호들(312)을 제공할 수 있다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 제 1 디바이스(302a)의 신경망(114a)에 의해 식별된 것으로서 입력 데이터(110)의 특징들 중 임의의 것에 응답하여 또는 제 2 디바이스(302b)의 신경망(114b)에 의해 식별된 것으로서 축소된 데이터 세트(310)의 특징들 중 임의의 것에 응답하여 디스플레이(264)를 사용하여 새로운 화상을 업데이트하거나 또는 제공하도록 구성된다.
몇몇 실시예들에서, 제 2 디바이스(302b)는 또한 본 출원에서 설명된 동작들 중 임의의 것을 수행하도록 구성된다. 몇몇 실시예들에서, 제 1 디바이스(302a)와 제 2 디바이스(302b) 양쪽 모두는 신경망(114a) 및/또는 신경망(114b)의 출력에 기초하여 하나 이상의 동작들을 수행할 수 있다. 예를 들어, 제 1 디바이스(302a)는, 제 2 디바이스(302b)가 제 2 신경망(114b)의 출력 데이터(112)에 응답하여(또는 제 1 신경망(114a)의 출력에 응답하여, 또는 제 1 신경망(114a) 및 제 2 신경망(114b) 양쪽 모두의 출력에 응답하여) 제 2 동작을 수행할 수 있는 동안 신경망(114a)의 출력에 응답하여(또는 제 2 신경망(114b)의 출력 데이터(112)에 응답하여, 또는 제 1 및 제 2 신경망들(114) 양쪽 모두의 출력들에 응답하여) 제 1 동작을 수행할 수 있다. 몇몇 실시예들에서, 제 1 디바이스(302a)는, 제 2 디바이스(302b)가 신경망(114b)의 프로세싱들에 응답하여 또는 기초하여 제 2 동작을 수행하는 동안 신경망(114a)의 프로세싱들에 응답하여 또는 기초하여 제 1 동작을 수행할 수 있으며, 여기에서 신경망(114a) 및 신경망(114b)은 동일한 입력 데이터(예컨대, 입력 데이터(110))를 사용한다.
몇몇 실시예들에서, 제 1 디바이스(302a)는 축소된 데이터 세트(310)를 제 2 디바이스(302b)로 제공하지 않고 동작을 수행하도록 구성된다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 신경망(114a)에 의해 식별된 하나 이상의 특징들이 충분한 정확도를 갖고 또는 충분한 에러를 갖고 식별된다는 것에 응답하여 입력 데이터(110)의 하나 이상의 식별된 특징들과 연관된 동작들을 수행하도록 구성된다. 예를 들어, 입력 데이터(110)의 제 1 특징이 대응하는 정확도(a1)(또는 에러(e1))를 갖고 식별되며 a1 > athreshold(또는 e < ethrehold)이면, 제 1 디바이스(302a)는 축소된 데이터 세트(310)를 제 2 디바이스(302b)로 송신하지 않고 연관된 동작들(예컨대, 새로운 화상을 변경하거나 또는 이를 디스플레이(264)를 사용하여 사용자에게 제공하는 것)을 수행할 수 있다. 몇몇 실시예들에서, 식별된 특징의 정확도(a)가 대응하는 임계 값(athreshold) 미만이면(또는 식별된 특징의 에러(e)가 대응하는 임계 값(ethreshold)보다 크면), 제 1 디바이스(302a)는 축소된 데이터 세트(310)를 신경망(114b)으로 제공한다. 몇몇 실시예들에서, 제 1 디바이스(302a)는 신경망(114b)의 출력들(즉, 출력 데이터(112))을 수신하며 동작을 수행하기 위해 신경망(114b)의 출력들을 사용할 수 있다. 몇몇 실시예들에서, 출력 데이터(112)는 동작을 수행하기 위해, 이미지 렌더러(260), 사후-프로세싱 엔진, 데이터 렌더링 서비스, 이미지 렌더링 엔진, 데이터 저장장치 등으로 제공된다.
몇몇 실시예들에서, 제 1 디바이스(302a) 양쪽 모두는 동작을 수행하기 위해 신경망(114a)에 의해 식별된 것으로서 입력 데이터(110)의 특징들을 사용하며 또한 축소된 데이터 세트(310)를 제 2 디바이스(302b)로 출력한다. 예를 들어, 신경망(114a)이 입력 데이터(110)의 제 1 특징을 정확하게 식별할 수 있지만(예컨대, 정확도(a)는 임계 값(athreshold)보다 크며 및/또는 에러(e)는 임계 값(ethreshold) 미만이다), 입력 데이터(110)의 제 2 특징을 정확하게 식별하지 않는다면(예컨대, 제 2 특징의 정확도(a)는 임계 값(athreshold) 미만이며 및/또는 제 2 특징의 에러(e)는 임계 값(ethreshold)보다 크다), 제 1 디바이스(302a)는 연관된 동작을 수행하기 위해 식별된 제 1 특징을 사용하며 제 2 특징을 식별하기 위해 축소된 데이터 세트(310)를 신경망(114b)으로 제공할 수 있다. 신경망(114b)은 충분한 정확도(a) 및/또는 충분히 낮은 에러(e)를 갖고 제 2 특징을 식별하기 위해 축소된 데이터 세트(310)를 사용하며 식별된 제 2 특징과 연관된 정보를 출력 데이터(112)로서 제 1 디바이스(302a)로 제공할 수 있다. 제 1 디바이스(302a)는 그 후 제 2 특징과 연관된 하나 이상의 동작들을 수행하기 위해 제 2 디바이스(302b)로부터 수신된 출력 데이터(112)를 사용할 수 있다.
특히 도 3c를 참조하면, 시스템(300)이 몇몇 실시예들에 따라 도시된다. 몇몇 실시예들에서, 부가적인 디바이스들(302)이 직렬로 통신 가능하게 연결된다. 디바이스들(302)은 유선 연결을 통해 또는 무선 연결(예컨대, 무선 통신 네트워크)을 통해 통신 가능하게 연결될 수 있다. 예를 들어, 시스템(300)은 디바이스들(302a...n)을 포함할 수 있다. 제 1 디바이스(302a)는 축소된 데이터 세트(310a)를 제 2 디바이스(302b)로 제공하고, 제 2 디바이스(302b)는 축소된 데이터 세트(310b)를 제 3 디바이스(302c)로 제공한다. 디바이스들(302a...n)의 각각은 대응하는 신경망(114) 또는 신경망(114)의 부가적인 층들을 포함한다. 예를 들어, 신경망(114)은 n개의 층들을 가질 수 있으며, 하나 이상의 층들의 제 1 세트는 제 1 디바이스(302a) 상에 구현되고, 하나 이상의 층들의 제 2 세트는 제 2 디바이스(302b) 상에 구현된다. 이러한 방식으로, 신경망(114)은 다수의 디바이스들에 걸쳐 분포될 수 있다.
디바이스들(302)의 각각은 대응하는 신경망(114) 또는 국소적으로 구현되는 신경망(114)의 대응하는 층들의 출력을 출력 데이터(112)로서 제 1 디바이스(302a)로 제공할 수 있다. 예를 들어, 제 2 디바이스(302b)는 출력 데이터(112a)를 제 1 디바이스(302a)로 제공할 수 있고, 제 3 디바이스(302c)는 출력 데이터(112b)를 제 1 디바이스(302a)로 제공할 수 있으며,..., 제 n 디바이스(302n)는 출력 데이터(112n)를 제 1 디바이스(302a)로 제공할 수 있다. 몇몇 실시예들에서, 각각의 디바이스(302)는 그것들의 대응하는 신경망들(114)의 각각의 출력(예컨대, 각각의 식별된 특징)의 에러들(e) 및/또는 정확도(a)를 결정하도록 구성된다. 몇몇 실시예들에서, 출력의 에러(e)가 임계 값(ethreshold) 미만이면, 출력은 출력 데이터(112)로서 제 1 디바이스(302a)로 제공된다. 마찬가지로, 출력의 정확도(a)가 임계 값(athreshold) 이상이면, 출력은 몇몇 실시예들에 따라, 출력 데이터(112)로서 제 1 디바이스(302a)로 제공된다.
몇몇 실시예들에서, 에러(e)가 임계 값(ethreshold)보다 크면(또는 그 이상이면), 대응하는 디바이스(302)는 축소된 데이터 세트(310)를 생성하며 축소된 데이터 세트(310)를 다음 디바이스(302)로 제공한다. 마찬가지로, 출력의 정확도(a)가 임계 값(athreshold) 미만(또는 이하)이면, 대응하는 디바이스(302)(출력을 생성하는 디바이스(302))는 축소된 데이터 세트(310)를 생성하며 축소된 데이터 세트(310)를 다음 디바이스(302)로 제공한다. 몇몇 실시예들에서, 축소된 데이터 세트는 업스트림 디바이스(302)에 의해 정확하게 분석/식별될 수 없는 출력들만을 분석하기 위해 다음 디바이스(302)에 대한 정보/데이터를 포함한다. 몇몇 실시예들에서, 축소된 데이터 세트는 입력 데이터(110)의 모든 관련된/요구된 특징들을 결정/식별하기 위해 다음 디바이스(302)에 대한 정보/데이터 모두를 포함한다.
이러한 방식으로, 디바이스(302)가 입력 데이터(예컨대, 입력 데이터(110) 또는 축소된 데이터 세트(310))의 특징을 정확하게 예측하고, 분석하고, 출력하는 등을 할 수 없다면, 디바이스(302)는 축소된 데이터 세트(310)를 생성하며 축소된 데이터 세트(310)를 다음 디바이스(302)로 제공한다. 다음 디바이스(302)는 그 후 직접 업스트림 디바이스(302)에 의해 그것에 제공된 입력 데이터(예컨대, 축소된 데이터 세트(310))의 특징들을 분석하고, 예측하고, 출력하고, 식별하고, 검출하는 등을 위해 축소된 데이터 세트(310)를 사용할 수 있다. 이것은 입력 데이터(110)의 모든 요구된 특징들이 식별/검출될 때까지 반복될 수 있다.
특히 도 3b를 참조하면, 다수의 디바이스들에 걸쳐 신경망을 구현하기 위한 또는 다수의 디바이스들에 걸쳐 다수의 신경망들을 협력적으로 구현하기 위한 프로세스(350)가 몇몇 실시예들에 따라 도시된다. 프로세스(350)는 몇몇 실시예들에 따라, 단계들(352 내지 366)을 포함한다. 프로세스(350)는 시스템(300)의 디바이스들, 구성요소들 등 중 임의의 것에 의해 수행될 수 있다. 유리하게는, 프로세스(350)는 디바이스들 간의 송신을 감소시키며 디바이스들이 프로세싱 요건들을 감소시킬 수 있게 하고, 그에 의해 에너지 절감들을 가능하게 한다. 프로세스(350)는 로컬 프로세싱 유닛(예컨대, GPU, CPU, 프로세싱 회로부 등)을 가질 수 있는 HMD 및/또는 AR 시스템에 유리할 수 있다. 유리하게는, 프로세스(350)는 로컬 프로세싱 유닛이 입력 데이터의 특징을 식별하기 위해 또는 계산이 많을 수 있는 신경망을 구현하기 위해 프로세싱 요건들을 감소시킬 수 있게 한다. 로컬 프로세싱 유닛은 입력 데이터의 특징들을 식별하기 위해 각각의 신경망 또는 신경망의 일 부분(예컨대, 특정한 층들)을 구현하며 HMD 및/또는 AR 시스템의 디스플레이에서 동작을 수행하기 위해 식별된 특징들을 사용할 수 있다. 로컬 프로세싱 유닛이 입력 데이터의 특징들을 정확하게 식별할 수 없다면, 로컬 프로세싱 유닛은 축소된 데이터 세트를 특징들을 정확하게 식별할 수 있는 또 다른 프로세싱 유닛(예컨대, 외부 프로세싱 유닛, 제 2 프로세싱 유닛, 제 2 로컬 프로세싱 유닛, AI 가속화기, 원격 디바이스 등)으로 제공할 수 있다. 이러한 방식으로, HMD 및/또는 AR 시스템의 로컬 프로세싱 유닛의 프로세싱 요건들이 감소되고 로컬 프로세싱 유닛과 다른 프로세싱 유닛 간의 데이터 전달 빈도 및 크기가 감소되며, 그에 의해 로컬 프로세싱 유닛과 다른 프로세싱 유닛 간의 통신들에서의 대기시간을 감소시킨다.
프로세스(350)는 몇몇 실시예들에 따라, 제 1 디바이스에서 입력 데이터를 수신하는 것을 포함한다(단계 352). 몇몇 실시예들에서, 입력 데이터는 외부 디바이스로부터 수신된다. 몇몇 실시예들에서, 입력 데이터는 HMD 및/또는 AR 시스템의 센서들, 카메라들 등으로부터 수신된다. 몇몇 실시예들에서, 입력 데이터는 외부 디바이스에 의해 제공되거나 또는 HMD 및/또는 AR 시스템의 센서들, 카메라들 등에 의해 캡처된 이미지 데이터이다. 몇몇 실시예들에서, 이미지 데이터는 오브ㅈ게트들, 환경, 가상 환경, 실-세계 환경, 사람들, 풍경들, 불규칙적인 형태들, 입자들 등의 이미지 데이터이다. 몇몇 실시예들에서, 단계 352는 제 1 디바이스(302a)에 의해 수행된다. 몇몇 실시예들에서, 입력 데이터는 신경망(114a)에 의해 수신된다.
프로세스(350)는 몇몇 실시예들에 따라, (1) 제 1 신경망 및 입력 데이터 또는 (2) 제 1 신경망의 층들의 제 1 세트 및 입력 데이터를 사용하여 축소된 데이터 세트를 생성하는 것을 포함한다(단계 354). 몇몇 실시예들에서, 단계 354는 단계 352에서 수신된 또는 획득된 입력 데이터(예컨대, 입력 데이터(110))를 사용하여 신경망(114a)에 의해 수행된다. 몇몇 실시예들에서, 단계 354는 제 1 디바이스에서 국소적으로 수행된다. 몇몇 실시예들에서, 단계 354를 수행하기 위해 제 1 디바이스에서 사용된 신경망은 독립적 신경망이다. 몇몇 실시예들에서, 단계 354를 수행하기 위해 제 1 디바이스에서 사용된 신경망은 다수의 디바이스들에 걸쳐 분포되는 신경망의 제 1 하나 이상의 층들이다.
프로세스(350)는 몇몇 실시예들에 따라, (1) 제 1 신경망 및 입력 데이터 또는 (2) 제 1 신경망의 층들의 제 1 세트 및 입력 데이터를 사용하여 입력 데이터의 하나 이상의 특징들을 식별하는 것을 포함한다(단계 356). 몇몇 실시예들에서, 단계 356은 제 1 디바이스(302a)의 신경망(114a)에 의해 수행된다. 몇몇 실시예들에서, 단계 356은 연관된 신경망을 사용하여 입력 데이터의 적어도 하나의 특징을 식별하거나 또는 검출하는 것을 포함한다. 몇몇 실시예들에서, 단계 354 및/또는 단계 356은 함께 또는 동시에 수행된다. 몇몇 실시예들에서, 단계 356은 단계 354를 수행하기 전에 수행된다. 몇몇 실시예들에서, 단계 356은 단계 360에 응답하여(예컨대, 단계 360, "예"에 응답하여) 수행된다.
프로세스(350)는 몇몇 실시예들에 따라, 단계 356에서 식별된 하나 이상의 특징들(예컨대, 단계 356의 신경망의 출력들)과 연관된 에러, 정확도, 신뢰도 등을 결정하는 것을 포함한다(단계 358). 몇몇 실시예들에서, 에러(e) 및/또는 정확도(a)는 제 1 디바이스(302a)에 의해 결정된다. 에러(e) 및/또는 정확도(a)는 신경망(114a)에 의해 식별된 하나 이상의 특징들이 충분히 정확한지를 결정하기 위해 사용될 수 있다(예컨대, 단계 360에서 사용된다).
프로세스(350)는 몇몇 실시예들에 따라, 부가적인 분석이 요구되는지를 결정하는 것을 포함한다(단계 360). 몇몇 실시예들에서, 단계 360은 축소된 데이터 세트가 생성되어야 하는지 및/또는 축소된 데이터 세트가 제 2 디바이스로 제공되어야 하는지를 결정하기 위해 수행된다. 몇몇 실시예들에서, 단계 360은 단계 356에서 식별된 입력 데이터의 하나 이상의 특징들의 정확도(a) 및/또는 에러(e)에 기초하여 결정된다. 몇몇 실시예들에서, 단계 360은 정확도(a) 및/또는 에러(e)를 대응하는 임계 값들(즉, 각각 athreshold 및 ethreshold)에 비교하는 것을 포함한다. 정확도(a)가 임계 값(athreshold)보다 크다(또는 같다)는 것에 응답하여, 제 1 디바이스(302a)는 부가적인 분석이 요구되지 않는다고(단계 360, "아니오") 결정할 수 있으며 프로세스(350)는 단계 366으로 진행한다. 에러(e)가 임계 값(ethreshold) 미만임에 응답하여, 제 1 디바이스(302a)는 부가적인 분석이 요구되지 않는다고(단계 360, "아니오") 결정할 수 있으며, 프로세스(350)는 단계 366으로 진행한다. 정확도(a)가 임계 값(athreshold) 미만임에 응답하여, 제 1 디바이스(302a)는 부가적인 분석이 요구된다고(단계 360, "예") 결정할 수 있으며 프로세스(350)는 단계 362로 진행한다. 에러(e)가 임계 값(ethreshold)보다 크다는 것에 응답하여, 제 1 디바이스(302a)는 부가적인 분석이 요구된다고(단계 360, "예") 결정할 수 있으며 프로세스(350)는 단계 362로 진행한다.
프로세스(350)는 몇몇 실시예들에 따라, 축소된 데이터 세트를 제 2 디바이스로 제공하는 것을 포함한다(단계 362). 몇몇 실시예들에서, 제 2 디바이스는 네트워크 디바이스, 외부 디바이스, AI 가속화기(예컨대, AI 가속화기(108)), 또 다른 컴퓨팅 디바이스 등이다. 몇몇 실시예들에서, 제 2 디바이스는 특징들을 식별하도록 입력 데이터를 추가로 분석하기 위해 사용될 수 있는 제 2 신경망 또는 제 1 신경망의 부가적인 층들을 포함한다. 몇몇 실시예들에서, 제 2 디바이스는 제 1 디바이스에 비교될 때 부가적인 프로세싱 능력들을 가진다. 몇몇 실시예들에서, 단계 362는 네트워크, 제 1 디바이스와 제 2 디바이스 간의 무선 연결, 제 1 및 제 2 디바이스 간의 유선 연결 등을 통해 수행된다.
프로세스(350)는 몇몇 실시예들에 따라 (1) 제 2 신경망 및 축소된 데이터 세트 또는 (2) 제 1 신경망의 층들의 제 2 세트를 사용하여 축소된 데이터 세트의 하나 이상의 특징들을 식별하는 것을 포함한다(단계 364). 몇몇 실시예들에서, 축소된 데이터 세트는 제 1 디바이스에 의해(예컨대, 제 1 신경망 또는 제 1 신경망의 층들의 제 1 세트에 의해) 출력되며 입력으로서 신경망 또는 제 2 디바이스의 신경망의 층들로 제공된다. 몇몇 실시예들에서, 제 2 디바이스는 제 2 디바이스(302b)이다. 몇몇 실시예들에서, 단계 364는 신경망(114b)에 의해 수행된다.
프로세스(350)는 몇몇 실시예들에 따라, 입력 데이터의 특징들에 기초하여 동작을 수행하는 것을 포함한다(단계 366). 몇몇 실시예들에서, 단계 366은 제 1 디바이스(302a)에 의해 수행된다. 몇몇 실시예들에서, 단계 366은 제 1 디바이스(302a) 및 디스플레이(들)(264)에 의해 수행된다. 예를 들어, 제 1 디바이스(302a)는 동작을 수행하기 위해 디스플레이 신호들을 생성하며 디스플레이 신호들을 디스플레이(264)로 제공할 수 있다. 몇몇 실시예들에서, 동작은 디스플레이(264)를 통해 사용자에게 부가적인 화상을 제공하는 것, 디스플레이(264)를 통해 현재 사용자에게 디스플레이되는 화상을 변경하는 것, 부가적인 데이터 프로세싱을 수행하는 것, 사후-프로세싱 알고리즘을 수행하는 것 등을 포함한다. 몇몇 실시예들에서, 디스플레이(264)를 통해 사용자에게 제공된 부가적인 화상은 텍스트 정보(예컨대, AR 시스템에서 오버레이되는), 컴퓨터 생성 화상(예컨대, 오브젝트들, 문자들, 입자들, 텍스처들 등) 등이거나 또는 이를 포함한다. 몇몇 실시예들에서, 단계 366은 단계 356 및/또는 단계 364에서 식별된 입력 데이터의 특징들 및 축소된 데이터 세트 중 임의의 것에 기초하여 수행된다. 몇몇 실시예들에서, 동작은 사용자에게 화상을 제공하도록 디스플레이(264)를 동작시키는 것을 포함한다.
예시적인 실시예들의 구성
현재 몇몇 예시적인 구현들을 설명하였으며, 앞서 말한 것은 예시적이며 제한적이지 않고 예로서 제공되었다는 것이 명백하다. 특히, 본 출원에서 제공된 예들 중 많은 것은 방법 동작들 또는 시스템 요소들의 특정 조합들을 수반하지만, 이들 동작들 및 이들 요소들은 동일한 목적들을 달성하기 위해 다른 방식들로 조합될 수 있다. 일 구현과 관련하여 논의된 동작들, 요소들 및 특징들은 다른 구현들 또는 구현들에서 유사한 역할로부터 배제되도록 의도되지 않는다.
본 출원에서 개시된 실시예들과 관련하여 설명된 다양한 프로세스들, 동작들, 예시적인 로직들, 논리 블록들, 모듈들 및 회로들을 구현하기 위해 사용된 하드웨어 및 데이터 프로세싱 구성요소들은 본 출원에서 설명된 기능들을 수행하도록 설계된 범용 단일- 또는 다중-칩 프로세서, 디지털 신호 프로세서(DSP), 애플리케이션 특정 집적 회로(ASIC), 필드 프로그램 가능한 게이트 어레이(FPGA), 또는 다른 프로그램 가능한 논리 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 구성요소들, 또는 그것의 임의의 조합을 갖고 구현되거나 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서, 또는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 기계일 수 있다. 프로세서는 또한 DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 함께 있는 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성과 같은, 컴퓨팅 디바이스들의 조합으로서 구현될 수 있다. 몇몇 실시예들에서, 특정한 프로세스들 및 방법들은 주어진 함수에 특정적인 회로부에 의해 수행될 수 있다. 메모리(예컨대, 메모리, 메모리 유닛, 저장 디바이스 등)는 본 개시에서 설명된 다양한 프로세스들, 층들 및 모듈들을 완성하거나 또는 가능하게 하기 위한 데이터 및/또는 컴퓨터 코드를 저장하기 위해 하나 이상의 디바이스들(예컨대, RAM, ROM, 플래시 메모리, 하드 디스크 저장장치 등)을 포함할 수 있다. 메모리는 휘발성 메모리 또는 비-휘발성 메모리이거나 또는 이를 포함할 수 있으며, 본 개시에서 설명된 다양한 활동들 및 정보 구조들을 지원하기 위한 데이터베이스 구성요소들, 오브젝트 코드 구성요소들, 스크립트 구성요소들, 또는 임의의 다른 유형의 정보 구조를 포함할 수 있다. 대표적인 실시예에 따르면, 메모리는 프로세싱 회로를 통해 프로세서에 통신 가능하게 연결되며 본 출원에서 설명된 하나 이상의 프로세스들을 실행하기 위해(예컨대, 프로세싱 회로 및/또는 프로세서에 의해) 컴퓨터 코드를 포함한다.
본 발명은 다양한 동작들을 성취하기 위해 임의의 기계-판독 가능한 미디어 상에 방법들, 시스템들 및 프로그램 제품들을 고려한다. 본 발명의 실시예들은 기존의 컴퓨터 프로세서들을 사용하여, 또는 이러한 또는 또 다른 목적을 위해 통합된, 적절한 시스템을 위한 특수 목적 컴퓨터 프로세서에 의해, 또는 하드와이어드 시스템에 의해 구현될 수 있다. 본 발명의 범위 내에서의 실시예들은 기계-실행 가능한 지시들 또는 데이터 구조들을 운반하거나 또는 저장하기 위한 기계-판독 가능한 미디어를 포함한 프로그램 제품들을 포함한다. 이러한 기계-판독 가능한 미디어는 범용 또는 특수 목적 컴퓨터 또는 프로세서를 가진 다른 기계에 의해 액세스될 수 있는 임의의 이용 가능한 미디어일 수 있다. 예로서, 이러한 기계-판독 가능한 미디어는 RAM, ROM, EPROM, EEPROM, 또는 다른 광학 디스크 저장장치, 자기 디스크 저장장치 또는 다른 자기 저장 디바이스들, 또는 기계-실행 가능한 지시들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 운반하거나 또는 저장하기 위해 사용될 수 있으며 범용 또는 특수 목적 컴퓨터 또는 프로세서를 가진 다른 기계에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 상기의 조합들은 또한 기계-판독 가능한 미디어의 범위 내에 포함된다. 기계-실행 가능한 지시들은, 예를 들면, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 프로세싱 기계들이 특정한 기능 또는 기능들의 그룹을 수행하게 하는 지시들 및 데이터를 포함한다.
본 출원에서 사용된 어법 및 용어는 설명의 목적을 위한 것이며 제한적인 것으로 간주되지 않아야 한다. 본 출원에서 "포함시키는", "포함하는", "가진", "함유하는", "수반하는", "~에 의해 특성화되는", "~라는 점에서 특성화되는" 및 그것의 변형들의 사용은 이후 나열된 아이템들, 그것의 등가물들, 및 부가적인 아이템들, 뿐만 아니라 독점적으로 이후 나열된 아이템들로 이루어진 대안적인 구현들을 포함하도록 의도된다. 일 구현에서, 본 출원에서 설명된 시스템들 및 방법들은 설명된 요소들, 동작들, 또는 구성요소들 중 하나, 하나 이상의 각각의 조합, 또는 모두로 이루어진다.
본 출원에서 단수형으로 참조된 시스템들 및 방법들의 구현들 또는 요소들 또는 동작들에 대한 임의의 참조들은 또한 복수의 이들 요소들을 포함한 구현들을 포괄할 수 있으며, 본 출원에서 임의의 구현 또는 요소 또는 동작에 대한 복수형으로의 임의의 참조들은 또한 단지 단일 요소만을 포함한 구현들을 포괄할 수 있다. 단수형 또는 복수형 형태에서의 참조들은 현재 개시된 시스템들 또는 방법들, 그것들의 구성요소들, 동작들, 또는 요소들을 단일의 또는 복수의 구성들에 제한하도록 의도되지 않는다. 임의의 정보, 동작 또는 요소에 기초하는 임의의 동작 또는 요소에 대한 참조들은 동작 또는 요소가 임의의 정보, 동작, 또는 요소에 적어도 부분적으로 기초하는 구현들을 포함할 수 있다.
본 출원에서 개시된 임의의 구현은 임의의 다른 구현 또는 실시예와 조합될 수 있으며, "구현", "몇몇 구현들", "일 구현" 등에 대한 참조들은 반드시 상호 배타적인 것은 아니며 구현과 관련하여 설명된 특정한 특징, 구조, 또는 특성이 적어도 하나의 구현 또는 실시예에 포함될 수 있음을 나타내도록 의도된다. 본 출원에서 사용된 바와 같이 이러한 용어들은 반드시 모두가 동일한 구현을 나타내는 것은 아니다. 임의의 구현은 본 출원에서 개시된 양상들 및 구현들과 일치하는 임의의 방식으로, 포괄적으로 또는 배타적으로, 임의의 다른 구현과 조합될 수 있다.
도면들에서의 기술적 특징들, 상세한 설명 또는 임의의 청구항이 참조 부호들로 이어지는 경우에, 참조 부호들은 도면들, 상세한 설명, 및 청구항들의 이해도를 증가시키기 위해 포함되었다. 따라서, 참조 부호들도 및 그것들의 부재도 임의의 청구항 요소들의 범위에 임의의 제한적인 영향을 주지 않는다.
본 출원에서 설명된 시스템들 및 방법들은 그것의 특성들로부터 벗어나지 않고 다른 특정 형태들로 구체화될 수 있다. "대략", 약", "대체로", 또는 정도의 다른 용어들에 대한 참조들은 달리 명시적으로 표시되지 않는다면 주어진 측정, 유닛, 또는 범위로부터 +/-10%의 변화들을 포함한다. 결합된 요소들은 직접 또는 매개 요소들을 갖고 전기적으로, 기계적으로, 또는 물리적으로 서로 결합될 수 있다. 본 출원에서 설명된 시스템들 및 방법들의 범위는 따라서 앞서 말한 설명보다는, 첨부된 청구항들에 의해 표시되며, 청구항들의 등가성의 의미 및 범위 내에 있는 변화들이 그 안에 포괄된다.
용어 "결합된" 및 그것의 변화들은 서로에 대해 직접 또는 간접적으로 두 개의 멤버들의 연결을 포함한다. 이러한 연결은 정지되거나(예컨대, 영구적 또는 고정된) 또는 이동 가능할(예컨대, 착탈 가능하거나 또는 해제 가능한) 수 있다. 이러한 연결은 서로와 또는 그것에 직접 결합된 두 개의 멤버들을 갖고 달성될 수 있으며, 두 개의 멤버들은 별개의 매개 멤버들 및 서로 결합된 임의의 부가적인 중간 멤버들을 사용하여 서로 결합되거나 또는 두 개의 멤버들은 두 개의 멤버들 중 하나와 단일 통합 몸체로서 일체형으로 형성된 매개 멤버를 사용하여 서로 결합된다. "결합된" 또는 그것의 변형들이 부가적인 용어에 의해 수정된다면(예컨대, 직접 결합되는), 상기 제공된 "결합된"의 일반적인 정의는 부가적인 용어의 평문 의미 의미에 의해 수정되어(예컨대, "직접 결합된"은 임의의 별개의 매개 멤버 없이 두 개의 멤버들의 연결을 의미한다), 상기 제공된 "결합된"의 일반적인 정의보다 좁은 정의를 야기한다. 이러한 결합은 기계적, 전기적, 또는 유동적일 수 있다.
"또는"에 대한 참조들은 "또는"을 사용하여 설명된 임의의 용어들이 설명된 용어들 중 단일, 하나 이상, 및 모두 중 임의의 것을 나타낼 수 있도록 포괄적인 것으로 해석될 수 있다. "'A' 및 'B' 중 적어도 하나"에 대한 참조는 단지 'A', 단지 'B', 뿐만 아니라 'A' 및 'B' 양쪽 모두를 포함할 수 있다. "포함하는" 또는 다른 개방 용어와 함께 사용된 이러한 참조들은 부가적인 아이템들을 포함할 수 있다.
다양한 요소들의 크기들, 치수들, 구조들, 형태들 및 비율들, 파라미터들의 값들, 장착 배열들, 재료들의 사용, 컬러들, 배향들에서의 변화들과 같은 설명된 요소들 및 동작들의 수정들은 실질적으로 본 출원에서 개시된 주제의 교시들 및 이점들로부터 벗어나지 않고 발생할 수 있다. 예를 들어, 일체형으로 형성된 것으로서 도시된 요소들은 다수의 부분들 또는 요소들로 구성될 수 있고, 요소들의 위치는 역전되거나 또는 그 외 변경될 수 있으며, 별개의 요소들 또는 위치들의 특징 또는 수가 변경되거나 또는 변화될 수 있다. 다른 대체들, 수정들, 변화들, 및 생략들이 또한 첨부된 청구항들에서 정의된 바와 같이 본 발명의 범위로부터 벗어나지 않고 개시된 요소들 및 동작들의 설계, 동작 조건들 및 배열에서 이루어질 수 있다.
본 출원에서 요소들의 위치들에 대한 참조들(예컨대, "최상부", "최하부", "위", "아래")은 단지 도면들에서 다양한 요소들의 배향을 설명하기 위해 사용된다. 다양한 요소들의 배향은 다른 대표적인 실시예들에 따라 상이할 수 있으며 상기 이러한 변화들은 본 발명에 의해 포괄되도록 의도된다.

Claims (15)

  1. 방법에 있어서,
    신경망의 제 1 하나 이상의 층들로 구성된 제 1 디바이스에 의해, 상기 제 1 디바이스 및 제 2 디바이스에 걸쳐 구현된 상기 신경망을 통해 프로세싱을 위한 입력 데이터를 수신하는 단계;
    상기 제 1 디바이스 상에 구현된 상기 신경망의 제 1 하나 이상의 층들에 의해, 상기 신경망의 제 2 하나 이상의 층들에 의한 프로세싱을 위해 상기 입력 데이터의 하나 이상의 특징들을 식별하는 동안 상기 입력 데이터에 대하여 크기가 축소되는 데이터 세트를 출력하는 단계; 및
    상기 제 1 디바이스에 의해, 상기 제 2 디바이스 상에서 구현된 상기 신경망의 제 2 하나 이상의 층들을 통해 프로세싱을 위해 상기 데이터 세트를 상기 제 2 디바이스로 전달하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 제 1 하나 이상의 층들에 의해, 네트워크를 통해 상기 제 2 디바이스로의 송신을 위해 상기 데이터 세트를 압축함으로써 상기 데이터 세트를 축소시키는 단계를 더 포함하는, 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 제 2 하나 이상의 층들은 상기 입력 데이터 내에서 하나 이상의 특징들 중 한 특징을 검출하며;
    선택적으로, 상기 방법은, 상기 제 1 디바이스에 의해, 상기 특징이 상기 제 2 하나 이상의 층들에 의해 검출되었다는 표시를 상기 제 2 디바이스로부터 수신하는 단계를 더 포함하는, 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제 1 디바이스에 의해, 상기 하나 이상의 특징들 중 한 특징이 상기 제 1 디바이스에 의해 동작을 취하기 위한 정확도의 임계치를 충족함을 검출하는 단계를 더 포함하는, 방법.
  5. 제 4 항에 있어서,
    상기 제 1 디바이스에 의해, 상기 검출에 응답하여, 상기 특징에 대한 상기 동작을 수행하는 단계를 더 포함하며;
    선택적으로, 상기 방법은 상기 데이터 세트를 상기 제 2 디바이스로 전달하지 않고 상기 동작을 수행하는 단계를 더 포함하는, 방법.
  6. 방법에 있어서,
    착용 가능한 헤드 디스플레이의 프로세서에 의해, 상기 착용 가능한 헤드 디스플레이에 의해 캡처된 입력 데이터를 수신하는 단계;
    상기 프로세서 상에 구현된 상기 신경망의 제 1 하나 이상의 층들에 의해, 신경망의 제 2 하나 이상의 층들에 의한 프로세싱을 위해 상기 입력 데이터의 하나 이상의 특징들을 식별하는 동안 상기 입력 데이터에 대하여 크기가 축소되는 데이터 세트를 생성하는 단계;
    상기 프로세서에 의해, 상기 데이터 세트에서 상기 하나 이상의 특징들 중 한 특징을 검출하는 단계; 및
    상기 프로세서에 의해, 상기 특징을 검출하는 것에 응답하여, 상기 데이터 세트를 상기 신경망의 제 2 하나 이상의 층들을 구현한 제 2 디바이스로 전달하는 대신에 상기 특징에 대한 동작을 수행하는 단계를 포함하는, 방법.
  7. 제 6 항에 있어서,
    상기 프로세서에 의해, 정확도의 임계치 내에서 상기 특징을 검출하는 단계를 더 포함하는, 방법.
  8. 제 6 항 또는 제 7 항에 있어서,
    상기 착용 가능한 헤드 디스플레이를 통해 디스플레이되는 이미지를 수정하는 것을 포함한 동작을 수행하는 단계를 더 포함하는, 방법.
  9. 제 6 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 프로세서 상에 구현된 상기 제 1 하나 이상의 층들에 의해, 제 2 입력 데이터의 특징들 중 제 2 하나 이상을 식별하는 동안 상기 제 2 입력 데이터에 대하여 크기가 축소되는 제 2 데이터 세트를 생성하는 단계를 더 포함하는, 방법.
  10. 제 9 항에 있어서,
    상기 프로세서에 의해, 상기 제 2 하나 이상의 특징들의 제 2 특징이 정확도의 임계치 내에서 검출 가능하지 않다고 결정하는 단계를 더 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 프로세서에 의해, 상기 결정에 응답하여, 상기 제 2 데이터 세트를 상기 신경망의 제 2 하나 이상의 층들을 구현한 상기 제 2 디바이스로 전달하는 단계를 더 포함하며,
    선택적으로, 상기 방법은, 상기 프로세서에 의해, 상기 제 2 하나 이상의 층들에 의한 상기 제 2 데이터 세트의 프로세싱의 결과의 표시를 상기 제 2 디바이스로부터 수신하는 단계를 더 포함하는, 방법.
  12. 시스템에 있어서,
    제 1 디바이스 및 제 2 디바이스에 걸쳐 구현된 신경망을 통해 프로세싱을 위한 입력 데이터를 수신하도록 구성된 제 1 디바이스를 포함하며,
    상기 제 1 디바이스 상에 구현된 상기 신경망의 제 1 하나 이상의 층들은 상기 신경망의 제 2 하나 이상의 층들에 의한 프로세싱을 위해 상기 입력 데이터의 하나 이상의 특징들을 식별하는 동안 상기 입력 데이터에 대하여 크기가 축소되는 데이터 세트를 출력하도록 구성되며;
    상기 제 1 디바이스는 상기 제 2 디바이스 상에 구현된 상기 신경망의 제 2 하나 이상의 층들을 통해 프로세싱을 위해 상기 데이터 세트를 상기 제 2 디바이스로 전달하도록 구성되는, 시스템.
  13. 제 12 항에 있어서,
    상기 제 1 하나 이상의 층들은 또한 네트워크를 통해 상기 제 2 디바이스로의 송신을 위해 상기 데이터 세트를 압축함으로써 상기 데이터 세트를 축소시키도록 구성되는, 시스템.
  14. 제 12 항 또는 제 13 항에 있어서,
    상기 제 2 하나 이상의 층들은 또한 상기 입력 데이터 내에서 상기 하나 이상의 특징들 중 한 특징을 검출하도록 구성되며;
    선택적으로, 상기 제 1 디바이스는 또한 상기 특징이 상기 제 2 하나 이상의 층들에 의해 검출되었다는 표시를 상기 제 2 디바이스로부터 수신하도록 구성되는, 시스템.
  15. 제 12 항 내지 제 14 항 중 어느 한 항에 있어서,
    상기 제 1 디바이스는 또한 상기 하나 이상의 특징들 중 한 특징이 상기 제 1 디바이스에 의해 동작을 취하기 위한 정확도의 임계치를 충족함을 검출하도록 구성되며;
    선택적으로, 상기 제 1 디바이스는 또한, 상기 검출에 응답하여, 상기 데이터 세트를 상기 제 2 디바이스로 전달하지 않고 상기 특징에 대하여 상기 동작을 수행하도록 구성되는, 시스템.
KR1020227004217A 2019-07-09 2020-07-07 다수의 컴퓨팅 디바이스들에 걸쳐 신경망을 분배하기 위한 시스템들 및 방법들 KR20220031681A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/506,479 2019-07-09
US16/506,479 US11698529B2 (en) 2019-07-09 2019-07-09 Systems and methods for distributing a neural network across multiple computing devices
PCT/US2020/041077 WO2021007257A1 (en) 2019-07-09 2020-07-07 Systems and methods for distributing a neural network across multiple computing devices

Publications (1)

Publication Number Publication Date
KR20220031681A true KR20220031681A (ko) 2022-03-11

Family

ID=71787198

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227004217A KR20220031681A (ko) 2019-07-09 2020-07-07 다수의 컴퓨팅 디바이스들에 걸쳐 신경망을 분배하기 위한 시스템들 및 방법들

Country Status (6)

Country Link
US (1) US11698529B2 (ko)
EP (1) EP3997620A1 (ko)
JP (1) JP2022540549A (ko)
KR (1) KR20220031681A (ko)
CN (1) CN114051617A (ko)
WO (1) WO2021007257A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210056357A1 (en) * 2019-08-19 2021-02-25 Board Of Trustees Of Michigan State University Systems and methods for implementing flexible, input-adaptive deep learning neural networks
KR20210039197A (ko) * 2019-10-01 2021-04-09 삼성전자주식회사 데이터를 처리하는 방법 및 장치
CN111552076B (zh) * 2020-05-13 2022-05-06 歌尔科技有限公司 一种图像显示方法、ar眼镜及存储介质
US20220374067A1 (en) * 2021-05-19 2022-11-24 International Business Machines Corporation Augmented reality based power management
EP4202775A1 (en) * 2021-12-27 2023-06-28 GrAl Matter Labs S.A.S. Distributed data processing system and method
CN114077811B (zh) * 2022-01-19 2022-04-12 华东交通大学 一种基于图神经网络的电力物联网设备异常检测方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018013200A1 (en) * 2016-07-14 2018-01-18 Magic Leap, Inc. Deep neural network for iris identification
US10332320B2 (en) 2017-04-17 2019-06-25 Intel Corporation Autonomous vehicle advanced sensing and response
US20190095946A1 (en) * 2017-09-25 2019-03-28 Get Attached, Inc. Automatically analyzing media using a machine learning model trained on user engagement information
US11017317B2 (en) * 2017-12-27 2021-05-25 X Development Llc Evaluating robot learning
US11403517B2 (en) 2018-09-27 2022-08-02 Intel Corporation Proximity-based distributed sensor processing

Also Published As

Publication number Publication date
JP2022540549A (ja) 2022-09-16
EP3997620A1 (en) 2022-05-18
US20210011288A1 (en) 2021-01-14
WO2021007257A1 (en) 2021-01-14
CN114051617A (zh) 2022-02-15
US11698529B2 (en) 2023-07-11

Similar Documents

Publication Publication Date Title
US11698529B2 (en) Systems and methods for distributing a neural network across multiple computing devices
US11010921B2 (en) Distributed pose estimation
US11838518B2 (en) Reprojecting holographic video to enhance streaming bandwidth/quality
US11798271B2 (en) Depth and motion estimations in machine learning environments
US20220013148A1 (en) Cinematic space-time view synthesis for enhanced viewing experiences in computing environments
US10860889B2 (en) Depth prediction from dual pixel images
JP2022532238A (ja) ニューラルネットワークおよび角検出器を使用した角検出のための方法および装置
US20230360182A1 (en) Enhanced Photo Relighting Based on Machine Learning Models
US11526704B2 (en) Method and system of neural network object recognition for image processing
CN108701355B (zh) Gpu优化和在线基于单高斯的皮肤似然估计
US11854230B2 (en) Physical keyboard tracking
US11353955B1 (en) Systems and methods for using scene understanding for calibrating eye tracking
KR20240058070A (ko) Npu를 포함하는 엣지 디바이스 그리고 동작 방법
WO2019183914A1 (en) Dynamic video encoding and view adaptation in wireless computing environments
KR20240024277A (ko) 시선 분류
CN117063205A (zh) 在人工现实环境中生成和修改动态对象的表示
US20230186579A1 (en) Prediction of contact points between 3d models
CN118251643A (zh) 用于锚定增强现实对象的电子设备和方法
US11430238B1 (en) Generating a contextual information vector for improved scene understanding
NL2029549B1 (en) Incremental 2d-to-3d pose lifting for fast and accurate human pose estimation
US20230401796A1 (en) Fast ar device pairing using depth predictions
WO2024091741A1 (en) Depth estimation using image and sparse depth inputs
WO2023239776A1 (en) Fast ar device pairing using depth predictions