KR20230089753A - Method and apparatus for live streaming - Google Patents

Method and apparatus for live streaming Download PDF

Info

Publication number
KR20230089753A
KR20230089753A KR1020210178403A KR20210178403A KR20230089753A KR 20230089753 A KR20230089753 A KR 20230089753A KR 1020210178403 A KR1020210178403 A KR 1020210178403A KR 20210178403 A KR20210178403 A KR 20210178403A KR 20230089753 A KR20230089753 A KR 20230089753A
Authority
KR
South Korea
Prior art keywords
resolution
neural network
segment
resolutions
parameter
Prior art date
Application number
KR1020210178403A
Other languages
Korean (ko)
Other versions
KR102634627B1 (en
Inventor
김영휘
차승훈
김범기
한성규
정승화
Original Assignee
주식회사 카이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 카이 filed Critical 주식회사 카이
Priority to KR1020210178403A priority Critical patent/KR102634627B1/en
Priority to PCT/KR2022/020376 priority patent/WO2023113473A1/en
Publication of KR20230089753A publication Critical patent/KR20230089753A/en
Application granted granted Critical
Publication of KR102634627B1 publication Critical patent/KR102634627B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26208Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints
    • H04N21/26233Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints involving content or additional data duration or size, e.g. length of a movie, size of an executable file
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

라이브 스트리밍 방법 및 장치가 개시된다. 일 실시 예에 따른 서버의 동작 방법은 라이브 스트리밍을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하는 단계, 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 해당 해상도의 세그먼트에 기초하여 갱신하는 단계, 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하여 저장하는 단계 및 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는 단계를 포함할 수 있다.A live streaming method and apparatus are disclosed. A method of operating a server according to an embodiment includes dividing a video stream for live streaming into segments having a predetermined length corresponding to each of a plurality of resolutions, and corresponding to each of the plurality of resolutions, at a resolution higher than the corresponding resolution. Updating the pre-learned parameters of the neural network based on the segment based on the segment of the corresponding resolution, compressing and storing data about the parameters of the neural network corresponding to each of a plurality of resolutions, and requesting live streaming of the video stream. The method may include transmitting data and segments related to parameters of the compressed neural network corresponding to at least one of a plurality of resolutions to the client.

Figure P1020210178403
Figure P1020210178403

Description

라이브 스트리밍 방법 및 장치{METHOD AND APPARATUS FOR LIVE STREAMING}Live streaming method and apparatus {METHOD AND APPARATUS FOR LIVE STREAMING}

아래 실시예들은 라이브 스트리밍 방법 및 장치에 관한 것으로, 구체적으로는 라이브 스트리밍 서비스의 서버 및 클라이언트에 관한 것이다.The following embodiments relate to a live streaming method and apparatus, and specifically to a server and a client of a live streaming service.

최근 영상 콘텐츠에 대한 수요가 증가하면서, 동영상 스트리밍 환경에서 QoE(quality of user experience)를 향상시키기 위한 딥러닝 기반의 동영상 복원 방법이 개발되고 있다. 특히, CNN(Convolutional Neural Network) 기반의 저 해 상 도 (Low Resolution, LR) 영상을 고해상도(High Resolution, HR) 영상으로 변환할 수 있는 초해상화(Super-Resolution; SR) 접근 방식은 시각적 품질의 개선 가능성을 보여주었고, 그 결과 SR을 활용한 다양한 신경망(neural network) 기반 스트리밍 파이프라인이 제안되고 있다. 예를 들어, Dejavu는 화상 회의 영상의 경우 프레임 간 시각적 유사도가 상대적으로 높다는 사실을 기반으로, 화상 회의 카테고리의 이미지를 훈련시켜 복원된 영상의 품질을 향상시키는 스트리밍 시스템이다. NAS는 입력된 영상의 SR 버전을 복구하기 위해 각 영상의 에피소드에 대해 한 쌍의 저해상도 및 고해상도 영상 프레임을 훈련하는 CNN 모델을 기반으로 하는 비디오 스트리밍 시스템이다.Recently, as the demand for video content increases, a deep learning-based video restoration method is being developed to improve quality of user experience (QoE) in a video streaming environment. In particular, the Super-Resolution (SR) approach that can convert Low Resolution (LR) images to High Resolution (HR) images based on CNN (Convolutional Neural Network) has improved visual quality. showed the possibility of improvement, and as a result, various neural network-based streaming pipelines using SR have been proposed. For example, Dejavu is a streaming system that enhances the quality of restored video by training images in the video conferencing category based on the fact that visual similarity between frames is relatively high in the case of video conferencing video. NAS is a video streaming system based on a CNN model that trains a pair of low-resolution and high-resolution video frames for each video episode to recover the SR version of the input video.

아래 실시 예들을 통해 클라이언트에 라이브 스트리밍을 위한 신경망의 파라미터 전송 시 비효율적으로 많은 네트워크 대역폭을 사용하지 않고 실시간으로 저해상도의 영상 및 이를 고해상도의 영상으로 초해상화하기 위한 신경망의 파라미터를 전송하는 기술을 제공할 수 있다.The following embodiments provide a technique for transmitting low-resolution images and neural network parameters for super-resolution high-resolution images in real time without inefficiently using a large amount of network bandwidth when transmitting neural network parameters for live streaming to clients. can do.

다만, 기술적 과제는 상술한 기술적 과제들로 한정되는 것은 아니며, 또 다른 기술적 과제들이 존재할 수 있다.However, the technical challenges are not limited to the above-described technical challenges, and other technical challenges may exist.

일 실시 예에 따른 서버의 동작 방법은 라이브 스트리밍(live streaming)을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하는 단계; 상기 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계; 상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하여 저장하는 단계; 및 상기 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 상기 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는 단계를 포함한다.A method of operating a server according to an embodiment includes dividing a video stream for live streaming into segments having a predetermined length corresponding to each of a plurality of resolutions; Corresponding to each of the plurality of resolutions, updating a parameter of a neural network pre-learned based on a segment having a higher resolution than the corresponding resolution based on the segment having the corresponding resolution; compressing and storing data about parameters of a neural network corresponding to each of the plurality of resolutions; and transmitting data and segments related to parameters of a compressed neural network corresponding to at least one of the plurality of resolutions to a client requesting live streaming of the video stream.

상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계는 상기 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 사전 학습된 신경망의 파라미터를 갱신함으로써, 상기 제1 해상도에 대응하는 신경망을 획득하는 단계; 및 상기 복수의 해상도들 중 제2 해상도의 세그먼트에 기초하여, 상기 제1 해상도에 대응하는 신경망의 파라미터를 갱신함으로써, 상기 제2 해상도에 대응하는 신경망을 획득하는 단계를 포함할 수 있으며, 상기 제1 해상도는 상기 제2 해상도보다 높은 해상도를 포함할 수 있다.The updating based on the segment of the corresponding resolution may include: acquiring a neural network corresponding to the first resolution by updating a parameter of a pretrained neural network based on a segment of a first resolution among the plurality of resolutions; and obtaining a neural network corresponding to the second resolution by updating a parameter of the neural network corresponding to the first resolution based on a segment of the second resolution among the plurality of resolutions. One resolution may include a resolution higher than the second resolution.

상기 서버의 동작 방법은 상기 복수의 해상도들 각각에 대응하는 세그먼트의 보간 및 역 픽셀 셔플(inverse pixel shuffle) 중 적어도 하나에 기초하여, 상기 복수의 해상도들 각각에 대응하는 세그먼트를 다운 샘플링(down sampling)하는 단계를 더 포함할 수 있다.The operating method of the server is based on at least one of interpolation and inverse pixel shuffle of segments corresponding to each of the plurality of resolutions, down sampling a segment corresponding to each of the plurality of resolutions ) may further include a step of doing.

상기 압축하여 저장하는 단계는 상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값을 양자화하는 단계; 및 상기 복수의 해상도들 각각에 대응하는 상기 양자화된 값의 인코딩 데이터를 저장하는 단계를 포함할 수 있다.The compressing and storing may include quantizing a difference value between a parameter of a neural network corresponding to each of the plurality of resolutions and a parameter of a pretrained neural network; and storing encoding data of the quantized value corresponding to each of the plurality of resolutions.

상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계는 상기 해당 해상도의 세그먼트에 포함된 프레임들에 기초하여 학습 이터레이션(iteration)을 반복적으로 수행함으로써, 상기 해당 해상도보다 높은 해상도에 대응하는 제1 신경망의 파라미터를 갱신하는 단계; 및 상기 학습 이터레이션의 반복의 종료에 기초하여, 상기 갱신된 제1 신경망의 파라미터를 포함하는 상기 해당 해상도에 대응하는 제2 신경망을 획득하는 단계를 포함할 수 있고, 상기 학습 이터레이션은 상기 해당 해상도에 대응하는 세그먼트의 프레임을 상기 제1 신경망에 인가하여 획득된 출력 프레임과 정답 데이터의 차이에 관한 손실 함수에 기초하여 획득된 그래디언트(gradient)를 상기 제1 신경망에 역전파(back-propagation)하는 단계를 포함할 수 있다.The updating based on the segment of the corresponding resolution is performed by repeatedly performing learning iterations based on the frames included in the segment of the corresponding resolution, thereby generating the first neural network corresponding to a resolution higher than the corresponding resolution. updating parameters; and acquiring a second neural network corresponding to the corresponding resolution including the updated parameters of the first neural network, based on the end of repetitions of the learning iteration, wherein the learning iteration performs the corresponding training iteration. Back-propagation of a gradient obtained based on a loss function related to a difference between an output frame obtained by applying a frame of a segment corresponding to a resolution to the first neural network and correct answer data to the first neural network steps may be included.

상기 제1 신경망의 파라미터를 갱신하는 단계는 상기 해당 해상도의 세그먼트에 포함된 프레임들을 로드하는 단계; 및 상기 로드된 프레임들에 기초하여, 상기 학습 이터레이션을 반복하는 단계를 포함할 수 있다.Updating the parameters of the first neural network may include loading frames included in the segment of the corresponding resolution; and repeating the learning iteration based on the loaded frames.

상기 학습 이터레이션의 반복은 상기 해당 해상도의 세그먼트의 지속 시간(duration) 동안 수행될 수 있다.The repetition of the learning iteration may be performed during the duration of the segment of the corresponding resolution.

상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계는 상기 신경망의 잔차 블록(residual block)에 포함된 가중치가 아닌 상기 신경망의 파라미터의 값을 고정하는 단계; 및 상기 신경망의 상기 잔차 블록에 포함된 가중치를 갱신하는 단계를 포함할 수 있다.The updating based on the segment of the corresponding resolution may include fixing a value of a parameter of the neural network other than a weight included in a residual block of the neural network; and updating a weight included in the residual block of the neural network.

일 실시 예에 따른 클라이언트의 동작 방법은 라이브 스트리밍을 위한 서버로부터, 선택된 제1 해상도에 대응하는 비디오 스트림의 플레이리스트를 수신하는 단계; 상기 플레이리스트에 기초하여, 상기 서버로부터 상기 비디오 스트림에 대응하는 상기 제1 해상도의 세그먼트 및 상기 제1 해상도에 대응하는 신경망에 관한 데이터를 수신하는 단계; 상기 제1 해상도에 대응하는 신경망에 관한 데이터 및 미리 로드된 사전 학습된 신경망의 파라미터에 기초하여, 상기 제1 해상도에 대응하는 신경망을 복원하는 단계; 및 상기 복원된 제1 해상도에 대응하는 신경망에 기초하여, 상기 제1 해상도의 세그먼트를 제2 해상도의 세그먼트로 변환하는 단계를 포함한다.A method of operating a client according to an embodiment includes receiving a playlist of a video stream corresponding to a selected first resolution from a server for live streaming; receiving, from the server, data about a segment of the first resolution corresponding to the video stream and a neural network corresponding to the first resolution, based on the playlist; Restoring a neural network corresponding to the first resolution based on data related to the neural network corresponding to the first resolution and parameters of a pre-trained neural network loaded in advance; and converting segments of the first resolution into segments of a second resolution based on a neural network corresponding to the reconstructed first resolution.

상기 제1 해상도에 대응하는 신경망을 복원하는 단계는 상기 서버로부터 획득된 상기 제1 해상도에 대응하는 신경망의 파라미터에 관한 데이터를 디코딩함으로써, 상기 제1 해상도에 대응하는 신경망의 잔차 값을 획득하는 단계; 및 상기 획득된 잔차 값을 상기 사전 학습된 신경망의 파라미터에 더함으로써, 상기 제1 해상도에 대응하는 신경망의 파라미터를 복원하는 단계를 포함할 수 있다.The restoring of the neural network corresponding to the first resolution may include obtaining a residual value of the neural network corresponding to the first resolution by decoding data related to parameters of the neural network corresponding to the first resolution obtained from the server. ; and restoring a parameter of the neural network corresponding to the first resolution by adding the obtained residual value to the parameter of the pretrained neural network.

상기 제1 해상도는 사용자로부터 수신된 선택 입력 및 상기 비디오 스트림이 수신되는 네트워크의 통신 환경 중 적어도 하나에 기초하여 결정된 상기 제2 해상도보다 낮은 해상도를 포함할 수 있다.The first resolution may include a resolution lower than the second resolution determined based on at least one of a selection input received from a user and a communication environment of a network through which the video stream is received.

상기 제1 해상도에 대응하는 신경망의 파라미터는 상기 서버에서, 미리 정해진 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 상기 복수의 해상도들 중 상기 제1 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망 또는 상기 사전 학습된 신경망의 파라미터를 갱신함으로써 획득될 수 있다.The parameter of the neural network corresponding to the first resolution is set based on a segment of a first resolution among a plurality of predetermined resolutions in the server and based on a segment of a resolution higher than the first resolution among the plurality of resolutions. It can be obtained by updating parameters of the trained neural network or the pretrained neural network.

상기 클라이언트의 동작 방법은 상기 변환된 제2 해상도의 세그먼트의 프레임들을 재생하는 단계를 더 포함할 수 있다.The operating method of the client may further include reproducing frames of the converted second resolution segment.

일 측에 따른 서버는 라이브 스트리밍(live streaming)을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하고, 상기 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 상기 해당 해상도의 세그먼트에 기초하여 갱신하고, 상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하며, 상기 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 상기 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는, 적어도 하나의 프로세서를 포함한다.The server according to one side divides the video stream for live streaming into segments of a predetermined length corresponding to each of a plurality of resolutions, and corresponding to each of the plurality of resolutions, a resolution higher than the corresponding resolution. A client that updates a previously learned neural network parameter based on a segment based on a segment of the corresponding resolution, compresses data on the neural network parameter corresponding to each of the plurality of resolutions, and requests live streaming of the video stream. , at least one processor for transmitting data and segments related to a parameter of a compressed neural network corresponding to at least one of the plurality of resolutions.

상기 프로세서는, 상기 해당 해상도의 세그먼트에 기초하여 갱신함에 있어서, 상기 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 사전 학습된 신경망의 파라미터를 갱신함으로써, 상기 제1 해상도에 대응하는 신경망을 획득하고, 상기 복수의 해상도들 중 제2 해상도의 세그먼트에 기초하여, 상기 제1 해상도에 대응하는 신경망의 파라미터를 갱신함으로써, 상기 제2 해상도에 대응하는 신경망을 획득할 수 있으며, 상기 제1 해상도는 상기 제2 해상도보다 높은 해상도를 포함할 수 있다.In the update based on the segment of the corresponding resolution, the processor updates the parameters of the pretrained neural network based on the segment of the first resolution among the plurality of resolutions, thereby forming a neural network corresponding to the first resolution. obtaining a neural network corresponding to the second resolution by updating a parameter of the neural network corresponding to the first resolution based on a segment of the second resolution among the plurality of resolutions; may include a resolution higher than the second resolution.

상기 프로세서는, 상기 복수의 해상도들 각각에 대응하는 세그먼트의 보간 및 역 픽셀 셔플(inverse pixel shuffle) 중 적어도 하나에 기초하여, 상기 복수의 해상도들 각각에 대응하는 세그먼트를 다운 샘플링(down sampling)할 수 있다.The processor may down-sample a segment corresponding to each of the plurality of resolutions based on at least one of interpolation and inverse pixel shuffle of the segment corresponding to each of the plurality of resolutions. can

상기 프로세서는, 상기 압축하여 저장함에 있어서, 상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값을 양자화하고, 상기 복수의 해상도들 각각에 대응하는 상기 양자화된 값의 인코딩 데이터를 저장할 수 있다.In the compression and storage, the processor quantizes a difference between a parameter of a neural network corresponding to each of the plurality of resolutions and a parameter of a pretrained neural network, and the quantized value corresponding to each of the plurality of resolutions. Encoding data of can be stored.

상기 프로세서는, 상기 해당 해상도의 세그먼트에 기초하여 갱신함에 있어서, 상기 해당 해상도의 세그먼트에 포함된 프레임들에 기초하여 학습 이터레이션(iteration)을 반복적으로 수행함으로써, 상기 해당 해상도보다 높은 해상도에 대응하는 제1 신경망의 파라미터를 갱신하고, 상기 학습 이터레이션의 반복의 종료에 기초하여, 상기 갱신된 제1 신경망의 파라미터를 포함하는 상기 해당 해상도에 대응하는 제2 신경망을 획득할 수 있으며, 상기 학습 이터레이션은 상기 해당 해상도에 대응하는 세그먼트의 프레임을 상기 제1 신경망에 인가하여 획득된 출력 프레임과 정답 데이터의 차이에 관한 손실 함수에 기초하여 획득된 그래디언트(gradient)를 상기 제1 신경망에 역전파(back-propagation)하는 단계를 포함할 수 있다.In updating based on the segment of the corresponding resolution, the processor repeatedly performs learning iterations based on frames included in the segment of the corresponding resolution, thereby corresponding to a resolution higher than the corresponding resolution. update the parameters of the first neural network, and obtain a second neural network corresponding to the corresponding resolution including the updated parameters of the first neural network based on the end of repetition of the learning iteration; The ration backpropagates a gradient obtained based on a loss function for a difference between an output frame obtained by applying a frame of a segment corresponding to the corresponding resolution to the first neural network and the correct answer data to the first neural network ( back-propagation).

일 측에 따른 클라이언트의 단말은 라이브 스트리밍을 위한 서버로부터, 선택된 제1 해상도에 대응하는 비디오 스트림의 플레이리스트를 수신하고, 상기 플레이리스트에 기초하여, 상기 서버로부터 상기 비디오 스트림에 대응하는 상기 제1 해상도의 세그먼트 및 상기 제1 해상도에 대응하는 신경망에 관한 데이터를 수신하고, 상기 제1 해상도에 대응하는 신경망에 관한 데이터 및 미리 로드된 사전 학습된 신경망의 파라미터에 기초하여, 상기 제1 해상도에 대응하는 신경망을 복원하며, 상기 복원된 제1 해상도에 대응하는 신경망에 기초하여, 상기 제1 해상도의 세그먼트를 제2 해상도의 세그먼트로 변환하는, 적어도 하나의 프로세서를 포함한다.A terminal of a client according to one side receives a playlist of a video stream corresponding to a selected first resolution from a server for live streaming, and based on the playlist, the first video stream corresponding to the video stream from the server. Receive data about a segment of the resolution and a neural network corresponding to the first resolution, and respond to the first resolution based on the data about the neural network corresponding to the first resolution and the pre-loaded parameters of the neural network. and at least one processor that restores a neural network corresponding to the restored first resolution, and converts segments of the first resolution into segments of a second resolution based on the neural network corresponding to the restored first resolution.

아래 실시 예들을 통해 라이브 스트리밍 서비스를 제공하는 서버가 실시간으로 갱신 및 압축되는 저해상도 비디오 세그먼트와 신경망의 파라미터를 전달하는 딥 러닝 기반 라이브 스트리밍 파이프라인을 제공할 수 있다.Through the following embodiments, a server providing a live streaming service may provide a deep learning-based live streaming pipeline that transmits low-resolution video segments that are updated and compressed in real time and parameters of a neural network.

아래 실시 예들을 통해 높은 초해상화의 정확도와 낮은 계산 복잡성을 갖는 딥 러닝 기반 라이브 스트리밍 파이프라인을 제공할 수 있다.Through the following embodiments, it is possible to provide a deep learning-based live streaming pipeline with high super-resolution accuracy and low computational complexity.

아래 실시 예들을 통해 실시간 성능을 달성하기 위해 적은 수의 이터레이션을 이용하는 동안 CNN의 고유한 과적합 속성을 촉진하고, ABR 기반 라이브 스트리밍을 위한 CNN에 다중 스케일의 커리큘럼 기반 학습 방식을 적용하여 학습의 정확도를 빠르게 높일 수 있다.The following examples promote the inherent overfitting property of CNNs while using a small number of iterations to achieve real-time performance, and apply a multi-scale, curriculum-based learning approach to CNNs for ABR-based live streaming to improve learning efficiency. Accuracy can be increased quickly.

아래 실시 예들을 통해 사전 학습된 파라미터가 클라이언트 측 장치에 이미 저장되어 있는 경우 갱신된 파라미터의 잔차 값만 전송함으로써, 영상 비트레이트를 크게 희생시키지 않는 범위 내에서 파라미터의 양자화 범위를 크게 줄여 제한된 전송 용량 내에서 QoE를 향상시킬 수 있다.Through the following embodiments, if the pre-learned parameter is already stored in the client-side device, only the residual value of the updated parameter is transmitted, thereby greatly reducing the quantization range of the parameter within the range of not sacrificing the image bit rate significantly, within the limited transmission capacity. can improve QoE.

도 1은 일 실시 예에 따른 라이브 스트리밍(live streaming) 시스템의 개요를 도시한 도면이다.
도2는 일 실시 예에 따른 라이브 스트리밍 시스템의 파이프라인을 도시한 도면이다.
도 3a 내지 도 3d는 일 실시 예에 따른 신경망의 구조를 예시한 도면들이다.
도 4는 일 실시 예에 따른 신경망의 구조로 인한 학습의 정확도 개선을 설명하기 위한 도면이다.
도 5는 일 실시 예에 따른 라이브 스트리밍을 위하여 서버 측에서 수행되는 동작의 타임라인을 도시한 도면이다.
도 6은 일 실시 예에 실시간 학습 동작의 구체적인 알고리즘을 도시한 도면이다.
도 7은 일 실시 예에 따른 신경망의 파라미터의 압축 성능을 설명하기 위한 도면이다.
도 8은 일 실시 예에 따른 서버의 동작 방법의 흐름도이다.
도 9는 일 실시 예에 따른 라이브 스트리밍을 위하여 클라이언트 측에서 수행되는 동작의 타임라인을 도시한 도면이다.
도 10은 일 실시 예에 따른 클라이언트의 동작 방법의 흐름도이다.
도 11은 일 실시 예에 따른 장치의 구성의 예시도이다.
1 is a diagram showing an overview of a live streaming system according to an embodiment.
2 is a diagram illustrating a pipeline of a live streaming system according to an embodiment.
3A to 3D are diagrams illustrating the structure of a neural network according to an embodiment.
4 is a diagram for explaining improvement in learning accuracy due to a structure of a neural network according to an exemplary embodiment.
5 is a diagram illustrating a timeline of operations performed on the server side for live streaming according to an embodiment.
6 is a diagram illustrating a specific algorithm of a real-time learning operation according to an embodiment.
7 is a diagram for explaining compression performance of parameters of a neural network according to an exemplary embodiment.
8 is a flowchart of a method of operating a server according to an embodiment.
9 is a diagram illustrating a timeline of operations performed on a client side for live streaming according to an embodiment.
10 is a flowchart of a method of operating a client according to an embodiment.
11 is an exemplary view of a configuration of a device according to an embodiment.

실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Specific structural or functional descriptions of the embodiments are disclosed for illustrative purposes only, and may be changed and implemented in various forms. Therefore, the form actually implemented is not limited only to the specific embodiments disclosed, and the scope of the present specification includes changes, equivalents, or substitutes included in the technical idea described in the embodiments.

제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.Although terms such as first or second may be used to describe various components, such terms should only be construed for the purpose of distinguishing one component from another. For example, a first element may be termed a second element, and similarly, a second element may be termed a first element.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.It should be understood that when an element is referred to as being “connected” to another element, it may be directly connected or connected to the other element, but other elements may exist in the middle.

단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.Singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, terms such as "comprise" or "have" are intended to designate that the described feature, number, step, operation, component, part, or combination thereof exists, but one or more other features or numbers, It should be understood that the presence or addition of steps, operations, components, parts, or combinations thereof is not precluded.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. Terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of the related art, and unless explicitly defined in this specification, it should not be interpreted in an ideal or excessively formal meaning. don't

이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. In the description with reference to the accompanying drawings, the same reference numerals are given to the same components regardless of reference numerals, and overlapping descriptions thereof will be omitted.

도 1은 일 실시 예에 따른 라이브 스트리밍(live streaming) 시스템의 개요를 도시한 도면이다.1 is a diagram showing an overview of a live streaming system according to an embodiment.

도 1을 참조하면, 일 실시 예에 따른 라이브 스트리밍 시스템(100)은 라이브 스트리밍 서비스를 제공하는 서버(101) 및 라이브 스트리밍 서비스를 요청하는 클라이언트(102)를 포함할 수 있다. 라이브 스트리밍은 소리나 영상과 같은 멀티미디어 파일을 실시간으로 전송 및 재생하는 것으로, 예를 들어 실시간으로 촬영된 동영상(혹은 비디오)을 서버(101)에서 클라이언트(102) 측의 단말에서 재생될 수 있도록 실시간으로 전송하는 것이다. 이하에서, 스트리밍 대상은 비디오 스트림(video stream)으로 예를 들어 설명한다.Referring to FIG. 1 , a live streaming system 100 according to an embodiment may include a server 101 providing a live streaming service and a client 102 requesting a live streaming service. Live streaming is transmitting and reproducing multimedia files such as sound and images in real time. to be sent to Hereinafter, the streaming target will be described as an example of a video stream.

일 실시 예에 따른 시스템(100)은 HLS(HTTP Live Streaming) 기반의 ABR(adaptive bitrate) 스트리밍 파이프라인을 따를 수 있다. 서버(101)와 클라이언트(102) 사이의 네트워크 대역폭(network bandwidth)의 변동(fluctuation)에 관계없이 비디오 스트림을 클라이언트(102)에 실시간으로 일정하게 제공하기 위하여, 서버(101)는 ABR(adaptive bitrate) 알고리즘을 이용하여 비디오 스트림을 조각화한 비디오 세그먼트를 상황에 따라 다양한 값의 해상도 및 비트레이트(bitrate)로 클라이언트(102)에 전송할 수 있다.The system 100 according to an embodiment may follow an adaptive bitrate (ABR) streaming pipeline based on HTTP Live Streaming (HLS). In order to constantly provide a video stream to the client 102 in real time regardless of fluctuations in network bandwidth between the server 101 and the client 102, the server 101 provides an adaptive bitrate (ABR) ) algorithm, video segments obtained by fragmenting a video stream may be transmitted to the client 102 at various values of resolution and bitrate according to circumstances.

일 실시 예에 따른 서버(101)는 클라이언트(102)에 전송된 저해상도의 비디오 세그먼트를 초해상화(super resolution)하기 위한 신경망(neural network)의 실시간 학습(real-time training)을 수행할 수 있으며, 클라이언트(102)에 저해상도의 비디오 세그먼트 파일(111)과 저해상도의 비디오 세그먼트를 초해상화하기 위한 학습된 신경망의 파라미터(parameter)(112)를 전송할 수 있다. 예를 들어, 신경망은 CNN (convolution neural network)을 포함할 수 있다. 이하에서, 일 실시 예에 따른 서버(101)에서 초해상화를 위한 신경망은 CNN인 것으로 예를 들어 설명한다.The server 101 according to an embodiment may perform real-time training of a neural network for super resolution of a low-resolution video segment transmitted to the client 102, , may transmit the low-resolution video segment file 111 and parameters 112 of the trained neural network for super-resolutioning the low-resolution video segment to the client 102 . For example, the neural network may include a convolution neural network (CNN). Hereinafter, a neural network for super-resolution in the server 101 according to an embodiment is described as an example of CNN.

일 실시 예에 따른 학습된 신경망의 파라미터(parameter)(112)는 신경망에 포함된 적어도 하나의 레이어의 가중치(weight) 및/또는 바이어스(bias)를 포함할 수 있으며, 학습에 의하여 값이 결정 혹은 갱신될 수 있다. 이하에서 상술하겠으나, 클라이언트(102)에 전송되는 초해상화를 위한 신경망의 파라미터(112)는 압축된 데이터에 해당할 수 있다. The parameter 112 of the learned neural network according to an embodiment may include a weight and/or bias of at least one layer included in the neural network, and the value is determined or determined by learning. can be updated Although described in detail below, the parameter 112 of the neural network for super-resolution transmitted to the client 102 may correspond to compressed data.

일 실시 예에 따르면, 서버(101) 측에서, 신경망은 복수의 해상도들 각각에 대응하는 비디오 스트림에 기초하여 실시간으로 학습될 수 있다. 복수의 해상도들은 미리 정해진 저해상도에 해당하는 복수의 해상도들을 포함할 수 있으며, 예를 들어 240p, 360p, 480p 및 720p의 해상도들을 포함할 수 있다. 실시간 학습 과정에서 고해상도의 비디오 스트림은 정답 데이터(ground truth)로 이용될 수 있다. 고해상도의 비디오 스트림은 복수의 해상도들보다 높은 해상도로, 예를 들어 1080p의 해상도를 포함할 수 있다. 복수의 해상도들 각각에 대응하는 비디오 스트림에 기초하여 신경망이 학습된 결과, 복수의 해상도들 각각에 대응하는 신경망의 갱신된 파라미터가 획득될 수 있다. 일 예로, 학습에 의해 240p의 비디오 스트림에 기초하여 갱신된 신경망의 파라미터와 480p의 비디오 스트림에 기초하여 갱신된 신경망의 파라미터는 서로 상이할 수 있다.According to an embodiment, on the server 101 side, the neural network may be trained in real time based on a video stream corresponding to each of a plurality of resolutions. The plurality of resolutions may include a plurality of resolutions corresponding to a predetermined low resolution, and may include, for example, resolutions of 240p, 360p, 480p, and 720p. In the real-time learning process, high-resolution video streams can be used as ground truth. A high-resolution video stream may include a resolution higher than a plurality of resolutions, for example, a resolution of 1080p. As a result of learning the neural network based on the video stream corresponding to each of the plurality of resolutions, updated parameters of the neural network corresponding to each of the plurality of resolutions may be obtained. For example, parameters of a neural network updated based on a 240p video stream and parameters of a neural network updated based on a 480p video stream may be different from each other.

일 실시 예에 따른 각 해상도에 대응하는 신경망의 파라미터(112)는 압축되어 저장될 수 있으며, 클라이언트(102)에 압축된 신경망의 파라미터(112)가 전송될 수 있다. 클라이언트(102)는 통신 환경 혹은 사용자의 입력에 기초하여 특정 해상도의 비디오 세그먼트를 요청할 수 있으며, 해당 해상도에 대응하는 비디오 세그먼트의 파일(111)과 해당 해상도에 대응하는 압축된 신경망의 파라미터(112)가 클라이언트(102)에 전송될 수 있다.According to an embodiment, the parameters 112 of the neural network corresponding to each resolution may be compressed and stored, and the compressed parameters 112 of the neural network may be transmitted to the client 102 . The client 102 may request a video segment of a specific resolution based on a communication environment or a user's input, and a file 111 of the video segment corresponding to the corresponding resolution and a parameter 112 of the compressed neural network corresponding to the corresponding resolution may be transmitted to the client 102.

일 실시 예에 따른 클라이언트(102)는 서버(101)로부터 수신된 비디오 세그먼트 파일(111) 및 압축된 신경망의 파라미터(112)에 기초하여, 비디오를 실시간으로 렌더링(real-time rendering)할 수 있다. 비디오의 실시간 렌더링 과정에서 특정 해상도의 비디오 세그먼트 파일(111)은 압축된 신경망의 파라미터(112)에 기초하여 초해상화될 수 있으며, 초해상화에 따른 고해상도로 복원된 비디오가 클라이언트(102) 측의 단말을 통해 재생될 수 있다.The client 102 according to an embodiment may render a video in real time based on the video segment file 111 received from the server 101 and the parameter 112 of the compressed neural network. . In the process of real-time video rendering, a video segment file 111 of a specific resolution may be super-resolution based on the parameters 112 of the compressed neural network, and the video reconstructed in high resolution according to the super-resolution is displayed on the client 102 side. It can be played through the terminal of.

일 실시 예에 따른 라이브 스트리밍 시스템(100)에서, 고해상도의 라이브 스트리밍 서비스를 제공하기 위한 서버(101)의 구체적인 동작 방법 및 고해상도의 라이브 스트리밍을 재생하기 위한 클라이언트(102)의 구체적인 동작 방법은 이하에서 상술한다.In the live streaming system 100 according to an embodiment, a specific operating method of the server 101 for providing a high-resolution live streaming service and a specific operating method of the client 102 for reproducing high-resolution live streaming are described below. detail

도2는 일 실시 예에 따른 라이브 스트리밍 시스템의 파이프라인을 도시한 도면이다.2 is a diagram illustrating a pipeline of a live streaming system according to an embodiment.

도 2를 참조하면, 일 실시 예에 따른 시스템(200)은 도 1에 도시된 시스템(100)에 대응될 수 있다. 예를 들어, 도 2에 도시된 서버(201) 및 클라이언트(202)는 각각 도 1에 도시된 서버(101) 및 클라이언트(102)에 대응될 수 있다.Referring to FIG. 2 , a system 200 according to an embodiment may correspond to the system 100 shown in FIG. 1 . For example, the server 201 and client 202 shown in FIG. 2 may correspond to the server 101 and client 102 shown in FIG. 1 , respectively.

일 실시 예에 따른 시스템(200)은 HLS(HTTP Live Streaming) 기반의 ABR(adaptive bitrate) 스트리밍 파이프라인을 따를 수 있다. 일 예로, 서버(201) 측에서 RTMP(Real-Time Messaging Protocol)(203)를 통해 비디오 스트림을 획득하고, 획득된 비디오 스트림은 HLS 인코딩(210)에 의해 클라이언트(202) 측의 단말에서 데이터를 인식하고 해석할 수 있도록 데이터 포맷이 설정될 수 있으며, 복수의 해상도들 각각에 대응되는 미리 정해진 길이의 세그먼트로 나뉠 수 있다. 일 예로, 비디오 스트림은 0.5초 길이의 세그먼트로 분리될 수 있으며, 각 세그먼트는 복제되어 240p, 360p, 480p, 720p 및 1080p의 해상도 각각에 대응되는 세그먼트들(211)로 생성될 수 있다. 다시 말해, 비디오 스트림의 0에서 0.5초에 대응하는 세그먼트는 240p, 360p, 480p, 720p 및 1080p의 해상도 각각에 대응되는 5개의 0에서 0.5초에 대응하는 세그먼트들(211)로 복제될 수 있다.The system 200 according to an embodiment may follow an adaptive bitrate (ABR) streaming pipeline based on HTTP Live Streaming (HLS). As an example, the server 201 acquires a video stream through RTMP (Real-Time Messaging Protocol) 203, and the obtained video stream converts data to a client 202 terminal by HLS encoding 210. A data format may be set to be recognized and interpreted, and may be divided into segments of a predetermined length corresponding to each of a plurality of resolutions. For example, a video stream may be divided into 0.5 second segments, and each segment may be duplicated and generated into segments 211 corresponding to resolutions of 240p, 360p, 480p, 720p, and 1080p, respectively. In other words, a segment corresponding to 0 to 0.5 seconds of the video stream may be duplicated as five segments 211 corresponding to 0 to 0.5 seconds corresponding to resolutions of 240p, 360p, 480p, 720p, and 1080p, respectively.

일 실시 예에 따른 신경망의 학습을 위해 1080p 해상도의 세그먼트에 포함된 비디오 프레임(들)은 고해상도(high resolution; HR) 프레임의 정답 데이터(ground truth)(213)로 사용되며, 1080p 미만의 나머지 해상도(들)의 세그먼트(들)에 비디오 프레임(들)은 저해상도(low resolution; LR) 프레임의 학습 데이터(212)로 사용될 수 있다. 실시간 학습 단계(220)에서는 사전 학습된 신경망(Npre)이 이용될 수 있으며, 각 해상도의 비디오 세그먼트에 기초하여 사전 학습된 신경망(Npre)의 파라미터가 갱신되어 각 해상도에 대응하는 신경망의 파라미터(221)가 획득될 수 있다. 일 예로, 사전 학습된 신경망은 임의의 SR(Super Resolution) 데이터 세트로 사전 학습된 CNN을 포함할 수 있다. 실시간이라는 조건을 충족하기 위해 사전 학습된 신경망의 파라미터는 비디오 세그먼트의 길이 혹은 지속 시간(duration) 동안 미세 조정(fine-tuning)을 통해 각 해상도에 대응하는 파라미터의 값으로 갱신될 수 있다.For learning of the neural network according to an embodiment, the video frame(s) included in the 1080p resolution segment is used as the ground truth 213 of the high resolution (HR) frame, and the remaining resolution less than 1080p Video frame(s) in segment(s) of (s) may be used as training data 212 of low resolution (LR) frames. In the real-time learning step 220, a pre-trained neural network (N pre ) may be used, and parameters of the pre-trained neural network (N pre ) are updated based on video segments of each resolution to correspond to the parameters of the neural network corresponding to each resolution. (221) can be obtained. For example, the pre-trained neural network may include a CNN pre-trained with an arbitrary SR (Super Resolution) data set. Parameters of the pre-trained neural network to meet the real-time condition may be updated to parameter values corresponding to each resolution through fine-tuning during the length or duration of the video segment.

일 실시 예에 따르면, 비디오 스트림의 각 해상도의 세그먼트에 대응하는 갱신된 파라미터는 압축 단계(230)에 의해 양자화 및/또는 인코딩에 의하여 압축될 수 있으며, 각 해상도에 대응하는 압축된 신경망의 파라미터에 관한 데이터(231)가 저장될 수 있다. 각 해상도에 대응하는 압축된 신경망의 파라미터에 관한 데이터(231)가 저장된 경우, 각 해상도에 대응하는 플레이리스트(playlist) 파일이 갱신(240)될 수 있다.According to an embodiment, the updated parameters corresponding to segments of each resolution of the video stream may be compressed by quantization and/or encoding in the compression step 230, and the parameter of the compressed neural network corresponding to each resolution may be compressed. Related data 231 may be stored. When data 231 related to parameters of the compressed neural network corresponding to each resolution is stored, a playlist file corresponding to each resolution may be updated (240).

일 실시 예에 따른 클라이언트(202)는 플레이리스트(241)에 기초하여, 특정 해상도의 비디오 세그먼트 파일(242)과 해당 해상도에 대응하는 신경망의 파라미터에 관한 데이터(244)를 다운로드할 수 있다. 일 예로, 신경망의 파라미터에 관한 데이터(244)는 확장자가 다른 비디오 세그먼트의 파일(242)의 경로와 동일한 파일 경로를 사용하기 때문에 신경망의 파라미터에 관한 데이터(244)가 저장되는 파일의 포맷은 표준 HLS 플레이리스트의 포맷에 대응될 수 있다. The client 202 according to an embodiment may download a video segment file 242 of a specific resolution and data 244 related to parameters of a neural network corresponding to the resolution based on the playlist 241 . For example, since the data 244 on the parameters of the neural network uses the same file path as the path of the file 242 of a video segment with a different extension, the format of the file in which the data 244 on the parameters of the neural network is stored is standard. It may correspond to the format of the HLS playlist.

일 실시 예에 따르면, 클라이언트(202) 측에서, ABR 컨트롤러 모듈(204)이 네트워크 대역폭에 따라 적절한 해상도(r)를 선택하면, 선택된 해상도(r)의 비디오 세그먼트 파일(242)과 해당 해상도(r)에 대응하는 압축된 신경망의 파라미터에 관한 데이터(244)가 네트워크를 통해 클라이언트(202)의 단말로 다운로드될 수 있다. 일 예로, 네트워크는 CDN(Content Delevery Network)을 포함할 수 있다.According to an embodiment, on the client 202 side, when the ABR controller module 204 selects an appropriate resolution r according to the network bandwidth, the video segment file 242 of the selected resolution r and the resolution r ) may be downloaded to the terminal of the client 202 through the network. For example, the network may include a content delivery network (CDN).

일 실시 예에 따르면, 클라이언트(202) 측에 다운로드된 세그먼트 파일(242)은 저해상도의 비디오 프레임(들)(243)로 디코딩될 수 있으며, 다운로드된 압축된 신경망의 파라미터에 관한 데이터(244)는 복원 단계(250)에 의해 해당 해상도(r)에 대응하는 신경망의 파라미터(

Figure pat00001
)로 복원될 수 있다. 압축된 신경망의 파라미터에 관한 데이터(244)는 클라이언트(202) 측에 저장된 사전 학습된 신경망의 파라미터(Npre)에 기초하여 복원될 수 있다.According to one embodiment, the segment file 242 downloaded to the client 202 may be decoded into low-resolution video frame(s) 243, and the data 244 related to parameters of the downloaded compressed neural network may be By the restoration step 250, the parameters of the neural network corresponding to the corresponding resolution (r) (
Figure pat00001
) can be restored. The data 244 on parameters of the compressed neural network may be restored based on the pre-trained parameters (N pre ) of the neural network stored on the client 202 side.

일 실시 예에 따르면, 초해상화 단계(260)에서, 저해상도의 비디오 프레임(들)(243)은 복원된 신경망의 파라미터(

Figure pat00002
)에 기초하여, 고해상도의 비디오 프레임(들)(261)로 변환될 수 있으며, 변환된 고해상도의 비디오 프레임(들)(261)은 렌더링을 통해 클라이언트(202)의 단말에서 재생될 수 있다.According to one embodiment, in the super-resolution step 260, the video frame(s) 243 of the low resolution are the parameters of the reconstructed neural network (
Figure pat00002
), it can be converted into high-resolution video frame(s) 261, and the converted high-resolution video frame(s) 261 can be reproduced in the terminal of the client 202 through rendering.

도 3a 내지 도 3d는 일 실시 예에 따른 신경망의 구조를 예시한 도면들이다.3A to 3D are diagrams illustrating the structure of a neural network according to an embodiment.

도 3a를 참조하면, 일 실시 예에 따른 신경망(300)은 다운 샘플러(down sampler)(310), 적어도 하나의 잔차 블록(residual blocks; ResBlocks)(320), 및 긴 스킵 커넥션(long skip connection)(340)이 있는 업 샘플러(up sampler)(330)를 포함할 수 있다.Referring to FIG. 3A, a neural network 300 according to an embodiment includes a down sampler 310, at least one residual block (ResBlocks) 320, and a long skip connection. An up sampler 330 with 340 may be included.

일 실시 예에 따른 신경망(300)에 입력되는 프레임의 해상도가 달라 각 해상도마다 런타임 성능이 달라지는 것을 방지하기 위하여, 먼저 저해상도(예: 240p, 360p, 480p, 720p)의 프레임은 고해상도(예: 1080p)의 도메인으로 보간될 수 있다. 일 예로, 바이큐빅 보간(bicubic interpolation)에 의해 입력 프레임의 해상도에 관계없이 동일한 해상도(예: 1080p)로 보간된 프레임(301)이 신경망(300)에 입력되므로, 입력 프레임에 대한 신경망(300)의 연산이 수행되는 시간이 입력 프레임의 해상도에 관계없이 동일할 수 있다. 고해상도의 도메인으로 보간된 프레임(301)은 다운 샘플러(310)에 인가되어 역 픽셀 셔플(inverse pixel shuffle)이 수행될 수 있으며, 다운 샘플러(310)에 포함된 적어도 하나의 레이어에 기초하여 피처가 추출될 수 있다. 다운 샘플러(310)에서 역 픽셀 셔플을 수행하는 것은 고해상도로 보간된 프레임(301)이 입력됨에 따라 신경망(300)의 연산 수행 시간이 저해상도의 프레임이 입력되는 경우보다 길어지는 것을 방지하기 위한 것으로, 예를 들어 역 픽셀 셔플을 통해 보간된 프레임(301)의 사이즈를 4배 낮추어 계산함으로써, 신경망(300)의 연산 시간을 단축할 수 있다. 예를 들어, 도 3b를 참조하면, 다운 샘플러(310)는 역 픽셀 셔플을 수행하는 레이어(311) 및 적어도 하나의 컨볼루션 레이어(312)를 포함할 수 있다. In order to prevent runtime performance from being different for each resolution due to differences in the resolution of frames input to the neural network 300 according to an embodiment, frames of low resolution (e.g., 240p, 360p, 480p, 720p) are first converted into high-resolution (e.g., 1080p) frames. ) can be interpolated to the domain of For example, since the frame 301 interpolated with the same resolution (eg, 1080p) regardless of the resolution of the input frame by bicubic interpolation is input to the neural network 300, the neural network 300 for the input frame The time for performing the operation of may be the same regardless of the resolution of the input frame. The interpolated frame 301 in the high-resolution domain may be applied to the down sampler 310 to perform inverse pixel shuffle, and a feature may be generated based on at least one layer included in the down sampler 310. can be extracted. Performing inverse pixel shuffling in the downsampler 310 is to prevent the computation execution time of the neural network 300 from being longer than when a low-resolution frame is input as the high-resolution interpolated frame 301 is input, For example, the calculation time of the neural network 300 can be reduced by reducing the size of the interpolated frame 301 by 4 times through inverse pixel shuffling. For example, referring to FIG. 3B , the down sampler 310 may include a layer 311 performing inverse pixel shuffling and at least one convolution layer 312 .

일 실시 예에 따른 신경망(300)은 적어도 하나(예: 4개)의 잔차 블록(320)을 포함할 수 있다. 예를 들어, 도 3c를 참조하면, 잔차 블록(320)은 적어도 하나의 컨볼루션 레이어(321, 323) 및 활성화 레이어(예: ReLU)(322)를 포함할 수 있으며, 잔차 블록의 출력 값에 잔차 블록의 입력 값이 더해지도록 구현될 수 있다.The neural network 300 according to an embodiment may include at least one (eg, four) residual blocks 320 . For example, referring to FIG. 3C , a residual block 320 may include at least one convolution layer 321 and 323 and an activation layer (eg, ReLU) 322, and an output value of the residual block It may be implemented so that the input values of the residual blocks are added.

일 실시 예에 따른 신경망(300)은 업 샘플러(330)를 포함할 수 있으며, 예를 들어, 도 3d를 참조하면, 업 샘플러(330)는 적어도 하나의 컨볼루션 레이어(331) 및 픽셀 셔플을 수행하는 레이어(332)를 포함할 수 있다.The neural network 300 according to an embodiment may include an up-sampler 330. For example, referring to FIG. 3D, the up-sampler 330 performs at least one convolution layer 331 and pixel shuffle. It may include a layer 332 to perform.

일 실시 예에 따른 신경망(300)은 프레임의 고해상도에 대응하는 피처를 보존하기 위해 업 샘플러(330)의 출력과 신경망의 입력인 고해상도의 도메인으로 보간된 프레임(301) 사이의 긴 스킵 커넥션(long skip connection)(340)을 포함할 수 있다. 업 샘플러(330)의 출력 및 고해상도의 도메인으로 보간된 프레임(301)에 기초하여 획득된 초해상화 프레임(302)은 저해상도의 프레임으로부터 추정된 고해상도의 프레임에 해당할 수 있다.The neural network 300 according to an embodiment is a long skip connection (long skip connection) between the output of the upsampler 330 and the frame 301 interpolated to the high resolution domain, which is the input of the neural network, in order to preserve features corresponding to the high resolution of the frame. skip connection) (340). The super-resolution frame 302 obtained based on the output of the up-sampler 330 and the interpolated frame 301 in the high-resolution domain may correspond to a high-resolution frame estimated from a low-resolution frame.

일 실시 예에 따른 신경망(300)은 신경망의 출력인 초해상화 프레임(302)과 정답 데이터인 고해상도의 프레임(330)의 차이에 관한 손실 함수(350)에 기초하여 학습될 수 있다.The neural network 300 according to an embodiment may be trained based on a loss function 350 related to a difference between the super-resolution frame 302, which is an output of the neural network, and the high-resolution frame 330, which is correct answer data.

일 실시 예에 따른 다운 샘플러(310)와 긴 스킵 커넥션(340)을 포함하는 신경망(300)의 구조는 동일한 반복 및 계산 복잡도 내에서 학습의 정확도를 개선할 수 있다. 일 예로, 도 4에 도시된 표의 4행과 1행 내지 3행을 비교하면, 다운 샘플러와 긴 스킵 커넥션을 포함하는 신경망의 PSNR(Peak Signal-to-noise ratio)이 다른 구조의 신경망에 비해 높게 나타남을 알 수 있다. PSNR은 최대 신호에서 잡음 비율로, 영상의 화질에 대한 손실 정보를 평가하는 지표로, PSNR의 크기가 클수록 화질이 높음을 지시한다.The structure of the neural network 300 including the down sampler 310 and the long skip connection 340 according to an embodiment can improve learning accuracy within the same iteration and calculation complexity. As an example, comparing row 4 and rows 1 to 3 of the table shown in FIG. 4, the PSNR (Peak Signal-to-noise ratio) of a neural network including a down sampler and a long skip connection is higher than that of neural networks with other structures. can be seen to appear. The PSNR is a maximum signal-to-noise ratio, which is an index for evaluating loss information for image quality. The larger the PSNR, the higher the quality.

도 5는 일 실시 예에 따른 라이브 스트리밍을 위하여 서버 측에서 수행되는 동작의 타임라인을 도시한 도면이다.5 is a diagram illustrating a timeline of operations performed on the server side for live streaming according to an embodiment.

도 5에서, S0, S1, S2 및 S3는 시간 순서에 따른 세그먼트를 의미하며, S0, S1, S2 또는 S3가 기재된 블록들은 각 세그먼트에 대응하는 동작을 의미한다. 블록의 가로 길이는 해당 세그먼트에 대응하여 해당 동작이 수행되는 시간을 의미한다.In FIG. 5 , S 0 , S 1 , S 2 , and S 3 denote segments in time order, and blocks in which S 0 , S 1 , S 2 or S 3 are described denote an operation corresponding to each segment. The horizontal length of a block means the time during which a corresponding operation is performed corresponding to a corresponding segment.

도 5를 참조하면, 라이브 스트리밍을 위하여 서버 측에서 수행되는 동작은 HLS 인코딩(HLS encoding) 동작, 데이터 준비(data preparation) 동작, 실시간 학습(real-time training) 동작, 및 신경망 압축(NN compression) 동작을 포함할 수 있다. 일반적인 HLS 플레이어는 비디오 스트림의 각 세그먼트(S0, S1, S2, S3)의 HLS 인코딩 혹은 트랜스코딩(transcoding)이 완료되는 시점 (t = 0, 1, 2, 3)에 플레이리스트가 갱신되는 반면, 일 실시 예에 따른 서버에서 플레이리스트가 갱신되는 시점은 각 세그먼트(S0, S1, S2)에 대하여 HLS 인코딩 동작, 데이터 준비 동작, 실시간 학습 동작, 및 신경망의 압축 동작이 완료되는 시점 (t = 0, 1, 2)에 해당할 수 있다.Referring to FIG. 5, operations performed on the server side for live streaming include HLS encoding operation, data preparation operation, real-time training operation, and neural network compression (NN compression). Actions may be included. In a general HLS player, a playlist is created at the time (t = 0, 1, 2, 3) when HLS encoding or transcoding of each segment (S 0 , S 1 , S 2 , S 3 ) of the video stream is completed. On the other hand, the time when the playlist is updated in the server according to an embodiment is the HLS encoding operation, data preparation operation, real-time learning operation, and compression operation of the neural network for each segment (S 0 , S 1 , S 2 ). It may correspond to the point of completion (t = 0, 1, 2).

일 예로, 동일한 세그먼트에 대하여 수행되는 HLS 인코딩 동작, 데이터 준비 동작, 실시간 학습 동작, 및 신경망 압축 동작을 포함하는 서버의 동작들은 순차적으로 수행될 수 있다. 도 5는 각 세그먼트에 대한 일련의 동작들이 세그먼트의 시간 순서에 따라 순차적으로 수행되는 것으로 도시하고 있으나, 일 실시 예에 따르면 일부 세그먼트들에 대한 일련의 동작들은 병렬적으로 수행될 수 있다.For example, server operations including an HLS encoding operation, a data preparation operation, a real-time learning operation, and a neural network compression operation performed on the same segment may be sequentially performed. Although FIG. 5 illustrates that a series of operations for each segment are sequentially performed according to the time order of the segments, a series of operations for some segments may be performed in parallel according to an embodiment.

일 실시 예에 따르면, 데이터 준비 동작은 수신된 비디오 스트림을 미리 정해진 길이의 세그먼트로 분리하고, 각 세그먼트를 복수의 해상도들에 대응되는 세그먼트들(예: 도 2의 세그먼트들(211))로 생성하는 동작을 포함할 수 있다. According to an embodiment, the data preparation operation divides the received video stream into segments of a predetermined length, and generates each segment into segments (eg, segments 211 of FIG. 2 ) corresponding to a plurality of resolutions. action may be included.

일 실시 예에 따르면, 데이터 준비 동작은 복수의 해상도들에 대응되는 세그먼트들 각각을 보간하여 저해상도의 세그먼트 데이터 세트를 준비하는 동작을 포함할 수 있다. 일 예로, 복수의 해상도들에 대응되는 세그먼트들 각각에 대하여, 고해상도 영상(1080p) 대비 저해상도(240p 360p, 480p, 720p)의 비율에 따라 바이큐빅(bicubic) 다운 샘플링(bicubic downsampling)을 수행함으로써, 각 저해상도에 대응하는 세그먼트를 보간할 수 있다. 저해상도의 세그먼트 데이터 세트는 복수의 해상도들 각각에 대응하는 보간된 비디오 세그먼트의 프레임(들)을 포함할 수 있다.According to an embodiment, the data preparation operation may include an operation of preparing a low-resolution segment data set by interpolating each of the segments corresponding to a plurality of resolutions. For example, for each of the segments corresponding to a plurality of resolutions, bicubic downsampling is performed according to the ratio of the high resolution image (1080p) to the low resolution (240p 360p, 480p, 720p), Segments corresponding to each low resolution may be interpolated. The low-resolution segment data set may include frame(s) of an interpolated video segment corresponding to each of a plurality of resolutions.

일 실시 예에 따른 실시간 학습 동작은 사전 학습된 신경망을 미세 조정하는 동작을 포함할 수 있다. 일 예로, DIV2K 데이터 세트는 일반적인 고해상도 자연 이미지 사전(prior)의 암시적 표현(implicit representation)을 학습하는 데 사용될 수 있으며, 사전 학습된 신경망은 DIV2K 데이터 세트에 포함된 고해상도 자연 이미지 사전(prior)의 암시적 표현(implicit representation)을 학습함으로써 획득된 파라미터를 포함할 수 있다.A real-time learning operation according to an embodiment may include an operation of fine-tuning a pretrained neural network. As an example, the DIV2K data set can be used to learn an implicit representation of a general high-resolution natural image prior, and the pre-trained neural network can be used to learn the high-resolution natural image prior included in the DIV2K data set. It may include parameters obtained by learning an implicit representation.

일 실시 예에 따르면, 실시간 학습 동작은 저해상도의 세그먼트 데이터 세트를 전처리하는 동작을 포함할 수 있다. 일 예로, 저해상도의 세그먼트 데이터 세트는 신경망에 인가되기 위하여 인코딩될 수 있으며, 인코딩 과정에서 세그먼트에 포함된 프레임 내 압축(intra-frame compression)으로 인한 블로킹 아티팩트(blocking artifacts)를 제거하기 위해, [10, 50] 범위에서 샘플링된 임의의 압축 계수(compression factor)(혹은 Q 레벨)에 기초하여, 각 저해상도의 프레임에 압축이 적용될 수 있다. 저해상도의 프레임에 적용되는 압축 방법은 예를 들어, JPEG2000 압축 방법을 포함할 수 있다. 압축된 저해상도의 프레임을 학습을 위한 데이터 세트로 사용하는 것은 신경망 학습의 정확도를 빠르게 높이는 데 기여할 수 있다.According to an embodiment, the real-time learning operation may include an operation of pre-processing a low-resolution segment data set. [10 , 50], compression may be applied to each low-resolution frame based on an arbitrary compression factor (or Q level) sampled in the range. A compression method applied to a low-resolution frame may include, for example, a JPEG2000 compression method. Using compressed low-resolution frames as a data set for training can contribute to rapidly increasing the accuracy of neural network training.

일 실시 예에 따른 실시간 학습 동작은 다중 스케일 학습 방법에 따른 동작(들)을 포함할 수 있다. 사전 학습된 신경망의 다중 스케일 학습(multi-scale training) 방법에 기초하여, 다른 해상도에 대응하는 이미지는 신경망의 동일한 배치(batch)에 할당될 수 있다. 일 실시 예에 따른 다중 스케일 학습 방법에 관하여는 이하에서 상술한다.A real-time learning operation according to an embodiment may include operation(s) according to a multi-scale learning method. Based on the multi-scale training method of pre-trained neural networks, images corresponding to different resolutions can be assigned to the same batch of neural networks. A multi-scale learning method according to an embodiment will be described in detail below.

일 실시 예에 따르면, CNN의 고유한 과적합(over-fitting) 속성을 촉진하기 위해, 패치 생성을 위한 이미지 크로핑(cropping), 배치 정규화(batch normalization) 및 이미지 증대(image augmentation)와 같은 데이터의 일반화와 관련된 프로세스는 실시간 학습 동작에서 생략될 수 있다. 데이터의 일반화와 관련된 프로세스는 데이터 처리를 위한 추가 시간을 요구하므로, 학습 시간이 제한된 실시간 학습 환경에서 데이터를 그대로 사용하는 경우보다 학습 이터레이션(iteration)의 반복을 위한 시간이 감소하므로, 학습의 정확도가 떨어질 수 있다. 또한, 학습 이터레이션마다 새로 처리된 학습 데이터를 GPU에 로드하는 시간이 병목 현상으로 작용할 수 있다. 이에, 다운 샘플링된 저해상도의 세그먼트에 포함된 비디오의 프레임을 GPU에 미리 로드하고, 미리 로드된 프레임을 모든 이터레이션에서 사용함으로써, 이터레이션마다 프레임을 다시 로드하기 위해 소요되는 시간을 줄이고, 학습 이터레이션의 반복 횟수를 늘림으로써, 결과적으로 학습 정확도를 높이는 데 기여할 수 있다.According to one embodiment, data such as image cropping, batch normalization, and image augmentation for patch generation to promote the over-fitting property inherent in CNNs. The process related to generalization of can be omitted in the real-time learning operation. Since the process related to generalization of data requires additional time for data processing, the time for repetition of learning iterations is reduced compared to using the data as it is in a real-time learning environment with limited learning time, so the accuracy of learning may fall In addition, the time to load newly processed training data to the GPU for each training iteration can act as a bottleneck. Therefore, by preloading the video frames included in the downsampled low-resolution segment into the GPU and using the preloaded frames in all iterations, the time required to reload the frames for each iteration is reduced, and the learning data By increasing the number of iterations of the ration, it can contribute to increasing the learning accuracy as a result.

일 실시 예에 따르면, 실시간 학습 동작은 제한된 학습 시간 내에서 학습의 정확도를 증가시기 위하여 모든 신경망의 파라미터를 갱신하는 대신 일부 파라미터 값만 갱신될 수 있도록 일부 파라미터 값을 고정하는 동작을 포함할 수 있다. 일 예로, 잔차 블록에 포함된 가중치만 갱신될 수 있도록 잔차 블록에 포함되지 않은 다른 레이어의 가중치 및 바이어스 값은 학습 과정에서 변경되지 않도록 고정될 수 있다. 모든 신경망의 파라미터를 갱신하지 않고, 일부 파라미터만 갱신함으로써, 서버는 컴퓨팅 리소스를 증가된 이터레이션 횟수를 위해 사용할 수 있으며, 갱신된 신경망의 크기를 줄일 수 있다.According to an embodiment, the real-time learning operation may include an operation of fixing some parameter values so that only some parameter values can be updated instead of updating all parameters of the neural network in order to increase learning accuracy within a limited learning time. For example, weights and bias values of other layers not included in the residual block may be fixed so that only the weights included in the residual block are updated so as not to change during the learning process. By updating only some parameters instead of updating all parameters of the neural network, the server can use computing resources for the increased number of iterations and reduce the size of the updated neural network.

일 실시 예에 따르면, 실시간 학습 동작은 신경망에 인가되는 프레임의 해상도에 관계없이 일관된 런타임 성능을 보장하면서 추론 품질 저하를 완화하기 위해, 학습 대상의 난이도를 점진적으로 높이는 커리큘럼 기반의 다중 스케일(multi-scale) 학습 방법을 포함할 수 있다. 다중 스케일 학습 방법은 복수의 저해상도들 중 가장 높은 해상도의 세그먼트에 기초하여 신경망을 학습시키고, 학습된 신경망을 다음으로 높은 저해상도에 대응하는 신경망의 학습에 사용하는 학습 방법에 해당할 수 있다. 다중 스케일 학습 방법은 특히 최저 해상도(예: 240p)에서 학습 정확도를 빠르게 증가시킬 수 있다. 일 실시 예에 따른 각 해상도에 대응하는 신경망의 학습에 다중 스케일 학습 방법을 이용함으로써, 서로 다른 해상도의 프레임에 대응하여 동일한 파라미터를 포함하는 신경망을 이용하는 경우 저해상도에서의 추론의 품질 저하를 개선할 수 있으며, 제한된 학습 시간을 요구하는 라이브 스트리밍에서 각 해상도에 대응하는 신경망의 학습 시간을 줄일 수 있다.According to one embodiment, the real-time learning operation is a curriculum-based multi-scale (multi-scale) that gradually increases the difficulty of the learning target in order to mitigate deterioration in inference quality while ensuring consistent runtime performance regardless of the resolution of the frame applied to the neural network. scale) learning method. The multi-scale learning method may correspond to a learning method of training a neural network based on a segment of the highest resolution among a plurality of low resolutions and using the learned neural network to learn a neural network corresponding to the next higher resolution. Multi-scale learning methods can rapidly increase learning accuracy, especially at the lowest resolution (e.g. 240p). By using a multi-scale learning method for learning a neural network corresponding to each resolution according to an embodiment, when using a neural network including the same parameters corresponding to frames of different resolutions, quality degradation of inference at low resolution can be improved. It can reduce the learning time of the neural network corresponding to each resolution in live streaming, which requires a limited learning time.

일 실시 예에 따른 실시간 학습 동작의 구체적인 알고리즘은 도 6을 참조할 수 있다. 도 6을 참조하면, 알고리즘 1은 도 6에 도시된 실시간 학습 프로세스를 기술한 것이다. 알고리즘 1의 5-6행은 학습 이터레이션 횟수를 늘리기 위하여 세그먼트에 포함된 프레임을 GPU에 미리 로드하는 동작에 해당할 수 있다. 8-21행은 커리큘럼 기반 다중 스케일 학습 동작에 해당할 수 있다. 2행에 의해 초기 이터레이션 횟수 n0은 100×d로 설정될 수 있며, 여기서 d 는 특정 비디오 세그먼트에 기초한 학습 시간으로, 해당 비디오 세그먼트의 지속 시간(초)에 해당할 수 있다. 23행을 참조하면, 파라미터 갱신 후 1회의 이터레이션이 시간 Titer의 평균 값 및 전체 이터레이션의 수행 시간에 기초하여, 각 해상도에 대응하는 이터레이션의 반복 횟수 nt를 추정할 수 있다. 15-16행을 참조하면, 실시간의 제약으로 인해, 학습 시간이 d를 초과하면 해당 세그먼트에 대응하는 파라미터 갱신을 위한 학습 프로세스가 중지될 수 있다.A detailed algorithm of a real-time learning operation according to an embodiment may refer to FIG. 6 . Referring to Figure 6, Algorithm 1 describes the real-time learning process shown in Figure 6. Lines 5 to 6 of Algorithm 1 may correspond to an operation of preloading frames included in a segment into the GPU in order to increase the number of training iterations. Lines 8-21 may correspond to a curriculum-based multi-scale learning operation. According to line 2, the initial iteration number n 0 can be set to 100×d, where d is a learning time based on a specific video segment and can correspond to the duration (seconds) of the video segment. Referring to line 23, the number of iterations n t corresponding to each resolution can be estimated based on the average value of the time T iter of one iteration after the parameter update and the execution time of all iterations. Referring to lines 15 and 16, due to real-time constraints, if the learning time exceeds d, the learning process for updating parameters corresponding to the segment may be stopped.

일 실시 예에 따르면, 각 비디오 세그먼트에 대응하는 신경망의 파라미터는 클라이언트에 전송될 수 있다. 제한된 네트워크 대역폭 내에서 비디오 품질을 최대화기 위해, 신경망의 파라미터는 라이브 스트리밍 환경에서 압축 손실을 최소화하면서 실시간으로 압축될 수 있다. 이를 위해 일 실시 예에 따른 시스템의 서버는 신경망의 파라미터를 압축하기 위한 신경망 압축 동작을 수행할 수 있다.According to an embodiment, parameters of the neural network corresponding to each video segment may be transmitted to the client. To maximize video quality within limited network bandwidth, the parameters of the neural network can be compressed in real time while minimizing compression loss in a live streaming environment. To this end, the server of the system according to an embodiment may perform a neural network compression operation for compressing parameters of the neural network.

일 실시 예에 따른 신경망 압축 동작은 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값을 압축하는 알고리즘을 이용하여 각 해상도에 대응하는 신경망의 파라미터를 압축하는 동작을 포함할 수 있다. 일 예로, 도 7을 참조하면, 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값(residual weight values)(이하, 잔차 값)의 분포 범위가 복수의 해상도들 각각에 대응하는 신경망의 파라미터 값(weight values of updated parameters)의 분포 범위보다 좁음을 실험적으로 관찰할 수 있다. 양자화 범위를 줄이기 위해 상대적으로 값들의 분포 범위가 좁은 신경망의 잔차 값을 양자화 대상으로 설정할 수 있다. 사전 학습된 신경망의 파라미터(Npre)는 이미 클라이언트 측에 저장되어 있으므로, 아래의 수학식 1과 같이 갱신된 신경망의 잔차 값(Rr t)만 클라이언트 측에 전송될 수 있다.A neural network compression operation according to an embodiment includes an operation of compressing a neural network parameter corresponding to each resolution using an algorithm for compressing a difference between a neural network parameter corresponding to a plurality of resolutions and a pretrained neural network parameter. can include As an example, referring to FIG. 7 , a distribution range of residual weight values (hereinafter, residual values) between a parameter of a neural network corresponding to each of a plurality of resolutions and a parameter of a pretrained neural network is a distribution range of each of a plurality of resolutions. It can be experimentally observed that it is narrower than the distribution range of the weight values of updated parameters of the neural network corresponding to . In order to reduce the quantization range, a residual value of a neural network having a relatively narrow distribution range of values may be set as a quantization target. Since the parameters (N pre ) of the pre-trained neural network are already stored on the client side, only the updated residual value (R r t ) of the neural network may be transmitted to the client side as shown in Equation 1 below.

Figure pat00003
Figure pat00003

수학식 1에서, Nr t는 저해상도 의 번째 비디오 세그먼트에 기초하여 갱신된 신경망의 파라미터이다.In Equation 1, N r t is a parameter of the neural network updated based on the low-resolution th video segment.

일 예로, 서버는 Rr t를 압축하기 위해 아래의 수학식 2와 같이 양자화(Q) 및 인코딩(H)을 수행할 수 있다.For example, the server may perform quantization (Q) and encoding (H) as in Equation 2 below to compress R r t .

Figure pat00004
Figure pat00004

일 예로, Rr t의 양자화를 위해 l 클러스터 중심들 C의 k-means 클러스터링을 사용할 수 있으며, 여기서 랜덤으로 샘플링된 10%의 신경망의 파라미터는 고속 클러스터링을 위해 사용될 수 있다. 이후 양자화된 Rr t에 발생 확률(occurrence probability) 기반의 무손실 데이터 압축에 일반적으로 사용되는 허프만 인코딩(Huffman-Encoding)이 적용될 수 있다. 마지막으로 인코딩된 신경망의 파라미터(

Figure pat00005
)는 8비트 정수로 의 값을 저장하고 16비트 부동 소수점으로 클러스터 중심(C)을 저장하며, 클라이언트 측에서의 디코딩을 위한 C의 (l × 32) 비트 허프만 사전을 저장할 수 있다. 잔차 값을 압축하여 저장하는 방법을 통해 학습 정확도의 저하가 감소될 수 있다.For example, k-means clustering of 1 cluster centers C may be used for quantization of R r t , where randomly sampled 10% of neural network parameters may be used for high-speed clustering. Thereafter, Huffman-Encoding generally used for lossless data compression based on an occurrence probability may be applied to the quantized R r t . Finally, the parameters of the encoded neural network (
Figure pat00005
) can store the value of C as an 8-bit integer, store the cluster center (C) as a 16-bit floating point, and store a (l × 32) bit Huffman dictionary of C for decoding on the client side. Deterioration in learning accuracy may be reduced through a method of compressing and storing residual values.

일 실시 예에 따르면, 라이브 스트리밍을 위해 서버는 비디오 세그먼트와 압축된 신경망의 파라미터를 클라이언트에 전송할 수 있다. HLS 스트리밍의 일반적인 비트레이트에 따르면, 신경망의 파라미터 전송을 위한 비트레이트만큼 비디오의 전송을 위한 비트레이트가 희생될 수 있다.According to an embodiment, for live streaming, the server may transmit video segments and compressed neural network parameters to the client. According to the general bit rate of HLS streaming, the bit rate for video transmission may be sacrificed as much as the bit rate for transmitting parameters of the neural network.

일 예로, 비디오 세그먼트의 총 비트레이트는 (240, 360, 480, 720, 1080)p 해상도의 비디오들에 따른 (400-β, 800-β, 1200-β, 2400-β, 4800-β) Kbps이며, 여기서 β는 압축된 신경망의 크기를 비디오 세그먼트의 지속 시간으로 나눈 신경망의 비트레이트에 해당할 수 있다. 최적의 β를 선택하기 위하여, 압축된 신경망의 파라미터의 크기와 압축 손실 간의 트레이드오프(tradeoff)를 고려할 수 있다. 예를 들어, 학습 이터레이션의 반복 횟수가 증가함에 따라 신경망의 압축 품질이 감소할 수 있으며, 이러한 감도(sensitivity)를 고려하여 비디오 세그먼트 지속 시간에 따라 양자화 횟수 l은 다르게 설정될 수 있다. As an example, the total bitrate of a video segment is (400-β, 800-β, 1200-β, 2400-β, 4800-β) Kbps for videos with resolutions of (240, 360, 480, 720, 1080)p , where β may correspond to the bitrate of the neural network divided by the size of the compressed neural network by the duration of the video segment. In order to select the optimal β, a tradeoff between the size of a compressed neural network parameter and compression loss may be considered. For example, as the number of repetitions of training iterations increases, the compression quality of the neural network may decrease. Considering this sensitivity, the number of quantizations l may be set differently according to the video segment duration.

도 8은 일 실시 예에 따른 서버의 동작 방법의 흐름도이다.8 is a flowchart of a method of operating a server according to an embodiment.

일 실시 예에 따른 서버는 라이브 스트리밍 시스템에서 클라이언트에 라이브 스트리밍 서비스를 제공하는 서버로, 예를 들어 도 1의 서버(101) 또는 도 2의 서버(201)에 대응될 수 있다. A server according to an embodiment is a server that provides a live streaming service to clients in a live streaming system, and may correspond to, for example, the server 101 of FIG. 1 or the server 201 of FIG. 2 .

도 8을 참조하면, 일 실시 예에 따른 서버의 동작 방법은 라이브 스트리밍을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하는 단계(810), 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 해당 해상도의 세그먼트에 기초하여 갱신하는 단계(820), 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하여 저장하는 단계(830) 및 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는 단계(840)를 포함할 수 있다.Referring to FIG. 8, a method of operating a server according to an embodiment includes dividing a video stream for live streaming into segments having a predetermined length corresponding to each of a plurality of resolutions (810), each of a plurality of resolutions. Correspondingly, step 820 of updating pre-learned parameters of the neural network based on segments of a resolution higher than the corresponding resolution based on the segments of the corresponding resolution, compressing data about parameters of the neural network corresponding to each of a plurality of resolutions. and storing (830) and transmitting (840) data and segments related to parameters of a compressed neural network corresponding to at least one of a plurality of resolutions to a client that has requested live streaming of a video stream. .

일 실시 예에 따른 서버의 동작 방법은 도 5를 통해 상술한 서버에서 수행되는 동작들 또는 도 2에 도시된 서버(201)에서 수행되는 동작들에 대응될 수 있다. 일 예로, 단계(810)는 도 5를 통해 상술한 데이터 준비 동작에 대응될 수 있으며, 도 2에 도시된 복수의 해상도들에 대응하는 세그먼트들(211)을 생성하는 동작을 포함할 수 있다. 일 실시 예에 따른 단계(801)는 획득된 비디오 스트림을 HLS 인코딩하는 단계를 더 포함할 수 있으며, HLS 인코딩하는 단계는 도 5를 통해 상술한 HLS 인코딩 동작 혹은 도 2를 통해 상술한 HLS 인코딩 동작(210)에 대응될 수 있다.A method of operating a server according to an embodiment may correspond to operations performed by the server described above with reference to FIG. 5 or operations performed by the server 201 shown in FIG. 2 . For example, step 810 may correspond to the data preparation operation described above with reference to FIG. 5 and may include an operation of generating segments 211 corresponding to a plurality of resolutions shown in FIG. 2 . Step 801 according to an embodiment may further include HLS-encoding the obtained video stream, and the HLS-encoding step may include the HLS encoding operation described above with reference to FIG. 5 or the HLS encoding operation described above with reference to FIG. 2 . (210).

일 예로, 단계(820)는 도 5를 통해 상술한 실시간 학습 동작에 대응될 수 있으며, 도 2에 도시된 실시간 학습 단계(220)에 대응될 수 있다.For example, step 820 may correspond to the real-time learning operation described above with reference to FIG. 5 and may correspond to step 220 of real-time learning shown in FIG. 2 .

일 실시 예에 따른 서버의 동작 방법은 해당 해상도의 세그먼트에 기초하여 갱신하는 단계(820)에 앞서, 복수의 해상도들 각각에 대응하는 세그먼트의 보간 및 역 픽셀 셔플(inverse pixel shuffle) 중 적어도 하나에 기초하여, 복수의 해상도들 각각에 대응하는 세그먼트를 다운 샘플링(down sampling)하는 단계를 더 포함할 수 있다. 다운 샘플링하는 단계는 도 3을 통해 상술한 저해상도(예: 240p, 360p, 480p, 720p)의 세그먼트의 프레임을 고해상도(예: 1080p)의 도메인으로 보간하여 보간된 프레임(301)을 획득하고, 보간된 프레임(301)을 다운 샘플러(310)에 인가하여 역 픽셀 셔플(inverse pixel shuffle)을 수행하는 동작에 대응될 수 있다.Prior to step 820 of updating based on a segment of a corresponding resolution, a method of operating a server according to an embodiment performs at least one of interpolation and inverse pixel shuffle of a segment corresponding to each of a plurality of resolutions. Based on this, the method may further include down-sampling a segment corresponding to each of a plurality of resolutions. The step of downsampling interpolates the frame of the segment of the low resolution (eg 240p, 360p, 480p, 720p) described above through FIG. This may correspond to an operation of performing inverse pixel shuffle by applying the downsampler 310 to the downsampler 301.

일 실시 예에 따른 단계(820)는 신경망의 잔차 블록(residual block)에 포함된 가중치가 아닌 신경망의 파라미터의 값을 고정하는 단계 및 신경망의 잔차 블록에 포함된 가중치를 갱신하는 단계를 포함할 수 있다. 상술한 바와 같이, 신경망의 파라미터를 갱신하는 학습 과정에서 신경망의 전체 파라미터를 갱신하는 대신 일부 파라미터만 갱신함으로써 학습을 효율적으로 수행할 수 있다.Step 820 according to an embodiment may include fixing a value of a parameter of the neural network other than a weight included in the residual block of the neural network and updating a weight included in the residual block of the neural network. there is. As described above, in the learning process of updating the parameters of the neural network, learning can be efficiently performed by updating only some parameters instead of updating all parameters of the neural network.

일 실시 예에 따른 단계(820)는 상술한 다중 스케일 학습 방법에 따른 동작들을 포함할 수 있다. 일 예로, 단계(820)는 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 사전 학습된 신경망의 파라미터(예: Npre)를 갱신함으로써, 제1 해상도에 대응하는 신경망을 획득하는 단계 및 복수의 해상도들 중 제2 해상도의 세그먼트에 기초하여, 제1 해상도에 대응하는 신경망의 파라미터를 갱신함으로써, 제2 해상도에 대응하는 신경망을 획득하는 단계를 포함할 수 있다. 제1 해상도는 상기 제2 해상도보다 높은 해상도를 포함할 수 있다. 예를 들어, 제1 해상도는 복수의 해상도들 중 가장 높은 해상도에 해당할 수 있다. 제1 해상도에 대응하는 신경망의 파라미터는 사전 학습된 신경망을 제1 해상도의 세그먼트에 기초하여 학습함으로써 갱신된 파라미터 값을 포함할 수 있다. 제1 해상도보다 낮은 해상도의 제2 해상도에 대응하는 신경망의 파라미터는 제1 해상도에 대응하는 신경망의 파라미터를 제1 해상도의 세그먼트에 기초하여 학습함으로써 갱신된 파라미터 값을 포함할 수 있다. 일 실시 예에 따르면, 복수의 해상도들 중 제2 해상도 다음으로 낮은 제3 해상도가 포함된 경우, 제3 해상도의 세그먼트에 기초하여 제2 해상도에 대응하는 신경망이 학습될 수 있으며, 학습에 의해 갱신된 파라미터 값을 포함하는 제3 해상도에 대응하는 신경망의 파라미터가 획득될 수 있다. 다중 스케일 학습 방법에 따라 복수의 해상도들 각각에 대응하는 신경망의 파라미터가 획득될 수 있다.Step 820 according to an embodiment may include operations according to the above-described multi-scale learning method. For example, in step 820, based on a segment of a first resolution among a plurality of resolutions, obtaining a neural network corresponding to the first resolution by updating a parameter (eg, N pre ) of the pretrained neural network; and The method may include acquiring a neural network corresponding to the second resolution by updating a parameter of the neural network corresponding to the first resolution based on a segment of the second resolution among the plurality of resolutions. The first resolution may include a resolution higher than the second resolution. For example, the first resolution may correspond to the highest resolution among a plurality of resolutions. The parameter of the neural network corresponding to the first resolution may include a parameter value updated by learning a pretrained neural network based on segments of the first resolution. The parameter of the neural network corresponding to the second resolution lower than the first resolution may include a parameter value updated by learning the parameter of the neural network corresponding to the first resolution based on the segments of the first resolution. According to an embodiment, when a third resolution that is lower than the second resolution among the plurality of resolutions is included, a neural network corresponding to the second resolution may be learned based on segments of the third resolution and updated by learning. Parameters of the neural network corresponding to the third resolution including the parameter values may be obtained. Parameters of a neural network corresponding to each of a plurality of resolutions may be obtained according to the multi-scale learning method.

또 일 예로, 단계(820)는 해당 해상도의 세그먼트에 포함된 프레임들에 기초하여 학습 이터레이션을 반복적으로 수행함으로써, 해당 해상도보다 높은 해상도에 대응하는 제1 신경망의 파라미터를 갱신하는 단계 및 학습 이터레이션의 반복의 종료에 기초하여, 갱신된 제1 신경망의 파라미터를 포함하는 해당 해상도에 대응하는 제2 신경망을 획득하는 단계를 포함할 수 있다. 학습 이터레이션은 해당 해상도에 대응하는 세그먼트의 프레임을 제1 신경망에 인가하여 획득된 출력 프레임과 정답 데이터의 차이에 관한 손실 함수에 기초하여 획득된 그래디언트(gradient)를 제1 신경망에 역전파(back-propagation)하는 단계를 포함할 수 있다. 신경망의 학습을 위한 손실 함수는 도 3a를 통해 상술한 바와 같이 신경망의 출력인 초해상화 프레임(302)과 정답 데이터인 고해상도의 프레임(330)의 차이에 관한 손실 함수를 포함할 수 있다.As another example, in step 820, updating parameters of the first neural network corresponding to a resolution higher than the corresponding resolution by repeatedly performing training iterations based on frames included in the segment of the corresponding resolution, and learning data The method may include acquiring a second neural network corresponding to a corresponding resolution including updated parameters of the first neural network, based on the end of repetition of the simulation. The learning iteration backpropagates the gradient obtained based on the loss function for the difference between the output frame obtained by applying the frame of the segment corresponding to the corresponding resolution to the first neural network and the correct answer data to the first neural network. -propagation) may be included. The loss function for learning the neural network may include a loss function related to a difference between the super-resolution frame 302, which is an output of the neural network, and the high-resolution frame 330, which is the correct answer data, as described above with reference to FIG. 3A.

일 실시 예에 따른 제1 신경망의 파라미터를 갱신하는 단계는 해당 해상도의 세그먼트에 포함된 프레임들을 로드하는 단계 및 로드된 프레임들에 기초하여, 학습 이터레이션을 반복하는 단계를 포함할 수 있다. 상술한 바와 같이 학습 이터레이션마다 새로 처리된 학습 데이터를 GPU에 로드하는 시간이 병목 현상으로 작용할 수 있으므로, 데이터의 일반화와 관련된 프로세스를 생략하고 미리 로드된 프레임을 모든 이터레이션에서 사용하여, 제한된 시간 내에서 데이터 처리 시간을 줄이고 학습 이터레이션의 반복 횟수를 늘릴 수 있다.Updating parameters of the first neural network according to an embodiment may include loading frames included in a segment of a corresponding resolution and repeating training iterations based on the loaded frames. As described above, since the time to load the newly processed training data into the GPU for each training iteration can act as a bottleneck, the process related to data generalization is omitted and preloaded frames are used in all iterations, so that the limited time It is possible to reduce data processing time and increase the number of iterations of training iterations within

일 실시 예에 따른 학습 이터레이션의 반복은 해당 해상도의 세그먼트의 지속 시간(duration) 동안 수행될 수 있다. 다시 말해, 실시간이라는 제한 조건에 의해 특정 비디오 세그먼트에 대응하는 총 학습 시간은 해당 세그먼트의 지속 시간(예: d)로 제한될 수 있다.The repetition of learning iterations according to an embodiment may be performed during the duration of a segment of a corresponding resolution. In other words, the total learning time corresponding to a specific video segment may be limited to the duration (eg, d) of the corresponding segment due to the constraint condition of real time.

일 예로, 단계(830)는 도 5를 통해 상술한 신경망 압축 동작에 대응될 수 있으며, 도 2에 도시된 압축 단계(230) 및 플레이리스트 갱신 단계(240)를 포함할 수 있다.For example, step 830 may correspond to the neural network compression operation described above with reference to FIG. 5 and may include the compression step 230 and the playlist update step 240 shown in FIG. 2 .

일 실시 예에 따른 압축하여 저장하는 단계(830)는 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값을 양자화하는 단계 및 복수의 해상도들 각각에 대응하는 양자화된 값의 인코딩 데이터를 저장하는 단계를 포함할 수 있다.The compressing and storing step 830 according to an embodiment includes quantizing a difference value between a parameter of a neural network corresponding to each of a plurality of resolutions and a parameter of a pretrained neural network, and quantizing a value corresponding to each of a plurality of resolutions. It may include storing the encoded data of the value.

일 예로, 단계(840)는 도 2에 도시된 비디오 세그먼트 파일(242) 및 신경망의 파라미터에 관한 데이터(244)를 클라이언트(202)에 제공하는 동작에 대응될 수 있다.As an example, step 840 may correspond to an operation of providing the video segment file 242 shown in FIG. 2 and data 244 related to parameters of the neural network to the client 202 .

도 9는 일 실시 예에 따른 라이브 스트리밍을 위하여 클라이언트 측에서 수행되는 동작의 타임라인을 도시한 도면이다.9 is a diagram illustrating a timeline of operations performed on a client side for live streaming according to an embodiment.

도 9에서, S0, S1, S2 및 S3는 시간 순서에 따른 세그먼트를 의미하며, S0, S1, S2 또는 S3가 기재된 블록들은 각 세그먼트에 대응하는 동작을 의미한다. 블록의 가로 길이는 해당 세그먼트에 대응하여 해당 동작이 수행되는 시간을 의미한다.In FIG. 9 , S 0 , S 1 , S 2 , and S 3 denote segments in time order, and blocks described as S 0 , S 1 , S 2 or S 3 denote an operation corresponding to each segment. The horizontal length of a block means the time during which a corresponding operation is performed corresponding to a corresponding segment.

도 9를 참조하면, 라이브 스트리밍을 위하여 클라이언트 측에서 수행되는 동작은 다운로드(download) 동작, 신경망의 디코딩(NN decoding) 동작, 초해상화(SR) 동작 및 재생(playblack) 동작을 포함할 수 있다. 일 실시 예에 따른 클라이언트에서 수행되는 동작들은 병렬적으로 수행될 수 있다.Referring to FIG. 9 , operations performed on the client side for live streaming may include a download operation, a neural network decoding (NN decoding) operation, a super-resolution (SR) operation, and a playblack operation. . Operations performed by a client according to an embodiment may be performed in parallel.

일 실시 예에 따른 새로운 라이브 비디오 세그먼트와 해당 신경망 데이터는 Pt(t = 0, 1, 2...)에 다운로드될 수 있다. 신경망 데이터는 신경망의 파라미터에 관한 데이터 혹은 신경망의 압축된 파라미터에 관한 데이터를 포함할 수 있다. 비디오 세그먼트가 다운로드되는 매 시점 Pt(t = 0, 1, 2...) 혹은 (t-1)번째 비디오 세그먼트가 다운로드 완료된 이후 시점에, t번째의 비디오 세그먼트에 대응하는 해상도가 선택될 수 있으며, 선택된 해상도에 기초하여 비디오 스트림의 플레이리스트가 수신될 수 있다. 선택된 해상도에 대응하는 비디오 세그먼트가 다운로드되기 전에, 선택된 해상도에 대응하는 신경망에 관한 데이터가 다운로드되어 디코딩될 수 있다.According to an embodiment, a new live video segment and corresponding neural network data may be downloaded at P t (t = 0, 1, 2...). The neural network data may include data about parameters of the neural network or data about compressed parameters of the neural network. At each point in time P t (t = 0, 1, 2...) or after the (t-1) th video segment is downloaded, the resolution corresponding to the t th video segment can be selected. and a playlist of video streams may be received based on the selected resolution. Before the video segment corresponding to the selected resolution is downloaded, data about the neural network corresponding to the selected resolution may be downloaded and decoded.

일 실시 예에 따른 신경망 디코딩 동작은 아래의 수학식 3과 같이 허프만 디코딩 및 역양자화(dequantization)를 통해 t번째 압축된 신경망을 재구성 혹은 복원(reconstruct)하는 동작을 포함할 수 있다.A neural network decoding operation according to an embodiment may include an operation of reconstructing or reconstructing the t-th compressed neural network through Huffman decoding and dequantization as shown in Equation 3 below.

Figure pat00006
Figure pat00006

t번째 CNN이 복원되고 비디오 세그먼트가 다운로드 된 후, 복원된 CNN의 파라미터

Figure pat00007
에 기초하여, 다운로드된 비디오 세그먼트는 초해상화될 수 있다. 복원된 CNN에서 다운로드된 비디오 세그먼트에 포함된 저해상도의 프레임들에 대응하는 고해상도의 초해상화 프레임들이 출력될 수 있으며, 초해상화 프레임들은 t번째 세그먼트의 재생을 대기하는 프레임 버퍼에 저장될 수 있다.After the tth CNN is reconstructed and the video segment is downloaded, the parameters of the reconstructed CNN
Figure pat00007
Based on , the downloaded video segment can be super-resolution. High-resolution super-resolution frames corresponding to the low-resolution frames included in the video segment downloaded from the reconstructed CNN may be output, and the super-resolution frames may be stored in a frame buffer waiting for playback of the t-th segment. .

일 실시 예에 따른 클라이언트는 추가적인 버퍼링의 발생 없이 초해상화에 따른 고해상도의 비디오를 출력할 수 있으며, 결과적으로 QoE가 개선된 실시간 비디오 스트리밍 서비스를 제공받을 수 있다.A client according to an embodiment can output high-resolution video according to super-resolution without additional buffering, and as a result, can receive a real-time video streaming service with improved QoE.

도 10은 일 실시 예에 따른 클라이언트의 동작 방법의 흐름도이다.10 is a flowchart of a method of operating a client according to an embodiment.

일 실시 예에 따른 클라이언트는 라이브 스트리밍 시스템에서 서버로부터 라이브 스트리밍 서비스를 제공받는 클라이언트로, 예를 들어 도 1의 클라이언트(102) 또는 도 2의 클라이언트(202)에 대응될 수 있다. A client according to an embodiment is a client receiving a live streaming service from a server in a live streaming system, and may correspond to, for example, the client 102 of FIG. 1 or the client 202 of FIG. 2 .

도 10을 참조하면, 일 실시 예에 따른 클라이언트의 동작 방법은 라이브 스트리밍을 위한 서버로부터, 선택된 제1 해상도에 대응하는 비디오 스트림의 플레이리스트를 수신하는 단계(1010), 플레이리스트에 기초하여, 서버로부터 비디오 스트림에 대응하는 제1 해상도의 세그먼트 및 신경망에 관한 데이터를 수신하는 단계(1020), 제1 해상도에 대응하는 신경망에 관한 데이터 및 미리 로드된 사전 학습된 신경망의 파라미터에 기초하여, 제1 해상도에 대응하는 신경망을 복원하는 단계(1030), 및 복원된 제1 해상도에 대응하는 신경망에 기초하여, 제1 해상도의 세그먼트를 제2 해상도의 세그먼트로 변환하는 단계(1040)를 포함할 수 있다. 일 예로, 제1 해상도는 사용자로부터 수신된 선택 입력 및 비디오 스트림이 수신되는 네트워크의 통신 환경 중 적어도 하나에 기초하여 결정된 제2 해상도보다 낮은 해상도를 포함할 수 있다.Referring to FIG. 10, a method of operating a client according to an embodiment includes receiving a playlist of a video stream corresponding to a selected first resolution from a server for live streaming (1010), based on the playlist, Receiving (1020) data about a segment of a first resolution corresponding to a video stream and data about a neural network from It may include restoring a neural network corresponding to the resolution (1030), and converting segments of the first resolution into segments of a second resolution based on the reconstructed neural network corresponding to the first resolution (1040). . For example, the first resolution may include a resolution lower than the second resolution determined based on at least one of a selection input received from a user and a communication environment of a network through which a video stream is received.

일 실시 예에 따른 클라이언트의 동작 방법은 도 9를 통해 상술한 클라이언트에서 수행되는 동작들 또는 도 2에 도시된 클라이언트(202)에서 수행되는 동작들에 대응될 수 있다. 일 예로, 단계(1010) 및 단계(1020)는 도 9에 도시된 다운로드 동작에 대응될 수 있으며, 도 2에 도시된 ABR 컨트롤러 모듈(204)에서 네트워크 대역폭에 따라 적절한 해상도(r)를 선택하는 동작 및 선택된 해상도(r)의 비디오 세그먼트 파일(242)과 해당 해상도(r)에 대응하는 압축된 신경망의 파라미터에 관한 데이터(244)가 네트워크를 통해 다운로드하는 동작을 포함할 수 있다.A method of operating a client according to an embodiment may correspond to the operations performed by the client described above with reference to FIG. 9 or the operations performed by the client 202 shown in FIG. 2 . As an example, steps 1010 and 1020 may correspond to the download operation shown in FIG. 9, and the ABR controller module 204 shown in FIG. 2 selects an appropriate resolution (r) according to the network bandwidth. It may include an operation of downloading the video segment file 242 of the operation and the selected resolution (r) and the data 244 related to the parameters of the compressed neural network corresponding to the resolution (r) through the network.

일 예로, 단계(1030)는 도 9에 도시된 신경망의 디코딩 동작에 대응될 수 있으며, 도 2에 도시된 복원 단계(250)에 의해 압축된 신경망의 파라미터에 관한 데이터(244)를 사전 학습된 신경망의 파라미터(Npre)에 기초하여 해상도(r)에 대응하는 신경망의 파라미터(

Figure pat00008
)로 복원하는 동작에 대응될 수 있다. 보다 구체적으로, 단계(1030)는 서버로부터 획득된 제1 해상도에 대응하는 신경망의 파라미터에 관한 데이터를 디코딩함으로써, 제1 해상도에 대응하는 신경망의 잔차 값을 획득하는 단계 및 획득된 잔차 값을 사전 학습된 신경망의 파라미터에 더함으로써, 제1 해상도에 대응하는 신경망의 파라미터를 복원하는 단계를 포함할 수 있다. 상술한 바와 같이, 제1 해상도에 대응하는 신경망의 파라미터는 라이브 스트리밍 서비스를 제공하는 서버에서, 미리 정해진 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 복수의 해상도들 중 제1 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망 또는 사전 학습된 신경망의 파라미터를 갱신함으로써 획득될 수 있다.As an example, step 1030 may correspond to the decoding operation of the neural network shown in FIG. 9, and the data 244 on the parameters of the neural network compressed by the restoration step 250 shown in FIG. 2 may be pretrained. The neural network parameter (N pre ) corresponding to the resolution (r) based on the neural network parameter (N pre ).
Figure pat00008
) may correspond to an operation of restoring. More specifically, step 1030 includes obtaining a residual value of the neural network corresponding to the first resolution by decoding data about parameters of the neural network corresponding to the first resolution obtained from the server, and pre-preparing the obtained residual value. and restoring parameters of the neural network corresponding to the first resolution by adding them to the learned parameters of the neural network. As described above, the parameter of the neural network corresponding to the first resolution is higher than the first resolution among the plurality of resolutions based on the segment of the first resolution among the plurality of predetermined resolutions in the server providing the live streaming service. It may be obtained by updating parameters of a pre-trained neural network or a pre-trained neural network based on a segment of resolution.

일 예로, 단계(1040)는 도 9의 초해상화 동작에 대응될 수 있으며, 도 2에 도시된 초해상화 단계(260)에서, 저해상도의 비디오 프레임(들)(211)을 복원된 신경망의 파라미터(

Figure pat00009
)에 의해 초해상화 프레임(들)(261)로 변환하는 동작에 대응될 수 있다. For example, step 1040 may correspond to the super-resolution operation of FIG. 9, and in step 260 of super-resolution shown in FIG. parameter(
Figure pat00009
) may correspond to an operation of converting to super-resolution frame(s) 261.

일 실시 예에 따른 클라이언트의 동작 방법은 단계(1040) 이후에 변환된 제2 해상도의 세그먼트의 프레임들을 재생하는 단계를 더 포함할 수 있으며, 변환된 제2 해상도의 세그먼트의 프레임들을 재생하는 단계는 도 9를 통해 상술한 재생 동작에 대응될 수 있다. The operating method of the client according to an embodiment may further include playing frames of the segment of the second resolution converted after step 1040, and playing the frames of the segment of the converted second resolution may include: It may correspond to the regeneration operation described above through FIG. 9 .

도 11은 일 실시 예에 따른 장치의 구성의 예시도이다.11 is an exemplary view of a configuration of a device according to an embodiment.

도 11을 참조하면, 장치(1100)는 프로세서(1101), 메모리(1103) 및 통신 모듈(1105)을 포함할 수 있다. 일 실시 예에 따른 장치(1100)는 도 1 내지 도 10을 통하여 전술한 라이브 스트리밍 시스템의 서버 및 클라이언트의 단말을 포함할 수 있다. 클라이언트의 단말은 미디어 파일을 재생하기 위한 장치로, 예를 들어 휴대폰, 퍼스널 컴퓨터, 태블릿 PC를 포함할 수 있다.Referring to FIG. 11 , an apparatus 1100 may include a processor 1101 , a memory 1103 and a communication module 1105 . Apparatus 1100 according to an embodiment may include terminals of a server and a client of the live streaming system described above through FIGS. 1 to 10 . The terminal of the client is a device for playing media files, and may include, for example, a mobile phone, a personal computer, and a tablet PC.

일 실시 예에 따른 프로세서(1101)는 도 1 내지 도 10을 통하여 전술한 서버 혹은 클라이언트의 적어도 하나의 동작을 수행할 수 있다.The processor 1101 according to an embodiment may perform at least one operation of the server or client described above through FIGS. 1 to 10 .

일 예로, 서버의 프로세서(1101)는 라이브 스트리밍을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하는 동작, 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 해당 해상도의 세그먼트에 기초하여 갱신하는 동작, 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하여 저장하는 동작 및 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는 동작을 수행할 수 있다.For example, the processor 1101 of the server divides the video stream for live streaming into segments of a predetermined length corresponding to each of a plurality of resolutions, and corresponding to each of the plurality of resolutions, a resolution higher than the corresponding resolution. Updating the previously learned parameters of the neural network based on the segment based on the segment of the corresponding resolution, compressing and storing data on the parameters of the neural network corresponding to each of a plurality of resolutions, and requesting live streaming of the video stream An operation of transmitting data and segments related to parameters of the compressed neural network corresponding to at least one of a plurality of resolutions to the client may be performed.

또 일 예로, 클라이언트의 단말의 프로세서(1101)는 라이브 스트리밍을 위한 서버로부터, 선택된 제1 해상도에 대응하는 비디오 스트림의 플레이리스트를 수신하는 동작, 플레이리스트에 기초하여, 서버로부터 비디오 스트림에 대응하는 제1 해상도의 세그먼트 및 신경망에 관한 데이터를 수신하는 동작, 제1 해상도에 대응하는 신경망에 관한 데이터 및 미리 로드된 사전 학습된 신경망의 파라미터에 기초하여, 제1 해상도에 대응하는 신경망을 복원하는 동작 및 복원된 제1 해상도에 대응하는 신경망에 기초하여, 제1 해상도의 세그먼트를 제2 해상도의 세그먼트로 변환하는 동작을 수행할 수 있다.As another example, the processor 1101 of the terminal of the client receives a playlist of a video stream corresponding to the selected first resolution from a server for live streaming, based on the playlist, a video stream corresponding to the video stream from the server. An operation of receiving segments of the first resolution and data related to the neural network, and an operation of restoring the neural network corresponding to the first resolution based on the data related to the neural network corresponding to the first resolution and the parameters of the pre-loaded pretrained neural network. and converting segments of the first resolution into segments of the second resolution based on the neural network corresponding to the reconstructed first resolution.

일 실시 예에 따른 메모리(1103)는 휘발성 메모리 또는 비휘발성 메모리일 수 있으며, 도 1 내지 도 10을 통하여 전술한 라이브 스트리밍 서비스에 관한 데이터를 저장할 수 있다.The memory 1103 according to an embodiment may be a volatile memory or a non-volatile memory, and may store data related to the live streaming service described above through FIGS. 1 to 10 .

일 예로, 서버의 메모리(1103)는 라이브 스트리밍 서비스를 제공하기 위한 서버의 동작 방법을 수행하는 과정에서 발생한 데이터 혹은 라이브 스트리밍 서비스를 제공하기 위한 서버의 동작 방법을 수행하기 위하여 필요한 데이터를 저장할 수 있다. 예를 들어, 메모리(1103)는 수신된 비디오 스트림의 각 해상도에 대응하는 세그먼트 파일을 저장할 수 있으며, 각 해상도에 대응하는 학습된 신경망의 파라미터를 저장할 수 있다.For example, the memory 1103 of the server may store data generated in the course of performing a method of operating a server for providing a live streaming service or data necessary for performing a method of operating a server for providing a live streaming service. . For example, the memory 1103 may store a segment file corresponding to each resolution of the received video stream and may store parameters of a trained neural network corresponding to each resolution.

또 일 예로, 클라이언트의 단말의 메모리(1103)는 라이브 스트리밍 서비스를 제공받기 위한 클라이언트의 동작 방법을 수행하는 과정에서 발생한 데이터 혹은 라이브 스트리밍 서비스를 제공받기 위한 클라이언트의 동작 방법을 수행하기 위하여 필요한 데이터를 저장할 수 있다. 예를 들어, 메모리(1103)는 사전 학습된 신경망의 파라미터를 저장할 수 있으며, 서버로부터 획득된 특정 해상도에 대응하는 세그먼트 파일 및 신경망의 압축된 파라미터를 저장할 수 있다.As another example, the memory 1103 of the client's terminal stores data generated in the process of performing a client operating method for receiving a live streaming service or data necessary for performing a client operating method for receiving a live streaming service. can be saved For example, the memory 1103 may store pre-trained neural network parameters, segment files corresponding to a specific resolution obtained from a server, and compressed parameters of the neural network.

일 실시 예에 따른 통신 모듈(1105)은 네트워크를 통해 장치(1100)가 다른 전자 기기 또는 다른 서버와 통신하기 위한 기능을 제공할 수 있다. 다시 말해, 장치(1100)는 통신 모듈(1105)를 통하여 외부 장치(예를 들어, 유저의 단말, 서버 또는 네트워크)에 연결되고, 데이터를 교환할 수 있다. 예를 들어, 서버는 통신 모듈(1105)를 통해 클라이언트의 단말 및 영상 촬영 장치와 데이터를 송수신할 수 있다. 또 예를 들어, 클라이언트의 단말은 통신 모듈(1105)을 서버와 데이터를 송수신할 수 있으며, 사용자로부터 입력된 데이터를 수신할 수 있다.The communication module 1105 according to an embodiment may provide a function for the device 1100 to communicate with other electronic devices or other servers through a network. In other words, the device 1100 may be connected to an external device (eg, a user's terminal, server, or network) through the communication module 1105 and exchange data. For example, the server may transmit/receive data with the terminal of the client and the image capture device through the communication module 1105 . Also, for example, the terminal of the client may transmit/receive data with the server through the communication module 1105, and may receive data input from the user.

일 실시 예에 따르면, 메모리(1103)는 도 1 내지 도 10을 통하여 전술한 타겟팅 광고 방법이 구현된 프로그램을 저장할 수 있다. 프로세서(1101)는 메모리(1103)에 저장된 프로그램을 실행하고, 장치(1100)를 제어할 수 있다. 프로세서(1101)에 의하여 실행되는 프로그램의 코드는 메모리(1103)에 저장될 수 있다.According to an embodiment, the memory 1103 may store a program in which the targeting advertisement method described above through FIGS. 1 to 10 is implemented. The processor 1101 may execute a program stored in the memory 1103 and control the device 1100 . Program codes executed by the processor 1101 may be stored in the memory 1103 .

일 실시 예에 따른 장치(1100)는 도시되지 않은 다른 구성 요소들을 더 포함할 수 있다. 예를 들어, 장치(1100)는 통신 모듈(1105)와의 인터페이스를 위한 수단으로 입력 장치 및 출력 장치를 포함하는 입출력 인터페이스를 더 포함할 수 있다. 또 예를 들어, 장치(1100)는 트랜시버(transceiver), 각종 센서, 데이터베이스 등과 같은 다른 구성 요소들을 더 포함할 수도 있다.The device 1100 according to an embodiment may further include other components not shown. For example, the device 1100 may further include an input/output interface including an input device and an output device as means for interfacing with the communication module 1105 . Also, for example, the device 1100 may further include other components such as a transceiver, various sensors, and a database.

이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The embodiments described above may be implemented as hardware components, software components, and/or a combination of hardware components and software components. For example, the devices, methods and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate (FPGA). array), programmable logic units (PLUs), microprocessors, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and software applications running on the operating system. A processing device may also access, store, manipulate, process, and generate data in response to execution of software. For convenience of understanding, there are cases in which one processing device is used, but those skilled in the art will understand that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that it can include. For example, a processing device may include a plurality of processors or a processor and a controller. Other processing configurations are also possible, such as parallel processors.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.Software may include a computer program, code, instructions, or a combination of one or more of the foregoing, which configures a processing device to operate as desired or processes independently or collectively. The device can be commanded. Software and/or data may be any tangible machine, component, physical device, virtual equipment, computer storage medium or device, intended to be interpreted by or provide instructions or data to a processing device. may be permanently or temporarily embodied in Software may be distributed on networked computer systems and stored or executed in a distributed manner. Software and data may be stored on computer readable media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer readable medium. A computer readable medium may store program instructions, data files, data structures, etc. alone or in combination, and program instructions recorded on the medium may be specially designed and configured for the embodiment or may be known and usable to those skilled in the art of computer software. there is. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floptical disks. - includes hardware devices specially configured to store and execute program instructions, such as magneto-optical media, and ROM, RAM, flash memory, and the like. Examples of program instructions include high-level language codes that can be executed by a computer using an interpreter, as well as machine language codes such as those produced by a compiler.

위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The hardware device described above may be configured to operate as one or a plurality of software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with limited drawings, those skilled in the art can apply various technical modifications and variations based on this. For example, the described techniques may be performed in an order different from the method described, and/or components of the described system, structure, device, circuit, etc. may be combined or combined in a different form than the method described, or other components may be used. Or even if it is replaced or substituted by equivalents, appropriate results can be achieved.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents of the claims are within the scope of the following claims.

Claims (20)

라이브 스트리밍(live streaming)을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하는 단계;
상기 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계;
상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하여 저장하는 단계; 및
상기 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 상기 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는 단계
를 포함하는,
서버의 동작 방법.
Separating a video stream for live streaming into segments of a predetermined length corresponding to each of a plurality of resolutions;
Corresponding to each of the plurality of resolutions, updating a parameter of a neural network pre-learned based on a segment having a higher resolution than the corresponding resolution based on the segment having the corresponding resolution;
compressing and storing data about parameters of a neural network corresponding to each of the plurality of resolutions; and
Transmitting data and segments related to parameters of a compressed neural network corresponding to at least one of the plurality of resolutions to a client requesting live streaming of the video stream.
including,
How the server works.
제1항에 있어서,
상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계는
상기 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 사전 학습된 신경망의 파라미터를 갱신함으로써, 상기 제1 해상도에 대응하는 신경망을 획득하는 단계; 및
상기 복수의 해상도들 중 제2 해상도의 세그먼트에 기초하여, 상기 제1 해상도에 대응하는 신경망의 파라미터를 갱신함으로써, 상기 제2 해상도에 대응하는 신경망을 획득하는 단계
를 포함하고,
상기 제1 해상도는 상기 제2 해상도보다 높은 해상도를 포함하는,
서버의 동작 방법.
According to claim 1,
The step of updating based on the segment of the corresponding resolution
obtaining a neural network corresponding to the first resolution by updating a parameter of a pretrained neural network based on a segment of a first resolution among the plurality of resolutions; and
Acquiring a neural network corresponding to the second resolution by updating a parameter of the neural network corresponding to the first resolution based on a segment of a second resolution among the plurality of resolutions.
including,
The first resolution includes a higher resolution than the second resolution,
How the server works.
제1항에 있어서,
상기 복수의 해상도들 각각에 대응하는 세그먼트의 보간 및 역 픽셀 셔플(inverse pixel shuffle) 중 적어도 하나에 기초하여, 상기 복수의 해상도들 각각에 대응하는 세그먼트를 다운 샘플링(down sampling)하는 단계
를 더 포함하는,
서버의 동작 방법.
According to claim 1,
Down sampling a segment corresponding to each of the plurality of resolutions based on at least one of interpolation and inverse pixel shuffle of the segment corresponding to each of the plurality of resolutions.
Including more,
How the server works.
제1항에 있어서,
상기 압축하여 저장하는 단계는
상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값을 양자화하는 단계; 및
상기 복수의 해상도들 각각에 대응하는 상기 양자화된 값의 인코딩 데이터를 저장하는 단계
를 포함하는,
서버의 동작 방법.
According to claim 1,
The step of compressing and storing
quantizing a difference between a parameter of a neural network corresponding to each of the plurality of resolutions and a parameter of a pretrained neural network; and
storing the encoded data of the quantized value corresponding to each of the plurality of resolutions;
including,
How the server works.
제1항에 있어서,
상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계는
상기 해당 해상도의 세그먼트에 포함된 프레임들에 기초하여 학습 이터레이션(iteration)을 반복적으로 수행함으로써, 상기 해당 해상도보다 높은 해상도에 대응하는 제1 신경망의 파라미터를 갱신하는 단계; 및
상기 학습 이터레이션의 반복의 종료에 기초하여, 상기 갱신된 제1 신경망의 파라미터를 포함하는 상기 해당 해상도에 대응하는 제2 신경망을 획득하는 단계
를 포함하고,
상기 학습 이터레이션은
상기 해당 해상도에 대응하는 세그먼트의 프레임을 상기 제1 신경망에 인가하여 획득된 출력 프레임과 정답 데이터의 차이에 관한 손실 함수에 기초하여 획득된 그래디언트(gradient)를 상기 제1 신경망에 역전파(back-propagation)하는 단계
를 포함하는,
서버의 동작 방법.
According to claim 1,
The step of updating based on the segment of the corresponding resolution
updating a parameter of a first neural network corresponding to a resolution higher than the corresponding resolution by repeatedly performing learning iterations based on frames included in the segment of the corresponding resolution; and
Acquiring a second neural network corresponding to the corresponding resolution including the updated parameter of the first neural network based on the end of the iteration of the learning iteration;
including,
The learning iteration is
A gradient obtained based on a loss function for a difference between an output frame obtained by applying a frame of a segment corresponding to the corresponding resolution to the first neural network and the correct answer data is back-propagated to the first neural network. stage of propagation
including,
How the server works.
제5항에 있어서,
상기 제1 신경망의 파라미터를 갱신하는 단계는
상기 해당 해상도의 세그먼트에 포함된 프레임들을 로드하는 단계; 및
상기 로드된 프레임들에 기초하여, 상기 학습 이터레이션을 반복하는 단계
를 포함하는,
서버의 동작 방법.
According to claim 5,
Updating the parameters of the first neural network
loading frames included in the segment of the corresponding resolution; and
repeating the learning iteration based on the loaded frames;
including,
How the server works.
제5항에 있어서,
상기 학습 이터레이션의 반복은 상기 해당 해상도의 세그먼트의 지속 시간(duration) 동안 수행되는,
서버의 동작 방법.
According to claim 5,
The repetition of the learning iteration is performed during the duration of the segment of the corresponding resolution,
How the server works.
제1항에 있어서,
상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계는
상기 신경망의 잔차 블록(residual block)에 포함된 가중치가 아닌 상기 신경망의 파라미터의 값을 고정하는 단계; 및
상기 신경망의 상기 잔차 블록에 포함된 가중치를 갱신하는 단계
를 포함하는,
서버의 동작 방법.
According to claim 1,
The step of updating based on the segment of the corresponding resolution
fixing a value of a parameter of the neural network other than a weight included in a residual block of the neural network; and
Updating a weight included in the residual block of the neural network
including,
How the server works.
라이브 스트리밍을 위한 서버로부터, 선택된 제1 해상도에 대응하는 비디오 스트림의 플레이리스트를 수신하는 단계;
상기 플레이리스트에 기초하여, 상기 서버로부터 상기 비디오 스트림에 대응하는 상기 제1 해상도의 세그먼트 및 상기 제1 해상도에 대응하는 신경망에 관한 데이터를 수신하는 단계;
상기 제1 해상도에 대응하는 신경망에 관한 데이터 및 미리 로드된 사전 학습된 신경망의 파라미터에 기초하여, 상기 제1 해상도에 대응하는 신경망을 복원하는 단계; 및
상기 복원된 제1 해상도에 대응하는 신경망에 기초하여, 상기 제1 해상도의 세그먼트를 제2 해상도의 세그먼트로 변환하는 단계
를 포함하는,
클라이언트의 동작 방법.
Receiving a playlist of video streams corresponding to a selected first resolution from a server for live streaming;
receiving, from the server, data about a segment of the first resolution corresponding to the video stream and a neural network corresponding to the first resolution, based on the playlist;
Restoring a neural network corresponding to the first resolution based on data related to the neural network corresponding to the first resolution and parameters of a pre-trained neural network loaded in advance; and
converting a segment of the first resolution into a segment of a second resolution based on a neural network corresponding to the reconstructed first resolution;
including,
How the client behaves.
제9항에 있어서,
상기 제1 해상도에 대응하는 신경망을 복원하는 단계는
상기 서버로부터 획득된 상기 제1 해상도에 대응하는 신경망의 파라미터에 관한 데이터를 디코딩함으로써, 상기 제1 해상도에 대응하는 신경망의 잔차 값을 획득하는 단계; 및
상기 획득된 잔차 값을 상기 사전 학습된 신경망의 파라미터에 더함으로써, 상기 제1 해상도에 대응하는 신경망의 파라미터를 복원하는 단계
를 포함하는,
클라이언트의 동작 방법.
According to claim 9,
Restoring the neural network corresponding to the first resolution
obtaining a residual value of the neural network corresponding to the first resolution by decoding data about parameters of the neural network corresponding to the first resolution obtained from the server; and
restoring a parameter of the neural network corresponding to the first resolution by adding the obtained residual value to the parameter of the pretrained neural network;
including,
How the client behaves.
제9항에 있어서,
상기 제1 해상도는
사용자로부터 수신된 선택 입력 및 상기 비디오 스트림이 수신되는 네트워크의 통신 환경 중 적어도 하나에 기초하여 결정된 상기 제2 해상도보다 낮은 해상도를 포함하는,
클라이언트의 동작 방법.
According to claim 9,
The first resolution is
Including a resolution lower than the second resolution determined based on at least one of a selection input received from a user and a communication environment of a network in which the video stream is received.
How the client behaves.
제9항에 있어서,
상기 제1 해상도에 대응하는 신경망의 파라미터는
상기 서버에서, 미리 정해진 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 상기 복수의 해상도들 중 상기 제1 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망 또는 상기 사전 학습된 신경망의 파라미터를 갱신함으로써 획득되는,
클라이언트의 동작 방법.
According to claim 9,
The parameter of the neural network corresponding to the first resolution is
In the server, based on a segment of a first resolution among a plurality of predetermined resolutions, a pre-learned neural network or a parameter of the pre-trained neural network based on a segment of a resolution higher than the first resolution among the plurality of resolutions Obtained by updating
How the client behaves.
제9항에 있어서,
상기 변환된 제2 해상도의 세그먼트의 프레임들을 재생하는 단계
를 더 포함하는,
클라이언트의 동작 방법.
According to claim 9,
Reproducing frames of the converted second resolution segment
Including more,
How the client behaves.
하드웨어와 결합되어 제1항 내지 제13항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
A computer program stored in a medium to execute the method of any one of claims 1 to 13 in combination with hardware.
라이브 스트리밍(live streaming)을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하고,
상기 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 상기 해당 해상도의 세그먼트에 기초하여 갱신하고,
상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하며,
상기 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 상기 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는,
적어도 하나의 프로세서
를 포함하는,
서버.
Dividing a video stream for live streaming into segments of a predetermined length corresponding to each of a plurality of resolutions;
Corresponding to each of the plurality of resolutions, updating a parameter of a neural network pre-learned based on a segment having a higher resolution than the corresponding resolution based on the segment having the corresponding resolution;
Compressing data on parameters of a neural network corresponding to each of the plurality of resolutions;
Transmitting data and segments related to parameters of a compressed neural network corresponding to at least one of the plurality of resolutions to a client requesting live streaming of the video stream;
at least one processor
including,
server.
제15항에 있어서,
상기 프로세서는,
상기 해당 해상도의 세그먼트에 기초하여 갱신함에 있어서,
상기 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 사전 학습된 신경망의 파라미터를 갱신함으로써, 상기 제1 해상도에 대응하는 신경망을 획득하고,
상기 복수의 해상도들 중 제2 해상도의 세그먼트에 기초하여, 상기 제1 해상도에 대응하는 신경망의 파라미터를 갱신함으로써, 상기 제2 해상도에 대응하는 신경망을 획득하며,
상기 제1 해상도는 상기 제2 해상도보다 높은 해상도를 포함하는,
서버.
According to claim 15,
the processor,
In updating based on the segment of the corresponding resolution,
Obtaining a neural network corresponding to the first resolution by updating a parameter of a pretrained neural network based on a segment of a first resolution among the plurality of resolutions;
Obtaining a neural network corresponding to the second resolution by updating a parameter of the neural network corresponding to the first resolution based on a segment of a second resolution among the plurality of resolutions;
The first resolution includes a higher resolution than the second resolution,
server.
제15항에 있어서,
상기 프로세서는,
상기 복수의 해상도들 각각에 대응하는 세그먼트의 보간 및 역 픽셀 셔플(inverse pixel shuffle) 중 적어도 하나에 기초하여, 상기 복수의 해상도들 각각에 대응하는 세그먼트를 다운 샘플링(down sampling)하는,
서버.
According to claim 15,
the processor,
Down sampling a segment corresponding to each of the plurality of resolutions based on at least one of interpolation and inverse pixel shuffle of the segment corresponding to each of the plurality of resolutions,
server.
제15항에 있어서,
상기 프로세서는,
상기 압축하여 저장함에 있어서,
상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값을 양자화하고,
상기 복수의 해상도들 각각에 대응하는 상기 양자화된 값의 인코딩 데이터를 저장하는,
서버.
According to claim 15,
the processor,
In the compression and storage,
Quantizing a difference between a parameter of a neural network corresponding to each of the plurality of resolutions and a parameter of a pretrained neural network,
Storing encoding data of the quantized value corresponding to each of the plurality of resolutions,
server.
제15항에 있어서,
상기 프로세서는,
상기 해당 해상도의 세그먼트에 기초하여 갱신함에 있어서,
상기 해당 해상도의 세그먼트에 포함된 프레임들에 기초하여 학습 이터레이션(iteration)을 반복적으로 수행함으로써, 상기 해당 해상도보다 높은 해상도에 대응하는 제1 신경망의 파라미터를 갱신하고,
상기 학습 이터레이션의 반복의 종료에 기초하여, 상기 갱신된 제1 신경망의 파라미터를 포함하는 상기 해당 해상도에 대응하는 제2 신경망을 획득하며,
상기 학습 이터레이션은
상기 해당 해상도에 대응하는 세그먼트의 프레임을 상기 제1 신경망에 인가하여 획득된 출력 프레임과 정답 데이터의 차이에 관한 손실 함수에 기초하여 획득된 그래디언트(gradient)를 상기 제1 신경망에 역전파(back-propagation)하는 단계
를 포함하는,
서버.
According to claim 15,
the processor,
In updating based on the segment of the corresponding resolution,
Updating a parameter of a first neural network corresponding to a resolution higher than the corresponding resolution by repeatedly performing learning iterations based on frames included in the segment of the corresponding resolution;
Obtaining a second neural network corresponding to the corresponding resolution including the updated parameters of the first neural network based on the end of the iteration of the learning iteration;
The learning iteration is
A gradient obtained based on a loss function for a difference between an output frame obtained by applying a frame of a segment corresponding to the corresponding resolution to the first neural network and the correct answer data is back-propagated to the first neural network. stage of propagation
including,
server.
라이브 스트리밍을 위한 서버로부터, 선택된 제1 해상도에 대응하는 비디오 스트림의 플레이리스트를 수신하고,
상기 플레이리스트에 기초하여, 상기 서버로부터 상기 비디오 스트림에 대응하는 상기 제1 해상도의 세그먼트 및 상기 제1 해상도에 대응하는 신경망에 관한 데이터를 수신하고,
상기 제1 해상도에 대응하는 신경망에 관한 데이터 및 미리 로드된 사전 학습된 신경망의 파라미터에 기초하여, 상기 제1 해상도에 대응하는 신경망을 복원하며,
상기 복원된 제1 해상도에 대응하는 신경망에 기초하여, 상기 제1 해상도의 세그먼트를 제2 해상도의 세그먼트로 변환하는,
적어도 하나의 프로세서
를 포함하는,
클라이언트의 단말.

Receiving a playlist of video streams corresponding to a selected first resolution from a server for live streaming;
Based on the playlist, receiving data about a segment of the first resolution corresponding to the video stream and a neural network corresponding to the first resolution from the server;
Restoring a neural network corresponding to the first resolution based on data related to the neural network corresponding to the first resolution and parameters of a pre-loaded pretrained neural network;
Converting segments of the first resolution into segments of a second resolution based on a neural network corresponding to the reconstructed first resolution;
at least one processor
including,
client terminal.

KR1020210178403A 2021-12-14 2021-12-14 Method and apparatus for live streaming KR102634627B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210178403A KR102634627B1 (en) 2021-12-14 2021-12-14 Method and apparatus for live streaming
PCT/KR2022/020376 WO2023113473A1 (en) 2021-12-14 2022-12-14 Live streaming method and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210178403A KR102634627B1 (en) 2021-12-14 2021-12-14 Method and apparatus for live streaming

Publications (2)

Publication Number Publication Date
KR20230089753A true KR20230089753A (en) 2023-06-21
KR102634627B1 KR102634627B1 (en) 2024-02-08

Family

ID=86773053

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210178403A KR102634627B1 (en) 2021-12-14 2021-12-14 Method and apparatus for live streaming

Country Status (2)

Country Link
KR (1) KR102634627B1 (en)
WO (1) WO2023113473A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018216207A1 (en) * 2017-05-26 2018-11-29 楽天株式会社 Image processing device, image processing method, and image processing program
KR20200037015A (en) * 2018-09-28 2020-04-08 한국과학기술원 Method and apparatus for transmitting adaptive video in real time using content-aware neural network
KR20210059600A (en) * 2019-11-15 2021-05-25 한국과학기술원 Method And System for Live Video Ingest
KR102313136B1 (en) * 2020-07-17 2021-10-15 한국과학기술원 Method and Apparatus for Accelerating Super-Resolution in Real-time Video Streaming

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102082815B1 (en) * 2018-04-24 2020-02-28 주식회사 지디에프랩 Artificial intelligence based resolution improvement system
KR20200115239A (en) * 2019-03-26 2020-10-07 (주)인시그널 Apparatus and method for compressing trained deep neural networks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018216207A1 (en) * 2017-05-26 2018-11-29 楽天株式会社 Image processing device, image processing method, and image processing program
KR20200037015A (en) * 2018-09-28 2020-04-08 한국과학기술원 Method and apparatus for transmitting adaptive video in real time using content-aware neural network
KR20210059600A (en) * 2019-11-15 2021-05-25 한국과학기술원 Method And System for Live Video Ingest
KR102313136B1 (en) * 2020-07-17 2021-10-15 한국과학기술원 Method and Apparatus for Accelerating Super-Resolution in Real-time Video Streaming

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Tang Siliang, et al., "Orientation-aware Deep Neural Network for Real Image Super-Resolution", IEEE Xplore, 09 April 2020.* *

Also Published As

Publication number Publication date
WO2023113473A1 (en) 2023-06-22
KR102634627B1 (en) 2024-02-08

Similar Documents

Publication Publication Date Title
Yeo et al. Neural adaptive content-aware internet video delivery
US20220239925A1 (en) Method and apparatus for applying deep learning techniques in video coding, restoration and video quality analysis (vqa)
US11849128B2 (en) Dynamic control for a machine learning autoencoder
US10666962B2 (en) Training end-to-end video processes
US10812831B2 (en) Video stream delivery via adaptive quality enhancement using error correction models
US20200145692A1 (en) Video processing method and apparatus
KR102525577B1 (en) Method and apparatus for streaming data
CN109451308B (en) Video compression processing method and device, electronic equipment and storage medium
JP5487455B2 (en) Transcoding method and system with low image complexity with near-optimal quality
CN111970513A (en) Image processing method and device, electronic equipment and storage medium
KR20200044652A (en) Method and apparatus for assessing subjective quality of a video
KR20210050186A (en) Apparatus and method for performing artificial intelligence encoding and artificial intelligence decoding of image
US20220366538A1 (en) Video processing method and apparatus
Ayzik et al. Deep image compression using decoder side information
US10972749B2 (en) Systems and methods for reconstructing frames
KR20210018668A (en) Downsampling image processing system and mehod using deep learning neural network and image streaming server system
US11893007B2 (en) Embedding codebooks for resource optimization
KR20200050284A (en) Encoding apparatus and method of image using quantization table adaptive to image
Luo et al. Masked360: Enabling robust 360-degree video streaming with ultra low bandwidth consumption
Bai et al. Deep lossy plus residual coding for lossless and near-lossless image compression
KR20200037015A (en) Method and apparatus for transmitting adaptive video in real time using content-aware neural network
CN113630576A (en) Adaptive video streaming system and method
KR102312338B1 (en) AI encoding apparatus and operating method for the same, and AI decoding apparatus and operating method for the same
KR102634627B1 (en) Method and apparatus for live streaming
US20210377550A1 (en) Methods, apparatuses, computer programs and computer-readable media for processing configuration data

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right