KR20230154187A - 비디오 프로세싱에서 개선된 시간 일관성을 위한 효율적인 테스트 시간 적응 - Google Patents

비디오 프로세싱에서 개선된 시간 일관성을 위한 효율적인 테스트 시간 적응 Download PDF

Info

Publication number
KR20230154187A
KR20230154187A KR1020237029855A KR20237029855A KR20230154187A KR 20230154187 A KR20230154187 A KR 20230154187A KR 1020237029855 A KR1020237029855 A KR 1020237029855A KR 20237029855 A KR20237029855 A KR 20237029855A KR 20230154187 A KR20230154187 A KR 20230154187A
Authority
KR
South Korea
Prior art keywords
neural network
artificial neural
video
label
processing
Prior art date
Application number
KR1020237029855A
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 KR20230154187A publication Critical patent/KR20230154187A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/41Higher-level, semantic clustering, classification or understanding of video scenes, e.g. detection, labelling or Markovian modelling of sport events or news items
    • 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
    • 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/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content

Landscapes

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

Abstract

비디오를 프로세싱하기 위한 방법은 인공 신경망(ANN)의 제1 계층에서 입력으로서 비디오를 수신하는 단계를 포함한다. 비디오의 제1 프레임이 제1 라벨을 생성하도록 프로세싱된다. 그 후, 인공 신경망은 제1 라벨에 기초하여 업데이트된다. 업데이트는 비디오의 제2 프레임을 동시에 프로세싱하면서 수행된다. 그렇게 하면, 라벨들 사이의 시간적 불일치가 감소된다.

Description

비디오 프로세싱에서 개선된 시간 일관성을 위한 효율적인 테스트 시간 적응
[0001] 본 출원은 "EFFICIENT TEST-TIME ADAPTATION FOR IMPROVED TEMPORAL CONSISTENCY IN VIDEO PROCESSING"이라는 명칭으로 2021년 3월 10일자 출원된 미국 특허출원 제17/198,147호에 대한 우선권을 주장하며, 이 출원의 개시내용은 그 전체가 인용에 의해 본 명세서에 명백히 포함된다.
[0002] 본 개시내용의 양상들은 일반적으로 신경망(neural network)들에 관한 것으로, 보다 구체적으로는 비디오 프로세싱(video processing)에 관한 것이다.
[0003] 인공 신경망들은 인공 뉴런(neuron)들(예컨대, 뉴런 모델(model)들)의 상호 연결된 그룹(group)들을 포함할 수 있다. 인공 신경망은 계산 디바이스(computational device)일 수 있거나 또는 계산 디바이스에 의해 수행될 방법으로서 표현될 수 있다.
[0004] 신경망들은 텐서(tensor)들을 소비하고 텐서들을 생성하는 피연산자들로 구성된다. 신경망들은 복잡한 문제들을 해결하는 데 사용될 수 있지만, 솔루션(solution)을 생성하기 위해 수행될 수 있는 계산들의 수 및 네트워크(network) 크기가 방대할 수 있기 때문에, 네트워크가 작업을 완료하는 시간이 길 수 있다. 더욱이, 이러한 작업들은 제한된 계산 능력을 가질 수 있는 모바일 디바이스들 상에서 수행될 수 있기 때문에, 심층 신경망들의 계산 비용들이 문제가 될 수 있다.
[0005] 컨볼루션(convolutional) 신경망들은 피드-포워드(feed-forward) 인공 신경망의 타입(type)이다. 컨볼루션 신경망들은, 각각이 수용 필드(field)를 갖고 집합적으로 입력 공간을 타일링(tile)하는 뉴런들의 집합들을 포함할 수 있다. CNN(convolutional neural network)들, 이를테면 DCN(deep convolutional neural network)들은 다수의 애플리케이션(application)들을 갖는다. 특히, 이러한 신경망 아키텍처(architecture)들은 이미지 인식, 패턴 인식, 음성 인식, 자율 주행, 비디오 스트림(stream)의 객체 세그먼트화(segmentation), 비디오 프로세싱 및 다른 분류 작업들과 같은 다양한 기술들에서 사용된다.
[0006] 현대의 심층 학습 기반 비디오 프로세싱 방법들 또는 모델들은 시간이 지남에 따라 일관되지 않은 출력들을 생성할 수 있다. 일부 경우들에서, 불일치는 디스플레이(display)에서의 플리커(flicker) 또는 다른 오정렬들의 형태로 관찰될 수 있다. 시간상 일관되지 않은 출력들(예컨대, 플리커링(flickering))은 사용자의 경험 및 즐거움뿐만 아니라 시스템 안정성 및 성능을 저하시킬 수 있다.
[0007] 본 개시내용의 양상에서, 비디오를 프로세싱하기 위한 방법이 제공된다. 이 방법은 인공 신경망(ANN: artificial neural network)의 제1 계층에서 입력으로서 비디오를 수신하는 단계를 포함한다. 이 방법은 또한, 제1 라벨(label)을 생성하기 위해 비디오의 제1 프레임(frame)을 프로세싱하는 단계를 포함한다. 추가로, 이 방법은 제1 라벨에 기초하여 인공 신경망을 업데이트(update)하는 단계를 포함한다. 인공 신경망의 업데이트는 비디오의 제2 프레임을 동시에 프로세싱하면서 수행된다.
[0008] 본 개시내용의 다른 양상에서, 비디오를 프로세싱하기 위한 장치가 제공된다. 이 장치는 메모리 및 메모리에 결합된 하나 이상의 프로세서들을 포함한다. 프로세서(들)는 인공 신경망(ANN)의 제1 계층에서 입력으로서 비디오를 수신하도록 구성된다. 프로세서(들)는 또한, 제1 라벨을 생성하기 위해 비디오의 제1 프레임을 프로세싱하도록 구성된다. 추가로, 프로세서(들)는 제1 라벨에 기초하여 인공 신경망을 업데이트하도록 구성된다. 인공 신경망의 업데이트는 비디오의 제2 프레임을 동시에 프로세싱하면서 수행된다.
[0009] 본 개시내용의 양상에서, 비디오를 프로세싱하기 위한 장치가 제공된다. 이 장치는 인공 신경망의 제1 계층에서 입력으로서 비디오를 수신하기 위한 수단을 포함한다. 이 장치는 또한, 제1 라벨을 생성하기 위해 비디오의 제1 프레임을 프로세싱하기 위한 수단을 포함한다. 추가로, 이 장치는 제1 라벨에 기초하여 인공 신경망을 업데이트하기 위한 수단을 포함한다. 인공 신경망의 업데이트는 비디오의 제2 프레임을 동시에 프로세싱하면서 수행된다.
[0010] 본 개시내용의 추가적인 양상에서, 비-일시적 컴퓨터 판독 가능 매체가 제공된다. 컴퓨터 판독 가능 매체 상에는 비디오를 프로세싱하기 위한 프로그램 코드가 인코딩(encode)된다. 프로그램 코드는 프로세서에 의해 실행되며, 인공 신경망의 제1 계층에서 입력으로서 비디오를 수신하기 위한 코드를 포함한다. 프로그램 코드는 또한, 제1 라벨을 생성하기 위해 비디오의 제1 프레임을 프로세싱하기 위한 코드를 포함한다. 더욱이, 프로그램 코드는 제1 라벨에 기초하여 인공 신경망을 업데이트하기 위한 코드를 포함한다. 인공 신경망의 업데이트는 비디오의 제2 프레임을 동시에 프로세싱하면서 수행된다.
[0011] 본 개시내용의 양상에서, 비디오를 프로세싱하기 위한 방법이 제공된다. 이 방법은 제1 인공 신경망 및 제2 인공 신경망의 제1 계층에서 입력으로서 비디오를 수신하는 단계를 포함한다. 제1 인공 신경망은 제2 인공 신경망보다 더 적은 채널(channel)들을 갖는다. 이 방법은 또한, 제1 라벨을 생성하기 위해 제1 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하는 단계를 포함한다. 제1 인공 신경망은 비디오의 제1 프레임으로부터 추출된 중간 특징들을 제2 인공 신경망에 공급한다. 추가로, 이 방법은 중간 특징들 및 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 제2 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하는 단계를 포함한다. 추가로, 이 방법은 제2 인공 신경망이 비디오의 제2 프레임을 동시에 프로세싱하는 동안 제1 라벨에 기초하여 제1 인공 신경망을 업데이트하는 단계를 포함한다.
[0012] 본 개시내용의 양상에서, 비디오를 프로세싱하기 위한 장치가 제공된다. 이 장치는 메모리 및 메모리에 결합된 하나 이상의 프로세서들을 포함한다. 프로세서(들)는 제1 인공 신경망 및 제2 인공 신경망의 제1 계층에서 입력으로서 비디오를 수신하도록 구성된다. 제1 인공 신경망은 제2 인공 신경망보다 더 적은 채널들을 갖는다. 프로세서(들)는 또한, 제1 라벨을 생성하기 위해 제1 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하도록 구성된다. 제1 인공 신경망은 비디오의 제1 프레임으로부터 추출된 중간 특징들을 제2 인공 신경망에 공급한다. 추가로, 프로세서(들)는 중간 특징들 및 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 제2 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하도록 구성된다. 추가로, 프로세서(들)는 제2 인공 신경망이 비디오의 제2 프레임을 동시에 프로세싱하는 동안 제1 라벨에 기초하여 제1 인공 신경망을 업데이트하도록 구성된다.
[0013] 본 개시내용의 양상에서, 비디오를 프로세싱하기 위한 장치가 제공된다. 이 장치는 제1 인공 신경망 및 제2 인공 신경망의 제1 계층에서 입력으로서 비디오를 수신하기 위한 수단을 포함한다. 제1 인공 신경망은 제2 인공 신경망보다 더 적은 채널들을 갖는다. 이 장치는 또한, 제1 라벨을 생성하기 위해 제1 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하기 위한 수단을 포함한다. 제1 인공 신경망은 비디오의 제1 프레임으로부터 추출된 중간 특징들을 제2 인공 신경망에 공급한다. 추가로, 이 장치는 중간 특징들 및 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 제2 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하기 위한 수단을 포함한다. 추가로, 이 장치는 제2 인공 신경망이 비디오의 제2 프레임을 동시에 프로세싱하는 동안 제1 라벨에 기초하여 제1 인공 신경망을 업데이트하기 위한 수단을 포함한다.
[0014] 본 개시내용의 양상에서, 비-일시적 컴퓨터 판독 가능 매체가 제공된다. 컴퓨터 판독 가능 매체 상에는 비디오를 프로세싱하기 위한 프로그램 코드가 인코딩된다. 프로그램 코드는 프로세서에 의해 실행되며, 제1 인공 신경망 및 제2 인공 신경망의 제1 계층에서 입력으로서 비디오를 수신하기 위한 코드를 포함한다. 제1 인공 신경망은 제2 인공 신경망보다 더 적은 채널들을 갖는다. 프로그램 코드는 또한, 제1 라벨을 생성하기 위해 제1 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하기 위한 코드를 포함한다. 제1 인공 신경망은 비디오의 제1 프레임으로부터 추출된 중간 특징들을 제2 인공 신경망에 공급한다. 추가로, 프로그램 코드는 중간 특징들 및 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 제2 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하기 위한 코드를 포함한다. 더욱이, 프로그램 코드는 제2 인공 신경망이 비디오의 제2 프레임을 동시에 프로세싱하는 동안 제1 라벨에 기초하여 제1 인공 신경망을 업데이트하기 위한 코드를 포함한다.
[0015] 아래에서는 본 개시내용의 추가적인 특징들 및 이점들이 설명될 것이다. 본 개시내용은 본 개시내용의 동일한 목적들을 수행하기 위해 다른 구조들을 변형 또는 설계하기 위한 기초로 용이하게 활용될 수 있다고 당해 기술분야에 통상의 지식을 가진 자들에 의해 인식되어야 한다. 이러한 대등한 구성들이 첨부된 청구항들에 제시된 본 개시내용의 교시들을 벗어나지 않는다고 당해 기술분야에서 통상의 지식을 가진 자들에 의해 또한 인식되어야 한다. 그 구조 및 동작 방법 둘 다에 관해, 본 개시내용의 특징들로 여겨지는 신규한 특징들은 추가적인 목적들 및 이점들과 함께, 첨부 도면들과 관련하여 고려될 때 다음의 설명으로부터 더 잘 이해될 것이다. 그러나 도면들 각각은 예시 및 설명의 목적으로만 제공되며, 본 개시내용의 한정들의 정의로서 의도되는 것은 아니라고 명백히 이해되어야 한다.
[0016] 본 개시내용의 특징들, 본질 및 이점들은 도면들과 함께 받아들여질 때 아래 제시되는 상세한 설명으로부터 보다 명백해질 것이며, 도면들에서는 비슷한 참조 부호들이 전체에 걸쳐 대응하게 식별한다.
[0017] 도 1은 본 개시내용의 특정 양상들에 따른, 범용 프로세서를 포함하는 SoC(system-on-a-chip)를 사용하는 신경망의 예시적인 구현을 예시한다.
[0018] 도 2a, 도 2b 및 도 2c는 본 개시내용의 양상들에 따른 신경망을 예시하는 도면들이다.
[0019] 도 2d는 본 개시내용의 양상들에 따른, 예시적인 DCN(deep convolutional network)을 예시하는 도면이다.
[0020] 도 3은 본 개시내용의 양상들에 따른 예시적인 DCN(deep convolutional network)을 예시하는 블록도이다.
[0021] 도 4는 AI(artificial intelligence) 기능들을 모듈화(modularize)할 수 있는 예시적인 소프트웨어 아키텍처를 예시하는 블록도이다.
[0022] 도 5는 본 개시내용의 양상들에 따른, 비디오를 프로세싱하기 위한 예시적인 아키텍처를 예시하는 블록도이다.
[0023] 도 6은 본 개시내용의 양상들에 따른, 비디오를 프로세싱하기 위한 예시적인 아키텍처를 예시하는 블록도이다.
[0024] 도 7은 본 개시내용의 양상들에 따른, 비디오를 프로세싱하기 위한 예시적인 아키텍처를 예시하는 블록도이다.
[0025] 도 8은 본 개시내용의 양상들에 따른, 비디오를 프로세싱하기 위한 예시적인 아키텍처를 예시하는 보다 상세한 도면이다.
[0026] 도 9 및 도 10은 본 개시내용의 양상들에 따른, 비디오를 프로세싱하기 위한 방법들을 예시하는 흐름도들이다.
[0027] 첨부 도면들과 관련하여 아래에 제시되는 상세한 설명은 다양한 구성들의 설명으로 의도되며 설명되는 개념들이 실시될 수 있는 유일한 구성들만을 나타내는 것으로 의도되는 것은 아니다. 상세한 설명은 다양한 개념들의 완전한 이해를 제공할 목적으로 특정 세부사항들을 포함한다. 그러나 이러한 개념들은 이러한 특정 세부사항들 없이 실시될 수 있음이 당해 기술분야에서 통상의 지식을 가진 자들에게 명백할 것이다. 일부 사례들에서는, 이러한 개념들을 불명료하게 하는 것을 피하기 위해, 잘 알려진 구조들 및 컴포넌트들은 블록도 형태로 도시된다.
[0028] 교시들을 기반으로, 당해 기술분야에서 통상의 지식을 가진 자는 본 개시내용의 범위가, 본 개시내용의 임의의 다른 양상과 관계없이 구현되든 아니면 그와 조합되든, 본 개시내용의 임의의 양상을 커버하는 것으로 의도된다고 인식해야 한다. 예를 들어, 제시되는 임의의 수의 양상들을 사용하여 장치가 구현될 수 있거나 방법이 실시될 수 있다. 또한, 본 개시내용의 범위는 제시되는 본 개시내용의 다양한 양상들에 부가하여 또는 그 외에 다른 구조, 기능, 또는 구조와 기능을 사용하여 실시되는 그러한 장치 또는 방법을 커버하는 것으로 의도된다. 개시되는 개시내용의 임의의 양상은 청구항의 하나 이상의 엘리먼트(element)들에 의해 구현될 수 있다고 이해되어야 한다.
[0029] "예시적인"이라는 단어는 "일례, 실례 또는 예시로서의 역할"을 의미하는 데 사용된다. "예시적인" 것으로서 설명된 어떠한 양상도 반드시 다른 양상들에 비해 선호되거나 유리한 것으로 해석되는 것은 아니다.
[0030] 특정 양상들이 설명되지만, 이러한 양상들의 많은 변형들 및 치환들이 본 개시내용의 범위 내에 포함된다. 선호되는 양상들의 일부 이익들 및 이점들이 언급되지만, 본 개시내용의 범위는 특정 이익들, 용도들 또는 목적들에 국한된 것으로 의도되는 것은 아니다. 그보다, 본 개시내용의 양상들은 다른 기술들, 시스템 구성들, 네트워크들 및 프로토콜들에 폭넓게 적용될 수 있는 것으로 의도되며, 이들 중 일부는 선호되는 양상들에 대한 하기의 설명 및 도면들에서 예로서 설명된다. 상세한 설명 및 도면들은 첨부된 청구항들 및 그 등가물들에 의해 정의되는 본 개시내용의 범위를 한정하기보다는 단지 본 개시내용의 실례가 될 뿐이다.
[0031] 신경망들은 복잡한 문제들을 해결하는 데 사용될 수 있지만, 솔루션을 생성하기 위해 수행될 수 있는 계산들의 수 및 네트워크 크기가 방대할 수 있기 때문에, 네트워크가 작업을 완료하는 시간이 길 수 있다. 더욱이, 이러한 작업들은 제한된 계산 능력을 가질 수 있는 모바일 디바이스들 상에서 수행될 수 있기 때문에, 심층 신경망들의 계산 비용들이 문제가 될 수 있다.
[0032] 종래의 심층 학습 기반 비디오 프로세싱 방법들 또는 모델들은 시간이 지남에 따라 일관되지 않은 출력들을 생성할 수 있다. 일부 경우들에서, 불일치는 디스플레이에서의 플리커 또는 다른 오정렬들의 형태로 관찰될 수 있다. 시간상 일관되지 않은 출력들(예컨대, 플리커링)은 사용자의 경험 및 즐거움뿐만 아니라 시스템 안정성을 저하시킬 수 있다.
[0033] 시간상 일관되지 않은 출력들(예컨대, 예측들)에 대한 하나의 이유는 예를 들어, 출력이 약 0.5일 때, 신경망이 불확실한 예측들을 제공할 수 있다는 것이다 그러한 경우, 신경망은 임의의 방식으로 예측들을 생성할 수 있다. 이에 따라, 비디오 스트림의 (더욱 정확하게 세그먼트화된 프레임들 사이에 있는) 일부 프레임들에 대해 세그먼트화 정확도가 상당히 떨어질 수 있다. 이에 따라, 신경망에 의해 프로세싱된 유사한 보는 이미지 영역들은 상이한 예측들을 야기할 수 있다. 게다가, 세그먼트화 정확도의 감소는 성능에 부정적인 영향을 미칠 수 있다.
[0034] 이 문제를 해결하기 위해, 본 개시내용의 양상들은 세그먼트화 모델의 (예컨대, 테스트 시간의) 온라인 적응에 관한 것이다. 비디오를 프로세싱하기 위한 세그먼트화 네트워크가 비디오를 프로세싱하는 동안 업데이트될 수 있다. 일부 양상들에서, 세그먼트화 네트워크가 비디오를 계속 프로세싱하는 동안 네트워크 업데이트들을 수행하도록 보조 네트워크가 세그먼트화 네트워크와 통합될 수 있다.
[0035] 도 1은 인공 신경망(예컨대, 종단 간 신경망)을 사용한 비디오 프로세싱을 위해 구성된 CPU(central processing unit)(102) 또는 다중 코어(multi-core) CPU를 포함할 수 있는 SoC(system-on-a-chip)(100)의 예시적인 구현을 예시한다. 변수들(예컨대, 신경 신호들 및 시냅스(synaptic) 가중치들), 계산 디바이스와 연관된 시스템 파라미터(parameter)들(예컨대, 가중치들을 갖는 신경망), 지연들, 주파수 빈(bin) 정보 및 작업 정보가 NPU(neural processing unit)(108)와 연관된 메모리 블록에, CPU(102)와 연관된 메모리 블록에, GPU(graphics processing unit)(104)와 연관된 메모리 블록에, DSP(digital signal processor)(106)와 연관된 메모리 블록에, 메모리 블록(118)에 저장될 수 있거나, 또는 다수의 블록들에 걸쳐 분산될 수 있다. CPU(102)에서 실행되는 명령들은 CPU(102)와 연관된 프로그램 메모리로부터 로딩(load)될 수 있거나 또는 메모리 블록(118)으로부터 로딩될 수 있다.
[0036] SoC(100)는 또한 GPU(104), DSP(106), 5G(fifth generation) 접속, 4G LTE(fourth generation long term evolution) 접속, Wi-Fi 접속, USB 접속, 블루투스(Bluetooth) 접속 등을 포함할 수 있는 접속 블록(110), 및 예를 들어, 제스처(gesture)들을 검출 및 인식할 수 있는 멀티미디어(multimedia) 프로세서(112)와 같은 특정 기능들에 맞춤화된 추가적인 프로세싱 블록들을 포함할 수 있다. 일 구현에서, NPU(108)는 CPU(102), DSP(106) 및/또는 GPU(104)에 구현된다. SoC(100)는 또한 센서 프로세서(114), ISP(image signal processor)들(116) 및/또는 내비게이션 모듈(navigation module)(120)을 포함할 수 있으며, 이는 글로벌 포지셔닝 시스템(global positioning system)을 포함할 수 있다.
[0037] SoC(100)는 ARM 명령 세트에 기초할 수 있다. 본 개시내용의 양상에서, 범용 프로세서(102)에 로딩된 명령들은 인공 신경망(ANN)의 제1 계층에서 입력으로서 비디오를 수신하기 위한 코드를 포함할 수 있다. 범용 프로세서(102)는 또한, 제1 라벨을 생성하기 위해 비디오의 제1 프레임을 프로세싱하기 위한 코드를 포함할 수 있다. 범용 프로세서(102)는, 제1 라벨에 기초하여 인공 신경망을 업데이트하기 위한 코드를 더 포함할 수 있다. 업데이트는 비디오의 제2 프레임을 동시에 프로세싱하면서 수행된다.
[0038] 본 개시내용의 양상에서, 범용 프로세서(102)에 로딩된 명령들은 제1 인공 신경망(ANN) 및 제2 인공 신경망의 제1 계층에서 입력으로서 비디오를 수신하기 위한 코드를 포함할 수 있다. 제1 인공 신경망은 제2 인공 신경망보다 더 적은 채널들을 갖는다. 범용 프로세서(102)는 또한, 제1 라벨을 생성하기 위해 제1 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하기 위한 코드를 포함할 수 있다. 제1 인공 신경망은 비디오의 제1 프레임으로부터 추출된 중간 특징들을 제2 인공 신경망에 공급한다. 범용 프로세서(102)는, 중간 특징들 및 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 제2 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하기 위한 코드를 더 포함할 수 있다. 범용 프로세서(102)는 추가로, 제2 인공 신경망이 비디오의 제2 프레임을 동시에 프로세싱하는 동안 제1 라벨에 기초하여 제1 인공 신경망을 업데이트하기 위한 코드를 포함할 수 있다.
[0039] 심층 학습 아키텍처들은 각각의 계층에서 연속적으로 더 높은 추상화 레벨들로 입력들을 표현하도록 학습함으로써, 입력 데이터의 유용한 특징 표현을 구축함으로써 객체 인식 작업을 수행할 수 있다. 이런 식으로, 심층 학습은 종래의 기계 학습의 주요 병목 현상을 해결한다. 심층 학습의 도래 전에, 객체 인식 문제에 대한 기계 학습 접근 방식은 아마도, 피상적인(shallow) 분류기와 조합하여 인간 엔지니어링된(human engineered) 특징들에 크게 의존했을 수 있다. 피상적인 분류기는 예를 들어, 2-클래스(two-class) 선형 분류기일 수 있으며, 여기서는 특징 벡터(vector) 성분들의 가중 합이 임계치와 비교되어 입력이 어느 클래스에 속하는지를 예측할 수 있다. 인간 엔지니어링된 특징들은 도메인(domain) 전문 지식을 가진 엔지니어들에 의해 특정 문제 도메인에 맞춰진 템플릿(template)들 또는 커널(kernel)들일 수 있다. 대조적으로, 심층 학습 아키텍처들은 인간 엔지니어가 설계할 수 있는 것과 유사한 특징들을 나타내도록 학습할 수 있는데, 그러나 훈련을 통해 학습할 수 있다. 더욱이, 심층 네트워크는 인간이 고려하지 않았을 수 있는 새로운 타입들의 특징들을 나타내고 인식하도록 학습할 수 있다.
[0040] 심층 학습 아키텍처는 특징들의 계층을 학습할 수 있다. 예를 들어, 시각 데이터가 제시된다면, 제1 계층은 입력 스트림에서 에지(edge)들과 같은 비교적 단순한 특징들을 인식하도록 학습할 수 있다. 다른 예에서, 청각 데이터가 제시된다면, 제1 계층은 특정 주파수들에서 스펙트럼 전력을 인식하도록 학습할 수 있다. 제2 계층은, 제1 계층의 출력을 입력으로 하여, 특징들의 조합들, 이를테면 시각 데이터에 대한 단순한 형상들 또는 청각 데이터에 대한 사운드들의 조합들을 인식하도록 학습할 수 있다. 예를 들면, 상위 계층들은 시각 데이터로 복잡한 형상들을 또는 청각 데이터로 단어들을 표현하도록 학습할 수 있다. 더 상위 계층들은 일반적인 시각 객체들 또는 발화된 어구(spoken phrase)들을 인식하도록 학습할 수 있다.
[0041] 심층 학습 아키텍처들은 자연스러운 계층 구조를 갖는 문제들에 적용될 때 특히 잘 수행할 수 있다. 예를 들어, 모터 구동 차량들의 분류는 바퀴들, 앞유리들 및 다른 특징들을 인식하도록 첫 번째 학습으로부터 이익을 얻을 수 있다. 이러한 특징들은 자동차들, 트럭들 및 비행기들을 인식하기 위해 상이한 방식들로 상위 계층들에서 조합될 수 있다.
[0042] 신경망들은 다양한 연결 패턴들로 설계될 수 있다. 피드-포워드 네트워크들에서, 정보는 하위 계층에서 상위 계층으로 전달되며, 주어진 계층의 각각의 뉴런은 상위 계층들의 뉴런들과 통신한다. 위에서 설명된 바와 같이, 계층적 표현은 피드-포워드 네트워크의 연속적인 계층들에 구축될 수 있다. 신경망들은 또한 재귀 또는 피드백(feedback)(하향식으로도 또한 불림) 연결들을 가질 수 있다. 재귀 연결에서, 주어진 계층의 뉴런으로부터의 출력은 동일 계층의 다른 뉴런으로 통신될 수 있다. 재귀 아키텍처는 순차적으로 신경망에 전달되는 입력 데이터 청크들 중 하나 초과의 입력 데이터 청크들에 걸쳐 있는 패턴들을 인식하는 데 도움이 될 수 있다. 주어진 계층의 뉴런으로부터 하위 계층의 뉴런으로의 연결은 피드백(또는 하향식) 연결로 불린다. 많은 피드백 연결들을 갖는 네트워크는 상위 레벨 개념의 인식이 입력의 특정 하위 레벨 특징들을 구별하는 것을 도울 때 도움이 될 수 있다.
[0043] 신경망의 계층들 간의 연결들은 완전히 연결되거나 국소적으로 연결될 수 있다. 도 2a는 완전히 연결된 신경망(202)의 예를 예시한다. 완전히 연결된 신경망(202)에서, 제1 계층의 뉴런이 제2 계층의 모든 각각의 뉴런에 자신의 출력을 통신할 수 있어, 제2 계층의 각각의 뉴런이 제1 계층의 모든 각각의 뉴런으로부터 입력을 수신할 것이다. 도 2b는 국소적으로 연결된 신경망(204)의 예를 예시한다. 국소적으로 연결된 신경망(204)에서, 제1 계층의 뉴런은 제2 계층의 제한된 수의 뉴런들에 연결될 수 있다. 보다 일반적으로, 국소적으로 연결된 신경망(204)의 국소적으로 연결된 계층은, 계층의 각각의 뉴런이 동일하거나 유사한 연결 패턴을 갖지만, 상이한 값들(예컨대, 210, 212, 214, 216)을 가질 수 있는 연결 강도들을 갖도록 구성될 수 있다. 국소적으로 연결된 연결 패턴은 상위 계층에서 공간적으로 별개인 수용 필드들을 발생시킬 수 있는데, 이는 주어진 구역의 상위 계층 뉴런들이 네트워크에 대한 전체 입력의 제한된 부분의 특성들에 대한 훈련을 통해 튜닝(tune)되는 입력들을 수신할 수 있기 때문이다.
[0044] 국소적으로 연결된 신경망의 일례는 컨볼루션 신경망이다. 도 2c는 컨볼루션 신경망(206)의 예를 예시한다. 컨볼루션 신경망(206)은 제2 계층의 각각의 뉴런에 대한 입력들과 연관된 연결 강도들이 공유되도록(예컨대, 208) 구성될 수 있다. 컨볼루션 신경망들은 입력들의 공간적 위치가 의미 있는 문제들에 매우 적합할 수 있다.
[0045] 컨볼루션 신경망의 하나의 타입은 DCN(deep convolutional network)이다. 도 2d는 자동차 장착 카메라와 같은 이미지 캡처(capturing) 디바이스(230)로부터 입력된 이미지(226)로부터 시각적 특징들을 인식하도록 설계된 DCN(200)의 상세한 예를 예시한다. 현재 예의 DCN(200)은 교통 표지판들 및 교통 표지판에 제공된 숫자를 식별하도록 훈련될 수 있다. 물론, DCN(200)은 차선 표시들을 식별하거나 신호등들을 식별하는 것과 같은 다른 작업들을 위해 훈련될 수 있다.
[0046] DCN(200)은 지도 학습으로 훈련될 수 있다. 훈련 동안, DCN(200)에는 속도 제한 표지판의 이미지(226)와 같은 이미지가 제시될 수 있고, 이어서 포워드 패스(forward pass)가 컴퓨팅되어 출력(222)을 생성할 수 있다. DCN(200)은 특징 추출 섹션(section) 및 분류 섹션을 포함할 수 있다. 이미지(226)를 수신할 때, 컨볼루션 계층(232)은 이미지(226)에 (도시되지 않은) 컨볼루션 커널들을 적용하여 제1 세트의 특징 맵(map)들(218)을 생성할 수 있다. 예로서, 컨볼루션 계층(232)에 대한 컨볼루션 커널은 28×28 특징 맵들을 생성하는 5×5 커널일 수 있다. 본 예에서, 제1 세트의 특징 맵들(218)에서 4 개의 상이한 특징 맵들이 생성되기 때문에, 4 개의 상이한 컨볼루션 커널이 컨볼루션 계층(232)에서 이미지(226)에 적용되었다. 컨볼루션 커널들은 또한 필터들 또는 컨볼루션 필터들로 지칭될 수 있다.
[0047] 제1 세트의 특징 맵들(218)은 (도시되지 않은) 최대 풀링(pooling) 계층에 의해 서브샘플링(subsample)되어 제2 세트의 특징 맵들(220)을 생성할 수 있다. 최대 풀링 계층은 제1 세트의 특징 맵들(218)의 크기를 감소시킨다. 즉, 14×14와 같은 제2 세트의 특징 맵(220)의 크기는 28×28과 같은 제1 세트의 특징 맵들(218)의 크기보다 더 작다. 감소된 크기는 메모리 소비를 줄이면서 후속 계층에 유사한 정보를 제공한다. 제2 세트의 특징 맵들(220)은 (도시되지 않은) 하나 이상의 후속 컨볼루션 계층들을 통해 추가로 컨볼브(convolve)되어 (도시되지 않은) 하나 이상의 후속 세트들의 특징 맵들을 생성할 수 있다.
[0048] 도 2d의 예에서, 제2 세트의 특징 맵들(220)은 컨볼브되어 제1 특징 벡터(224)를 생성한다. 더욱이, 제1 특징 벡터(224)는 추가로 컨볼브되어 제2 특징 벡터(228)를 생성한다. 제2 특징 벡터(228)의 각각의 특징은 이미지(226)의 가능한 특징에 대응하는 숫자, 이를테면 "표지판", "60" 및 "100"을 포함할 수 있다. (도시되지 않은) 소프트맥스(softmax) 함수가 제2 특징 벡터(228)의 숫자들을 확률로 변환할 수 있다. 이에 따라, DCN(200)의 출력(222)은 이미지(226)가 하나 이상의 특징들을 포함할 확률이다.
[0049] 본 예에서, 출력(222)에서 "표지판" 및 "60"에 대한 확률들은 출력(222)의 다른 것들, 이를테면 "30," "40," "50," "70," "80," "90" 및 "100"의 확률들보다 더 높다. 훈련 전에는, DCN(200)에 의해 생성되는 출력(222)은 부정확할 가능성이 있다. 따라서 출력(222)과 목표 출력 간의 오차가 계산될 수 있다. 목표 출력은 이미지(226)의 지상 실측 정보(ground truth)(예컨대, "표지판" 및 "60")이다. 이어서, DCN(200)의 가중치들은 DCN(200)의 출력(222)이 목표 출력과 보다 근접하게 정렬되도록 조정될 수 있다.
[0050] 가중치들을 조정하기 위해, 학습 알고리즘은 가중치들에 대한 기울기 벡터를 컴퓨팅할 수 있다. 기울기는 가중치가 조정된다면 오차가 증가 또는 감소할 양을 표시할 수 있다. 최상위 계층에서, 기울기는 끝에서 두 번째 계층의 활성화된 뉴런과 출력 계층의 뉴런을 연결하는 가중치의 값에 직접 대응할 수 있다. 하위 계층에서, 기울기는 가중치들의 값 및 상위 계층들의 컴퓨팅된 오차 기울기들에 좌우될 수 있다. 이어서, 오차를 줄이기 위해 가중치들이 조정될 수 있다. 가중치들을 조정하는 이러한 방식은 신경망을 통한 "백워드 패스(backward pass)"를 수반하므로 "역전파"로 지칭될 수 있다.
[0051] 실제로, 가중치들의 오차 기울기가 적은 수의 예들에 걸쳐 계산될 수 있어, 계산된 기울기는 실제 오차 기울기에 근사한다. 이러한 근사화 방법은 확률적 기울기 강하(stochastic gradient descent)로 지칭될 수 있다. 확률적 기울기 강하는, 전체 시스템의 달성 가능한 오차율이 감소하는 것을 중단할 때까지 또는 오차율이 목표 레벨에 도달할 때까지 반복될 수 있다. 학습 후에는, DCN에 새로운 이미지가 제시될 수 있고, 네트워크를 통한 포워드 패스가 DCN의 추론 또는 예측으로 간주될 수 있는 출력(222)을 산출할 수 있다.
[0052] DBN(deep belief network)들은 은닉 노드(node)들의 다수의 계층들을 포함하는 확률 모델들이다. DBN들은 훈련 데이터 세트들의 계층적 표현을 추출하는 데 사용될 수 있다. DBN은 RBM(Restricted Boltzmann Machine)들의 계층들을 적층함으로써 획득될 수 있다. RBM은 한 세트의 입력들에 대한 확률 분포를 학습할 수 있는 하나의 타입의 인공 신경망이다. RBM들은 각각의 입력이 카테고리화(categorize)되어야 하는 클래스에 관한 정보가 없을 때 확률 분포를 학습할 수 있기 때문에, RBM들은 종종 비지도 학습(unsupervised learning)에 사용된다. 하이브리드(hybrid) 비지도 및 지도 패러다임(paradigm)을 사용하면, DBN의 최하위 RBM들은 비지도 방식으로 훈련될 수 있고 특징 추출기들로서 기능할 수 있으며, 최상위 RBM은 (목표 클래스들 및 이전 계층으로부터의 입력들의 공동 분포에 대해) 지도 방식으로 훈련될 수 있고 분류기로서 기능할 수 있다.
[0053] DCN(deep convolutional network)은 컨볼루션 네트워크들 중 추가적인 풀링 및 정규화 계층들로 구성된 네트워크들이다. DCN들은 많은 작업들에 대해 최첨단 성능을 달성하였다. DCN들은 지도 학습을 사용하여 훈련될 수 있는데, 지도 학습에서는 많은 표본들에 대한 입력 및 출력 목표들 모두가 알려져 있고 기울기 강하법들의 사용에 의해 네트워크의 가중치들을 수정하는 데 사용된다.
[0054] DCN들은 피드-포워드 네트워크들일 수 있다. 추가로, 위에서 설명된 바와 같이, DCN의 제1 계층의 뉴런으로부터 다음 상위 계층의 뉴런들의 그룹으로의 연결들은 제1 계층의 뉴런들 간에 공유된다. DCN들의 피드-포워드 및 공유 연결들은 빠른 프로세싱을 위해 활용될 수 있다. DCN의 계산 부담은 예를 들어, 재귀 또는 피드백 연결들을 포함하는 유사한 크기의 신경망의 계산 부담보다 훨씬 더 적을 수 있다.
[0055] 컨볼루션 네트워크의 각각의 계층의 프로세싱은 공간적으로 불변 템플릿 또는 기저 투사(basis projection)로 간주될 수 있다. 입력이 컬러 이미지의 적색, 녹색 및 청색 채널들과 같은 다수의 채널들로 먼저 분해된다면, 그 입력에 대해 훈련된 컨볼루션 네트워크는 이미지의 축들을 따라 2 개의 공간 차원들 및 컬러 정보를 캡처하는 제3 차원을 갖는 3차원으로 간주될 수 있다. 컨볼루션 연결들의 출력들이 후속 계층들에서 특징 맵을 형성하는 것으로 고려될 수 있는데, 특징 맵(예컨대, 220)의 각각의 엘리먼트는 이전 계층(예컨대, 특징 맵들(218))의 다양한 뉴런들로부터 그리고 다수의 채널들 각각으로부터 입력을 수신한다. 특징 맵의 값들은 비선형성, 이를테면 max(0, x)인 교정(rectification)을 통해 추가로 프로세싱될 수 있다. 인접한 뉴런들로부터의 값들은 추가로 풀링될 수 있는데, 이는 다운샘플링(down-sampling)에 대응하고, 이러한 값들은 추가적인 국소 불변성 및 차원 감소를 제공할 수 있다. 백색화에 대응하는 정규화가 또한, 특징 맵에서 뉴런들 사이의 측면 억제를 통해 적용될 수 있다.
[0056] 심층 학습 아키텍처들의 성능은 더 많은 라벨링된 데이터 포인트들이 이용 가능해짐에 따라 또는 계산 능력이 증가함에 따라 증가할 수 있다. 현대의 심층 신경망들은, 단지 15년 전에 통상적인 연구자들이 이용 가능했던 것보다 수천 배 더 큰 컴퓨팅 자원들로 일상적으로 훈련된다. 새로운 아키텍처들 및 훈련 패러다임들은 심층 학습의 성능을 더 향상시킬 수 있다. 교정된 선형 유닛들은 기울기들의 소실로 알려진 훈련 문제를 감소시킬 수 있다. 새로운 훈련 기법들은 과다 적합(over-fitting)을 감소시킬 수 있고, 따라서 더 큰 모델들이 더 나은 일반화를 달성하는 것을 가능하게 할 수 있다. 캡슐화(encapsulation) 기법들은 주어진 수용 필드에서 데이터를 추상화하고 전체 성능을 더 향상시킬 수 있다.
[0057] 도 3은 심층 컨볼루션 네트워크(350)를 예시하는 블록도이다. 심층 컨볼루션 네트워크(350)는 연결 및 가중치 공유에 기반하여 다수의 상이한 타입들의 계층들을 포함할 수 있다. 도 3에 도시된 바와 같이, 심층 컨볼루션 네트워크(350)는 컨볼루션 블록들(354A, 354B)을 포함한다. 컨볼루션 블록들(354A, 354B) 각각은 컨볼루션 계층(CONV)(356), 정규화 계층(LNorm)(358) 및 최대 풀링 계층(MAX POOL)(360)으로 구성될 수 있다.
[0058] 컨볼루션 계층(356)은 입력 데이터에 적용되어 특징 맵을 생성할 수 있는 하나 이상의 컨볼루션 필터들을 포함할 수 있다. 컨볼루션 블록들(354A, 354B) 중 2 개만이 도시되지만, 본 개시내용은 그렇게 제한되지 않으며, 대신에 설계 선호도에 따라 임의의 수의 컨볼루션 블록들(354A, 354B)이 심층 컨볼루션 네트워크(350)에 포함될 수 있다. 정규화 계층(358)은 컨볼루션 필터들의 출력을 정규화할 수 있다. 예를 들어, 정규화 계층(358)은 백색화 또는 측면 억제를 제공할 수 있다. 최대 풀링 계층(360)은 국소 불변성 및 차원 감소를 위해 공간에 대한 다운샘플링 집성을 제공할 수 있다.
[0059] 예를 들어, 심층 컨볼루션 네트워크의 병렬 필터 뱅크(bank)들은 SoC(100)의 CPU(102) 또는 GPU(104)에 로딩되어 높은 성능 및 낮은 전력 소비를 달성할 수 있다. 대안적인 실시예들에서, 병렬 필터 뱅크들은 SoC(100)의 DSP(106) 또는 ISP(116) 상에 로딩될 수 있다. 추가로, 심층 컨볼루션 네트워크(350)는 SoC(100) 상에 존재할 수 있는 다른 프로세싱 블록들, 이를테면 각각 센서들 및 내비게이션에 전용인 센서 프로세서(114) 및 내비게이션 모듈(120)에 액세스할 수 있다.
[0060] 심층 컨볼루션 네트워크(350)는 또한 하나 이상의 완전히 연결된 계층들(362)(FC1, FC2)을 포함할 수 있다. 심층 컨볼루션 네트워크(350)는 LR(logistic regression) 계층(364)을 더 포함할 수 있다. 심층 컨볼루션 네트워크(350)의 각각의 계층(356, 358, 360, 362, 364) 간에는 업데이트될 (도시되지 않은) 가중치들이 있다. 계층들(예컨대, 356, 358, 360, 362, 364) 각각의 출력은 컨볼루션 블록들 중 첫 번째 컨볼루션 블록(354A)에서 공급되는 입력 데이터(352)(예컨대, 이미지들, 오디오, 비디오, 센서 데이터 및/또는 다른 입력 데이터)로부터의 계층적 특징 표현들을 학습하기 위해 심층 컨볼루션 네트워크(350)의 계층들(예컨대, 356, 358, 360, 362, 364) 중 후속 계층의 입력으로서 기능할 수 있다. 심층 컨볼루션 네트워크(350)의 출력은 입력 데이터(352)에 대한 분류 스코어(score)(366)이다. 분류 스코어(366)는 한 세트의 확률들일 수 있으며, 여기서 각각의 확률은 입력 데이터가 한 세트의 특징들로부터의 특징을 포함할 확률이다.
[0061] 도 4는 AI(artificial intelligence) 기능들을 모듈화할 수 있는 예시적인 소프트웨어 아키텍처(400)를 예시하는 블록도이다. 아키텍처를 사용하여, SoC(system-on-a-chip)(420)의 다양한 프로세싱 블록들(예를 들어, CPU(422), DSP(424), GPU(426) 및/또는 NPU(428))로 하여금 본 개시내용의 양상들에 따라, AI 애플리케이션(402)에 대한 훈련 후 양자화에 대해 개시된 바와 같이 적응형 라운딩(adaptive rounding)을 지원하게 할 수 있는 애플리케이션들이 설계될 수 있다.
[0062] AI 애플리케이션(402)은 예를 들어, 디바이스가 현재 동작하는 위치를 표시하는 장면의 검출 및 인식을 제공할 수 있는 사용자 공간(404)에 정의된 기능들을 호출하도록 구성될 수 있다. AI 애플리케이션(402)은 예를 들어, 인식된 장면이 사무실인지, 강의실인지, 식당인지 또는 호수와 같은 실외 환경인지에 따라 마이크로폰(microphone) 및 카메라를 상이하게 구성할 수 있다. AI 애플리케이션(402)은 AI 함수 API(application programming interface)(406)에서 정의된 라이브러리(library)와 연관된 컴파일(compile)된 프로그램 코드에 대한 요청을 할 수 있다. 이러한 요청은 궁극적으로, 예를 들어 비디오 및 포지셔닝 데이터에 기초하여 추론 응답을 제공하도록 구성된 심층 신경망의 출력에 의존할 수 있다.
[0063] 런타임 프레임워크(runtime framework)의 컴파일링된 코드일 수 있는 런타임 엔진(engine)(408)은 AI 애플리케이션(402)에 추가로 액세스 가능할 수 있다. AI 애플리케이션(402)은 런타임 엔진으로 하여금, 예를 들어 특정 시간 간격으로 추론을 요청하게 하거나 또는 애플리케이션의 사용자 인터페이스(interface)에 의해 검출된 이벤트(event)에 의해 트리거(trigger)되게 할 수 있다. 추론 응답을 제공하게 될 때, 런타임 엔진은 결국, SoC(420) 상에서 실행되는 커널(412)과 같은 OS(operating system) 공간 내의 운영 시스템에 신호를 전송할 수 있다. 운영 시스템은 결국, CPU(422), DSP(424), GPU(426), NPU(428), 또는 이들의 어떤 조합 상에서 양자화의 연속 완화가 수행되게 할 수 있다. CPU(422)는 운영 시스템에 의해 직접 액세스될 수 있고, 다른 프로세싱 블록들은 각각 DSP(424), GPU(426) 또는 NPU(428)에 대한 드라이버(414, 416 또는 418)와 같은 드라이버를 통해 액세스될 수 있다. 예시적인 예에서, 심층 신경망은 CPU(422), DSP(424) 및 GPU(426)와 같은 프로세싱 블록들의 조합 상에서 실행되도록 구성될 수 있거나, 또는 NPU(428) 상에서 실행될 수 있다.
[0064] 애플리케이션(402)(예컨대, AI 애플리케이션)은 예를 들어, 디바이스가 현재 동작하는 위치를 표시하는 장면의 검출 및 인식을 제공할 수 있는 사용자 공간(404)에 정의된 기능들을 호출하도록 구성될 수 있다. 애플리케이션(402)은 예를 들어, 인식된 장면이 사무실인지, 강의실인지, 식당인지 또는 호수와 같은 실외 환경인지에 따라 마이크로폰 및 카메라를 상이하게 구성할 수 있다. 애플리케이션(402)은 현재 장면의 추정치를 제공하도록 SceneDetect API(application programming interface)(406)에서 정의된 라이브러리와 연관된 컴파일된 프로그램 코드에 대한 요청을 할 수 있다. 이러한 요청은 궁극적으로, 예를 들어 비디오 및 포지셔닝 데이터에 기초하여 장면 추정치들을 제공하도록 구성된 차동 신경망의 출력에 의존할 수 있다.
[0065] 런타임 프레임워크의 컴파일링된 코드일 수 있는 런타임 엔진(408)은 애플리케이션(402)에 추가로 액세스 가능할 수 있다. 애플리케이션(402)은 런타임 엔진으로 하여금, 예를 들어 특정 시간 간격으로 장면 추정치를 요청하게 하거나 또는 애플리케이션의 사용자 인터페이스에 의해 검출된 이벤트에 의해 트리거되게 할 수 있다. 장면을 추정하게 될 때, 런타임 엔진은 결국, SoC(420) 상에서 실행되는 커널(412)과 같은 운영 시스템(410)에 신호를 전송할 수 있다. 운영 시스템(410)은 결국, CPU(422), DSP(424), GPU(426), NPU(428), 또는 이들의 어떤 조합 상에서 계산이 수행되게 할 수 있다. CPU(422)는 운영 시스템에 의해 직접 액세스될 수 있고, 다른 프로세싱 블록들은 DSP(424)에 대한, GPU(426)에 대한 또는 NPU(428)에 대한 드라이버(414-418)와 같은 드라이버를 통해 액세스될 수 있다. 예시적인 예에서, 차동 신경망은 CPU(422) 및 GPU(426)와 같은 프로세싱 블록들의 조합 상에서 실행되도록 구성될 수 있거나, 또는 NPU(428) 상에서 실행될 수 있다.
[0066] 본 개시내용의 양상들은 적대적 함수 근사화(adversarial function approximation)를 사용한 심층 신경망 모델 이식에 관한 것이다.
[0067] 도 5는 본 개시내용의 양상들에 따른, 비디오를 프로세싱하기 위한 예시적인 아키텍처(500)를 예시하는 블록도이다. 도 5에 도시된 바와 같이, 세그먼트화 네트워크(502)는 입력으로서 비디오(504)를 수신한다. 세그먼트화 네트워크(502)는 예를 들어, 도 3에 도시된 심층 컨볼루션 네트워크(350)와 같은 컨볼루션 신경망일 수 있다. 비디오(504)는 프레임들(예컨대, raw t1, raw t2, raw t3, raw t4, raw t5, raw t6)로 분할된다. 세그먼트화 네트워크(502)는 비디오(504)의 각각의 프레임을 순차적으로 프로세싱하고, 세그먼트(예컨대, seg t1, seg t2, seg t3, seg t4, seg t5, seg t6)의 형태로 출력(506)을 생성한다. 비디오(504)를 프로세싱하는 동안, 세그먼트화 네트워크(502)는 또한 업데이트될 수 있다. 도 5에 도시된 바와 같이, 각각의 출력 세그먼트를 생성한 후, 세그먼트화 네트워크(502)는 백워드 패스(예컨대, 508a-508f)를 통해 업데이트된다.
[0068] 도 6은 본 개시내용의 양상들에 따른, 비디오를 프로세싱하기 위한 예시적인 아키텍처(600)를 예시하는 블록도이다. 도 6에 도시된 바와 같이, 세그먼트화 네트워크(604)는 입력으로서 비디오(602)를 수신한다. 세그먼트화 네트워크(604)는 도 5의 세그먼트화 네트워크(502)와 유사하게 동작하도록 구성될 수 있다. 세그먼트화 네트워크(604)는 비디오(602)의 각각의 프레임을 프로세싱하고 출력 세그먼트(606)를 생성한다. 각각의 출력 세그먼트(606)는 argmax 연산을 거쳐 의사 라벨(pseudo-label)(608) 및 출력 라벨(612)을 생성한다. 손실 함수로서 CE(cross-entropy)를 적용하면, 의사 라벨(608) 및 출력 라벨(612)에 기초하여 음의 로그 우도(log likelihood)가 컴퓨팅될 수 있다. 결국, 세그먼트화 네트워크(604)는 CE 손실을 감소시키도록 BP(backpropagation)를 통해 업데이트될 수 있다. 일부 양상들에서, argmax는 출력 라벨(612)을 결정하기 위해 사용될 수 있고, 예를 들어 소프트맥스 가능성들 또는 로지트(logit) 함수를 사용하여 컴퓨팅된 신뢰도 값들에 의해 보완될 수 있다. 게다가, 일부 양상들에서, 신뢰도 값은 최상의 추정 또는 차선의 추정 라벨 비일 수 있다.
[0069] 도 7은 본 개시내용의 양상들에 따른, 비디오를 프로세싱하기 위한 예시적인 아키텍처(700)를 예시하는 블록도이다. 도 7을 참조하면, 예시적인 아키텍처(700)는 세그먼트화 네트워크(704) 및 보조 네트워크(706)를 포함한다. 보조 네트워크(706)는 세그먼트화 네트워크(704)의 아키텍처와 유사한 전체 아키텍처를 가질 수 있다. 그러나 보조 네트워크(706)는 세그먼트화 네트워크(704)보다 더 작다(예컨대, 1/10 크기). 예를 들면, 일부 양상들에서, 보조 네트워크(706)는 더 적은 채널들로 구성될 수 있거나(예컨대, 보조 네트워크(706)는 18 개의 채널들을 가질 수 있는 반면, 세그먼트화 네트워크(704)는 48 개의 채널들을 가질 수 있음) 또는 세그먼트화 네트워크(704)보다 더 낮은 해상도로 동작할 수 있다. 일 예에서, 보조 네트워크(706)는 32 비트 CPU(예컨대, 도 1의 CPU(102)) 또는 GPU(예컨대, 도 1의 GPU(104)) 상에서 동작할 수 있고, 세그먼트화 네트워크(704)는 8 비트 DSP(예컨대, 도 1의 DSP(106)) 상에서 동작할 수 있다.
[0070] 동작 시에, 세그먼트화 네트워크(704) 및 보조 네트워크(706)는 각각 비디오(702)를 입력으로서 수신한다. 세그먼트화 네트워크(704)는 비디오(702)의 각각의 프레임을 프로세싱하고 출력 세그먼트(710)를 생성한다. 보조 네트워크(706)는 비디오(702)의 각각의 프레임을 프로세싱하고 세그먼트(708)를 생성한다.
[0071] 추가로, 보조 네트워크(706)는 세그먼트화 네트워크(704)에 중간 특징들을 공급한다. 세그먼트화 네트워크(704)는 출력 세그먼트(710)를 컴퓨팅하기 위해, 세그먼트화 네트워크의 계층들에서 생성된 중간 특징들과 ("+" 부호들로 표시된 바와 같이) 집성되는 중간 특징들을 프로세싱한다. 각각의 출력 세그먼트(710)는 argmax 연산을 거쳐 의사 라벨(712)을 생성한다. 유사하게, 각각의 세그먼트(708)는 argmax 연산을 거쳐 출력 라벨(714)을 생성한다.
[0072] 세그먼트화 네트워크(704)가 포워드 패스에서 비디오(702)를 계속 프로세싱하는 동안, 의사 라벨(712) 및 출력 라벨(714)이 예를 들어, 역전파를 통해 교차 엔트로피 손실을 컴퓨팅하고 보조 네트워크(706)를 업데이트하는 데 사용될 수 있다. 업데이트는 세그먼트화 네트워크(704)보다는 더 작은 보조 네트워크(706) 상에서 수행되기 때문에, 계산 비용은 도 6의 세그먼트화 네트워크(604)의 계산 비용에 비해 상당히 감소될 수 있다.
[0073] 도 8은 본 개시내용의 양상들에 따른, 도 7의 예시적인 아키텍처(700)를 예시하는 보다 상세한 도면(800)이다. 도 8을 참조하면, 세그먼트화 네트워크(804) 및 보조 네트워크(806)가 도시된다. 도 8의 예에서, 세그먼트화 네트워크(804) 및 보조 네트워크(806)는 유사한 아키텍처들을 가질 수 있다. 예를 들어, 세그먼트화 네트워크(804) 및 보조 네트워크(806)는 자동 인코더(auto-encoder)로서 구성될 수 있다. 도 7과 관련하여 위에서 논의된 바와 같이, 보조 네트워크(806)는 세그먼트화 네트워크(804)보다 더 작을 수 있다(예컨대, 1/10 크기). 예를 들면, 일부 양상들에서, 보조 네트워크(806)는 더 적은 채널들로 구성될 수 있다(예컨대, 보조 네트워크(806)는 18 개의 채널들을 가질 수 있는 반면, 세그먼트화 네트워크(804)는 48 개의 채널들을 가질 수 있음). 추가로, 일부 양상들에서, 보조 네트워크(806)는 세그먼트화 네트워크(804)보다 더 낮은 해상도로 동작할 수 있다. 예를 들면, 도 8에 도시된 바와 같이, 보조 네트워크(806)와 세그먼트화 네트워크(804)는 둘 다 입력으로서 비디오(802)를 수신한다. 그러나 세그먼트화 네트워크(804)는 비디오(802)의 각각의 프레임을 3번 다운샘플링하지만, 보조 네트워크(806)는 비디오(802)의 각각의 프레임을 4번 다운샘플링하여, 세그먼트화 네트워크(804)에 비해 비디오의 각각의 프레임의 더 낮은 해상도를 생성한다.
[0074] 비디오(802)의 프레임들을 다운샘플링하여, 세그먼트화 네트워크(804) 및 보조 네트워크(806)는 각각 특징들을 추출하도록 컨볼루션 필터들(예컨대, 컨볼루션 인코딩 블록들)의 연속적인 계층들을 통해 이들 개개의 더 낮은 해상도의 프레임들을 전달한다. 더 낮은 해상도의 특징들을 추출하기 위해, 각각 세그먼트화 네트워크(804) 및 보조 네트워크(806)의 트랜지션(transition) 블록들(예컨대, 트랜지션 1, 트랜지션 2 및 트랜지션 3)에 의해 추가적인 다운샘플링이 수행될 수 있다.
[0075] 추가로, 보조 네트워크(806)는 중간 특징들(예컨대, 808, 810)을 세그먼트화 네트워크(804)에 공급할 수 있다. 중간 특징들(예컨대, 808, 810)은 (세그먼트화 네트워크(804)에서 더 많은 수의 채널들을 감안하도록) 매핑되고 세그먼트화 네트워크(804)의 중간 특징들과 조합되거나 집성될 수 있다. 세그먼트화 네트워크(804) 및 보조 네트워크(806)는 각각 한 세트의 출력 특징들(예컨대, 812, 814)을 생성하며, 이러한 출력 특징들은 업샘플링(up-sample)되고, 연결되어 디코더(decoder)(816, 818)에 공급될 수 있다.
[0076] 디코더들(816, 818)은 결국, 출력 특징들(예컨대, 812, 814)을 프로세싱하여 출력 세그먼트들(820, 822)을 생성한다. 출력 세그먼트들(820, 822) 각각은 argmax 연산을 거쳐 의사 라벨(824)을 생성한다.
[0077] 더욱이, 보조 네트워크(806)는 역전파를 사용하여 업데이트될 수 있다. 특히, 보조 네트워크(806)는, 세그먼트화 네트워크(804)가 비디오(802)를 계속해서 프로세싱함에 따라, 온라인으로(예컨대, 테스트 시간에) 업데이트된다. 그렇게 할 때, 시간적 불일치가 감소될 수 있다(예컨대, 조합 메트릭(union metric)에 대한 교차가 증가될 수 있음). 이에 따라, 비디오(802)에서 관찰되는 플리커링 효과가 감소될 수 있다. 추가로, 계산 비용 및 프로세싱 시간이 감소될 수 있다.
[0078] 도 9는 본 개시내용의 양상들에 따른, 비디오를 프로세싱하기 위한 방법(900)을 예시한다. 도 9에 도시된 바와 같이, 블록(902)에서, 이 방법(900)은 인공 신경망(ANN)의 제1 계층에서 비디오 입력을 수신한다. 제1 인공 신경망은 도 3의 심층 컨볼루션 네트워크(350)와 같은 컨볼루션 신경망일 수 있다. 도 5를 참조하여 논의된 바와 같이, 세그먼트화 네트워크(502)는 입력으로서 비디오(504)를 수신한다.
[0079] 블록(904)에서, 이 방법(900)은 제1 라벨을 생성하기 위해 비디오의 제1 프레임을 프로세싱한다. 도 5를 참조하여 논의된 바와 같이, 세그먼트화 네트워크(502)는 비디오(504)의 각각의 프레임을 순차적으로 프로세싱하고, 세그먼트(예컨대, seg t1)의 형태로 출력(506)을 생성한다.
[0080] 블록(906)에서, 이 방법(900)은 제1 라벨에 기초하여 인공 신경망을 업데이트하며, 업데이트는 비디오의 제2 프레임을 동시에 프로세싱하면서 수행된다. 예를 들어, 도 5에 도시된 바와 같이, 각각의 출력 세그먼트를 생성한 후, 세그먼트화 네트워크는 백워드 패스(예컨대, 508a-508f)를 통해 업데이트된다.
[0081] 도 10은 본 개시내용의 양상들에 따른, 비디오를 프로세싱하기 위한 방법(1000)을 예시한다. 도 10에 도시된 바와 같이, 블록(1002)에서, 이 방법(1000)은 제1 인공 신경망(ANN) 및 제2 인공 신경망의 제1 계층에서 입력으로서 비디오를 수신한다. 제1 인공 신경망은 제2 인공 신경망보다 더 적은 채널들을 갖는다. 예를 들면, 도 7c에 도시된 바와 같이, 예시적인 아키텍처(700)는 세그먼트화 네트워크(704) 및 보조 네트워크(706)를 포함한다. 세그먼트화 네트워크(704) 및 보조 네트워크(706)는 각각 입력으로서 비디오(702)를 수신한다. 추가로, 보조 네트워크(706)는 세그먼트화 네트워크(704)의 아키텍처와 유사한 아키텍처를 가질 수 있다. 예를 들면, 일부 양상들에서, 보조 네트워크(706)는 더 적은 채널들로 구성될 수 있거나(예컨대, 보조 네트워크(706)는 18 개의 채널들을 가질 수 있는 반면, 세그먼트화 네트워크(704)는 48 개의 채널들을 가질 수 있음) 또는 세그먼트화 네트워크(704)보다 더 낮은 해상도로 동작할 수 있다.
[0082] 블록(1004)에서, 이 방법(1000)은 제1 라벨을 생성하기 위해 제1 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱한다. 제1 인공 신경망은 비디오의 제1 프레임으로부터 추출된 중간 특징들을 제2 인공 신경망에 공급한다. 예를 들어, 도 7을 참조하여 논의된 바와 같이, 보조 네트워크(706)는 비디오의 각각의 프레임을 프로세싱하고 세그먼트(708)를 생성한다. 보조 네트워크(706)는 세그먼트화 네트워크(704)에 중간 특징들을 공급한다. 세그먼트화 네트워크(704)는 출력 세그먼트(710)를 컴퓨팅하기 위해 집성되는 중간 특징들을 프로세싱한다.
[0083] 블록(1006)에서, 이 방법(1000)은 중간 특징들 및 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 제2 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱한다. 예를 들어, 세그먼트화 네트워크(704)는 비디오(702)의 각각의 프레임을 프로세싱하고 출력 세그먼트(710)를 생성한다.
[0084] 블록(1008)에서, 이 방법(1000)은 제2 인공 신경망이 비디오의 제2 프레임을 동시에 프로세싱하는 동안 제1 라벨에 기초하여 제1 인공 신경망을 업데이트한다. 도 7을 참조하여 논의된 바와 같이, 세그먼트화 네트워크(704)가 포워드 패스에서 비디오(702)를 계속 프로세싱하는 동안 의사 라벨(712)이 예를 들어, 역전파를 통해 보조 네트워크(706)를 업데이트하는 데 사용될 수 있다.
[0085] 일 양상에서, 수신 수단, 프로세싱 수단 및/또는 업데이트 수단은 CPU(102), GPU(104), DSP(106), CPU(102)와 연관된 프로그램 메모리, 전용 메모리 블록(118), 완전히 연결된 계층들(362), NPU(428) 및/또는 열거된 기능들을 수행하도록 구성된 라우팅 연결 프로세싱 유닛(216)일 수 있다. 다른 구성에서, 위에서 언급된 수단은 위에서 언급된 수단에 의해 언급된 기능들을 수행하도록 구성된 임의의 모듈 또는 임의의 장치일 수 있다.
[0086] 위에서 설명한 방법들의 다양한 동작들은 대응하는 기능들을 수행할 수 있는 임의의 적당한 수단에 의해 수행될 수 있다. 이러한 수단은 회로, ASIC(application specific integrated circuit) 또는 프로세서를 포함하지만 이에 한정된 것은 아닌 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들) 및/또는 모듈(들)을 포함할 수 있다. 일반적으로, 도면들에 예시된 동작들이 존재하는 경우, 그러한 동작들은 비슷한 번호를 가진 대응하는 상대 수단 + 기능 컴포넌트들을 가질 수 있다.
[0087] 구현 예들은 다음과 같이 번호가 매겨진 조항들에서 제공된다:
1. 비디오를 프로세싱하기 위한 방법은:
인공 신경망(ANN)의 제1 계층에서 입력으로서 비디오를 수신하는 단계;
제1 라벨을 생성하기 위해 비디오의 제1 프레임을 프로세싱하는 단계; 및
제1 라벨에 기초하여 인공 신경망을 업데이트하는 단계를 포함하며, 업데이트는 비디오의 제2 프레임을 동시에 프로세싱하면서 수행된다.
2. 조항 1의 방법은, 인공 신경망을 업데이트하기 위해 인공 신경망의 백워드 패스에서 제1 라벨을 적용하는 단계를 더 포함한다.
3. 조항 1 또는 조항 2의 방법은, 제2 프레임에 기초하여 제2 라벨을 생성하는 단계를 더 포함하며, 제1 라벨과 제2 라벨 사이의 시간적 불일치를 감소시키기 위해 동시 프로세싱이 수행된다.
4. 비디오를 프로세싱하기 위한 방법은:
제1 인공 신경망(ANN) 및 제2 인공 신경망의 제1 계층에서 입력으로서 비디오를 수신하는 단계 ― 제1 인공 신경망은 제2 인공 신경망보다 더 적은 채널들을 가짐 ―;
제1 라벨을 생성하기 위해 제1 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하는 단계 ― 제1 인공 신경망은 비디오의 제1 프레임으로부터 추출된 중간 특징들을 제2 인공 신경망에 공급함 ―;
중간 특징들 및 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 제2 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하는 단계; 및
제2 인공 신경망이 비디오의 제2 프레임을 동시에 프로세싱하는 동안 제1 라벨에 기초하여 제1 인공 신경망을 업데이트하는 단계를 포함한다.
5. 조항 4의 방법은, 제2 인공 신경망을 통해 제2 프레임에 기초하여 제3 라벨을 생성하는 단계를 더 포함하며, 제2 라벨과 제3 라벨 사이의 시간적 불일치가 감소되도록 동시 프로세싱이 수행된다.
6. 조항 4 또는 조항 5의 방법에서, 제1 인공 신경망은 제2 인공 신경망보다 더 낮은 해상도로 동작한다.
7. 비디오를 프로세싱하기 위한 장치는:
메모리; 및
메모리에 결합된 적어도 하나의 프로세서를 포함하며, 적어도 하나의 프로세서는:
인공 신경망(ANN)의 제1 계층에서 입력으로서 비디오를 수신하도록;
제1 라벨을 생성하기 위해 비디오의 제1 프레임을 프로세싱하도록; 그리고
제1 라벨에 기초하여 인공 신경망을 업데이트하도록 구성되고, 업데이트는 비디오의 제2 프레임을 동시에 프로세싱하면서 수행된다.
8. 조항 7의 장치에서, 적어도 하나의 프로세서는 인공 신경망을 업데이트하기 위해 인공 신경망의 백워드 패스에 제1 라벨을 적용하도록 추가로 구성된다.
9. 조항 7 또는 조항 8의 장치에서, 적어도 하나의 프로세서는 제2 프레임에 기초하여 제2 라벨을 생성하도록 추가로 구성되며, 제1 라벨과 제2 라벨 사이의 시간적 불일치를 감소시키기 위해 동시 프로세싱이 수행된다.
10. 비디오를 프로세싱하기 위한 장치는:
메모리; 및
메모리에 결합된 적어도 하나의 프로세서를 포함하며, 적어도 하나의 프로세서는:
제1 인공 신경망(ANN) 및 제2 인공 신경망의 제1 계층에서 입력으로서 비디오를 수신하도록 ― 제1 인공 신경망은 제2 인공 신경망보다 더 적은 채널들을 가짐 ―;
제1 라벨을 생성하기 위해 제1 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하도록 ― 제1 인공 신경망은 비디오의 제1 프레임으로부터 추출된 중간 특징들을 제2 인공 신경망에 공급함 ―;
중간 특징들 및 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 제2 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하도록; 그리고
제2 인공 신경망이 비디오의 제2 프레임을 동시에 프로세싱하는 동안 제1 라벨에 기초하여 제1 인공 신경망을 업데이트하도록 구성된다.
11. 조항 10의 장치에서, 적어도 하나의 프로세서는 제2 인공 신경망을 통해 제2 프레임에 기초하여 제3 라벨을 생성하도록 추가로 구성되며, 제2 라벨과 제3 라벨 사이의 시간적 불일치가 감소되도록 동시 프로세싱이 수행된다.
12. 조항 10의 장치에서, 제1 인공 신경망은 제2 인공 신경망보다 더 낮은 해상도로 동작한다.
13. 비디오를 프로세싱하기 위한 장치는:
인공 신경망(ANN)의 제1 계층에서 입력으로서 비디오를 수신하기 위한 수단;
제1 라벨을 생성하기 위해 비디오의 제1 프레임을 프로세싱하기 위한 수단; 및
제1 라벨에 기초하여 인공 신경망을 업데이트하기 위한 수단을 포함하며, 업데이트는 비디오의 제2 프레임을 동시에 프로세싱하면서 수행된다.
14. 조항 13의 장치는, 인공 신경망을 업데이트하기 위해 인공 신경망의 백워드 패스에서 제1 라벨을 적용하기 위한 수단을 더 포함한다.
15. 조항 13 또는 조항 14의 장치는, 제2 프레임에 기초하여 제2 라벨을 생성하기 위한 수단을 더 포함하며, 제1 라벨과 제2 라벨 사이의 시간적 불일치를 감소시키기 위해 동시 프로세싱이 수행된다.
16. 비디오를 프로세싱하기 위한 장치는:
제1 인공 신경망(ANN) 및 제2 인공 신경망의 제1 계층에서 입력으로서 비디오를 수신하기 위한 수단 ― 제1 인공 신경망은 제2 인공 신경망보다 더 적은 채널들을 가짐 ―;
제1 라벨을 생성하기 위해 제1 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하기 위한 수단 ― 제1 인공 신경망은 비디오의 제1 프레임으로부터 추출된 중간 특징들을 제2 인공 신경망에 공급함 ―;
중간 특징들 및 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 제2 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하기 위한 수단; 및
제2 인공 신경망이 비디오의 제2 프레임을 동시에 프로세싱하는 동안 제1 라벨에 기초하여 제1 인공 신경망을 업데이트하기 위한 수단을 포함한다.
17. 조항 16의 장치는, 제2 인공 신경망을 통해 제2 프레임에 기초하여 제3 라벨을 생성하기 위한 수단을 더 포함하며, 제2 라벨과 제3 라벨 사이의 시간적 불일치가 감소되도록 동시 프로세싱이 수행된다.
18. 조항 16 또는 조항 17의 장치에서, 제1 인공 신경망은 제2 인공 신경망보다 더 낮은 해상도로 동작한다.
19. 비디오를 프로세싱하기 위한 프로그램 코드가 인코딩된 비-일시적 컴퓨터 판독 가능 매체로서, 프로그램 코드는 프로세서에 의해 실행되며:
인공 신경망(ANN)의 제1 계층에서 입력으로서 비디오를 수신하기 위한 프로그램 코드;
제1 라벨을 생성하기 위해 상기 비디오의 제1 프레임을 프로세싱하기 위한 프로그램 코드; 및
제1 라벨에 기초하여 인공 신경망을 업데이트하기 위한 프로그램 코드를 포함하고, 업데이트는 비디오의 제2 프레임을 동시에 프로세싱하면서 수행된다.
20. 조항 19의 비-일시적 컴퓨터 판독 가능 매체는, 인공 신경망을 업데이트하기 위해 인공 신경망의 백워드 패스에서 제1 라벨을 적용하기 위한 프로그램 코드를 더 포함한다.
21. 조항 19 또는 조항 20의 비-일시적 컴퓨터 판독 가능 매체는, 제2 프레임에 기초하여 제2 라벨을 생성하기 위한 프로그램 코드를 더 포함하며, 제1 라벨과 제2 라벨 사이의 시간적 불일치를 감소시키기 위해 동시 프로세싱이 수행된다.
22. 비디오를 프로세싱하기 위한 프로그램 코드가 인코딩된 비-일시적 컴퓨터 판독 가능 매체로서, 프로그램 코드는 프로세서에 의해 실행되며:
제1 인공 신경망(ANN) 및 제2 인공 신경망의 제1 계층에서 입력으로서 비디오를 수신하기 위한 프로그램 코드 ― 제1 인공 신경망은 제2 인공 신경망보다 더 적은 채널들을 가짐 ―;
제1 라벨을 생성하기 위해 제1 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하기 위한 프로그램 코드 ― 제1 인공 신경망은 비디오의 제1 프레임으로부터 추출된 중간 특징들을 제2 인공 신경망에 공급함 ―;
중간 특징들 및 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 제2 인공 신경망을 통해 비디오의 제1 프레임을 프로세싱하기 위한 프로그램 코드; 및
제2 인공 신경망이 비디오의 제2 프레임을 동시에 프로세싱하는 동안 제1 라벨에 기초하여 제1 인공 신경망을 업데이트하기 위한 프로그램 코드를 포함한다.
23. 조항 22의 비-일시적 컴퓨터 판독 가능 매체는, 제2 인공 신경망을 통해 제2 프레임에 기초하여 제3 라벨을 생성하기 위한 프로그램 코드를 더 포함하며, 제2 라벨과 제3 라벨 사이의 시간적 불일치가 감소되도록 동시 프로세싱이 수행된다.
24. 조항 22 또는 조항 23의 비-일시적 컴퓨터 판독 가능 매체에서, 제1 인공 신경망은 제2 인공 신경망보다 더 낮은 해상도로 동작한다.
[0088] 본 명세서에서 사용된 바와 같이, "결정"이라는 용어는 광범위한 동작들을 포괄한다. 예를 들어, "결정"은 계산, 컴퓨팅, 프로세싱, 유도, 연구, 조사(예컨대, 표, 데이터베이스 또는 다른 데이터 구조의 조사), 확인 등을 포함할 수 있다. 추가로, "결정"은 수신(예를 들어, 정보의 수신), 액세스(예를 들어, 메모리 내의 데이터에 액세스) 등을 포함할 수 있다. 더욱이, "결정"은 해결, 선택, 선출, 설정 등을 포함할 수 있다.
[0089] 본 명세서에서 사용된 바와 같이, 항목들의 리스트 "~ 중 적어도 하나"를 의미하는 문구는 단일 멤버들을 포함하여 이러한 항목들의 임의의 조합을 의미한다. 일 예에서, "a, b 또는 c 중 적어도 하나"는 a, b, c, a-b, a-c, b-c 그리고 a-b-c를 커버하는 것으로 의도된다.
[0090] 본 개시내용과 관련하여 설명한 다양한 예시적인 로직 블록들, 모듈들 및 회로들은 범용 프로세서, DSP(digital signal processor), ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 다른 PLD(programmable logic device), 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 설명한 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 이들에 의해 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안으로 프로세서는 임의의 상업적으로 입수할 수 있는 프로세서, 제어기, 마이크로컨트롤러 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예컨대 DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다.
[0091] 본 개시내용과 관련하여 설명한 방법 또는 알고리즘의 단계들은 직접 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은 당해 기술분야에 공지된 임의의 형태의 저장 매체에 상주할 수 있다. 사용될 수 있는 저장 매체의 일부 예들은 RAM(random access memory), ROM(read only memory), 플래시(flash) 메모리, EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 레지스터(register)들, 하드디스크, 착탈식 디스크, CD-ROM 등을 포함한다. 소프트웨어 모듈은 단일 명령 또는 다수의 명령들을 포함할 수 있으며, 여러 개의 서로 다른 코드 세그먼트들에, 서로 다른 프로그램들 사이에, 그리고 다수의 저장 매체들에 걸쳐 분산될 수 있다. 저장 매체는 프로세서가 저장 매체로부터 정보를 읽고 저장 매체에 정보를 기록할 수 있도록 프로세서에 결합될 수 있다. 대안으로, 저장 매체는 프로세서에 통합될 수 있다.
[0092] 본 명세서에 개시된 방법들은 설명된 방법을 달성하기 위한 하나 이상의 단계들 또는 동작들을 포함한다. 방법 단계들 및/또는 동작들은 청구항들의 범위를 벗어나지 않으면서 서로 교환될 수 있다. 즉, 단계들 또는 동작들의 특정 순서가 명시되지 않는 한, 특정 단계들 및/또는 동작들의 순서 및/또는 사용은 청구항들의 범위를 벗어나지 않으면서 변경될 수 있다.
[0093] 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 하드웨어로 구현된다면, 예시적인 하드웨어 구성은 디바이스의 프로세싱 시스템을 포함할 수 있다. 프로세싱 시스템은 버스 아키텍처로 구현될 수 있다. 버스는 프로세싱 시스템의 특정 애플리케이션 및 전체 설계 제약들에 따라 임의의 수의 상호 접속 버스들 및 브리지들을 포함할 수 있다. 버스는 프로세서, 기계 판독 가능 매체 및 버스 인터페이스를 포함하는 다양한 회로들을 서로 링크(link)할 수 있다. 버스 인터페이스는 다른 무엇보다도, 네트워크 어댑터를 버스를 통해 프로세싱 시스템에 접속하는 데 사용될 수 있다. 네트워크 어댑터는 신호 프로세싱 기능들을 구현하는 데 사용될 수 있다. 특정 양상들의 경우, 사용자 인터페이스(예컨대, 키패드(keypad), 디스플레이, 마우스(mouse), 조이스틱(joystick) 등)가 또한 버스에 접속될 수 있다. 버스는 또한 타이밍 소스(timing source)들, 주변장치들, 전압 조절기들, 전력 관리 회로들 등과 같은 다양한 다른 회로들을 링크할 수 있으며, 이들은 당해 기술분야에 잘 알려져 있고 따라서 더 이상 설명되지 않을 것이다.
[0094] 프로세서는 기계 판독 가능 매체에 저장된 소프트웨어의 실행을 포함하여, 버스의 관리 및 일반적인 프로세싱을 담당할 수 있다. 프로세서는 하나 이상의 범용 및/또는 특수 목적용 프로세서들로 구현될 수 있다. 예들은 마이크로프로세서들, 마이크로컨트롤러들, DSP 프로세서들, 및 소프트웨어를 실행할 수 있는 다른 회로를 포함한다. 소프트웨어는 소프트웨어로 지칭되든, 펌웨어로 지칭되든, 미들웨어로 지칭되든, 마이크로코드로 지칭되든, 하드웨어 기술 언어로 지칭되든 또는 다른 식으로 지칭되든, 명령들, 데이터, 또는 이들의 임의의 조합을 의미하는 것으로 광범위하게 해석될 것이다. 기계 판독 가능 저장 매체들은 예로서, RAM(random access memory), 플래시 메모리, ROM(read only memory), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable Read-only memory), 레지스터들, 자기 디스크들, 광 디스크들, 하드 드라이브들, 또는 임의의 다른 적당한 저장 매체, 또는 이들의 임의의 조합을 포함할 수 있다. 기계 판독 가능 매체는 컴퓨터 프로그램 제품으로 구체화될 수 있다. 컴퓨터 프로그램 제품은 패키징 재료들을 포함할 수 있다.
[0095] 하드웨어 구현에서, 기계 판독 가능 매체는 프로세서와 별개인 프로세싱 시스템의 일부일 수 있다. 그러나 당해 기술분야에서 통상의 지식을 가진 자들이 쉽게 인식하는 바와 같이, 기계 판독 가능 매체 또는 그의 임의의 부분은 프로세싱 시스템 외부에 있을 수 있다. 예로서, 기계 판독 가능 매체는 송신선, 데이터에 의해 변조된 캐리어(carrier), 및/또는 디바이스와는 별개인 컴퓨터 제품을 포함할 수 있으며, 이들 모두 버스 인터페이스를 통해 프로세서에 의해 액세스될 수 있다. 대안으로 또는 추가로, 기계 판독 가능 매체 또는 그의 임의의 부분은 캐시 및/또는 일반 레지스터 파일들에서 흔히 있듯이, 프로세서에 통합될 수 있다. 논의된 다양한 컴포넌트들은 국소 컴포넌트와 같은 특정 위치를 갖는 것으로 설명될 수 있지만, 이러한 컴포넌트들은 또한 다양한 방식들로 구성될 수 있는데, 이를테면 특정 컴포넌트들이 분산 컴퓨팅 시스템의 일부로서 구성된다.
[0096] 프로세싱 시스템은, 모두 외부 버스 아키텍처를 통해 다른 지원 회로와 서로 링크되는, 기계 판독 가능 매체의 적어도 일부를 제공하는 외부 메모리 및 프로세서 기능을 제공하는 하나 이상의 마이크로프로세서들을 갖는 범용 프로세싱 시스템으로서 구성될 수 있다. 대안으로, 프로세싱 시스템은 설명된 신경 시스템들의 모델들 및 뉴런 모델들을 구현하기 위한 하나 이상의 신경계 형태의(neuromorphic) 프로세서들을 포함할 수 있다. 다른 대안으로서, 프로세싱 시스템은 하나 이상의 FPGA(field programmable gate array)들, PLD(programmable logic device)들, 제어기들, 상태 머신들, 게이티드(gated) 로직, 이산 하드웨어 컴포넌트들, 또는 임의의 다른 적합한 회로를 갖거나, 단일 칩(chip)으로 통합된 기계 판독 가능 매체들의 적어도 일부, 프로세서, 버스 인터페이스, 사용자 인터페이스 및 지원 회로를 갖는 ASIC(application specific integrated circuit), 또는 본 개시내용 전반에 걸쳐 설명된 다양한 기능을 수행할 수 있는 회로들의 임의의 조합으로 구현될 수 있다. 당해 기술분야에서 통상의 지식을 가진 자들은 특정 애플리케이션 및 전체 시스템에 부과되는 전체 설계 제약들에 따라 프로세싱 시스템에 대해 설명된 기능을 어떻게 최상으로 구현할지를 인지할 것이다.
[0097] 기계 판독 가능 매체는 다수의 소프트웨어 모듈들을 포함할 수 있다. 소프트웨어 모듈들은 프로세서에 의해 실행될 때, 프로세싱 시스템으로 하여금 다양한 기능들을 수행하게 하는 명령들을 포함한다. 소프트웨어 모듈들은 송신 모듈 및 수신 모듈을 포함할 수 있다. 각각의 소프트웨어 모듈은 단일 저장 디바이스에 상주할 수 있거나, 다수의 저장 디바이스들에 걸쳐 분배될 수 있다. 예를 들어, 소프트웨어 모듈은 트리거 이벤트가 발생하는 경우 하드 드라이브로부터 RAM으로 로딩될 수 있다. 소프트웨어 모듈의 실행 동안, 프로세서는 명령들 중 일부를 캐시로 로딩하여 액세스 속도를 높일 수 있다. 다음에, 하나 이상의 캐시 라인들이 프로세서에 의한 실행을 위해 일반적인 레지스터 파일로 로딩될 수 있다. 아래의 소프트웨어 모듈의 기능을 참조하면, 이러한 기능은 그 소프트웨어 모듈로부터의 명령들을 실행할 때 프로세서에 의해 구현된다고 이해될 것이다. 더욱이, 본 개시내용의 양상들은 프로세서, 컴퓨터, 기계, 또는 이러한 양상들을 구현하는 다른 시스템의 기능에 대한 개선들을 야기한다고 인식되어야 한다.
[0098] 소프트웨어로 구현된다면, 이 기능들은 컴퓨터 판독 가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 이를 통해 송신될 수 있다. 컴퓨터 판독 가능 매체는 한 장소에서 다른 장소로 컴퓨터 프로그램의 전달을 가능하게 하는 임의의 매체를 포함하는 통신 매체와 컴퓨터 저장 매체를 모두 포함한다. 저장 매체는 컴퓨터에 의해 액세스 가능한 임의의 이용 가능한 매체일 수 있다. 한정이 아닌 예시로, 이러한 컴퓨터 판독 가능 매체는 RAM, ROM, EEPROM, CD-ROM이나 다른 광 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 디바이스들, 또는 명령들이나 데이터 구조들의 형태로 원하는 프로그램 코드를 전달 또는 저장하는 데 사용될 수 있으며 컴퓨터에 의해 액세스 가능한 임의의 다른 매체를 포함할 수 있다. 추가로, 임의의 접속이 컴퓨터 판독 가능 매체로 적절히 지칭된다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 꼬임 쌍선, DSL(digital subscriber line), 또는 IR(infrared), 라디오 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트(website), 서버(server) 또는 다른 원격 소스로부터 송신된다면, 동축 케이블, 광섬유 케이블, 꼬임 쌍선, DSL, 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술들이 매체의 정의에 포함된다. 본 명세서에서 사용된 것과 같은 디스크(disk 및 disc)는 CD(compact disc), 레이저 디스크(laser disc), 광 디스크(optical disc), DVD(digital versatile disc), 플로피 디스크(floppy disk) 및 블루레이 디스크(Blu-ray® disc)를 포함하며, 여기서 디스크(disk)들은 보통 데이터를 자기적으로 재생하는 한편, 디스크(disc)들은 데이터를 레이저들에 의해 광학적으로 재생한다. 따라서 일부 양상들에서, 컴퓨터 판독 가능 매체는 비-일시적 컴퓨터 판독 가능 매체(예를 들어, 유형 매체)를 포함할 수 있다. 추가로, 다른 양상들의 경우, 컴퓨터 판독 가능 매체는 일시적 컴퓨터 판독 가능 매체(예컨대, 신호)를 포함할 수 있다. 상기의 것들의 결합들이 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
[0099] 따라서 특정 양상들은 본 명세서에서 제시된 동작들을 수행하기 위한 컴퓨터 프로그램 제품을 포함할 수 있다. 예를 들어, 이러한 컴퓨터 프로그램 제품은 명령들이 저장(및/또는 인코딩)된 컴퓨터 판독 가능 매체를 포함할 수 있고, 명령들은 설명된 동작들을 수행하도록 하나 이상의 프로세서들에 의해 실행 가능하다. 특정 양상들의 경우, 컴퓨터 프로그램 제품은 패키징 재료를 포함할 수 있다.
[0100] 추가로, 설명된 방법들 및 기법들을 수행하기 위한 모듈들 및/또는 다른 적절한 수단은 적용 가능한 경우에 사용자 단말 및/또는 기지국에 의해 다운로드(download)될 수 있고 그리고/또는 다른 방식으로 획득될 수 있다고 인식되어야 한다. 예를 들어, 이러한 디바이스는 서버에 결합되어, 설명된 방법들을 수행하기 위한 수단의 전달을 가능하게 할 수 있다. 대안으로, 설명된 다양한 방법들은 사용자 단말 및/또는 기지국이 저장 수단(예컨대, RAM, ROM, CD(compact disc)나 플로피 디스크와 같은 물리적 저장 매체 등)을 디바이스에 결합 또는 제공할 때 다양한 방법들을 얻을 수 있도록, 이러한 저장 수단을 통해 제공될 수 있다. 더욱이, 설명된 방법들 및 기법들을 디바이스에 제공하기 위한 임의의 다른 적당한 기법이 이용될 수 있다.
[0101] 청구항들은 위에서 예시된 바로 그 구성 및 컴포넌트들로 한정되지는 않는다고 이해되어야 한다. 위에서 설명한 방법들 및 장치의 배치, 동작 및 세부사항들에 대해 청구항들의 범위를 벗어나지 않으면서 다양한 변형들, 변경들 및 개조들이 이루어질 수 있다.

Claims (12)

  1. 비디오를 프로세싱하기 위한 방법으로서,
    인공 신경망(ANN: artificial neural network)의 제1 계층에서 입력으로서 상기 비디오를 수신하는 단계;
    제1 라벨(label)을 생성하기 위해 상기 비디오의 제1 프레임을 프로세싱하는 단계; 및
    상기 제1 라벨에 기초하여 상기 인공 신경망을 업데이트하는 단계를 포함하며, 상기 업데이트는 상기 비디오의 제2 프레임을 동시에 프로세싱하면서 수행되는,
    비디오를 프로세싱하기 위한 방법.
  2. 제1 항에 있어서,
    상기 인공 신경망을 업데이트하기 위해 상기 인공 신경망의 백워드 패스(backward pass)에서 상기 제1 라벨을 적용하는 단계를 더 포함하는,
    비디오를 프로세싱하기 위한 방법.
  3. 제1 항에 있어서,
    상기 제2 프레임에 기초하여 제2 라벨을 생성하는 단계를 더 포함하며,
    상기 제1 라벨과 상기 제2 라벨 사이의 시간적 불일치를 감소시키도록 동시 프로세싱이 수행되는,
    비디오를 프로세싱하기 위한 방법.
  4. 비디오를 프로세싱하기 위한 방법으로서,
    제1 인공 신경망(ANN) 및 제2 인공 신경망의 제1 계층에서 입력으로서 상기 비디오를 수신하는 단계 ― 상기 제1 인공 신경망은 상기 제2 인공 신경망보다 더 적은 채널들을 가짐 ―;
    제1 라벨을 생성하기 위해 상기 제1 인공 신경망을 통해 상기 비디오의 제1 프레임을 프로세싱하는 단계 ― 상기 제1 인공 신경망은 상기 비디오의 제1 프레임으로부터 추출된 중간 특징들을 상기 제2 인공 신경망에 공급함 ―;
    상기 중간 특징들 및 상기 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 상기 제2 인공 신경망을 통해 상기 비디오의 제1 프레임을 프로세싱하는 단계; 및
    상기 제2 인공 신경망이 상기 비디오의 제2 프레임을 동시에 프로세싱하는 동안 상기 제1 라벨에 기초하여 상기 제1 인공 신경망을 업데이트하는 단계를 포함하는,
    비디오를 프로세싱하기 위한 방법.
  5. 제4 항에 있어서,
    상기 제2 인공 신경망을 통해 상기 제2 프레임에 기초하여 제3 라벨을 생성하는 단계를 더 포함하며,
    상기 제2 라벨과 상기 제3 라벨 사이의 시간적 불일치가 감소되도록 동시 프로세싱이 수행되는,
    비디오를 프로세싱하기 위한 방법.
  6. 제4 항에 있어서,
    상기 제1 인공 신경망은 상기 제2 인공 신경망보다 더 낮은 해상도로 동작하는,
    비디오를 프로세싱하기 위한 방법.
  7. 비디오를 프로세싱하기 위한 장치로서,
    메모리; 및
    상기 메모리에 결합된 적어도 하나의 프로세서를 포함하며,
    상기 적어도 하나의 프로세서는:
    제1 인공 신경망(ANN) 및 제2 인공 신경망의 제1 계층에서 입력으로서 상기 비디오를 수신하도록 ― 상기 제1 인공 신경망은 상기 제2 인공 신경망보다 더 적은 채널들을 가짐 ―;
    제1 라벨을 생성하기 위해 상기 제1 인공 신경망을 통해 상기 비디오의 제1 프레임을 프로세싱하도록 ― 상기 제1 인공 신경망은 상기 비디오의 제1 프레임으로부터 추출된 중간 특징들을 상기 제2 인공 신경망에 공급함 ―;
    상기 중간 특징들 및 상기 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 상기 제2 인공 신경망을 통해 상기 비디오의 제1 프레임을 프로세싱하도록; 그리고
    상기 제2 인공 신경망이 상기 비디오의 제2 프레임을 동시에 프로세싱하는 동안 상기 제1 라벨에 기초하여 상기 제1 인공 신경망을 업데이트하도록 구성되는,
    비디오를 프로세싱하기 위한 장치.
  8. 제7 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 제2 인공 신경망을 통해 상기 제2 프레임에 기초하여 제3 라벨을 생성하도록 추가로 구성되며,
    상기 제2 라벨과 상기 제3 라벨 사이의 시간적 불일치가 감소되도록 동시 프로세싱이 수행되는,
    비디오를 프로세싱하기 위한 장치.
  9. 제7 항에 있어서,
    상기 제1 인공 신경망은 상기 제2 인공 신경망보다 더 낮은 해상도로 동작하는,
    비디오를 프로세싱하기 위한 장치.
  10. 비디오를 프로세싱하기 위한 프로그램 코드가 인코딩된 비-일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 프로그램 코드는 프로세서에 의해 실행되며:
    제1 인공 신경망(ANN) 및 제2 인공 신경망의 제1 계층에서 입력으로서 상기 비디오를 수신하기 위한 프로그램 코드 ― 상기 제1 인공 신경망은 상기 제2 인공 신경망보다 더 적은 채널들을 가짐 ―;
    제1 라벨을 생성하기 위해 상기 제1 인공 신경망을 통해 상기 비디오의 제1 프레임을 프로세싱하기 위한 프로그램 코드 ― 상기 제1 인공 신경망은 상기 비디오의 제1 프레임으로부터 추출된 중간 특징들을 상기 제2 인공 신경망에 공급함 ―;
    상기 중간 특징들 및 상기 제1 프레임에 기초하여 제2 라벨을 생성하기 위해 상기 제2 인공 신경망을 통해 상기 비디오의 제1 프레임을 프로세싱하기 위한 프로그램 코드; 및
    상기 제2 인공 신경망이 상기 비디오의 제2 프레임을 동시에 프로세싱하는 동안 상기 제1 라벨에 기초하여 상기 제1 인공 신경망을 업데이트하기 위한 프로그램 코드를 포함하는,
    비-일시적 컴퓨터 판독 가능 저장 매체.
  11. 제10 항에 있어서,
    상기 제2 인공 신경망을 통해 상기 제2 프레임에 기초하여 제3 라벨을 생성하기 위한 프로그램 코드를 더 포함하며,
    상기 제2 라벨과 상기 제3 라벨 사이의 시간적 불일치가 감소되도록 동시 프로세싱이 수행되는,
    비-일시적 컴퓨터 판독 가능 저장 매체.
  12. 제10 항에 있어서,
    상기 제1 인공 신경망은 상기 제2 인공 신경망보다 더 낮은 해상도로 동작하는,
    비-일시적 컴퓨터 판독 가능 저장 매체.
KR1020237029855A 2021-03-10 2022-03-09 비디오 프로세싱에서 개선된 시간 일관성을 위한 효율적인 테스트 시간 적응 KR20230154187A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/198,147 2021-03-10
US17/198,147 US20220292302A1 (en) 2021-03-10 2021-03-10 Efficient test-time adaptation for improved temporal consistency in video processing
PCT/US2022/019620 WO2022192449A1 (en) 2021-03-10 2022-03-09 Efficient test-time adaptation for improved temporal consistency in video processing

Publications (1)

Publication Number Publication Date
KR20230154187A true KR20230154187A (ko) 2023-11-07

Family

ID=81326760

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237029855A KR20230154187A (ko) 2021-03-10 2022-03-09 비디오 프로세싱에서 개선된 시간 일관성을 위한 효율적인 테스트 시간 적응

Country Status (7)

Country Link
US (1) US20220292302A1 (ko)
EP (1) EP4305551A1 (ko)
JP (1) JP2024509862A (ko)
KR (1) KR20230154187A (ko)
CN (1) CN117223035A (ko)
BR (1) BR112023017706A2 (ko)
WO (1) WO2022192449A1 (ko)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018128741A1 (en) * 2017-01-06 2018-07-12 Board Of Regents, The University Of Texas System Segmenting generic foreground objects in images and videos
EP3608844A1 (en) * 2018-08-10 2020-02-12 Naver Corporation Methods for training a crnn and for semantic segmentation of an inputted video using said crnn

Also Published As

Publication number Publication date
EP4305551A1 (en) 2024-01-17
CN117223035A (zh) 2023-12-12
US20220292302A1 (en) 2022-09-15
WO2022192449A1 (en) 2022-09-15
JP2024509862A (ja) 2024-03-05
BR112023017706A2 (pt) 2023-12-12

Similar Documents

Publication Publication Date Title
KR102570706B1 (ko) 분류를 위한 강제된 희소성
US10332028B2 (en) Method for improving performance of a trained machine learning model
US11238346B2 (en) Learning a truncation rank of singular value decomposed matrices representing weight tensors in neural networks
US20210158166A1 (en) Semi-structured learned threshold pruning for deep neural networks
US20220121949A1 (en) Personalized neural network pruning
US20220224926A1 (en) Variable bit rate compression using neural network models
US11704571B2 (en) Learned threshold pruning for deep neural networks
US20230076290A1 (en) Rounding mechanisms for post-training quantization
US20210182684A1 (en) Depth-first deep convolutional neural network inference
WO2021247944A1 (en) Federated mixture models
US20220284260A1 (en) Variable quantization for neural networks
KR20230154187A (ko) 비디오 프로세싱에서 개선된 시간 일관성을 위한 효율적인 테스트 시간 적응
US20240005158A1 (en) Model performance linter
US20230169694A1 (en) Flow-agnostic neural video compression
US20230419087A1 (en) Adapters for quantization
US20230058415A1 (en) Deep neural network model transplantation using adversarial functional approximation
US20220108165A1 (en) Quantifying reward and resource allocation for concurrent partial deep learning workloads in multi core environments
WO2022198437A1 (en) State change detection for resuming classification of sequential sensor data on embedded systems
US20240160926A1 (en) Test-time adaptation via self-distilled regularization
US20230308666A1 (en) Contrastive object representation learning from temporal data
US20240037150A1 (en) Scheduling optimization in sequence space
KR20230156911A (ko) 비디오 프로세싱을 위한 효율적인 셀프-어텐션
WO2023249821A1 (en) Adapters for quantization
WO2024102530A1 (en) Test-time adaptation via self-distilled regularization
WO2023101779A1 (en) Flow-agnostic neural video compression