KR20240065323A - 머신 학습을 사용하는 예측된 시각 품질에 기초하는 비디오 플레이어들에 대한 최적의 포맷 선택 - Google Patents

머신 학습을 사용하는 예측된 시각 품질에 기초하는 비디오 플레이어들에 대한 최적의 포맷 선택 Download PDF

Info

Publication number
KR20240065323A
KR20240065323A KR1020247014698A KR20247014698A KR20240065323A KR 20240065323 A KR20240065323 A KR 20240065323A KR 1020247014698 A KR1020247014698 A KR 1020247014698A KR 20247014698 A KR20247014698 A KR 20247014698A KR 20240065323 A KR20240065323 A KR 20240065323A
Authority
KR
South Korea
Prior art keywords
video
training
machine learning
learning model
input
Prior art date
Application number
KR1020247014698A
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 KR20240065323A publication Critical patent/KR20240065323A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N17/00Diagnosis, testing or measuring for television systems or their details
    • H04N17/004Diagnosis, testing or measuring for television systems or their details for digital television systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N17/00Diagnosis, testing or measuring for television systems or their details
    • H04N17/002Diagnosis, testing or measuring for television systems or their details for television cameras
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234363Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/44029Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display for generating different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Discrete Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Databases & Information Systems (AREA)
  • Image Analysis (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Receiver Circuits (AREA)

Abstract

시각 품질에 기초하는 비디오 플레이어들에 대한 최적의 포맷 선택을 위한 시스템 및 방법들이 개시된다. 방법은, 참조 비디오의 복수의 참조 트랜스코딩된 버전들을 생성하는 단계, 참조 비디오의 복수의 참조 트랜스코딩된 버전들의 프레임들에 대한 품질 스코어들을 획득하는 단계, 참조 비디오의 프레임들의 컬러 속성들, 공간 속성들, 및 시간 속성들의 세트를 포함하는 제1 훈련 입력을 생성하는 단계, 및 제1 훈련 입력에 대한 제1 타깃 출력을 생성하는 단계를 포함하고, 여기서 제1 타깃 출력은 참조 비디오의 복수의 참조 트랜스코딩된 버전들의 프레임들에 대한 품질 스코어들을 포함한다. 방법은, (i) 제1 훈련 입력을 포함하는 훈련 입력들의 세트 및 (ii) 제1 타깃 출력을 포함하는 타깃 출력들의 세트에 대해 머신 학습 모델을 훈련시키기 위해 훈련 데이터를 제공하는 단계를 더 포함한다.

Description

머신 학습을 사용하는 예측된 시각 품질에 기초하는 비디오 플레이어들에 대한 최적의 포맷 선택{OPTIMAL FORMAT SELECTION FOR VIDEO PLAYERS BASED ON PREDICTED VISUAL QUALITY USING MACHINE LEARNING}
본 개시내용의 양태들 및 구현들은 비디오 프로세싱에 관한 것으로, 더 구체적으로는, 예측된 시각 품질에 기초하는 비디오 플레이어들에 대한 최적의 포맷 선택에 관한 것이다.
콘텐츠 공유 플랫폼들은 사용자들이 비디오들, 이미지들, 오디오 클립들, 뉴스 기사들 등과 같은 콘텐츠를 업로드하거나, 소비하거나, 검색하거나, 승인("좋아요 표시")하거나, 싫어요 표시하거나, 그리고/또는 코멘트하는 것을 가능하게 한다. 콘텐츠 공유 플랫폼에서, 사용자들은 플랫폼에의 포함을 위해 콘텐츠(예를 들어, 비디오들, 이미지들, 오디오 클립들 등)를 업로드하여, 그에 의해 다른 사용자들이 콘텐츠를 소비(예를 들어, 뷰잉 등)하는 것을 가능하게 할 수도 있다. 대부분의 콘텐츠 공유 플랫폼들은 원본 소스 비디오를 그의 네이티브 인코딩된 포맷(native encoded format)으로부터 통상적으로 이용가능한 포맷으로 트랜스코딩한다. 트랜스코딩은, 네이티브 포맷에 대한 코덱을 사용하여 소스 비디오를 네이티브 포맷으로부터 인코딩되지 않은 표현으로 디코딩한 후에, 통상적으로 이용가능한 포맷에 대한 코덱으로 그 인코딩되지 않은 표현을 인코딩하는 것을 포함한다. 트랜스코딩은 저장 요건들을 감소시키고, 클라이언트들에 비디오를 서빙하기 위한 대역폭 요건들을 또한 감소시키는 데 사용될 수 있다.
다음은 본 개시내용의 다양한 양태들의 단순화된 요약을 제시하여 그러한 양태들의 기본적 이해를 제공한다. 이 요약은 모든 고려된 양태들의 광범위한 개요가 아니며, 핵심 또는 중요 요소들을 식별하려고 의도된 것도 아니고 그러한 양태들의 범주를 기술하려고 의도된 것도 아니다. 그의 목적은 추후에 제시되는 더 상세한 설명에 대한 서두로서 본 개시내용의 일부 개념들을 단순화된 형태로 제시하는 것이다.
본 개시내용의 일 양태에서, 머신 학습 모델(machine learning model)(예를 들어, 뉴럴 네트워크, 콘볼루션 뉴럴 네트워크(convolutional neural network)(CNN), 서포트 벡터 머신(support vector machine)[SVM] 등)을 훈련시키고 훈련된 모델을 사용하여 비디오들을 프로세싱하기 위한 시스템 및 방법들이 개시된다. 일 구현에서, 방법은, 디스플레이 해상도들의 세트에서의 새로운 비디오의 트랜스코딩된 버전들의 세트에 대한 품질 스코어들을 식별하도록 훈련될 머신 학습 모델에 대한 훈련 데이터를 생성하는 단계를 포함한다. 훈련 데이터를 생성하는 단계는, 참조 비디오의 복수의 참조 트랜스코딩된 버전들을 생성하는 단계, 참조 비디오의 복수의 참조 트랜스코딩된 버전들의 프레임들에 대한 품질 스코어들을 획득하는 단계, 참조 비디오의 프레임들의 컬러 속성들, 공간 속성들, 및 시간 속성들의 세트를 포함하는 제1 훈련 입력을 생성하는 단계, 및 제1 훈련 입력에 대한 제1 타깃 출력을 생성하는 단계를 포함할 수도 있고, 여기서 제1 타깃 출력은, 참조 비디오의 복수의 참조 트랜스코딩된 버전들의 프레임들에 대한 품질 스코어들을 포함한다. 이 방법은, (i) 제1 훈련 입력을 포함하는 훈련 입력들의 세트 및 (ii) 제1 타깃 출력을 포함하는 타깃 출력들의 세트에 대해 머신 학습 모델을 훈련시키기 위해 훈련 데이터를 제공하는 단계를 더 포함한다.
일 구현에서, 품질 스코어들은 프레임들의 피크 신호 대 잡음비(peak signal-to-noise ratio)(PSNR)를 포함한다. 일부 구현들에서, 품질 스코어들은 프레임들의 비디오 다중 방법 평가 융합(video multimethod assessment fusion)(VMAF)을 포함한다. 게다가, 컬러 속성들은 프레임들의 RGB 또는 Y 값 중 적어도 하나를 포함할 수도 있다. 공간 속성들은 가버 피처 필터 뱅크(Gabor feature filter bank)를 포함할 수도 있다. 시간 속성들은 광학 흐름(optical flow)을 포함할 수도 있다.
일부 구현들에서, 머신 학습 모델은 새로운 비디오를 프로세싱하고, 디스플레이 해상도들의 세트에서의 새로운 비디오의 트랜스코딩된 버전들의 세트에 대한 품질 스코어를 표시하는 하나 이상의 출력을 생성하도록 구성된다. 게다가, 참조 비디오의 복수의 트랜스코딩된 버전들은, 복수의 상이한 비디오 해상도들, 트랜스코딩 구성들, 및 상이한 디스플레이 해상도들 각각에서의 참조 비디오의 트랜스코딩을 포함할 수도 있다.
추가로, 본 명세서에서 설명되는 다양한 구현들 및 상술된 방법들의 동작들을 수행하기 위한 컴퓨팅 디바이스들이 개시된다. 본 명세서에서 설명되는 다양한 구현들 및 상술된 방법들과 연관된 동작들을 수행하기 위한 명령어들을 저장하는 컴퓨터 판독가능 매체들이 또한 개시된다.
본 개시내용의 양태들 및 구현들은 아래에 제공되는 상세한 설명으로부터 그리고 본 개시내용의 다양한 양태들 및 구현들의 첨부 도면들로부터 더 완전히 이해될 것이지만, 이 첨부 도면들은 본 개시내용을 특정 양태들 또는 구현들로 제한하는 것으로 취급되어서는 안 되고, 단지 설명과 이해만을 위한 것이다.
도 1은 본 개시내용의 하나 이상의 양태에 따른, 예시적인 컴퓨터 시스템 아키텍처를 도시한다.
도 2는 본 개시내용의 하나 이상의 양태에 따른, 이력 비디오 데이터 세트(historical video data set)를 사용하여 머신 학습 모델에 대한 데이터 세트들을 생성하기 위한 예시적인 훈련 세트 생성기의 블록도이다.
도 3은 본 개시내용의 하나 이상의 양태에 따른, 비디오 분류들을 결정하기 위한 시스템을 예시하는 블록도이다.
도 4는 본 개시내용의 하나 이상의 양태에 따른, 머신 학습 모델을 훈련시키기 위한 방법의 일 예의 흐름도를 도시한다.
도 5는 본 개시내용의 하나 이상의 양태에 따른, 훈련된 머신 학습 모델을 사용하여 비디오들을 프로세싱하기 위한 방법의 일 예의 흐름도를 도시한다.
도 6은 본 개시내용의 하나 이상의 양태에 따른, 훈련된 머신 학습 모델을 사용하여 비디오들을 프로세싱하고 서버 디바이스에서 훈련된 머신 학습 모델의 출력을 사용하여 포맷 선택을 최적화시키기 위한 방법의 일 예의 흐름도를 도시한다.
도 7은 본 개시내용의 하나 이상의 양태에 따른, 클라이언트 디바이스에서 훈련된 머신 학습 모델의 출력을 사용하여 포맷 선택을 최적화시키기 위한 방법의 일 예의 흐름도를 도시한다.
도 8a 및 도 8b는 본 개시내용의 구현들에 따른, 포맷 선택을 최적화시키기 위한 훈련된 머신 학습 모델의 출력의 예시적인 그래픽 표현을 제공한다.
도 9는 본 개시내용의 하나 이상의 양태에 따라 동작하는 예시적인 컴퓨터 시스템의 블록도를 도시한다.
콘텐츠 공유 플랫폼에서, 사용자들은 플랫폼에의 포함을 위해 콘텐츠(예를 들어, 비디오들, 이미지들, 오디오 클립들 등)를 업로드하여, 그에 의해 다른 사용자들이 콘텐츠를 소비(예를 들어, 뷰잉 등)하는 것을 가능하게 할 수도 있다. 뷰잉 디바이스들 및 네트워크 대역폭의 제약들로 인해, 콘텐츠 공유 플랫폼들에 업로드된 비디오들은 뷰잉 경험을 향상시키기 위해 뷰어들에게 서빙되기 전에 트랜스코딩(압축해제 및 재압축)된다. 업로드된 비디오가, 다양한 디스플레이 해상도들에서 플레이되는 다수의 트랜스코딩된 변형들을 가질 수도 있다. 해상도들(입력, 트랜스코딩, 및 디스플레이)은, 360p, 480p, 720p, 1080p, 2160p(4k) 등과 같은, 기준이 되는 산업 표준 해상도들로 대략적으로 그룹화될 수 있다.
전형적인 트랜스코딩 파이프라인이 다수의 트랜스코딩된 버전들(비디오 포맷들이라고도 또한 불림)을 생성할 수 있다. 비디오를 플레이할 때, 미디어 뷰어는, 서빙할 이들 비디오 포맷들 중 하나를 적응적으로 선택할 수 있다. 종래의 서빙 전략은, 사용자들이 충분한 대역폭을 갖는다고 가정하면, 가장 높은 이용가능한 해상도에 도달할 때까지 더 높은 해상도 버전의 비디오로 스위칭하는 것이다. 이것은 적응적 비트 레이트(Adaptive Bit Rate)(ABR) 전략이라고도 또한 알려져 있다. 그러한 ABR 전략의 가정은 더 높은 해상도 버전들이 더 양호한 시각 품질을 제공한다는 것이다. 그러나, 일부 경우들에서, 더 높은 해상도 버전의 시각 품질이 더 낮은 해상도 버전의 시각 품질과 매우 가까울 수 있다(예를 들어, 480p 디스플레이 해상도를 갖는 클라이언트 디바이스 상에서 재생될 때 비디오의 480p 버전이 비디오의 720p 버전과 유사한 지각 품질(perceptual quality)을 가질 때). 그러한 경우에, 비디오의 더 높은 해상도 버전을 서빙하는 것은, 지각 품질의 관점에서 사용자에게 눈에 띄는 이익을 제공하는 일 없이 사용자의 대역폭을 낭비한다.
준최적 포맷 선택(suboptimal format selection)으로 인한 그러한 비효율성들을 회피하기 위한 하나의 접근법은, 특정 디스플레이 해상도에서 특정 포맷을 플레이할 때 각각의 객관적 품질 스코어가 지각 품질을 반영한다는 기본 가정으로, 각각의 트랜스코딩된 버전에 객관적 품질 스코어들의 리스트를 첨부하는 것이다. 비디오의 특정 포맷에 대해 단일 품질 스코어를 컴퓨팅하는 것은, 2개의 비디오 스트림(즉, 재스케일링된(rescaled) 트랜스코딩된 버전 및 원본 버전)을 디코딩하는 것, 그리고 전체 품질 스코어를 계산하기 위해 프레임당 피처들을 추출하는 것을 수반한다. 'N_format'개의 유효한 트랜스코딩된 비디오 포맷, 입력 비디오를 특정 비디오 포맷으로 트랜스코딩하기 위한 'N_transconfig'개의 후보 트랜스코딩 구성, 및 'N_display'개의 종류의 가능한 디스플레이 해상도가 있다고 가정되는 경우, 그러면 컴퓨팅하기 위한 가능한 품질 스코어들의 총 수는: 'N_format' x 'N_transconfig' x 'N_display'개의 스코어일 것이다. 다양한 해상도들에 걸친 모든 가능한 품질 스코어들을 컴퓨팅하는 것은 많은 양의 컴퓨테이션 리소스(computational resource)들을 활용한다. 게다가, 대규모 시스템들(예를 들어, 매일 수백만 개의 새로운 업로드를 갖는 콘텐츠 공유 플랫폼들) 상에서 그러한 상당한 사이즈의 컴퓨테이션들을 수행하는 것은 불가능할 수도 있다.
심층 학습에 기초하여 비디오에 대한 모든 가능한 비디오 품질 스코어들을 효율적으로 예측하기 위한 시스템 및 방법들의 양태들 및 구현들이 본 명세서에 개시된다. 더 구체적으로는, 구현들은, 임의의 압축 설정들로 압축되고 임의의 디스플레이 해상도들에서 플레이되는 비디오들에 대한 객관적 품질 스코어들을 예측하기 위해 효율적인 머신 학습 모델을 훈련시키고 사용하는 것을 수반한다.
일 구현에 따르면, 한 세트의 이력 비디오들이 액세스되어 머신 학습 모델을 훈련시키는 데 사용된다. 특히, 이력 비디오들 각각은 머신 학습 모델을 훈련시키기 위한 입력 피처들을 생성하는 데 사용된다. 입력 피처들은 개개의 이력 비디오의 프레임들의 속성들의 세트를 포함한다. 속성들의 세트는, 개개의 이력 비디오의 프레임(들)의 컬러 속성들(예를 들어, YUV 포맷의 Y 세기 값들 또는 적색/녹색/청색(RGB) 세기 값들), 공간 속성들(예를 들어, 가버 필터), 및 시간 속성들(예를 들어, 광학 흐름)을 포함할 수 있다. 부가적으로, 이력 비디오들 각각은 복수의 상이한 해상도 포맷들 및 트랜스코딩 구성들로 트랜스코딩되어 비디오의 복수의 트랜스코딩된 버전들을 생성한다. 그 후에, 복수의 트랜스코딩된 버전들은 클라이언트 디바이스들의 복수의 상이한 잠재적 디스플레이 해상도들로 재스케일링된다(재스케일링된 트랜스코딩된 버전들이라고 본 명세서에서 지칭됨). 재스케일링된 트랜스코딩된 버전들 각각에 대해 품질 스코어(예를 들어, 피크 신호 대 잡음비(PSNR) 측정치 또는 비디오 다중 방법 평가 융합(VMAF 측정치)가 획득된다.
그 후에, 이들 품질 스코어들은 훈련 출력들(예를 들어, 지상 실측 레이블(ground truth label)들)로서 사용될 수도 있는데, 이 훈련 출력들은 상기에 논의된 훈련 입력 피처들에 매핑되고 머신 학습 모델을 훈련시키는 데 사용된다. 이러한 방식으로, 머신 학습 모델은 비디오 해상도 포맷, 트랜스코딩 구성, 및 디스플레이 해상도의 각각의 가능한 튜플(tuple)에서 비디오에 대한 예측된 품질 스코어를 생성하도록 훈련된다. 본 명세서에서 사용되는 바와 같이, "비디오 해상도 포맷" 및 "비디오 포맷"이라는 용어들은 재스케일링에 앞선 비디오의 해상도를 지칭할 수도 있다. "디스플레이 해상도"라는 용어는, 재스케일링 후에, (예를 들어, 클라이언트 디바이스 상의 미디어 뷰어에 의해) 비디오가 실제로 디스플레이되는 해상도를 지칭할 수도 있다.
머신 학습 모델이 훈련된 후에, 훈련된 머신 학습 모델에 의해 프로세싱하기 위한 새로운 비디오가 식별될 수도 있다. 이 경우에, 비디오의 지각 품질이 특정 클라이언트 디바이스에서 어떻게 될 수도 있는지의 임의의 지식 없이, 새로운 비디오가 머신 학습 모델에 그 전체가 제공되기 때문에 다양한 디스플레이 해상도들에서의 트랜스코딩 구성들 및 다양한 비디오 해상도들에서의 구성 비디오(예를 들어, 클라이언트 디바이스로 재생을 위해 제공되는 비디오)의 지각 품질은 알려져 있지 않다.
일 구현에서, 새로운 비디오의 속성들의 세트(예를 들어, 컬러, 공간, 시간)가 결정된다. 새로운 비디오의 속성들의 세트가 훈련된 머신 학습 모델에 대한 입력으로서 제시되는데, 이 훈련된 머신 학습 모델은 입력에 기초하여 하나 이상의 출력을 생성한다. 일 구현에서, 출력들은, 비디오 해상도, 트랜스코딩 구성, 및 디스플레이 해상도의 각각의 가능한 튜플에서 비디오의 예측된 지각 품질 측정치를 제공하는 예측된 품질 스코어들이다. 일부 구현들에서, 예측된 품질 스코어들은 클라이언트 디바이스에서의 포맷 선택을 최적화시키기 위해 활용될 수도 있다. 머신 학습 모델의 훈련 및 사용과 관련된 특정 양태들이 아래에 더욱 상세히 설명된다.
따라서, 본 개시내용의 양태들은 비디오 해상도, 트랜스코딩 구성, 및 디스플레이 해상도의 모든 가능한 조합들에서의 비디오에 대한 예측된 품질 스코어들이 식별될 수 있게 하는 메커니즘을 제공한다. 이 메커니즘은 특정 디스플레이 해상도를 갖는 클라이언트 디바이스에서의 비디오의 재생을 위한 자동화된 그리고 최적화된 포맷 선택을 가능하게 한다. 본 개시내용의 구현들의 이점은, 훈련된 머신 학습 모델이 입력 비디오의 모든(video_format, transcoding_config, display_resolution) 튜플들에 대한 다수의 객관적 비디오 품질 스코어들(예를 들어, PSNR 및 VMAF 값들)을 한 번에 리턴하는 것이 가능하다는 점이다. 구현들은 입력 비디오의 트랜스코딩 또는 각각의 가능한 트랜스코딩된 버전에 대한 품질 메트릭 컴퓨테이션의 시간 소모적인 프로세스들을 회피한다. 훈련된 머신 학습 모델의 출력은 비디오 품질의 사용자 경험을 최대화하기 위해 포맷 선택을 최적화시키는 데 활용될 수 있다. 포맷 선택을 최적화시키면, 사용자에 의해 지각된 비디오 품질을 눈에 띄게 감소시키는 일 없이, 대역폭 요건들을 감소시킨다는 이점을 또한 가질 수도 있다.
도 1은 본 개시내용의 일 구현에 따른, 예시적인 시스템 아키텍처(100)를 예시한다. 시스템 아키텍처(100)는, 네트워크(104)에 연결되는 하나 이상의 서버 머신(120 내지 150), 콘텐츠 리포지토리(content repository)(110), 및 클라이언트 머신들(102A 내지 102N)을 포함한다. 네트워크(104)는 공중 네트워크(예를 들어, 인터넷), 사설 네트워크(예를 들어, 로컬 영역 네트워크(local area network)(LAN) 또는 광역 네트워크(wide area network)(WAN)), 또는 이들의 조합일 수도 있다.
클라이언트 머신들(102A 내지 102N)은 퍼스널 컴퓨터(personal computer)(PC)들, 랩톱들, 모바일 폰들, 태블릿 컴퓨터들, 셋톱 박스들, 텔레비전들, 비디오 게임 콘솔들, 디지털 어시스턴트(digital assistant)들 또는 임의의 다른 컴퓨팅 디바이스들일 수도 있다. 클라이언트 머신들(102A 내지 102N)은, 클라이언트 머신들(102A 내지 102N)의 하드웨어 및 소프트웨어를 관리하는 운영 체제(operating system)(OS)를 실행할 수도 있다. 일 구현에서, 클라이언트 머신들(102A 내지 102N)은 저장 및/또는 프로세싱을 위해 웹 서버(예를 들어, 업로드 서버(125))에 비디오들을 업로드할 수도 있다.
서버 머신들(120 내지 150)은 랙마운트 서버, 라우터 컴퓨터, 퍼스널 컴퓨터, 휴대용 디지털 어시스턴트, 모바일 폰, 랩톱 컴퓨터, 태블릿 컴퓨터, 카메라, 비디오 카메라, 넷북, 데스크톱 컴퓨터, 미디어 센터, 또는 상기의 임의의 조합일 수도 있다. 서버 머신(120)은, 클라이언트 머신들(102A 내지 102N)에 의해 (예를 들어, 웹페이지를 통해, 애플리케이션을 통해 등으로) 업로드된 콘텐츠(예를 들어, 비디오들, 오디오 클립들, 이미지들 등)를 수신하는 것이 가능한 업로드 서버(125)를 포함한다.
콘텐츠 리포지토리(110)는, 미디어 아이템들을 태깅, 조직화, 및 인덱싱하기 위한 데이터 구조체들뿐만 아니라 콘텐츠 아이템들을 저장하는 것이 가능한 영구적 스토리지이다. 콘텐츠 리포지토리(110)는 메인 메모리, 자기 또는 광학 저장 기반 디스크들, 테이프들 또는 하드 드라이브들, NAS, SAN 등과 같은 하나 이상의 저장 디바이스에 의해 호스팅될 수도 있다. 일부 구현들에서, 콘텐츠 리포지토리(110)는 네트워크-어태치된 파일 서버(network-attached file server)일 수도 있는 한편, 다른 실시예들에서, 콘텐츠 리포지토리(110)는, 네트워크(104)를 통해 서버 머신(120)에 커플링되는 하나 이상의 상이한 머신 또는 서버 머신(120)에 의해 호스팅될 수도 있는, 객체 지향 데이터베이스, 관계형 데이터베이스 등과 같은 일부 다른 타입의 영구적 스토리지일 수도 있다.
콘텐츠 리포지토리(110)에 저장된 콘텐츠 아이템들은, 클라이언트 머신들에 의해 업로드되는 사용자-생성된 미디어 아이템들뿐만 아니라, 서비스 제공자들 예컨대 뉴스 기관들, 발행자들, 라이브러리들 등으로부터의 미디어 아이템들을 포함할 수도 있다. 일부 구현들에서, 콘텐츠 리포지토리(110)는 제3자 서비스에 의해 제공될 수도 있는 한편, 일부 다른 구현들에서, 콘텐츠 리포지토리(110)는, 서버 머신(120)을 유지하는 동일한 엔티티(entity)에 의해 유지될 수도 있다. 일부 예들에서, 콘텐츠 리포지토리(110) 및 서버 머신(120 내지 150)은, 사용자들이 미디어 아이템들에 대해 업로드하게 하거나, 소비하게 하거나, 검색하게 하거나, 승인("좋아요 표시")하게 하거나, 싫어요 표시하게 하거나, 그리고/또는 코멘트하게 하는 콘텐츠 공유 플랫폼의 부분일 수도 있다.
콘텐츠 공유 플랫폼은 다수의 채널들을 포함할 수도 있다. 채널은 공통 소스로부터 이용가능한 데이터 콘텐츠이거나 또는 공통 토픽, 테마, 또는 내용을 갖는 데이터 콘텐츠일 수 있다. 데이터 콘텐츠는, 사용자에 의해 선정된 디지털 콘텐츠, 사용자에 의해 이용가능해진 디지털 콘텐츠, 사용자에 의해 업로드된 디지털 콘텐츠, 콘텐츠 제공자에 의해 선정된 디지털 콘텐츠, 브로드캐스터에 의해 선정된 디지털 콘텐츠 등일 수 있다. 채널은, 채널 상에서 액션들을 수행할 수 있는 사용자인 소유자와 연관될 수 있다. 소유자가 채널 상에서 디지털 콘텐츠를 이용가능하게 하는 것, 소유자가 다른 채널과 연관된 디지털 콘텐츠를 선택(예를 들어, 좋아요 표시)하는 것, 소유자가 다른 채널과 연관된 디지털 콘텐츠에 대해 코멘트하는 것 등과 같은 소유자의 액션들에 기초하여 상이한 활동들이 채널과 연관될 수 있다. 채널과 연관된 활동들은 채널에 대한 활동 피드로 수집될 수 있다. 채널의 소유자 이외의 사용자들은 이들이 관심있는 하나 이상의 채널을 구독할 수 있다. "구독"의 개념은 "좋아요 표시", "팔로잉(following)", "친구추가(friending)" 등이라고도 또한 지칭될 수도 있다.
각각의 채널은 하나 이상의 미디어 아이템을 포함할 수도 있다. 미디어 아이템들의 예들은 디지털 비디오, 디지털 영화들, 디지털 사진들, 디지털 음악, 웹사이트 콘텐츠, 소셜 미디어 업데이트들, 전자 서적(ebook)들, 전자 잡지들, 디지털 신문들, 디지털 오디오 북들, 전자 저널들, 웹 블로그들, RSS(real simple syndication) 피드들, 전자 만화책들, 소프트웨어 애플리케이션들 등을 포함할 수 있고, 이들로 제한되지 않는다. 일부 구현들에서, 미디어 아이템들은 또한 비디오 콘텐츠 아이템이라고도 지칭된다.
미디어 아이템들은 클라이언트 머신들(102A 내지 102N) 상에서 실행되는 미디어 뷰어들(105)을 통해 소비될 수도 있다. 일 구현에서, 미디어 뷰어들(105)은, 사용자들이 이미지들, 비디오들(예를 들어, 비디오 콘텐츠 아이템들), 웹 페이지들, 문서들 등과 같은 콘텐츠를 뷰잉하게 하는 애플리케이션들일 수도 있다. 예를 들어, 미디어 뷰어들(105)은, 웹 서버에 의해 서빙되는 콘텐츠(예를 들어, 웹 페이지들 예컨대 하이퍼 텍스트 마크업 언어(Hyper Text Markup Language)(HTML) 페이지들, 디지털 미디어 아이템들 또는 콘텐츠 아이템들 등)를 액세스, 검색, 제시, 및/또는 내비게이팅할 수 있는 웹 브라우저일 수도 있다. 미디어 뷰어들(105)은 콘텐츠(예를 들어, 웹 페이지, 미디어 뷰어)를 사용자에게 렌더링, 디스플레이, 및/또는 제시할 수도 있다. 미디어 뷰어들(105)은 웹 페이지(예를 들어, 온라인 머천트(online merchant)에 의해 판매되는 제품에 관한 정보를 제공할 수도 있는 웹 페이지)에 임베딩되는 임베딩된 미디어 플레이어(예를 들어, 플래시® 플레이어 또는 HTML5 플레이어)를 또한 디스플레이할 수도 있다. 다른 예에서, 미디어 뷰어들(105)은, 사용자들이 디지털 미디어 콘텐츠 아이템들(예를 들어, 디지털 비디오들, 디지털 이미지들, 전자 서적들 등)을 뷰잉하게 하는 독립형 애플리케이션(예를 들어, 모바일 애플리케이션)일 수도 있다.
미디어 뷰어들(105)은 서버(120) 및/또는 콘텐츠 공유 플랫폼에 의해 클라이언트 디바이스들(102A 내지 102N)에 제공될 수도 있다. 예를 들어, 미디어 뷰어들(105)은, 콘텐츠 공유 플랫폼에 의해 제공되는 웹 페이지들에 임베딩되는 임베딩된 미디어 플레이어들일 수도 있다. 다른 예에서, 미디어 뷰어들은, 서버(120) 및/또는 콘텐츠 공유 플랫폼과 통신하는 애플리케이션들일 수도 있다.
본 개시내용의 구현들은, 임의의 압축 설정들로 압축되고 임의의 디스플레이 해상도들에서 플레이되는 비디오들에 대한 객관적 품질을 예측하기 위해 효율적인 머신 학습 모델을 훈련시키고 사용하는 것을 제공한다. 서버 머신(130)은, 그러한 머신 학습 모델을 훈련시키기 위해 훈련 데이터(예를 들어, 훈련 입력들 및 타깃 출력들의 세트)를 생성하는 것이 가능한 훈련 세트 생성기(131)를 포함한다. 훈련 세트 생성기(131)의 일부 동작들은 도 2와 관련하여 아래에 상세히 설명된다.
서버 머신(140)은, 머신 학습 모델(160)을 훈련시키는 것이 가능한 훈련 엔진(141)을 포함한다. 머신 학습 모델(160)은, 훈련 입력들 및 대응하는 타깃 출력들(개개의 훈련 입력들에 대한 정답들)을 포함하는 훈련 데이터를 사용하여 훈련 엔진(141)에 의해 생성되는 모델 아티팩트를 참조할 수도 있다. 훈련 엔진(141)은 훈련 입력을 타깃 출력(예측될 답)에 매핑시키는 훈련 데이터에서의 패턴들을 발견하고, 이들 패턴들을 캡처하는 머신 학습 모델(160)을 제공할 수도 있다. 머신 학습 모델은, 예를 들어, 단일 레벨의 선형 또는 비선형 연산들(예를 들어, 서포트 벡터 머신[SVM] 또는 심층 네트워크, 즉, 다수의 레벨들의 비선형 연산들로 구성되는 머신 학습 모델일 수도 있다)로 구성될 수도 있다. 심층 네트워크의 예는, 하나 이상의 은닉 레이어(hidden layer)를 갖는 뉴럴 네트워크이고, 그러한 머신 학습 모델은, 예를 들어, 역전파 학습 알고리즘(backpropagation learning algorithm) 또는 이와 유사한 것에 따라 뉴럴 네트워크의 가중치들을 조정함으로써 훈련될 수도 있다. 편의를 위해, 본 개시내용의 나머지 부분은 뉴럴 네트워크로서의 구현을 참조하지만, 일부 구현들은 뉴럴 네트워크 대신에 또는 이에 부가적으로 SVM 또는 다른 타입의 학습 머신을 채용할 수도 있다. 일 구현에서, ResNet 또는 EfficientNet과 같은 콘볼루션 뉴럴 네트워크(CNN)는 머신 학습 모델에 대한 1차 훈련 모델로서 사용된다. 다른 머신 학습 모델들이 본 개시내용의 구현들에서 고려될 수도 있다. 일 양태에서, 훈련 세트는 서버 머신(130)으로부터 획득된다.
서버 머신(150)은 품질 스코어 엔진(151) 및 포맷 분석 엔진(152)을 포함한다. 품질 스코어 엔진(151)은, 비디오의 프레임들의 속성 데이터를 훈련된 머신 학습 모델(160)에 대한 입력으로서 제공하고 그 입력에 대해 훈련된 머신 학습 모델(160)을 실행하여 하나 이상의 출력을 획득하는 것이 가능하다. 도 4와 관련하여 아래에 상세히 설명되는 바와 같이, 일 구현에서, 포맷 분석 엔진(152)은 훈련된 머신 학습 모델(160)의 출력으로부터 품질 스코어 데이터를 추출하고 품질 스코어 데이터를 사용하여 비디오에 대한 최적의 포맷 선택을 수행하는 것이 또한 가능하다. 일부 구현들에서, 포맷 분석 엔진(152)은 품질 스코어 엔진(151)에 의해 획득된 품질 스코어 데이터에 기초하여 클라이언트 디바이스들(102A 내지 102N)에서 미디어 뷰어들(105)에 의해 제공될 수도 있다.
일부 다른 구현들에서, 서버 머신들(120, 130, 140, 및 150)의 기능들은 더 적은 머신들에 의해 제공될 수도 있다는 것에 주목해야 한다. 예를 들어, 일부 구현들에서, 서버 머신들(130 및 140)이 단일 머신으로 통합될 수도 있는 한편, 다른 구현들에서, 서버 머신들(130, 140, 및 150)이 단일 머신으로 통합될 수도 있다. 부가적으로, 일부 구현들에서, 서버 머신들(120, 130, 140, 및 150) 중 하나 이상이 콘텐츠 공유 플랫폼으로 통합될 수도 있다.
일반적으로, 콘텐츠 아이템 공유 플랫폼, 서버 머신(120), 서버 머신(130), 서버 머신(140), 및/또는 서버 머신(150)에 의해 수행되는 것으로서 일 구현에서 설명되는 기능들은, 적절한 경우, 다른 구현들에서 클라이언트 디바이스들(102A 내지 102N) 상에서 또한 수행될 수 있다. 부가적으로, 특정 컴포넌트에 기인하는 기능성은, 함께 동작하는 상이한 또는 다수의 컴포넌트들에 의해 수행될 수 있다. 콘텐츠 공유 플랫폼, 서버 머신(120), 서버 머신(130), 서버 머신(140), 및/또는 서버 머신(150)은 또한, 적절한 애플리케이션 프로그래밍 인터페이스들을 통해 다른 시스템들 또는 디바이스들에 제공되는 서비스로서 액세스될 수 있고, 따라서 웹사이트들에서의 사용으로 제한되지 않는다.
도 2는 특정 실시예들에 따른, 이력 비디오 데이터 세트(240)를 사용하여 머신 학습 모델(예를 들어, 도 1의 모델(160))에 대한 데이터 세트들을 생성하기 위한 예시적인 훈련 세트 생성기(231)(예를 들어, 도 1의 훈련 세트 생성기(131))이다. 도 2의 시스템(200)은 훈련 세트 생성기(231), 훈련 입력 피처들(210), 및 타깃 출력 레이블들(220)을 도시한다.
일부 실시예들에서, 훈련 세트 생성기(231)는, 하나 이상의 훈련 입력 피처(210)(예를 들어, 훈련 입력, 검증 입력, 테스팅 입력) 및 훈련 입력 피처들(210)에 대응하는 하나 이상의 타깃 출력 레이블(220)을 포함하는 데이터 세트(예를 들어, 훈련 세트, 검증 세트, 테스팅 세트)를 생성한다. 데이터 세트는, 훈련 입력 피처들(210)을 타깃 출력 레이블들(220)에 매핑시키는 매핑 데이터를 또한 포함할 수도 있다. 훈련 입력 피처들(210)은 "데이터 입력", "피처들", "속성들", 또는 "정보"라고도 또한 지칭될 수도 있다. 일부 실시예들에서, 훈련 세트 생성기(131)는 데이터 세트를 도 1의 훈련 엔진(141)에 제공할 수도 있고, 여기서 데이터 세트는 머신 학습 모델(160)을 훈련, 검증, 또는 테스팅하는 데 사용된다. 훈련 세트를 생성하는 일부 실시예들이 도 4와 관련하여 추가로 설명될 수도 있다.
일부 실시예들에서, 훈련 입력 피처들(210)은 이력 비디오 컬러 속성들(242), 이력 비디오 공간 속성들(244), 이력 비디오 시간 속성들(246) 등 중의 하나 이상을 포함할 수도 있다. 타깃 출력 레이블들(220)은 비디오 분류들(248)을 포함할 수도 있다. 비디오 분류들(248)은 비디오 품질 스코어 측정 알고리즘들을 포함하거나 또는 이들과 연관될 수도 있다.
일부 실시예들에서, 훈련 세트 생성기(231)는 피처들의 세트(예를 들어, 하나 이상의 이력 비디오 컬러 속성(242), 이력 비디오 공간 속성(244), 이력 비디오 시간 속성(246))에 대응하는 데이터 입력을 생성하여 비디오들의 한 세트의 가능한 입력 해상도들의 각각의 입력 해상도에 대한 머신 학습 모델을 훈련, 검증, 또는 테스팅할 수도 있다. 이와 같이, 비디오의 각각의 전형적인 해상도(예를 들어, 360p, 480p, 720p, 1080p 등)는 그 자신의 모델을 가질 수도 있고, 임의의 비표준 임의 입력 해상도들(예를 들어, 1922x1084)은 동일한 종횡비를 갖는 가장 가까운 표준 해상도로 재스케일링될 수 있는데, 이때 임의의 누락된 부분이 0으로 패딩된다(padded). 예를 들어, 제1 머신 학습 모델은 360p 해상도를 갖는 입력 비디오들에 대해 훈련, 검증, 및 테스팅될 수도 있다. 제2 머신 학습 모델은 480p 해상도를 갖는 입력 비디오들에 대해 훈련, 검증, 및 테스팅될 수도 있다. 제3 머신 학습 모델은 720p 해상도 등을 갖는 입력 비디오들에 대해 훈련, 검증, 및 테스팅될 수도 있다.
훈련 세트 생성기(231)는 머신 학습 모델(들)을 훈련, 검증, 및 테스팅하기 위해 한 세트의 이력 비디오들(240)을 활용할 수도 있다. 일부 구현들에서, 콘텐츠 공유 플랫폼의 기존 데이터 세트는, 구체적으로는 머신 학습 모델들을 훈련, 검증, 및 테스팅하는 목적들을 위해, 이력 비디오 데이터 세트(240)로서 큐레이팅 및 활용될 수도 있다. 일 구현에서, 이력 비디오 데이터 세트(240)는, 다양한 입력 해상도들(예를 들어, 360p, 480p, 720p, 1080p, 2160p(4K) 등)에서 짧은 지속기간(예를 들어, 20초 등)의 다수의(예를 들어, 대략 수천 개의) 비디오들을 포함할 수도 있다. 일부 구현들에서, 이력 비디오 데이터 세트(240)에서의 데이터(예를 들어, 비디오들)는 훈련 데이터 및 테스팅 데이터로 분할될 수도 있다. 예를 들어, 이력 비디오 데이터 세트(240)의 비디오들은 훈련 및 테스팅을 위해 각각 80% 및 20%로 랜덤하게 분할될 수도 있다.
한 세트의 훈련 입력 피처들(210) 및 훈련 출력 레이블들(220)을 생성하기 위해, 훈련 세트 생성기(231)는 이력 비디오 데이터 세트(240)에서의 비디오들 각각에 대해 다음의 프로세스를 통해 반복할 수도 있다. 참조의 용이성을 위해, 이력 비디오 데이터 세트(240)의 제1 참조 비디오와 관련하여 프로세스가 설명된다. 유사한 프로세스가 이력 비디오 데이터 세트(240)에서의 모든 비디오들에 대해 훈련 세트 생성기(231)에 의해 수행될 수도 있다는 것이 이해되어야 한다.
제1 참조 비디오와 관련하여, 훈련 세트 생성기(231)는 제1 참조 비디오의 훈련 입력 피처들(210)을 획득한다. 일 구현에서, 제1 참조 비디오의 각각의 프레임에 대해, 한 세트의 비디오 컬러 속성들(242), 비디오 공간 속성들(244), 및 비디오 시간 속성들(246)이 제1 참조 비디오의 각각의 프레임에 대해 추출된다. 비디오 컬러 속성(242)은 프레임의 픽셀들의 (Y'UV 모델의) Y 세기 값들 또는 RGB 세기 값들 중 적어도 하나를 참조할 수도 있다.
비디오 공간 속성들(244)은 가버 필터 피처 뱅크를 참조할 수도 있다. 가버 필터는 텍스처 분석을 위해 사용되는 선형 필터인데, 이는 분석 포인트 또는 분석 영역 주위의 로컬화된 영역에서 특정 방향들로 프레임에 임의의 특정 주파수 콘텐츠가 있는지 여부를 분석한다. 공간 도메인에서, 2D 가버 필터는, 사인파의 평면파에 의해 변조된 가우스 커널 함수(Gaussian kernel function)이다. 본 개시내용의 구현들은 또한, 블록 기반 피처들(예를 들어, SSM, VMS 등)과 같은, 프레임의 다른 공간 피처들을 활용할 수도 있다.
비디오 시간 속성들(246)은 광학 흐름을 참조할 수도 있다. 광학 흐름은, 관찰자와 장면 사이의 상대 운동(relative motion)에 의해 야기되는 시각 장면에서의 객체들, 표면들, 및 에지들의 겉보기 운동의 패턴을 지칭한다. 광학 흐름은 이미지에서의 밝기 패턴의 겉보기 이동 속도들의 분포로서 정의될 수도 있다. 본 개시내용의 구현들은 또한, 이웃 프레임들의 픽셀들 사이의 차이를 컴퓨팅하는 것과 같은, 프레임의 다른 시간 피처들을 활용할 수도 있다.
제1 참조 비디오에서의 각각의 프레임에 대한 이력 비디오 컬러 속성들(242), 이력 비디오 공간 속성들(244), 및 이력 비디오 시간 속성들(246)의 추출된 세트는 그 후에 제1 참조 비디오에 대한 제1 세트의 훈련 입력 피처들로서 조합된다. 입력 비디오의 프레임들로부터의 피처들의 다른 세트들이 또한 본 개시내용의 구현들에서 고려될 수도 있다.
제1 참조 비디오에 대한 타깃 출력 레이블들(220)을 획득하기 위해, 훈련 세트 생성기(231)는 복수의 트랜스코딩 구성들(예를 들어, H.264 인코더를 이용하는 0 내지 51의 CRF(Constant Rate Factor)의 스위핑)을 이용하여, 제1 참조 비디오를 복수의 유효 비디오 포맷들(예를 들어, 360p, 480p, 720p, 1080p, 21260p(4K) 등)로 트랜스코딩할 수도 있다. VP9 코덱과 같은, 다른 코덱들 및 인코더들이 본 개시내용의 다른 구현들에서 사용될 수 있다. 그 후에, 훈련 세트 생성기(231)는 트랜스코딩된 버전들 모두를 복수의 디스플레이 해상도들(예를 들어, 360p, 480p, 720p, 1080p, 2160p(4K) 등)뿐만 아니라, 입력 원본 버전으로 재스케일링한다. 각각의 재스케일링된 트랜스코딩된 버전 및 원본 버전은, 제1 참조 비디오의 각각의 재스케일링된 트랜스코딩된 버전 및 원본 버전의 각각의 프레임에 대한 품질 스코어들을 획득하기 위한 소스 및 참조로서 품질 분석기에 제공된다.
일 구현에서, 품질 스코어는 제1 참조 비디오의 각각의 재스케일링된 트랜스코딩된 버전 및 원래 버전의 각각의 프레임에 대한 PSNR 측정치일 수도 있다. PSNR은, 신호의 최대 가능 전력과 그의 표현의 충실도에 영향을 미치는 손상 잡음 전력 사이의 비율을 지칭한다. PSNR은 로그 데시벨 스케일(logarithmic decibel scale)의 관점에서 표현될 수도 있다. 일 구현에서, 품질 스코어는 제1 참조 비디오의 각각의 재스케일링된 트랜스코딩된 버전 및 원래 버전의 각각의 프레임에 대한 VMAF 측정치일 수도 있다. VMAF는, 참조 및 왜곡된 비디오 시퀀스에 기초하여 대상 비디오 품질을 예측하는 전체 참조 비디오 품질 메트릭을 지칭한다.
컴퓨팅된 품질 스코어들은 제1 참조 비디오의 각각의 가능한 비디오 포맷, 트랜스코딩 구성, 및 디스플레이 해상도에 대한 타깃 출력 레이블들(220)에 대한 비디오 분류(예를 들어, 입력 지상 실측 레이블들)(248)로서 사용된다.
도 3은 특정 실시예들에 따른, 비디오 분류들(346)을 결정하기 위한 시스템(300)을 예시하는 블록도이다. 블록 310에서, 시스템(300)은 이력 비디오들(342)(예를 들어, 도 2의 이력 비디오 데이터 세트(240))의 (예를 들어, 도 1의 서버 머신(130)의 훈련 세트 생성기(131) 및/또는 도 2의 훈련 세트 생성기(231)를 통한) 데이터 파티셔닝을 수행하여 훈련 세트(302), 검증 세트(304), 및 테스팅 세트(306)를 생성한다. 예를 들어, 훈련 세트는 이력 비디오들(342)의 60%일 수도 있고, 검증 세트는 이력 비디오들(342)의 20%일 수도 있으며, 검증 세트는 이력 비디오들(342)의 20%일 수도 있다. 도 2와 관련하여 상기에 논의된 바와 같이, 시스템(300)은 훈련 세트, 검증 세트, 및 테스팅 세트 각각에 대한 복수의 세트들의 피처들(예를 들어, 컬러 속성들, 공간 속성들, 시간 속성들)을 생성할 수도 있다.
블록 312에서, 시스템(300)은 훈련 세트(302)를 사용하여 (예를 들어, 도 1의 훈련 엔진(141)을 통해) 모델 훈련을 수행한다. 시스템(300)은 훈련 세트(302)의 다수의 세트들의 피처들(예를 들어, 훈련 세트(302)의 제1 세트의 피처들, 훈련 세트(302)의 제2 세트의 피처들 등)을 사용하여 다수의 모델들을 훈련시킬 수도 있다. 예를 들어, 시스템(300)은 (예를 들어, 360p와 같은 제1 입력 해상도에 대해) 훈련 세트에서의 제1 세트의 피처들을 사용하여 제1 훈련된 머신 학습 모델을 생성하도록 그리고 (예를 들어, 480p와 같은 제2 입력 해상도에 대해) 훈련 세트에서의 제2 세트의 피처들을 사용하여 제2 훈련된 머신 학습 모델을 생성하도록 머신 학습 모델을 훈련시킬 수도 있다. 일부 실시예들에서, 피처들의 다양한 순열들을 갖는 모델들 및 모델들의 조합들을 포함하는 수많은 모델들이 생성될 수도 있다.
일부 구현에서, 콘볼루션 뉴럴 네트워크(CNN) 훈련 모델이 모델 훈련을 수행하는 데 활용된다. CNN 훈련 모델들의 일부 예들은 ResNet 및 EfficientNet을 포함한다. 일부 구현들에서, 다른 훈련 모델들이 또한 활용될 수 있다.
블록 314에서, 시스템(300)은 검증 세트(304)를 사용하여 모델 검증을 수행한다. 시스템(300)은 검증 세트(304)의 대응하는 세트의 피처들을 사용하여 훈련된 모델들 각각을 검증할 수도 있다. 예를 들어, 시스템(300)은 (예를 들어, 360p 입력 해상도에 대해) 검증 세트에서의 제1 세트의 피처들을 사용하여 제1 훈련된 머신 학습 모델을 그리고 (예를 들어, 480p 입력 해상도에 대해) 검증 세트에서의 제2 세트의 피처들을 사용하여 제2 훈련된 머신 학습 모델을 검증할 수도 있다. 일부 실시예들에서, 시스템(300)은 블록 312에서 생성된 수많은 모델들(예를 들어, 피처들의 다양한 순열들을 갖는 모델들, 모델들의 조합들 등)을 검증할 수도 있다.
블록 314에서, 시스템(300)은 (예를 들어, 모델 검증을 통해) 하나 이상의 훈련된 모델 각각의 정확도를 결정할 수도 있고, 훈련된 모델들 중 하나 이상이 임계 정확도를 충족시키는 정확도를 갖는지 여부를 결정할 수도 있다. 예를 들어, 예측된 품질과 지상 실측 사이의 절대 차이에 기초하여 정의되는 손실 함수가 활용될 수도 있다. 차이들의 고차 ||L|| 놈(norm)들이 다른 구현들에서도 또한 고려될 수 있다. 훈련된 모델들 중 어느 것도 임계 정확도를 충족시키는 정확도를 갖지 않는다는 결정에 응답하여, 흐름은, 시스템(300)이 훈련 세트의 피처들의 상이한 세트들을 사용하여 모델 훈련을 수행하는 블록 312로 리턴된다. 훈련된 모델들 중 하나 이상이 임계 정확도를 충족시키는 정확도를 갖는다는 결정에 응답하여, 흐름은 블록 316으로 계속된다. 시스템(300)은 (예를 들어, 검증 세트에 기초하여) 임계 정확도 미만인 정확도를 갖는 훈련된 머신 학습 모델들을 폐기할 수도 있다.
블록 316에서, 시스템(300)은, 임계 정확도를 충족시키는 하나 이상의 훈련된 모델 중 어느 것이 가장 높은 정확도를 갖는지를 결정하기 위해 모델 선택을 수행한다(예를 들어, 블록 314의 검증에 기초하여, 선택된 모델(308)). 임계 정확도를 충족시키는 훈련된 모델들 중 2개 이상이 동일한 정확도를 갖는다는 결정에 응답하여, 흐름은, 시스템(300)이 가장 높은 정확도를 갖는 훈련된 모델을 결정하기 위한 피처들의 추가로 정밀화된 세트들에 대응하는 추가로 정밀화된 훈련 세트들을 사용하여 모델 훈련을 수행하는 블록 312로 리턴될 수도 있다.
블록 318에서, 시스템(300)은 선택된 모델(308)을 테스팅하기 위해 테스팅 세트(306)를 사용하여 모델 테스팅을 수행한다. 시스템(300)은 (예를 들어, 테스팅 세트(306)의 제1 세트의 피처들에 기초하여) 제1 훈련된 머신 학습 모델이 임계 정확도를 충족시키는지를 결정하기 위해, 테스팅 세트에서의 제1 세트의 피처들을 사용하여, 제1 훈련된 머신 학습 모델을 테스팅할 수도 있다. 선택된 모델(308)의 정확도가 임계 정확도를 충족시키지 않는다는(예를 들어, 선택된 모델(308)이 훈련 세트(302) 및/또는 검증 세트(304)에 과도하게 적합하고 테스팅 세트(306)와 같은 다른 데이터 세트들에 적용가능하지 않는다는) 것에 응답하여, 흐름은, 시스템(300)이 상이한 세트들의 피처들에 대응하는 상이한 훈련 세트들을 사용하여 모델 훈련(예를 들어, 재훈련)을 수행하는 블록 312로 계속된다. 테스팅 세트(306)에 기초하여 선택된 모델(308)이 임계 정확도를 충족시키는 정확도를 갖는다는 결정에 응답하여, 흐름은 블록 320으로 계속된다. 적어도 블록 312에서, 모델은 예측들을 행하기 위해 이력 이미지들(342)에서의 패턴들을 학습할 수도 있고, 블록 318에서, 시스템(300)은 예측들을 테스팅하기 위해 나머지 데이터(예를 들어, 테스팅 세트(306))에 대해 모델을 적용할 수도 있다.
블록 320에서, 시스템(300)은 훈련된 모델(예를 들어, 선택된 모델(308))을 사용하여 입력 비디오들(348) 및 대응하는 비디오 속성들(344)을 수신하고, 훈련된 모델의 출력으로부터, 비디오 포맷, 트랜스코딩 구성, 및 디스플레이 해상도 튜플의 각각의 가능한 조합에서의 입력 비디오의 예측된 품질 스코어를 표현하는 대응하는 비디오 분류(346)를 추출한다. 단일 입력 비디오의 경우, 훈련된 모델은 각각의 샘플링된 프레임에 대한 프레임당 품질 스코어들을 예측하는 데 사용될 수도 있고, 그 후에 이들 프레임 스코어들이 집계되어 특정 비디오 포맷, 트랜스코딩 구성, 및 디스플레이 해상도 튜플에서 입력 비디오에 대한 전체 스코어를 얻을 수도 있다. 다른 실현들에서, 집계 방법이 또한 달라질 수 있는데, 즉, 평균 대 가중 평균(mean to weighted mean) 등으로 달라질 수 있다.
최종 출력은 모든 가능한 인덱스 튜플들(video_format_index, transcoding_config_index, display_resolution_index)에 대한 3D 품질 매트릭스이다. 본 개시내용의 구현들의 훈련된 모델의 출력의 일 예시적인 그래픽 표현이 도 8a 및 도 8b에 도시되어 있다. 아래에 추가로 논의되는 도 8a 및 도 8b는, 360p, 480p, 및 720p 버전들로 트랜스코딩되고 480p 및 720p에서 디스플레이되는 비디오에 대한 예측된 VMAF 스코어들을 도시하고, 여기서 훈련된 모델에 의해 예측된 다양한 스코어들은 대응하는 지상 실측 스코어들에 매우 가깝다.
일부 실시예들에서, 데이터 세트를 생성하고 데이터 세트를 사용하여 머신 학습 모델(160)을 훈련, 검증, 또는 테스팅하는 것에 후속하여, 머신 학습 모델(160)은 추가로 (예를 들어, 수동으로 결정된 이미지 분류들 등을 사용하여) 훈련, 검증, 테스팅되거나, 또는 (예를 들어, 뉴럴 네트워크에서의 커넥션 가중치들과 같은, 머신 학습 모델(160)의 입력 데이터와 연관된 가중치들을 조정하여) 조정될 수도 있다.
일부 실시예들에서, 액트(act)들(310 내지 320) 중 하나 이상은 다양한 순서들로 그리고/또는 본 명세서에 제시 및 설명되지 않은 다른 액트들과 함께 발생할 수도 있다. 일부 실시예들에서, 액트들(310 내지 320) 중 하나 이상이 수행되지 않을 수도 있다. 예를 들어, 일부 실시예들에서, 블록 310의 데이터 파티셔닝, 블록 314의 모델 검증, 블록 316의 모델 선택, 또는 블록 318의 모델 테스팅 중 하나 이상이 수행되지 않을 수도 있다.
본 개시내용의 구현들 동안의 성능 및 레이턴시 개선들을 위해, 훈련된 모델은 입력 비디오의 시간 샘플링과 조합될 수도 있다. 예를 들어, 시스템은 전체 품질을 예측하기 위해 훈련된 모델에 대한 입력으로서 입력 비디오의 (모든 프레임들보다는 오히려) 몇몇 샘플링된 프레임을 활용할 수도 있다. 입력 비디오의 그러한 시간 샘플링을 사용하면, 정확도의 손실이 거의 또는 전혀 없이 상당한 속도 개선들이 실현될 수도 있다. 이들 속도 이득들은 모델의 어떠한 재훈련 없이도 획득될 수 있다.
본 개시내용의 구현들에서, 훈련된 모델(320)을 사용하는 것으로부터 획득된 비디오 분류들(346)은 클라이언트 측에서(예를 들어, 도 1의 미디어 뷰어(105)와 같은 미디어 뷰어에서) 포맷 선택을 최적화시키는 데 사용될 수도 있다. 도 8a에 도시된 예의 경우, 디스플레이 해상도가 480p이고, 플레이되는 현재 버전이 360p일 때, 모든 트랜스코딩된 버전들에 대해, 대역폭이 충분하다고 가정한다. 예측된 품질 스코어들에 따르면, 480p 및 720p 버전들의 지각 품질이 매우 가깝고, 이들 양측 모두가 360p 버전보다 상당히 더 높다. 이 경우에, 최적의 포맷은 720p 대신에, 480p 트랜스코딩된 버전이다.
예측된 스코어들을 제공하는 현재 제안된 알고리즘들의 부존재 시에, 미디어 뷰어는 720p 버전으로 맹목적으로 이동시킬 수도 있는데, 이는 더 많은 대역폭을 활용하지만 실제 시청 경험(예를 들어, 예로서 PSNR 또는 VMAF에 의해 측정된 바와 같은 지각 품질)을 개선시키지 않을 것이다. 디스플레이 해상도가 720p(도 8b)일 때, 480p와 720p 사이의 차이가 VMAF에서 6포인트들보다 더 크므로(이는 분별 차이(noticeable difference)들에 있어서 1스텝 더 높은 것으로 대략적으로 해석된다), 최대 720p로 이동시키면 실제 지각 품질을 개선시킨다.
본 개시내용의 구현들의 다른 이점은, 그것이 (예를 들어, CRF 레벨에서) 정밀한 품질 평가를 가능하게 한다는 점이다. 예를 들어, 미디어 뷰어는 480p CRF 40 버전으로부터 720p CRF 30 버전으로 스위칭하기 위해 480p 디스플레이 해상도에 대한 정확한 품질 개선을 계산하여, 포맷 선택을 더욱 최적화시킬 수 있다.
도 4는 본 개시내용의 하나 이상의 양태에 따른, 머신 학습 모델을 훈련시키기 위한 방법(400)의 일 예의 흐름도를 도시한다. 이 방법은, 하드웨어(회로부, 전용 로직 등), (범용 컴퓨터 시스템 또는 전용 머신 상에서 실행되는 것과 같은) 소프트웨어, 또는 이들의 조합을 포함할 수도 있는 프로세싱 로직에 의해 수행된다. 일 구현에서, 이 방법은 도 1의 컴퓨터 시스템(100)에 의해 수행되는 한편, 일부 다른 구현들에서, 도 4의 하나 이상의 블록은 도면들에 도시되지 않은 하나 이상의 다른 머신에 의해 수행될 수도 있다. 일부 양태들에서, 도 4의 하나 이상의 블록은 도 1의 서버 머신(130)의 훈련 세트 생성기(131) 및/또는 도 2의 훈련 세트 생성기(231)에 의해 수행될 수도 있다.
설명의 단순화를 위해, 방법들은 일련의 액트들로서 도시 및 설명된다. 그러나, 본 개시내용에 따른 액트들은 다양한 순서들로 그리고/또는 동시에, 그리고 본 명세서에 제시 및 설명되지 않은 다른 액트들과 함께 발생할 수 있다. 게다가, 개시된 청구 대상에 따라 방법들을 구현하기 위해 모든 예시된 액트들이 요구되는 것은 아닐 수도 있다. 부가적으로, 본 기술분야의 통상의 기술자는 방법들이 상태도 또는 이벤트들을 통해 일련의 상호관련된 상태들로서 대안적으로 표현될 수 있다는 것을 이해하고 인식할 것이다. 부가적으로, 본 명세서에 개시된 방법들은 그러한 방법들을 컴퓨팅 디바이스들로 이송 및 전송하는 것을 용이하게 하기 위해 제조 물품 상에 저장되는 것이 가능하다는 것이 인식되어야 한다. 본 명세서에서 사용되는 바와 같이, 제조 물품이라는 용어는 임의의 컴퓨터 판독가능 디바이스 또는 저장 매체로부터 액세스가능한 컴퓨터 프로그램을 포괄하도록 의도된다.
방법(400)은 머신 학습 모델에 대해 훈련 데이터를 생성하는 것으로 시작한다. 일부 구현들에서, 블록 401에서, 훈련 세트 T가 빈 세트로 초기화된다. 블록 402에서, 참조 비디오는 복수의 트랜스코딩 구성들을 이용하여 복수의 해상도 포맷들로 트랜스코딩된다. 일 구현에서, 복수의 해상도 포맷들은 360p, 480, 720p, 1080p, 2160p(4K) 등을 포함한다. 복수의 트랜스코딩 구성들은, H.264 인코더를 이용하는 0 내지 51의 CRF를 포함할 수도 있다. VP9 코덱과 같은, 다른 코덱들 및 인코더들이 트랜스코딩 구성들에 대한 본 개시내용의 구현들에서 사용될 수 있다. 일 예에서, 참조 비디오는, CRF 0 내지 51의 H.264 인코더의 각각의 트랜스코딩 구성에서, 360p, 480p, 720p, 1080p, 및 2160p의 각각의 해상도 포맷으로 트랜스코딩되는 480p 해상도를 갖는 비디오일 수도 있다. 예를 들어, 480p 참조 비디오는, 모든 해상도 포맷들 및 트랜스코딩 구성들에 대해, 720p CRF 0 버전 내지 720p CRF 51 버전 등으로 트랜스코딩되어, 참조 비디오의 복수의 상이한 트랜스코딩된 버전들을 발생시킬 수 있다.
블록 403에서, 블록 402에서 생성된 참조 비디오의 각각의 트랜스코딩된 버전은 복수의 상이한 디스플레이 해상도들로 재스케일링된다. 일 구현에서, 복수의 상이한 디스플레이 해상도들은, 참조 비디오의 트랜스코딩된 버전들을 재생하는 클라이언트 디바이스들의 가능한 디스플레이 해상도들을 표현한다. 복수의 상이한 디스플레이 해상도들은 360p, 480p, 720p, 1080p, 2160p 등을 포함할 수도 있다. 상기의 예를 참조하여, 480p 참조 비디오의 720p CRF 30 버전을 추가의 예로서 취하면, 720p CRF 30 버전이 360p, 480p, 720p, 1080p, 및 2160p의 각각의 디스플레이 해상도로 재스케일링되어 480p 참조 비디오의 재스케일링된 트랜스코딩된 버전들을 생성할 수 있다. 이 재스케일링은 블록 402에서 생성된 참조 비디오의 각각의 트랜스코딩된 버전에 대해 수행되어 참조 비디오의 복수의 재스케일링된 트랜스코딩된 버전들을 생성한다.
블록 404에서, 참조 비디오의 각각의 재스케일링된 트랜스코딩된 버전의 각각의 프레임에 대한 품질 스코어들이 획득된다. 일 구현에서, 품질 스코어들은, 참조 비디오의 재스케일링된 트랜스코딩된 버전들의 프레임들에 대해 결정된 VMAF 스코어 또는 PSNR 스코어일 수도 있다. PSNR은, 신호의 최대 가능 전력과 그의 표현의 충실도에 영향을 미치는 손상 잡음 전력 사이의 비율을 지칭한다. PSNR은 로그 데시벨 스케일의 관점에서 표현될 수도 있다. VMAF는, 참조 및 왜곡된 비디오 시퀀스에 기초하여 대상 비디오 품질을 예측하는 전체 참조 비디오 품질 메트릭을 지칭한다.
블록 405에서, 참조 비디오의 각각의 프레임에 대해 입력/출력 매핑이 생성된다. 입력/출력 매핑은, 훈련 입력이 특정 타깃 출력들에 매핑되는 것을 지칭한다. 훈련 입력은 참조 비디오의 속성들의 세트를 포함하거나 또는 이에 기초한다. 훈련 입력에 대한 타깃 출력은 참조 비디오의 재스케일링된 트랜스코딩된 버전들의 프레임들에 대한 품질 스코어들을 식별한다. 훈련 입력은 타깃 출력과 연관된다(또는 이에 매핑된다). 일 구현에서, 참조 비디오의 속성들의 세트는 컬러 속성들(예를 들어, 각각의 프레임의 Y 세기 값들 또는 RGB 세기 값들), 공간 속성들(예를 들어, 각각의 프레임의 가버 필터 피처), 및 시간 속성들(예를 들어, 각각의 프레임의 광학 흐름)을 포함한다. 일 구현에서, 참조 비디오의 각각의 프레임의 속성들의 세트는 참조 비디오의 각각의 재스케일링된 트랜스코딩된 버전의 각각의 프레임의 품질 스코어들에 대한 입력으로서 매핑된다. 블록 406에서, 블록 405에서 생성된 입력/출력 매핑이 훈련 세트 T에 부가된다.
블록 407은 훈련 세트 T가 머신 학습 모델(160)을 훈련시키기에 충분한지 여부에 기초하여 분기한다. 충분하다면, 실행은 블록 408로 진행하고, 그렇지 않으면, 블록 402에서 실행이 다시 계속된다. 일부 구현들에서, 훈련 세트 T의 충분성은 훈련 세트에서의 입력/출력 매핑들의 수에 기초하여 결정될 수도 있는 한편, 일부 다른 구현들에서, 훈련 세트 T의 충분성은 입력/출력 매핑들의 수에 부가적으로 또는 그 대신에 하나 이상의 다른 기준(예를 들어, 훈련 예들의 다이버시티(diversity)의 측정 등)에 기초하여 결정될 수도 있다는 것에 주목해야 한다.
블록 408에서, 머신 학습 모델(160)을 훈련시키기 위해 훈련 세트 T가 제공된다. 일 구현에서, 훈련을 수행하기 위해 훈련 세트 T가 서버 머신(140)의 훈련 엔진(141)에 제공된다. 뉴럴 네트워크(예를 들어, CNN)의 경우에, 예를 들어, 주어진 입력/출력 매핑의 입력 값들(예를 들어, 훈련 이미지의 픽셀 값들 등)이 뉴럴 네트워크에 입력되고, 입력/출력 매핑의 출력 값들이 뉴럴 네트워크의 출력 노드들에 저장된다. 뉴럴 네트워크에서의 커넥션 가중치들이 그 후에 학습 알고리즘(예를 들어, 역전파 등)에 따라 조정되고, 훈련 세트 T에서의 다른 입력/출력 매핑들에 대해 프로시저가 반복된다. 블록 408 후에, 머신 학습 모델(160)은 그 후에 (예를 들어, 아래에 설명되는 도 5의 방법(500)에 따라) 비디오들을 프로세싱하는 데 사용될 수 있다.
도 5는 본 개시내용의 하나 이상의 양태에 따른, 훈련된 머신 학습 모델을 사용하여 비디오들을 프로세싱하기 위한 방법(500)의 일 예의 흐름도를 도시한다. 이 방법은, 하드웨어(회로부, 전용 로직 등), (범용 컴퓨터 시스템 또는 전용 머신 상에서 실행되는 것과 같은) 소프트웨어, 또는 이들의 조합을 포함할 수도 있는 프로세싱 로직에 의해 수행된다. 일 구현에서, 이 방법은 도 1의 서버 머신(150) 및 훈련된 머신 학습 모델(160)을 사용하여 수행되는 한편, 일부 다른 구현들에서, 도 5의 하나 이상의 블록은 도면들에 도시되지 않은 하나 이상의 다른 머신에 의해 수행될 수도 있다.
방법(500)은, (예를 들어, 사용자 디바이스 또는 업로드 서버(125)와 같은 서버로부터) 입력 비디오를 수신하는 단계 및 훈련된 머신 학습 모델(160)과 같은 훈련된 모델을 사용하여 입력 비디오를 프로세싱하는 단계를 포함할 수도 있다. 훈련된 모델은, 입력 비디오의 프레임들의 픽셀 데이터에 기초하여, 입력 비디오의 예측된 품질 스코어를 표시하는 하나 이상의 출력을 생성하도록 구성될 수도 있다.
일부 구현들에서, 블록 501에서, 비디오(입력 비디오)가 프로세싱을 위해 식별될 수도 있다. 일 예에서, 비디오는 업로드된 비디오(예를 들어, 콘텐츠 공유 플랫폼에 업로드된 비디오)의 하나 이상의 프레임을 포함한다.
블록 502에서, 프레임들의 서브세트가 비디오의 프레임들로부터 추출된다. 일 구현에서, 비디오에서의 매 10개의 프레임 중에서 하나가 추출될 수도 있다. 블록 503에서, 각각의 추출된 프레임에 대해, 프레임의 속성들의 세트가 식별된다. 속성들에 대한 세트는 컬러 속성들(예를 들어, 각각의 프레임의 Y 세기 값들 또는 RGB 세기 값들), 공간 속성들(예를 들어, 각각의 프레임의 가버 필터 피처), 및 시간 속성들(예를 들어, 각각의 프레임의 광학 흐름)을 포함할 수도 있다.
블록 504에서, 속성들의 세트가 훈련된 머신 학습 모델에 대한 입력으로서 제공된다. 일 구현에서, 훈련된 머신 학습 모델은 도 4와 관련하여 설명된 방법(400)을 사용하여 훈련된다. 블록 505에서, 훈련된 머신 학습 모델로부터 하나 이상의 출력이 획득된다. 일 구현에서, 훈련된 머신 학습 모델로부터의 출력들은, 비디오의 각각의 추출된 프레임에 대응하는 품질 스코어들이다. 훈련된 머신 학습 모델은, 입력 비디오의 비디오 해상도 포맷, 트랜스코딩 구성, 및 디스플레이 해상도에 대한 모든 가능한 인덱스 튜플들에 각각이 대응하는 복수의 품질 스코어들을 생성한다.
블록 506에서, 비디오의 추출된 프레임들에 대한 프레임당 품질 스코어들이 조합되어 비디오에 대한 전체 품질 스코어를 생성한다. 비디오 해상도 포맷, 트랜스코딩 구성, 및 디스플레이 해상도의 가능한 인덱스 튜플들 각각에 대해 전체 품질 스코어가 생성된다. 일 구현에서, 프레임당 품질 스코어들을 조합하는 것은, 스코어들을 집계하는 것을 포함한다. 일부 구현들에서, 집계 프로세스는 달라질 수 있고 평균 대 가중 평균 등을 포함할 수 있다.
블록 507에서, 훈련된 머신 학습 모델의 최종 출력이 생성되고, 여기서 최종 출력은, 비디오 해상도 포맷, 트랜스코딩 구성, 및 디스플레이 해상도의 모든 가능한 인덱스 튜플들에 대한 3D 품질 매트릭스이다.
도 6은 본 개시내용의 하나 이상의 양태에 따른, 훈련된 머신 학습 모델을 사용하여 비디오들을 프로세싱하고 서버 디바이스에서 훈련된 머신 학습 모델의 출력을 사용하여 포맷 선택을 최적화시키기 위한 방법(600)의 일 예의 흐름도를 도시한다. 이 방법은, 하드웨어(회로부, 전용 로직 등), (범용 컴퓨터 시스템 또는 전용 머신 상에서 실행되는 것과 같은) 소프트웨어, 또는 이들의 조합을 포함할 수도 있는 프로세싱 로직에 의해 수행된다. 일 구현에서, 이 방법은 도 1의 서버 머신(150) 및 훈련된 머신 학습 모델(160)을 사용하여 수행되는 한편, 일부 다른 구현들에서, 도 6의 하나 이상의 블록은 도면들에 도시되지 않은 하나 이상의 다른 머신에 의해 수행될 수도 있다.
방법(600)은, (예를 들어, 사용자 디바이스 또는 업로드 서버(125)와 같은 서버로부터) 입력 비디오를 수신하는 단계 및 훈련된 머신 학습 모델(160)과 같은 훈련된 모델을 사용하여 입력 비디오를 프로세싱하는 단계를 포함할 수도 있다. 훈련된 모델은, 입력 비디오의 프레임들의 픽셀 데이터에 기초하여, 입력 비디오의 예측된 품질 스코어를 표시하는 하나 이상의 출력을 생성하도록 구성될 수도 있다.
일부 구현들에서, 블록 601에서, 비디오(입력 비디오)가 프로세싱을 위해 식별될 수도 있다. 일 예에서, 비디오는 업로드된 비디오(예를 들어, 콘텐츠 공유 플랫폼에 업로드된 비디오)의 하나 이상의 프레임을 포함한다.
블록 602에서, 비디오의 속성들의 세트가 식별된다. 일 구현에서, 속성들의 세트는 비디오의 프레임들의 서브세트 각각에 대해 결정된다. 속성들에 대한 세트는 컬러 속성들(예를 들어, 비디오의 각각의 프레임의 Y 세기 값들 또는 RGB 세기 값들), 공간 속성들(예를 들어, 비디오의 각각의 프레임의 가버 필터 피처), 및 시간 속성들(예를 들어, 비디오의 각각의 프레임의 광학 흐름)을 포함할 수도 있다.
블록 603에서, 속성들의 세트가 훈련된 머신 학습 모델에 대한 입력으로서 제공된다. 일 구현에서, 훈련된 머신 학습 모델은 도 4와 관련하여 설명된 방법(400)을 사용하여 훈련된다. 블록 604에서, 훈련된 머신 학습 모델로부터 하나 이상의 출력이 획득된다. 일 구현에서, 훈련된 머신 학습 모델로부터의 출력들은, 비디오의 각각의 추출된 프레임에 대응하는 품질 스코어들이다. 훈련된 머신 학습 모델은, 비디오의 비디오 해상도 포맷, 트랜스코딩 구성, 및 디스플레이 해상도에 대한 모든 가능한 인덱스 튜플들에 각각이 대응하는 복수의 품질 스코어들을 생성한다. 일 구현에서, 비디오의 추출된 프레임들에 대한 프레임당 품질 스코어들이 조합되어 비디오에 대한 전체 품질 스코어를 생성한다. 비디오 해상도 포맷, 트랜스코딩 구성, 및 디스플레이 해상도의 가능한 인덱스 튜플들 각각에 대해 전체 품질 스코어가 생성된다. 일 구현에서, 프레임당 품질 스코어들을 조합하는 것은, 스코어들을 집계하는 것을 포함한다. 일부 구현들에서, 집계 프로세스는 달라질 수 있고 평균 대 가중 평균 등을 포함할 수 있다.
블록 605에서, 블록 604에서 획득된 출력들로부터 품질 스코어 데이터가 추출된다. 일 구현에서, 품질 스코어 데이터는, 비디오의 각각의 재스케일링된 트랜스코딩된 버전에 대응하는 품질 스코어들을 포함한다. 품질 스코어들 각각은 특정 디스플레이 해상도에서 비디오의 개개의 재스케일링된 트랜스코딩된 구성에서의 비디오의 지각 품질을 반영한다. 블록 606에서, 추출된 품질 스코어는 클라이언트 디바이스의 미디어 뷰어에서 선택할 해상도 포맷을 결정하는 데 사용된다. 일 구현에서, (도 1의 서버 머신(150)에서의 그리고/또는 클라이언트 디바이스(102A)의 미디어 뷰어(105)에서의) 포맷 분석 엔진(152)은 추출된 품질 스코어를 사용하여, 특정 디스플레이 해상도를 갖는 클라이언트 디바이스에서 해상도 포맷 및 트랜스코딩 구성을 선택할 수도 있다. 포맷 분석 엔진(152)은 품질 스코어를 비교하여 클라이언트 디바이스에 대한 최적의 해상도 포맷 및 트랜스코딩 구성 선택을 알릴 수도 있다.
도 7은 본 개시내용의 하나 이상의 양태에 따른, 클라이언트 디바이스에서 훈련된 머신 학습 모델의 출력을 사용하여 포맷 선택을 최적화시키기 위한 방법(700)의 일 예의 흐름도를 도시한다. 이 방법은, 하드웨어(회로부, 전용 로직 등), (범용 컴퓨터 시스템 또는 전용 머신 상에서 실행되는 것과 같은) 소프트웨어, 또는 이들의 조합을 포함할 수도 있는 프로세싱 로직에 의해 수행된다. 일 구현에서, 이 방법은 도 1의 클라이언트(102A 내지 102N)를 사용하여 수행되는 한편, 일부 다른 구현들에서, 도 7의 하나 이상의 블록은 도면들에 도시되지 않은 하나 이상의 다른 머신에 의해 수행될 수도 있다.
방법(700)은, 블록 701에서, 클라이언트 디바이스의 미디어 뷰어에서의 재생을 위해 (예를 들어, 업로드 서버(125)와 같은 서버로부터 클라이언트 디바이스(102A 내지 10N)에서) 입력 비디오를 수신하는 단계를 포함할 수도 있고, 여기서 클라이언트 디바이스는 특정 디스플레이 해상도를 갖는다. 블록 702에서, 클라이언트 디바이스는 현재 포맷 선택에서 비디오의 재생을 수행한다. 현재 포맷 선택은 현재 비디오 해상도 및 현재 트랜스코딩 구성을 포함할 수도 있다.
블록 703에서, 비디오에 대응하는 품질 스코어들이 액세스된다. 품질 스코어들은 도 1의 훈련된 머신 학습 모델(160)과 같은 훈련된 모델을 사용하여 생성된다. 훈련된 모델은, 입력 비디오의 프레임들의 픽셀 데이터에 기초하여, 비디오 해상도들, 트랜스코딩 구성들, 및 디스플레이 해상도의 다양한 튜플들에서 입력 비디오의 예측된 품질 스코어들을 표시하는 하나 이상의 출력을 생성하도록 구성될 수도 있다. 출력들은 (서버 머신(150)과 같은) 서버 디바이스에서 유지될 수도 있거나 또는 재생을 위해 비디오가 수신될 때 비디오와 함께 메타데이터로서 제공될 수도 있다. 일 구현에서, 훈련된 머신 학습 모델은 상술된 도 4의 방법(400)에 따라 훈련될 수도 있다.
판정 블록 704에서, 품질 스코어들이 클라이언트 디바이스의 특정 디스플레이 해상도에 대한 현재 포맷 선택과는 상이한 포맷 선택에서(예를 들어, 상이한 비디오 해상도 및/또는 트랜스코딩 구성에서) 지각 개선을 표시하는지 여부가 결정된다. 아래에 논의되는 도 8a 및 도 8b는 클라이언트 디바이스에서 포맷 선택을 최적화시키기 위해 본 개시내용의 구현들의 훈련된 머신 학습 모델의 품질 스코어들을 사용하는 예를 제공한다. 품질 스코어들이 상이한 포맷 선택에서 지각 개선을 표시하는 경우, 그러면 방법(700)은 블록 705로 진행하고, 여기서 비디오의 재생을 위한 현재 포맷 선택은, 클라이언트의 디스플레이 해상도에서 비디오의 지각 품질 개선을 제공하는 품질 스코어에 대응하는 포맷 선택(예를 들어, 비디오 해상도 및/또는 트랜스코딩 구성)으로 변경된다. 그 후에, 방법(700)은 새로운 포맷 선택에서 비디오의 재생을 계속하기 위해 블록 702로 리턴된다. 품질 스코어들이 판정 블록 704에서 상이한 포맷 선택에서 지각 품질 개선을 표시하지 않는 경우, 방법(700)은 현재 포맷 선택에서 비디오의 재생을 계속하기 위해 블록 702로 리턴된다.
도 8a 및 도 8b는 본 개시내용의 구현들에 따른, 포맷 선택을 최적화시키기 위한 훈련된 머신 학습 모델의 출력의 예시적인 그래픽 표현을 제공한다. 도 8a 및 도 8b는, 360p, 480p 및 720p 버전들로 트랜스코딩되고 480p 및 720p에서 디스플레이되는 비디오에 대한 예측된 VMAF 스코어들을 도시하고, 여기서 훈련된 모델에 의해 예측된 다양한 스코어들은 대응하는 지상 실측 스코어들에 매우 가깝다.
도 8a에 도시된 예의 경우, 디스플레이 해상도가 480p이고, 플레이되는 현재 버전이 360p일 때, 모든 트랜스코딩된 버전들에 대해 대역폭이 충분하다고 가정하여, 그래프가 예측된 품질 스코어들(예를 들어, VMAF)을 도시한다. 예측된 품질 스코어들에 따르면, 480p 및 720p 버전들의 지각 품질이 매우 가깝고, 이들 양측 모두가 360p 버전보다 상당히 더 높다. 이 경우에, 최적의 포맷은 720p 대신에, 480p 트랜스코딩된 버전이다.
예측된 스코어들을 제공하는 본 개시내용의 구현들의 부존재 시에, 미디어 뷰어는 최대 720p 버전으로 맹목적으로 이동시키는데, 이는 더 많은 대역폭을 활용하지만, 비디오의 실제 시청 경험(예를 들어, 지각 품질)을 개선시키지 않을 것이다. 디스플레이 해상도가 720p(도 8b)일 때, 480p와 720p 사이의 차이가 VMAF에서 6포인트들보다 더 크므로(이는 최소 분별 차이들에 있어서 1스텝 더 높은 것으로 대략적으로 해석된다), 최대 720p로 이동시키면 비디오의 실제 지각 품질을 개선시킨다. 이와 같이, 이 경우의 미디어 뷰어는 재생 동안 비디오의 지각 품질을 개선시키기 위해 최대 720p 버전으로 이동해야 한다.
본 개시내용의 구현들의 다른 이점은, 그것이 (CRF 레벨에서) 정밀한 품질 평가를 가능하게 한다는 점이다. 예를 들어, 도 8a 및 도 8b에 도시된 바와 같이, 미디어 뷰어는 480p CRF 40 버전으로부터 720p CRF 30 버전으로 스위칭하기 위해 480p 디스플레이 해상도에 대한 정확한 품질 개선을 계산하여, 포맷 선택을 더욱 최적화시킬 수 있다.
도 9는 본 개시내용의 하나 이상의 양태에 따라 동작하는 예시적인 컴퓨터 시스템(900)의 블록도를 도시한다. 다양한 예시적인 예들에서, 컴퓨터 시스템(900)은 도 1의 시스템 아키텍처(100) 내의 컴퓨팅 디바이스에 대응할 수도 있다. 특정 구현들에서, 컴퓨터 시스템(900)은 (예를 들어, 로컬 영역 네트워크(LAN), 인트라넷, 익스트라넷, 또는 인터넷과 같은 네트워크(630)를 통해) 다른 컴퓨터 시스템들에 연결될 수도 있다. 컴퓨터 시스템(900)은 클라이언트-서버 환경에서의 서버 또는 클라이언트 컴퓨터의 자격으로, 또는 피어-투-피어(peer-to-peer) 또는 분산형 네트워크 환경에서의 피어 컴퓨터로서 동작할 수도 있다. 컴퓨터 시스템(900)은 퍼스널 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 퍼스널 디지털 어시스턴스(Personal Digital Assistant)(PDA), 셀룰러 전화기, 웹 어플라이언스, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 임의의 디바이스에 의해 취해질 액션들을 특정하는 명령어들(순차적 또는 다른 것)의 세트를 실행하는 것이 가능한 그 임의의 디바이스에 의해 제공될 수도 있다. 추가로, "컴퓨터"라는 용어는 본 명세서에서 설명되는 방법들 중 임의의 하나 이상을 수행하기 위한 명령어들의 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 컴퓨터들의 임의의 콜렉션(collection)을 포함해야 한다.
추가의 양태에서, 컴퓨터 시스템(900)은 프로세싱 디바이스(902), 휘발성 메모리(904)(예를 들어, 랜덤 액세스 메모리(random access memory)(RAM)), 비휘발성 메모리(906)(예를 들어, 판독 전용 메모리(read-only memory)(ROM) 또는 전기적 소거가능 프로그래밍가능 ROM(electrically-erasable programmable ROM)(EEPROM)), 및 데이터 저장 디바이스(916)를 포함할 수도 있는데, 이들은 버스(908)를 통해 서로 통신할 수도 있다.
프로세싱 디바이스(902)는 (예를 들어, 복합 명령어 세트 컴퓨팅(complex instruction set computing)(CISC) 마이크로프로세서, 축소 명령어 세트 컴퓨팅(reduced instruction set computing)(RISC) 마이크로프로세서, 매우 긴 명령어 워드(very long instruction word)(VLIW) 마이크로프로세서, 다른 타입들의 명령어 세트들을 구현하는 마이크로프로세서, 또는 명령어 세트들의 타입들의 조합을 구현하는 마이크로프로세서와 같은) 범용 프로세서 또는 (예를 들어, 주문형 집적 회로(application specific integrated circuit)(ASIC), 필드 프로그래밍가능 게이트 어레이(field programmable gate array)(FPGA), 디지털 신호 프로세서(digital signal processor)(DSP), 또는 네트워크 프로세서와 같은) 특수화된 프로세서와 같은 하나 이상의 프로세서에 의해 제공될 수도 있다.
컴퓨터 시스템(900)은 네트워크 인터페이스 디바이스(922)를 더 포함할 수도 있다. 컴퓨터 시스템(900)은 또한 비디오 디스플레이 유닛(910)(예를 들어, LCD), 영숫자 입력 디바이스(912)(예를 들어, 키보드), 커서 제어 디바이스(914)(예를 들어, 마우스), 및 신호 생성 디바이스(920)를 포함할 수도 있다.
데이터 저장 디바이스(916)는, 도 4 내지 도 7의 방법들(400 내지 700) 각각을 구현하기 위한 명령어들을 포함하는, 본 명세서에서 설명되는 방법들 또는 기능들 중 임의의 하나 이상을 인코딩하는 명령어들(926)을 저장할 수도 있는 일시적 또는 비일시적 컴퓨터 판독가능 저장 매체(924)를 포함할 수도 있다.
명령어들(926)은 또한, 휘발성 메모리(904) 내에서 그리고/또는 프로세싱 디바이스(902) 내에서 컴퓨터 시스템(900)에 의한 그의 실행 동안 완전히 또는 부분적으로 상주할 수도 있고, 그에 따라, 휘발성 메모리(904) 및 프로세싱 디바이스(902)는 머신 판독가능 저장 매체들을 또한 구성할 수도 있다.
컴퓨터 판독가능 저장 매체(924)는 예시적인 예들에서 단일 매체로서 도시되어 있지만, "컴퓨터 판독가능 저장 매체"라는 용어는, 실행가능 명령어들의 하나 이상의 세트를 저장하는 단일 매체 또는 다수의 매체들(예를 들어, 중앙집중형 또는 분산형 데이터베이스, 및/또는 연관된 캐시들 및 서버들)을 포함해야 한다. "컴퓨터 판독가능 저장 매체"라는 용어는, 컴퓨터로 하여금 본 명세서에서 설명되는 방법들 중 임의의 하나 이상을 수행하게 하는 컴퓨터에 의한 실행을 위한 명령어들의 세트를 저장 또는 인코딩하는 것이 가능한 임의의 유형(tangible)의 매체를 또한 포함해야 한다. "컴퓨터 판독가능 저장 매체"라는 용어는 솔리드-스테이트 메모리들, 광학 매체들, 및 자기 매체들을 포함하지만, 이들로 제한되어서는 안 된다.
본 명세서에서 설명되는 방법들, 컴포넌트들, 및 피처들은 개별 하드웨어 컴포넌트들에 의해 구현될 수도 있거나, 또는 ASICS, FPGA들, DSP들 또는 유사한 디바이스들과 같은 다른 하드웨어 컴포넌트들의 기능성에 통합될 수도 있다. 부가적으로, 방법들, 컴포넌트들, 및 피처들은 하드웨어 디바이스들 내의 컴포넌트 모듈들 또는 기능 회로부에 의해 구현될 수도 있다. 추가로, 방법들, 컴포넌트들, 및 피처들은 하드웨어 디바이스들 및 컴퓨터 프로그램 컴포넌트들의 임의의 조합으로, 또는 컴퓨터 프로그램들로 구현될 수도 있다.
구체적으로 달리 언급되지 않는 한, "생성하는 것(generating)", "제공하는 것(providing)", "트레이닝시키는 것(training)", 또는 이와 유사한 것과 같은 용어들은, 컴퓨터 시스템 레지스터들 및 메모리들 내의 물리적인(전자) 양들로서 표현되는 데이터를, 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장, 송신 또는 디스플레이 디바이스들 내의 물리적인 양들로서 유사하게 표현되는 다른 데이터로 조작 및 변환하는 컴퓨터 시스템들에 의해 수행 또는 구현되는 액션들 및 프로세스들을 지칭한다. 또한, 본 명세서에서 사용되는 바와 같이 "제1", "제2", "제3", "제4" 등의 용어들은 상이한 요소들 간을 구별하기 위한 레이블들로서 의도된 것이고, 이들의 수치 지정에 따른 서수 의미를 갖지 않을 수도 있다.
본 명세서에서 설명되는 예들은 또한, 본 명세서에서 설명되는 방법들을 수행하기 위한 장치에 관련된다. 이 장치는, 본 명세서에서 설명되는 방법들을 수행하기 위해 특수하게 구축될 수도 있거나, 또는 그것은, 컴퓨터 시스템에 저장된 컴퓨터 프로그램에 의해 선택적으로 프로그래밍되는 범용 컴퓨터 시스템을 포함할 수도 있다. 그러한 컴퓨터 프로그램은 컴퓨터 판독가능 유형 저장 매체에 저장될 수도 있다.
본 명세서에서 설명되는 방법들 및 예시적인 예들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치에 관련되지 않는다. 다양한 범용 시스템들이 본 명세서에서 설명되는 교시에 따라 사용될 수도 있거나, 또는 그것은 방법들(400 내지 700) 및/또는 이들의 개별 기능들, 루틴들, 서브루틴들, 또는 동작들 각각을 수행하기 위해 더 특수화된 장치를 구축하는 것이 편리하다는 것을 입증할 수도 있다. 다양한 이들 시스템들을 위한 구조체의 예들이 상기의 설명에 제시된다.
상기의 설명은 제한적인 것이 아니라 예시적인 것으로 의도된다. 본 개시내용이 특정 예시적인 예들 및 구현들을 참조하여 설명되었지만, 본 개시내용은 설명된 예들 및 구현들로 제한되지 않는다는 것이 인지될 것이다. 본 개시내용의 범주는, 다음의 청구범위가 부여받는 등가물들의 전체 범주와 함께, 청구범위를 참조하여 결정되어야 한다.

Claims (1)

  1. 명세서에 기재된 방법 및 장치.
KR1020247014698A 2019-12-31 2019-12-31 머신 학습을 사용하는 예측된 시각 품질에 기초하는 비디오 플레이어들에 대한 최적의 포맷 선택 KR20240065323A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/US2019/069055 WO2021137856A1 (en) 2019-12-31 2019-12-31 Optimal format selection for video players based on predicted visual quality using machine learning
KR1020227026332A KR102663852B1 (ko) 2019-12-31 2019-12-31 머신 학습을 사용하는 예측된 시각 품질에 기초하는 비디오 플레이어들에 대한 최적의 포맷 선택

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020227026332A Division KR102663852B1 (ko) 2019-12-31 2019-12-31 머신 학습을 사용하는 예측된 시각 품질에 기초하는 비디오 플레이어들에 대한 최적의 포맷 선택

Publications (1)

Publication Number Publication Date
KR20240065323A true KR20240065323A (ko) 2024-05-14

Family

ID=69376004

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020247014698A KR20240065323A (ko) 2019-12-31 2019-12-31 머신 학습을 사용하는 예측된 시각 품질에 기초하는 비디오 플레이어들에 대한 최적의 포맷 선택
KR1020227026332A KR102663852B1 (ko) 2019-12-31 2019-12-31 머신 학습을 사용하는 예측된 시각 품질에 기초하는 비디오 플레이어들에 대한 최적의 포맷 선택

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227026332A KR102663852B1 (ko) 2019-12-31 2019-12-31 머신 학습을 사용하는 예측된 시각 품질에 기초하는 비디오 플레이어들에 대한 최적의 포맷 선택

Country Status (7)

Country Link
US (1) US20230054130A1 (ko)
EP (1) EP3864839A1 (ko)
JP (2) JP7451716B2 (ko)
KR (2) KR20240065323A (ko)
CN (1) CN114982227A (ko)
BR (1) BR112022012563A2 (ko)
WO (1) WO2021137856A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210233259A1 (en) * 2020-01-28 2021-07-29 Ssimwave Inc. No-reference visual media assessment combining deep neural networks and models of human visual system and video content/distortion analysis
US11574273B2 (en) * 2020-12-21 2023-02-07 Sling TV L.L.C. Systems and methods for automated evaluation of digital services
CN116264606A (zh) * 2021-12-14 2023-06-16 戴尔产品有限公司 用于处理视频的方法、设备和计算机程序产品
CN115002520B (zh) * 2022-04-14 2024-04-02 百果园技术(新加坡)有限公司 一种视频流数据处理方法、装置、设备及存储介质
US11606553B1 (en) 2022-07-15 2023-03-14 RiversideFM, Inc. Hybrid media recording
CN115174919B (zh) * 2022-09-05 2022-11-22 腾讯科技(深圳)有限公司 一种视频处理方法、装置、设备及介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10007977B2 (en) * 2015-05-11 2018-06-26 Netflix, Inc. Techniques for predicting perceptual video quality
US20170109584A1 (en) * 2015-10-20 2017-04-20 Microsoft Technology Licensing, Llc Video Highlight Detection with Pairwise Deep Ranking
US10999578B2 (en) * 2017-12-12 2021-05-04 Google Llc Transcoding media content using an aggregated quality score
US10721477B2 (en) * 2018-02-07 2020-07-21 Netflix, Inc. Techniques for predicting perceptual video quality based on complementary perceptual quality models
US11216698B2 (en) * 2018-02-16 2022-01-04 Spirent Communications, Inc. Training a non-reference video scoring system with full reference video scores
US20190297329A1 (en) * 2018-03-20 2019-09-26 Netflix, Inc. Quantifying perceptual quality model uncertainty via bootstrapping

Also Published As

Publication number Publication date
US20230054130A1 (en) 2023-02-23
JP2023509918A (ja) 2023-03-10
EP3864839A1 (en) 2021-08-18
KR20220123541A (ko) 2022-09-07
BR112022012563A2 (pt) 2022-09-06
WO2021137856A1 (en) 2021-07-08
CN114982227A (zh) 2022-08-30
KR102663852B1 (ko) 2024-05-10
JP2024069300A (ja) 2024-05-21
JP7451716B2 (ja) 2024-03-18

Similar Documents

Publication Publication Date Title
KR102663852B1 (ko) 머신 학습을 사용하는 예측된 시각 품질에 기초하는 비디오 플레이어들에 대한 최적의 포맷 선택
JP7154334B2 (ja) ライブストリームコンテンツを推奨するための機械学習の使用
US10652605B2 (en) Visual hot watch spots in content item playback
US10242265B2 (en) Actor/person centric auto thumbnail
CN109844736B (zh) 概括视频内容
US9002175B1 (en) Automated video trailer creation
US10347294B2 (en) Generating moving thumbnails for videos
Mitra et al. EasyDeep: An IoT friendly robust detection method for GAN generated deepfake images in social media
JP2024511103A (ja) 近似値に基づいて画像又はビデオの品質を評価する方法及び装置、第1のモデルの訓練方法及び装置、電子機器、記憶媒体、並びにコンピュータプログラム
US20230164369A1 (en) Event progress detection in media items
US11870833B2 (en) Methods and systems for encoder parameter setting optimization
US20230409582A1 (en) Precision of content matching systems at a platform
Yang et al. TV program innovation and teaching under big data background in all media era
US20240155195A1 (en) Recommendation system forward simulator
Madan et al. Customized Preview Video Generation Using Visual Saliency: A Case Study with Vision Dominant Videos
Tan Machine-Learning Based QoE Prediction For Dash Video Streaming
Cao Ensuring the quality of experience for mobile augmented visual search applications: Fast, low bitrate and high accuracy

Legal Events

Date Code Title Description
A107 Divisional application of patent