Movatterモバイル変換


[0]ホーム

URL:


KR20240108442A - Techniques for reconstructing downscaled video content - Google Patents

Techniques for reconstructing downscaled video content
Download PDF

Info

Publication number
KR20240108442A
KR20240108442AKR1020247018847AKR20247018847AKR20240108442AKR 20240108442 AKR20240108442 AKR 20240108442AKR 1020247018847 AKR1020247018847 AKR 1020247018847AKR 20247018847 AKR20247018847 AKR 20247018847AKR 20240108442 AKR20240108442 AKR 20240108442A
Authority
KR
South Korea
Prior art keywords
trained
cnn
upscaler
downscaling
video
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
KR1020247018847A
Other languages
Korean (ko)
Inventor
크리스토스 지. 뱀피스
즈 리
Original Assignee
넷플릭스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/981,292external-prioritypatent/US20230143389A1/en
Application filed by 넷플릭스, 인크.filedCritical넷플릭스, 인크.
Publication of KR20240108442ApublicationCriticalpatent/KR20240108442A/en
Pendinglegal-statusCriticalCurrent

Links

Classifications

Landscapes

Abstract

Translated fromKorean

다양한 실시예들에서, 엔드포인트 애플리케이션은 다운스케일링된 비디오들을 재구성한다. 엔드포인트 애플리케이션은 제1 해상도를 갖고 훈련된 다운스케일링 컨볼루션 신경망(CNN)을 이용하여 생성된 다운스케일링된 비디오의 일부분과 연관된 메타데이터에 액세스한다. 엔드포인트 애플리케이션은 메타데이터에 기반하여, 다운스케일링된 비디오의 일부분을 업스케일링할 때 이용되어야 하는 업스케일러를 결정한다. 엔드포인트 애플리케이션은 다운스케일링된 비디오의 일부분에 대해 업스케일러를 실행하여, 재생을 위해 액세스가능하고 제1 해상도보다 높은 제2 해상도를 갖는 재구성된 비디오의 일부분을 생성한다.In various embodiments, an endpoint application reconstructs downscaled videos. The endpoint application accesses metadata associated with a portion of the downscaled video generated using a downscaling convolutional neural network (CNN) trained with a first resolution. Based on the metadata, the endpoint application determines which upscaler should be used when upscaling a portion of the downscaled video. The endpoint application runs an upscaler on the portion of the downscaled video to produce a portion of the reconstructed video that is accessible for playback and has a second resolution that is higher than the first resolution.

Description

Translated fromKorean
다운스케일링된 비디오 콘텐츠를 재구성하기 위한 기술들Techniques for reconstructing downscaled video content

관련 출원들에 대한 상호 참조Cross-reference to related applications

본 출원은, 2021년 11월 9일자로 출원되고 일련번호 제63/277,545호를 갖는, 발명의 명칭이 "Techniques for Joint Optimization of Video Downscaling and Upscaling for Video Applications"인 미국 가특허 출원의 우선권 혜택을 주장하고, 2022년 11월 7일자로 출원되고 일련번호 제17/981,292호를 갖는, 발명의 명칭이 "Techniques for Reconstructing Downscaled Video Content"인 미국 특허 출원의 우선권 혜택을 주장한다. 이러한 관련 출원들의 주제는 본 명세서에 참조로 포함된다.This application has the benefit of priority from the U.S. provisional patent application entitled “Techniques for Joint Optimization of Video Downscaling and Upscaling for Video Applications,” filed on November 9, 2021, and bearing serial number 63/277,545. Claims priority benefit of the U.S. patent application entitled “Techniques for Reconstructing Downscaled Video Content,” filed on November 7, 2022, and bearing serial number 17/981,292. The subject matter of these related applications is incorporated herein by reference.

다양한 실시예들은 일반적으로 컴퓨터 과학 및 비디오 스트리밍 기술에 관한 것이며, 더 구체적으로는 다운스케일링된 비디오 콘텐츠를 재구성하기 위한 기술들에 관한 것이다.Various embodiments relate generally to computer science and video streaming technology, and more specifically to techniques for reconstructing downscaled video content.

전형적인 비디오 스트리밍 시스템에서, 비디오 스트리밍 서비스는 광범위한 상이한 클라이언트 디바이스들 상에서 볼 수 있는 미디어 타이틀들의 라이브러리에 대한 액세스를 사용자들에게 제공한다. 동작시, 주어진 클라이언트 디바이스는 다양한 접속 조건들의 호스트 하에서 비디오 스트리밍 서비스에 접속하므로, 다양한 이용가능한 네트워크 대역폭들에 취약할 수 있다. 미디어 타이틀이 재생 중단들 없이 클라이언트 디바이스로 스트리밍될 수 있게 하기 위해, 이용가능한 네트워크 대역폭에 관계없이, 미디어 타이틀의 다수의 상이한 인코딩들이 클라이언트 디바이스에 제공되고, 여기서 이용가능한 네트워크 대역폭이 비교적 낮을 때 "더 낮은 품질의" 인코딩들이 일반적으로 클라이언트 디바이스로 스트리밍되고, 이용가능한 네트워크 대역폭이 비교적 높을 때 "더 높은 품질의" 인코딩들이 일반적으로 클라이언트 디바이스로 스트리밍된다.In a typical video streaming system, a video streaming service provides users with access to a library of media titles that can be viewed on a wide range of different client devices. In operation, a given client device connects to a video streaming service under a host of different connection conditions and may therefore be vulnerable to varying available network bandwidths. In order to enable a media title to be streamed to a client device without playback interruptions, regardless of the available network bandwidth, multiple different encodings of the media title are provided to the client device, where the "More" is provided when the available network bandwidth is relatively low. “Low quality” encodings are typically streamed to the client device, and “higher quality” encodings are typically streamed to the client device when the available network bandwidth is relatively high.

주어진 미디어 타이틀의 상이한 인코딩들을 생성하기 위해, 비디오 스트리밍 서비스는 전형적으로 비디오 인코딩 파이프라인을 통해 미디어 타이틀을 여러 번 인코딩한다. 비디오 인코딩 파이프라인은 주어진 미디어 타이틀과 연관된 소스 비디오로부터 상이한 양의 정보를 제거하여 다수의 인코딩된 비디오를 생성하고, 여기서 각각의 인코딩된 비디오는 상이한 비트레이트와 연관된다. 실제로, 전형적인 인코딩 파이프라인에서의 다운스케일러는 소스 비디오를 다수의 더 낮은 해상도로 다운스케일링한다. 이어서, 인코딩 파이프라인에서의 인코더는 소스 비디오 및 다운스케일링된 더 낮은 해상도 비디오들 각각을 상이한 정도로 압축하여 상이한 인코딩된 비디오들을 생성한다. 주어진 비트레이트와 연관된 인코딩된 비디오는, 이용가능한 네트워크 대역폭이 그 특정한 비트레이트보다 크거나 동일할 때 재생 중단들 없이 클라이언트 디바이스로 스트리밍될 수 있다.To create different encodings of a given media title, a video streaming service typically encodes the media title multiple times through a video encoding pipeline. The video encoding pipeline removes different amounts of information from the source video associated with a given media title to generate multiple encoded videos, where each encoded video is associated with a different bitrate. In practice, a downscaler in a typical encoding pipeline downscales the source video to a number of lower resolutions. An encoder in the encoding pipeline then compresses each of the source video and the downscaled lower resolution videos to different degrees to produce different encoded videos. Encoded video associated with a given bitrate can be streamed to a client device without playback interruptions when available network bandwidth is greater than or equal to that particular bitrate.

클라이언트 디바이스 상에서 주어진 미디어 타이틀을 재생하기 위해, 엔드포인트 애플리케이션이 클라이언트 디바이스 상에서 구현될 수 있다. 엔드포인트 애플리케이션은 이용가능한 네트워크 대역폭에 기반하여 미디어 타이틀에 대해 생성된 상이한 인코딩된 비디오들을 선택하도록 구성된다. 주어진 인코딩된 비디오가 엔드포인트 애플리케이션에 의해 선택될 때, 선택된 인코딩된 비디오의 하나 이상의 별개의 부분 또는 "청크"가 재생을 위해 클라이언트 디바이스로 스트리밍된다. 선택된 인코딩된 비디오의 청크를 수신할 시에, 엔드포인트 애플리케이션은 디코딩된 비디오의 청크를 생성하기 위해 청크 상에서 디코더를 실행한다. 디코딩된 비디오가 클라이언트 디바이스 디스플레이와 동일한 해상도를 가지면, 디코딩된 비디오의 청크는 재생을 위해 준비된 재구성된 비디오의 청크로 간주된다. 그렇지 않으면, 엔드포인트 애플리케이션은 디코딩된 비디오의 청크에 대해 하나 이상의 업스케일러를 실행하여 클라이언트 디바이스 디스플레이와 동일한 해상도를 갖는 재구성된 비디오의 청크를 생성한다. 클라이언트 디바이스 상에서 미디어 타이틀의 재생을 달성하기 위해, 엔드포인트 애플리케이션은 재구성된 비디오의 상이한 청크들을 재생한다.To play a given media title on a client device, an endpoint application may be implemented on the client device. The endpoint application is configured to select different encoded videos generated for the media title based on available network bandwidth. When a given encoded video is selected by an endpoint application, one or more distinct portions or “chunks” of the selected encoded video are streamed to the client device for playback. Upon receiving the selected chunk of encoded video, the endpoint application runs a decoder on the chunk to generate a chunk of decoded video. If the decoded video has the same resolution as the client device display, the chunk of decoded video is considered a chunk of reconstructed video ready for playback. Otherwise, the endpoint application runs one or more upscalers on the chunks of decoded video to produce chunks of reconstructed video that have the same resolution as the client device display. To achieve playback of a media title on a client device, the endpoint application plays different chunks of the reconstructed video.

위에서 언급된 바와 같이, 대부분의 비디오 인코딩 파이프라인들에 포함된 다운스케일러들 및 인코더들은 미디어 타이틀에 대한 상이한 비디오 인코딩들을 생성할 때 미디어 타이틀에 대한 정보를 소스 비디오로부터 제거한다. 따라서, 일반적으로, 재구성된 비디오의 주어진 청크의 시각적 품질은 보통 재구성된 비디오의 그 청크를 생성하는데 이용된 소스 비디오의 대응하는 청크의 시각적 품질보다 낮으며, 이는 보통 재구성된 비디오의 청크가 비교적 더 많은 시각적 품질 손상들 또는 아티팩트들을 포함한다는 것을 의미한다. 또한, 일반적으로, 재구성된 비디오의 청크의 시각적 품질은 전형적으로 인코딩된 비디오의 대응하는 청크와 연관된 비트레이트가 감소함에 따라 감소한다.As mentioned above, downscalers and encoders included in most video encoding pipelines remove information about the media title from the source video when creating different video encodings for the media title. Therefore, in general, the visual quality of a given chunk of reconstructed video is usually lower than the visual quality of a corresponding chunk of the source video used to generate that chunk of reconstructed video, which usually means that the chunk of reconstructed video has a relatively higher This means that it contains many visual quality impairments or artifacts. Additionally, in general, the visual quality of a chunk of reconstructed video typically decreases as the bitrate associated with a corresponding chunk of encoded video decreases.

다운스케일링시 재구성된 비디오들의 시각적 품질의 감소를 제한하는 한 가지 접근법에서, 기계 학습 기술들이 훈련된 다운스케일러들을 생성하는데 이용된다. 각각의 훈련된 다운스케일러는 통상적으로 상이한 고정된 스케일 인자와 연관되고, 디코딩된 비디오들의 이미지들 또는 프레임들을 가변 스케일링 파라미터에 의해 업스케일링하도록 구성되는 범용 업스케일러 또는 업스케일링 알고리즘과 함께 구현될 때 종단간 재구성 에러들을 감소시키도록 훈련된다. 훈련 동안, 다수의 학습가능한 파라미터를 갖는 다운스케일러는 소스 이미지들을, 대응하는 소스 이미지들의 해상도들보다 연관된 스케일 인자만큼 더 낮은 해상도들을 갖는 다운스케일링된 이미지들에 매핑한다. 그 다음, 범용 업스케일러는 연관된 스케일 인자를 이용하여 다운스케일링된 이미지들에 대해 실행되어 대응하는 소스 이미지들과 동일한 해상도를 갖는 재구성된 이미지들을 생성한다. 특히, 훈련 동안, 다운스케일러 내의 학습가능한 파라미터들의 값들은 소스 이미지들과 대응하는 재구성된 이미지들 사이의 시각적 품질의 종단간 손실들에 상관되는 재구성 에러들을 감소시키기 위해 업데이트된다.In one approach to limit the reduction in visual quality of reconstructed videos upon downscaling, machine learning techniques are used to generate trained downscalers. Each trained downscaler is typically associated with a different fixed scale factor, and when implemented with a universal upscaler or upscaling algorithm configured to upscale images or frames of decoded videos by a variable scaling parameter, the terminal Trained to reduce liver reconstruction errors. During training, a downscaler with multiple learnable parameters maps source images to downscaled images that have resolutions lower than the resolutions of the corresponding source images by an associated scale factor. A general-purpose upscaler is then run on the downscaled images using the associated scale factor to produce reconstructed images with the same resolution as the corresponding source images. In particular, during training, the values of learnable parameters in the downscaler are updated to reduce reconstruction errors correlated to end-to-end losses in visual quality between source images and corresponding reconstructed images.

위의 기술의 한 가지 단점은 클라이언트 디바이스들이 전형적으로 많은 상이한 유형의 디지털 신호들에 걸쳐 강건하게 동작하도록 설계된 범용 업스케일러들을 구현한다는 것이다. 이들 범용 업스케일러들은 통상적으로 특정한 유형의 디지털 신호에 맞게 조정되지 않는다. 결과적으로, 범용 업스케일러는 훈련된 다운스케일러에 의한 다운스케일링에 기인하는 재구성된 비디오의 시각적 품질의 종단간 손실을 최소화할 수 없다. 그 결과, 주어진 인코딩 비트레이트에 대해, 범용 업스케일러와 조합하여 훈련된 다운스케일러를 이용하여 생성된 재구성된 비디오들의 전체 시각적 품질은 차선으로 낮을 수 있다. 반대로, 이들 유형들의 구현들에서, 소스 비디오를 인코딩하여 연관된 재구성된 비디오에 대한 주어진 타겟 시각적 품질 레벨을 달성하는데 이용되는 총 비트 수는 불필요하게 높을 수 있다.One drawback of the above technology is that client devices typically implement general-purpose upscalers that are designed to operate robustly across many different types of digital signals. These general-purpose upscalers are typically not tuned to any specific type of digital signal. As a result, a general-purpose upscaler cannot minimize the end-to-end loss in visual quality of the reconstructed video due to downscaling by a trained downscaler. As a result, for a given encoding bitrate, the overall visual quality of reconstructed videos produced using a trained downscaler in combination with a general-purpose upscaler can be suboptimal. Conversely, in these types of implementations, the total number of bits used to encode the source video to achieve a given target visual quality level for the associated reconstructed video may be unnecessarily high.

위의 기술의 다른 단점은 전형적인 비디오 스트리밍 시스템에 포함된 클라이언트 디바이스들 중 일부가 대개는 범용 업스케일러들 및/또는 훈련된 다운스케일러들을 훈련시키는데 통상적으로 이용되는 범용 업스케일러들로 잘 표현되지 않는 훈련된 업스케일러들을 구현한다는 것이다. 그 결과, 클라이언트 디바이스들에 의해 종종 구현되는 업스케일러들은 훈련된 다운스케일러들과의 상호운용성이 부족할 수 있다. 업스케일러가 인코딩된 비디오를 생성하는데 이용되는 훈련된 다운스케일러와의 상호운용성이 부족하면, 동작 동안에, 업스케일러는 부주의하게 (재생 동안에 "깜박거림(flickering)"을 야기하는 "후광 효과(halo effect)"와 같은) 아티팩트들을 대응하는 재구성된 비디오 내에 삽입함으로써, 재구성된 비디오의 전체 시각적 품질을 감소시킬 수 있다.Another drawback of the above technique is that some of the client devices included in a typical video streaming system are usually poorly represented by general purpose upscalers and/or trained downscalers, which are typically used to train trained downscalers. The goal is to implement upscalers. As a result, upscalers often implemented by client devices may lack interoperability with trained downscalers. If the upscaler lacks interoperability with the trained downscaler used to generate the encoded video, during operation the upscaler may inadvertently cause a "halo effect" (causing "flickering" during playback). By inserting artifacts (such as )" into the corresponding reconstructed video, the overall visual quality of the reconstructed video can be reduced.

전술한 바와 같이, 본 기술분야에서 필요한 것은 비디오 스트리밍 시스템 내에서 비디오들을 스케일링하기 위한 더 효과적인 기술들이다.As mentioned above, what is needed in the art are more effective techniques for scaling videos within video streaming systems.

일 실시예는 다운스케일링된 비디오들을 재구성하기 위한 방법을 제시한다. 이 방법은, 제1 해상도를 갖고 훈련된 다운스케일링 컨볼루션 신경망(CNN)을 이용하여 생성된 제1 다운스케일링된 비디오의 제1 부분과 연관된 메타데이터에 액세스하는 단계; 메타데이터에 기반하여, 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 이용되어야 하는 제1 업스케일러를 결정하는 단계; 및 제1 다운스케일링된 비디오의 제1 부분에 대해 제1 업스케일러를 실행하여, 재생을 위해 액세스가능하고 제1 해상도보다 높은 제2 해상도를 갖는 제1 재구성된 비디오의 제1 부분을 생성하는 단계를 포함한다.One embodiment presents a method for reconstructing downscaled videos. The method includes accessing metadata associated with a first portion of a first downscaled video generated using a downscaling convolutional neural network (CNN) trained with a first resolution; determining, based on the metadata, a first upscaler that should be used when upscaling the first portion of the first downscaled video; and executing the first upscaler on the first portion of the first downscaled video to produce a first portion of the first reconstructed video that is accessible for playback and has a second resolution that is higher than the first resolution. Includes.

종래 기술에 비해 개시된 기술들의 적어도 하나의 기술적 이점은 훈련된 다운스케일링 컨볼루션 신경망(CNN) 및 대응하는 훈련된 업스케일링 CNN이 비디오 인코딩 시스템 내에서 서로 조합하여 구현되어 스케일링 동작들을 수행할 때 재구성된 비디오들의 시각적 품질의 감소를 더 효과적으로 제한할 수 있다는 것이다. 종래 기술들과는 달리, 훈련된 다운스케일링 CNN 및 대응하는 훈련된 업스케일링 CNN은 스케일링 동작들에 기인하는 재구성 에러들을 협력적으로 감소시키도록 공동으로 훈련된다. 또한, 개시된 기술들에 의해, 엔드포인트 애플리케이션은, 메타데이터를 통해, 인코딩된 비디오를 생성하는데 이용되는 훈련된 다운스케일링 CNN을 식별할 수 있다. 그 다음, 엔드포인트 애플리케이션은 대응하는 훈련된 업스케일링 CNN을 식별하고 이용하여, 종래 기술들을 이용하여 통상적으로 달성될 수 있는 것에 비해 주어진 비트레이트에 대해 증가된 시각적 품질 레벨을 갖는 대응하는 재구성된 비디오를 생성할 수 있다. 반대로, 개시된 기술들은 주어진 타겟 시각적 품질을 달성하기 위해 소스 비디오를 인코딩할 때 이용되는 비트들의 수가 종래 기술들을 이용하는데 통상적으로 요구되는 것에 비해 감소될 수 있게 한다. 개시된 기술들의 다른 기술적 이점은 훈련된 다운스케일링 CNN이 상이한 유형들의 업스케일러들과 조합하여 훈련된 다운스케일링 CNN들을 이용하여 업스케일링 동작을 수행하는 것과 종종 연관된 재구성 에러들을 감소시키도록 훈련될 수 있다는 것이다. 따라서, 개시된 기술들에 의해, 훈련된 다운스케일링 CNN들과 상이한 유형들의 업스케일러들 사이의 상호운용성은 종래 기술들에 비해 증가될 수 있고, 이는 재구성된 비디오들의 시각적 품질이 광범위한 상이한 클라이언트 디바이스들에 걸쳐 증가되게 한다. 이러한 기술적 이점들은 종래 기술의 접근법들에 비해 하나 이상의 기술적 개선을 제공한다.At least one technical advantage of the disclosed techniques over the prior art is that a trained downscaling convolutional neural network (CNN) and a corresponding trained upscaling CNN are implemented in combination with each other within a video encoding system to perform scaling operations. This means that the decline in visual quality of videos can be more effectively limited. Unlike prior art, a trained downscaling CNN and a corresponding trained upscaling CNN are jointly trained to cooperatively reduce reconstruction errors due to scaling operations. Additionally, the disclosed techniques allow an endpoint application to identify, via metadata, the trained downscaling CNN used to generate encoded video. The endpoint application then identifies and uses the corresponding trained upscaling CNN to produce a corresponding reconstructed video with an increased level of visual quality for a given bitrate compared to what can typically be achieved using prior art techniques. can be created. Conversely, the disclosed techniques allow the number of bits used when encoding source video to achieve a given target visual quality to be reduced compared to what is typically required using prior art techniques. Another technical advantage of the disclosed techniques is that a trained downscaling CNN can be trained to reduce reconstruction errors often associated with performing an upscaling operation using trained downscaling CNNs in combination with different types of upscalers. . Accordingly, by the disclosed techniques, interoperability between trained downscaling CNNs and different types of upscalers can be increased compared to prior techniques, which ensures that the visual quality of the reconstructed videos is scalable to a wide range of different client devices. Let it increase over time. These technical advantages provide one or more technical improvements over prior art approaches.

위에서 언급된 다양한 실시예들의 특징들이 상세하게 이해될 수 있도록, 위에 간략하게 요약된 본 발명의 개념들의 더 구체적인 설명은 다양한 실시예들을 참조할 수 있으며, 이들 중 일부는 첨부 도면들에 도시되어 있다. 그러나, 첨부 도면들은 본 발명의 개념들의 전형적인 실시예들만을 도시하며, 따라서 어떠한 방식으로도 범위를 제한하는 것으로 고려되어서는 안 되며, 다른 동등하게 효과적인 실시예들이 존재한다는 점에 유의해야 한다.
도 1은 다양한 실시예들의 하나 이상의 양태를 구현하도록 구성된 시스템의 개념적 예시이다.
도 2는 다양한 실시예들에 따른, 도 1의 훈련 애플리케이션의 더 상세한 예시이다.
도 3은 다양한 실시예들에 따른, 다운스케일링 CNN과 업스케일링 CNN을 공동으로 훈련하기 위한 방법 단계들의 흐름도이다.
도 4는 다양한 실시예들에 따른, 소스 비디오의 재구성된 청크를 생성하기 위한 방법 단계들의 흐름도이다.
In order that the features of the various embodiments mentioned above may be understood in detail, a more detailed description of the inventive concepts briefly summarized above may be made by reference to the various embodiments, some of which are shown in the accompanying drawings. . However, it should be noted that the accompanying drawings show only exemplary embodiments of the inventive concepts and therefore should not be considered to limit the scope in any way, and that other equally effective embodiments exist.
1 is a conceptual illustration of a system configured to implement one or more aspects of various embodiments.
Figure 2 is a more detailed illustration of the training application of Figure 1, according to various embodiments.
3 is a flow diagram of method steps for jointly training a downscaling CNN and an upscaling CNN, according to various embodiments.
4 is a flow diagram of method steps for generating a reconstructed chunk of source video, according to various embodiments.

이하의 설명에서, 다양한 실시예들의 보다 철저한 이해를 제공하기 위해 다수의 특정 상세들이 제시된다. 그러나, 본 발명의 개념들은 이러한 특정 상세들 중 하나 이상 없이도 실시될 수 있다는 것이 본 기술분야의 통상의 기술자에게 명백할 것이다.In the following description, numerous specific details are set forth to provide a more thorough understanding of various embodiments. However, it will be apparent to one skilled in the art that the inventive concepts may be practiced without one or more of these specific details.

미디어 타이틀이 재생 중단들 없이 임의의 수의 클라이언트 디바이스로 스트리밍될 수 있게 하기 위해, 전형적인 비디오 스트리밍 서비스는 연관된 소스 비디오에 기반하여 다수의 상이한 인코딩된 비디오를 미리 생성한다. 주어진 미디어 타이틀에 대해 상이한 인코딩된 비디오들을 생성하기 위해, 비디오 스트리밍 서비스는 전형적으로 비디오 인코딩 파이프라인을 통해 미디어 타이틀을 여러 번 인코딩한다. 비디오 인코딩 파이프라인은 소스 비디오로부터 상이한 양의 정보를 제거하여 다수의 인코딩된 비디오를 생성하며, 각각의 인코딩된 비디오는 상이한 비트레이트와 연관된다. 실제로, 전형적인 인코딩 파이프라인은 소스 비디오를 다수의 더 낮은 해상도들로 다운스케일링한 다음, 소스 비디오 및 다운스케일링된 더 낮은 해상도 비디오들 각각을 상이한 정도들로 인코딩하여 상이한 인코딩된 비디오들을 생성한다. 주어진 비트레이트와 연관된 인코딩된 비디오는 이용가능한 네트워크 대역폭이 그 비트레이트보다 크거나 동일할 때 재생 중단들 없이 클라이언트 디바이스로 스트리밍될 수 있다.To enable a media title to be streamed to an arbitrary number of client devices without playback interruptions, a typical video streaming service pre-generates a number of different encoded videos based on the associated source video. To produce different encoded videos for a given media title, a video streaming service typically encodes the media title multiple times through a video encoding pipeline. The video encoding pipeline removes different amounts of information from the source video to create multiple encoded videos, each encoded video being associated with a different bitrate. In practice, a typical encoding pipeline downscales the source video to multiple lower resolutions and then encodes each of the source video and the downscaled lower resolution videos to different degrees to produce different encoded videos. Encoded video associated with a given bitrate can be streamed to a client device without playback interruptions when available network bandwidth is greater than or equal to that bitrate.

클라이언트 디바이스 상에서 주어진 미디어 타이틀을 재생하기 위해, 클라이언트 디바이스 상에서 실행되는 엔드포인트 애플리케이션은 이용가능한 네트워크 대역폭에 기반하여 미디어 타이틀에 대해 생성된 상이한 인코딩된 비디오들의 별개의 부분들 또는 "청크들"을 선택한다. 인코딩된 비디오의 청크를 선택한 후에, 클라이언트 디바이스는 CDN에 포함되는 서버 디바이스로부터 인코딩된 비디오의 청크를 요청한다. 인코딩된 비디오의 청크를 수신할 시에, 엔드포인트 애플리케이션은 청크를 디코딩하고, 그 다음으로, 클라이언트 디바이스 디스플레이와 동일한 해상도를 갖는 재구성된 비디오의 대응하는 청크를 생성하기 위해 결과적인 디코딩된 청크를 선택적으로 업스케일링한다. 클라이언트 디바이스 상의 미디어 타이틀의 재생에 영향을 주기 위해, 엔드포인트 애플리케이션은 재구성된 비디오의 상이한 청크들을 재생한다.To play a given media title on a client device, an endpoint application running on the client device selects distinct portions or “chunks” of different encoded videos generated for the media title based on available network bandwidth. . After selecting a chunk of encoded video, the client device requests the chunk of encoded video from a server device included in the CDN. Upon receiving a chunk of encoded video, the endpoint application decodes the chunk and then selectively selects the resulting decoded chunk to generate a corresponding chunk of reconstructed video that has the same resolution as the client device display. Upscale to . To affect the playback of a media title on a client device, the endpoint application plays different chunks of the reconstructed video.

본 명세서에서 전술한 바와 같이, 대부분의 비디오 인코딩 파이프라인들은 소스 비디오로부터 정보를 제거하여 대응하는 인코딩된 비디오들을 생성한다. 그 결과, 재구성된 비디오의 시각적 품질은 일반적으로 대응하는 소스 비디오의 시각적 품질보다 낮다. 재구성된 비디오들의 전체 시각적 품질을 개선하는 하나의 종래의 접근법에서는, 기계 학습 기술들이 종래의 훈련된 다운스케일러들을 생성하는데 이용된다. 각각의 종래의 훈련된 다운스케일러는 통상적으로 상이한 고정된 스케일 인자와 연관되고, 범용 업스케일러와 함께 구현될 때 종단간 재구성 에러들을 감소시키도록 훈련된다.As previously discussed herein, most video encoding pipelines remove information from source video to produce corresponding encoded videos. As a result, the visual quality of the reconstructed video is generally lower than that of the corresponding source video. In one conventional approach to improving the overall visual quality of reconstructed videos, machine learning techniques are used to generate conventional trained downscalers. Each conventionally trained downscaler is typically associated with a different fixed scale factor and is trained to reduce end-to-end reconstruction errors when implemented with a general-purpose upscaler.

위의 종래의 기술의 한 가지 단점은 클라이언트 디바이스들이 임의의 종래의 훈련된 다운스케일러와 함께 이용될 때 재구성 에러들을 감소시키도록 최적화되지 않은 범용 업스케일러들을 통상적으로 구현한다는 것이다. 그 결과, 주어진 비트레이트에 대해, 범용 업스케일러와 함께 종래의 훈련된 다운스케일러를 이용하여 생성된 재구성된 비디오의 시각적 품질은 차선으로 낮을 수 있다. 반대로, 이들 유형들의 구현들에서, 소스 비디오를 인코딩하여 연관된 재구성된 비디오에 대한 주어진 타겟 시각적 품질 레벨을 달성하는데 이용되는 총 비트 수는 불필요하게 높을 수 있다.One drawback of the above prior art is that client devices typically implement general purpose upscalers that are not optimized to reduce reconstruction errors when used with any conventional trained downscaler. As a result, for a given bitrate, the visual quality of reconstructed video produced using a conventional trained downscaler in combination with a general-purpose upscaler can be suboptimal. Conversely, in these types of implementations, the total number of bits used to encode the source video to achieve a given target visual quality level for the associated reconstructed video may be unnecessarily high.

위의 기술의 다른 단점은 전형적인 비디오 스트리밍 시스템에 포함된 클라이언트 디바이스들 중 일부가 보통 종래의 훈련된 다운스케일러와의 상호운용성이 부족한 업스케일러를 구현한다는 것이다. 업스케일러가 훈련된 다운스케일러와의 상호운용성이 부족한 경우, 업스케일러는 부주의하게 (재생 동안에 "깜박거림"을 야기하는 "후광 효과"와 같은) 아티팩트들을 대응하는 재구성된 비디오 내에 삽입함으로써, 재구성된 비디오의 전체 시각적 품질을 감소시킬 수 있다.Another drawback of the above techniques is that some of the client devices included in typical video streaming systems usually implement upscalers that lack interoperability with conventional trained downscalers. When an upscaler lacks interoperability with a trained downscaler, the upscaler may inadvertently insert artifacts (such as a "halo effect" that causes "flickering" during playback) into the corresponding reconstructed video, thereby causing the reconstructed video to be degraded. It can reduce the overall visual quality of the video.

그러나, 개시된 기술들에 의해, 훈련 애플리케이션은 함께 이용될 때 그리고 다운스케일링 CNN이 다른 "훈련" 업스케일러와 함께 이용될 때 재구성 에러들을 감소시키도록 다운스케일링 컨볼루션 신경망(CNN) 및 업스케일링 CNN을 공동으로 훈련시킨다. 훈련 업스케일러는 범용 스케일러 또는 훈련 애플리케이션이 다운스케일링 CNN 및 업스케일링 CNN을 훈련시키는 동안 변하지 않는 이전에 훈련된 스케일러일 수 있다.However, the disclosed techniques allow a training application to combine a downscaling convolutional neural network (CNN) and an upscaling CNN to reduce reconstruction errors when used together and when a downscaling CNN is used with another "training" upscaler. Train together. The training upscaler can be a general-purpose scaler or a previously trained scaler that does not change while the training application trains the downscaling CNN and upscaling CNN.

일부 실시예들에서, 훈련 애플리케이션은 지정된 스케일 인자만큼 이미지들을 다운스케일링하는 다운스케일링 CNN을 생성하고, 지정된 스케일 인자만큼 이미지들을 업스케일링하는 업스케일링 CNN을 생성한다. 다운스케일링 CNN 및 업스케일링 CNN 둘 다는 학습가능한 파라미터들에 대한 값들 또는 "학습가능한 파라미터 값들"을 포함한다. 그 후, 훈련 애플리케이션은 다운스케일링 CNN, 업스케일링 CNN, 및 지정된 스케일 인자만큼 이미지들을 업스케일링하는 훈련 업스케일러의 인스턴스를 포함하는 훈련 네트워크를 생성한다. 다운스케일링 CNN은 훈련 네트워크의 입력인 "이미지 패치"로 알려진 이미지의 일부분을 다운스케일링된 패치에 매핑한다. 동시에, 다운스케일링 CNN 및 훈련 업스케일러는 다운스케일링된 패치를 훈련 네트워크의 출력들인 2개의 상이한 재구성된 패치에 매핑한다. 따라서, 재구성된 패치들은 둘 다 동일한 다운스케일링된 패치로부터 도출된다.In some embodiments, the training application generates a downscaling CNN that downscales images by a specified scale factor and an upscaling CNN that upscales images by a specified scale factor. Both downscaling CNN and upscaling CNN include values for learnable parameters, or “learnable parameter values”. The training application then creates a training network that includes instances of a downscaling CNN, an upscaling CNN, and a training upscaler that upscales the images by the specified scale factor. A downscaling CNN maps a portion of an image, known as an “image patch”, which is the input to the training network, onto a downscaled patch. At the same time, the downscaling CNN and training upscaler map the downscaled patch to two different reconstructed patches that are the outputs of the training network. Therefore, both reconstructed patches are derived from the same downscaled patch.

훈련 애플리케이션은 훈련 이미지들로부터 추출된 이미지 패치들에 기반하여 훈련 네트워크에 대해 반복적인 종단간 훈련 프로세스를 실행한다. 각각의 반복 동안, 훈련 애플리케이션은 하나 이상의 이미지 패치를 선택한다. 훈련 애플리케이션은 각각의 선택된 이미지 패치를 훈련 네트워크에 입력하여 선택된 이미지 패치의 근사 재구성들인 2개의 재구성된 패치를 생성한다. 각각의 선택된 이미지 패치에 대해, 훈련 애플리케이션은 업스케일링 CNN에 의해 생성된 재구성된 패치와 선택된 이미지 패치 사이의 유클리드 거리와 동일한 제1 손실을 설정한다. 훈련 애플리케이션은 훈련 업스케일러에 의해 생성된 재구성된 패치와 선택된 이미지 패치 사이의 유클리드 거리와 동일한 제2 손실을 설정한다. 훈련 애플리케이션은 선택된 이미지 패치들에 대한 제1 손실들과 가중된 제2 손실들의 합과 동일한 반복 손실을 설정한다. 각각의 가중된 제2 손실은 가중치와 제2 손실의 곱과 동일하다. 가중치는 업스케일링 CNN의 완전히 훈련된 버전에 대한 훈련 업스케일러의 중요성을 반영한다.The training application executes an iterative end-to-end training process on the training network based on image patches extracted from the training images. During each iteration, the training application selects one or more image patches. The training application inputs each selected image patch into a training network to generate two reconstructed patches that are approximate reconstructions of the selected image patch. For each selected image patch, the training application sets a first loss equal to the Euclidean distance between the selected image patch and the reconstructed patch generated by the upscaling CNN. The training application sets a second loss equal to the Euclidean distance between the selected image patch and the reconstructed patch produced by the training upscaler. The training application sets the repetition loss equal to the sum of the first losses and the weighted second losses for the selected image patches. Each weighted secondary loss is equal to the product of the weight and the secondary loss. The weights reflect the importance of the training upscaler to the fully trained version of the upscaling CNN.

각각의 반복을 완료하기 위해, 훈련 애플리케이션은 연관된 반복 손실을 감소시키기 위해 업스케일링 CNN에 포함된 임의의 수의 학습가능한 파라미터들 및 다운스케일링 CNN에 포함된 임의의 수의 학습가능한 파라미터들을 업데이트한다. 훈련 애플리케이션은 다운스케일링 CNN 및 업스케일링 CNN 둘 다가 완전히 훈련되었다고 훈련 애플리케이션이 결정할 때까지 가장 최근의 다운스케일링 CNN 및 업스케일링 CNN을 이용하여 반복들을 계속 실행한다. 훈련 애플리케이션이 다운스케일링 CNN 및 업스케일링 CNN 둘 다가 완전히 훈련된 것으로 결정한 후, 훈련 애플리케이션은 다운스케일링 CNN 및 업스케일링 CNN을 각각 훈련된 다운스케일링 CNN 및 훈련된 업스케일링 CNN으로서 저장한다. 훈련 애플리케이션은 훈련된 다운스케일링 CNN을 백엔드 애플리케이션에 전송한다. 훈련 애플리케이션은 또한 엔드포인트 애플리케이션들에 의한 나중의 이용을 위해 임의의 수의 클라이언트 디바이스들에 훈련된 업스케일링 CNN을 전송한다.To complete each iteration, the training application updates any number of learnable parameters included in the upscaling CNN and any number of learnable parameters included in the downscaling CNN to reduce the associated iteration loss. The training application continues to run iterations using the most recent downscaling CNN and upscaling CNN until the training application determines that both the downscaling CNN and upscaling CNN have been fully trained. After the training application determines that both the downscaling CNN and the upscaling CNN are fully trained, the training application saves the downscaling CNN and the upscaling CNN as trained downscaling CNN and trained upscaling CNN, respectively. The training application sends the trained downscaling CNN to the backend application. The training application also transmits the trained upscaling CNN to any number of client devices for later use by endpoint applications.

백엔드 애플리케이션은 미디어 타이틀과 연관된 소스 비디오의 프레임들에 대해 훈련된 다운스케일링 CNN을 실행하여 다운스케일링된 비디오의 프레임들을 생성한다. 백엔드 애플리케이션은 또한 스케일러 ID 메타데이터를 생성하여 다운스케일링된 비디오에 첨부한다. 스케일러 ID 메타데이터는 엔드포인트 애플리케이션이, 훈련된 다운스케일링 CNN이 다운스케일링된 비디오를 생성하는데 이용되었고, 훈련된 업스케일링 CNN이 다운스케일링된 비디오에 대한 가장 적합한 업스케일러이고, 훈련 업스케일러가 다운스케일링된 비디오에 대한 다음으로 가장 적합한 업스케일러인 것을 식별할 수 있게 한다. 백엔드 애플리케이션은 다운스케일링된 비디오에 대해 인코더를 실행하여 인코딩된 비디오를 생성하고 스케일러 ID 메타데이터를 인코딩된 비디오에 첨부한다. 백엔드 애플리케이션은 인코딩된 비디오 및 연관된 스케일러 ID 메타데이터를 클라이언트 디바이스들에 의한 나중의 액세스를 위해 CDN에 전송한다. 클라이언트 디바이스 상에서 실행되는 엔드포인트 애플리케이션으로부터 인코딩된 비디오의 청크에 대한 요청을 수신하면, CDN에 포함된 서버 디바이스는 비트스트림을 클라이언트 디바이스에 전송한다. 비트스트림은 인코딩된 비디오의 청크, 및 인코딩된 비디오와 연관된 스케일러 ID 메타데이터를 포함한다.The backend application generates frames of downscaled video by running a downscaling CNN trained on frames of source video associated with the media title. The backend application also generates scaler ID metadata and attaches it to the downscaled video. The scaler ID metadata indicates that the endpoint application determines that the trained downscaling CNN was used to generate the downscaled video, that the trained upscaling CNN is the most appropriate upscaler for the downscaled video, and that the trained upscaler is the best upscaler for the downscaled video. This allows you to identify the next most suitable upscaler for your video. The backend application runs an encoder on the downscaled video to generate encoded video and attaches scaler ID metadata to the encoded video. The backend application transmits the encoded video and associated scaler ID metadata to the CDN for later access by client devices. Upon receiving a request for a chunk of encoded video from an endpoint application running on a client device, the server device included in the CDN transmits the bitstream to the client device. The bitstream includes chunks of encoded video, and scaler ID metadata associated with the encoded video.

인코딩된 비디오의 청크 및 스케일러 ID 메타데이터를 포함하는 비트스트림을 수신하면, 엔드포인트 애플리케이션은 인코딩된 비디오의 청크에 대해 디코더를 실행하여, 일반적으로 디코딩된 비디오의 청크라고 지칭되는 다운스케일링된 비디오의 청크를 생성한다. 엔드포인트 애플리케이션은 스케일러 ID 메타데이터에 기반하여 업스케일러를 선택한다. 더 구체적으로, 훈련된 업스케일링 CNN이 엔드포인트 애플리케이션에 이용가능한 경우, 엔드포인트 애플리케이션은 훈련된 업스케일링 CNN을 선택한다. 그렇지 않고, 훈련 업스케일러, 또는 훈련 업스케일러와 동일한 유형을 갖는 업스케일러가 훈련 업스케일러에 액세스할 수 있는 경우, 엔드포인트 애플리케이션은 훈련 업스케일러를 선택한다. 본 명세서에서 이용될 때, 업스케일러가 훈련 업스케일러와 동일한 "유형"을 공유한다면, 업스케일러는 훈련 업스케일러에 의해 잘 표현된다. 훈련 업스케일러들의 유형들의 일부 예들은 가장 가까운 이웃, 이중 입방체(bi-cubic), 이중 선형(bi-linear) 및 란초스(lanczos)를 포함한다. 그렇지 않으면, 엔드포인트 애플리케이션은 임의의 업스케일러를 선택할 수 있다. 엔드포인트 애플리케이션은 선택된 업스케일러를 이용하여 디코딩된 비디오의 청크를 업스케일링함으로써 재구성된 비디오의 대응하는 청크를 생성한다. 엔드포인트 애플리케이션은 이후 재구성된 비디오의 청크를 재생한다.Upon receiving a bitstream containing chunks of the encoded video and scaler ID metadata, the endpoint application runs a decoder on the chunks of the encoded video to create a chunk of the downscaled video, commonly referred to as a chunk of the decoded video. Create chunks. The endpoint application selects an upscaler based on scaler ID metadata. More specifically, if a trained upscaling CNN is available to the endpoint application, the endpoint application selects the trained upscaling CNN. Otherwise, if the training upscaler, or an upscaler of the same type as the training upscaler, has access to the training upscaler, the endpoint application selects the training upscaler. As used herein, an upscaler is well represented by a training upscaler if the upscaler shares the same “type” as the training upscaler. Some examples of types of training upscalers include nearest neighbor, bi-cubic, bi-linear, and lanczos. Otherwise, the endpoint application can choose any upscaler. The endpoint application upscales chunks of decoded video using the selected upscaler to generate corresponding chunks of reconstructed video. The endpoint application then plays chunks of the reconstructed video.

종래 기술에 비해 개시된 기술들의 적어도 하나의 기술적 이점은, 훈련된 다운스케일링 CNN 및 대응하는 훈련된 업스케일링 CNN이 백엔드 애플리케이션 및 엔드포인트 애플리케이션에 의해 각각 이용되어, 스케일링 동작들을 수행할 때 재구성된 비디오들에서의 아티팩트들의 수를 더 효과적으로 제한할 수 있다는 것이다. 종래 기술들과는 달리, 훈련된 다운스케일링 CNN 및 대응하는 훈련된 업스케일링 CNN은 스케일링 동작들에 기인하는 재구성 에러들을 협력적으로 감소시키도록 공동으로 훈련된다. 또한, 개시된 기술들에 의해, 엔드포인트 애플리케이션은, 메타데이터를 통해, 인코딩된 비디오를 생성하는데 이용되는 훈련된 다운스케일링 CNN을 식별할 수 있다. 개시된 기술들의 다른 기술적 이점은 훈련된 다운스케일링 CNN이 상이한 유형들의 훈련 업스케일러들과 조합하여 훈련된 다운스케일링 CNN들을 이용하여 업스케일링 동작을 수행하는 것과 종종 연관된 재구성 에러들을 감소시키도록 훈련될 수 있다는 것이다. 따라서, 개시된 기술들에 의해, 재구성된 비디오들의 시각적 품질은 광범위한 상이한 클라이언트 디바이스들에 걸쳐 증가될 수 있다. 이러한 기술적 이점들은 종래 기술의 접근법들에 비해 하나 이상의 기술적 개선을 제공한다.At least one technical advantage of the disclosed techniques over the prior art is that the trained downscaling CNN and the corresponding trained upscaling CNN can be used by a backend application and an endpoint application, respectively, to perform scaling operations on the reconstructed videos. The number of artifacts in can be more effectively limited. Unlike prior art, a trained downscaling CNN and a corresponding trained upscaling CNN are jointly trained to cooperatively reduce reconstruction errors due to scaling operations. Additionally, the disclosed techniques allow an endpoint application to identify, via metadata, the trained downscaling CNN used to generate encoded video. Another technical advantage of the disclosed techniques is that a trained downscaling CNN can be trained to reduce reconstruction errors often associated with performing an upscaling operation using trained downscaling CNNs in combination with different types of trained upscalers. will be. Accordingly, with the disclosed techniques, the visual quality of reconstructed videos can be increased across a wide range of different client devices. These technical advantages provide one or more technical improvements over prior art approaches.

시스템 개요System Overview

도 1은 다양한 실시예들의 하나 이상의 양태를 구현하도록 구성된 시스템(100)의 개념적 예시이다. 설명의 목적으로, 유사한 객체들의 다수의 인스턴스들 또는 버전들은 객체를 식별하는 참조 번호들 및 필요한 경우 인스턴스 또는 버전을 식별하는 괄호 영숫자 문자(들)로 표시된다. 도시된 바와 같이, 일부 실시예들에서, 시스템(100)은 제한 없이, 컴퓨팅 인스턴스(compute instance)(110(1)), 컴퓨팅 인스턴스(110(2)), 클라이언트 디바이스(190(1)), 클라이언트 디바이스(190(2)), 및 CDN(180)을 포함한다.1 is a conceptual illustration of a system 100 configured to implement one or more aspects of various embodiments. For purposes of explanation, multiple instances or versions of similar objects are indicated by reference numbers that identify the object and, where necessary, parenthetical alphanumeric character(s) that identify the instance or version. As shown, in some embodiments, system 100 includes, without limitation, compute instance 110(1), compute instance 110(2), client device 190(1), Includes client device 190(2), and CDN 180.

일부 다른 실시예들에서, 시스템(100)은 컴퓨팅 인스턴스(110(1)), 컴퓨팅 인스턴스(110(2)), 클라이언트 디바이스(190(1)), 클라이언트 디바이스(190(2)), CDN(180), 또는 이들의 임의의 조합을 생략할 수 있다. 동일한 또는 다른 실시예들에서, 시스템(100)은, 제한 없이, 하나 이상의 다른 컴퓨팅 인스턴스, 하나 이상의 다른 클라이언트 디바이스, 하나 이상의 다른 CDN, 또는 이들의 임의의 조합을 포함할 수 있다. 시스템(100)의 구성요소들은 임의의 수의 공유된 지리적 위치들 및/또는 임의의 수의 상이한 지리적 위치들에 걸쳐 분산될 수 있고/있거나 하나 이상의 클라우드 컴퓨팅 환경(즉, 캡슐화된 공유된 리소스들, 소프트웨어, 데이터 등)에서 임의의 조합으로 구현될 수 있다.In some other embodiments, system 100 includes compute instance 110(1), compute instance 110(2), client device 190(1), client device 190(2), CDN ( 180), or any combination thereof may be omitted. In the same or other embodiments, system 100 may include, without limitation, one or more different computing instances, one or more different client devices, one or more different CDNs, or any combination thereof. The components of system 100 may be distributed across any number of shared geographic locations and/or any number of different geographic locations and/or in one or more cloud computing environments (i.e., encapsulated shared resources , software, data, etc.) can be implemented in any combination.

도시된 바와 같이, 컴퓨팅 인스턴스(110(1))는 프로세서(112(1)) 및 메모리(116(1))를 제한 없이 포함하고, 컴퓨팅 인스턴스(110(2))는 프로세서(112(2)) 및 메모리(116(2))를 제한 없이 포함한다. 컴퓨팅 인스턴스(110(1)) 및 컴퓨팅 인스턴스(110(2))는 또한 본 명세서에서 개별적으로 "컴퓨팅 인스턴스(110)"로서 그리고 집합적으로 "컴퓨팅 인스턴스들(110)"로서 지칭된다. 프로세서(112(1)) 및 프로세서(112(2))는 또한 본 명세서에서 개별적으로 "프로세서(112)"로서 그리고 집합적으로 "프로세서들(112)"로서 지칭된다. 메모리(116(1)) 및 메모리(116(2))는 또한 본 명세서에서 개별적으로 "메모리(116)"로서 그리고 집합적으로 "메모리들(116)"로서 지칭된다. 각각의 컴퓨팅 인스턴스(컴퓨팅 인스턴스들(110)을 포함함)는 클라우드 컴퓨팅 환경에서 구현되거나, 임의의 다른 분산 컴퓨팅 환경의 일부로서 구현되거나, 독립형 방식으로 구현될 수 있다.As shown, computing instance 110(1) includes, without limitation, processor 112(1) and memory 116(1), and computing instance 110(2) includes processor 112(2). ) and memory 116(2), without limitation. Computing instance 110(1) and computing instance 110(2) are also referred to herein individually as “computing instance 110” and collectively as “computing instances 110.” Processor 112(1) and processor 112(2) are also referred to herein individually as “processor 112” and collectively as “processors 112.” Memory 116(1) and memory 116(2) are also referred to herein individually as “memory 116” and collectively as “memories 116.” Each computing instance (including computing instances 110) may be implemented in a cloud computing environment, implemented as part of any other distributed computing environment, or implemented in a stand-alone manner.

프로세서(112)는 명령어들을 실행할 수 있는 임의의 명령어 실행 시스템, 장치, 또는 디바이스일 수 있다. 예를 들어, 프로세서(112)는 중앙 처리 유닛, 그래픽 처리 유닛, 제어기, 마이크로제어기, 상태 기계, 또는 이들의 임의의 조합을 포함할 수 있다. 컴퓨팅 인스턴스(110)의 메모리(116)는 컴퓨팅 인스턴스(110)의 프로세서(112)에 의한 이용을 위해 소프트웨어 애플리케이션들 및 데이터와 같은 콘텐츠를 저장한다. 메모리(116)는 랜덤 액세스 메모리, 판독 전용 메모리, 플로피 디스크, 하드 디스크, 또는 로컬 또는 원격의 임의의 다른 형태의 디지털 저장소와 같은 쉽게 이용가능한 메모리 중 하나 이상일 수 있다.Processor 112 may be any instruction execution system, apparatus, or device capable of executing instructions. For example, processor 112 may include a central processing unit, graphics processing unit, controller, microcontroller, state machine, or any combination thereof. Memory 116 of computing instance 110 stores content, such as software applications and data, for use by processor 112 of computing instance 110. Memory 116 may be one or more of readily available memory, such as random access memory, read only memory, floppy disk, hard disk, or any other form of digital storage, local or remote.

일부 다른 실시예들에서, 임의의 수의 컴퓨팅 인스턴스들은 임의의 수의 프로세서들 및 임의의 수의 메모리들을 임의의 조합으로 포함할 수 있다. 특히, 컴퓨팅 인스턴스(110(1)), 컴퓨팅 인스턴스(110(2)), 임의의 수의 다른 컴퓨팅 인스턴스들, 또는 이들의 임의의 조합은 임의의 기술적으로 실현가능한 방식으로 다중 처리 환경을 제공할 수 있다.In some other embodiments, any number of computing instances may include any number of processors and any number of memories in any combination. In particular, computing instance 110(1), computing instance 110(2), any number of other computing instances, or any combination thereof may provide a multiprocessing environment in any technically feasible manner. You can.

일부 실시예들에서, 저장소(storage)(도시되지 않음)는 컴퓨팅 인스턴스(110)의 메모리(116)를 보충하거나 대체할 수 있다. 저장소는 컴퓨팅 인스턴스(110)의 프로세서(112)에 액세스가능한 임의의 수 및 유형의 외부 메모리들을 포함할 수 있다. 예를 들어, 그리고 제한 없이, 저장소는 보안 디지털 카드, 외부 플래시 메모리, 휴대용 컴팩트 디스크 판독 전용 메모리, 광학 저장 디바이스, 자기 저장 디바이스, 또는 전술한 것의 임의의 적절한 조합을 포함할 수 있다.In some embodiments, storage (not shown) may supplement or replace memory 116 of computing instance 110. Storage may include any number and type of external memories accessible to processor 112 of computing instance 110. For example, and without limitation, storage may include a secure digital card, external flash memory, portable compact disk read only memory, optical storage device, magnetic storage device, or any suitable combination of the foregoing.

일반적으로, 각각의 컴퓨팅 인스턴스(컴퓨팅 인스턴스들(110)을 포함함)는 하나 이상의 소프트웨어 애플리케이션을 구현하도록 구성된다. 단지 설명의 목적으로, 각각의 소프트웨어 애플리케이션은 단일 컴퓨팅 인스턴스의 메모리(116)에 상주하고 동일한 컴퓨팅 인스턴스의 프로세서(112) 상에서 실행되는 것으로서 설명된다. 그러나, 일부 실시예들에서, 각각의 소프트웨어 애플리케이션의 기능은 임의의 수의 컴퓨팅 인스턴스들의 메모리들 내에 상주하고 임의의 조합으로 임의의 수의 컴퓨팅 인스턴스들의 프로세서들 상에서 실행되는 임의의 수의 다른 소프트웨어 애플리케이션들에 걸쳐 분산될 수 있다. 또한, 임의의 수의 소프트웨어 애플리케이션들의 기능은 단일 소프트웨어 애플리케이션으로 통합될 수 있다.Typically, each computing instance (including computing instances 110) is configured to implement one or more software applications. For purposes of explanation only, each software application is described as residing in memory 116 of a single computing instance and executing on processor 112 of the same computing instance. However, in some embodiments, the functionality of each software application resides within the memories of any number of computing instances and runs on any number of processors of any number of computing instances in any combination. can be distributed across fields. Additionally, the functionality of any number of software applications may be integrated into a single software application.

특히, 일부 실시예들에서, 비디오 인코딩 파이프라인을 구현하는 백엔드 애플리케이션(150)은 컴퓨팅 인스턴스(110(2))의 메모리(116(2))에 상주하고 컴퓨팅 인스턴스(110(2))의 프로세서(112(2)) 상에서 실행된다. 도시된 바와 같이, 백엔드 애플리케이션(150)은 미디어 타이틀과 연관된 소스 비디오(106)에 기반하여 인코딩된 비디오 세트(172)를 생성한다. 소스 비디오(106)는 임의의 양 및/또는 유형의 비디오 콘텐츠를 포함하지만 이에 제한되지 않는다. 비디오 콘텐츠의 일부 예들은, 제한 없이, 몇 가지 예를 들자면, 장편 영화들, 텔레비전 프로그램들의 에피소드들, 및 뮤직 비디오들의 임의의 부분(전부를 포함함)을 포함한다.In particular, in some embodiments, the backend application 150 that implements the video encoding pipeline resides in memory 116(2) of computing instance 110(2) and the processor of computing instance 110(2). It runs on (112(2)). As shown, backend application 150 generates an encoded video set 172 based on source video 106 associated with the media title. Source video 106 includes, but is not limited to, any amount and/or type of video content. Some examples of video content include, without limitation, any portion of feature films, episodes of television programs, and music videos, to name a few.

인코딩된 비디오 세트(172)는, 제한 없이, 미디어 타이틀과 연관된 임의의 수의 인코딩된 비디오를 포함한다. 인코딩된 비디오는 본 명세서에서 "인코드"라고도 지칭된다. 인코딩된 비디오 세트(172) 내의 각각의 인코딩된 비디오는, 제한없이, 상이한 인코딩 포인트(도시되지 않음)에 기반하여 소스 비디오(106)에 포함된 비디오 콘텐츠로부터 도출되는 인코딩된 비디오 콘텐츠를 포함한다. 인코딩 포인트들 각각은 해상도(도시되지 않음) 및 하나 이상의 인코딩 파라미터(예로서, 양자화 파라미터)에 대한 값들을 포함하지만 이에 제한되지 않는다. 주어진 인코딩 포인트에 대한 해상도는 소스 비디오(106)의 해상도 또는 더 낮은 해상도를 지정한다. 인코딩 파라미터(들)는 전형적으로 비디오 콘텐츠를 인코딩할 때 비트레이트 및 품질 레벨의 관점에서 단조로운 성능을 허용한다.Encoded video set 172 includes, without limitation, any number of encoded videos associated with a media title. Encoded video is also referred to herein as “encode.” Each encoded video in encoded video set 172 includes, without limitation, encoded video content derived from video content included in source video 106 based on different encoding points (not shown). Each of the encoding points includes, but is not limited to, values for resolution (not shown) and one or more encoding parameters (eg, quantization parameters). The resolution for a given encoding point specifies the resolution of the source video 106 or a lower resolution. The encoding parameter(s) typically allow for flat performance in terms of bitrate and quality level when encoding video content.

인코딩된 비디오 세트(172)를 생성하기 위해, 백엔드 애플리케이션(150)은 소스 비디오(106)를 인코딩 포인트들에서 지정된 더 낮은 해상도들 각각으로 다운스케일링하여 해상도들 각각에 대해 상이한 더 낮은 해상도의 비디오(도시되지 않음)를 생성한다. 본 기술분야의 통상의 기술자가 인식하는 바와 같이, 소스 비디오(106)를 주어진 해상도로 다운스케일링하는 것은 소스 비디오(106)의 각각의 프레임(도 1에 도시되지 않음)을 주어진 해상도로 다운스케일링하는 것을 수반한다. 인코딩 포인트들 각각에 대해, 백엔드 애플리케이션(150)은 인코딩 파라미터(들)의 지정된 값(들)에 기반하여 지정된 해상도를 갖는 더 낮은 해상도의 비디오 또는 소스 비디오(106)를 인코딩하여 인코딩 포인트에 대응하는 인코딩된 비디오를 생성한다.To create the encoded video set 172, the backend application 150 downscales the source video 106 to each of the lower resolutions specified at the encoding points, and for each of the resolutions, a different lower resolution video ( (not shown) is generated. As those skilled in the art will recognize, downscaling source video 106 to a given resolution involves downscaling each frame (not shown in Figure 1) of source video 106 to a given resolution. entails that For each of the encoding points, the backend application 150 encodes the lower resolution video or source video 106 with the specified resolution based on the specified value(s) of the encoding parameter(s) to encode the source video 106 corresponding to the encoding point. Generate encoded video.

일부 실시예들에서, CDN(180)은 인코딩된 비디오 세트(172)의 임의의 수의 사본들 및 임의의 양 및/또는 유형들의 다른 디지털 콘텐츠를 임의의 수의 상이한 지리적 영역들에 위치하는 임의의 수의 서버들에 저장한다. 동일한 또는 다른 실시예들에서, CDN(180)은 클라이언트 요청들(도시되지 않음)에 응답하여 클라이언트 디바이스(190(1)), 클라이언트 디바이스(190(2)), 및 임의의 수의 다른 클라이언트 디바이스들(도시되지 않음)에 디지털 콘텐츠를 전송한다.In some embodiments, CDN 180 may distribute any number of copies of encoded video set 172 and any amount and/or types of other digital content to any number of locations located in any number of different geographic areas. It is stored on a number of servers. In the same or other embodiments, CDN 180 may respond to client requests (not shown) with client device 190(1), client device 190(2), and any number of other client devices. Digital content is transmitted to fields (not shown).

클라이언트 디바이스(190(1))와 클라이언트 디바이스(190(2))는 상이한 클라이언트 디바이스들이다. 클라이언트 디바이스는 소프트웨어 애플리케이션들을 실행하고 클라이언트 디바이스 디스플레이를 통해 이미지 및/또는 임의의 다른 유형의 시각적 콘텐츠를 디스플레이할 수 있는 임의의 유형의 디바이스일 수 있다. 예를 들어, 클라이언트 디바이스는 스마트 텔레비전, 게임 콘솔, 데스크톱 컴퓨터, 랩톱, 스마트폰, 태블릿 등일 수 있지만 이에 제한되지 않는다. 클라이언트 디바이스 디스플레이는, 제한 없이, 액정 디스플레이, 발광 다이오드 디스플레이, 프로젝션 디스플레이, 플라즈마 디스플레이 패널 등일 수 있다.Client device 190(1) and client device 190(2) are different client devices. A client device can be any type of device capable of running software applications and displaying images and/or any other type of visual content via a client device display. For example, a client device may be, but is not limited to, a smart television, game console, desktop computer, laptop, smartphone, tablet, etc. The client device display may be, without limitation, a liquid crystal display, a light emitting diode display, a projection display, a plasma display panel, etc.

일부 실시예들에서, 클라이언트 디바이스 상에서 소스 비디오(106)와 연관된 미디어 타이틀을 재생하기 위해, 클라이언트 디바이스 상에서 실행되는 엔드포인트 애플리케이션은 클라이언트 디바이스와 CDN(180) 사이의 접속의 이용가능한 네트워크 대역폭에 기반하여 인코딩된 비디오 세트(172) 내의 인코딩된 비디오들 중 하나를 선택한다. 엔드포인트 애플리케이션(192)은 CDN(180)이 선택된 인코딩된 비디오의 적어도 일부를 클라이언트 디바이스에 스트리밍할 것을 요청하는 클라이언트 요청을 CDN(180)에 전송한다.In some embodiments, to play a media title associated with source video 106 on a client device, an endpoint application running on the client device operates based on the available network bandwidth of the connection between the client device and CDN 180. Select one of the encoded videos in encoded video set 172. Endpoint application 192 sends a client request to CDN 180 requesting that CDN 180 stream at least a portion of the selected encoded video to the client device.

이에 응답하여, CDN(180)은 본 명세서에서 선택된 인코딩된 비디오의 "청크들"로 지칭되는 별개의 부분들을 재생을 위해 클라이언트 디바이스로 스트리밍한다. 설명의 목적으로, 소스 비디오들의 청크들, 인코딩된 비디오들의 청크들, 디코딩된 비디오들의 청크들, 및 재구성된 비디오들의 청크들은 본 명세서에서 각각 "소스 청크들", "인코딩된 청크들", "디코딩된 청크들", 및 "재구성된 청크들"이라고도 지칭된다.In response, CDN 180 streams discrete portions, referred to herein as “chunks,” of the selected encoded video to the client device for playback. For purposes of explanation, chunks of source videos, chunks of encoded videos, chunks of decoded videos, and chunks of reconstructed videos are referred to herein as “source chunks,” “encoded chunks,” and “respectively. Also referred to as “decoded chunks”, and “reconstructed chunks”.

각각의 인코딩된 비디오 청크를 수신할 시에, 엔드포인트 애플리케이션(192)의 인스턴스는 인코딩된 비디오 청크를 디코딩하여 대응하는 디코딩된 비디오 청크를 생성한다. 엔드포인트 애플리케이션(192)의 인스턴스는 연관된 클라이언트 디바이스 디스플레이와 동일한 해상도를 갖는 재구성된 비디오 청크를 생성하기 위해 디코딩된 비디오 청크에 대해 임의의 수(없음을 포함함) 및/또는 유형들의 스케일링 동작들(예컨대, 업스케일링 동작들 및/또는 다운스케일링 동작들)을 수행한다. 클라이언트 디바이스 상의 미디어 타이틀의 재생에 영향을 미치기 위해, 엔드포인트 애플리케이션의 인스턴스는 소스 비디오(106)의 상이한 청크들에 대응하는 재구성된 청크들의 시퀀스를 재생한다.Upon receiving each encoded video chunk, an instance of endpoint application 192 decodes the encoded video chunk to generate a corresponding decoded video chunk. An instance of endpoint application 192 may perform any number (including none) and/or types of scaling operations (including none) on a decoded video chunk to produce a reconstructed video chunk that has the same resolution as the associated client device display. For example, upscaling operations and/or downscaling operations). To effect playback of a media title on a client device, an instance of the endpoint application plays a sequence of reconstructed chunks that correspond to different chunks of the source video 106.

본 명세서에서 전술한 바와 같이, 대부분의 비디오 인코딩 파이프라인에 포함된 다운스케일러 및 인코더는 소스 비디오로부터 정보를 제거하여 대응하는 인코딩된 비디오를 생성한다. 그 결과, 재구성된 비디오의 시각적 품질은 일반적으로 대응하는 소스 비디오의 시각적 품질보다 낮다. 다운스케일링에 기인하는 재구성된 비디오들의 시각적 품질의 감소를 제한하는 하나의 종래의 접근법에서는, 기계 학습 기술들이 종래의 훈련된 다운스케일러들을 생성하는데 이용된다. 각각의 종래의 훈련된 다운스케일러는 통상적으로 상이한 고정된 스케일 인자와 연관되고, 범용 업스케일러와 함께 구현될 때 종단간 재구성 에러들을 감소시키도록 훈련된다.As previously discussed herein, downscalers and encoders included in most video encoding pipelines remove information from the source video to produce the corresponding encoded video. As a result, the visual quality of the reconstructed video is generally lower than that of the corresponding source video. In one conventional approach to limiting the reduction in visual quality of reconstructed videos due to downscaling, machine learning techniques are used to generate conventional trained downscalers. Each conventionally trained downscaler is typically associated with a different fixed scale factor and is trained to reduce end-to-end reconstruction errors when implemented with a general-purpose upscaler.

위의 종래의 기술의 한 가지 단점은 클라이언트 디바이스들이 통상적으로 종래의 훈련된 다운스케일러에 의한 다운스케일링에 기인하는 재구성된 비디오의 시각적 품질의 종단간 손실을 최소화할 수 없는 범용 업스케일러를 구현한다는 것이다. 그 결과, 주어진 비트레이트에 대해, 범용 업스케일러와 함께 종래의 훈련된 다운스케일러를 이용하여 생성된 재구성된 비디오의 시각적 품질은 차선으로 낮을 수 있다. 반대로, 이들 유형들의 구현들에서, 소스 비디오를 인코딩하여 연관된 재구성된 비디오에 대한 주어진 타겟 시각적 품질 레벨을 달성하는데 이용되는 총 비트 수는 불필요하게 높을 수 있다.One drawback of the above conventional techniques is that client devices typically implement general-purpose upscalers that are unable to minimize the end-to-end loss in visual quality of the reconstructed video resulting from downscaling by conventional trained downscalers. . As a result, for a given bitrate, the visual quality of reconstructed video produced using a conventional trained downscaler in combination with a general-purpose upscaler can be suboptimal. Conversely, in these types of implementations, the total number of bits used to encode the source video to achieve a given target visual quality level for the associated reconstructed video may be unnecessarily high.

위의 기술의 다른 단점은 전형적인 비디오 스트리밍 시스템에 포함된 클라이언트 디바이스들 중 일부가 보통 종래의 훈련된 다운스케일러와의 상호운용성이 부족한 업스케일러를 구현한다는 것이다. 업스케일러가 훈련된 다운스케일러와의 상호운용성이 부족한 경우, 업스케일러는 부주의하게 (재생 동안에 "깜박거림"을 야기하는 "후광 효과"와 같은) 아티팩트들을 대응하는 재구성된 비디오 내에 삽입함으로써, 재구성된 비디오의 전체 시각적 품질을 감소시킬 수 있다.Another drawback of the above techniques is that some of the client devices included in typical video streaming systems usually implement upscalers that lack interoperability with conventional trained downscalers. When an upscaler lacks interoperability with a trained downscaler, the upscaler may inadvertently insert artifacts (such as a "halo effect" that causes "flickering" during playback) into the corresponding reconstructed video, thereby causing the reconstructed video to be degraded. It can reduce the overall visual quality of the video.

상이한 유형들의 클라이언트 디바이스들에 걸친 재구성된 비디오들의 시각적 품질의 증가Increased visual quality of reconstructed videos across different types of client devices

위의 문제들을 해결하기 위해, 시스템(100)은, 제한 없이, 스케일 인자(122), 업스케일러(102), 및 훈련 이미지들(104)에 기반하여 훈련된 다운스케일링 CNN(130) 및 훈련된 업스케일링 CNN(140)을 생성하기 위해 기계 학습 기술들을 이용하는 훈련 애플리케이션(120)을 포함한다. 훈련된 다운스케일링 CNN(130) 및 훈련된 업스케일링 CNN(140) 둘 다는 스케일 인자(122)와 연관된다. 본 명세서에서 이용되는 바와 같이, 스케일 인자와 연관되는 다운스케일링 CNN은 임의의 유형들의 이미지들을 다운스케일링하도록 스케일 인자를 구현한다. 스케일 인자와 연관되는 업스케일링 CNN은 임의의 유형의 이미지들을 업스케일링하도록 스케일 인자를 구현한다.To solve the above problems, the system 100 includes, without limitation, a scale factor 122, an upscaler 102, and a downscaling CNN 130 trained based on the training images 104 and a trained and a training application 120 that uses machine learning techniques to generate an upscaling CNN 140. Both the trained downscaling CNN 130 and the trained upscaling CNN 140 are associated with a scale factor 122. As used herein, a downscaling CNN associated with a scale factor implements the scale factor to downscale images of arbitrary types. Upscaling CNNs associated with scale factors implement scale factors to upscale images of arbitrary types.

스케일 인자(122)는 임의의 정수 또는 임의의 비-정수일 수 있다. 업스케일러(102)는 임의의 유형의 범용 업스케일러, 스케일 인자(122)를 구현하는 임의의 유형의 훈련된 업스케일러, 또는 스케일 인자(122)를 구현하는 임의의 유형의 업스케일링 알고리즘의 임의의 다른 구현일 수 있다. 훈련 이미지들(104)은 임의의 수 및/또는 유형의 훈련 이미지들을 포함할 수 있고, 각각의 훈련 이미지는 임의의 유형의 이미지(예를 들어, 소스 비디오의 프레임)일 수 있다.Scale factor 122 can be any integer or any non-integer. Upscaler 102 may be any type of general-purpose upscaler, any type of trained upscaler that implements scale factor 122, or any type of upscaling algorithm that implements scale factor 122. It could be a different implementation. Training images 104 may include any number and/or type of training images, and each training image may be any type of image (e.g., a frame of a source video).

도시된 바와 같이, 일부 실시예들에서, 훈련 애플리케이션(120)은 컴퓨팅 인스턴스(110(1))의 메모리(116(1))에 상주하고 컴퓨팅 인스턴스(110(1))의 프로세서(112(1)) 상에서 실행된다. 구성 단계 동안, 훈련 애플리케이션(120)은 스케일 인자(122) 및 업스케일러(102)에 기반하여 훈련 네트워크(도 1에 도시되지 않음)를 생성한다. 훈련 네트워크는 다운스케일링 CNN, 업스케일링 CNN, 및 스케일 인자(122)를 각각 구현하는 업스케일러(102)의 인스턴스를 포함한다. 훈련 네트워크에 포함된 업스케일러(102)의 인스턴스는 본 명세서에서 "훈련 업스케일러"라고도 지칭된다. 본 명세서에서 이용될 때, "훈련 업스케일러"는 다운스케일링 CNN의 훈련 동안 다운스케일링된 이미지에 대해 업스케일링 동작들을 수행하지만 다운스케일링 CNN의 훈련 동안 훈련되지는 않는 임의의 구성요소일 수 있다. 예를 들어, 훈련 업스케일러는 범용 업스케일러, 임의의 스케일 인자(들)를 구현하는 임의의 유형의 (이전에) 훈련된 업스케일러, 또는 임의의 유형의 업스케일링 알고리즘의 임의의 다른 구현일 수 있다.As shown, in some embodiments, training application 120 resides in memory 116(1) of computing instance 110(1) and processor 112(1) of computing instance 110(1). )) is executed on During the construction phase, training application 120 generates a training network (not shown in Figure 1) based on scale factor 122 and upscaler 102. The training network includes instances of a downscaling CNN, an upscaling CNN, and an upscaler 102, each implementing scale factor 122. An instance of upscaler 102 included in a training network is also referred to herein as a “training upscaler.” As used herein, a “training upscaler” may be any component that performs upscaling operations on a downscaled image during training of a downscaling CNN, but is not trained during training of a downscaling CNN. For example, the training upscaler could be a general-purpose upscaler, any type of (previously) trained upscaler that implements arbitrary scale factor(s), or any other implementation of any type of upscaling algorithm. there is.

훈련 네트워크로의 입력은 이미지 패치이고, 훈련 네트워크의 출력들은 본 명세서에서 "재구성된 패치들"로 지칭되는 입력 패치의 2개의 상이한 재구성된 버전이다. 본 명세서에서 이용되는 바와 같이, "이미지 패치"는 임의의 유형의 이미지의 임의의 부분(전부를 포함함)일 수 있다. 훈련 네트워크는 업스케일링 CNN과 함께 다운스케일링 CNN을 이용하여 재구성된 패치들 중 하나를 생성한다. 훈련 네트워크는 훈련 업스케일러와 함께 다운스케일링 CNN을 이용하여 다른 재구성된 패치를 생성한다. 따라서, 2개의 재구성된 패치는 모두 다운스케일링 CNN에 의해 생성된 단일 다운스케일링된 이미지로부터 도출된다.The input to the training network is an image patch, and the outputs of the training network are two different reconstructed versions of the input patch, referred to herein as “reconstructed patches”. As used herein, an “image patch” can be any portion (including all) of any type of image. The training network generates one of the reconstructed patches using a downscaling CNN along with an upscaling CNN. The training network uses a downscaling CNN along with a training upscaler to generate different reconstructed patches. Therefore, both reconstructed patches are derived from a single downscaled image generated by the downscaling CNN.

중요하게는, 다운스케일링 CNN 및 업스케일링 CNN 각각은 임의의 수의 학습가능한 파라미터들(예를 들어, 가중치들, 바이어스들)에 대한 값들을 포함한다. 학습가능한 파라미터들에 대한 값들은 본 명세서에서 "학습가능한 파라미터 값들"이라고도 지칭된다. 훈련 단계를 개시하기 위해, 훈련 애플리케이션(120)은 훈련 이미지들(104) 각각을 하나 또는 이미지 패치로 분할한다. 훈련 단계 동안, 훈련 애플리케이션(120)은 훈련 네트워크에 대해 종단간 기계 학습 동작들을 실행하여, 재구성된 패치들과 연관된 손실들이 감소되도록 다운스케일링 CNN(130) 및 업스케일링 CNN(140)에서 유도된 학습가능한 파라미터 값들을 반복적으로 그리고 공동으로 업데이트한다. 손실은 이미지 패치와 대응하는 재구성된 패치 사이의 시각적 품질의 종단간 손실과 상관된다. 하나 이상의 재구성된 패치와 연관된 손실은 본 명세서에서 "재구성 에러"라고도 지칭된다.Importantly, the downscaling CNN and upscaling CNN each contain values for an arbitrary number of learnable parameters (e.g., weights, biases). Values for learnable parameters are also referred to herein as “learnable parameter values.” To initiate the training phase, training application 120 splits each of training images 104 into single or image patches. During the training phase, the training application 120 executes end-to-end machine learning operations on the training network, such that the losses associated with the reconstructed patches are reduced by learning derived from the downscaling CNN 130 and upscaling CNN 140. Possible parameter values are updated iteratively and jointly. The loss is correlated to the end-to-end loss of visual quality between an image patch and the corresponding reconstructed patch. Losses associated with one or more reconstructed patches are also referred to herein as “reconstruction errors.”

훈련 애플리케이션(120)이 다운스케일링 CNN 및 업스케일링 CNN의 훈련을 완료한 후에, 훈련 애플리케이션(120)은 다운스케일링 CNN 및 업스케일링 CNN의 가장 최근의 버전들을 각각 훈련된 다운스케일링 CNN(130) 및 훈련된 업스케일링 CNN(140)으로서 저장한다. 훈련된 다운스케일링 CNN(130) 및 훈련된 업스케일링 CNN(140)에 포함된 학습가능한 파라미터 값들은 본 명세서에서 "학습된 파라미터 값들"이라고도 지칭된다. 유리하게는, 훈련된 업스케일링 CNN(140) 또는 훈련 업스케일러에 의해 잘 표현되는 임의의 유형의 업스케일러와 조합하여 이용될 때, 학습된 파라미터 값들은 훈련된 다운스케일링 CNN(130)이 스케일링에 기인하는 시각적 품질의 손실들을 감소시킬 수 있게 한다.After the training application 120 completes training of the downscaling CNN and the upscaling CNN, the training application 120 updates the most recent versions of the downscaling CNN and the upscaling CNN into the trained downscaling CNN 130 and the trained downscaling CNN 130, respectively. It is stored as an upscaling CNN (140). Learnable parameter values included in the trained downscaling CNN 130 and the trained upscaling CNN 140 are also referred to herein as “learned parameter values.” Advantageously, when used in combination with the trained upscaling CNN 140 or any type of upscaler that is well represented by the training upscaler, the learned parameter values allow the trained downscaling CNN 130 to scale. It makes it possible to reduce the resulting losses in visual quality.

도시된 바와 같이, 훈련 애플리케이션(120)은 훈련된 다운스케일링 CNN(130)을 컴퓨팅 인스턴스(110(2))에 포함된 백엔드 애플리케이션(150)에 전송한다. 또한 도시된 바와 같이, 훈련 애플리케이션(120)은 훈련된 업스케일링 CNN(140)을 클라이언트 디바이스(190(1))에 포함되는 엔드포인트 애플리케이션(192(1))에 전송한다. 엔드포인트 애플리케이션(192(1))은 엔드포인트 애플리케이션(192)(명시적으로 도시되지 않음)의 인스턴스이다. 도시되지는 않았지만, 훈련 애플리케이션(120)은 훈련된 업스케일링 CNN(140)을 임의의 수의 다른 클라이언트 디바이스들에 걸쳐 분산되는 엔드포인트 애플리케이션(192)의 임의의 수의 다른 인스턴스들에 전송할 수 있다.As shown, training application 120 transmits the trained downscaling CNN 130 to backend application 150 included in computing instance 110(2). As also shown, training application 120 transmits the trained upscaling CNN 140 to endpoint application 192(1) included in client device 190(1). Endpoint application 192(1) is an instance of endpoint application 192 (not explicitly shown). Although not shown, training application 120 may transmit the trained upscaling CNN 140 to any number of different instances of endpoint application 192 distributed across any number of different client devices. .

도시되지는 않았지만, 훈련 애플리케이션(120)의 임의의 수의 인스턴스들은 상이한 스케일 인자들과 연관된 임의의 수의 다른 공동으로 훈련된 CNN 쌍들을 생성하도록 구성될 수 있다. 각각의 공동으로 훈련된 CNN 쌍은 스케일 인자와 연관되는 훈련된 다운스케일링 CNN 및 동일한 스케일 인자와 연관되는 "상보적인" 훈련된 업스케일링 CNN을 포함한다. 각각의 공동으로 훈련된 CNN 쌍은 훈련된 다운스케일링 CNN이 상보적인 훈련된 업스케일링 CNN 및 임의의 수 및/또는 유형들의 훈련 업스케일러들과 조합하여 이용될 때 종단간 재구성 에러들을 감소시키도록 훈련될 수 있다. 훈련 애플리케이션(120), 훈련 네트워크, 훈련된 다운스케일링 CNN(130), 및 훈련된 업스케일링 CNN(140)은 도 2와 관련하여 아래에 더 상세히 설명된다.Although not shown, any number of instances of training application 120 may be configured to generate any number of different jointly trained CNN pairs associated with different scale factors. Each jointly trained CNN pair includes a trained downscaling CNN associated with a scale factor and a “complementary” trained upscaling CNN associated with the same scale factor. Each jointly trained CNN pair is trained to reduce end-to-end reconstruction errors when the trained downscaling CNN is used in combination with a complementary trained upscaling CNN and any number and/or types of training upscalers. It can be. Training application 120, training network, trained downscaling CNN 130, and trained upscaling CNN 140 are described in more detail below with respect to FIG. 2.

도시된 바와 같이, 백엔드 애플리케이션(150)은 컴퓨팅 인스턴스(110(2))의 메모리(116(2))에 상주하고 컴퓨팅 인스턴스(110(2))의 프로세서(112(2)) 상에서 실행된다. 백엔드 애플리케이션(150)은 제한 없이 다운스케일러 세트(160) 및 인코더(170)를 포함한다. 도시된 바와 같이, 다운스케일러 세트(160)는, 제한 없이, 훈련된 다운스케일링 CNN(130) 및 임의의 수 및/또는 유형의 다른 다운스케일러들(생략 부호들을 통해 표시됨)을 포함한다. 본 명세서에서 이용될 때, "다운스케일러"는 이미지에 대해 다운스케일링 동작들을 수행하는 임의의 구성요소일 수 있다. 예를 들어, 다운스케일러는 임의의 스케일 인자를 구현하는 훈련된 다운스케일링 CNN, 임의의 스케일 인자(들)를 구현하는 임의의 다른 유형의 훈련된 다운스케일러, 범용 다운스케일러, 또는 임의의 유형의 다운스케일링 알고리즘의 임의의 다른 구현일 수 있다. 일부 실시예들에서, 다운스케일러 세트(160)는 상이한 스케일 인자들과 연관된 다수의 공동으로 훈련된 CNN 쌍들을 포함한다.As shown, backend application 150 resides in memory 116(2) of computing instance 110(2) and runs on processor 112(2) of computing instance 110(2). Backend application 150 includes, without limitation, downscaler set 160 and encoder 170. As shown, downscaler set 160 includes, without limitation, trained downscaling CNN 130 and any number and/or type of other downscalers (indicated through ellipses). As used herein, a “downscaler” may be any component that performs downscaling operations on an image. For example, a downscaler may be a trained downscaling CNN that implements arbitrary scale factors, any other type of trained downscaler that implements arbitrary scale factor(s), a general-purpose downscaler, or any type of downscaler. It may be any other implementation of the scaling algorithm. In some embodiments, downscaler set 160 includes multiple jointly trained CNN pairs associated with different scale factors.

도시된 바와 같이, 백엔드 애플리케이션(150)은 미디어 타이틀과 연관된 소스 비디오(106)에 기반하여 미디어 타이틀 및 스케일러 식별자(ID) 메타데이터 세트(174)와 연관된 인코딩된 비디오 세트(172)를 생성한다. 본 명세서에서 전술한 바와 같이, 인코딩된 비디오 세트(172)는 미디어 타이틀과 연관된 하나 이상의 인코딩된 비디오를 포함한다. 인코딩된 비디오 세트(172) 내의 각각의 인코딩된 비디오에 대해, 스케일러 ID 메타데이터 세트(174)는 임의의 양 및/또는 유형의 스케일러 ID 메타데이터를 선택적으로 지정한다. 인코딩된 비디오와 연관된 스케일러 ID 메타데이터는 엔드포인트 애플리케이션(192)(명시적으로 도시되지 않음)의 인스턴스들이 임의의 기술적으로 실현가능한 방식으로 스케일 인자, 다운스케일러 또는 다운스케일러의 유형, 상보적인 업스케일러 또는 업스케일러의 유형, 임의의 다른 선호되는 업스케일러들 또는 임의의 다른 선호되는 업스케일러들의 유형들, 또는 이들의 임의의 조합을 식별할 수 있게 한다.As shown, backend application 150 generates an encoded video set 172 associated with a media title and scaler identifier (ID) metadata set 174 based on the source video 106 associated with the media title. As previously described herein, encoded video set 172 includes one or more encoded videos associated with a media title. For each encoded video in encoded video set 172, scaler ID metadata set 174 optionally specifies any amount and/or type of scaler ID metadata. The scaler ID metadata associated with the encoded video may be configured to allow instances of endpoint application 192 (not explicitly shown) to determine the scale factor, downscaler or type of downscaler, and the complementary upscaler in any technically feasible manner. or identify a type of upscaler, any other preferred upscalers or any other preferred types of upscalers, or any combination thereof.

소스 비디오(106)를 수신하면, 백엔드 애플리케이션(150)은 소스 비디오(106)의 해상도 및 임의의 수의 인코딩 포인트(도시되지 않음)에서 지정된 해상도에 기반하여 스케일 인자(122) 및 0개 이상의 다른 스케일 인자(도시되지 않음)를 선택한다. 각각의 스케일 인자에 대해, 백엔드 애플리케이션(150)은 스케일 인자에 대응하는 더 낮은 해상도의 비디오 및 선택적으로 선택된 다운스케일러와 연관된 임의의 양 및/또는 유형의 스케일러 ID 메타데이터를 생성하기 위해 다운스케일러 세트(160)에 포함된 다운스케일러들 중 하나 이상을 선택하고 이용한다.Upon receiving source video 106, backend application 150 determines scale factor 122 and zero or more other values based on the resolution of source video 106 and the specified resolution at any number of encoding points (not shown). Select a scale factor (not shown). For each scale factor, backend application 150 sets the downscaler set to generate the lower resolution video corresponding to the scale factor and optionally any amount and/or type of scaler ID metadata associated with the selected downscaler. Select and use one or more of the downscalers included in (160).

설명의 목적으로, 도 1은 다운스케일링 CNN(130)을 이용하여 백엔드 애플리케이션(150)이 생성하는 다운스케일링된 비디오(162) 및 스케일러 ID 메타데이터(184)를 도시한다. 더 구체적으로, 백엔드 애플리케이션(150)은 소스 비디오(106)에 대해 훈련된 다운스케일링 CNN(130)을 실행하여 다운스케일링된 비디오(162)를 생성한다. 다운스케일링된 비디오(162)는 스케일 인자(122)에 대응하는 더 낮은 해상도의 비디오이다. 백엔드 애플리케이션(150)은 또한 다운스케일링된 비디오(162)에 대응하는 스케일러 ID 메타데이터(184)를 생성한다. 스케일러 ID 메타데이터(184)는 엔드포인트 애플리케이션(192)이, 스케일 인자(122)를 구현하는 훈련된 다운스케일링 CNN(130)이 다운스케일링된 비디오(162)를 생성하는데 이용되었던 것, 훈련된 업스케일링 CNN(140)이 다운스케일링된 비디오(162)를 업스케일링하기 위한 가장 적합한 업스케일러인 것, 훈련 업스케일러(예를 들어, 스케일 인자(122)를 구현하도록 구성된 업스케일러(102)) 또는 훈련 업스케일러와 동일한 유형을 갖는 업스케일러가 다운스케일링된 비디오(162)를 다운스케일링하기 위한 다음으로 가장 적합한 업스케일러인 것 또는 이들의 임의의 조합을 식별할 수 있게 한다.For illustrative purposes, Figure 1 shows downscaled video 162 and scaler ID metadata 184 generated by backend application 150 using downscaling CNN 130. More specifically, backend application 150 executes downscaling CNN 130 trained on source video 106 to generate downscaled video 162. Downscaled video 162 is a lower resolution video corresponding to scale factor 122. Backend application 150 also generates scaler ID metadata 184 corresponding to downscaled video 162. Scaler ID metadata 184 tells the endpoint application 192 that the trained downscaling CNN 130 implementing the scale factor 122 was used to generate the downscaled video 162, and the trained downscaling CNN 130 implementing the scale factor 122. Scaling CNN 140 is the most suitable upscaler for upscaling downscaled video 162, a training upscaler (e.g., upscaler 102 configured to implement scale factor 122), or training It is possible to identify which upscaler of the same type as the upscaler is the next most suitable upscaler for downscaling the downscaled video 162, or any combination thereof.

더 일반적으로, 일부 실시예들에서, 완전히 훈련된 다운스케일링 CNN과 연관된 스케일러 ID 메타데이터는 완전히 훈련된 다운스케일링 CNN, 완전히 훈련된 다운스케일링 CNN과 공동으로 훈련된 완전히 훈련된 업스케일링 CNN, 완전히 훈련된 다운스케일링 CNN을 훈련하는데 이용된 제2 업스케일러, 또는 제2 업스케일러의 유형 중 적어도 하나를 지정한다.More generally, in some embodiments, scaler ID metadata associated with a fully trained downscaling CNN may include a fully trained downscaling CNN, a fully trained upscaling CNN jointly trained with a fully trained downscaling CNN, and a fully trained downscaling CNN. Specifies at least one of the second upscaler or the type of second upscaler used to train the downscaling CNN.

인코딩 포인트들 각각에 대해, 백엔드 애플리케이션(150)은 지정된 인코딩 파라미터 값(들)에 기반하여 인코딩 포인트에서 지정된 해상도를 갖는 더 낮은 해상도의 비디오 또는 소스 비디오(106)에 대해 인코더(170)를 실행하여 인코딩 포인트에 대응하는 인코딩된 비디오를 생성한다. 중요하게는, 백엔드 애플리케이션(150) 및/또는 인코더(170)는 다운스케일링된 비디오와 연관된 임의의 스케일러 ID 메타데이터를, 다운스케일링된 비디오에 기반하여 생성되거나 다운스케일링된 비디오로부터 "도출된" 각각의 인코딩된 비디오에 전파한다. 따라서, 스케일러 ID 메타데이터(184)는 또한 다운스케일링된 비디오(162)에 기반하여 생성되는 각각의 인코딩된 비디오와 연관된다.For each of the encoding points, the backend application 150 executes the encoder 170 on the lower resolution video or source video 106 with the resolution specified at the encoding point based on the specified encoding parameter value(s) to Generate encoded video corresponding to the encoding point. Importantly, backend application 150 and/or encoder 170 may store any scaler ID metadata associated with the downscaled video, respectively, generated based on or “derived” from the downscaled video. propagates to the encoded video. Accordingly, scaler ID metadata 184 is also associated with each encoded video generated based on downscaled video 162.

도시된 바와 같이, 백엔드 애플리케이션(150)은 인코딩된 비디오 세트(172), 및 인코딩된 비디오 세트(172)와 연관되는 스케일러 ID 메타데이터 세트(174)를 CDN(180)에 전송한다. CDN(180)은 클라이언트 디바이스들에서 실행되는 엔드포인트 애플리케이션(192)의 인스턴스들로부터 수신된 클라이언트 요청들에 응답하여 미디어 타이틀들의 인코딩된 청크들을 클라이언트 디바이스들에 스트리밍한다. 중요하게는, 인코딩된 청크가 스케일러 ID 메타데이터와 연관되는 인코딩된 비디오의 청크인 경우, 인코딩된 청크는 동일한 스케일러 ID 메타데이터와 연관된다. 스케일러 ID 메타데이터와 연관되는 인코딩된 청크를 클라이언트 디바이스에 전송할 때, CDN(180) 또는 연관된 소프트웨어 애플리케이션은 인코딩된 청크와 연관된 스케일러 ID 메타데이터가 또한 클라이언트 디바이스에 전송되는 것을 보장한다. 일부 실시예들에서, CDN(180)은 인코딩된 청크와 연관된 스케일러 ID 메타데이터를, 인코딩된 청크를 전송하는 비트스트림에 내장한다. 일부 다른 실시예들에서, CDN(180)은 인코딩된 청크를 클라이언트 디바이스에 스트리밍하기 전에 인코딩된 청크와 연관된 스케일러 ID 메타데이터를 클라이언트 디바이스에 전송한다.As shown, backend application 150 sends encoded video set 172 and scaler ID metadata set 174 associated with encoded video set 172 to CDN 180. CDN 180 streams encoded chunks of media titles to client devices in response to client requests received from instances of endpoint application 192 running on the client devices. Importantly, if the encoded chunk is a chunk of encoded video that is associated with scaler ID metadata, then the encoded chunk is associated with the same scaler ID metadata. When transmitting the encoded chunk associated with the scaler ID metadata to the client device, CDN 180 or an associated software application ensures that the scaler ID metadata associated with the encoded chunk is also transmitted to the client device. In some embodiments, CDN 180 embeds scaler ID metadata associated with the encoded chunk into the bitstream transmitting the encoded chunk. In some other embodiments, CDN 180 transmits scaler ID metadata associated with the encoded chunk to the client device before streaming the encoded chunk to the client device.

일부 실시예들에서, 미디어 타이틀의 일부분을 재생하기 위해, 엔드포인트 애플리케이션(192)을 실행하는 클라이언트 디바이스는 CDN(180)에 포함된 서버 디바이스(도시되지 않음)에 대응하는 인코딩된 청크에 대한 요청을 전송한다. 요청에 응답하여, 서버 디바이스는 인코딩된 청크를 클라이언트 디바이스에 전송하고, 클라이언트 디바이스가 인코딩된 청크와 연관된 임의의 스케일러 ID 메타데이터에 액세스할 수 있도록 보장한다. 위에서 언급된 바와 같이, 일부 실시예들에서, 서버 디바이스는 인코딩된 청크 및 연관된 스케일러 ID 메타데이터를 포함하는 비트스트림을 클라이언트 디바이스에 전송한다.In some embodiments, to play a portion of a media title, a client device running endpoint application 192 requests the encoded chunk corresponding to a server device (not shown) included in CDN 180. transmit. In response to the request, the server device transmits the encoded chunk to the client device and ensures that the client device has access to any scaler ID metadata associated with the encoded chunk. As mentioned above, in some embodiments, the server device transmits a bitstream containing encoded chunks and associated scaler ID metadata to the client device.

그 후, 엔드포인트 애플리케이션(192)을 실행하는 클라이언트 디바이스가 인코딩된 청크를 수신할 때, 엔드포인트 애플리케이션(192)은 인코딩된 청크에 대해 디코더(194)를 실행하여 디코딩된 청크(도시되지 않음)를 생성한다. 엔드포인트 애플리케이션(192)은 인코딩된 청크 및 이에 따른 디코딩된 청크가 임의의 스케일러 ID 메타데이터와 연관되는지를 결정한다. 엔드포인트 애플리케이션(192)이 인코딩된 청크가 스케일러 ID 메타데이터와 연관된다고 결정하는 경우, 엔드포인트 애플리케이션(192)은 스케일러 ID 메타데이터에 액세스하여, 디코딩된 청크를 업스케일링할 때 어느 업스케일러가 이용되어야 하는지를 결정한다. 더 구체적으로, 엔드포인트 애플리케이션(192)은 스케일러 ID 메타데이터에 적어도 부분적으로 기반하여 이용가능한 업스케일러들로부터 "주" 업스케일러를 선택한다. 본 명세서에서 이용될 때, "이용가능한 업스케일러"는 비디오 콘텐츠를 업스케일링하는데 이용하기 위해 엔드포인트 애플리케이션(192)에 액세스가능한 업스케일러이다.Then, when a client device running endpoint application 192 receives the encoded chunk, endpoint application 192 executes decoder 194 on the encoded chunk to produce a decoded chunk (not shown). creates . Endpoint application 192 determines whether the encoded chunk and the resulting decoded chunk are associated with any scaler ID metadata. If the endpoint application 192 determines that the encoded chunk is associated with scaler ID metadata, the endpoint application 192 accesses the scaler ID metadata to determine which upscaler to use when upscaling the decoded chunk. Decide what should be done. More specifically, endpoint application 192 selects a “primary” upscaler from available upscalers based at least in part on scaler ID metadata. As used herein, an “available upscaler” is an upscaler that is accessible to the endpoint application 192 for use in upscaling video content.

주 업스케일러가 범용 업스케일러인 경우, 엔드포인트 애플리케이션(192)은 훈련된 다운스케일링 CNN에 의해 구현되는 동일한 스케일 인자를 구현하도록 업스케일러를 구성한다. 이어서, 엔드포인트 애플리케이션(192)은 주 업스케일러로 하여금 디코딩된 청크의 각각의 프레임(도 1에 도시되지 않음)을 업스케일링하여, 인코딩된 청크에 대응하며 재생을 위해 액세스가능한 재구성된 청크를 생성하게 한다.If the primary upscaler is a general-purpose upscaler, endpoint application 192 configures the upscaler to implement the same scale factor implemented by the trained downscaling CNN. Endpoint application 192 then causes the primary upscaler to upscale each frame of the decoded chunk (not shown in Figure 1), creating reconstructed chunks that correspond to the encoded chunk and are accessible for playback. Let it be done.

단지 설명의 목적으로, 도 1은 CDN(180)이 클라이언트 디바이스(190(1)) 및 클라이언트 디바이스(190(2)) 둘 다에 스트리밍하는 다운스케일링된 비디오(162)에 기반하여 생성된 인코딩된 비디오(도시되지 않음)의 인코딩된 청크(182)를 도시한다. 중요하게는, 인코딩된 청크(182)가 다운스케일링된 비디오(162)에 기반하여 생성되는 인코딩된 비디오의 청크이기 때문에, 인코딩된 청크(182)는 스케일러 ID 메타데이터(184)와 연관된다. 인코딩된 청크(182)를 클라이언트 디바이스에 전송할 때, CDN(180) 또는 연관된 소프트웨어 애플리케이션은 스케일러 ID 메타데이터(184)가 또한 클라이언트 디바이스에 전송되는 것을 보장한다. 일부 실시예들에서, CDN(180)은 인코딩된 청크(182)를 전송하는 비트스트림에 스케일러 ID 메타데이터(184)를 내장한다. 일부 다른 실시예들에서, CDN(180)은 인코딩된 청크(182)를 클라이언트 디바이스에 스트리밍하기 전에 스케일러 ID 메타데이터(184)를 클라이언트 디바이스에 전송한다.For purposes of illustration only, FIG. 1 shows the encoded video 162 generated based on the downscaled video 162 that CDN 180 streams to both client device 190(1) and client device 190(2). An encoded chunk 182 of video (not shown) is shown. Importantly, because encoded chunk 182 is a chunk of encoded video that is generated based on downscaled video 162, encoded chunk 182 is associated with scaler ID metadata 184. When transmitting the encoded chunk 182 to the client device, CDN 180 or associated software application ensures that scaler ID metadata 184 is also transmitted to the client device. In some embodiments, CDN 180 embeds scaler ID metadata 184 in the bitstream transmitting encoded chunk 182. In some other embodiments, CDN 180 sends scaler ID metadata 184 to the client device before streaming the encoded chunk 182 to the client device.

도시된 바와 같이, 클라이언트 디바이스(190(1))는 제한 없이, 컴퓨팅 인스턴스(110(3)) 및 클라이언트 디바이스 디스플레이(198(1))를 포함한다. 엔드포인트 애플리케이션(192(1))은 컴퓨팅 인스턴스(110(3))의 메모리(116(3))에 상주하고 컴퓨팅 인스턴스(110(3))의 프로세서(112(3)) 상에서 실행되는 엔드포인트 애플리케이션(192)의 인스턴스이다. 도시된 바와 같이, 엔드포인트 애플리케이션(192(1))은 디코더(194), 훈련된 업스케일링 CNN(140), 및 업스케일러(108)에 액세스한다(예를 들어, 이를 실행할 수 있다).As shown, client device 190(1) includes, without limitation, computing instance 110(3) and client device display 198(1). Endpoint application 192(1) is an endpoint that resides in memory 116(3) of compute instance 110(3) and runs on processor 112(3) of compute instance 110(3). It is an instance of application 192. As shown, endpoint application 192(1) accesses (e.g., may execute) decoder 194, trained upscaling CNN 140, and upscaler 108.

도시된 바와 같이, 엔드포인트 애플리케이션(192(1))은 인코딩된 청크(182)에 대해 디코더(194)를 실행하여 디코딩된 청크(도시되지 않음)를 생성한다. 디코딩된 청크는 본 명세서에서 "다운스케일링된 청크" 및 "다운스케일링된 비디오의 일부분"이라고도 지칭된다. 엔드포인트 애플리케이션(192(2))은 훈련된 업스케일링 CNN(140)이 스케일러 ID 메타데이터(184)에 기반하여 디코딩된 청크에 대한 가장 적합한 업스케일러라고 결정한다. 훈련된 업스케일링 CNN(140)이 엔드포인트 애플리케이션(192(1))에 이용가능하기 때문에, 엔드포인트 애플리케이션(192(2))은 훈련된 업스케일링 CNN(140)을 주 업스케일러로서 선택한다. 도시된 바와 같이, 엔드포인트 애플리케이션(192(1))은 디코딩된 청크에 대해 훈련된 업스케일링 CNN(140)을 실행하여 재구성된 청크(196(1))를 생성한다. 엔드포인트 애플리케이션(192(1))이 재구성된 청크(196(1))를 재생함에 따라, 연관된 비디오 콘텐츠가 클라이언트 디바이스 디스플레이(198(1)) 상에 디스플레이된다.As shown, endpoint application 192(1) executes decoder 194 on encoded chunk 182 to generate decoded chunks (not shown). Decoded chunks are also referred to herein as “downscaled chunks” and “portions of downscaled video.” Endpoint application 192(2) determines that trained upscaling CNN 140 is the most appropriate upscaler for the decoded chunk based on scaler ID metadata 184. Because trained upscaling CNN 140 is available to endpoint application 192(1), endpoint application 192(2) selects trained upscaling CNN 140 as the primary upscaler. As shown, endpoint application 192(1) executes trained upscaling CNN 140 on the decoded chunks to generate reconstructed chunks 196(1). As endpoint application 192(1) plays reconstructed chunk 196(1), associated video content is displayed on client device display 198(1).

도시된 바와 같이, 클라이언트 디바이스(190(2))는, 제한 없이, 컴퓨팅 인스턴스(110(4)) 및 클라이언트 디바이스 디스플레이(198(2))를 포함한다. 엔드포인트 애플리케이션(192(2))은 컴퓨팅 인스턴스(110(4))의 메모리(116(4))에 상주하고 컴퓨팅 인스턴스(110(4))의 프로세서(112(4)) 상에서 실행되는 엔드포인트 애플리케이션(192)의 인스턴스이다. 도시된 바와 같이, 엔드포인트 애플리케이션(192(2))은 디코더(194) 및 업스케일러(102)에 액세스하지만, 훈련된 업스케일링 CNN(140)에는 액세스하지 못한다.As shown, client device 190(2) includes, without limitation, computing instance 110(4) and client device display 198(2). Endpoint application 192(2) is an endpoint that resides in memory 116(4) of compute instance 110(4) and runs on processor 112(4) of compute instance 110(4). It is an instance of application 192. As shown, endpoint application 192(2) has access to decoder 194 and upscaler 102, but does not have access to trained upscaling CNN 140.

도시된 바와 같이, 엔드포인트 애플리케이션(192(2))은 인코딩된 청크(182)에 대해 디코더(194)를 실행하여 디코딩된 청크(도시되지 않음)를 생성한다. 엔드포인트 애플리케이션(192(2))은 업스케일러(102)가 스케일러 ID 메타데이터(184)에 기반하여 다운스케일링된 청크를 업스케일링하기 위해 엔드포인트 애플리케이션(192(2))에 또한 이용가능한 가장 적합한 업스케일러라고 결정한다. 따라서, 엔드포인트 애플리케이션(192(2))은 업스케일러(102)를 주 업스케일러로서 선택한다. 도시된 바와 같이, 엔드포인트 애플리케이션(192(2))은 디코딩된 청크에 대해 업스케일러(102)를 실행하여 재구성된 청크(196(2))를 생성한다. 엔드포인트 애플리케이션(192(2))이 재구성된 청크(196(2))를 재생함에 따라, 연관된 비디오 콘텐츠가 클라이언트 디바이스 디스플레이(198(2)) 상에 디스플레이된다.As shown, endpoint application 192(2) executes decoder 194 on encoded chunk 182 to generate decoded chunks (not shown). Endpoint application 192(2) determines that upscaler 102 may use the most suitable chunks also available to endpoint application 192(2) to upscale downscaled chunks based on scaler ID metadata 184. Decide on the upscaler. Accordingly, endpoint application 192(2) selects upscaler 102 as the primary upscaler. As shown, endpoint application 192(2) executes upscaler 102 on the decoded chunk to produce reconstructed chunk 196(2). As endpoint application 192(2) plays reconstructed chunk 196(2), associated video content is displayed on client device display 198(2).

일반적으로, 인코딩된 청크에 대한 업스케일러의 적합성이 증가함에 따라, 재구성된 청크의 시각적 품질도 증가한다. 따라서, 재구성된 청크(196(1))의 시각적 품질은 재구성된 청크(196(2))의 시각적 품질보다 높다. 그리고, 도 2와 관련하여 아래에 더 상세히 설명되는 바와 같이, 훈련 애플리케이션(120)은 업스케일러(102)를 고려하면서 스케일 인자(122) 및 훈련 이미지들(104)에 기반하여 훈련된 다운스케일링 CNN(130) 및 훈련된 업스케일링 CNN(140)을 공동으로 훈련시킨다. 따라서, 재구성된 청크(196(2))의 시각적 품질은 종래의 다운스케일러 및 종래의 업스케일러를 통해 생성된 재구성된 청크의 시각적 품질보다 높을 수 있다.In general, as the suitability of the upscaler for the encoded chunk increases, the visual quality of the reconstructed chunk also increases. Accordingly, the visual quality of reconstructed chunk 196(1) is higher than that of reconstructed chunk 196(2). And, as described in more detail below with respect to FIG. 2 , the training application 120 provides a downscaling CNN trained based on the scale factor 122 and the training images 104 while taking the upscaler 102 into account. (130) and the trained upscaling CNN (140) are jointly trained. Accordingly, the visual quality of reconstructed chunk 196(2) may be higher than the visual quality of reconstructed chunks produced through a conventional downscaler and a conventional upscaler.

특히, 훈련된 다운스케일링 CNN(130) 및 훈련된 업스케일링 CNN(140)을 최적화하는데 이용되는 재구성 에러들은 소스 비디오(106)의 대응하는 프레임들의 해상도들의 감소들에 기인하는 재구성된 비디오의 프레임들의 시각적 품질의 감소들을 근사화한다. 그 결과, 비디오 인코딩 파이프라인에서 종래의 다운스케일러 대신에 훈련된 다운스케일링 CNN(130)을 이용하여 인코딩된 비디오 세트(172)를 생성하는 것은 종래의 비디오 인코딩 파이프라인들에서 전형적으로 경험되는 시각적 품질 감소를 완화할 수 있다. 후속하여, 훈련된 업스케일링 CNN(140)을 이용하여 재구성된 청크(140(1))를 생성하거나, 더 적은 정도로, 업스케일러(102)는 종래의 비디오 인코딩 파이프라인들에서 전형적으로 경험되는 시각적 품질 감소를 추가로 완화할 수 있다.In particular, the reconstruction errors used to optimize the trained downscaling CNN 130 and the trained upscaling CNN 140 are those of the frames of the reconstructed video due to reductions in the resolutions of the corresponding frames of the source video 106. Approximate reductions in visual quality. As a result, using the trained downscaling CNN 130 instead of a conventional downscaler in the video encoding pipeline to generate the encoded video set 172 reduces the visual quality typically experienced in conventional video encoding pipelines. The decline can be alleviated. Subsequently, the trained upscaling CNN 140 is used to generate reconstructed chunks 140(1), or, to a lesser extent, the upscaler 102 produces the visual effects typically experienced in conventional video encoding pipelines. Quality reduction can be further mitigated.

본 명세서에 설명된 기술들은 제한적인 것이 아니라 예시적인 것이며, 본 발명의 더 넓은 사상 및 범위를 벗어나지 않고 변경될 수 있다는 점에 유의한다. 훈련 애플리케이션(120), 백엔드 애플리케이션(150), 엔드포인트 애플리케이션(192), 훈련된 다운스케일링 CNN(130), 훈련된 업스케일링 CNN(140), 및 업스케일러(102)에 의해 제공되는 기능에 대한 많은 수정들 및 변형들은 설명된 실시예들의 범위 및 사상을 벗어나지 않고 본 기술분야의 통상의 기술자에게 명백할 것이다.It is noted that the techniques described herein are illustrative rather than restrictive, and may be changed without departing from the broader spirit and scope of the invention. Functions provided by training application 120, backend application 150, endpoint application 192, trained downscaling CNN 130, trained upscaling CNN 140, and upscaler 102. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments.

본 명세서에 도시된 시스템(100)은 예시적인 것이고 변형들 및 수정들이 가능하다는 것을 알 것이다. 예를 들어, 도 1의 다양한 구성요소들 사이의 접속 토폴로지는 원하는 대로 수정될 수 있다. 일부 실시예들에서, CDN(180)은 하나 이상의 서버 디바이스로 보충 및/또는 대체되고, 본 명세서에 설명된 기술들은 그에 따라 수정된다. 특히, 백엔드 애플리케이션(150)은 인코딩된 비디오들 및 연관된 메타데이터 및/또는 인코딩된 비디오 청크들 및 연관된 메타데이터를 하나 이상의 클라이언트 디바이스에 의한 나중의 액세스를 위해 CDN(180) 대신에 또는 그에 추가하여 하나 이상의 서버 디바이스에 전송한다.It will be appreciated that the system 100 shown herein is illustrative and that variations and modifications are possible. For example, the connection topology between the various components of Figure 1 may be modified as desired. In some embodiments, CDN 180 is supplemented and/or replaced with one or more server devices, and the techniques described herein are modified accordingly. In particular, backend application 150 may store encoded videos and associated metadata and/or encoded video chunks and associated metadata instead of or in addition to CDN 180 for later access by one or more client devices. Transmit to one or more server devices.

다운스케일링 CNN과 업스케일링 CNN의 공동 훈련Joint training of downscaling CNN and upscaling CNN

도 2는 다양한 실시예들에 따른 도 1의 훈련 애플리케이션(120)의 보다 상세한 예시이다. 도 1과 관련하여 본 명세서에서 이전에 설명된 바와 같이, 훈련 애플리케이션(120)은 업스케일러(102), 스케일 인자(122), 및 훈련 이미지들(104)에 기반하여 훈련된 다운스케일링 CNN(130) 및 훈련된 업스케일링 CNN(140)을 생성한다. 업스케일러(102)는 임의의 유형의 범용 업스케일러, 스케일 인자(122)를 구현하는 임의의 유형의 훈련된 업스케일러, 또는 스케일 인자(122)만큼 이미지들의 해상도를 증가시킬 수 있는 임의의 유형의 업스케일링 알고리즘의 임의의 다른 구현일 수 있다. 스케일 인자(122)는 임의의 정수 또는 임의의 비-정수일 수 있다. 훈련 이미지들(104)은 임의의 수 및/또는 유형의 이미지들을 포함한다. 예를 들어, 훈련 이미지들(104)은 임의의 수 및/또는 유형의 비디오들 각각의 임의의 수의 프레임들을 포함할 수 있다.FIG. 2 is a more detailed illustration of the training application 120 of FIG. 1 according to various embodiments. As previously described herein with respect to FIG. 1 , the training application 120 includes an upscaler 102, a scale factor 122, and a downscaling CNN 130 trained based on the training images 104. ) and generate a trained upscaling CNN (140). Upscaler 102 may be any type of general-purpose upscaler, any type of trained upscaler that implements scale factor 122, or any type of upscaler capable of increasing the resolution of images by scale factor 122. It may be any other implementation of the upscaling algorithm. Scale factor 122 can be any integer or any non-integer. Training images 104 include any number and/or type of images. For example, training images 104 may include any number of frames each of any number and/or type of videos.

도시된 바와 같이, 일부 실시예들에서, 훈련 애플리케이션(120)은 훈련 네트워크(220), 손실(270(1)), 손실(270(2)) 및 업데이트 엔진(290)을 포함하지만 이에 제한되지 않는다. 구성 단계 동안, 훈련 애플리케이션(120)은 스케일 인자(122)를 각각 구현하는 다운스케일링 CNN(230), 업스케일링 CNN(240), 및 훈련 업스케일러(250)를 생성한다. 그 후, 훈련 애플리케이션(120)은, 제한 없이, 다운스케일링 CNN(230), 업스케일링 CNN(240), 및 훈련 업스케일러(250)를 포함하는 훈련 네트워크(220)를 생성한다.As shown, in some embodiments, training application 120 includes, but is not limited to, training network 220, loss 270(1), loss 270(2), and update engine 290. No. During the construction phase, training application 120 generates a downscaling CNN 230, an upscaling CNN 240, and a training upscaler 250, each implementing scale factor 122. Training application 120 then generates training network 220, including, without limitation, downscaling CNN 230, upscaling CNN 240, and training upscaler 250.

다운스케일링 CNN(230)은 임의의 수의 학습가능한 파라미터 값들을 포함하고, 소스 이미지(도 2에 도시되지 않음)를 스케일 인자(122)만큼 소스 이미지의 해상도보다 낮은 해상도를 갖는 대응하는 다운스케일링된 이미지에 매핑한다. 소스 이미지는 임의의 유형의 이미지의 임의의 부분(전부를 포함함)일 수 있다. 훈련 애플리케이션(120)은 임의의 기술적으로 실현가능한 방식으로 다운스케일링 CNN(230)을 생성할 수 있다.The downscaling CNN 230 includes an arbitrary number of learnable parameter values and converts a source image (not shown in Figure 2) into a corresponding downscaled CNN with a resolution lower than the resolution of the source image by a scale factor 122. Map to image. The source image can be any part (including all) of any type of image. Training application 120 may generate downscaling CNN 230 in any technically feasible manner.

업스케일링 CNN(240)은 임의의 수의 학습가능한 파라미터 값들을 포함하고, 스케일 인자(122)만큼 다운스케일링된 이미지의 해상도보다 높은 해상도를 갖는 대응하는 재구성된 이미지에 다운스케일링된 이미지를 매핑한다. 훈련 애플리케이션(120)은 다운스케일링 CNN(230)의 아키텍처에 상보적인 아키텍처를 갖는 업스케일링 CNN(240)을 생성한다.The upscaling CNN 240 maps the downscaled image to a corresponding reconstructed image that contains an arbitrary number of learnable parameter values and has a resolution higher than the resolution of the downscaled image by a scale factor 122. Training application 120 generates an upscaling CNN 240 with an architecture complementary to that of the downscaling CNN 230.

일부 실시예들에서, 스케일 인자(122)가 정수인 경우, 훈련 애플리케이션(120)은 스케일 인자(122)를 구현하는 해상도 감소 스택을 포함하고 예비 계층 스택이 선택적으로 선행하는 다운스케일링 CNN(230)을 생성한다. 선택적인 예비 계층 스택 및 해상도 감소 스택 각각은 하나 이상의 학습가능한 파라미터 값을 포함한다. 예비 계층 스택의 입력은 소스 이미지이고, 예비 계층 스택의 출력은 소스 이미지와 동일한 해상도를 갖는 예비 이미지이다. 해상도 감소 스택의 입력은 예비 이미지이고, 해상도 감소 스택의 출력은 예비 이미지의 해상도보다 낮은 해상도를 갖는 다운스케일링된 이미지이고 따라서 스케일 인자(122)만큼의 소스 이미지이다.In some embodiments, when scale factor 122 is an integer, training application 120 includes a downscaling CNN 230 that includes a resolution reduction stack implementing scale factor 122 and is optionally preceded by a spare layer stack. Create. Each of the optional spare layer stacks and resolution reduction stacks includes one or more learnable parameter values. The input of the spare layer stack is a source image, and the output of the spare layer stack is a spare image with the same resolution as the source image. The input to the resolution reduction stack is a preliminary image, and the output of the resolution reduction stack is a downscaled image with a lower resolution than the resolution of the preliminary image and thus the source image by the scale factor 122.

상보적인 방식으로, 스케일 인자(122)가 정수인 경우, 훈련 애플리케이션(120)은 스케일 인자(122)를 구현하는 해상도 증가 스택을 포함하고 예비 계층 스택이 선택적으로 선행하는 업스케일링 CNN(240)을 생성한다. 선택적인 예비 계층 스택 및 해상도 증가 스택 각각은 하나 이상의 학습가능한 파라미터 값을 포함한다. 예비 계층 스택의 입력은 다운스케일링된 이미지이고, 예비 계층 스택의 출력은 소스 이미지와 동일한 해상도를 갖는 예비 이미지이다. 해상도 증가 스택의 입력은 예비 이미지이고, 해상도 증가 스택의 출력은 예비 이미지의 해상도보다 높은 해상도를 갖는 재구성된 이미지이고 따라서 스케일 인자(122)만큼의 다운스케일링된 이미지이다.In a complementary manner, if scale factor 122 is an integer, training application 120 generates an upscaling CNN 240 that includes a resolution augmentation stack implementing scale factor 122 and is optionally preceded by a spare layer stack. do. Each of the optional preliminary layer stacks and resolution increase stacks includes one or more learnable parameter values. The input of the spare layer stack is a downscaled image, and the output of the spare layer stack is a spare image with the same resolution as the source image. The input to the resolution increase stack is a preliminary image, and the output of the resolution increase stack is a reconstructed image with a higher resolution than the resolution of the preliminary image and thus an image downscaled by a scale factor 122.

본 기술분야의 통상의 기술자가 인식하는 바와 같이, CNN들은 통상적으로 정수 인자들에 기반한 풀링 연산들 및 스트라이드 연산들만을 허용하고, 따라서 CNN을 통해 비-정수 인자들에 기반하여 소스 이미지들의 크기 조정(예를 들어, 다운스케일링 또는 업스케일링)을 수행하는 것은 문제가 될 수 있다. 일부 실시예들에서, 스케일 인자(122)가 비-정수이면, 훈련 애플리케이션(120)은 스케일 인자 분자 및 스케일 인자 분모를, 최저 항들로 스케일 인자(122)를 표현하는 분수의 분자 및 분모와, 제각기, 동일하게 설정한다. 그 다음, 훈련 애플리케이션(120)은 스케일 인자 분자를 구현하는 해상도 증가 스택 및 그에 후속하는 스케일 인자 분모를 구현하는 해상도 감소 스택을 포함하는 다운스케일링 CNN(230)을 생성한다.As those skilled in the art will recognize, CNNs typically allow only pooling operations and stride operations based on integer arguments, and thus resizing source images based on non-integer arguments via a CNN. Performing (e.g. downscaling or upscaling) can be problematic. In some embodiments, if scale factor 122 is a non-integer, training application 120 can configure the scale factor numerator and scale factor denominator with the numerator and denominator of a fraction expressing scale factor 122 in lowest terms; Each is set the same. Training application 120 then generates a downscaling CNN 230 that includes a resolution increasing stack implementing the scale factor numerator followed by a resolution reducing stack implementing the scale factor denominator.

해상도 증가 스택의 입력은 소스 이미지이고, 해상도 증가 스택의 출력은 스케일 인자 분자만큼 소스 이미지의 해상도보다 높은 해상도를 갖는 예비 이미지이다. 해상도 감소 스택의 입력은 예비 이미지이고, 해상도 감소 스택의 출력은 스케일 인자 분모만큼 예비 이미지의 해상도보다 낮은 해상도를 갖는 다운스케일링된 이미지이다. 따라서, 다운스케일링된 이미지의 해상도는 스케일 인자(122)만큼 소스 이미지의 해상도보다 낮다.The input of the resolution increase stack is the source image, and the output of the resolution increase stack is a preliminary image with a resolution higher than the resolution of the source image by the scale factor molecule. The input to the resolution reduction stack is a preliminary image, and the output of the resolution reduction stack is a downscaled image with a resolution lower than the resolution of the preliminary image by the scale factor denominator. Therefore, the resolution of the downscaled image is lower than the resolution of the source image by a scale factor 122.

상보적인 방식으로, 스케일 인자(122)가 비-정수이면, 훈련 애플리케이션(120)은 스케일 인자 분모를 구현하는 해상도 감소 스택 및 그에 후속하는 스케일 인자 분자를 구현하는 해상도 증가 스택을 포함하는 업스케일링 CNN(240)을 생성한다. 예비 계층 스택의 입력은 다운스케일링된 이미지이고, 예비 계층 스택의 출력은 스케일 인자 분모만큼 다운스케일링된 이미지의 해상도보다 낮은 해상도를 갖는 예비 이미지이다. 해상도 증가 스택의 입력은 예비 이미지이고, 해상도 증가 스택의 출력은 스케일 인자 분자만큼 예비 이미지의 해상도보다 높은 해상도를 갖는 재구성된 이미지이다. 따라서, 재구성된 이미지의 해상도는 스케일 인자(122)만큼 다운스케일링된 이미지의 해상도보다 높다.In a complementary manner, if scale factor 122 is non-integer, training application 120 can be configured to create an upscaling CNN that includes a resolution reduction stack implementing the scale factor denominator followed by a resolution increase stack implementing the scale factor numerator. Generates (240). The input of the spare layer stack is a downscaled image, and the output of the spare layer stack is a spare image with a resolution lower than the resolution of the downscaled image by the scale factor denominator. The input of the resolution augmentation stack is a preliminary image, and the output of the resolution augmentation stack is a reconstructed image with a resolution higher than the resolution of the preliminary image by the scale factor molecule. Accordingly, the resolution of the reconstructed image is higher than the resolution of the downscaled image by the scale factor 122.

일부 다른 실시예들에서, 스케일 인자(122)가 비-정수이면, 훈련 애플리케이션(120)은 다운스케일링 CNN(230)으로부터 해상도 증가 스택을 생략하고, 비-정수 스케일링을 고려하기 위해 해상도 감소 스택에서 맞춤형의 크기 조정 로직을 구현한다. 상보적인 방식으로, 훈련 애플리케이션(120)은 업스케일링 CNN(240)으로부터 해상도 감소 스택을 생략하고, 비-정수 스케일링을 고려하기 위해 해상도 증가 스택에서 맞춤형의 크기 조정 로직을 구현한다.In some other embodiments, if scale factor 122 is non-integer, training application 120 omits the resolution increase stack from downscaling CNN 230 and omits the resolution increase stack from the resolution decrease stack to account for non-integer scaling. Implement custom resizing logic. In a complementary manner, training application 120 omits the resolution reduction stack from upscaling CNN 240 and implements custom scaling logic in the resolution augmentation stack to account for non-integer scaling.

각각의 예비 계층 스택은 입력 이미지의 스케일을 집합적으로 변경하지 않는 임의의 수 및/또는 유형의 계층들을 포함할 수 있다. 예를 들어, 일부 실시예들에서, 예비 계층 스택은 하나 이상의 컨볼루션 정류 선형 유닛("ReLU") 계층 쌍 및 컨볼루션 계층을 순차적으로 포함한다. 각각의 컨볼루션 ReLU 계층 쌍은 컨볼루션 계층과 그에 뒤이은 ReLU 계층을 포함한다.Each preliminary layer stack may include any number and/or type of layers that collectively do not change the scale of the input image. For example, in some embodiments, the preliminary layer stack includes one or more convolutional rectification linear unit (“ReLU”) layer pairs and a convolutional layer, sequentially. Each convolutional ReLU layer pair includes a convolutional layer followed by a ReLU layer.

각각의 해상도 감소 스택은 입력 이미지를 연관된 인자만큼 집합적으로 다운스케일링하는 임의의 수 및/또는 유형의 계층들을 포함할 수 있다. 예를 들어, 일부 실시예들에서, 해상도 감소 스택은, 순차적으로, 연관된 인자와 동일한 입력 스트라이드를 갖는 컨볼루션 계층, 하나 이상의 ReLU 계층 쌍, 및 컨볼루션 계층을 포함한다.Each resolution reduction stack may include any number and/or type of layers that collectively downscale the input image by an associated factor. For example, in some embodiments, the resolution reduction stack includes, sequentially, a convolutional layer with an input stride equal to the associated factor, one or more pairs of ReLU layers, and a convolutional layer.

각각의 해상도 증가 스택은 이미지를 연관된 인자만큼 집합적으로 업스케일링하는 임의의 수 및/또는 유형의 계층들을 포함할 수 있다. 예를 들어, 일부 실시예들에서, 해상도 증가 스택은, 순차적으로, 연관된 인자와 동일한 출력 스트라이드를 갖는 디컨볼루션 계층, 하나 이상의 ReLU 계층 쌍, 및 컨볼루션 계층을 포함한다.Each resolution increase stack may include any number and/or type of layers that collectively upscale the image by an associated factor. For example, in some embodiments, the resolution increase stack includes, sequentially, a deconvolution layer with an output stride equal to the associated factor, one or more pairs of ReLU layers, and a convolution layer.

훈련 업스케일러(250)는 스케일 인자(122)만큼 업스케일링하는 업스케일러(102)의 버전이다. 업스케일러(102)가 범용 업스케일러 또는 상이한 스케일 인자들을 구현하도록 구성될 수 있는 임의의 다른 유형의 업스케일러이면, 훈련 애플리케이션(120)은 스케일 인자(122)를 구현하도록 업스케일러(102)를 구성한다. 업스케일러(102)의 구성된 버전은 훈련 업스케일러(250)로 지칭된다. 그러나, 업스케일러(102)가 CNN, 또는 스케일 인자(122) 또는 스케일 인자(122)를 구현하는 임의의 다른 유형의 업스케일러에 의해 업스케일링하도록 훈련되는 임의의 다른 유형의 기계 학습 모델이면, 업스케일러(102)는 또한 훈련 업스케일러(250)로 지칭된다.Training upscaler 250 is a version of upscaler 102 that upscales by scale factor 122. If upscaler 102 is a general-purpose upscaler or any other type of upscaler that can be configured to implement different scale factors, training application 120 configures upscaler 102 to implement scale factors 122. do. The configured version of upscaler 102 is referred to as training upscaler 250. However, if upscaler 102 is a CNN, or any other type of machine learning model that is trained to upscale by scale factor 122 or any other type of upscaler that implements scale factor 122, then Scaler 102 is also referred to as training upscaler 250.

도시된 바와 같이, 훈련 애플리케이션(120)은 다운스케일링 CNN(230)의 출력을 업스케일링 CNN(240)의 입력 및 훈련 업스케일러(250)의 입력 둘 다에 접속시켜 훈련 네트워크(220)를 생성한다. 설명의 목적으로, 도 2는 훈련 네트워크(220)를 통한 이미지 패치(210)의 예시적인 순방향 패스의 맥락에서 훈련 네트워크(220)를 도시한다. 이미지 패치(210)는 훈련 이미지들(104) 중 임의의 하나의 임의의 부분(전부를 포함함)일 수 있다. 예시적인 순방향 패스를 개시하기 위해, 훈련 애플리케이션(120)은 이미지 패치(210)를 훈련 네트워크(220)에 입력한다.As shown, training application 120 connects the output of downscaling CNN 230 to both the input of upscaling CNN 240 and the input of training upscaler 250 to create training network 220. . For illustrative purposes, Figure 2 shows training network 220 in the context of an example forward pass of image patch 210 through training network 220. Image patch 210 may be any portion (including all) of any one of the training images 104 . To initiate the example forward pass, training application 120 inputs image patch 210 into training network 220.

이에 응답하여 그리고 예시적인 훈련 패치 동안, 다운스케일링 CNN(230)은 이미지 패치(210)를 스케일 인자(122)만큼 이미지 패치(210)의 해상도보다 낮은 해상도를 갖는 다운스케일링된 패치(238)에 매핑한다. 업스케일링 CNN(240) 및 훈련 업스케일러(250)는 다운스케일링된 패치(238)를 재구성된 패치(248(1)) 및 재구성된 패치(248(2))에 각각 동시에 매핑한다. 재구성된 패치(248(1)) 및 재구성된 패치(248(2))는 이미지 패치(210)의 상이한 근사치들이다. 특히, 재구성된 패치(248(1)) 및 재구성된 패치(248(2))는 스케일 인자(122)만큼 다운스케일링된 패치(238)의 해상도보다 높은 해상도를 공유하므로 이미지 패치(210)의 해상도와 동일하다.In response to this, and during the example training patch, downscaling CNN 230 maps image patch 210 to a downscaled patch 238 having a resolution lower than the resolution of image patch 210 by a scale factor 122. do. Upscaling CNN 240 and training upscaler 250 simultaneously map downscaled patch 238 to reconstructed patch 248(1) and reconstructed patch 248(2), respectively. Reconstructed patch 248(1) and reconstructed patch 248(2) are different approximations of image patch 210. In particular, the resolution of image patch 210 is such that reconstructed patch 248(1) and reconstructed patch 248(2) share a resolution that is higher than the resolution of downscaled patch 238 by a scale factor 122. Same as

설명의 목적으로, 스케일 인자(122)에 대한 예시적인 값들 및 이미지 패치(210), 다운스케일링된 패치(238), 재구성된 패치(248(1)), 및 재구성된 패치(248(2))에 대한 예시적인 해상도들이 이탤릭체로 도시되어 있다. 도시된 바와 같이, 스케일 인자(122)가 2.0이고, 이미지 패치(210)의 해상도가 3840×2160이면, 다운스케일링된 패치(238)의 해상도는 1920×1080이고, 재구성된 패치(248(1))의 해상도는 3840×2160이며, 재구성된 패치(248(2))의 해상도는 3840×2160이다.For purposes of illustration, example values for scale factor 122 and image patch 210, downscaled patch 238, reconstructed patch 248(1), and reconstructed patch 248(2). Exemplary resolutions for are shown in italics. As shown, if the scale factor 122 is 2.0 and the resolution of the image patch 210 is 3840×2160, then the downscaled patch 238 has a resolution of 1920×1080 and the reconstructed patch 248(1) ) has a resolution of 3840×2160, and the resolution of the reconstructed patch 248(2) is 3840×2160.

예시적인 순방향 패스를 완료한 후에, 훈련 애플리케이션(120)은 재구성된 패치(248(1)) 및 이미지 패치(210)에 기반하여 손실(270(1))을 계산하기 위해 L1로서 본 명세서에 표시된 손실 함수를 이용한다. 손실(270(1))은 다운스케일링 CNN(230) 및 업스케일링 CNN(240)에 의해 수행되는 스케일링 동작들에 기인하는 이미지 패치(210)에 대한 재구성된 패치(248(1))의 시각적 품질의 감소에 상관된다. 유사하게, 훈련 애플리케이션(120)은 재구성된 패치(248(2)) 및 이미지 패치(210)에 기반하여 손실(270(2))을 계산하기 위해 L2로서 본 명세서에 표시된 손실 함수를 이용한다. 손실(270(2))은 다운스케일링 CNN(230) 및 훈련 업스케일러(250)에 의해 수행되는 스케일링 동작들에 기인하는 이미지 패치(210)에 대한 재구성된 패치(248(2))의 시각적 품질의 감소에 상관된다.After completing the example forward pass, training application 120, denoted herein as L1, calculates loss 270(1) based on reconstructed patch 248(1) and image patch 210. Use a loss function. Loss 270(1) is the visual quality of reconstructed patch 248(1) for image patch 210 due to scaling operations performed by downscaling CNN 230 and upscaling CNN 240. It is correlated with a decrease in . Similarly, training application 120 uses the loss function shown herein as L2 to calculate loss 270(2) based on reconstructed patch 248(2) and image patch 210. Loss 270(2) is the visual quality of reconstructed patch 248(2) for image patch 210 due to scaling operations performed by downscaling CNN 230 and training upscaler 250. It is correlated with a decrease in .

더 일반적으로, 훈련 애플리케이션(120)은 훈련 단계를 개시하기 위해 훈련 이미지들(104) 각각을 다수의 비중첩 이미지 패치들로 분할한다. 훈련 애플리케이션(120)은 이미지 패치들을 M개의 배치(들)(도시되지 않음)에 걸쳐 고르게 분포시키며, 여기서 M은 이미지 패치들의 수보다 크지 않은 양의 정수이다. 각각의 배치는 N개의 이미지 패치(들)를 포함하며, 여기서 N은 이미지 패치들의 수보다 크지 않은 양의 정수이다. 설명의 목적으로,m번째 배치에 포함된n번째 이미지 패치는 본 명세서에서 Imn으로 표시되며, 여기서n은 1 내지 N의 임의의 정수일 수 있고,m은 1 내지 M의 임의의 정수일 수 있다.More generally, training application 120 partitions each of training images 104 into multiple non-overlapping image patches to initiate the training phase. Training application 120 distributes the image patches evenly across M batch(es) (not shown), where M is a positive integer no greater than the number of image patches. Each batch contains N image patch(s), where N is a positive integer no greater than the number of image patches. For purposes of explanation,the nth image patch included inthe mth batch is denoted herein as Imn , wheren may be any integer from 1 to N, andm may be any integer from 1 to M.

훈련 단계 동안, 훈련 애플리케이션(120)은 다운스케일링 CNN(230) 및 업스케일링 CNN(240)을 증분적으로 그리고 공동으로 훈련시켜 임의의 수의 에포크들(epochs)(도시되지 않음)에 걸쳐 이미지 패치들로부터 도출되는 재구성된 패치들의 시각적 품질의 감소들을 줄인다. 훈련 애플리케이션(120)은 임의의 기술적으로 실현가능한 방식으로 에포크들의 총 수를 결정할 수 있다. 예를 들어, 훈련 애플리케이션(120)은 그래픽 사용자 인터페이스(도시되지 않음)를 통해 수신된 입력 및/또는 임의의 수 및/또는 유형의 수렴 기준에 기반하여 에포크들의 총 수를 결정할 수 있다. 각각의 에포크 동안, 훈련 애플리케이션(120)은 M회의 반복을 순차적으로 실행하고, 여기서 각각의 반복은 상이한 배치와 연관된다.During the training phase, training application 120 incrementally and jointly trains downscaling CNN 230 and upscaling CNN 240 to produce image patches over an arbitrary number of epochs (not shown). Reduces decreases in visual quality of reconstructed patches resulting from . Training application 120 may determine the total number of epochs in any technically feasible manner. For example, training application 120 may determine the total number of epochs based on input received via a graphical user interface (not shown) and/or any number and/or type of convergence criteria. During each epoch, training application 120 sequentially executes M iterations, where each iteration is associated with a different batch.

m번째 배치와 연관된 반복 동안, 훈련 애플리케이션(120)은 순차적으로, 동시에, 또는 이들의 임의의 조합으로 훈련 네트워크(220)를 통해 Im1 - ImN으로 표시된 N개의 이미지 패치의 순방향 패스들을 실행한다. 설명의 목적으로, Imn에 기반하여 다운스케일링 CNN(230) 및 업스케일링 CNN(240)에 의해 생성된 재구성된 패치는 본 명세서에서 R1mn으로 표시되고, 더 장황하게는, UpscalingCNN(DownscalingCNN(Imn)으로 표시된다. 대조적으로, Imn에 기반하여 다운스케일링 CNN(230) 및 훈련 업스케일러(250)에 의해 생성된 재구성된 패치는 본 명세서에서 R2mn으로 표시되고, 더 장황하게는, TrainingUpscaler(DownscalingCNN(Imn)으로 표시된다.During the iteration associated withthe mth batch, training application 120 makes forward passes of the N image patches, denoted Im1 - ImN , through training network 220 sequentially, simultaneously, or in any combination thereof. Run. For purposes of explanation, the reconstructed patches generated by downscaling CNN 230 and upscaling CNN 240 based on Imn are denoted herein as R1mn , and more verbosely, UpscalingCNN (DownscalingCNN (I In contrast, the reconstructed patch generated by the downscaling CNN 230 and the training upscaler 250 based on Imn is denoted herein as R2mn ,and more verbosely, TrainingUpscaler. (Displayed as DownscalingCNN(Imn ).

훈련 네트워크(220)가 Imn을 R1mn에 매핑한 후에, 훈련 애플리케이션(120)은 손실 함수 L1을 이용하여 R1mn 및 Imn에 기반하여 L1(Imn)으로 표시된 손실을 계산한다. L1(Imn)은 다운스케일링 CNN(230) 및 업스케일링 CNN(240)에 의해 수행되는 스케일링 동작들에 기인하는 Imn에 대한 R1mn의 시각적 품질의 감소에 상관된다. 훈련 애플리케이션(120)은 L1(Imn)을 계산하기 위해 임의의 기술적으로 실현가능한 방식으로 임의의 적합한 손실 함수 L1을 구현할 수 있다. 일부 실시예들에서, 훈련 애플리케이션(120)은 다음과 같이 L1(Imn)을 계산하기 위해 손실 함수 L1로서 L2 놈을 이용한다:After training network 220 maps Imn to R1mn , training application 120 uses loss function L1 to calculate a loss, denoted L1(Imn ), based on R1mn and Imn . L1(Imn ) is correlated to the reduction in visual quality of R1mn with respect to Imn due to scaling operations performed by downscaling CNN 230 and upscaling CNN 240. Training application 120 may implement any suitable loss function L1 in any technically feasible manner to compute L1(Imn ). In some embodiments, training application 120 uses the L2 norm as the loss function L1 to calculate L1(Imn ) as follows:

본 기술분야의 통상의 기술자가 인식하는 바와 같이, 2개의 이미지 사이의 L2 놈은 일반적으로 2개의 이미지 사이의 "유클리드 거리"로도 지칭된다.As those skilled in the art will recognize, the L2 norm between two images is also commonly referred to as the “Euclidean distance” between two images.

훈련 네트워크(220)가 Imn을 R2mn에 매핑한 후에, 훈련 애플리케이션(120)은 손실 함수 L2를 이용하여 R2mn 및 Imn에 기반하여 L2(Imn)으로 표시된 손실을 계산한다. L2(Imn)는 다운스케일링 CNN(230) 및 훈련 업스케일러(250)에 의해 수행되는 스케일링 동작들에 기인하는 Imn에 대한 R2mn의 시각적 품질의 감소에 상관된다. 훈련 애플리케이션(120)은 L2(Imn)를 계산하기 위해 임의의 기술적으로 실현가능한 방식으로 임의의 적합한 손실 함수 L2를 구현할 수 있다. 일부 실시예들에서, 훈련 애플리케이션(120)은 다음과 같이 L2(Imn)를 계산하기 위해 손실 함수 L2로서 L2 놈을 이용한다:After training network 220 maps Imn to R2mn , training application 120 uses loss function L2 to calculate a loss, denoted L2(Imn ), based on R2mn and Imn . L2(Imn ) is correlated to the reduction in visual quality of R2mn with respect to Imn due to the scaling operations performed by the downscaling CNN 230 and the training upscaler 250. Training application 120 may implement any suitable loss function L2 in any technically feasible manner to compute L2(Imn ). In some embodiments, training application 120 uses the L2 norm as the loss function L2 to calculate L2(Imn ) as follows:

m번째 배치와 연관된 반복에 대해, 업데이트 엔진(290)은 손실들 L1(Im1) - L1(Im1) 및 L2(Im1) - L2(Im1)에 기반하여 본 명세서에서 Lm으로 표시되는 반복 손실(도시되지 않음)을 계산한다. 훈련 애플리케이션(120)은 Lm을 계산하기 위해 임의의 기술적으로 실현가능한 방식으로 임의의 적합한 반복 손실 함수를 구현할 수 있다. 일부 실시예들에서, 훈련 애플리케이션(120)은 다음과 같이 Lm을 계산하기 위해 반복 손실 함수로서 가중된 합을 이용한다:Fortheiteration associated withthemth batch, theupdateengine290performs Calculate the repetition loss (not shown), denoted Lm . Training application 120 may implement any suitable iterative loss function in any technically feasible manner to calculate Lm . In some embodiments, training application 120 uses a weighted sum as the iterative loss function to calculate Lm as follows:

수학식 3에서, λ는 훈련 업스케일러에 의해 잘 표현되는 업스케일러들을 이용하여 생성된 재구성된 이미지들의 시각적 품질의 중요도에 대한, 훈련된 업스케일링 CNN(140)을 이용하여 생성된 재구성된 이미지들의 시각적 품질의 중요도와 상관되는 가중치이다.In Equation 3, λ is the importance of the visual quality of the reconstructed images generated using the upscalers being well represented by the training upscaler. It is a weight that is correlated with the importance of visual quality.

도시된 바와 같이,m번째 배치와 연관된 반복을 완료하기 위해, 업데이트 엔진(290)은 반복 손실 Lm을 감소시키는 목표에 기반하여 파라미터 업데이트(298)를 수행한다. 파라미터 업데이트(298) 동안, 업데이트 엔진(290)은 다운스케일링 CNN(230)에 포함된 임의의 수의 학습가능한 파라미터 값들 및 업스케일링 CNN(240)에 포함된 임의의 수의 학습가능한 파라미터 값들을 공동으로 업데이트한다. 새로운 버전들의 다운스케일링 CNN(230) 및 업스케일링 CNN(240)이 함께 반복 손실 Lm을 감소시키는 목적을 위해 더 양호하게 최적화된다. 제1 반복 후에, 다운스케일링 CNN(230) 및 업스케일링 CNN(240)은 또한 "부분적으로 훈련된" 다운스케일링 CNN 및 "부분적으로 훈련된" 업스케일링 CNN으로 각각 지칭된다.As shown, to complete the iteration associated withthe mth batch, the update engine 290 performs a parameter update 298 based on the goal of reducing the iteration loss Lm . During parameter update 298, update engine 290 combines any number of learnable parameter values included in downscaling CNN 230 and any number of learnable parameter values included in upscaling CNN 240. Update to The new versions of downscaling CNN 230 and upscaling CNN 240 together are better optimized for the purpose of reducing repetition loss Lm . After the first iteration, downscaling CNN 230 and upscaling CNN 240 are also referred to as “partially trained” downscaling CNN and “partially trained” upscaling CNN, respectively.

업데이트 엔진(290)은 파라미터 업데이트(298)를 수행하기 위해 임의의 수 및/또는 유형의 기계 학습 동작들을 실행할 수 있다. 일부 실시예들에서, 업데이트 엔진(290)은 훈련 네트워크(220)에 대해 임의의 수 및/또는 유형의 역전파 동작들 및 임의의 수 및/또는 유형의 기울기 하강 동작들을 실행하여 파라미터 업데이트(298)를 수행한다.Update engine 290 may execute any number and/or type of machine learning operations to perform parameter update 298. In some embodiments, update engine 290 may execute any number and/or type of backpropagation operations and any number and/or type of gradient descent operations on training network 220 to update parameters 298 ) is performed.

업데이트 엔진(290)이 파라미터 업데이트(298) 및 이에 따른m번째 배치와 연관된 반복을 완료한 후에, 훈련 애플리케이션(120)은 훈련 프로세스가 완료되었는지를 결정한다. 훈련 애플리케이션(120)이 훈련 프로세스가 완료되지 않았다고 결정하는 경우, 훈련 애플리케이션(120)은 가장 최근의 버전들의 다운스케일링 CNN(230) 및 업스케일링 CNN(240)을 포함하는 훈련 네트워크(220)를 이용하여 새로운 반복을 실행한다.After the update engine 290 completes the iteration associated with the parameter update 298 and thusthe mth batch, the training application 120 determines whether the training process is complete. If training application 120 determines that the training process is not complete, training application 120 uses training network 220 including the most recent versions of downscaling CNN 230 and upscaling CNN 240. and run a new iteration.

훈련 애플리케이션(120)이 훈련 프로세스가 완료된 것으로 결정한 후에, 가장 최근의 버전들의 다운스케일링 CNN(230) 및 업스케일링 CNN(240)은 또한 "완전히 훈련된" 다운스케일링 CNN 및 "완전히 훈련된" 업스케일링 CNN으로 각각 지칭된다. 훈련 애플리케이션(120)은 훈련된 다운스케일링 CNN(130) 및 훈련된 업스케일링 CNN(140)을 완전히 훈련된 다운스케일링 CNN 및 완전히 훈련된 업스케일링 CNN과 각각 동일하게 설정한다.After the training application 120 determines that the training process is complete, the most recent versions of the downscaling CNN 230 and the upscaling CNN 240 also include the “fully trained” downscaling CNN and the “fully trained” upscaling CNN. Each is referred to as CNN. The training application 120 sets the trained downscaling CNN 130 and the trained upscaling CNN 140 equal to the fully trained downscaling CNN and the fully trained upscaling CNN, respectively.

훈련 애플리케이션(120)은 훈련된 다운스케일링 CNN(130)을 백엔드 애플리케이션(150)에 액세스가능한 메모리에 저장하고/하거나 훈련된 다운스케일링 CNN(130)을 백엔드 애플리케이션(150)에 전송한다. 훈련 애플리케이션(120)은 훈련된 업스케일링 CNN(140)을 임의의 수의 클라이언트 애플리케이션들에 액세스가능한 메모리에 저장하고/하거나 훈련된 업스케일링 CNN(140)을 임의의 수의 클라이언트 애플리케이션들에 전송한다.Training application 120 stores the trained downscaling CNN 130 in memory accessible to backend application 150 and/or transmits the trained downscaling CNN 130 to backend application 150. Training application 120 stores the trained upscaling CNN 140 in memory accessible to any number of client applications and/or transmits the trained upscaling CNN 140 to any number of client applications. .

도 1과 관련하여 본 명세서에서 이전에 언급한 바와 같이, 본 명세서에 설명된 기술들은 제한적인 것이 아니라 예시적인 것이며, 본 발명의 더 넓은 사상 및 범위를 벗어나지 않고 변경될 수 있다. 훈련 애플리케이션(120), 훈련 네트워크(220), 다운스케일링 CNN(230), 업스케일링 CNN(240), 업스케일러(102), 훈련 업스케일러(250), 및 업데이트 엔진(290)에 의해 제공되는 기능에 대한 많은 수정들 및 변형들은 설명된 실시예들의 범위 및 사상을 벗어나지 않고 본 기술분야의 통상의 기술자에게 명백할 것이다.As previously stated herein with respect to Figure 1, the techniques described herein are illustrative rather than restrictive and may be modified without departing from the broader spirit and scope of the invention. Functions provided by training application 120, training network 220, downscaling CNN 230, upscaling CNN 240, upscaler 102, training upscaler 250, and update engine 290. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments.

특히, 훈련 애플리케이션(120)의 일부 다른 실시예들에서, 훈련 애플리케이션(120)은 0개 이상의 훈련 업스케일러 및 0개 이상의 훈련 다운스케일러를 고려하면서 스케일 인자(122) 및 훈련 이미지들(104)에 기반하여 훈련된 다운스케일링 CNN(130) 및 훈련된 업스케일링 CNN(140)을 공동으로 훈련시킨다. 각각의 훈련 업스케일러는 스케일 인자(122)를 구현하도록 구성된 범용 업스케일러, 스케일 인자(122)만큼 업스케일링하도록 훈련되는 기계 학습 모델, 또는 스케일 인자(122)를 구현하는 임의의 유형의 업스케일링 알고리즘의 임의의 다른 구현일 수 있다. 각각의 훈련 다운스케일러는 스케일 인자(122)를 구현하도록 구성된 범용 다운스케일러, 스케일 인자(122)만큼 다운스케일링하도록 훈련되는 기계 학습 모델, 또는 스케일 인자(122)를 구현하는 임의의 유형의 다운스케일링 알고리즘의 임의의 다른 구현일 수 있다.In particular, in some other embodiments of training application 120, training application 120 may adjust scale factor 122 and training images 104 while considering zero or more training upscalers and zero or more training downscalers. Based on this, the trained downscaling CNN (130) and the trained upscaling CNN (140) are jointly trained. Each training upscaler may be a general-purpose upscaler configured to implement scale factor 122, a machine learning model trained to upscale by scale factor 122, or any type of upscaling algorithm that implements scale factor 122. It may be any other implementation of . Each training downscaler may be a general-purpose downscaler configured to implement scale factor 122, a machine learning model trained to downscale by scale factor 122, or any type of downscaling algorithm that implements scale factor 122. It may be any other implementation of .

일부 실시예들에서, 훈련 애플리케이션(120)은 임의의 기술적으로 실현가능한 방식으로 다운스케일링 CNN(230), 업스케일링 CNN(240), 0개 이상의 훈련 업스케일러, 0개 이상의 훈련 다운스케일러, 또는 이들의 임의의 조합을 각각 고려하는 임의의 수 및/또는 유형의 손실 함수들을 구현할 수 있다. 특히, 훈련 애플리케이션(120)은 재구성된 패치들과 연관된 임의의 수 및/또는 유형들의 손실들을 계산하기 위해 절대 시각적 품질 레벨들, 시각적 품질 변화들, 절대 왜곡 레벨들, 왜곡 변화들, 또는 이들의 임의의 조합과 상관되는 임의의 유형들의 메트릭들에 대한 값들을 계산할 수 있다.In some embodiments, training application 120 may be configured to use downscaling CNN 230, upscaling CNN 240, zero or more training upscalers, zero or more training downscalers, or both, in any technically feasible manner. Any number and/or type of loss functions can be implemented, each considering any combination of . In particular, training application 120 may use absolute visual quality levels, visual quality changes, absolute distortion levels, distortion changes, or any of these to calculate any number and/or types of losses associated with the reconstructed patches. One can calculate values for any types of metrics correlated with any combination.

일부 실시예들에서, 훈련 네트워크(220)에 추가적인 훈련 업스케일러를 포함시키기 위해, 훈련 애플리케이션(120)은 다운스케일링 CNN(230)의 출력을 추가적인 훈련 업스케일러에 접속시킨다. 훈련 네트워크(220)를 통한 이미지 패치 Imn의 순방향 패스 동안, 추가적인 훈련 업스케일러는 Imn의 근사 재구성인 추가적인 재구성된 패치를 생성한다. 후속하여, 훈련 애플리케이션(120)은 다운스케일링 CNN(230) 및 추가적인 훈련 업스케일러 둘 다와 연관된 손실을 계산한다.In some embodiments, to include an additional training upscaler in training network 220, training application 120 connects the output of downscaling CNN 230 to an additional training upscaler. During the forward pass of the image patch Imn through the training network 220, an additional training upscaler generates additional reconstructed patches that are approximate reconstructions of Imn . Subsequently, training application 120 calculates the loss associated with both the downscaling CNN 230 and the additional training upscaler.

일부 실시예들에서, 훈련 네트워크(220)에 추가적인 훈련 다운스케일러를 포함시키기 위해, 훈련 애플리케이션(120)은 훈련 네트워크(220)의 입력을 추가적인 훈련 다운스케일러의 입력에 접속시키고, 추가적인 훈련 다운스케일러의 출력을 업스케일링 CNN(240)에 접속시킨다. 훈련 네트워크(220)를 통한 이미지 패치 Imn의 순방향 패스 동안, 추가적인 훈련 업스케일러는 이미지 패치 Imn을 업스케일링하여 추가적인 다운스케일링된 패치를 생성한다. 추가적인 다운스케일링된 패치는 업스케일링 CNN(240)에 의해 업스케일링되어 Imn의 근사 재구성인 추가적인 재구성된 이미지를 생성한다. 훈련 애플리케이션(120)은 추가적인 훈련 다운스케일러 및 업스케일링 CNN(240) 둘 다와 연관된 손실을 계산한다.In some embodiments, to include an additional training downscaler in training network 220, training application 120 connects the input of training network 220 to the input of an additional training downscaler, The output is connected to an upscaling CNN (240). During the forward pass of the image patch Imn through the training network 220, an additional training upscaler upscales the image patch Imn to generate additional downscaled patches. Additional downscaled patches are upscaled by the upscaling CNN 240 to produce additional reconstructed images that are approximate reconstructions of Imn . Training application 120 calculates the loss associated with both the additional training downscaler and upscaling CNN 240.

일부 실시예들에서, 각각의 추가적인 훈련 스케일러(예를 들어, 추가적인 훈련 업스케일러 또는 추가적인 훈련 다운스케일러)에 대해, 업데이트 엔진(290)은 대응하는 가중된 항을 반복 손실 함수에 추가한다. 일부 실시예들에서, 훈련 애플리케이션(120)은 다운스케일링 CNN(230), 업스케일링 CNN(240), 훈련 업스케일러(250), 및 추가적인 훈련 스케일러를 포함하는 훈련 네트워크(220)에 대한 Lm을 다음과 같이 계산한다:In some embodiments, for each additional training scaler (e.g., additional training upscaler or additional training downscaler), update engine 290 adds a corresponding weighted term to the iterative loss function. In some embodiments, training application 120 determines Lm for training network 220, which includes downscaling CNN 230, upscaling CNN 240, training upscaler 250, and additional training scaler. Calculate as follows:

수학식 4에서, K는 대응하는 이미지 패치에 대해 추가적인 훈련 스케일러를 이용하여 생성된 추가적인 재구성된 패치의 시각적 품질과 상관되는 손실 함수 L3에 대한 가중치이다.In Equation 4, K is the weight for the loss function L3 that is correlated with the visual quality of the additional reconstructed patch generated using an additional training scaler for the corresponding image patch.

일부 실시예들에서, 훈련 애플리케이션(120)은 다운스케일링 CNN(230) 및 업스케일링 CNN을 포함하지만 훈련 업스케일러(250)를 포함하지 않는 훈련 네트워크를 생성한다. 훈련 애플리케이션(120)은 다운스케일링 CNN(230), 업스케일링 CNN(240)을 포함하지만 훈련 업스케일러(250)를 포함하지 않는 훈련 네트워크(220)에 대한 Lm을 다음과 같이 계산한다:In some embodiments, training application 120 generates a training network that includes downscaling CNN 230 and upscaling CNN but does not include training upscaler 250. Training application 120 calculates Lm for training network 220, including downscaling CNN 230, upscaling CNN 240, but not training upscaler 250, as follows:

일부 실시예들에서, 훈련 애플리케이션(120)은 수학식들 1 및 2에서 이용되는 유클리드 거리 대신에 또는 이에 더하여 임의의 수 및/또는 유형들의 이미지 거리 메트릭들, 시각적 품질 메트릭들, 시각적 품질 모델들, 또는 이들의 임의의 조합에 기반하여 임의의 유형들의 손실 함수들(예를 들어, 손실 함수 L1 및 손실 함수 L2)을 구현할 수 있다.In some embodiments, training application 120 may use any number and/or types of image distance metrics, visual quality metrics, visual quality models instead of or in addition to the Euclidean distance used in Equations 1 and 2. , or any combination thereof.

다른 예에서, 일부 실시예들에서, 전술한 입력 스트라이드를 갖는 컨볼루션 계층은 임의의 유형의 풀링 연산(예를 들어, 최대 풀링 연산 또는 평균 풀링 연산)을 실행하는 풀링 계층으로 대체된다. 동일한 또는 다른 실시예들에서, 전술한 출력 스트라이드를 갖는 디컨볼루션 계층은 1과 동일하지 않은 출력 스트라이드를 갖는 디컨볼루션 계층으로 대체되고, 임의의 유형의 언풀링 연산(unpooling operation)(예를 들어, 가장 가까운 이웃 언풀링 연산 또는 최대 언풀링 연산)을 실행하는 언풀링 계층으로 대체된다.In another example, in some embodiments, the convolutional layer with the input stride described above is replaced with a pooling layer that performs any type of pooling operation (eg, a max pooling operation or an average pooling operation). In the same or other embodiments, the deconvolution layer with the output stride described above is replaced by a deconvolution layer with an output stride not equal to 1, and any type of unpooling operation (e.g. For example, it is replaced by an unpooling layer that executes a nearest neighbor unpooling operation or a maximum unpooling operation).

도 3은 다양한 실시예들에 따른, 다운스케일링 CNN 및 업스케일링 CNN을 공동으로 훈련하기 위한 방법 단계들의 흐름도이다. 방법 단계들이 도 1 및 도 2의 시스템들을 참조하여 설명되지만, 본 기술분야의 통상의 기술자는 방법 단계들을 임의의 순서로 구현하도록 구성된 임의의 시스템이 실시예들의 범위 내에 속한다는 것을 이해할 것이다.3 is a flow diagram of method steps for jointly training a downscaling CNN and an upscaling CNN, according to various embodiments. Although the method steps are described with reference to the systems of FIGS. 1 and 2, those skilled in the art will understand that any system configured to implement the method steps in any order is within the scope of the embodiments.

도시된 바와 같이, 방법(300)은 단계(302)에서 시작하고, 여기서 훈련 애플리케이션(120)은 스케일 인자(122)에 기반하여 다운스케일링 CNN(230) 및 업스케일링 CNN(240)을 생성한다. 단계(304)에서, 훈련 애플리케이션(120)은 다운스케일링 CNN(230), 업스케일링 CNN(240), 및 스케일 인자를 구현하는 0개 이상의 훈련 업스케일러를 포함하는 훈련 네트워크(220)를 생성한다.As shown, method 300 begins at step 302, where training application 120 generates downscaling CNN 230 and upscaling CNN 240 based on scale factor 122. At step 304, training application 120 creates a training network 220 that includes a downscaling CNN 230, an upscaling CNN 240, and zero or more training upscalers that implement the scale factor.

단계(306)에서, 훈련 애플리케이션(120)은 훈련 이미지들(104)로부터 이미지 패치들을 추출하고, 임의의 수의 배치(들)에 걸쳐 이미지 패치들을 분포시키고, 제1 배치를 선택한다. 단계(308)에서, 선택된 배치 내의 각각의 이미지 패치에 대해, 훈련 애플리케이션(120)은 이미지 패치에 대해 다운스케일링 CNN(230)을 실행하여 대응하는 다운스케일링된 패치를 생성한다. 단계(310)에서, 선택된 배치 내의 각각의 이미지 패치에 대해, 훈련 애플리케이션(120)은 대응하는 다운스케일링된 패치에 대해 업스케일링 CNN(240) 및 각각의 훈련 업스케일러를 독립적으로 실행하여 대응하는 재구성된 패치(들)를 생성한다.At step 306, training application 120 extracts image patches from training images 104, distributes the image patches over a random number of batch(es), and selects a first batch. At step 308, for each image patch within the selected batch, training application 120 runs downscaling CNN 230 on the image patch to generate a corresponding downscaled patch. At step 310, for each image patch within the selected batch, the training application 120 independently runs the upscaling CNN 240 and each training upscaler on the corresponding downscaled patch to reconstruct the corresponding Create patch(s).

단계(312)에서, 선택된 배치 내의 각각의 이미지 패치에 대해, 훈련 애플리케이션(120)은 이미지 패치 및 대응하는 재구성된 패치(들)에 기반하여 대응하는 손실(들)을 계산한다. 단계(314)에서, 훈련 애플리케이션(120)에 포함된 업데이트 엔진(290)은 선택된 배치 내의 이미지 패치(들)에 대응하는 손실(들)에 기반하여 반복 손실을 계산한 다음, 반복 손실에 기반하여 업스케일링 CNN(240) 및 다운스케일링 CNN(230) 둘 다의 학습가능한 파라미터 값들을 업데이트한다.At step 312, for each image patch in the selected batch, training application 120 calculates the corresponding loss(s) based on the image patch and the corresponding reconstructed patch(s). At step 314, the update engine 290 included in the training application 120 calculates the repetition loss based on the loss(s) corresponding to the image patch(s) within the selected batch, and then calculates the repetition loss based on the repetition loss. Update the learnable parameter values of both the upscaling CNN 240 and the downscaling CNN 230.

단계(316)에서, 훈련 애플리케이션(120)은 선택된 배치가 마지막 배치인지를 결정한다. 단계(314)에서, 훈련 애플리케이션(120)이 선택된 배치가 마지막 배치가 아니라고 결정하면, 방법(300)은 단계(318)로 진행한다. 단계(318)에서, 훈련 애플리케이션(120)은 다음 배치를 선택하고, 방법(300)은 단계(308)로 복귀하고, 여기서 훈련 애플리케이션(120)은 새롭게 선택된 배치 내의 이미지 패치(들)에 대해 다운스케일링 CNN(230)을 실행하여 대응하는 다운스케일링된 패치(들)를 생성한다.At step 316, training application 120 determines whether the selected batch is the last batch. If, at step 314, the training application 120 determines that the selected batch is not the final batch, the method 300 proceeds to step 318. At step 318, the training application 120 selects the next batch, and the method 300 returns to step 308, where the training application 120 downloads the image patch(s) within the newly selected batch. Executes the scaling CNN 230 to generate corresponding downscaled patch(s).

그러나, 단계(316)에서, 훈련 애플리케이션(120)이 선택된 배치가 마지막 배치라고 결정하면, 방법(300)은 바로 단계(320)로 진행한다. 단계(320)에서, 훈련 애플리케이션(120)은 현재 에포크가 마지막 에포크인지를 결정한다. 단계(320)에서, 훈련 애플리케이션(120)이 현재 에포크가 마지막 에포크가 아니라고 결정하면, 방법(300)은 단계(322)로 진행한다. 단계(322)에서, 훈련 애플리케이션(120)은 제1 배치를 선택하고, 방법(300)은 단계(308)로 복귀하고, 여기서 훈련 애플리케이션(120)은 새롭게 선택된 배치 내의 이미지 패치(들)에 대해 다운스케일링 CNN(230)을 실행하여 대응하는 다운스케일링된 패치(들)를 생성한다.However, if at step 316 the training application 120 determines that the selected batch is the last batch, the method 300 proceeds directly to step 320. At step 320, training application 120 determines whether the current epoch is the last epoch. If, at step 320, the training application 120 determines that the current epoch is not the last epoch, the method 300 proceeds to step 322. At step 322, the training application 120 selects a first batch, and the method 300 returns to step 308, where the training application 120 learns about the image patch(s) within the newly selected batch. The downscaling CNN 230 is executed to generate corresponding downscaled patch(s).

그러나, 단계(320)에서, 훈련 애플리케이션(120)이 현재 에포크가 마지막 에포크라고 결정하면, 방법(300)은 바로 단계(324)로 진행한다. 단계(324)에서, 훈련 애플리케이션(120)은 다운스케일링 CNN(230)을 스케일 인자(122)와 연관된 훈련된 다운스케일링 CNN(130)으로서 저장하고, 업스케일링 CNN(240)을 스케일 인자(122)와 연관된 훈련된 다운스케일링 CNN(130)으로서 저장하고, 훈련된 다운스케일링 CNN(130)을 백엔드 애플리케이션(150)에 전송하고, 훈련된 업스케일링 CNN(140)을 임의의 수의 엔드포인트 애플리케이션들(192)에 전송한다. 방법(300)은 그 후 종료된다.However, if at step 320 the training application 120 determines that the current epoch is the last epoch, the method 300 proceeds directly to step 324. At step 324, training application 120 stores downscaling CNN 230 as a trained downscaling CNN 130 associated with scale factor 122 and upscaling CNN 240 with scale factor 122. Store as the trained downscaling CNN 130 associated with, transmit the trained downscaling CNN 130 to the backend application 150, and transmit the trained upscaling CNN 140 to any number of endpoint applications ( 192). Method 300 then ends.

도 4는 다양한 실시예들에 따른, 소스 비디오의 재구성된 청크를 생성하기 위한 방법 단계들의 흐름도이다. 방법 단계들이 도 1 및 도 2의 시스템들을 참조하여 설명되지만, 본 기술분야의 통상의 기술자는 방법 단계들을 임의의 순서로 구현하도록 구성된 임의의 시스템이 실시예들의 범위 내에 속한다는 것을 이해할 것이다.4 is a flow diagram of method steps for generating a reconstructed chunk of source video, according to various embodiments. Although the method steps are described with reference to the systems of FIGS. 1 and 2, those skilled in the art will understand that any system configured to implement the method steps in any order is within the scope of the embodiments.

도시된 바와 같이, 방법(400)은 단계(402)에서 시작하고, 여기서 엔드포인트 애플리케이션(192)은 CDN(180)으로부터 소스 비디오의 청크에 대응하는 인코딩된 청크를 획득한다. 특히, 인코딩된 청크는 스케일러 ID 메타데이터와 선택적으로 연관된다. 단계(404)에서, 엔드포인트 애플리케이션(192)은 인코딩된 청크에 대해 디코더를 실행하여 소스 비디오의 청크에 대응하는 디코딩된 청크를 생성한다.As shown, method 400 begins at step 402, where endpoint application 192 obtains encoded chunks corresponding to chunks of source video from CDN 180. In particular, encoded chunks are optionally associated with scaler ID metadata. At step 404, the endpoint application 192 executes a decoder on the encoded chunks to generate decoded chunks that correspond to chunks of the source video.

단계(406)에서, 엔드포인트 애플리케이션(192)은 인코딩된 청크가 스케일러 ID 메타데이터와 연관되는지를 결정한다. 단계(406)에서, 엔드포인트 애플리케이션(192)이 인코딩된 청크가 스케일러 ID 메타데이터와 연관되지 않는다고 결정하면, 방법(400)은 바로 단계(420)로 진행한다. 단계(420)에서, 엔드포인트 애플리케이션(192)은 이용가능한 업스케일러를 주 업스케일러로서 지정하고, 방법(400)은 바로 단계(422)로 진행한다.At step 406, endpoint application 192 determines whether the encoded chunk is associated with scaler ID metadata. If, at step 406, the endpoint application 192 determines that the encoded chunk is not associated with scaler ID metadata, the method 400 proceeds directly to step 420. At step 420, the endpoint application 192 designates the available upscaler as the primary upscaler, and the method 400 proceeds directly to step 422.

그러나, 단계(406)에서, 엔드포인트 애플리케이션(192)이 인코딩된 청크가 스케일러 ID 메타데이터와 연관된다고 결정하면, 방법(400)은 단계(408)로 진행한다. 단계(408)에서, 엔드포인트 애플리케이션(192)은 스케일러 ID 메타데이터에 기반하여 "공동으로" 훈련된 업스케일링 CNN을 식별한다.However, if at step 406 the endpoint application 192 determines that the encoded chunk is associated with scaler ID metadata, the method 400 proceeds to step 408. At step 408, the endpoint application 192 identifies a “jointly” trained upscaling CNN based on the scaler ID metadata.

단계(410)에서, 엔드포인트 애플리케이션(192)은 공동으로 훈련된 업스케일링 CNN이 이용가능한지를 결정한다. 단계(410)에서, 엔드포인트 애플리케이션(192)이 공동으로 훈련된 업스케일링 CNN이 이용가능하다고 결정하면, 방법(400)은 단계(412)로 진행한다. 단계(412)에서, 엔드포인트 애플리케이션(192)은 공동으로 훈련된 업스케일링 CNN을 주 업스케일러로서 지정하고, 방법(400)은 바로 단계(422)로 진행한다.At step 410, endpoint application 192 determines whether a jointly trained upscaling CNN is available. If at step 410 the endpoint application 192 determines that a jointly trained upscaling CNN is available, the method 400 proceeds to step 412. At step 412, the endpoint application 192 designates the jointly trained upscaling CNN as the primary upscaler, and the method 400 proceeds directly to step 422.

그러나, 단계(410)에서, 엔드포인트 애플리케이션(192)이 공동으로 훈련된 업스케일링 CNN이 이용가능하지 않다고 결정하는 경우, 방법(400)은 단계(414)로 바로 진행한다. 단계(414)에서, 엔드포인트 애플리케이션(192)은 스케일러 ID 메타데이터에 기반하여 0개 이상의 훈련 스케일러와 동일한 유형을 갖는 임의의 업스케일러들을 식별한다.However, if at step 410 the endpoint application 192 determines that a jointly trained upscaling CNN is not available, the method 400 proceeds directly to step 414. At step 414, endpoint application 192 identifies any upscalers that have the same type as zero or more training scalers based on the scaler ID metadata.

단계(416)에서, 엔드포인트 애플리케이션(192)은 임의의 식별된 업스케일러가 이용가능한지를 결정한다. 단계(416)에서, 엔드포인트 애플리케이션(192)이 하나 이상의 훈련 업스케일러가 이용가능하다고 결정하면, 방법(400)은 단계(418)로 진행한다. 단계(418)에서, 엔드포인트 애플리케이션(192)은 이용가능한 식별된 업스케일러를 주 업스케일러로서 지정하고, 방법(400)은 바로 단계(422)로 진행한다.At step 416, endpoint application 192 determines whether any identified upscalers are available. If, at step 416, the endpoint application 192 determines that one or more training upscalers are available, the method 400 proceeds to step 418. At step 418, the endpoint application 192 designates the available identified upscaler as the primary upscaler, and the method 400 proceeds directly to step 422.

그러나, 단계(416)에서, 엔드포인트 애플리케이션(192)이 어떠한 훈련 업스케일러도 이용가능하지 않다고 결정하면, 방법(400)은 바로 단계(420)로 진행한다. 단계(420)에서, 엔드포인트 애플리케이션(192)은 이용가능한 업스케일러를 주 업스케일러로서 지정하고, 방법(400)은 바로 단계(422)로 진행한다.However, if at step 416 the endpoint application 192 determines that no training upscaler is available, the method 400 proceeds directly to step 420. At step 420, the endpoint application 192 designates the available upscaler as the primary upscaler, and the method 400 proceeds directly to step 422.

단계(422)에서, 엔드포인트 애플리케이션(192)은 디코딩된 청크에 대해 적어도 주 업스케일러를 실행하여 타겟 해상도를 가지며 소스 비디오의 청크에 대응하는 재구성된 청크를 생성한다. 단계(424)에서, 엔드포인트 애플리케이션(192)은 재구성된 청크를 저장 및/또는 재생한다. 그 후, 방법(400)은 종료된다.At step 422, the endpoint application 192 runs at least a primary upscaler on the decoded chunks to produce reconstructed chunks that have the target resolution and correspond to chunks of the source video. At step 424, endpoint application 192 stores and/or replays the reconstructed chunk. Thereafter, method 400 ends.

요컨대, 개시된 기술들은 미디어 타이틀들을 스트리밍할 때 수행되는 스케일링 동작들과 전형적으로 연관된 전체적인 시각적 품질의 감소를 완화하는데 이용될 수 있다. 일부 실시예들에서, 훈련 애플리케이션은 스케일 인자와 연관된 다운스케일링 CNN, 동일한 스케일 인자와 연관된 업스케일링 CNN, 및 훈련 업스케일러를 포함하는 훈련 네트워크를 생성한다. 훈련 애플리케이션은 훈련 이미지들의 이미지 패치들에 기반하여 훈련 네트워크에 대해 종단간 반복 훈련 프로세스를 실행한다.In summary, the disclosed techniques can be used to mitigate the reduction in overall visual quality typically associated with scaling operations performed when streaming media titles. In some embodiments, the training application creates a training network that includes a downscaling CNN associated with a scale factor, an upscaling CNN associated with the same scale factor, and a training upscaler. The training application executes an end-to-end iterative training process on the training network based on image patches from the training images.

반복의 각각의 순방향 패스 동안, 다운스케일링 CNN은 스케일 인자만큼 상이한 이미지 패치를 다운스케일링하여 다운스케일링된 패치를 생성한다. 업스케일링 CNN 및 훈련 업스케일러는 스케일 인자만큼 다운스케일링된 패치를 독립적으로 업스케일링하여 상이한 재구성된 패치들을 생성한다. 훈련 애플리케이션은 이미지 패치에 대해 각각의 재구성된 패치에 대한 품질 손실을 추정한다. 각각의 반복의 끝에서, 훈련 애플리케이션은 재구성된 패치들에 대한 품질 손실들에 기반하여 반복 손실을 계산한다. 그 다음, 훈련 애플리케이션은 반복 손실을 감소시키기 위해 다운스케일링 CNN 및 업스케일링 CNN에 포함된 학습가능한 파라미터 값들을 수정한다.During each forward pass of the iteration, the downscaling CNN downscales image patches that differ by a scale factor, producing downscaled patches. Upscaling CNN and training The upscaler independently upscales the downscaled patch by a scale factor to generate different reconstructed patches. The training application estimates the quality loss for each reconstructed patch over the image patches. At the end of each iteration, the training application calculates the iteration loss based on the quality losses for the reconstructed patches. Next, the training application modifies learnable parameter values included in the downscaling CNN and upscaling CNN to reduce repetition loss.

반복 훈련 프로세스가 완료되었다고 훈련 애플리케이션이 결정한 후에, 훈련 애플리케이션은 가장 최근의 버전들의 다운스케일링 CNN 및 업스케일링 CNN을 스케일 인자와 연관된 훈련된 다운스케일링 CNN 및 스케일 인자와 연관된 훈련된 업스케일링 CNN으로서 각각 저장한다. 훈련 애플리케이션은 훈련된 다운스케일링 CNN을 백엔드 애플리케이션에 전송한다. 훈련 애플리케이션은 훈련된 업스케일링 CNN을 하나 이상의 클라이언트 디바이스 상에서 실행되는 엔드포인트 애플리케이션들에 전송한다.After the training application determines that the iterative training process is complete, the training application stores the most recent versions of the downscaling CNN and upscaling CNN as the trained downscaling CNN associated with the scale factor and the trained upscaling CNN associated with the scale factor, respectively. do. The training application sends the trained downscaling CNN to the backend application. The training application transmits the trained upscaling CNN to endpoint applications running on one or more client devices.

백엔드 애플리케이션은 미디어 타이틀과 연관된 소스 비디오의 프레임들에 대해 훈련된 다운스케일링 CNN을 실행하여, 훈련된 다운스케일링 CNN과 연관된 스케일 인자만큼 소스 비디오의 해상도보다 낮은 해상도를 갖는 다운스케일링된 비디오의 프레임들을 생성한다. 백엔드 애플리케이션은 스케일러 ID 메타데이터를 다운스케일링된 비디오에 첨부한다. 스케일러 ID 메타데이터는 엔드포인트 애플리케이션이, 스케일 인자에 대한 훈련된 다운스케일링 CNN이 다운스케일링된 비디오를 생성하는데 이용되었고, 훈련된 업스케일링 CNN이 다운스케일링된 비디오에 대한 가장 적합한 업스케일러이고, 훈련 업스케일러가 다운스케일링된 비디오에 대한 다음으로 가장 적합한 업스케일러인 것을 식별할 수 있게 한다. 백엔드 애플리케이션은 다운스케일링된 비디오에 대해 인코더를 실행하여 인코딩된 비디오를 생성하고 스케일러 ID 메타데이터를 인코딩된 비디오에 첨부한다.The backend application runs a downscaling CNN trained on frames of the source video associated with the media title, generating frames of the downscaled video with a resolution lower than the resolution of the source video by the scale factor associated with the trained downscaling CNN. do. The backend application attaches scaler ID metadata to the downscaled video. The scaler ID metadata tells the endpoint application that the trained downscaling CNN for the scale factor was used to generate the downscaled video, that the trained upscaling CNN is the most appropriate upscaler for the downscaled video, and that the trained upscaling CNN is the most appropriate upscaler for the downscaled video. Allows the scaler to identify the next best upscaler for the downscaled video. The backend application runs an encoder on the downscaled video to generate encoded video and attaches scaler ID metadata to the encoded video.

인코딩된 비디오의 청크에 대한 요청에 응답하여, 클라이언트 디바이스 상에서 실행되는 엔드포인트 애플리케이션의 인스턴스는 인코딩된 청크 및 스케일러 ID 메타데이터를 수신한다. 엔드포인트 애플리케이션은 스케일러 ID 메타데이터에 기반하여 주 업스케일러를 선택한다. 더 구체적으로, 엔드포인트 애플리케이션이 훈련된 업스케일링 CNN에 액세스할 수 있는 경우, 엔드포인트 애플리케이션은 훈련된 업스케일링 CNN을 주 업스케일러로서 선택한다. 그렇지 않고, 엔드포인트 애플리케이션이 훈련 업스케일러에 액세스할 수 있다면, 엔드포인트 애플리케이션은 훈련 업스케일러를 주 업스케일러로서 선택한다. 그렇지 않으면, 엔드포인트 애플리케이션은 임의의 업스케일러를 주 업스케일러로서 선택할 수 있다. 엔드포인트 애플리케이션은 주 업스케일러를 이용하여 연관된 스케일 인자만큼 디코딩된 비디오의 청크를 업스케일링함으로써 재구성된 비디오의 대응하는 청크를 생성한다.In response to a request for a chunk of encoded video, an instance of an endpoint application running on a client device receives the encoded chunk and scaler ID metadata. The endpoint application selects a primary upscaler based on scaler ID metadata. More specifically, if the endpoint application has access to a trained upscaling CNN, the endpoint application selects the trained upscaling CNN as the primary upscaler. Otherwise, if the endpoint application has access to the training upscaler, the endpoint application selects the training upscaler as the primary upscaler. Otherwise, the endpoint application can select any upscaler as the primary upscaler. The endpoint application generates corresponding chunks of reconstructed video by upscaling chunks of decoded video by the associated scale factor using a primary upscaler.

종래 기술에 비해 개시된 기술들의 적어도 하나의 기술적 이점은 훈련된 다운스케일링 컨볼루션 신경망(CNN) 및 대응하는 훈련된 업스케일링 CNN이 비디오 인코딩 시스템 내에서 서로 조합하여 구현되어 스케일링 동작들을 수행할 때 재구성된 비디오들의 시각적 품질의 감소를 더 효과적으로 제한할 수 있다는 것이다. 종래 기술들과는 달리, 훈련된 다운스케일링 CNN 및 대응하는 훈련된 업스케일링 CNN은 스케일링 동작들에 기인하는 재구성 에러들을 협력적으로 감소시키도록 공동으로 훈련된다. 또한, 개시된 기술들에 의해, 엔드포인트 애플리케이션은, 메타데이터를 통해, 인코딩된 비디오를 생성하는데 이용되는 훈련된 다운스케일링 CNN을 식별할 수 있다. 그 다음, 엔드포인트 애플리케이션은 대응하는 훈련된 업스케일링 CNN을 식별하고 이용하여, 종래 기술들을 이용하여 통상적으로 달성될 수 있는 것에 비해 주어진 비트레이트에 대해 증가된 시각적 품질 레벨을 갖는 대응하는 재구성된 비디오를 생성할 수 있다. 반대로, 개시된 기술들은 주어진 타겟 시각적 품질을 달성하기 위해 소스 비디오를 인코딩할 때 이용되는 비트들의 수가 종래 기술들을 이용하는데 통상적으로 요구되는 것에 비해 감소될 수 있게 한다. 개시된 기술들의 다른 기술적 이점은 훈련된 다운스케일링 CNN이 상이한 유형들의 업스케일러들과 조합하여 훈련된 다운스케일링 CNN들을 이용하여 업스케일링 동작을 수행하는 것과 종종 연관된 재구성 에러들을 감소시키도록 훈련될 수 있다는 것이다. 따라서, 개시된 기술들에 의해, 훈련된 다운스케일링 CNN들과 상이한 유형들의 업스케일러들 사이의 상호운용성은 종래 기술들에 비해 증가될 수 있고, 이는 재구성된 비디오들의 시각적 품질이 광범위한 상이한 클라이언트 디바이스들에 걸쳐 증가되게 한다. 이러한 기술적 이점들은 종래 기술의 접근법들에 비해 하나 이상의 기술적 개선을 제공한다.At least one technical advantage of the disclosed techniques over the prior art is that a trained downscaling convolutional neural network (CNN) and a corresponding trained upscaling CNN are implemented in combination with each other within a video encoding system to perform scaling operations. This means that the decline in visual quality of videos can be more effectively limited. Unlike prior art, a trained downscaling CNN and a corresponding trained upscaling CNN are jointly trained to cooperatively reduce reconstruction errors due to scaling operations. Additionally, the disclosed techniques allow an endpoint application to identify, via metadata, the trained downscaling CNN used to generate encoded video. The endpoint application then identifies and uses the corresponding trained upscaling CNN to produce a corresponding reconstructed video with an increased level of visual quality for a given bitrate compared to what can typically be achieved using conventional techniques. can be created. Conversely, the disclosed techniques allow the number of bits used when encoding source video to achieve a given target visual quality to be reduced compared to what is typically required using prior art techniques. Another technical advantage of the disclosed techniques is that a trained downscaling CNN can be trained to reduce reconstruction errors often associated with performing an upscaling operation using trained downscaling CNNs in combination with different types of upscalers. . Accordingly, by the disclosed techniques, interoperability between trained downscaling CNNs and upscalers of different types can be increased compared to prior art techniques, which ensures that the visual quality of the reconstructed videos is scalable to a wide range of different client devices. Let it increase over time. These technical advantages provide one or more technical improvements over prior art approaches.

1. 일부 실시예들에서, 다운스케일링된 비디오들을 재구성하기 위한 컴퓨터에 의해 구현되는 방법은, 제1 해상도를 갖고 훈련된 다운스케일링 컨볼루션 신경망(CNN)을 이용하여 생성된 제1 다운스케일링된 비디오의 제1 부분과 연관된 메타데이터에 액세스하는 단계; 메타데이터에 기반하여, 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 이용되어야 하는 제1 업스케일러를 결정하는 단계; 및 제1 다운스케일링된 비디오의 제1 부분에 대해 제1 업스케일러를 실행하여, 재생을 위해 액세스가능하고 제1 해상도보다 높은 제2 해상도를 갖는 제1 재구성된 비디오의 제1 부분을 생성하는 단계를 포함하는, 컴퓨터에 의해 구현되는 방법.1. In some embodiments, a computer-implemented method for reconstructing downscaled videos comprises: a first downscaled video generated using a downscaling convolutional neural network (CNN) trained with a first resolution; accessing metadata associated with the first portion of; determining, based on the metadata, a first upscaler that should be used when upscaling the first portion of the first downscaled video; and executing the first upscaler on the first portion of the first downscaled video to produce a first portion of the first reconstructed video that is accessible for playback and has a second resolution that is higher than the first resolution. A method implemented by a computer, including.

2. 조항 1에 있어서, 제1 업스케일러는 훈련된 다운스케일링 CNN과 공동으로 훈련된, 훈련된 업스케일링 CNN을 포함하는, 컴퓨터에 의해 구현되는 방법.2. The computer-implemented method of clause 1, wherein the first upscaler comprises a trained upscaling CNN jointly trained with a trained downscaling CNN.

3. 조항 1 또는 조항 2에 있어서, 제1 업스케일러는 범용 업스케일러 또는 훈련된 다운스케일링 CNN과 공동으로 훈련되지 않은 훈련된 업스케일러를 포함하는, 컴퓨터에 의해 구현되는 방법.3. The computer-implemented method of clause 1 or clause 2, wherein the first upscaler comprises a universal upscaler or a trained downscaler that is not jointly trained.

4. 조항 1 내지 조항 3 중 어느 하나에 있어서, 훈련된 다운스케일링 CNN은 제1 업스케일러와 함께 이용될 때 재구성 에러들을 감소시키도록 훈련된 것인, 컴퓨터에 의해 구현되는 방법.4. The computer-implemented method of any of clauses 1-3, wherein the trained downscaling CNN is trained to reduce reconstruction errors when used with a first upscaler.

5. 조항 1 내지 조항 4 중 어느 하나에 있어서, 훈련된 다운스케일링 CNN 및 제1 업스케일러는 동일한 비-정수 스케일 인자와 연관되는, 컴퓨터에 의해 구현되는 방법.5. The computer-implemented method of any of clauses 1-4, wherein the trained downscaling CNN and the first upscaler are associated with the same non-integer scale factor.

6. 조항 1 내지 조항 5 중 어느 하나에 있어서, 메타데이터는 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 훈련된 업스케일링 CNN이 이용되어야 함을 나타내고, 훈련된 업스케일링 CNN이 이용가능하다고 결정하는 단계 및 훈련된 업스케일링 CNN을 제1 업스케일러로서 지정하는 단계를 더 포함하는, 컴퓨터에 의해 구현되는 방법.6. The method of any of clauses 1 to 5, wherein the metadata indicates that a trained upscaling CNN should be used when upscaling the first portion of the first downscaled video, and the trained upscaling CNN is used. A computer-implemented method further comprising determining that possible and designating a trained upscaling CNN as a first upscaler.

7. 조항 1 내지 조항 6 중 어느 하나에 있어서, 메타데이터는 훈련된 다운스케일링 CNN, 훈련된 다운스케일링 CNN과 공동으로 훈련된, 훈련된 업스케일링 CNN, 훈련된 다운스케일링 CNN을 훈련하는데 이용된 훈련 업스케일러, 또는 훈련 업스케일러의 유형 중 적어도 하나를 지정하는, 컴퓨터에 의해 구현되는 방법.7. The method of any of clauses 1 to 6, wherein the metadata is a trained downscaling CNN, a trained upscaling CNN jointly trained with the trained downscaling CNN, and a training used to train the trained downscaling CNN. A method implemented by a computer that specifies at least one type of upscaler, or training upscaler.

8. 조항 1 내지 조항 7 중 어느 하나에 있어서, 제1 다운스케일링된 비디오의 제1 부분에 대해 제1 업스케일러를 실행하는 것은 제1 업스케일러로 하여금 제1 다운스케일링된 비디오의 제1 부분에 포함된 각각의 프레임을 업스케일링하게 하는 것을 포함하는, 컴퓨터에 의해 구현되는 방법.8. The method of any of clauses 1 to 7, wherein running the first upscaler on the first portion of the first downscaled video causes the first upscaler to A computer-implemented method comprising upscaling each included frame.

9. 조항 1 내지 조항 8 중 어느 하나에 있어서, 메타데이터와 연관되는 제1 인코딩된 비디오의 제1 부분에 대해 디코더를 실행하여 제1 다운스케일링된 비디오의 제1 부분을 생성하는 단계를 더 포함하는, 컴퓨터에 의해 구현되는 방법.9. The method of any one of clauses 1 to 8, further comprising running a decoder on the first portion of the first encoded video associated with the metadata to generate the first portion of the first downscaled video. A method implemented by a computer.

10. 조항 1 내지 조항 9 중 어느 하나에 있어서, 제1 인코딩된 비디오의 제1 부분에 대한 요청을 제1 서버 디바이스에 전송하는 단계; 및 요청에 응답하여, 제1 인코딩된 비디오의 제1 부분 및 메타데이터를 포함하는 비트스트림을 제1 서버 디바이스로부터 수신하는 단계를 더 포함하는, 컴퓨터에 의해 구현되는 방법.10. The method of any one of clauses 1 to 9, further comprising: sending a request for a first portion of the first encoded video to a first server device; and in response to the request, receiving from the first server device a bitstream including the first portion of the first encoded video and metadata.

11. 일부 실시예들에서, 하나 이상의 비일시적 컴퓨터 판독가능한 매체는 명령어들을 포함하며, 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금, 제1 해상도를 갖고 훈련된 다운스케일링 컨볼루션 신경망(CNN)을 이용하여 생성된 제1 다운스케일링된 비디오의 제1 부분과 연관된 메타데이터에 액세스하는 단계; 메타데이터에 기반하여, 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 이용되어야 하는 제1 업스케일러를 결정하는 단계; 및 제1 다운스케일링된 비디오의 제1 부분에 대해 제1 업스케일러를 실행하여, 재생을 위해 액세스가능하고 제1 해상도보다 높은 제2 해상도를 갖는 제1 재구성된 비디오의 제1 부분을 생성하는 단계를 수행함으로써 다운스케일링된 비디오들을 재구성하게 하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.11. In some embodiments, the one or more non-transitory computer-readable media include instructions that, when executed by one or more processors, cause the one or more processors to perform a downscaling convolutional neural network trained with the first resolution. accessing metadata associated with a first portion of the first downscaled video generated using (CNN); determining, based on the metadata, a first upscaler that should be used when upscaling the first portion of the first downscaled video; and executing the first upscaler on the first portion of the first downscaled video to produce a first portion of the first reconstructed video that is accessible for playback and has a second resolution that is higher than the first resolution. One or more non-transitory computer-readable media that reconstructs downscaled videos by performing.

12. 조항 11에 있어서, 제1 업스케일러는 훈련된 다운스케일링 CNN과 공동으로 훈련된, 훈련된 업스케일링 CNN을 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.12. The one or more non-transitory computer-readable media of clause 11, wherein the first upscaler comprises a trained upscaling CNN, jointly trained with a trained downscaling CNN.

13. 조항 11 또는 조항 12에 있어서, 제1 업스케일러는 범용 업스케일러 또는 훈련된 다운스케일링 CNN과 공동으로 훈련되지 않은 훈련된 업스케일러를 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.13. The one or more non-transitory computer-readable media of clause 11 or clause 12, wherein the first upscaler comprises a general-purpose upscaler or a trained downscaler that is not jointly trained with a trained downscaling CNN.

14. 조항 11 내지 조항 13 중 어느 하나에 있어서, 훈련된 다운스케일링 CNN은 제1 업스케일러와 함께 훈련된 다운스케일링 CNN을 이용하는 것에 기인하는 시각적 품질의 손실들을 감소시키도록 훈련된 것인, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.14. The one or more of clauses 11 to 13, wherein the trained downscaling CNN is trained to reduce losses in visual quality resulting from using the trained downscaling CNN with the first upscaler. Non-transitory computer-readable media.

15. 조항 11 내지 조항 14 중 어느 하나에 있어서, 제1 다운스케일링된 비디오의 제1 부분에 대해 제1 업스케일러를 실행하는 것은 훈련된 다운스케일링 CNN에 의해 또한 구현되는 스케일 인자를 구현하도록 제1 업스케일러를 구성하는 것을 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.15. The method of any one of clauses 11 to 14, wherein running the first upscaler on the first portion of the first downscaled video causes the first upscaler to implement a scale factor that is also implemented by the trained downscaling CNN. One or more non-transitory computer-readable media, including comprising an upscaler.

16. 조항 11 내지 조항 15 중 어느 하나에 있어서, 메타데이터는 훈련된 업스케일링 CNN이 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 이용하기 위한 가장 적합한 업스케일러이고, 훈련 업스케일러가 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 이용하기 위한 다음으로 가장 적합한 업스케일러임을 나타내고, 훈련된 업스케일링 CNN이 이용가능하지 않고, 훈련 업스케일러가 이용가능하다고 결정하는 단계; 및 훈련 업스케일러를 제1 업스케일러로서 지정하는 단계를 더 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.16. The method of any of clauses 11 to 15, wherein the metadata is the most suitable upscaler for the trained upscaling CNN to use when upscaling the first portion of the first downscaled video, and the training upscaler is indicating the next most suitable upscaler to use when upscaling the first portion of the first downscaled video, determining that a trained upscaling CNN is not available and a training upscaler is available; and designating the training upscaler as the first upscaler.

17. 조항 11 내지 조항 16 중 어느 하나에 있어서, 메타데이터는 훈련된 다운스케일링 CNN, 훈련된 다운스케일링 CNN과 공동으로 훈련된, 훈련된 업스케일링 CNN, 훈련된 다운스케일링 CNN을 훈련하는데 이용된 훈련 업스케일러, 또는 훈련 업스케일러의 유형 중 적어도 하나를 지정하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.17. The method of any of clauses 11 to 16, wherein the metadata is a trained downscaling CNN, a trained upscaling CNN jointly trained with a trained downscaling CNN, or a trained downscaling CNN used to train the trained downscaling CNN. One or more non-transitory computer-readable media specifying at least one type of upscaler, or training upscaler.

18. 조항 11 내지 조항 17 중 어느 하나에 있어서, 메타데이터와 연관되는 제1 인코딩된 비디오의 제1 부분에 대해 디코더를 실행하여 제1 다운스케일링된 비디오의 제1 부분을 생성하는 단계를 더 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.18. The method of any of clauses 11-17, further comprising executing a decoder on the first portion of the first encoded video associated with the metadata to generate the first portion of the first downscaled video. One or more non-transitory computer-readable media that:

19. 조항 11 내지 조항 18 중 어느 하나에 있어서, 제1 인코딩된 비디오는, 소스 비디오에 대해 훈련된 다운스케일링 CNN을 실행하여 다운스케일링된 비디오를 생성하는 것; 및 다운스케일링된 비디오에 대해 인코더를 실행하는 것에 의해 생성되는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.19. The method of any one of clauses 11 to 18, wherein the first encoded video comprises: running a downscaling CNN trained on the source video to generate a downscaled video; and one or more non-transitory computer-readable media generated by executing an encoder on the downscaled video.

20. 일부 실시예들에서, 시스템은 명령어들을 저장하는 하나 이상의 메모리 및 하나 이상의 메모리에 결합된 하나 이상의 프로세서를 포함하며, 하나 이상의 프로세서는, 명령어들을 실행할 때, 제1 해상도를 갖고 훈련된 다운스케일링 컨볼루션 신경망을 이용하여 생성된 제1 다운스케일링된 비디오의 제1 부분과 연관된 메타데이터에 액세스하는 단계; 메타데이터에 기반하여, 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 이용되어야 하는 제1 업스케일러를 결정하는 단계; 및 제1 다운스케일링된 비디오의 제1 부분에 대해 제1 업스케일러를 실행하여, 재생을 위해 액세스가능하고 제1 해상도보다 높은 제2 해상도를 갖는 제1 재구성된 비디오의 제1 부분을 생성하는 단계를 수행하는, 시스템.20. In some embodiments, the system includes one or more memory storing instructions and one or more processors coupled to the one or more memories, wherein the one or more processors, when executing the instructions, have the first resolution and perform a trained downscaling operation. Accessing metadata associated with a first portion of the first downscaled video generated using a convolutional neural network; determining, based on the metadata, a first upscaler that should be used when upscaling the first portion of the first downscaled video; and executing the first upscaler on the first portion of the first downscaled video to produce a first portion of the first reconstructed video that is accessible for playback and has a second resolution that is higher than the first resolution. A system that performs.

임의의 청구항에 기재된 임의의 청구항 요소 및/또는 본 출원에서 설명된 임의의 요소들의 임의의 조합 및 모든 조합들은 임의의 방식으로 본 발명 및 보호의 고려 범위 내에 속한다.Any and all combinations of any claim element recited in any claim and/or any element described in the present application in any way fall within the scope of the present invention and protection.

다양한 실시예들에 대한 설명들은 예시의 목적들로 제시되었지만, 포괄적인 것으로 의도되거나 개시된 실시예들로 제한되지는 않는다. 설명된 실시예들의 범위 및 사상을 벗어나지 않고 본 기술분야의 통상의 기술자에게 많은 수정들 및 변형들이 명백할 것이다.The descriptions of various embodiments have been presented for purposes of illustration, but are not intended to be comprehensive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments.

본 실시예들의 양태들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 개시내용의 양태들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함함) 또는 본 명세서에서 모두 일반적으로 "모듈" 또는 "시스템"으로 지칭될 수 있는 소프트웨어 및 하드웨어 양태들을 조합한 실시예의 형태를 취할 수 있다. 또한, 본 개시내용의 양태들은 컴퓨터 판독가능한 프로그램 코드가 구현된 하나 이상의 컴퓨터 판독가능한 매체(들)에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.Aspects of the present embodiments may be implemented as a system, method, or computer program product. Accordingly, aspects of the disclosure may be implemented in an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.), or software, which may all be referred to herein generically as a “module” or “system.” and hardware aspects. Additionally, aspects of the disclosure may take the form of a computer program product embodied in one or more computer-readable medium(s) embodying computer-readable program code.

하나 이상의 컴퓨터 판독가능한 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독가능한 매체는 컴퓨터 판독가능한 신호 매체 또는 컴퓨터 판독가능한 저장 매체일 수 있다. 컴퓨터 판독가능한 저장 매체는 예를 들어 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 장치 또는 디바이스, 또는 이들의 임의의 적절한 조합일 수 있지만, 이에 제한되는 것은 아니다. 컴퓨터 판독가능한 저장 매체의 보다 구체적인 예들(비-포괄적인 리스트)은 하나 이상의 와이어를 갖는 전기적 접속, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거 및 프로그래밍가능한 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 컴팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스 또는 이들의 임의의 적절한 조합을 포함할 것이다. 본 문헌과 관련하여, 컴퓨터 판독가능한 저장 매체는 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 이용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형적인 매체일 수 있다.Any combination of one or more computer-readable medium(s) may be used. Computer-readable media may be computer-readable signal media or computer-readable storage media. A computer-readable storage medium may be, for example, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, apparatus or device, or any suitable combination thereof. More specific examples of computer readable storage media (a non-exhaustive list) include electrical connections having one or more wires, portable computer diskettes, hard disks, random access memory (RAM), read only memory (ROM), erasable and programmable storage media, etc. It may include read-only memory (EPROM or flash memory), optical fiber, portable compact disk read-only memory (CD-ROM), optical storage devices, magnetic storage devices, or any suitable combination thereof. In the context of this document, a computer-readable storage medium can be any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device.

본 개시내용의 양태들은 본 개시내용의 실시예들에 따른 방법들, 장치들(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록도들을 참조하여 위에서 설명되었다. 흐름도들 및/또는 블록도들의 각각의 블록, 및 흐름도들 및/또는 블록도들 내의 블록들의 조합들은 컴퓨터 프로그램 명령어들에 의해 구현될 수 있다는 것을 이해할 것이다. 이들 컴퓨터 프로그램 명령어들은 범용 컴퓨터, 특수 목적 컴퓨터 또는 다른 프로그래밍가능한 데이터 처리 장치의 프로세서에 제공되어 기계를 생성할 수 있다. 명령어들은, 컴퓨터 또는 다른 프로그래밍가능한 데이터 처리 장치의 프로세서를 통해 실행될 때, 흐름도 및/또는 블록도의 블록 또는 블록들에서 지정된 기능들/동작들의 구현을 가능하게 한다. 이러한 프로세서들은 범용 프로세서들, 특수 목적 프로세서들, 주문형 프로세서들, 또는 필드 프로그래밍가능한 게이트 어레이들일 수 있지만, 이에 제한되지는 않는다.Aspects of the disclosure have been described above with reference to flow diagrams and/or block diagrams of methods, devices (systems) and computer program products according to embodiments of the disclosure. It will be understood that each block of the flow diagrams and/or block diagrams, and combinations of blocks within the flow diagrams and/or block diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing device to create a machine. The instructions, when executed via a processor of a computer or other programmable data processing device, enable implementation of the functions/operations specified in the block or blocks of the flow diagram and/or block diagram. These processors may be, but are not limited to, general purpose processors, special purpose processors, application specific processors, or field programmable gate arrays.

도면들 내의 흐름도들 및 블록도들은 본 개시내용의 다양한 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능 및 동작을 도시한다. 이와 관련하여, 흐름도들 또는 블록도들 내의 각각의 블록은 지정된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행가능한 명령어를 포함하는 모듈, 세그먼트 또는 코드 부분을 나타낼 수 있다. 또한, 일부 대안 구현들에서, 그 블록에서 언급된 기능들이 도면들에서 언급된 순서와 다르게 발생할 수 있음에 유의해야 한다. 예를 들어, 연속적으로 도시된 2개의 블록은 사실상 실질적으로 동시에 실행될 수 있거나, 또는 그 블록들은 관련된 기능에 따라 때때로 역순으로 실행될 수 있다. 또한, 블록도들 및/또는 흐름도의 각각의 블록, 및 블록도들 및/또는 흐름도 내의 블록들의 조합들은 지정된 기능들 또는 동작들을 수행하는 특수 목적 하드웨어 기반 시스템들, 또는 특수 목적 하드웨어 및 컴퓨터 명령어들의 조합들에 의해 구현될 수 있다는 점에 유의할 것이다.Flow diagrams and block diagrams within the drawings depict the architecture, functionality and operation of possible implementations of systems, methods and computer program products in accordance with various embodiments of the present disclosure. In this regard, each block within the flow diagrams or block diagrams may represent a module, segment, or portion of code containing one or more executable instructions for implementing specified logical function(s). Additionally, it should be noted that in some alternative implementations, the functions mentioned in that block may occur in a different order than the order mentioned in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may be executed sometimes in reverse order depending on the functions involved. Additionally, each block of the block diagrams and/or flowcharts, and combinations of blocks within the block diagrams and/or flowcharts, represent special-purpose hardware-based systems, or special-purpose hardware and computer instructions, that perform designated functions or operations. It will be noted that it can be implemented by combinations.

전술한 내용은 본 개시내용의 실시예들에 관한 것이지만, 본 개시내용의 다른 실시예들 및 추가 실시예들은 본 개시내용의 기본 범위를 벗어나지 않고 안출될 수 있으며, 그 범위는 다음의 청구항들에 의해 결정된다.Although the foregoing relates to embodiments of the disclosure, other and additional embodiments of the disclosure may be devised without departing from the basic scope of the disclosure, which scope is defined in the following claims. is determined by

Claims (20)

Translated fromKorean
다운스케일링된 비디오들을 재구성하기 위한 컴퓨터에 의해 구현되는 방법으로서,
제1 해상도를 갖고 훈련된 다운스케일링 컨볼루션 신경망(CNN)을 이용하여 생성된 제1 다운스케일링된 비디오의 제1 부분과 연관된 메타데이터에 액세스하는 단계;
상기 메타데이터에 기반하여, 상기 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 이용되어야 하는 제1 업스케일러를 결정하는 단계; 및
상기 제1 다운스케일링된 비디오의 제1 부분에 대해 상기 제1 업스케일러를 실행하여, 재생을 위해 액세스가능하고 상기 제1 해상도보다 높은 제2 해상도를 갖는 제1 재구성된 비디오의 제1 부분을 생성하는 단계
를 포함하는, 컴퓨터에 의해 구현되는 방법.
1. A computer-implemented method for reconstructing downscaled videos, comprising:
Accessing metadata associated with a first portion of a first downscaled video generated using a downscaling convolutional neural network (CNN) trained with a first resolution;
determining, based on the metadata, a first upscaler that should be used when upscaling a first portion of the first downscaled video; and
Execute the first upscaler on the first portion of the first downscaled video to produce a first portion of the first reconstructed video that is accessible for playback and has a second resolution higher than the first resolution. steps to do
A method implemented by a computer, including.
제1항에 있어서,
상기 제1 업스케일러는 상기 훈련된 다운스케일링 CNN과 공동으로 훈련된, 훈련된 업스케일링 CNN을 포함하는, 컴퓨터에 의해 구현되는 방법.
According to paragraph 1,
The computer-implemented method of claim 1, wherein the first upscaler includes a trained upscaling CNN jointly trained with the trained downscaling CNN.
제1항에 있어서,
상기 제1 업스케일러는 범용 업스케일러 또는 상기 훈련된 다운스케일링 CNN과 공동으로 훈련되지 않은 훈련된 업스케일러를 포함하는, 컴퓨터에 의해 구현되는 방법.
According to paragraph 1,
The computer-implemented method of claim 1, wherein the first upscaler comprises a universal upscaler or a trained upscaler that is not jointly trained with the trained downscaling CNN.
제1항에 있어서,
상기 훈련된 다운스케일링 CNN은 상기 제1 업스케일러와 함께 이용될 때 재구성 에러들을 감소시키도록 훈련된 것인, 컴퓨터에 의해 구현되는 방법.
According to paragraph 1,
wherein the trained downscaling CNN is trained to reduce reconstruction errors when used with the first upscaler.
제1항에 있어서,
상기 훈련된 다운스케일링 CNN 및 상기 제1 업스케일러는 동일한 비-정수 스케일 인자와 연관되는, 컴퓨터에 의해 구현되는 방법.
According to paragraph 1,
wherein the trained downscaling CNN and the first upscaler are associated with the same non-integer scale factor.
제1항에 있어서,
상기 메타데이터는 상기 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 훈련된 업스케일링 CNN이 이용되어야 함을 나타내고,
상기 훈련된 업스케일링 CNN이 이용가능하다고 결정하는 단계; 및
상기 훈련된 업스케일링 CNN을 상기 제1 업스케일러로서 지정하는 단계
를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
According to paragraph 1,
the metadata indicates that a trained upscaling CNN should be used when upscaling the first portion of the first downscaled video,
determining that the trained upscaling CNN is available; and
Designating the trained upscaling CNN as the first upscaler
A method implemented by a computer, further comprising:
제1항에 있어서,
상기 메타데이터는 상기 훈련된 다운스케일링 CNN, 상기 훈련된 다운스케일링 CNN과 공동으로 훈련된, 훈련된 업스케일링 CNN, 상기 훈련된 다운스케일링 CNN을 훈련하는데 이용된 훈련 업스케일러, 또는 상기 훈련 업스케일러의 유형 중 적어도 하나를 지정하는, 컴퓨터에 의해 구현되는 방법.
According to paragraph 1,
The metadata includes the trained downscaling CNN, the trained upscaling CNN jointly trained with the trained downscaling CNN, the training upscaler used to train the trained downscaling CNN, or the training upscaler. A method, implemented by a computer, that specifies at least one of the types.
제1항에 있어서,
상기 제1 다운스케일링된 비디오의 제1 부분에 대해 상기 제1 업스케일러를 실행하는 것은 상기 제1 업스케일러로 하여금 상기 제1 다운스케일링된 비디오의 제1 부분에 포함된 각각의 프레임을 업스케일링하게 하는 것을 포함하는, 컴퓨터에 의해 구현되는 방법.
According to paragraph 1,
Executing the first upscaler on the first portion of the first downscaled video causes the first upscaler to upscale each frame included in the first portion of the first downscaled video. A method implemented by a computer, including:
제1항에 있어서,
상기 메타데이터와 연관되는 제1 인코딩된 비디오의 제1 부분에 대해 디코더를 실행하여 상기 제1 다운스케일링된 비디오의 제1 부분을 생성하는 단계를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
According to paragraph 1,
The computer-implemented method further comprising executing a decoder on the first portion of the first encoded video associated with the metadata to generate the first portion of the first downscaled video.
제9항에 있어서,
상기 제1 인코딩된 비디오의 제1 부분에 대한 요청을 제1 서버 디바이스에 전송하는 단계; 및
상기 요청에 응답하여, 상기 제1 인코딩된 비디오의 제1 부분 및 상기 메타데이터를 포함하는 비트스트림을 상기 제1 서버 디바이스로부터 수신하는 단계
를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
According to clause 9,
sending a request for a first portion of the first encoded video to a first server device; and
In response to the request, receiving a bitstream including a first portion of the first encoded video and the metadata from the first server device.
A method implemented by a computer, further comprising:
명령어들을 포함하는 하나 이상의 비일시적 컴퓨터 판독가능한 매체로서,
상기 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금,
제1 해상도를 갖고 훈련된 다운스케일링 컨볼루션 신경망(CNN)을 이용하여 생성된 제1 다운스케일링된 비디오의 제1 부분과 연관된 메타데이터에 액세스하는 단계;
상기 메타데이터에 기반하여, 상기 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 이용되어야 하는 제1 업스케일러를 결정하는 단계; 및
상기 제1 다운스케일링된 비디오의 제1 부분에 대해 상기 제1 업스케일러를 실행하여, 재생을 위해 액세스가능하고 상기 제1 해상도보다 높은 제2 해상도를 갖는 제1 재구성된 비디오의 제1 부분을 생성하는 단계
를 수행함으로써 다운스케일링된 비디오들을 재구성하게 하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
One or more non-transitory computer-readable media containing instructions, comprising:
When executed by one or more processors, the instructions cause the one or more processors to:
Accessing metadata associated with a first portion of a first downscaled video generated using a downscaling convolutional neural network (CNN) trained with a first resolution;
determining, based on the metadata, a first upscaler that should be used when upscaling a first portion of the first downscaled video; and
Execute the first upscaler on the first portion of the first downscaled video to produce a first portion of the first reconstructed video that is accessible for playback and has a second resolution higher than the first resolution. steps to do
One or more non-transitory computer-readable media that reconstructs downscaled videos by performing.
제11항에 있어서,
상기 제1 업스케일러는 상기 훈련된 다운스케일링 CNN과 공동으로 훈련된, 훈련된 업스케일링 CNN을 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
According to clause 11,
wherein the first upscaler includes a trained upscaling CNN jointly trained with the trained downscaling CNN.
제11항에 있어서,
상기 제1 업스케일러는 범용 업스케일러 또는 상기 훈련된 다운스케일링 CNN과 공동으로 훈련되지 않은 훈련된 업스케일러를 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
According to clause 11,
wherein the first upscaler comprises a general-purpose upscaler or a trained upscaler that is not jointly trained with the trained downscaling CNN.
제11항에 있어서,
상기 훈련된 다운스케일링 CNN은 상기 제1 업스케일러와 함께 상기 훈련된 다운스케일링 CNN을 이용하는 것에 기인하는 시각적 품질의 손실들을 감소시키도록 훈련된 것인, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
According to clause 11,
wherein the trained downscaling CNN is trained to reduce losses in visual quality resulting from using the trained downscaling CNN with the first upscaler.
제11항에 있어서,
상기 제1 다운스케일링된 비디오의 제1 부분에 대해 상기 제1 업스케일러를 실행하는 것은 상기 훈련된 다운스케일링 CNN에 의해 또한 구현되는 스케일 인자를 구현하도록 상기 제1 업스케일러를 구성하는 것을 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
According to clause 11,
Executing the first upscaler on the first portion of the first downscaled video includes configuring the first upscaler to implement a scale factor that is also implemented by the trained downscaling CNN. One or more non-transitory computer-readable media.
제11항에 있어서,
상기 메타데이터는 훈련된 업스케일링 CNN이 상기 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 이용하기 위한 가장 적합한 업스케일러이고, 훈련 업스케일러가 상기 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 이용하기 위한 다음으로 가장 적합한 업스케일러임을 나타내고,
상기 훈련된 업스케일링 CNN이 이용가능하지 않고, 상기 훈련 업스케일러가 이용가능하다고 결정하는 단계; 및
상기 훈련 업스케일러를 상기 제1 업스케일러로서 지정하는 단계
를 더 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
According to clause 11,
The metadata is the most suitable upscaler for a trained upscaling CNN to use when upscaling the first portion of the first downscaled video, and the training upscaler is the most suitable upscaler to use when upscaling the first portion of the first downscaled video. Indicates that it is the next most suitable upscaler to use when upscaling,
determining that the trained upscaling CNN is not available and the training upscaler is available; and
Designating the training upscaler as the first upscaler
One or more non-transitory computer-readable media further comprising.
제11항에 있어서,
상기 메타데이터는 상기 훈련된 다운스케일링 CNN, 상기 훈련된 다운스케일링 CNN과 공동으로 훈련된, 훈련된 업스케일링 CNN, 상기 훈련된 다운스케일링 CNN을 훈련하는데 이용된 훈련 업스케일러, 또는 상기 훈련 업스케일러의 유형 중 적어도 하나를 지정하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
According to clause 11,
The metadata includes the trained downscaling CNN, the trained upscaling CNN jointly trained with the trained downscaling CNN, the training upscaler used to train the trained downscaling CNN, or the training upscaler. One or more non-transitory computer-readable media specifying at least one of the following types.
제11항에 있어서,
상기 메타데이터와 연관되는 제1 인코딩된 비디오의 제1 부분에 대해 디코더를 실행하여 상기 제1 다운스케일링된 비디오의 제1 부분을 생성하는 단계를 더 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
According to clause 11,
Executing a decoder on a first portion of the first encoded video associated with the metadata to generate a first portion of the first downscaled video.
제18항에 있어서, 상기 제1 인코딩된 비디오는,
소스 비디오에 대해 상기 훈련된 다운스케일링 CNN을 실행하여 다운스케일링된 비디오를 생성하는 것; 및
상기 다운스케일링된 비디오에 대해 인코더를 실행하는 것
에 의해 생성되는, 하나 이상의 비일시적 컴퓨터 판독가능한 매체.
19. The method of claim 18, wherein the first encoded video is:
executing the trained downscaling CNN on a source video to generate a downscaled video; and
Running an encoder on the downscaled video
One or more non-transitory computer-readable media produced by.
시스템으로서,
명령어들을 저장하는 하나 이상의 메모리; 및
상기 하나 이상의 메모리에 결합된 하나 이상의 프로세서
를 포함하며, 상기 하나 이상의 프로세서는, 상기 명령어들을 실행할 때,
제1 해상도를 갖고 훈련된 다운스케일링 컨볼루션 신경망을 이용하여 생성된 제1 다운스케일링된 비디오의 제1 부분과 연관된 메타데이터에 액세스하는 단계;
상기 메타데이터에 기반하여, 상기 제1 다운스케일링된 비디오의 제1 부분을 업스케일링할 때 이용되어야 하는 제1 업스케일러를 결정하는 단계; 및
상기 제1 다운스케일링된 비디오의 제1 부분에 대해 상기 제1 업스케일러를 실행하여, 재생을 위해 액세스가능하고 상기 제1 해상도보다 높은 제2 해상도를 갖는 제1 재구성된 비디오의 제1 부분을 생성하는 단계
를 수행하는, 시스템.
As a system,
One or more memories storing instructions; and
One or more processors coupled to the one or more memories
It includes, when the one or more processors execute the instructions,
Accessing metadata associated with a first portion of a first downscaled video generated using a downscaling convolutional neural network trained with a first resolution;
determining, based on the metadata, a first upscaler that should be used when upscaling a first portion of the first downscaled video; and
Execute the first upscaler on the first portion of the first downscaled video to produce a first portion of the first reconstructed video that is accessible for playback and has a second resolution higher than the first resolution. steps to do
A system that performs.
KR1020247018847A2021-11-092022-11-08 Techniques for reconstructing downscaled video contentPendingKR20240108442A (en)

Applications Claiming Priority (5)

Application NumberPriority DateFiling DateTitle
US202163277545P2021-11-092021-11-09
US63/277,5452021-11-09
US17/981,292US20230143389A1 (en)2021-11-092022-11-04Techniques for reconstructing downscaled video content
US17/981,2922022-11-04
PCT/US2022/079500WO2023086795A1 (en)2021-11-092022-11-08Techniques for reconstructing downscaled video content

Publications (1)

Publication NumberPublication Date
KR20240108442Atrue KR20240108442A (en)2024-07-09

Family

ID=84537446

Family Applications (1)

Application NumberTitlePriority DateFiling Date
KR1020247018847APendingKR20240108442A (en)2021-11-092022-11-08 Techniques for reconstructing downscaled video content

Country Status (4)

CountryLink
EP (1)EP4430830A1 (en)
KR (1)KR20240108442A (en)
MX (1)MX2024005565A (en)
WO (1)WO2023086795A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
CN117313818A (en)*2023-09-282023-12-29四川大学Method for training lightweight convolutional neural network and terminal equipment

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
KR102022648B1 (en)*2018-08-102019-09-19삼성전자주식회사Electronic apparatus, method for controlling thereof and method for controlling server
KR102525578B1 (en)*2018-10-192023-04-26삼성전자주식회사Method and Apparatus for video encoding and Method and Apparatus for video decoding

Also Published As

Publication numberPublication date
EP4430830A1 (en)2024-09-18
WO2023086795A1 (en)2023-05-19
MX2024005565A (en)2024-05-22

Similar Documents

PublicationPublication DateTitle
Lee et al.Deep neural network–based enhancement for image and video streaming systems: A survey and future directions
US11948271B2 (en)Machine learning techniques for video downsampling
WO2019001108A1 (en) Video processing method and device
US20230143389A1 (en)Techniques for reconstructing downscaled video content
JP7419478B2 (en) Codec rate distortion compensation down sampler
US11595716B2 (en)Segment quality-guided adaptive stream creation
US12211178B2 (en)Transferring faces between digital images by combining latent codes utilizing a blending network
KR102856202B1 (en) Techniques for generating title-specific encoding ladders
US20230316606A1 (en)Generating and modifying digital images using a joint feature style latent space of a generative neural network
KR20200044662A (en)Apparatus and method for performing artificial intelligence encoding and artificial intelligence decoding of image
Nguyen et al.Super-resolution based bitrate adaptation for HTTP adaptive streaming for mobile devices
KR20240108442A (en) Techniques for reconstructing downscaled video content
US20240406418A1 (en)Scalable Per-Title Encoding
US11341316B2 (en)Techniques for compressing images to achieve a target quality level
CN118216154A (en)Techniques for reconstructing degraded scaled video content
CN115209155A (en)Trace processing for low bit rate video compression
KR102634627B1 (en)Method and apparatus for live streaming
US20240404121A1 (en)Systems and methods for mesh geometry prediction based on a centroid-normal representation
US20230377339A1 (en)Processing framework for temporal-consistent face manipulation in videos
US20240144425A1 (en)Image compression augmented with a learning-based super resolution model
KR102391615B1 (en)Image processing method, video playback method and apparatuses thereof
CN119011861A (en)Picture decoding method and related product

Legal Events

DateCodeTitleDescription
A201Request for examination
PA0105International application

Patent event date:20240605

Patent event code:PA01051R01D

Comment text:International Patent Application

PA0201Request for examination

Patent event code:PA02012R01D

Patent event date:20240605

Comment text:Request for Examination of Application

PG1501Laying open of application

[8]ページ先頭

©2009-2025 Movatter.jp