KR20230107886A - 기계 학습 모델에 기초한 향상된 비디오 안정화 - Google Patents

기계 학습 모델에 기초한 향상된 비디오 안정화 Download PDF

Info

Publication number
KR20230107886A
KR20230107886A KR1020237021737A KR20237021737A KR20230107886A KR 20230107886 A KR20230107886 A KR 20230107886A KR 1020237021737 A KR1020237021737 A KR 1020237021737A KR 20237021737 A KR20237021737 A KR 20237021737A KR 20230107886 A KR20230107886 A KR 20230107886A
Authority
KR
South Korea
Prior art keywords
video frame
neural network
computing device
video
data
Prior art date
Application number
KR1020237021737A
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 KR20230107886A publication Critical patent/KR20230107886A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/682Vibration or motion blur correction
    • H04N23/683Vibration or motion blur correction performed by a processor, e.g. controlling the readout of an image memory
    • 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
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • 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
    • G06N3/0455Auto-encoder networks; Encoder-decoder networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/269Analysis of motion using gradient-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N23/6811Motion detection based on the image signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N23/6812Motion detection based on additional sensors, e.g. acceleration sensors
    • 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/10Image acquisition modality
    • G06T2207/10072Tomographic images
    • G06T2207/10081Computed x-ray tomography [CT]
    • 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/10072Tomographic images
    • G06T2207/10084Hybrid tomography; Concurrent acquisition with multiple different tomographic modalities
    • 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/20172Image enhancement details
    • G06T2207/20182Noise reduction or smoothing in the temporal domain; Spatio-temporal filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Studio Devices (AREA)

Abstract

동영상 콘텐츠의 안정화와 연관된 장치 및 방법을 제공한다. 예시적인 방법은 복수의 비디오 프레임들의 비디오 프레임과 연관된 하나 이상의 이미지 파라미터를 모바일 컴퓨팅 장치에 의해 수신하는 것을 포함한다. 이 방법은 모바일 컴퓨팅 장치의 모션 센서로부터 비디오 프레임과 연관된 모션 데이터를 수신하는 단계를 더 포함한다. 이 방법은 또한 신경망을 하나 이상의 이미지 파라미터 및 모션 데이터에 적용함으로써 비디오 프레임의 안정화된 버전을 예측하는 단계를 포함한다.

Description

기계 학습 모델에 기초한 향상된 비디오 안정화
본 명세서는 기계 학습 모델에 기초한 향상된 비디오 안정화에 관한 것이다.
휴대폰, 개인용 컴퓨터 및 태블릿을 비롯한 많은 최신 컴퓨팅 장치에는 비디오 카메라와 같은 이미지 캡처 장치가 포함된다. 일부 이미지 캡처 장치 및/또는 컴퓨팅 장치는 캡처된 이미지를 수정하거나 수정할 수 있다. 예를 들어 노출 중에 카메라나 피사체가 움직여 비디오가 흐리거나 왜곡될 수 있다. 따라서 일부 이미지 캡처 장치는 이러한 흐림 및/또는 왜곡을 수정할 수 있다. 캡처된 이미지가 수정된 후 수정된 이미지는 저장, 표시, 전송 및/또는 기타 방식으로 활용될 수 있다.
본 발명은 일반적으로 비디오 콘텐츠의 안정화에 관한 것이다. 일 양태에서, 이미지 캡처 장치는 입력 비디오를 안정화하도록 구성될 수 있다. 기계 학습 컴포넌트 시스템으로 구동되는 이미지 캡처 장치는 이미지 캡처 장치의 의도하지 않은 흔들림으로 인해 발생하는 왜곡 및 기타 결함, 비디오에서 객체의 움직임으로 인해 발생하는 모션 블러 및/또는 비디오가 캡처되는 동안 비디오 이미지에 도입될 수 있는 아티팩트(artifacts)를 제거하기 위해 비디오를 안정화하도록 구성될 수 있다.
일부 양태에서, 입력 비디오가 실시간으로 향상될 수 있도록 모바일 장치는 이러한 기능으로 구성될 수 있다. 일부 경우에는 비디오가 모바일 장치에 의해 자동으로 향상될 수 있다. 다른 양태에서, 휴대폰 사용자는 자신의 선호도에 맞게 비디오를 비파괴적으로 향상(non-destructively enhance)시킬 수 있다. 또한 예를 들어 사용자의 비디오 라이브러리에 있는 기존 비디오는 여기에 설명된 기술에 기초하여 향상될 수 있다.
제1 양태에서, 컴퓨터 구현 방법이 제공된다. 방법은 모바일 컴퓨팅 장치에 의해 복수의 비디오 프레임들의 비디오 프레임과 연관된 하나 이상의 이미지 파라미터를 수신하는 단계를 포함한다. 이 방법은 또한 모바일 컴퓨팅 장치의 모션 센서로부터 비디오 프레임과 연관된 모션 데이터를 수신하는 단계를 포함한다. 이 방법은 신경망을 하나 이상의 이미지 파라미터 및 모션 데이터에 적용함으로써 비디오 프레임의 안정화된 버전을 예측하는 단계를 더 포함한다.
제2 양태에서, 장치가 제공된다. 장치는 동작을 수행하도록 작동 가능한 하나 이상의 프로세서를 포함한다. 동작은 복수의 비디오 프레임들의 비디오 프레임과 연관된 하나 이상의 이미지 파라미터를 모바일 컴퓨팅 장치에 의해 수신하는 것을 포함한다. 동작은 모바일 컴퓨팅 장치의 모션 센서로부터 비디오 프레임과 연관된 모션 데이터를 수신하는 것을 더 포함한다. 동작은 또한 신경망을 하나 이상의 이미지 파라미터 및 모션 데이터에 적용함으로써 비디오 프레임의 안정화된 버전을 예측하는 것을 포함한다.
제3 양태에서, 제조 물품이 제공된다. 제조 물품은 컴퓨팅 장치의 하나 이상의 프로세서에 의해 실행될 때 컴퓨팅 장치로 하여금 동작을 수행하게 하는 프로그램 명령어를 저장한 비일시적 컴퓨터 판독 가능 매체를 포함할 수 있다. 동작은 복수의 비디오 프레임들의 비디오 프레임과 연관된 하나 이상의 이미지 파라미터를 모바일 컴퓨팅 장치에 의해 수신하는 것을 포함한다. 동작은 모바일 컴퓨팅 장치의 모션 센서로부터 비디오 프레임과 연관된 모션 데이터를 수신하는 것을 더 포함한다. 동작은 또한 신경망을 하나 이상의 이미지 파라미터 및 모션 데이터에 적용함으로써 비디오 프레임의 안정화된 버전을 예측하는 것을 포함한다.
제4 양태에서, 시스템이 제공된다. 시스템은 모바일 컴퓨팅 장치에 의해 복수의 비디오 프레임들의 비디오 프레임과 연관된 하나 이상의 이미지 파라미터를 수신하기 위한 수단; 모바일 컴퓨팅 장치의 모션 센서로부터 비디오 프레임과 연관된 모션 데이터를 수신하기 위한 수단; 및 하나 이상의 이미지 파라미터 및 모션 데이터에 신경망을 적용함으로써 비디오 프레임의 안정화된 버전을 예측하기 위한 수단을 포함한다.
다른 양태, 실시예 및 구현은 적절한 경우 첨부된 도면을 참조하여 다음의 상세한 설명을 읽음으로써 당업자에게 명백해질 것이다.
도 1은 예시적인 실시예에 따른 비디오 안정화를 위한 신경망을 나타내는 도면이다.
도 2는 예시적인 실시예에 따른 비디오 안정화를 위한 다른 신경망을 나타내는 도면이다.
도 3은 예시적인 실시예에 따른 비디오 안정화를 위한 LSTM(long short term memory) 네트워크를 나타내는 도면이다.
도 4는 예시적인 실시예에 따른 비디오 안정화를 위한 심층 신경망을 나타내는 도면이다.
도 5는 예시적인 실시예에 따른 예시적인 옵티컬 플로우을 도시한다.
도 6은 예시적인 실시예에 따른 기계 학습 모델의 트레이닝 및 추론 단계를 나타내는 도면이다.
도 7은 예시적인 실시예에 따른 분산 컴퓨팅 아키텍처를 도시한다.
도 8은 예시적인 실시예에 따른 컴퓨팅 장치의 블록도이다.
도 9는 예시적인 실시예에 따라 클라우드 기반 서버 시스템으로 배열된 컴퓨팅 클러스터의 네트워크를 도시한다.
도 10은 예시적인 실시예에 따른 방법의 플로우도이다.
예시적인 방법, 장치 및 시스템이 여기에 설명되어 있다. "예" 및 "예시적인"이라는 단어는 본원에서 "예, 실례 또는 예증으로서 제공하는 것"을 의미하는 것으로 이해되어야 한다. 본 명세서에서 "예" 또는 "예시적인" 것으로 기술된 임의의 실시예 또는 특징은 반드시 다른 실시예 또는 특징보다 바람직하거나 유리한 것으로 해석되어서는 안 된다. 본 명세서에 제시된 주제의 범위를 벗어나지 않고 다른 실시예가 이용될 수 있고, 다른 변화이 이루어질 수 있다.
따라서, 본 명세서에 기술된 예시적인 실시예들은 제한하려는 의도가 아니다. 본 명세서에 일반적으로 설명되고 도면에 도시된 바와 같은 본 발명의 양태는 매우 다양한 상이한 구성으로 배열, 대체, 조합, 분리 및 설계될 수 있으며, 이들 모두는 본 명세서에서 고려된다.
또한, 문맥상 달리 제시되지 않는 한, 각각의 도면에 예시된 특징은 서로 조합하여 사용될 수 있다. 따라서, 모든 예시된 특징이 각각의 실시예에 필요한 것은 아니라는 이해와 함께, 도면은 일반적으로 하나 이상의 전체 실시예의 컴포넌트 양태로 보아야 한다.
I. 개요
본 명세서는 신경망 기술과 같은 기계 학습 기술을 사용하는 비디오 안정화와 관련이 있다. 모바일 컴퓨팅 장치의 사용자가 비디오를 캡처할 때 결과 이미지가 항상 부드럽거나 안정적이지 않을 수 있다. 때때로 이는 사용자의 의도하지 않은 손 흔들림으로 인해 발생할 수 있다. 예를 들어 이동 중인 차량에서 동영상을 촬영하거나 걷거나 달리는 동안 동영상을 촬영하면 카메라가 흔들리고 결과 동영상 이미지가 안정적으로 나타나지 않을 수 있다. 이와 같이 영상의 안정화와 연관된 영상처리 관련 기술적인 문제가 발생한다.
이미지 캡처 중에 바람직하지 않은 동작을 제거하기 위해 일부 기술은 캡처된 비디오를 안정화하기 위해 컨벌루션 신경망 기반 모델을 적용한다. 일부 예에서, 모션 데이터와 광학 이미지 안정화(OIS) 데이터를 결합하여 안정화된 비디오를 출력할 수 있다. 이러한 기술은 일반적으로 빠르며 모바일 장치에서 효율적으로 수행될 수 있다. 또한, 일부 예들에서, 이미지 데이터가 사용되지 않기 때문에, 그러한 기술은 가능한 장면 및 조명 변화에 로버스트(robust)할 수 있다.
이미지 기반 기술은 포스트 비디오 편집을 위한 데스크톱 애플리케이션으로 사용할 수 있다. 이러한 기술은 일반적으로 이미지에서 특징 추출, 옵티컬 플로우 추출 및 전역 최적화를 포함하므로 더 많은 계산 능력이 필요하다. 기존의 신경망 기반 기술은 이미지 프레임을 입력으로 취하고 워핑 그리드(warping grid)를 출력으로 추론하여 안정화된 비디오를 생성하는 것을 포함한다. 그러나 워핑 그리드의 강성(rigidity) 제어 부족으로 인해 이미지 왜곡이 있을 수 있다.
여기에 설명된 기술은 모션 데이터 및 광학 이미지 안정화(OIS) 데이터에 기반한 기술과 결합된 이미지 기반 기술의 양태를 포함할 수 있다. 컨벌루션 신경망과 같은 신경망은 본 명세서에 기술된 바와 같은 하나 이상의 양태를 수행하기 위해 트레이닝되고 적용될 수 있다. 일부 예에서 신경망은 인코더/디코더 신경망으로 배열될 수 있다.
하나의 예에서 DNN(심층 신경망)은 U-net 구조를 가지고 있다. DNN(deep neural network)은 하나 이상의 비디오 프레임을 인코더에 대한 입력으로 사용하고 데이터를 저차원 잠재 공간 표현으로 변환한다. 일부 양태에서, 잠재 공간 표현(latent space representation)은 실제 카메라 포즈를 기반으로 한다. 예를 들어 DNN은 모션 데이터에서 실제 카메라 포즈를 결정하고 이를 잠재 공간 표현에 추가한다. DNN은 잠재 공간 표현을 활용하여 가상 카메라 포즈를 추론한다. 일부 양태에서, 가상 카메라 포즈를 추론하기 위해 LSTM(long short term memory) 유닛이 활용될 수 있다. 가상 카메라 포즈에는 회전 및/또는 변환 정보가 포함된다. 그런 다음 DNN은 가상 카메라 포즈를 활용하여 비디오 안정화를 위한 워핑 그리드를 생성한다. 일부 양태에서, LSTM(long short term memory) 유닛이 워핑 그리드를 생성하는 데 활용될 수 있다. 또한 실제 카메라 포즈 히스토리(과거, 현재, 미래의 비디오 프레임에 대한 실제 카메라 포즈를 포함) 및 가상 카메라 포즈 히스토리(과거 및 현재 비디오 프레임에 대한 가상 카메라 포즈를 포함)를 잠재 공간 표현에 추가하여 DNN을 트레이닝할 수 있다. 일부 실시예에서, 워핑 그리드는 안정화된 버전을 출력하기 위해 예측된 가상 카메라 포즈에 적용될 수 있다. 따라서 트레이닝된 신경망은 입력 비디오를 처리(프로세싱)하여 안정화된 비디오를 예측할 수 있다.
한 예에서 트레이닝된 신경망(의 카피)은 모바일 컴퓨팅 장치에 상주할 수 있다. 모바일 컴퓨팅 장치는 입력 비디오를 캡처할 수 있는 카메라를 포함할 수 있다. 모바일 컴퓨팅 장치의 사용자는 입력 비디오를 보고 입력 비디오가 안정화되어야 한다고 결정할 수 있다. 그런 다음 사용자는 모바일 컴퓨팅 장치에 상주하는 트레이닝된 신경망에 입력 비디오 및 모션 데이터를 제공할 수 있다. 이에 대한 응답으로 트레이닝된 신경망은 안정화된 비디오를 보여주는 예측된 출력을 생성하고 후속적으로 출력 비디오를 출력할 수 있다(예: 모바일 컴퓨팅 장치에 의해 표시할 출력 비디오 제공). 다른 예에서 트레이닝된 신경망은 모바일 컴퓨팅 장치에 상주하지 않으며, 오히려 모바일 컴퓨팅 장치는 입력 비디오 및 모션 데이터를 원격 위치에 있는 트레이닝된 신경망에 제공한다(예: 인터넷 또는 다른 데이터 네트워크를 통해). 원거리에 위치한 컨벌루션 신경망은 위와 같이 입력 영상과 모션 데이터를 처리하여 안정화된 영상을 보여주는 출력 영상을 제공할 수 있다. 다른 예에서, 비모바일 컴퓨팅 장치는 트레이닝된 신경망을 사용하여 컴퓨팅 장치의 카메라에 의해 캡처되지 않은 비디오를 포함하여 비디오를 안정화할 수도 있다.
일부 예에서 트레이닝된 신경망은 다른 신경망(또는 다른 소프트웨어)과 함께 작동하거나 입력 비디오가 안정적이지 않고/부드럽지 않은지 여부를 인식하도록 트레이닝될 수 있다. 그런 다음, 입력 비디오가 안정적이지 않고 및/또는 부드럽지 않다는 결정 시, 본 명세서에서 설명된 트레이닝된 신경망은 입력 비디오를 안정화할 수 있다.
이와 같이, 본 명세서에 기술된 기술은 이미지를 안정화함으로써 비디오를 개선할 수 있고, 그에 따라 그들의 실제 및/또는 인지된 품질을 향상시킬 수 있다. 비디오의 실제 및/또는 인식 품질을 향상하면 사용자 경험 이점을 제공할 수 있다. 이러한 기술은 유연하므로 실내 및 실외 환경 모두에서 다양한 동영상에 적용할 수 있다.
II. 신경망을 이용한 영상 안정화 기법
도 1은 예시적인 실시예에 따른 비디오 안정화를 위한 신경망(100)를 나타내는 도면이다. 신경망(100)은 인코더(115) 및 디코더(130)를 포함할 수 있다. 모바일 컴퓨팅 장치는 복수의 비디오 프레임들의 비디오 프레임과 연관된 하나 이상의 이미지 파라미터를 수신할 수 있다. 예를 들어, 입력 비디오(110)는 복수의 비디오 프레임들을 포함할 수 있다. 복수의 비디오 프레임들의 각각의 비디오 프레임은 하나 이상의 이미지 파라미터와 연관될 수 있다. 예를 들어, 각 프레임은 노출 시간, 렌즈 위치 등을 포함하는 프레임 메타데이터와 같은 이미지 파라미터와 연관될 수 있다. 일부 실시예에서, 연속적인 프레임 입력 비디오(110)의 이미지 파라미터는 옵티컬 플로우를 생성하기 위해 이용될 수 있다. 예를 들어, 한 쌍의 비디오 프레임이 주어지면 조밀한 픽셀당 옵티컬 플로우(dense per-pixel optical flow)가 생성될 수 있다. 옵티컬 플로우는 두 개의 연속 프레임 간의 대응 관계를 제공하며 한 프레임에서 다음 프레임으로의 이미지 모션을 나타낸다. 하나 이상의 이미지 파라미터 및/또는 옵티컬 플로우는 인코더(115)에 입력될 수 있다. 일부 실시예에서, 모바일 컴퓨팅 장치는 입력 비디오(110)와 연관된 모션 데이터(125)를 수신할 수 있다. 예를 들어, 모션 센서는 각 비디오 프레임과 연관된 타임스탬프 데이터의 로그를 유지할 수 있다. 또한, 예를 들어 모션 센서는 각 비디오 프레임에 대한 실제 카메라 포즈를 추적하는 모션 데이터(125)를 캡처할 수 있다. 본 명세서에서 사용되는 "포즈(pose)"라는 용어는 일반적으로 비디오 카메라와 같은 이미지 캡처 장치의 회전을 의미한다. 일부 실시예에서, "포즈"라는 용어는 또한 이미지 캡처 장치에 대한 렌즈 오프셋(lens offset)을 포함할 수 있다. 일부 예시적인 실시예에서, 실제 카메라 포즈는 예를 들어 200Hz와 같은 고주파에서 캡처될 수 있다. 모션 센서는 입력 비디오(110)와 연관된 자이로스코프 신호를 캡처하도록 구성된 자이로스코프 장치일 수 있다. 따라서, 자이로스코프 신호를 기반으로 실제 카메라 포즈를 높은 정확도로 유추할 수 있다. 또한 각 비디오 프레임은 타임스탬프와 연관될 수 있다. 따라서, 현재 비디오 프레임을 기준으로 과거 및 미래 비디오 프레임과 각각의 회전이 결정될 수 있다.
신경망(100)은 입력 비디오(110)의 안정화된 버전을 예측하기 위해 하나 이상의 이미지 파라미터 및 모션 데이터에 적용될 수 있다. 예를 들어, 인코더(115)는 하나 이상의 이미지 파라미터에 기초하여 잠재 공간 표현(120)을 생성할 수 있다. 모션 데이터(예를 들어, 실제 카메라 포즈)도 잠재 공간 표현(120)에 입력될 수 있다. 디코더(130)는 안정화된 버전을 예측하기 위해 잠재 공간 표현(120)을 이용한다. 따라서 예측된 출력 비디오(135)는 프레임별로 생성될 수 있다. 학습 단계와 달리 런타임 단계에서는 비디오 프레임의 안정화가 실시간으로 수행된다. 따라서 런타임 단계 동안 비디오 프레임의 긴 시퀀스가 필요하지 않다.
도 2는 예시적인 실시예에 따른 비디오 안정화를 위한 다른 신경망(200)을 예시하는 도면이다. 모션 데이터(205)는 모션 센서로부터의 데이터를 나타낸다. 일부 실시예에서, 모션 센서는 자이로스코프일 수 있다. 일반적으로 모바일 장치에는 자이로스코프가 장착되어 있고 자이로스코프 신호는 모바일 장치에서 캡처될 수 있다. 모바일 장치의 자이로 이벤트 핸들러는 계속해서 자이로 신호를 가져오고 실제 카메라 포즈 R(t)를 추정할 수 있다. 자이로 신호는 고주파(예를 들어, 200Hz)에서 수신될 수 있다. 모션 데이터(205)는 각속도 및 타임스탬프를 포함할 수 있고 주어진 시간에 실제 카메라의 회전을 나타낼 수 있다.
일부 실시예에서, 모바일 장치는 수평 x축 또는 수직 y축을 따라 모션 데이터(205)로부터 OIS 모션(움직임)을 판독하도록 구성될 수 있는 OIS 렌즈 시프트 핸들러(OIS lens shift handler)로 구성될 수 있다. OIS 데이터는 고주파수(예를 들어, 200Hz)에서 샘플링될 수 있으며, 이는 x 및 y 방향으로 변환을 제공할 수 있다. 이는 카메라의 기본 축에 대한 오프셋으로 모델링할 수 있다. 일부 실시예에서, OIS 판독값은 포함되지 않을 수 있으므로 카메라의 회전만이 신경망(200)을 트레이닝시키는 데 활용된다. 예를 들어, 각각의 RGB 프레임은 회전(예를 들어, 손 움직임) 및 변환(translation)(예를 들어, OIS 움직임)을 나타내는 모션 데이터(205)를 포함한다. 따라서, 변환(translation)을 나타내는 모션 데이터(205)를 제거할 수 있다.
다른 예에서는 회전과 변환이 모두 활용될 수 있다. 변환은 x축 및 y축에서 발생한다. OIS 렌즈 시프트 핸들러는 OIS 판독값을 지속적으로 가져오고 수학식 1과 같이 OIS 판독값을 픽셀 단위의 2D 픽셀 오프셋으로 변환하도록 구성할 수 있다.
여기서 는 시간 t에서의 OIS 렌즈 오프셋이고, 이 오프셋은 x축을 따른 수평 오프셋() 및 y축을 따른 수직 오프셋()을 포함한다.
일부 실시예에서, 모바일 장치는 프로젝션 행렬를 구성하는 모션 모델 구성자(motion model constructor)를 포함할 수 있다. 입력 비디오 프레임이 주어지면, 연관된 프레임 메타데이터(210)는 각각의 스캔라인 및 렌즈 위치에서의 노출 시간을 포함할 수 있다. 모션 모델 구성자는 실제 장면을 이미지에 매핑하는 프로젝션 행렬()를 구성하기 위해 노출 시간, 렌즈 위치, 실제 카메라 포즈 및 OIS 렌즈 오프셋을 취할 수 있으며, 여기서 i는 프레임 인덱스이고 그리고 j는 스캔라인 인덱스이다.
이 설명을 위해, 아래 첨자 "r"은 "실제"를 나타내고 아래 첨자 "v"는 가상을 나타낸다. 설명된 바와 같이, 카메라 포즈는 일반적으로 두 가지 컴포넌트인 회전 및 변환을 포함할 수 있다. 시간 T에서의 실제 카메라 포즈(Vr(T))는 수학식 2와 같이 나타낼 수 있다.
여기서 는 카메라(예를 들어, 모바일 장치의 카메라)의 외인성 행렬(회전 행렬)이고, 는 주점(Pt)의 2차원 렌즈 오프셋이고, T는 현재 비디오 프레임의 타임스탬프이다. 프로젝션 행렬은 로 결정될 수 있으며, 여기서 는 카메라의 고유 행렬이며 수학식 3과 같이 지정된다.
여기서 f는 카메라 렌즈의 초점 거리이고, Pt는 시간 T에서 현재 비디오 프레임의 이미지 중심으로 설정할 수 있는 2차원(2D) 주점(principal point)이다. 따라서 3차원(3D) 점 X는 2D 영상 공간에 x = Pr(T)X로 프로젝션되고, 여기서 x는 이미지 공간의 2D 균일 좌표이다. 일부 실시예에서, 변환(translation)을 나타내는 OIS 데이터는 사용되지 않을 수 있다. 이러한 경우 카메라 고유 행렬은 수학식 4와 같이 결정될 수 있다.
실제 포즈 히스토리(215)는 수학식 5와 같이 과거, 현재 및 미래 비디오 프레임의 실제 카메라 포즈를 포함한다.
여기서 T는 현재 프레임의 타임스탬프이고, N은 예측 비디오 프레임의 수이다. 또한, 가상 포즈 히스토리(230)는 수학식 6과 같이 심층 신경망(DNN)(220)에 의해 예측된 바와 같이 과거 M개의 비디오 프레임에서 가상 카메라 포즈를 포함한다.
여기서 M은 가상 포즈 히스토리의 길이이다. 일부 예시적인 구현에서, M=2의 값이 사용될 수 있다. 고정된 타임스탬프 간격 g(예: g = 33밀리초)를 사용하여 초당 프레임 수(FPS)로 측정되는 비디오의 프레임 속도에 프로세스를 고정시킬 수 있다. 일부 예시적인 구현에서, 실제 카메라 포즈 히스토리(215)는 현재 비디오 프레임, 10개의 이전 비디오 프레임 및 10개의 미래 비디오 프레임을 포함하는 21개의 비디오 프레임에 대한 실제 카메라 포즈 정보를 포함할 수 있다. 가상 카메라 포즈 히스토리(230)는 현재 및 하나 이상의 과거 비디오 프레임에 대한 가상 카메라 포즈 정보를 포함할 수 있는데, 이는 미래 비디오 프레임에 대한 가상 포즈가 일반적으로 런타임에 알려지지 않기 때문이다. 일부 구현에서 실제 카메라 포즈 히스토리(215) 및 가상 카메라 포즈 히스토리(230)에 사용되는 과거 비디오 프레임의 수는 동일할 수 있다. 실제 카메라 포즈 히스토리(215) 및 가상 카메라 포즈 히스토리(230)는 연결 특징 벡터(concatenated feature vector)(연결 벡터)(235)를 생성하기 위해 연결될 수 있다.
DNN(220)은 연결 벡터(235)를 입력으로 취하고 타임스탬프 T를 갖는 비디오 프레임에 대응하는 가상 카메라 포즈에 대한 회전()을 출력할 수 있다. DNN(220)은 후술하는 바와 같이 잠재 공간 표현을 생성할 수 있다. 실제 카메라 포즈()와 가상 카메라 포즈()가 주어지면 두 개의 프로젝션 행렬이 결정될 수 있으며, Pr(T) 및 Pv(T)로 표시된다. 2D 실제 카메라 도메인()에서 2D 가상 카메라 도메인()로의 매핑은 수학식 7과 같이 결정될 수 있다.
여기서 실제 대 가상 프로젝션 행렬()은 수학식 8과 같이 지정된다.
여기서 은 행렬 A의 역행렬을 나타낸다. 여기서, 는 가상 카메라 포즈에 해당하는 카메라의 고유 행렬이며, 는 가상 카메라 포즈에 대한 예상 회전이며, 는 실제 카메라 포즈에 해당하는 카메라의 고유 행렬이고, 는 실제 카메라 포즈에 대한 회전이다. 이는 2D 대 2D 매핑이며, 실제 카메라 이미지를 가상 카메라 이미지에 매핑하는 데 사용할 수 있다. 수학식 8에서 알 수 있듯이, 실제 카메라 프로젝션을 위한 역프로젝션 맵()을 이용하여 3차원 공간상의 점을 얻기 위해 2차원 실제 점의 역 프로젝션을 계산하고, 3차원 공간의 이 점은 가상 카메라 프로젝션을 위한 프로젝션 맵()을 사용하여 2D 공간으로 다시 프로젝션된다. 회전 맵 R은 예를 들어 3x3 행렬, 1x4 쿼터니언 또는 1x3 축 각도와 같은 여러 방식으로 나타낼 수 있다. 이러한 다양한 표현은 동일하며 상황에 따라 선택할 수 있다. 예를 들어, 3x3 행렬 표현은 프로젝션 행렬()을 계산하는 데 사용된다. 그러나 카메라 포즈 히스토리를 DNN(220)에 입력하기 위해서는 쿼터니언(quaternion) 또는 축 각도 표현이 사용될 수 있다. 이러한 표현은 서로 변환될 수 있으며 동일하다.
일부 실시예에서, 실제 포즈 히스토리(215) 및 가상 포즈 히스토리(230)는 OIS 렌즈 시프트 데이터를 포함할 수 있고, 심층 신경망은 가상 카메라에 대한 예측된 렌즈 시프트에 대응하는 변환(translation)(225)을 출력할 수 있다. 예측된 회전 및/또는 변환(225)은 가상 포즈 히스토리(230)에 추가될 수 있다. 또한, 예를 들어, 예측된 회전 및/또는 변환(225)이 이미지 워핑 그리드(240)에 제공될 수 있다. 이미지 워핑 그리드(240)는 DNN(200)으로부터의 출력을 로드하고 입력 프레임의 각 픽셀을 출력 프레임에 매핑하여 출력 비디오(245)를 생성할 수 있다.
DNN(220)은 수학식 9와 같은 손실 함수 L에 기초하여 트레이닝될 수 있다.
여기서 )는 시간 t에서의 가상 포즈이고, 는 연속되는 비디오 프레임 사이의 가상 포즈의 변화이다. 따라서 )은 시간 t와 t-1에서 두 개의 연속된 비디오 프레임 사이의 가상 포즈의 변화를 나타낸다. 항은 관련 가중치()와 곱해질 수 있다. 는 시간 t에서의 가상 포즈와 시간 t+i에서의 실제 포즈 간의 차이이며, 여기서 i는 과거, 현재 및 미래의 실제 포즈에 대한 값을 취하는 인덱스이다. 이는 가상 카메라 포즈가 실제 카메라 포즈를 "따르는(follows)" 정도를 나타낸다. 항은 관련 가중치()와 곱해질 수 있다. 또한, 예를 들면, 은 현재 가상 카메라 포즈와 이전 가상 카메라 포즈()의 차이를 측정하고 그리고 이전 가상 카메라 포즈와 그 이전의 가상 카메라 포즈() 사이의 변화를 측정한다. 항은 관련 가중치()와 곱해질 수 있다.
DNN(220)의 트레이닝 단계에 대해, 가상 포즈 히스토리(230)는 회전이 없는 가상 큐(virtual queue)로 초기화될 수 있다. N개의 연속 비디오 프레임의 무작위 선택이 실제 포즈 히스토리(215)와 함께 입력될 수 있다. 실제 포즈 히스토리(215) 및 가상 포즈 히스토리(230)에 대한 연결 벡터(235)는 DNN(220)에 입력될 수 있다. 입력의 각 비디오 프레임에 대한 출력은 가상 회전(225)이다. 가상 회전(225)은 가상 포즈 히스토리(230)로 피드백되어 초기 큐를 업데이트할 수 있다. 수학식 9에 의해 주어진 전체 손실은 각각의 비디오 프레임에 대해 역전파될 수 있다. 추론 단계에서, 비디오 프레임 시퀀스가 입력될 수 있고 그리고 입력 비디오에 대응하는 안정화된 출력 비디오(245)가 획득될 수 있다.
도 3은 예시적인 실시예에 따른 비디오 안정화를 위한 LSTM(long short term memory) 네트워크(300)를 예시하는 도면이다. 네트워크(300)에 대한 아키텍처의 하나 이상의 양태은 도 2의 네트워크(200)의 양태와 유사할 수 있다. 예를 들어, 모션 데이터(205) 및 프레임 메타데이터(210)는 실제 포즈 히스토리(315)를 생성하기 위해 처리될 수 있다. 프로세스를 초기화하기 위해, 아이덴티티 회전(identity rotations)으로 가상 포즈 히스토리(330)이 생성될 수 있다. 실제 포즈 히스토리(315) 및 가상 포즈 히스토리(330)는 도 2의 DNN(220)에 입력될 수 있다.
도 3에 예시된 바와 같이, DNN(220)은 LSTM 컴포넌트(320)를 포함할 수 있다. LSTM 컴포넌트(320)는 예를 들어 타임 스탬프가 찍힌 비디오 프레임의 시퀀스와 같은 시간적 시퀀스에서 긴 범위 종속성(long range dependencies)을 모델링하는 순환 신경망(RNN)이다. 일반적으로, LSTM 컴포넌트(320)는 순환 은닉계층에 메모리 블록을 포함한다. 각 메모리 블록은 네트워크의 시간적 상태를 저장하는 메모리 셀과 정보 플로우을 제어하는 하나 이상의 논리 게이트를 포함한다. LSTM 컴포넌트(320)는 입력 연결된 특징 벡터(335)로부터 매핑을 계산하고 가상 포즈(325)를 출력한다.
일부 실시예에서, 방법은 회전 데이터 및 타임스탬프 데이터로부터, 기준 비디오 프레임의 기준 카메라 포즈에 대한 비디오 프레임의 카메라 포즈의 상대 회전을 결정하는 것을 포함하고, 안정화된 버전의 예측은 상대 회전에 기초한다. 예를 들어, 절대 회전을 LSTM 컴포넌트(320)에 입력하는 대신 절대 회전이 상대 회전 또는 회전 변화으로 변환된다. 이는 유사한 유형의 모션에 대해 절대 회전이 동일하지 않을 수 있다는 관측치에 기초하며, 이는 회전이 초기화되는 시점, 즉 원점이 어디에 있는지에 따라 달라질 수 있기 때문이다. 반면 상대 회전은 유사성을 유지한다. 예를 들어 설명을 위해 1D 샘플(1, 2, 3) 및 (4, 5, 6)을 취하면 이 두 샘플은 동일하지 않다. 그러나 이러한 샘플에 대한 상대적 변화가 결정될 수 있다. 예를 들어, (1, 2, 3)에서 첫 번째 요소 "1"과 관련하여 요소별 차이를 취하면 차이는 1 - 1 = 0, 2 - 1 = 1 및 3 - 1 = 2이다. 따라서 상대 회전 벡터는 (0, 1, 2)로 결정될 수 있다. 마찬가지로 (4, 5, 6)에서 첫 번째 요소 "4"에 대해 요소별 차이를 취하면 차이는 4 - 4 = 0, 5 - 4 = 1 및 6 - 4 = 2이다. 따라서, 상대 회전 벡터는 다시 (0, 1, 2)로 결정될 수 있다. 따라서 절대 회전은 달라도 상대 회전은 같다. 이러한 방식으로 입력은 유사한 모션 세트를 더 잘 대표하며 훨씬 적은 트레이닝 데이터가 필요하다.
LSTM 컴포넌트(320)는 이전 가상 포즈()에 대한 가상 회전 변화() 및 프레임 중심()에 대한 가상 렌즈 오프셋을 예측한다. 가상 카메라 포즈는 회전 및 변환(translation)(325)을 포함하는 것으로 결정될 수 있고, 수학식 10과 같이 로 주어질 수 있다.
따라서, 실제 포즈 히스토리(315)에 대해, 현재 회전() 및 다음 회전(Rr(T+g))에 대해, 이들 절대 회전을 LSTM 컴포넌트(320)에 입력하는 대신에, 현재 회전()은 기준 프레임 또는 앵커로 사용될 수 있으며, 와 같이 상대적 차이 회전이 결정될 수 있으며, 여기서 k = 1,…,N이다. 이러한 상대 회전은 실제 포즈 히스토리(315)에 추가되고 그리고 LSTM 컴포넌트(320)에 입력될 수 있다. 상대 회전이 비디오 프레임을 안정화하는 데 유용한 예는 카메라가 패닝 모션을 사용하여 이미지를 캡처하는 경우이다. 이 경우 패닝 속도는 일정하지만 실제 포즈는 각 단계마다 다르다. 절대 회전은 첫 번째 스팬(span)부터 통합되므로 실제 포즈는 다를 수 있다. 그러나 상대 회전은 일반적으로 비슷하다. 따라서 LSTM 컴포넌트(320)는 상대 회전이 최소인 그러한 모션에 민감할 수 있다.
본 명세서에 기술된 바와 같이, LSTM 컴포넌트(320)는 회전 및/또는 변환(325)을 출력한다. 그러나 절대 회전 대신 상대 회전이 예측된다. 출력은 이전 프레임에 대한 가상 카메라 포즈의 이전 회전을 곱한 회전 변화이다. 따라서 현재 프레임에 대한 가상 카메라 포즈는 현재 프레임의 델타 가상 포즈와 이전 프레임의 가상 포즈의 배수로 결정될 수 있다. 따라서, LSTM 컴포넌트(320)는 dVt에 의해 주어진 상대 회전(325)을 출력하고, 시간 t에 대응하는 비디오 프레임에 대한 가상 포즈는 시간 t-1에 대응하는 비디오 프레임에 대한 가상 포즈 및 LSTM 컴포넌트(320)에 의해 출력되는 가상 포즈에 대한 상대 회전에 기초하여, 로 결정될 수 있다.
또한, 가상 렌즈 오프셋 또는 변환(translation)에 대해, 이는 LSTM 컴포넌트(320)로부터 추론될 수 있거나, 렌즈 오프셋이 (0, 0)으로 설정될 수 있다. 따라서 렌즈 위치를 주심으로 고정하고 회전만으로 영상 프레임을 안정화할 수 있다.
표시된 대로 절대 회전은 상대 회전으로 대체된다. 예를 들어, 로 주어진 도 2의 실제 포즈 히스토리(215)의 시퀀스는 로 주어진 실제 포즈 히스토리(315)의 시퀀스로 대체될 수 있으며, 여기서 은 기준 비디오 프레임의 회전이다. 따라서 은 R0에 대한 상대적인 회전 변화의 척도이며 일반적으로 작을 수 있다. 유사하게, 에 의해 주어진 도 2의 가상 포즈 히스토리(230)의 시퀀스에 대해 에 의해 주어진 실제 포즈 히스토리(330)의 시퀀스로 대체될 수 있으며, 여기서 R0은 기준 비디오 프레임의 회전이다. 따라서 은 가상 회전과 기준 실제 회전의 차이를 측정한 값이다.
일부 실시예에서, 신경망은 특정 비디오 프레임을 수신하고 특정 비디오 프레임과 연관된 하나 이상의 이미지 파라미터 및 모션 데이터에 기초하여 특정 비디오 프레임의 안정화된 버전을 출력하도록 트레이닝될 수 있다. 예를 들어, 네트워크(300)의 트레이닝 단계에 대해, 가상 포즈 히스토리(330)는 아이덴티티 회전을 갖는 가상 큐로 초기화될 수 있다. N개의 연속 비디오 프레임의 무작위 선택이 상대 회전을 포함하는 실제 포즈 히스토리(315)과 함께 입력될 수 있다. 실제 포즈 히스토리(315) 및 가상 포즈 히스토리(330)에 대한 연결 벡터(335)는 LSTM 컴포넌트(320)에 입력될 수 있다. 입력의 각 비디오 프레임에 대한 출력은 가상 상대 회전(325)이다. 가상 상대 회전(325)은 초기 큐(initial queue)를 업데이트하기 위해 가상 포즈 히스토리(330)에 다시 추가될 수 있다. 추론 단계 동안 비디오 프레임 시퀀스가 입력될 수 있고 입력에 대응하는 안정화된 출력(345)이 획득될 수 있다. 또한, 아래에서 더 자세히 설명되는 바와 같이 이미지 손실이 결정될 수 있다. 추가로, 변환이 있는 OIS 데이터는 렌즈 오프셋에 사용될 수 있고, 상대 회전 및 변환(325)은 가상 카메라에 대한 상대 회전 및 렌즈 오프셋을 포함할 수 있다. 또한, 예를 들어, 아래에서 더 상세히 설명되는 바와 같이 다단계 트레이닝이 수행될 수 있다. 일부 예시적인 구현에서, LSTM 컴포넌트(320)의 수정된 버전이 사용될 수 있다. 예를 들어, LSTM 컴포넌트(320)는 LSTM 컴포넌트(320)를 복수의 계층로 적층한 "심층 LSTM RNN"일 수 있다.
도 4는 예시적인 실시예에 따른 비디오 안정화를 위한 심층 신경망(DNN)(400)을 나타내는 도면이다. DNN(400)의 하나 이상의 양태는 네트워크(200 및 300)의 양태와 유사할 수 있다. 입력 비디오(405)는 복수의 비디오 프레임들을 포함할 수 있다. 옵티컬 플로우(410)는 입력 비디오(405)로부터 생성될 수 있다. 예를 들어, 옵티컬 플로우 추출기(예를 들어, 모바일 장치 상의)는 옵티컬 플로우(410)를 추출하도록 구성될 수 있다. 일반적으로, 비디오 프레임의 연속 쌍이 주어지면, 조밀한 픽셀당 옵티컬 플로우(410)가 계산될 수 있다. 옵티컬 플로우(410)는 두 프레임 사이의 대응 관계를 제공하고 비디오 안정화를 위해 DNN(400)에 대한 입력으로 사용될 수 있다.
도 5는 예시적인 실시예에 따른 예시적인 옵티컬 플로우를 도시한다. 2개의 연속적인 비디오 프레임, 시간 t의 타임스탬프에 대응하는 제1 프레임(505) 및 시간 t+1의 타임스탬프에 대응하는 제2 프레임(510)이 도시되어 있다. 참조를 위해 RGB 스펙트럼(515)이 도시되어 있다. 옵티컬 플로우(520)는 제1 프레임(505) 및 제2 프레임(510)으로부터 생성될 수 있다. 옵티컬 플로우(520)는 순방향 및 역방향 모두에서 연속 비디오 프레임으로부터 생성될 수 있다(예를 들어, 프레임 t에서 t+1까지, 프레임 t+1에서 t까지).
도 4에 도시된 바와 같이, 옵티컬 플로우(410)은 인코더(415)에 입력될 수 있고 잠재 공간 표현(420)이 생성될 수 있다. 전술한 바와 같이, 잠재 공간 표현(420)은 저차원 표현이다.
또한, 예를 들어, (예를 들어, 모션 데이터(205)와 유사한) 모션 데이터(425) 및 (예를 들어, 프레임 메타데이터(210)와 유사한) 프레임 메타데이터(430)가 실제 포즈 히스토리(435)를 생성하기 위해 이용될 수 있다. 예를 들어, 실제 포즈 히스토리(435)는 과거 N 프레임, 미래 N 프레임 및 현재 프레임으로 돌아가는 비디오 프레임의 회전 및 변환으로 구성될 수 있다.
초기에, 가상 포즈 히스토리(460)는 동일 회전 및 (0, 0)의 렌즈 오프셋으로 설정될 수 있다. 가상 포즈 히스토리(460)은 하나 이상의 과거 비디오 프레임의 예측된 가상 포즈로 구성될 수 있으며 미래 프레임은 예측되지 않았기 때문에 포함되지 않을 수 있다. 가상 카메라에 대한 룩백(lookback)은 N 프레임일 수도 있고 다를 수도 있다. 일반적으로 비디오 프레임의 프레임 속도는 변화될 수 있다. 예를 들어, 프레임 속도는 30fps 또는 60fps일 수 있다. 따라서 고정된 타임스탬프 간격(예: 33ms)이 설정될 수 있으며 이는 30fps 설정에 해당한다. 실제 포즈 히스토리(435) 및 가상 포즈 히스토리(460)에 기초하여 연결 벡터(465)가 생성될 수 있다. 연결된 벡터는 잠재 공간 표현(420)에 입력될 수 있다. 디코더(440)는 LSTM 컴포넌트(445)(예: LSTM 컴포넌트(320)) 및 워핑 그리드(450)(예: 워핑 그리드(240 또는 340))로 구성될 수 있다. LSTM 컴포넌트(445)는 가상 포즈(455)(예를 들어, 가상 카메라에 대한 예측된 회전 및 예측된 변환)를 생성하기 위해 잠재 공간 표현(420)을 사용할 수 있다.
가상 포즈(455)는 가상 포즈에 대한 큐를 업데이트하기 위해 가상 포즈 히스토리(460)에 추가될 수 있다. 예를 들어, 회전에 대한 초기 값이 0으로 설정된 후, 이러한 초기 값은 각각의 예측된 가상 포즈(455)가 LSTM 컴포넌트(445)에 의해 출력될 때 업데이트될 수 있다. 또한, 예를 들어 실제 포즈 히스토리(435)에 대해 절대 회전 대신 상대 회전을 입력하고 상대 가상 포즈(455)를 예측할 수 있다. 워핑 그리드(450)는 각각의 입력 비디오 프레임을 안정화하기 위해 가상 포즈(455)를 사용할 수 있고, 안정화된 출력 비디오(470)가 생성될 수 있다.
안정화된 버전을 예측하기 위한 DNN(400)에 대한 예시적인 아키텍처는 VGG 유사 컨볼루션 신경망(CNN)을 포함할 수 있다. 예를 들어, 컨볼루션 신경망은 U-Net으로 모델링될 수 있다. 일부 실시예에서, 인코더(415)에 대한 입력은 옵티컬 플로우(410)일 수 있다. 그러한 옵티컬 플로우의 프레임(예를 들어, 도 5의 옵티컬 플로우(520))은 크기(4 x 270 x 480)일 수 있다. 인코더(415)는 입력 옵티컬 플로우(410)을 저차원 잠재 공간 표현(Lr)(예를 들어, 잠재 공간 표현(420))으로 매핑한다. 실제 카메라의 회전 및 변환을 포함하는 실제 포즈 히스토리(435) 및 가상 카메라의 예측된 회전 및 변환을 포함하는 가상 포즈 히스토리(460)는 벡터(465)를 형성하기 위해 연결된다.
연결 벡터(465)는 잠재 공간 표현(Lr)과 연결되어 잠재 공간 표현()을 생성하며, 여기서 은 실제 카메라 포즈에 대한 상대 회전을 나타내고, 는 가상 카메라 포즈에 대한 상대 회전을 나타낸다. U-net의 디코더(440)는 LSTM 컴포넌트(445) 및 워핑 그리드(differentiable warping grid)(450)를 포함할 수 있다. 구체적으로, LSTM 컴포넌트(445)는 상대 회전을 포함하는 가상 포즈(455)를 출력하고, 이는 출력 비디오(470)의 워핑된 안정화된 프레임(warped stabilized frame)을 생성하기 위해 미분 가능한 워핑 그리드(450)에 입력된다.
DNN(400)의 일 예시적인 구현에서, 순방향 및 역방향 옵티컬 플로우(410)의 입력 크기는 (4,270,480)일 수 있다. 크기가 (8,270,480), (16,67,120), (32,16,30), (64,4,7) 및 (128,1,1)인 총 5개의 CNN 은닉 계층이 있을 수 있다. 각각의 은닉 계층은 ReLU(Rectified Linear Unit) 활성화 함수를 사용하여 2D 연산으로 생성될 수 있다. 옵티컬 플로우(410)로부터의 피처(features)는 연결 벡터(465)와 연결되기 전에 완전 연결(FC: fully connected) 계층에 의해 64로 크기 조정될 수 있다. 잠재 공간 표현(420)에 대한 입력 데이터 크기는 (21+10) * 4 + 64일 수 있으며, 이는 실제 포즈 히스토리(435)에 대한 21개의 포즈(예: 과거 비디오 프레임 10개, 미래 비디오 프레임 10개, 현재 비디오 프레임의 실제 포즈), 가상 포즈 히스토리(460)에 대한 10개의 포즈(예: 과거 10개의 비디오 프레임에서 예측된 가상 포즈) 및 64차원 옵티컬 플로우(410)에 대응한다. 잠재 공간 표현(420)은 크기(512 및 512)를 갖는 2-계층 LSTM 컴포넌트(445)에 입력될 수 있다. LSTM 컴포넌트(445)로부터의 은닉 상태(hidden state)는 FC 계층에 입력되고 나서 "Softshrink" 활성화 함수가 뒤따라 출력 비디오(470)(예를 들어, 4D 쿼터니언으로 표시됨)를 생성할 수 있다. 일반적으로 Softshrink 활성화 함수는 출력을 부드럽게(smooth) 하고 노이즈를 제거할 수 있다.
III. 손실 함수로 기계 학습 모델 트레이닝
여기에 설명된 신경망은 솔루션 공간을 제한하도록 설계될 수 있는 하나 이상의 손실 함수를 기반으로 하는 최적화 프로세스를 기반으로 트레이닝될 수 있다. 예를 들어 총 손실 함수는 수학식 11과 같이 결정될 수 있다.
여기서 w_*는 각 손실 유형에 할당된 가중치이다. 이러한 가중치는 트레이닝 프로세스에 대한 각 손실의 영향을 조정하는 데 사용될 수 있다. 일부 실시예에서, 신경망의 트레이닝은 특정 비디오 프레임에 대해 연속 비디오 프레임에 대한 가상 카메라 포즈 간의 차이를 조정하는 것을 포함한다. 예를 들어, C0 평활도 손실(smoothness loss)은 가중치()와 연관될 수 있으며, 손실은 수학식 12와 같이 결정될 수 있다.
여기서, 는 기준 프레임()의 회전에 대한 가상 카메라 포즈의 상대 회전을 측정한다. C0 평활도 손실은 시간 영역에서 가상 포즈 변화(즉, 회전 변화(rotation changes))의 C0 연속성을 보장한다. 일반적으로 C0 평활도는 현재 가상 포즈가 이전 가상 포즈에 가깝다는 것을 의미한다. 일부 실시예에서, 신경망의 트레이닝은 특정 비디오 프레임에 대해 연속 비디오 프레임에 대한 가상 카메라 포즈 사이의 일차 차이(first order difference)를 조정하는 것을 포함한다.
마찬가지로, C1 평활도 손실은 가중치()와 연관될 수 있으며, 손실은 수학식 13과 같이 결정될 수 있다.
C1 평활도 손실은 시간 영역에서 가상 포즈 변화(변경)(즉, 회전 변화(변경))의 C1 연속성을 보장한다. 일반적으로, C1 평활도는 현재 가상 카메라 포즈와 이전 가상 카메라 포즈 사이의 변화를 의미하며, 는 이전 가상 카메라 포즈와 그 이전 가상 카메라 포즈() 사이의 변화와 동일하다. 이는 일차 도함수가 서로 가깝다는 것이다. 따라서 이 손실 함수는 가상 카메라 포즈에 부드럽게 변화하는 궤적을 제공한다. C0 평활도와 C1 평활도를 함께 사용하면 가상 카메라 포즈가 안정적이고 부드럽게(smoothly) 변화된다.
일부 실시예에서, 신경망의 트레이닝은 특정 비디오 프레임에 대해 실제 카메라 포즈와 가상 카메라 포즈 사이의 각도 차이를 조정하는 것을 포함한다. 예를 들어, 측정될 수 있는 또 다른 손실은 가상 카메라 포즈가 실제 카메라 포즈를 얼마나 가깝게 따르는지를 나타내는 각도 손실()이다. 각도 손실은 가중치()와 연관될 수 있고 그리고 가상 카메라 포즈와 실제 카메라 포즈 사이의 각도 차이로 측정될 수 있다. 각도 차이에 대한 원하는 차이는 0일 수 있지만, 허용 오차 임계값은 일부 구현에 포함될 수 있다.
따라서, 는 실제 카메라 회전과 가상 카메라 회전 간의 각도 차이 θ를 측정한다. θ가 임계치()보다 클 때 이 각도 손실이 유효하도록 허용하기 위해 로지스틱 회귀가 사용될 수 있다. 이러한 방식으로, 실제 포즈와 가상 포즈의 편차가 임계값 내에 있으면 가상 카메라는 여전히 자유롭게 움직일 수 있으며 임계값을 초과하여 실제 카메라에서 가상 카메라의 회전을 방지한다. 예를 들어, 일부 구현에서, 는 8도로 설정될 수 있고, 가상 카메라 포즈는 실제 카메라 포즈의 8도 내에서 벗어나도록 허용될 수 있다. 일부 실시예에서, 각도 차이가 임계 각도를 초과한다고 결정하면, 실제 카메라 포즈와 가상 카메라 포즈 사이의 각도 차이가 감소될 수 있다. 예를 들어, 가상 카메라 포즈가 실제 카메라 포즈보다 8도 이상 벗어난 경우, 실제 카메라 포즈와 가상 카메라 포즈의 차이가 8도 미만이 되도록 가상 카메라 포즈를 조정할 수 있다.
일부 실시예에서, 신경망의 트레이닝은 특정 비디오 프레임에 대해 모바일 컴퓨팅 장치의 원하지 않는 모션을 나타내는 왜곡된 영역의 면적을 조정하는 것을 포함한다. 예를 들어, 측정될 수 있는 다른 손실은 모바일 컴퓨팅 장치의 원하지 않는 모션을 나타내는 왜곡된 영역(본 명세서에서는 "정의되지 않은 영역"이라고도 함)의 면적(area)이다. 일부 실시예에서, 특정 비디오 프레임 이후에 나타나는 하나 이상의 비디오 프레임에서 왜곡된 영역의 면적이 결정될 수 있다. 예를 들어, 현재 비디오 프레임에서 예를 들어 N 예견 프레임과 같은 하나 이상의 미래 비디오 프레임까지 정의되지 않은 영역의 양(amount)은 수학식 14와 같이 측정될 수 있다.
여기서 각 i에 대해, 는 현재 프레임에 가까운 프레임에 대해 크고, i에 따라 감소하는 미리 설정된 가중치이다. 항은 타임스탬프 T + i * g에서 현재 가상 포즈 dR(T) 및 실제 카메라 포즈를 사용하여 정의되지 않은 영역의 양을 계산하는 데 사용된다. 출력은 워핑된 프레임(예: 워핑 그리드에 의해 출력된 프레임)에 대한 경계 박스와 실제 이미지의 경계 사이의 최대 돌출량(maximum protruded amount)을 측정한 1D 정규화 값이다. 손실()은 가중치()와 관련될 수 있다.
현재 프레임의 정의되지 않은 영역만 고려하면 결과 비디오가 부드럽지 않을 수 있다. 예를 들어, 미래의 비디오 프레임에 서든 모션(sudden motion)이 있을 수 있다. 따라서 미래 프레임에서의 서든 모션은 정의되지 않은 영역을 조정하여 고려해야 할 수 있다. 하나의 기술은 현재 프레임 0과 미래의 모든 N 프레임의 정의되지 않은 영역을 취하는 것을 포함할 수 있다. 현재와 미래의 모든 가중치()의 차이가 결정될 수 있다. 일부 실시예에서, 적용되는 가중치는 특정 비디오 프레임으로부터 하나 이상의 비디오 프레임 중 하나의 비디오 프레임의 거리에 따라 감소하도록 구성될 수 있다. 예를 들어, 이러한 가중치는 일반적으로 가우시안으로 간주될 수 있다. 따라서, 더 높은 가중치는 현재 프레임과 연관될 수 있고(미래 프레임에 대한 현재 프레임의 상대적 중요성을 나타냄) 더 작은 가중치는 미래 프레임과 연관될 수 있다. 현재 프레임의 정의되지 않은 영역이 미래 프레임의 정의되지 않은 영역보다 더 중요한 것으로 취급되도록 가중치를 선택할 수 있다. 손 움직임으로 인해 가상 카메라가 흔들리는 경우 현재 프레임만 정의되지 않은 영역 손실에 사용될 수 있다. 그러나 가상 카메라가 패닝(panning)하는 경우 현재 프레임에서 멀리 떨어져 있으므로 가상 카메라가 실제 카메라를 따라가도록 구성된다. 따라서, 카메라 모션의 종류에 따라 예견 프레임(look-ahead frames)의 개수가 결정될 수 있다. 일부 예시적인 실시예에서, 7개 또는 10개의 예견 비디오 프레임이 양호한 결과를 제공할 수 있다. 또한 미리 보기 비디오 프레임 수가 많을수록 더 나은 출력을 제공할 수 있다. 그러나 예측 비디오 프레임 수가 증가함에 따라 메모리 리소스에 대한 요구 사항도 증가한다. 일부 모바일 장치에서는 최대 30개의 미리보기 비디오 프레임을 사용할 수 있다.
일부 실시예에서, 신경망의 트레이닝은 특정 비디오 프레임에 대해 이미지 손실을 조정하는 것을 포함한다. 일반적으로 이미지 손실(Eimage)은 연속적으로 안정화된 비디오 프레임 간의 옵티컬 플로우의 차이를 측정한다. 앞에서 설명한 것처럼 옵티컬 플로우는 연속 비디오 프레임의 해당 지점 쌍(pairs of points)을 연결한다. 카메라의 모션이 안정적일 때 옵티컬 플로우 크기는 일반적으로 0에 가깝다. 구체적으로, 시간 t-1에서 이전 프레임의 임의의 지점(포인트)()에 대해, 시간 t에서의 프레임에서 대응하는 지점()은 순방향 옵티컬 플로우를 사용하여 결정될 수 있다. 유사하게, 현재 프레임의 임의의 지점(포인트)()에 대해, 시간 t-1에서 이전 프레임의 대응 포인트()가 결정될 수 있다. 그런 다음 이미지 손실(Eimage)은 가중치(wimage)와 연관될 수 있으며, 수학식 15와 같이 결정될 수 있다.
옵티컬 플로우는 순방향 플로우와 역방향 플로우를 모두 포함하므로, 이미지 손실 함수를 위해 옵티컬 플로우의 양방향을 모두 사용할 수 있다. 순방향 플로우에서, 에 의해 주어진 현재 프레임과 이전 프레임의 특징 차이가 결정될 수 있다. 유사하게, 역방향 플로우에 대해, 에 의해 주어진 현재 프레임과 이전 프레임 사이의 특징 차이가 결정될 수 있다. 이 두 가지 차이를 최소화하면 출력 비디오 프레임이 안정화될 수 있다. 옵티컬 플로우는 밀도가 높은 옵티컬 플로우이므로 수학식 15의 합계는 모든 이미지 픽셀에 걸쳐 있다.
트레이닝 단계 동안, 예를 들어 트레이닝 배치(training batch )로서 서브시퀀스를 무작위로 선택함으로써 트레이닝 배치가 결정될 수 있다. 일부 실시예에서, 서브시퀀스는 400개의 비디오 프레임을 포함할 수 있고, 400개의 비디오 프레임 각각은 본 명세서에 기술된 신경망에 의해 처리될 수 있다. 손실 함수는 전체 손실 함수로 결합될 수 있으며 이는 역전파될 수 있다. 이 프로세스를 반복하면 신경망의 모든 파라미터를 트레이닝시킬 수 있다. 예를 들어, LSTM의 특성으로 인해, 트레이닝 비디오 프레임 시퀀스의 긴 서브시퀀스가 무작위 입력으로 선택될 수 있으며 LSTM 프로세스는 프레임 단위 방식으로 이러한 각 서브시퀀스에 적용될 수 있다. 트레이닝 비디오 프레임의 전체 시퀀스에 대한 전체 손실이 결정된 다음 역전파될 수 있다. 이러한 방식으로 LSTM은 잠재 공간 표현에서 효과적으로 다양한 모션 상태(예: 걷기, 달리기, 패닝 등)를 나타내는 방법을 학습하도록 트레이닝될 수 있다.
일반적으로 전체 손실을 직접 사용하여 DNN을 트레이닝하면 트레이닝 손실이 수렴되지 않을 수 있다. 이는 비디오 안정화 문제의 복잡성과 실현 가능한 솔루션 공간의 크기 때문일 수 있다. 이 문제를 극복하기 위해 솔루션 공간을 단계별로 개선하기 위해 오프라인 트레이닝 프로세스로 다단계 트레이닝 프로세스를 사용할 수 있다.
예를 들어, 다단계 트레이닝 프로세스의 첫 번째 단계에서 C0 & C1 평활도 손실과 각도 손실이 최적화될 수 있다. 첫 번째 단계가 없으면 정의되지 않은 영역 손실이 크게 증가할 수 있다. 첫 번째 단계에서, DNN은 가상 카메라가 실제 카메라를 따라가도록 트레이닝되고, C0 및 C1 평활도가 달성된다.
다단계 트레이닝 프로세스의 두 번째 단계에서 C0 및 C1 평활 손실과 정의되지 않은 영역 손실이 최적화될 수 있다. 두 번째 단계가 없으면 이미지 손실이 크게 증가할 수 있다. 일반적으로 두 번째 단계에서는 첫 번째 단계의 각도 손실이 정의되지 않은 영역 손실로 대체된다. 두 번째 단계에서는 실제 카메라 포즈를 항상 따라가는 대신 가상 카메라가 때때로 실제 카메라를 따라가도록 DNN을 트레이닝한다. 그러나 정의되지 않은 영역의 크기가 커지면 가상 카메라가 실제 카메라를 더 가깝게 따르도록 트레이닝된다. 또한 예를 들어 C0 및 C1 평활도가 달성된다. 이 단계에서는 카메라가 흔들리는 경우(예: 카메라를 들고 있는 사용자의 의도하지 않은 손 움직임으로 인해) DNN이 입력 비디오 프레임을 안정화하는 방법을 학습할 수 있다.
다단계 트레이닝 프로세스의 세 번째 단계에서 이미지 손실과 함께 C0 및 C1 평활 손실 및 정의되지 않은 영역 손실이 최적화될 수 있다. 일반적으로 이미지 손실은 트레이닝의 두 번째 단계에 추가된다. 이미지 손실 함수를 추가함으로써 카메라는 실외 장면(예: 멀리 떨어진 물체)과 실내 장면(예: 제한된 거리)을 구별하도록 트레이닝된다.
IV. 추론/예측 생성을 위한 기계 학습 모델 트레이닝
도 6은 예시적인 실시예에 따라 트레이닝된 기계 학습 모델(들)(632)의 트레이닝 단계(602) 및 추론 단계(604)를 예시하는 다이어그램(600)을 도시한다. 일부 기계 학습 기술은 트레이닝 데이터의 패턴을 인식하고 트레이닝 데이터(패턴)에 대한 출력 추론 및/또는 예측을 제공하기 위해 트레이닝 데이터의 입력 세트에서 하나 이상의 기계 학습 알고리즘을 트레이닝하는 것을 포함한다. 그 결과 트레이닝된 기계 학습 알고리즘은 트레이닝된 기계 학습 모델이라고 할 수 있다. 예를 들어, 도 6은 하나 이상의 기계 학습 알고리즘(620)이 트레이닝 데이터(610)에 대해 트레이닝되어 트레이닝된 기계 학습 모델(632)이 되는 트레이닝 단계(602)를 보여준다. 그런 다음, 추론 단계(604) 동안 트레이닝된 기계 학습 모델(632)은 입력 데이터(630) 및 하나 이상의 추론/예측 요청(640)을 수신할 수 있고(입력 데이터(630)의 일부로) 이에 응답하여 하나 이상의 추론 및/또는 예측(650)을 출력으로 제공할 수 있다.
이와 같이, 트레이닝된 기계 학습 모델(들)(632)은 하나 이상의 기계 학습 알고리즘(620)의 하나 이상의 모델을 포함할 수 있다. 기계 학습 알고리즘(들)(620)은, 인공 신경(예를 들어, 여기에 설명된 컨볼루션 신경망, 순환 신경망, 베이지안 네트워크, 은닉 마르코브(Markov) 모델, 마르코브 결정 프로세스, 로지스틱 회귀 함수, 서포트 벡터 머신, 적합한 통계적 기계 학습 알고리즘, 및/또는 휴리스틱 기계 학습 시스템)망을 포함할 수 있지만 이에 제한되지 않는다. 기계 학습 알고리즘(들)(620)은 지도되거나(supervised) 비지도되지 않을 수 있으며, 온라인 및 오프라인 학습의 임의의 적절한 조합을 구현할 수 있다.
일부 예에서, 기계 학습 알고리즘(들)(620) 및/또는 트레이닝된 기계 학습 모델(들)(632)은 그래픽 처리 장치(GPU), 텐서 처리 장치(TPU), 디지털 신호 처리기(DSP) 및/또는 주문형 집적 회로(ASIC) 등과 같은 온-디바이스 코프로세서(coprocessors)를 사용하여 가속화될 수 있다. 이러한 온-디바이스 코프로세서는 기계 학습 알고리즘(들)(620) 및/또는 트레이닝된 기계 학습 모델(들)(632)의 속도를 높이는 데 사용될 수 있다. 일부 예에서, 트레이닝된 기계 학습 모델(들)(632)은 특정 컴퓨팅 장치에 대한 추론을 제공하기 위해 트레이닝되고 상주하고 실행될 수 있고/있거나 그렇지 않으면 특정 컴퓨팅 장치에 대한 추론을 할 수 있다.
트레이닝 단계(602) 동안, 기계 학습 알고리즘(들)(620)은 비지도, 지도, 준지도(semi-supervised) 및/또는 강화 학습 기술을 사용하여 트레이닝 입력으로서 적어도 트레이닝 데이터(610)를 제공함으로써 트레이닝될 수 있다. 비지도 학습은 트레이닝 데이터(610)의 일부(또는 전부)를 기계 학습 알고리즘(들)(620)에 제공하는 것과 트레이닝 데이터(610)의 제공된 부분(또는 전부)에 기초하여 하나 이상의 출력 추론을 결정하는 기계 학습 알고리즘(들)(620)을 포함한다. 지도 학습은 트레이닝 데이터(610)의 일부를 기계 학습 알고리즘(들)(620)에 제공하는 것을 수반하며, 기계 학습 알고리즘(들)(620)은 트레이닝 데이터(610)의 제공된 부분 및 출력 추론(들)에 기초하여 하나 이상의 출력 추론을 결정하며, 출력 추론(들)은 트레이닝 데이터(610)와 연관된 정확한 결과에 기초하여 수용되거나 수정된다. 일부 예에서, 기계 학습 알고리즘(들)(620)의 지도 학습은 트레이닝 입력에 대한 규칙 세트 및/또는 라벨 세트에 의해 관리될 수 있고, 규칙 세트 및/또는 라벨 세트는 기계 학습 알고리즘(들)(620)의 추론을 수정하는 데 사용될 수 있다.
준지도 학습(Semi-supervised learning)은 트레이닝 데이터(610)의 전부가 아니라 일부에 대해 올바른 결과를 갖는 것을 포함한다. 준지도 학습 동안, 트레이닝 데이터(610) 중 정확한 결과가 있는 부분에 대해서는 지도 학습이 사용되고, 트레이닝 데이터(610) 중 결과가 정확하지 않은 부분에 대해서는 비지도 학습이 사용된다. 강화 학습은 사전 추론에 관한 보상 신호를 수신하는 기계 학습 알고리즘(들)(620)을 포함하며, 여기서 보상 신호는 수치 값일 수 있다. 강화 학습 동안, 기계 학습 알고리즘(들)(620)은 추론을 출력하고 응답으로 보상 신호를 수신할 수 있으며, 여기서 기계 학습 알고리즘(들)(620)은 보상 신호의 수치를 최대화하도록 구성된다. 일부 예에서, 강화 학습은 또한 시간 경과에 따라 보상 신호에 의해 제공되는 수치의 예상 총계를 나타내는 수치를 제공하는 가치 함수를 활용한다. 일부 예에서, 기계 학습 알고리즘(들)(620) 및/또는 트레이닝된 기계 학습 모델(들)(632)은 증분 학습(incremental learning) 및 커리큘럼 학습(curriculum learning)을 포함하지만 이에 제한되지 않는 다른 기계 학습 기술을 사용하여 트레이닝될 수 있다.
일부 예에서, 기계 학습 알고리즘(들)(620) 및/또는 트레이닝된 기계 학습 모델(들)(632)은 전이 학습 기술(transfer learning techniques)을 사용할 수 있다. 예를 들어, 전이 학습 기술은 트레이닝된 기계 학습 모델(들)(632)이 한 세트의 데이터에 대해 사전 트레이닝되고 추가로 트레이닝 데이터(610)를 사용하여 트레이닝되는 것을 포함할 수 있다. 보다 구체적으로, 기계 학습 알고리즘(들)(620)은 하나 이상의 컴퓨팅 장치로부터의 데이터 및 컴퓨팅 장치 CD1에 제공되는 결과적인 트레이닝된 기계 학습 모델에 대해 미리 트레이닝될 수 있다. 여기서 CD1은 추론 단계(604) 동안 트레이닝된 기계 학습 모델을 실행하기 위한 것이다. 그런 다음, 트레이닝 단계(602) 동안, 사전 트레이닝된 기계 학습 모델은 트레이닝 데이터(610)를 사용하여 추가로 트레이닝될 수 있으며, 여기서 트레이닝 데이터(610)는 컴퓨팅 장치 CD1의 커널 및 비커널 데이터로부터 도출될 수 있다. 기계 학습 알고리즘(들)(620) 및/또는 CD1 데이터의 트레이닝 데이터(610)를 사용하는 사전 트레이닝된 기계 학습 모델의 추가 트레이닝은 지도 또는 비지도 학습을 사용하여 수행될 수 있다. 기계 학습 알고리즘(들)(620) 및/또는 사전 트레이닝된 기계 학습 모델이 적어도 트레이닝 데이터(610)에 대해 트레이닝되면, 트레이닝 단계(602)가 완료될 수 있다. 트레이닝된 결과 기계 학습 모델은 트레이닝된 기계 학습 모델(들)(632) 중 적어도 하나로서 활용될 수 있다.
특히, 트레이닝 단계(602)가 완료되면 트레이닝된 기계 학습 모델(들)(632)이 컴퓨팅 장치에 아직 제공되지 않은 경우 컴퓨팅 장치에 제공될 수 있다. 추론 단계(604)는 트레이닝된 기계 학습 모델(들)(632)이 컴퓨팅 장치 CD1에 제공된 후에 시작될 수 있다.
추론 단계(604) 동안, 트레이닝된 기계 학습 모델(들)(632)은 입력 데이터(630)를 수신하고 입력 데이터(630)에 대한 하나 이상의 대응하는 추론 및/또는 예측(650)을 생성 및 출력할 수 있다. 이와 같이, 입력 데이터(630)는 커널 컴포넌트 및 비커널 컴포넌트에 대응하는 추론(들) 및/또는 예측(들)(650)을 제공하기 위해 트레이닝된 기계 학습 모델(들)(632)에 대한 입력으로서 사용될 수 있다. 예를 들어, 트레이닝된 기계 학습 모델(들)(632)은 하나 이상의 추론/예측 요청(640)에 응답하여 추론(들) 및/또는 예측(들)(650)을 생성할 수 있다. 일부 예에서, 트레이닝된 기계 학습 모델(들)(632)은 다른 소프트웨어의 일부에 의해 실행될 수 있다. 예를 들어, 트레이닝된 기계 학습 모델(들)(632)은 요청 시 추론 및/또는 예측을 제공하기 위해 쉽게 이용 가능한 추론 또는 예측 데몬(prediction daemon)에 의해 실행될 수 있다. 입력 데이터(630)는 트레이닝된 기계 학습 모델(들)(632)을 실행하는 컴퓨팅 장치 CD1로부터의 데이터 및/또는 CD1 이외의 하나 이상의 컴퓨팅 장치로부터의 입력 데이터를 포함할 수 있다.
입력 데이터(630)는 하나 이상의 소스에 의해 제공되는 비디오 프레임의 모음(collection)을 포함할 수 있다. 비디오 프레임 모음에는 카메라 흔들림, 모션 블러, 롤링 셔터, 패닝 비디오, 걷거나 달리거나 차량을 타고 이동하는 동안 촬영한 비디오와 같은 다양한 이동 조건에서 객체의 비디오가 포함될 수 있다. 또한, 예를 들어 비디오 프레임 모음에는 실내 및 실외 장면의 비디오가 포함될 수 있다. 다른 유형의 입력 데이터도 가능하다.
추론(들) 및/또는 예측(들)(650)은 출력 이미지, 가상 카메라에 대한 출력 회전, 가상 카메라에 대한 출력 렌즈 오프셋, 및/또는 입력 데이터(630)(및 트레이닝 데이터(610))에서 작동하는 트레이닝된 기계 학습 모델(들)(632)에 의해 생성된 다른 출력 데이터를 포함할 수 있다. 일부 예에서 트레이닝된 기계 학습 모델(들)(632)은 출력 추론(들) 및/또는 예측(들)(650)을 입력 피드백(660)으로 사용할 수 있다. 트레이닝된 기계 학습 모델(들)(632)은 또한 새로운 추론을 생성하기 위한 입력으로서 과거 추론에 의존할 수 있다.
컨벌루션 신경망(220, 320 등)은 기계 학습 알고리즘(들)(620)의 예일 수 있다. 트레이닝 후, 컨벌루션 신경망(220, 320 등)의 트레이닝된 버전은 트레이닝된 기계 학습 모델(들)(632)의 예일 수 있다. 이 접근법에서, 추론/예측 요청(들)(640)의 예는 입력 비디오를 안정화하기 위한 요청일 수 있고 추론 및/또는 예측(들)(650)의 대응하는 예는 출력 안정화된 비디오일 수 있다.
일부 예에서, 하나의 컴퓨팅 장치(CD_SOLO)는 컨볼루션 신경망(100)을 트레이닝시킨 후에, 컨볼루션 신경망(100)의 트레이닝된 버전을 포함할 수 있다. 그런 다음 컴퓨팅 장치(CD_SOLO)는 입력 비디오를 안정화하라는 요청을 수신하고 안정화된 비디오를 생성하기 위해 트레이닝된 버전의 컨벌루션 신경망(100)을 사용할 수 있다.
일부 예에서, 두 개 이상의 컴퓨팅 장치 CD_CLI 및 CD_SRV를 사용하여 출력 이미지를 제공할 수 있다. 예를 들어, 제1 컴퓨팅 장치 CD_CLI는 입력 비디오를 안정화하기 위한 요청을 생성하고 제2 컴퓨팅 장치 CD_SRV로 보낼 수 있다. 그런 다음, CD_SRV는 안정화된 비디오를 생성하고 안정화된 비디오에 대한 CD_CLI로부터의 요청에 응답하기 위해 컨볼루션 신경망(100)을 트레이닝한 후 트레이닝된 버전의 컨볼루션 신경망(100)을 사용할 수 있다. 그런 다음 요청에 대한 응답을 수신하면 CD_CLI는 요청된 안정화된 비디오를 제공할 수 있다(예: 사용자 인터페이스 및/또는 디스플레이 사용).
V. 예시 데이터 네트워크
도 7은 예시적인 실시예에 따른 분산 컴퓨팅 아키텍처(700)를 도시한다. 분산 컴퓨팅 아키텍처(700)는 네트워크(706)를 통해 프로그램 가능 장치(704a, 704b, 704c, 704d, 704e)와 통신하도록 구성된 서버 장치(708, 710)를 포함한다. 네트워크(706)는 근거리 통신망(LAN), 광역 통신망(WAN), WLAN, WWAN, 회사 인트라넷, 공용 인터넷 또는 네트워크로 연결된 컴퓨팅 장치 사이에 통신 경로를 제공하도록 구성된 다른 유형의 네트워크에 대응할 수 있다. 네트워크(706)는 또한 하나 이상의 LAN, WAN, 회사 인트라넷 및/또는 공용 인터넷의 조합에 해당할 수 있다.
도 7은 단지 5개의 프로그래밍 가능한 장치를 보여주고 있지만, 분산 애플리케이션 아키텍처는 수십, 수백 또는 수천 개의 프로그래밍 가능한 장치에 서비스를 제공할 수 있다. 더욱이, 프로그램 가능 장치(704a, 704b, 704c, 704d, 704e)(또는 임의의 추가적인 프로그램 가능 장치)는 모바일 컴퓨팅 장치, 데스크탑 컴퓨터, 웨어러블 컴퓨팅 장치, 머리 장착형 장치(HMD), 네트워크 터미널, 모바일 컴퓨팅 장치 등과 같은 임의의 종류의 컴퓨팅 장치일 수 있다. 프로그램 가능 장치(704a, 704b, 704c, 704e)에 의해 예시된 것과 같은 일부 예에서, 프로그램 가능 장치는 네트워크(706)에 직접 연결될 수 있다. 프로그램 가능 장치(704d)에 의해 예시된 것과 같은 다른 예에서, 프로그램 가능 장치는 프로그램 가능 장치(704c)와 같은 연관된 컴퓨팅 장치를 통해 네트워크(706)에 간접적으로 연결될 수 있다. 이 예에서, 프로그램 가능 장치(704c)는 프로그램 가능 장치(704d)와 네트워크(706) 사이에 전자 통신을 전달하기 위해 연관된 컴퓨팅 장치로서 작용할 수 있다. 프로그래밍 가능한 장치(704e)에 의해 예시된 것과 같은 다른 예에서, 컴퓨팅 장치는 자동차, 트럭, 버스, 보트 또는 선박, 비행기 등과 같은 차량의 일부 및/또는 내부일 수 있다. 도 7에 도시되지 않은 다른 예에서, 프로그래밍 가능한 장치는 네트워크(706)에 직접 및 간접적으로 모두 연결될 수 있다.
서버 장치(708, 710)는 프로그래밍 가능한 장치(704a-704e)에 의해 요청된 대로 하나 이상의 서비스를 수행하도록 구성될 수 있다. 예를 들어, 서버 장치(708 및/또는 710)는 프로그램 가능한 장치(704a-704e)에 콘텐츠를 제공할 수 있다. 콘텐츠에는 웹 페이지, 하이퍼텍스트, 스크립트, 컴파일된 소프트웨어와 같은 이진 데이터, 이미지, 오디오 및/또는 비디오가 포함될 수 있지만 이에 국한되지 않는다. 콘텐츠는 압축 및/또는 비압축 콘텐츠를 포함할 수 있다. 콘텐츠는 암호화 및/또는 암호화 해제될 수 있다. 다른 유형의 콘텐츠도 가능하다.
다른 예로서, 서버 장치(708 및/또는 710)는 프로그램 가능한 장치(704a-704e)에 데이터베이스, 검색, 계산, 그래픽, 오디오, 비디오, 월드 와이드 웹/인터넷 활용 및/또는 기타 기능을 위한 소프트웨어에 대한 액세스를 제공할 수 있다. 서버 장치의 다른 많은 예도 가능하다.
VI. 컴퓨팅 장치 아키텍처
도 8은 예시적인 실시예에 따른 예시적인 컴퓨팅 장치(800)의 블록도이다. 특히, 도 8에 도시된 컴퓨팅 장치(800)는 본 명세서에 개시된 컨벌루션 신경망 및/또는 방법(1000)의 및/또는 연관된 적어도 하나의 기능을 수행하도록 구성될 수 있다.
컴퓨팅 장치(800)는 사용자 인터페이스 모듈(801), 네트워크 통신 모듈(802), 하나 이상의 프로세서(803), 데이터 저장소(804), 하나 이상의 카메라(818), 하나 이상의 센서(820) 및 전력 시스템(822)을 포함할 수 있으며, 이들 모두는 시스템 버스, 네트워크 또는 기타 연결 메커니즘(805)을 통해 함께 연결될 수 있다.
사용자 인터페이스 모듈(801)은 외부 사용자 입력/출력 장치로 데이터를 전송 및/또는 외부 사용자 입력/출력 장치로부터 데이터를 수신하도록 작동 가능할 수 있다. 예를 들어, 사용자 인터페이스 모듈(801)은 터치 스크린, 컴퓨터 마우스, 키보드, 키패드, 터치 패드, 트랙볼, 조이스틱, 음성 인식 모듈 및/또는 기타 유사한 장치와 같은, 사용자 입력 장치로 및/또는 사용자 입력 장치로부터 데이터를 전송 및/또는 수신하도록 구성될 수 있다. 사용자 인터페이스 모듈(801)은 또한 하나 이상의 음극선관(CRT), 액정 디스플레이, 발광 다이오드(LED), 디지털 광 처리(DLP) 기술을 사용하는 디스플레이, 프린터, 전구 및/또는 현재 알려져 있거나 이후에 출시될 기타 유사한 장치 개발와 같은 사용자 디스플레이 장치에 출력을 제공하도록 구성될 수 있다. 사용자 인터페이스 모듈(801)은 또한 스피커, 스피커 잭, 오디오 출력 포트, 오디오 출력 장치, 이어폰 및/또는 다른 유사한 장치와 같은 장치로 가청 출력을 생성하도록 구성될 수 있다. 사용자 인터페이스 모듈(801)은 진동 및/또는 터치 및/또는 컴퓨팅 장치(800)와의 물리적 접촉에 의해 검출 가능한 다른 출력과 같은 햅틱 출력을 생성할 수 있는 하나 이상의 햅틱 장치로 더 구성될 수 있다. 일부 예에서, 사용자 인터페이스 모듈(801)은 예를 들어 도 8에 도시된 그래픽 사용자 인터페이스와 같은 컴퓨팅 장치(800)를 활용하기 위한 그래픽 사용자 인터페이스(GUI)를 제공하는 데 사용될 수 있다.
네트워크 통신 모듈(802)은 네트워크를 통해 통신하도록 구성 가능한 하나 이상의 무선 인터페이스(807) 및/또는 하나 이상의 유선 인터페이스(808)를 제공하는 하나 이상의 장치를 포함할 수 있다. 무선 인터페이스(들)(807)는 Bluetooth™ 트랜시버(송수신기), Zigbee® 트랜시버, Wi-Fi™ 트랜시버, WiMAX™ 트랜시버, LTE™ 트랜시버 및/또는 무선 네트워크를 통해 통신하도록 구성 가능한 다른 유형의 무선 트랜시버와 같은 하나 이상의 무선 송신기, 수신기 및/또는 송수신기를 포함할 수 있다. 유선 인터페이스(들)(808)는 이더넷 트랜시버, USB(Universal Serial Bus) 트랜시버 또는 트위스트 페어 와이어, 동축 케이블, 광섬유 링크를 통해 통신하도록 구성 가능한 유사한 트랜시버 또는 유선 네트워크에 대한 유사한 물리적 연결과 같은 하나 이상의 유선 송신기, 수신기 및/또는 송수신기를 포함할 수 있다.
일부 예들에서, 네트워크 통신 모듈(802)은 신뢰할 수 있고, 보안되고, 및/또는 인증된 통신을 제공하도록 구성될 수 있다. 여기에 설명된 각 통신에 대해, 신뢰할 수 있는 통신(예: 보장된 메시지 전달)을 용이하게 하기 위한 정보가 메시지 헤더 및/또는 푸터(footers)의 일부(예: 패킷/메시지 시퀀싱 정보, 캡슐화 헤더 및/또는 푸터, 크기/시간 정보, 순환 중복 검사(CRC) 및/또는 패리티 검사 값과 같은 전송 확인 정보)로 제공될 수 있다. 통신은 DES(Data Encryption Standard), AES(Advanced Encryption Standard), RSA(Rivest-Shamir-Adelman) 알고리즘, Diffie-Hellman 알고리즘, SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 및/또는 DSA(Digital Signature Algorithm)와 같은 보안 소켓 프로토콜과 같은, 하나 이상의 암호화 프로토콜 및/또는 알고리즘을 사용하여 보안(예: 인코딩 또는 암호화) 및/또는 해독/디코딩될 수 있다. 다른 암호화 프로토콜 및/또는 알고리즘이 통신을 보호하기 위해(그리고 암호 해독/디코딩하기 위해) 본 명세서에 나열된 것에 추가로 사용될 수 있다.
하나 이상의 프로세서(803)는 하나 이상의 범용 프로세서 및/또는 하나 이상의 특수 목적 프로세서(예: 디지털 신호 프로세서, 텐서 처리 장치(TPU), 그래픽 처리 장치(GPU), 애플리케이션별 집적 회로 등)를 포함할 수 있다. 하나 이상의 프로세서(803)는 데이터 저장소(804)에 포함된 컴퓨터 판독 가능 명령어(806) 및/또는 여기에 설명된 다른 명령어를 실행하도록 구성될 수 있다.
데이터 저장소(804)는 하나 이상의 프로세서(803) 중 적어도 하나에 의해 판독 및/또는 액세스될 수 있는 하나 이상의 비일시적 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 하나 이상의 컴퓨터 판독 가능 저장 매체는 광학, 자기, 유기 또는 기타 메모리 또는 디스크 저장과 같은 휘발성 및/또는 비휘발성 저장 컴포넌트를 포함할 수 있다. 하나 이상의 프로세서(803) 중 적어도 하나와 전체적으로 또는 부분적으로 통합될 수 있다. 일부 예에서 데이터 저장소(804)는 단일 물리적 장치(예: 하나의 광학, 자기, 유기 또는 기타 메모리 또는 디스크 저장 장치)를 사용하여 구현될 수 있는 반면, 다른 예에서는 데이터 저장소(804)가 둘 이상의 물리적 장치를 사용하여 구현될 수 있다.
데이터 저장소(804)는 컴퓨터 판독 가능 명령어(806) 및 추가 데이터를 포함할 수 있다. 일부 예에서, 데이터 저장소(804)는 본 명세서에 설명된 방법, 시나리오 및 기술의 적어도 일부 및/또는 본 명세서에 설명된 장치(디바이스) 및 네트워크의 기능의 적어도 일부를 수행하는 데 필요한 저장소를 포함할 수 있다. 일부 예에서, 데이터 저장소(804)는 트레이닝된 신경망 모델(812)(예를 들어, 트레이닝된 컨벌루션 신경망의 모델)을 위한 저장소를 포함할 수 있다. 이들 예들 중 특히, 컴퓨터 판독 가능 명령어(806)는 프로세서(들)(803)에 의해 실행될 때 컴퓨팅 장치(800)가 트레이닝된 신경망 모델(812)의 기능 중 일부 또는 전부를 제공할 수 있게 하는 명령어를 포함할 수 있다.
일부 예에서, 컴퓨팅 장치(800)는 하나 이상의 카메라(818)를 포함할 수 있다. 카메라(들)(818)는 빛을 캡처하고, 캡처된 빛을 하나 이상의 이미지에 기록하도록 장착된 정지 카메라 및/또는 비디오 카메라와 같은 하나 이상의 이미지 캡처 장치를 포함할 수 있으며; 즉, 카메라(들)(818)는 캡처된 빛의 이미지(들)를 생성할 수 있다. 하나 이상의 이미지는 하나 이상의 정지 이미지 및/또는 비디오 이미지에서 사용되는 하나 이상의 이미지일 수 있다. 카메라(들)(818)는 가시광, 적외선, 자외선, 및/또는 하나 이상의 다른 주파수의 빛으로 방출되는 빛 및/또는 전자기 복사를 캡처할 수 있다.
일부 예에서, 컴퓨팅 장치(800)는 하나 이상의 센서(820)를 포함할 수 있다. 센서(820)는 컴퓨팅 장치(800) 내의 조건 및/또는 컴퓨팅 장치(800)의 환경 내의 조건을 측정하고 이들 조건에 대한 데이터를 제공하도록 구성될 수 있다. 예를 들어, 센서(820)는, (i) 컴퓨팅 장치(800)의 온도를 측정하기 위한 온도계, 전력 시스템(822)의 하나 이상의 배터리의 전력을 측정하기 위한 배터리 센서와 같은(이에 제한되지는 않음) 컴퓨팅 장치(800)에 대한 데이터를 얻기 위한 센서, 및/또는 컴퓨팅 장치(800)의 상태를 측정하는 다른 센서; (ii) RFID(Radio Frequency Identification) 판독기, 근접 센서, 1차원 바코드 판독기, 2차원 바코드(예: QR(Quick Response) 코드) 판독기 및 레이저 추적기와 같은, 다른 물체 및/또는 장치를 식별하는 식별 센서 -여기서 식별 센서는 RFID 태그, 바코드, QR 코드, 및/또는 판독되도록 구성된 다른 장치 및/또는 물체와 같은 식별자를 판독하고 적어도 식별 정보를 제공하도록 구성될 수 있음-; (iii) 자이로스코프, 가속도계, 도플러 센서, GPS 장치, 소나 센서, 레이더 장치, 레이저 변위 센서 및 나침반, 기울기 센서와 같은(그러나 이에 제한되지 않음) 컴퓨팅 장치(800)의 위치 및/또는 모션을 측정하기 위한 센서, (iv) 적외선 센서, 광 센서, 광 센서, 바이오 센서, 정전 용량 센서, 터치 센서, 온도 센서, 무선 센서, 무선 센서, 모션 센서, 마이크, 사운드 센서, 초음파 센서 및/또는 연기 감지기와 같은(그러나 이에 제한되지 않음) 컴퓨팅 장치(800)의 환경을 나타내는 데이터를 얻기 위한 환경 센서; 및/또는 (v) 하나 이상의 차원의 힘, 토크, 지면력, 마찰 및/또는 ZMP 및/또는 ZMP의 위치를 식별하는 제로 모멘트 포인트(ZMP) 센서와 같은, 컴퓨팅 장치(800)에 대해 작용하는 하나 이상의 힘(예를 들어, 관성력 및/또는 관성력)을 측정하기 위한 힘 센서 중 하나 이상을 포함할 수 있다. 센서(820)의 많은 다른 예도 가능하다.
전력 시스템(822)은 컴퓨팅 장치(800)에 전력을 제공하기 위한 하나 이상의 배터리(824) 및/또는 하나 이상의 외부 전력 인터페이스(826)를 포함할 수 있다. 하나 이상의 배터리(824)의 각각의 배터리는 컴퓨팅 장치(800)에 전기적으로 결합될 때 컴퓨팅 장치(800)를 위한 저장된 전력의 소스로서 작용할 수 있다. 전력 시스템(822)의 하나 이상의 배터리(824)는 휴대 가능하도록 구성될 수 있다. 하나 이상의 배터리(824)의 일부 또는 전부는 컴퓨팅 장치(800)로부터 쉽게 제거될 수 있다. 다른 예에서, 하나 이상의 배터리(824)의 일부 또는 전부는 컴퓨팅 장치(800) 내부에 있을 수 있으므로 컴퓨팅 장치(800)로부터 쉽게 제거할 수 없다. 하나 이상의 배터리(824)의 일부 또는 전부는 재충전 가능할 수 있다. 예를 들어, 충전식 배터리는 컴퓨팅 장치(800) 외부에 있고 하나 이상의 외부 전원 인터페이스를 통해 컴퓨팅 장치(800)에 연결된 하나 이상의 전원 공급 장치와 같이 배터리와 다른 전원 공급 장치 사이의 유선 연결을 통해 재충전될 수 있다. 다른 예에서, 하나 이상의 배터리(824)의 일부 또는 전부는 비충전식 배터리일 수 있다.
전력 시스템(822)의 하나 이상의 외부 전력 인터페이스(826)는 USB 케이블 및/또는 전원 코드와 같은 하나 이상의 유선 전원 인터페이스를 포함하여 컴퓨팅 장치(800) 외부에 있는 하나 이상의 전원 공급 장치에 유선 전원 연결을 가능하게 한다. 하나 이상의 외부 전력 인터페이스(826)는 Qi 무선 충전기를 통한 것과 같은 무선 전력 연결을 하나 이상의 외부 전원 공급 장치에 가능하게 하는 Qi 무선 충전기와 같은 하나 이상의 무선 전력 인터페이스를 포함할 수 있다. 일단 하나 이상의 외부 전원 인터페이스(826)를 사용하여 외부 전원에 전원 연결이 설정되면, 컴퓨팅 장치(800)는 설정된 전원 연결을 통해 외부 전원으로부터 전원을 인출할 수 있다. 일부 예에서, 전력 시스템(822)은 하나 이상의 배터리 또는 다른 유형의 전력 센서와 연관된 배터리 센서와 같은 관련 센서를 포함할 수 있다.
VII. 클라우드 기반 서버
도 9는 예시적인 실시예에 따른 클라우드 기반 서버 시스템을 도시한다. 도 9에 도시된 바와 같이, 컨볼루션 신경망 및/또는 컴퓨팅 장치의 기능은 컴퓨팅 클러스터(909a, 909b, 909c) 사이에 분산될 수 있다. 컴퓨팅 클러스터(909a)는 로컬 클러스터 네트워크(912a)에 의해 연결된 하나 이상의 컴퓨팅 장치(900a), 클러스터 저장소 어레이(910a) 및 클러스터 라우터(911a)를 포함할 수 있다. 마찬가지로, 컴퓨팅 클러스터(909b)는 로컬 클러스터 네트워크(912b)에 의해 연결된 하나 이상의 컴퓨팅 장치(900b), 클러스터 저장소 어레이(cluster storage arrays)(910b) 및 클러스터 라우터(911b)를 포함할 수 있다. 마찬가지로, 컴퓨팅 클러스터(909c)는 로컬 클러스터 네트워크(912c)에 의해 연결된 하나 이상의 컴퓨팅 장치(900c), 클러스터 저장소 어레이(910c) 및 클러스터 라우터(911c)를 포함할 수 있다.
일부 실시예에서, 컴퓨팅 클러스터(909a, 909b, 909c) 각각은 동일한 수의 컴퓨팅 장치, 동일한 수의 클러스터 저장소 어레이 및 동일한 수의 클러스터 라우터를 가질 수 있다. 그러나, 다른 실시예에서, 각각의 컴퓨팅 클러스터는 상이한 개수의 컴퓨팅 장치, 상이한 개수의 클러스터 저장소 어레이 및 상이한 개수의 클러스터 라우터를 가질 수 있다. 각 컴퓨팅 클러스터에 있는 컴퓨팅 장치, 클러스터 저장소 어레이 및 클러스터 라우터의 수는 컴퓨팅 작업 또는 각 컴퓨팅 클러스터에 할당된 작업에 따라 달라질 수 있다.
컴퓨팅 클러스터(909a)에서, 예를 들어 컴퓨팅 장치(900a)는 컨벌루션 신경망, 신뢰 학습 및/또는 컴퓨팅 장치의 다양한 컴퓨팅 작업을 수행하도록 구성될 수 있다. 일 실시예에서, 컨볼루션 신경망, 신뢰 학습 및/또는 컴퓨팅 장치의 다양한 기능은 컴퓨팅 장치(900a, 900b, 900c) 중 하나 이상에 분산될 수 있다. 각각의 컴퓨팅 클러스터(909b 및 909c) 내의 컴퓨팅 장치(900b 및 900c)는 컴퓨팅 클러스터(909a) 내의 컴퓨팅 장치(900a)와 유사하게 구성될 수 있다. 한편, 일부 실시예에서, 컴퓨팅 장치(900a, 900b 및 900c)는 상이한 기능을 수행하도록 구성될 수 있다.
일부 실시예에서, 컨볼루션 신경망 및/또는 컴퓨팅 장치와 연관된 컴퓨팅 작업(태스크) 및 저장된 데이터는 컨볼루션 신경망 및/또는 컴퓨팅 장치의 처리 요구 사항, 컴퓨팅 장치(900a, 900b, 900c)의 처리 능력, 각 컴퓨팅 클러스터의 컴퓨팅 장치 간 및 컴퓨팅 클러스터 자체 간 네트워크 링크의 대기 시간, 및/또는 비용, 속도, 내결함성, 탄력성, 효율성 및/또는 전체 시스템 아키텍처의 기타 설계 목표에 기여할 수 있는 기타 요인에 적어도 부분적으로 기반하여 컴퓨팅 장치 전체에 분산될 수 있다.
컴퓨팅 클러스터(909a, 909b, 909c)의 클러스터 저장소 어레이(910a, 910b, 910c)는 하드 디스크 드라이브 그룹에 대한 읽기 및 쓰기 액세스를 관리하도록 구성된 디스크 어레이 제어기를 포함하는 데이터 저장 어레이일 수 있다. 디스크 어레이 제어기는 단독으로 또는 각각의 컴퓨팅 장치와 함께 하나 이상의 컴퓨팅 장치가 하나 이상의 클러스터 스토리지 어레이에 액세스하지 못하도록 하는 네트워크 장애 및/또는 디스크 드라이브 또는 기타 클러스터 스토리지 어레이 오류로부터 보호하기 위해 클러스터 스토리지 어레이에 저장된 데이터의 백업 또는 중복 복사본을 관리하도록 구성할 수 있다.
컨볼루션 신경망 및/또는 컴퓨팅 장치의 기능이 컴퓨팅 클러스터(909a, 909b, 909c)의 컴퓨팅 장치(900a, 900b, 900c), 이들 컴포넌트의 다양한 활성 부분 및/또는 백업 부분에 걸쳐 분산될 수 있는 방식과 유사하게 클러스터 저장소 어레이(910a, 910b, 910c)에 걸쳐 분산될 수 있다. 예를 들어, 일부 클러스터 저장소 어레이는 컨볼루션 신경망 및/또는 컴퓨팅 장치의 데이터 중 일부를 저장하도록 구성될 수 있는 반면, 다른 클러스터 저장소 어레이는 컴퓨팅 장치 및/또는 컨볼루션 신경망 데이터의 다른 부분(들)을 저장할 수 있다. 또한, 예를 들어 일부 클러스터 저장소 어레이는 첫 번째 컨볼루션 신경망의 데이터를 저장하도록 구성될 수 있는 반면, 다른 클러스터 저장소 어레이는 두 번째 및/또는 세 번째 컨볼루션 신경망의 데이터를 저장할 수 있다. 또한 일부 클러스터 저장소 어레이는 다른 클러스터 저장소 어레이에 저장된 데이터의 백업 버전을 저장하도록 구성할 수 있다.
컴퓨팅 클러스터(909a, 909b, 909c) 내의 클러스터 라우터(911a, 911b, 911c)는 컴퓨팅 클러스터에 대한 내부 및 외부 통신을 제공하도록 구성된 네트워킹 장비를 포함할 수 있다. 예를 들어, 컴퓨팅 클러스터(909a)의 클러스터 라우터(911a)는 (i) 로컬 클러스터 네트워크(912a)를 통한 컴퓨팅 장치(900a)와 클러스터 저장소 어레이(910a) 사이의 로컬 영역 네트워크 통신, 및 (ii) 네트워크(706)로의 광역 네트워크 링크(913a)를 통한 컴퓨팅 클러스터(909a)와 컴퓨팅 클러스터(909b 및 909c) 사이의 광역 네트워크 통신을 제공하도록 구성된 하나 이상의 인터넷 스위칭 및 라우팅 장치를 포함할 수 있다. 클러스터 라우터(911b 및 911c)는 클러스터 라우터(911a)와 유사한 네트워크 장비를 포함할 수 있고, 클러스터 라우터(911b 및 911c)는 클러스터 라우터(911a)가 클러스터(909a)를 컴퓨팅하기 위해 수행하는 컴퓨팅 클러스터(909b 및 909b)에 대해 유사한 네트워킹 기능을 수행할 수 있다.
일부 실시예에서, 클러스터 라우터(911a, 911b, 911c)의 구성은 컴퓨팅 장치 및 클러스터 저장소 어레이의 데이터 통신 요건, 클러스터 라우터(911a, 911b, 911c)의 네트워크 장비의 데이터 통신 능력, 로컬 클러스터 네트워크(912a, 912b, 912c)의 대기 시간 및 처리량, 광역 네트워크 링크(913a, 913b, 913c)의 레이턴시, 처리량 및 비용, 및/또는 조정 시스템 아키텍처의 비용, 속도, 내결함성, 탄력성, 효율성 및/또는 기타 설계 기준에 기여할 수 있는 기타 요인에 적어도 부분적으로 기초할 수 있다.
VIII. 작동 방법의 예
도 10은 예시적인 실시예에 따른 방법(1000)을 예시한다. 방법(1000)은 다양한 블록 또는 단계를 포함할 수 있다. 블록 또는 단계는 개별적으로 또는 조합하여 수행될 수 있다. 블록 또는 단계는 임의의 순서 및/또는 직렬 또는 병렬로 수행될 수 있다. 또한, 블록 또는 단계는 생략되거나 방법(1000)에 추가될 수 있다.
방법(1000)의 블록은 도 8을 참조하여 도시되고 설명된 바와 같이 컴퓨팅 장치(800)의 다양한 요소에 의해 수행될 수 있다.
블록(1010)은 복수의 비디오 프레임들의 비디오 프레임과 연관된 하나 이상의 이미지 파라미터를 모바일 컴퓨팅 장치에 의해 수신하는 것을 포함한다.
블록(1020)은 모바일 컴퓨팅 장치의 모션 센서로부터 비디오 프레임과 연관된 모션 데이터를 수신하는 것을 포함한다.
블록(1030)은 신경망을 하나 이상의 이미지 파라미터 및 모션 데이터에 적용함으로써 비디오 프레임의 안정화된 버전을 예측하는 것을 포함한다.
일부 실시예에서, 신경망은 인코더 및 디코더를 포함할 수 있고, 신경망을 적용하는 것은 잠재 공간 표현을 생성하기 위해 인코더를 하나 이상의 이미지 파라미터에 적용하는 것; 모션 데이터에 기초하여 잠재 공간 표현을 조정하는 것; 및 안정화된 버전을 출력하도록 상기 디코더를 상기 조정된 잠재 공간 표현에 적용하는 것을 포함한다.
일부 실시예는 모션 데이터로부터 비디오 프레임과 연관된 실제 카메라 포즈를 생성하는 것을 포함한다. 잠재 공간 표현은 실제 카메라 포즈를 기반으로 할 수 있다.
일부 실시예에서, 디코더는 LSTM(long short-term memory) 컴포넌트를 포함할 수 있고, 디코더를 적용하는 것은 가상 카메라 포즈를 예측하기 위해 LSTM 컴포넌트를 적용하는 것을 포함할 수 있다.
일부 실시예에서, 디코더는 워핑 그리드를 포함할 수 있고, 디코더를 적용하는 것은 워핑 그리드를 예측된 가상 카메라 포즈에 적용하여 안정화된 버전을 출력하는 것을 더 포함할 수 있다.
일부 실시예는 실제 카메라 포즈의 히스토리 및 가상 카메라 포즈의 히스토리를 결정하는 것을 포함한다. 잠재 공간 표현은 실제 카메라 포즈의 히스토리 및 가상 카메라 포즈의 히스토리를 기반으로 할 수 있다.
일부 실시예에서, 모션 데이터는 회전 데이터 및 타임스탬프 데이터를 포함한다. 이러한 실시예는 회전 데이터 및 타임스탬프 데이터로부터 기준 비디오 프레임의 기준 카메라 포즈에 대한 비디오 프레임의 카메라 포즈의 상대 회전을 결정하는 것을 포함할 수 있다. 안정화된 버전의 예측은 상대 회전에 기초할 수 있다.
일부 실시예에서, 인코더를 적용하는 것은 복수의 비디오 프레임들 중 한 쌍의 연속적인 비디오 프레임으로부터, 한 쌍의 연속적인 비디오 프레임 사이의 대응관계를 나타내는 옵티컬 플로우을 생성하는 것을 포함할 수 있다. 방법은 옵티컬 플로우에 기초하여 잠재 공간 표현을 생성하는 단계를 더 포함할 수 있다.
일부 실시예는 특정 비디오 프레임을 수신하고 특정 비디오 프레임과 연관된 하나 이상의 이미지 파라미터 및 모션 데이터에 기초하여 특정 비디오 프레임의 안정화된 버전을 출력하도록 신경망을 트레이닝시키는 것을 포함한다.
일부 실시예에서, 신경망을 트레이닝하는 것은 특정 비디오 프레임에 대해, 실제 카메라 포즈와 가상 카메라 포즈 사이의 차이를 조정하는 것을 포함할 수 있다.
일부 실시예에서, 신경망을 트레이닝하는 것은 특정 비디오 프레임에 대해 실제 카메라 포즈와 가상 카메라 포즈 사이의 일차 차이(first order difference)를 조정하는 것을 포함할 수 있다.
일부 실시예에서, 신경망을 트레이닝하는 것은 특정 비디오 프레임에 대해 실제 카메라 포즈와 가상 카메라 포즈 사이의 각도 차이를 조정하는 것을 포함할 수 있다.
일부 실시예에서, 상기 각도 차이를 조정하는 것은 각도 차이가 임계 각도를 초과한다는 결정 시에, 실제 카메라 포즈와 가상 카메라 포즈 사이의 각도 차이를 감소시키는 것을 포함한다.
일부 실시예에서, 상기 신경망을 트레이닝하는 것은 특정 비디오 프레임에 대해 모바일 컴퓨팅 장치의 원하지 않는 모션을 나타내는 왜곡된 영역(distorted region)의 면적(area)을 조정하는 것을 포함할 수 있다.
일부 실시예에서, 왜곡된 영역의 면적을 조정하는 것은 특정 비디오 프레임 이후에 나타나는 하나 이상의 비디오 프레임에서 왜곡된 영역의 면적을 결정하는 것을 포함한다. 이 방법은 왜곡된 영역의 면적에 가중치를 적용하는 단계를 더 포함한다. 적용된 가중치는 특정 비디오 프레임으로부터, 하나 이상의 비디오 프레임 중 하나의 비디오 프레임의 거리에 따라 감소하도록 구성될 수 있다.
일부 실시예에서, 신경망을 트레이닝하는 것은 특정 비디오 프레임에 대해 이미지 손실을 조정하는 것을 포함할 수 있다.
일부 실시예에서, 하나 이상의 이미지 파라미터는 렌즈 위치를 나타내는 광학 이미지 안정화(OIS) 데이터를 포함할 수 있다. 신경망을 적용하는 것은 렌즈 위치를 기반으로 가상 카메라에 대한 렌즈 오프셋을 예측하는 것을 포함한다.
일부 실시예에서, 비디오 프레임의 안정화된 버전을 예측하는 것은 모바일 컴퓨팅 장치에서 트레이닝된 신경망을 획득하는 것을 포함한다. 이 방법은 안정화된 버전의 예측에 상기 획득된 트레이닝된 신경망을 적용하는 단계를 더 포함한다.
도면에 도시된 특정 배열은 제한적인 것으로 간주되어서는 안 된다. 다른 실시예는 주어진 도면에 도시된 각각의 요소를 더 많거나 적게 포함할 수 있음을 이해해야 한다. 또한, 도시된 컴포넌트 중 일부는 결합되거나 생략될 수 있다. 또한, 예시적인 실시예는 도면에 예시되지 않은 요소를 포함할 수 있다.
정보의 처리를 나타내는 단계 또는 블록은 본 명세서에 기술된 방법 또는 기술의 특정 논리적 기능을 수행하도록 구성될 수 있는 회로에 대응할 수 있다. 대안적으로 또는 추가적으로, 정보 처리를 나타내는 단계 또는 블록은 모듈, 세그먼트 또는 프로그램 코드의 일부(관련 데이터 포함)에 해당할 수 있다. 프로그램 코드는 방법 또는 기술에서 특정 논리적 기능 또는 동작을 구현하기 위해 프로세서에 의해 실행 가능한 하나 이상의 명령어를 포함할 수 있다. 프로그램 코드 및/또는 관련 데이터는 디스크, 하드 드라이브 또는 기타 저장 매체를 포함하는 저장 장치와 같은 임의 유형의 컴퓨터 판독 가능 매체에 저장될 수 있다.
컴퓨터 판독 가능 매체는 또한 레지스터 메모리, 프로세서 캐시 및 랜덤 액세스 메모리(RAM)와 같이 짧은 기간 동안 데이터를 저장하는 컴퓨터 판독 가능 매체와 같은 비일시적 컴퓨터 판독 가능 매체를 포함할 수 있다. 컴퓨터 판독 가능 매체는 또한 장기간 동안 프로그램 코드 및/또는 데이터를 저장하는 비일시적 컴퓨터 판독 가능 매체를 포함할 수 있다. 따라서, 컴퓨터 판독 가능 매체는 예를 들어 판독 전용 메모리(ROM), 광학 또는 자기 디스크, CD-ROM(compact-disc read only memory)과 같은 보조 또는 영구 장기 저장 장치를 포함할 수 있다. 컴퓨터 판독 가능 매체는 다른 휘발성 또는 비휘발성 저장 시스템일 수도 있다. 컴퓨터 판독 가능 매체는 예를 들어 컴퓨터 판독 가능 저장 매체 또는 유형의 저장 장치로 간주될 수 있다.
다양한 예 및 실시예가 개시되었지만, 다른 예 및 실시예가 당업자에게 명백할 것이다. 다양한 개시된 예 및 실시예는 예시를 위한 것이며 제한하려는 의도가 아니며, 진정한 범위는 다음 청구범위에 의해 표시된다.

Claims (20)

  1. 컴퓨터로 구현되는 방법으로서,
    모바일 컴퓨팅 장치에 의해, 복수의 비디오 프레임들의 비디오 프레임과 연관된 하나 이상의 이미지 파라미터를 수신하는 단계;
    상기 모바일 컴퓨팅 장치의 모션 센서로부터, 상기 비디오 프레임과 연관된 모션 데이터를 수신하는 단계; 그리고
    상기 하나 이상의 이미지 파라미터 및 상기 모션 데이터에 신경망을 적용하여 상기 비디오 프레임의 안정화된 버전을 예측하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  2. 제1항에 있어서, 상기 신경망은 인코더 및 디코더를 포함하고, 상기 신경망을 적용하는 것은,
    잠재 공간 표현(latent space representation)을 생성하기 위해 상기 인코더를 상기 하나 이상의 이미지 파라미터에 적용하는 단계;
    상기 모션 데이터에 기초하여 상기 잠재 공간 표현을 조정하는 단계; 그리고
    상기 안정화된 버전을 출력하도록 상기 디코더를 상기 조정된 잠재 공간 표현에 적용하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  3. 제2항에 있어서, 상기 방법은,
    상기 모션 데이터로부터, 상기 비디오 프레임과 연관된 실제 카메라 포즈를 생성하는 단계를 더 포함하며, 상기 잠재 공간 표현은 상기 실제 카메라 포즈에 기초되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  4. 제2항 또는 제3항에 있어서, 상기 디코더는 LSTM(long short-term memory) 컴포넌트를 포함하고, 상기 디코더를 적용하는 단계는 가상 카메라 포즈를 예측하기 위해 상기 LSTM 컴포넌트를 적용하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  5. 제2항 또는 제3항에 있어서, 상기 디코더는 워핑 그리드(warping grid)를 포함하고, 상기 디코더를 적용하는 단계는 상기 안정화된 버전을 출력하기 위해 상기 워핑 그리드를 상기 예측된 가상 카메라 포즈에 적용하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  6. 제2항 내지 제5항 중 어느 한 항에 있어서, 상기 방법은,
    실제 카메라 포즈의 히스토리 및 가상 카메라 포즈의 히스토리를 결정하는 단계를 더 포함하며, 그리고
    상기 잠재 공간 표현은 상기 실제 카메라 포즈의 히스토리 및 상기 가상 카메라 포즈의 히스토리에 기초되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  7. 제1항에 있어서, 상기 모션 데이터는 회전 데이터 및 타임스탬프 데이터를 포함하고, 상기 방법은,
    상기 회전 데이터 및 상기 타임스탬프 데이터로부터, 기준 비디오 프레임의 기준 카메라 포즈에 대한 상기 비디오 프레임의 카메라 포즈의 상대 회전을 결정하는 단계를 더 포함하며, 그리고
    상기 안정화된 버전을 예측하는 것은 상기 상대 회전에 기초되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  8. 제2항 내지 제7항 중 어느 한 항에 있어서, 상기 인코더를 적용하는 단계는,
    상기 복수의 비디오 프레임들 중 한 쌍의 연속 비디오 프레임으로부터, 상기 한 쌍의 연속 비디오 프레임 사이의 대응관계를 나타내는 옵티컬 플로우(optical flow)를 생성하는 단계; 그리고
    상기 옵티컬 플로우에 기초하여 상기 잠재 공간 표현을 생성하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  9. 제1항에 있어서, 상기 방법은,
    특정 비디오 프레임을 수신하고, 그리고 상기 특정 비디오 프레임과 연관된 하나 이상의 이미지 파라미터 및 모션 데이터에 기초하여 상기 특정 비디오 프레임의 안정화된 버전을 출력하도록 상기 신경망을 트레이닝하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  10. 제9항에 있어서, 상기 신경망을 트레이닝하는 단계는 상기 특정 비디오 프레임에 대해, 연속 비디오 프레임에 대한 가상 카메라 포즈 간의 차이를 조정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  11. 제9항 또는 제10항에 있어서, 상기 신경망을 트레이닝하는 단계는 상기 특정 비디오 프레임에 대해, 연속 비디오 프레임에 대한 가상 카메라 포즈 간의 일차 차이(first order difference)를 조정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서, 상기 신경망을 트레이닝하는 단계는 상기 특정 비디오 프레임에 대해, 실제 카메라 포즈와 가상 카메라 포즈 사이의 각도 차이를 조정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  13. 제12항에 있어서, 상기 각도 차이를 조정하는 단계는,
    상기 각도 차이가 임계 각도를 초과하는 것으로 결정되면, 상기 실제 카메라 포즈와 상기 가상 카메라 포즈 사이의 각도 차이를 줄이는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  14. 제9항 내지 제13항 중 어느 한 항에 있어서, 상기 신경망을 트레이닝하는 단계는 상기 특정 비디오 프레임에 대해, 모바일 컴퓨팅 장치의 원하지 않는 모션을 나타내는 왜곡된 영역의 면적를 조정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  15. 제14항에 있어서, 상기 왜곡된 영역의 면적을 조정하는 단계는,
    상기 특정 비디오 프레임 이후에 나타나는 하나 이상의 비디오 프레임에서 왜곡된 영역의 면적을 결정하는 단계; 그리고
    상기 왜곡된 영역의 면적에 가중치를 적용하는 단계를 포함하며, 상기 적용되는 가중치는 상기 특정 비디오 프레임으로부터, 상기 하나 이상의 비디오 프레임 중 하나의 비디오 프레임의 거리에 따라 감소하도록 구성되는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  16. 제9항 내지 제15항 중 어느 한 항에 있어서, 상기 신경망을 트레이닝하는 단계는 상기 특정 비디오 프레임에 대해 이미지 손실을 조정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  17. 제1항에 있어서, 상기 하나 이상의 이미지 파라미터는 렌즈 위치를 나타내는 광학 이미지 안정화(OIS) 데이터를 포함하고, 상기 신경망을 적용하는 것은 상기 렌즈 위치에 기초하여 가상 카메라에 대한 렌즈 오프셋을 예측하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  18. 제1항 내지 제17항 중 어느 한 항에 있어서, 상기 비디오 프레임의 안정화된 버전을 예측하는 단계는,
    상기 모바일 컴퓨팅 장치에서 상기 트레이닝된 신경망을 획득하는 단계; 그리고
    상기 안정화된 버전의 예측에 상기 획득된 트레이닝된 신경망을 적용하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  19. 컴퓨팅 장치로서,
    하나 이상의 프로세서; 그리고
    데이터 저장소를 포함하며, 상기 데이터 저장소는
    상기 하나 이상의 프로세서에 의해 실행될 때 상기 컴퓨팅 장치로 하여금 제1항 내지 제18항 중 어느 한 항의 컴퓨터로 구현되는 방법을 포함하는 기능을 수행하게 하는 컴퓨터 실행가능 명령어를 저장한 것을 특징으로 하는 컴퓨팅 장치.
  20. 컴퓨팅 장치의 하나 이상의 프로세서에 의해 실행될 때 상기 컴퓨팅 장치로 하여금 제1항 내지 제18항 중 어느 한 항의 컴퓨터로 구현되는 방법을 포함하는 기능을 수행하게 하는 컴퓨터 판독가능 명령어가 저장된 하나 이상의 컴퓨터 판독가능 매체를 포함하는 것을 특징으로 하는 제조 물품.
KR1020237021737A 2020-12-10 2020-12-10 기계 학습 모델에 기초한 향상된 비디오 안정화 KR20230107886A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2020/064166 WO2022125090A1 (en) 2020-12-10 2020-12-10 Enhanced video stabilization based on machine learning models

Publications (1)

Publication Number Publication Date
KR20230107886A true KR20230107886A (ko) 2023-07-18

Family

ID=74141874

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237021737A KR20230107886A (ko) 2020-12-10 2020-12-10 기계 학습 모델에 기초한 향상된 비디오 안정화

Country Status (7)

Country Link
US (1) US20240040250A1 (ko)
EP (1) EP4252187A1 (ko)
JP (1) JP2023553153A (ko)
KR (1) KR20230107886A (ko)
CN (1) CN116686008A (ko)
DE (1) DE112020007826T5 (ko)
WO (1) WO2022125090A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115174817A (zh) * 2022-09-05 2022-10-11 深圳深知未来智能有限公司 一种基于深度学习的混合防抖方法及系统
CN116558541B (zh) * 2023-07-11 2023-09-22 新石器慧通(北京)科技有限公司 模型训练方法和装置、轨迹预测方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014075022A1 (en) * 2012-11-12 2014-05-15 Behavioral Recognition Systems, Inc. Image stabilization techniques for video surveillance systems
US10462370B2 (en) * 2017-10-03 2019-10-29 Google Llc Video stabilization
WO2019153245A1 (en) * 2018-02-09 2019-08-15 Baidu.Com Times Technology (Beijing) Co., Ltd. Systems and methods for deep localization and segmentation with 3d semantic map
US11024041B2 (en) * 2018-12-10 2021-06-01 Intel Corporation Depth and motion estimations in machine learning environments

Also Published As

Publication number Publication date
US20240040250A1 (en) 2024-02-01
WO2022125090A1 (en) 2022-06-16
DE112020007826T5 (de) 2023-09-28
EP4252187A1 (en) 2023-10-04
CN116686008A (zh) 2023-09-01
JP2023553153A (ja) 2023-12-20

Similar Documents

Publication Publication Date Title
US11557085B2 (en) Neural network processing for multi-object 3D modeling
US11941719B2 (en) Learning robotic tasks using one or more neural networks
US11599747B2 (en) Depth prediction from dual pixel images
US10726335B2 (en) Generating compressed representation neural networks having high degree of accuracy
US20230401681A1 (en) Photo Relighting Using Deep Neural Networks and Confidence Learning
US20180350109A1 (en) Method and device for data quantization
US20180349758A1 (en) Computation method and device used in a convolutional neural network
KR20180041642A (ko) 향상된 안구 추적을 위한 장면 분석
US11132800B2 (en) Real time perspective correction on faces
US20220076018A1 (en) Determining Regions of Interest for Photographic Functions
KR20230107886A (ko) 기계 학습 모델에 기초한 향상된 비디오 안정화
CN115362478A (zh) 用于标记图像之间的空间关系的强化学习模型
CN117581275A (zh) 眼睛注视分类
Rodriguez-Ramos et al. Adaptive inattentional framework for video object detection with reward-conditional training
EP4198878A1 (en) Method and apparatus for image restoration based on burst image
Meng et al. Real-time digital video stabilization of bioinspired robotic fish using estimation-and-prediction framework
WO2024076362A1 (en) Stabilized object tracking at high magnification ratios
WO2022181252A1 (ja) 関節点検出装置、学習モデル生成装置、関節点検出方法、学習モデル生成方法、及びコンピュータ読み取り可能な記録媒体
US20230308769A1 (en) Methods and Systems for User Adjustable Region based Brightness Settings
WO2023033803A1 (en) Systems and methods for progressive rendering of refinement tiles in images
CN114600134A (zh) 估计系统、估计装置以及估计方法
WO2024076611A1 (en) Machine learning model based triggering mechanism for image enhancement
KR20220073652A (ko) 적대적 생성 네트워크의 보상 기반 재훈련에 의한 이상 탐지 방법 및 장치