WO2023113473A1 - 라이브 스트리밍 방법 및 장치 - Google Patents

라이브 스트리밍 방법 및 장치 Download PDF

Info

Publication number
WO2023113473A1
WO2023113473A1 PCT/KR2022/020376 KR2022020376W WO2023113473A1 WO 2023113473 A1 WO2023113473 A1 WO 2023113473A1 KR 2022020376 W KR2022020376 W KR 2022020376W WO 2023113473 A1 WO2023113473 A1 WO 2023113473A1
Authority
WO
WIPO (PCT)
Prior art keywords
resolution
neural network
segment
resolutions
parameter
Prior art date
Application number
PCT/KR2022/020376
Other languages
English (en)
French (fr)
Inventor
김영휘
차승훈
김범기
한성규
정승화
Original Assignee
주식회사 카이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 카이 filed Critical 주식회사 카이
Publication of WO2023113473A1 publication Critical patent/WO2023113473A1/ko

Links

Images

Classifications

    • 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/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • 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

Definitions

  • the following embodiments relate to a live streaming method and apparatus, and specifically to a server and a client of a live streaming service.
  • 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 repetition of the learning iteration may be performed during the duration of the segment of the corresponding resolution.
  • a method of operating a client 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.
  • 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.
  • the operating method of the client may further include reproducing frames of the converted second resolution segment.
  • 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.
  • 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.
  • 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.
  • 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.
  • the processor 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).
  • 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.
  • 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.
  • FIG. 1 is a diagram showing an overview of a live streaming system according to an embodiment.
  • FIG. 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.
  • FIG. 4 is a diagram for explaining improvement in learning accuracy due to a structure of a neural network according to an exemplary embodiment.
  • FIG. 5 is a diagram illustrating a timeline of operations performed on the server side for live streaming according to an embodiment.
  • FIG. 6 is a diagram illustrating a specific algorithm of a real-time learning operation according to an embodiment.
  • FIG. 7 is a diagram for explaining compression performance of parameters of a neural network according to an exemplary embodiment.
  • FIG. 8 is a flowchart of a method of operating a server according to an embodiment.
  • FIG. 9 is a diagram illustrating a timeline of operations performed on a client side for live streaming according to an embodiment.
  • FIG. 10 is a flowchart of a method of operating a client according to an embodiment.
  • 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.
  • a first element may be termed a second element, and similarly, a second element may be termed a first element.
  • FIG. 1 is a diagram showing an overview of a live streaming system according to an embodiment.
  • the system 100 may follow an adaptive bitrate (ABR) streaming pipeline based on HTTP Live Streaming (HLS).
  • ABR adaptive bitrate
  • HLS HTTP Live Streaming
  • 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.
  • the parameter 112 of the learned neural network 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • FIG. 2 is a diagram illustrating a pipeline of a live streaming system according to an embodiment.
  • the client 202 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 .
  • 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.
  • 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) ( ) 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.
  • the video frame(s) 243 of the low resolution are the parameters of the reconstructed neural network ( ), 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 to 3D are diagrams illustrating the structure of a neural network according to an embodiment.
  • a neural network 300 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.
  • frames of low resolution e.g., 240p, 360p, 480p, 720p
  • high-resolution e.g. 1080p
  • 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,
  • 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.
  • the down sampler 310 may include a layer 311 performing inverse pixel shuffling and at least one convolution layer 312 .
  • the neural network 300 may include at least one (eg, four) residual blocks 320 .
  • 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.
  • ReLU activation layer
  • the neural network 300 may include an up-sampler 330.
  • the up-sampler 330 performs at least one convolution layer 331 and pixel shuffle. It may include a layer 332 to perform.
  • the neural network 300 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.
  • the neural network 300 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.
  • the structure of the neural network 300 including the down sampler 310 and the long skip connection 340 can improve learning accuracy within the same iteration and calculation complexity.
  • the PSNR Peak Signal-to-noise ratio
  • 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.
  • FIG. 5 is a diagram illustrating a timeline of operations performed on the server side for live streaming according to an embodiment.
  • 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.
  • 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.
  • 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.
  • 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.
  • a real-time learning operation 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 will be described in detail below.
  • 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.
  • 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.
  • the server can use computing resources for the increased number of iterations and reduce the size of the updated neural network.
  • 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).
  • a multi-scale learning method for learning a neural network corresponding to each resolution 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.
  • 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.
  • N r t is a parameter of the neural network updated based on the low-resolution th video segment.
  • 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.
  • Huffman-Encoding generally used for lossless data compression based on an occurrence probability may be applied to the quantized R r t .
  • the parameters of the encoded neural network ( ) 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.
  • the server may transmit video segments and compressed neural network parameters to the client.
  • the bit rate for video transmission may be sacrificed as much as the bit rate for transmitting parameters of the neural network.
  • 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.
  • 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.
  • 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.
  • 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.
  • FIG. 8 is a flowchart of a method of operating a server according to an embodiment.
  • a method of operating a server 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.
  • a method of operating a server 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 .
  • 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).
  • a method of operating a server 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.
  • Step 820 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.
  • learning can be efficiently performed by updating only some parameters instead of updating all parameters of the neural network.
  • Step 820 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.
  • the first resolution may correspond to the highest resolution among a plurality of resolutions.
  • 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.
  • Updating parameters of the first neural network may include loading frames included in a segment of a corresponding resolution and repeating training iterations based on the loaded frames.
  • 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
  • the repetition of learning iterations according to an embodiment may be performed during the duration of a segment of a corresponding resolution.
  • 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.
  • 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 .
  • the compressing and storing step 830 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.
  • FIG. 9 is a diagram illustrating a timeline of operations performed on a client side for live streaming according to an embodiment.
  • the neural network data may include data about parameters of the neural network or data about compressed parameters of the neural network.
  • 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.
  • data about the neural network corresponding to the selected resolution may be downloaded and decoded.
  • the parameters of the reconstructed CNN 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. .
  • FIG. 10 is a flowchart of a method of operating a client according to an embodiment.
  • a method of operating a client 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 .
  • 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.
  • 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 ). ) may correspond to an operation of restoring.
  • 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.
  • 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.
  • the processor 1101 may perform at least one operation of the server or client described above through FIGS. 1 to 10 .
  • 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.
  • 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 .
  • the embodiments described above may be implemented as hardware components, software components, and/or a combination of hardware components and software components.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.

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

라이브 스트리밍 방법 및 장치가 개시된다. 일 실시 예에 따른 서버의 동작 방법은 라이브 스트리밍을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하는 단계, 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 해당 해상도의 세그먼트에 기초하여 갱신하는 단계, 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하여 저장하는 단계 및 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는 단계를 포함할 수 있다.

Description

라이브 스트리밍 방법 및 장치
아래 실시예들은 라이브 스트리밍 방법 및 장치에 관한 것으로, 구체적으로는 라이브 스트리밍 서비스의 서버 및 클라이언트에 관한 것이다.
최근 영상 콘텐츠에 대한 수요가 증가하면서, 동영상 스트리밍 환경에서 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 모델을 기반으로 하는 비디오 스트리밍 시스템이다.
아래 실시 예들을 통해 클라이언트에 라이브 스트리밍을 위한 신경망의 파라미터 전송 시 비효율적으로 많은 네트워크 대역폭을 사용하지 않고 실시간으로 저해상도의 영상 및 이를 고해상도의 영상으로 초해상화하기 위한 신경망의 파라미터를 전송하는 기술을 제공할 수 있다.
다만, 기술적 과제는 상술한 기술적 과제들로 한정되는 것은 아니며, 또 다른 기술적 과제들이 존재할 수 있다.
일 실시 예에 따른 서버의 동작 방법은 라이브 스트리밍(live streaming)을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하는 단계; 상기 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계; 상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하여 저장하는 단계; 및 상기 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 상기 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는 단계를 포함한다.
상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계는 상기 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 사전 학습된 신경망의 파라미터를 갱신함으로써, 상기 제1 해상도에 대응하는 신경망을 획득하는 단계; 및 상기 복수의 해상도들 중 제2 해상도의 세그먼트에 기초하여, 상기 제1 해상도에 대응하는 신경망의 파라미터를 갱신함으로써, 상기 제2 해상도에 대응하는 신경망을 획득하는 단계를 포함할 수 있으며, 상기 제1 해상도는 상기 제2 해상도보다 높은 해상도를 포함할 수 있다.
상기 서버의 동작 방법은 상기 복수의 해상도들 각각에 대응하는 세그먼트의 보간 및 역 픽셀 셔플(inverse pixel shuffle) 중 적어도 하나에 기초하여, 상기 복수의 해상도들 각각에 대응하는 세그먼트를 다운 샘플링(down sampling)하는 단계를 더 포함할 수 있다.
상기 압축하여 저장하는 단계는 상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값을 양자화하는 단계; 및 상기 복수의 해상도들 각각에 대응하는 상기 양자화된 값의 인코딩 데이터를 저장하는 단계를 포함할 수 있다.
상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계는 상기 해당 해상도의 세그먼트에 포함된 프레임들에 기초하여 학습 이터레이션(iteration)을 반복적으로 수행함으로써, 상기 해당 해상도보다 높은 해상도에 대응하는 제1 신경망의 파라미터를 갱신하는 단계; 및 상기 학습 이터레이션의 반복의 종료에 기초하여, 상기 갱신된 제1 신경망의 파라미터를 포함하는 상기 해당 해상도에 대응하는 제2 신경망을 획득하는 단계를 포함할 수 있고, 상기 학습 이터레이션은 상기 해당 해상도에 대응하는 세그먼트의 프레임을 상기 제1 신경망에 인가하여 획득된 출력 프레임과 정답 데이터의 차이에 관한 손실 함수에 기초하여 획득된 그래디언트(gradient)를 상기 제1 신경망에 역전파(back-propagation)하는 단계를 포함할 수 있다.
상기 제1 신경망의 파라미터를 갱신하는 단계는 상기 해당 해상도의 세그먼트에 포함된 프레임들을 로드하는 단계; 및 상기 로드된 프레임들에 기초하여, 상기 학습 이터레이션을 반복하는 단계를 포함할 수 있다.
상기 학습 이터레이션의 반복은 상기 해당 해상도의 세그먼트의 지속 시간(duration) 동안 수행될 수 있다.
상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계는 상기 신경망의 잔차 블록(residual block)에 포함된 가중치가 아닌 상기 신경망의 파라미터의 값을 고정하는 단계; 및 상기 신경망의 상기 잔차 블록에 포함된 가중치를 갱신하는 단계를 포함할 수 있다.
일 실시 예에 따른 클라이언트의 동작 방법은 라이브 스트리밍을 위한 서버로부터, 선택된 제1 해상도에 대응하는 비디오 스트림의 플레이리스트를 수신하는 단계; 상기 플레이리스트에 기초하여, 상기 서버로부터 상기 비디오 스트림에 대응하는 상기 제1 해상도의 세그먼트 및 상기 제1 해상도에 대응하는 신경망에 관한 데이터를 수신하는 단계; 상기 제1 해상도에 대응하는 신경망에 관한 데이터 및 미리 로드된 사전 학습된 신경망의 파라미터에 기초하여, 상기 제1 해상도에 대응하는 신경망을 복원하는 단계; 및 상기 복원된 제1 해상도에 대응하는 신경망에 기초하여, 상기 제1 해상도의 세그먼트를 제2 해상도의 세그먼트로 변환하는 단계를 포함한다.
상기 제1 해상도에 대응하는 신경망을 복원하는 단계는 상기 서버로부터 획득된 상기 제1 해상도에 대응하는 신경망의 파라미터에 관한 데이터를 디코딩함으로써, 상기 제1 해상도에 대응하는 신경망의 잔차 값을 획득하는 단계; 및 상기 획득된 잔차 값을 상기 사전 학습된 신경망의 파라미터에 더함으로써, 상기 제1 해상도에 대응하는 신경망의 파라미터를 복원하는 단계를 포함할 수 있다.
상기 제1 해상도는 사용자로부터 수신된 선택 입력 및 상기 비디오 스트림이 수신되는 네트워크의 통신 환경 중 적어도 하나에 기초하여 결정된 상기 제2 해상도보다 낮은 해상도를 포함할 수 있다.
상기 제1 해상도에 대응하는 신경망의 파라미터는 상기 서버에서, 미리 정해진 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 상기 복수의 해상도들 중 상기 제1 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망 또는 상기 사전 학습된 신경망의 파라미터를 갱신함으로써 획득될 수 있다.
상기 클라이언트의 동작 방법은 상기 변환된 제2 해상도의 세그먼트의 프레임들을 재생하는 단계를 더 포함할 수 있다.
일 측에 따른 서버는 라이브 스트리밍(live streaming)을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하고, 상기 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 상기 해당 해상도의 세그먼트에 기초하여 갱신하고, 상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하며, 상기 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 상기 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는, 적어도 하나의 프로세서를 포함한다.
상기 프로세서는, 상기 해당 해상도의 세그먼트에 기초하여 갱신함에 있어서, 상기 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 사전 학습된 신경망의 파라미터를 갱신함으로써, 상기 제1 해상도에 대응하는 신경망을 획득하고, 상기 복수의 해상도들 중 제2 해상도의 세그먼트에 기초하여, 상기 제1 해상도에 대응하는 신경망의 파라미터를 갱신함으로써, 상기 제2 해상도에 대응하는 신경망을 획득할 수 있으며, 상기 제1 해상도는 상기 제2 해상도보다 높은 해상도를 포함할 수 있다.
상기 프로세서는, 상기 복수의 해상도들 각각에 대응하는 세그먼트의 보간 및 역 픽셀 셔플(inverse pixel shuffle) 중 적어도 하나에 기초하여, 상기 복수의 해상도들 각각에 대응하는 세그먼트를 다운 샘플링(down sampling)할 수 있다.
상기 프로세서는, 상기 압축하여 저장함에 있어서, 상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값을 양자화하고, 상기 복수의 해상도들 각각에 대응하는 상기 양자화된 값의 인코딩 데이터를 저장할 수 있다.
상기 프로세서는, 상기 해당 해상도의 세그먼트에 기초하여 갱신함에 있어서, 상기 해당 해상도의 세그먼트에 포함된 프레임들에 기초하여 학습 이터레이션(iteration)을 반복적으로 수행함으로써, 상기 해당 해상도보다 높은 해상도에 대응하는 제1 신경망의 파라미터를 갱신하고, 상기 학습 이터레이션의 반복의 종료에 기초하여, 상기 갱신된 제1 신경망의 파라미터를 포함하는 상기 해당 해상도에 대응하는 제2 신경망을 획득할 수 있으며, 상기 학습 이터레이션은 상기 해당 해상도에 대응하는 세그먼트의 프레임을 상기 제1 신경망에 인가하여 획득된 출력 프레임과 정답 데이터의 차이에 관한 손실 함수에 기초하여 획득된 그래디언트(gradient)를 상기 제1 신경망에 역전파(back-propagation)하는 단계를 포함할 수 있다.
일 측에 따른 클라이언트의 단말은 라이브 스트리밍을 위한 서버로부터, 선택된 제1 해상도에 대응하는 비디오 스트림의 플레이리스트를 수신하고, 상기 플레이리스트에 기초하여, 상기 서버로부터 상기 비디오 스트림에 대응하는 상기 제1 해상도의 세그먼트 및 상기 제1 해상도에 대응하는 신경망에 관한 데이터를 수신하고, 상기 제1 해상도에 대응하는 신경망에 관한 데이터 및 미리 로드된 사전 학습된 신경망의 파라미터에 기초하여, 상기 제1 해상도에 대응하는 신경망을 복원하며, 상기 복원된 제1 해상도에 대응하는 신경망에 기초하여, 상기 제1 해상도의 세그먼트를 제2 해상도의 세그먼트로 변환하는, 적어도 하나의 프로세서를 포함한다.
아래 실시 예들을 통해 라이브 스트리밍 서비스를 제공하는 서버가 실시간으로 갱신 및 압축되는 저해상도 비디오 세그먼트와 신경망의 파라미터를 전달하는 딥 러닝 기반 라이브 스트리밍 파이프라인을 제공할 수 있다.
아래 실시 예들을 통해 높은 초해상화의 정확도와 낮은 계산 복잡성을 갖는 딥 러닝 기반 라이브 스트리밍 파이프라인을 제공할 수 있다.
아래 실시 예들을 통해 실시간 성능을 달성하기 위해 적은 수의 이터레이션을 이용하는 동안 CNN의 고유한 과적합 속성을 촉진하고, ABR 기반 라이브 스트리밍을 위한 CNN에 다중 스케일의 커리큘럼 기반 학습 방식을 적용하여 학습의 정확도를 빠르게 높일 수 있다.
아래 실시 예들을 통해 사전 학습된 파라미터가 클라이언트 측 장치에 이미 저장되어 있는 경우 갱신된 파라미터의 잔차 값만 전송함으로써, 영상 비트레이트를 크게 희생시키지 않는 범위 내에서 파라미터의 양자화 범위를 크게 줄여 제한된 전송 용량 내에서 QoE를 향상시킬 수 있다.
도 1은 일 실시 예에 따른 라이브 스트리밍(live streaming) 시스템의 개요를 도시한 도면이다.
도2는 일 실시 예에 따른 라이브 스트리밍 시스템의 파이프라인을 도시한 도면이다.
도 3a 내지 도 3d는 일 실시 예에 따른 신경망의 구조를 예시한 도면들이다.
도 4는 일 실시 예에 따른 신경망의 구조로 인한 학습의 정확도 개선을 설명하기 위한 도면이다.
도 5는 일 실시 예에 따른 라이브 스트리밍을 위하여 서버 측에서 수행되는 동작의 타임라인을 도시한 도면이다.
도 6은 일 실시 예에 실시간 학습 동작의 구체적인 알고리즘을 도시한 도면이다.
도 7은 일 실시 예에 따른 신경망의 파라미터의 압축 성능을 설명하기 위한 도면이다.
도 8은 일 실시 예에 따른 서버의 동작 방법의 흐름도이다.
도 9는 일 실시 예에 따른 라이브 스트리밍을 위하여 클라이언트 측에서 수행되는 동작의 타임라인을 도시한 도면이다.
도 10은 일 실시 예에 따른 클라이언트의 동작 방법의 흐름도이다.
도 11은 일 실시 예에 따른 장치의 구성의 예시도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시 예에 따른 라이브 스트리밍(live streaming) 시스템의 개요를 도시한 도면이다.
도 1을 참조하면, 일 실시 예에 따른 라이브 스트리밍 시스템(100)은 라이브 스트리밍 서비스를 제공하는 서버(101) 및 라이브 스트리밍 서비스를 요청하는 클라이언트(102)를 포함할 수 있다. 라이브 스트리밍은 소리나 영상과 같은 멀티미디어 파일을 실시간으로 전송 및 재생하는 것으로, 예를 들어 실시간으로 촬영된 동영상(혹은 비디오)을 서버(101)에서 클라이언트(102) 측의 단말에서 재생될 수 있도록 실시간으로 전송하는 것이다. 이하에서, 스트리밍 대상은 비디오 스트림(video stream)으로 예를 들어 설명한다.
일 실시 예에 따른 시스템(100)은 HLS(HTTP Live Streaming) 기반의 ABR(adaptive bitrate) 스트리밍 파이프라인을 따를 수 있다. 서버(101)와 클라이언트(102) 사이의 네트워크 대역폭(network bandwidth)의 변동(fluctuation)에 관계없이 비디오 스트림을 클라이언트(102)에 실시간으로 일정하게 제공하기 위하여, 서버(101)는 ABR(adaptive bitrate) 알고리즘을 이용하여 비디오 스트림을 조각화한 비디오 세그먼트를 상황에 따라 다양한 값의 해상도 및 비트레이트(bitrate)로 클라이언트(102)에 전송할 수 있다.
일 실시 예에 따른 서버(101)는 클라이언트(102)에 전송된 저해상도의 비디오 세그먼트를 초해상화(super resolution)하기 위한 신경망(neural network)의 실시간 학습(real-time training)을 수행할 수 있으며, 클라이언트(102)에 저해상도의 비디오 세그먼트 파일(111)과 저해상도의 비디오 세그먼트를 초해상화하기 위한 학습된 신경망의 파라미터(parameter)(112)를 전송할 수 있다. 예를 들어, 신경망은 CNN (convolution neural network)을 포함할 수 있다. 이하에서, 일 실시 예에 따른 서버(101)에서 초해상화를 위한 신경망은 CNN인 것으로 예를 들어 설명한다.
일 실시 예에 따른 학습된 신경망의 파라미터(parameter)(112)는 신경망에 포함된 적어도 하나의 레이어의 가중치(weight) 및/또는 바이어스(bias)를 포함할 수 있으며, 학습에 의하여 값이 결정 혹은 갱신될 수 있다. 이하에서 상술하겠으나, 클라이언트(102)에 전송되는 초해상화를 위한 신경망의 파라미터(112)는 압축된 데이터에 해당할 수 있다.
일 실시 예에 따르면, 서버(101) 측에서, 신경망은 복수의 해상도들 각각에 대응하는 비디오 스트림에 기초하여 실시간으로 학습될 수 있다. 복수의 해상도들은 미리 정해진 저해상도에 해당하는 복수의 해상도들을 포함할 수 있으며, 예를 들어 240p, 360p, 480p 및 720p의 해상도들을 포함할 수 있다. 실시간 학습 과정에서 고해상도의 비디오 스트림은 정답 데이터(ground truth)로 이용될 수 있다. 고해상도의 비디오 스트림은 복수의 해상도들보다 높은 해상도로, 예를 들어 1080p의 해상도를 포함할 수 있다. 복수의 해상도들 각각에 대응하는 비디오 스트림에 기초하여 신경망이 학습된 결과, 복수의 해상도들 각각에 대응하는 신경망의 갱신된 파라미터가 획득될 수 있다. 일 예로, 학습에 의해 240p의 비디오 스트림에 기초하여 갱신된 신경망의 파라미터와 480p의 비디오 스트림에 기초하여 갱신된 신경망의 파라미터는 서로 상이할 수 있다.
일 실시 예에 따른 각 해상도에 대응하는 신경망의 파라미터(112)는 압축되어 저장될 수 있으며, 클라이언트(102)에 압축된 신경망의 파라미터(112)가 전송될 수 있다. 클라이언트(102)는 통신 환경 혹은 사용자의 입력에 기초하여 특정 해상도의 비디오 세그먼트를 요청할 수 있으며, 해당 해상도에 대응하는 비디오 세그먼트의 파일(111)과 해당 해상도에 대응하는 압축된 신경망의 파라미터(112)가 클라이언트(102)에 전송될 수 있다.
일 실시 예에 따른 클라이언트(102)는 서버(101)로부터 수신된 비디오 세그먼트 파일(111) 및 압축된 신경망의 파라미터(112)에 기초하여, 비디오를 실시간으로 렌더링(real-time rendering)할 수 있다. 비디오의 실시간 렌더링 과정에서 특정 해상도의 비디오 세그먼트 파일(111)은 압축된 신경망의 파라미터(112)에 기초하여 초해상화될 수 있으며, 초해상화에 따른 고해상도로 복원된 비디오가 클라이언트(102) 측의 단말을 통해 재생될 수 있다.
일 실시 예에 따른 라이브 스트리밍 시스템(100)에서, 고해상도의 라이브 스트리밍 서비스를 제공하기 위한 서버(101)의 구체적인 동작 방법 및 고해상도의 라이브 스트리밍을 재생하기 위한 클라이언트(102)의 구체적인 동작 방법은 이하에서 상술한다.
도2는 일 실시 예에 따른 라이브 스트리밍 시스템의 파이프라인을 도시한 도면이다.
도 2를 참조하면, 일 실시 예에 따른 시스템(200)은 도 1에 도시된 시스템(100)에 대응될 수 있다. 예를 들어, 도 2에 도시된 서버(201) 및 클라이언트(202)는 각각 도 1에 도시된 서버(101) 및 클라이언트(102)에 대응될 수 있다.
일 실시 예에 따른 시스템(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)로 복제될 수 있다.
일 실시 예에 따른 신경망의 학습을 위해 1080p 해상도의 세그먼트에 포함된 비디오 프레임(들)은 고해상도(high resolution; HR) 프레임의 정답 데이터(ground truth)(213)로 사용되며, 1080p 미만의 나머지 해상도(들)의 세그먼트(들)에 비디오 프레임(들)은 저해상도(low resolution; LR) 프레임의 학습 데이터(212)로 사용될 수 있다. 실시간 학습 단계(220)에서는 사전 학습된 신경망(Npre)이 이용될 수 있으며, 각 해상도의 비디오 세그먼트에 기초하여 사전 학습된 신경망(Npre)의 파라미터가 갱신되어 각 해상도에 대응하는 신경망의 파라미터(221)가 획득될 수 있다. 일 예로, 사전 학습된 신경망은 임의의 SR(Super Resolution) 데이터 세트로 사전 학습된 CNN을 포함할 수 있다. 실시간이라는 조건을 충족하기 위해 사전 학습된 신경망의 파라미터는 비디오 세그먼트의 길이 혹은 지속 시간(duration) 동안 미세 조정(fine-tuning)을 통해 각 해상도에 대응하는 파라미터의 값으로 갱신될 수 있다.
일 실시 예에 따르면, 비디오 스트림의 각 해상도의 세그먼트에 대응하는 갱신된 파라미터는 압축 단계(230)에 의해 양자화 및/또는 인코딩에 의하여 압축될 수 있으며, 각 해상도에 대응하는 압축된 신경망의 파라미터에 관한 데이터(231)가 저장될 수 있다. 각 해상도에 대응하는 압축된 신경망의 파라미터에 관한 데이터(231)가 저장된 경우, 각 해상도에 대응하는 플레이리스트(playlist) 파일이 갱신(240)될 수 있다.
일 실시 예에 따른 클라이언트(202)는 플레이리스트(241)에 기초하여, 특정 해상도의 비디오 세그먼트 파일(242)과 해당 해상도에 대응하는 신경망의 파라미터에 관한 데이터(244)를 다운로드할 수 있다. 일 예로, 신경망의 파라미터에 관한 데이터(244)는 확장자가 다른 비디오 세그먼트의 파일(242)의 경로와 동일한 파일 경로를 사용하기 때문에 신경망의 파라미터에 관한 데이터(244)가 저장되는 파일의 포맷은 표준 HLS 플레이리스트의 포맷에 대응될 수 있다.
일 실시 예에 따르면, 클라이언트(202) 측에서, ABR 컨트롤러 모듈(204)이 네트워크 대역폭에 따라 적절한 해상도(r)를 선택하면, 선택된 해상도(r)의 비디오 세그먼트 파일(242)과 해당 해상도(r)에 대응하는 압축된 신경망의 파라미터에 관한 데이터(244)가 네트워크를 통해 클라이언트(202)의 단말로 다운로드될 수 있다. 일 예로, 네트워크는 CDN(Content Delevery Network)을 포함할 수 있다.
일 실시 예에 따르면, 클라이언트(202) 측에 다운로드된 세그먼트 파일(242)은 저해상도의 비디오 프레임(들)(243)로 디코딩될 수 있으며, 다운로드된 압축된 신경망의 파라미터에 관한 데이터(244)는 복원 단계(250)에 의해 해당 해상도(r)에 대응하는 신경망의 파라미터(
Figure PCTKR2022020376-appb-img-000001
)로 복원될 수 있다. 압축된 신경망의 파라미터에 관한 데이터(244)는 클라이언트(202) 측에 저장된 사전 학습된 신경망의 파라미터(Npre)에 기초하여 복원될 수 있다.
일 실시 예에 따르면, 초해상화 단계(260)에서, 저해상도의 비디오 프레임(들)(243)은 복원된 신경망의 파라미터(
Figure PCTKR2022020376-appb-img-000002
)에 기초하여, 고해상도의 비디오 프레임(들)(261)로 변환될 수 있으며, 변환된 고해상도의 비디오 프레임(들)(261)은 렌더링을 통해 클라이언트(202)의 단말에서 재생될 수 있다.
도 3a 내지 도 3d는 일 실시 예에 따른 신경망의 구조를 예시한 도면들이다.
도 3a를 참조하면, 일 실시 예에 따른 신경망(300)은 다운 샘플러(down sampler)(310), 적어도 하나의 잔차 블록(residual blocks; ResBlocks)(320), 및 긴 스킵 커넥션(long skip connection)(340)이 있는 업 샘플러(up sampler)(330)를 포함할 수 있다.
일 실시 예에 따른 신경망(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)를 포함할 수 있다.
일 실시 예에 따른 신경망(300)은 적어도 하나(예: 4개)의 잔차 블록(320)을 포함할 수 있다. 예를 들어, 도 3c를 참조하면, 잔차 블록(320)은 적어도 하나의 컨볼루션 레이어(321, 323) 및 활성화 레이어(예: ReLU)(322)를 포함할 수 있으며, 잔차 블록의 출력 값에 잔차 블록의 입력 값이 더해지도록 구현될 수 있다.
일 실시 예에 따른 신경망(300)은 업 샘플러(330)를 포함할 수 있으며, 예를 들어, 도 3d를 참조하면, 업 샘플러(330)는 적어도 하나의 컨볼루션 레이어(331) 및 픽셀 셔플을 수행하는 레이어(332)를 포함할 수 있다.
일 실시 예에 따른 신경망(300)은 프레임의 고해상도에 대응하는 피처를 보존하기 위해 업 샘플러(330)의 출력과 신경망의 입력인 고해상도의 도메인으로 보간된 프레임(301) 사이의 긴 스킵 커넥션(long skip connection)(340)을 포함할 수 있다. 업 샘플러(330)의 출력 및 고해상도의 도메인으로 보간된 프레임(301)에 기초하여 획득된 초해상화 프레임(302)은 저해상도의 프레임으로부터 추정된 고해상도의 프레임에 해당할 수 있다.
일 실시 예에 따른 신경망(300)은 신경망의 출력인 초해상화 프레임(302)과 정답 데이터인 고해상도의 프레임(330)의 차이에 관한 손실 함수(350)에 기초하여 학습될 수 있다.
일 실시 예에 따른 다운 샘플러(310)와 긴 스킵 커넥션(340)을 포함하는 신경망(300)의 구조는 동일한 반복 및 계산 복잡도 내에서 학습의 정확도를 개선할 수 있다. 일 예로, 도 4에 도시된 표의 4행과 1행 내지 3행을 비교하면, 다운 샘플러와 긴 스킵 커넥션을 포함하는 신경망의 PSNR(Peak Signal-to-noise ratio)이 다른 구조의 신경망에 비해 높게 나타남을 알 수 있다. PSNR은 최대 신호에서 잡음 비율로, 영상의 화질에 대한 손실 정보를 평가하는 지표로, PSNR의 크기가 클수록 화질이 높음을 지시한다.
도 5는 일 실시 예에 따른 라이브 스트리밍을 위하여 서버 측에서 수행되는 동작의 타임라인을 도시한 도면이다.
도 5에서, S0, S1, S2 및 S3는 시간 순서에 따른 세그먼트를 의미하며, S0, S1, S2 또는 S3가 기재된 블록들은 각 세그먼트에 대응하는 동작을 의미한다. 블록의 가로 길이는 해당 세그먼트에 대응하여 해당 동작이 수행되는 시간을 의미한다.
도 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)에 해당할 수 있다.
일 예로, 동일한 세그먼트에 대하여 수행되는 HLS 인코딩 동작, 데이터 준비 동작, 실시간 학습 동작, 및 신경망 압축 동작을 포함하는 서버의 동작들은 순차적으로 수행될 수 있다. 도 5는 각 세그먼트에 대한 일련의 동작들이 세그먼트의 시간 순서에 따라 순차적으로 수행되는 것으로 도시하고 있으나, 일 실시 예에 따르면 일부 세그먼트들에 대한 일련의 동작들은 병렬적으로 수행될 수 있다.
일 실시 예에 따르면, 데이터 준비 동작은 수신된 비디오 스트림을 미리 정해진 길이의 세그먼트로 분리하고, 각 세그먼트를 복수의 해상도들에 대응되는 세그먼트들(예: 도 2의 세그먼트들(211))로 생성하는 동작을 포함할 수 있다.
일 실시 예에 따르면, 데이터 준비 동작은 복수의 해상도들에 대응되는 세그먼트들 각각을 보간하여 저해상도의 세그먼트 데이터 세트를 준비하는 동작을 포함할 수 있다. 일 예로, 복수의 해상도들에 대응되는 세그먼트들 각각에 대하여, 고해상도 영상(1080p) 대비 저해상도(240p 360p, 480p, 720p)의 비율에 따라 바이큐빅(bicubic) 다운 샘플링(bicubic downsampling)을 수행함으로써, 각 저해상도에 대응하는 세그먼트를 보간할 수 있다. 저해상도의 세그먼트 데이터 세트는 복수의 해상도들 각각에 대응하는 보간된 비디오 세그먼트의 프레임(들)을 포함할 수 있다.
일 실시 예에 따른 실시간 학습 동작은 사전 학습된 신경망을 미세 조정하는 동작을 포함할 수 있다. 일 예로, DIV2K 데이터 세트는 일반적인 고해상도 자연 이미지 사전(prior)의 암시적 표현(implicit representation)을 학습하는 데 사용될 수 있으며, 사전 학습된 신경망은 DIV2K 데이터 세트에 포함된 고해상도 자연 이미지 사전(prior)의 암시적 표현(implicit representation)을 학습함으로써 획득된 파라미터를 포함할 수 있다.
일 실시 예에 따르면, 실시간 학습 동작은 저해상도의 세그먼트 데이터 세트를 전처리하는 동작을 포함할 수 있다. 일 예로, 저해상도의 세그먼트 데이터 세트는 신경망에 인가되기 위하여 인코딩될 수 있으며, 인코딩 과정에서 세그먼트에 포함된 프레임 내 압축(intra-frame compression)으로 인한 블로킹 아티팩트(blocking artifacts)를 제거하기 위해, [10, 50] 범위에서 샘플링된 임의의 압축 계수(compression factor)(혹은 Q 레벨)에 기초하여, 각 저해상도의 프레임에 압축이 적용될 수 있다. 저해상도의 프레임에 적용되는 압축 방법은 예를 들어, JPEG2000 압축 방법을 포함할 수 있다. 압축된 저해상도의 프레임을 학습을 위한 데이터 세트로 사용하는 것은 신경망 학습의 정확도를 빠르게 높이는 데 기여할 수 있다.
일 실시 예에 따른 실시간 학습 동작은 다중 스케일 학습 방법에 따른 동작(들)을 포함할 수 있다. 사전 학습된 신경망의 다중 스케일 학습(multi-scale training) 방법에 기초하여, 다른 해상도에 대응하는 이미지는 신경망의 동일한 배치(batch)에 할당될 수 있다. 일 실시 예에 따른 다중 스케일 학습 방법에 관하여는 이하에서 상술한다.
일 실시 예에 따르면, CNN의 고유한 과적합(over-fitting) 속성을 촉진하기 위해, 패치 생성을 위한 이미지 크로핑(cropping), 배치 정규화(batch normalization) 및 이미지 증대(image augmentation)와 같은 데이터의 일반화와 관련된 프로세스는 실시간 학습 동작에서 생략될 수 있다. 데이터의 일반화와 관련된 프로세스는 데이터 처리를 위한 추가 시간을 요구하므로, 학습 시간이 제한된 실시간 학습 환경에서 데이터를 그대로 사용하는 경우보다 학습 이터레이션(iteration)의 반복을 위한 시간이 감소하므로, 학습의 정확도가 떨어질 수 있다. 또한, 학습 이터레이션마다 새로 처리된 학습 데이터를 GPU에 로드하는 시간이 병목 현상으로 작용할 수 있다. 이에, 다운 샘플링된 저해상도의 세그먼트에 포함된 비디오의 프레임을 GPU에 미리 로드하고, 미리 로드된 프레임을 모든 이터레이션에서 사용함으로써, 이터레이션마다 프레임을 다시 로드하기 위해 소요되는 시간을 줄이고, 학습 이터레이션의 반복 횟수를 늘림으로써, 결과적으로 학습 정확도를 높이는 데 기여할 수 있다.
일 실시 예에 따르면, 실시간 학습 동작은 제한된 학습 시간 내에서 학습의 정확도를 증가시기 위하여 모든 신경망의 파라미터를 갱신하는 대신 일부 파라미터 값만 갱신될 수 있도록 일부 파라미터 값을 고정하는 동작을 포함할 수 있다. 일 예로, 잔차 블록에 포함된 가중치만 갱신될 수 있도록 잔차 블록에 포함되지 않은 다른 레이어의 가중치 및 바이어스 값은 학습 과정에서 변경되지 않도록 고정될 수 있다. 모든 신경망의 파라미터를 갱신하지 않고, 일부 파라미터만 갱신함으로써, 서버는 컴퓨팅 리소스를 증가된 이터레이션 횟수를 위해 사용할 수 있으며, 갱신된 신경망의 크기를 줄일 수 있다.
일 실시 예에 따르면, 실시간 학습 동작은 신경망에 인가되는 프레임의 해상도에 관계없이 일관된 런타임 성능을 보장하면서 추론 품질 저하를 완화하기 위해, 학습 대상의 난이도를 점진적으로 높이는 커리큘럼 기반의 다중 스케일(multi-scale) 학습 방법을 포함할 수 있다. 다중 스케일 학습 방법은 복수의 저해상도들 중 가장 높은 해상도의 세그먼트에 기초하여 신경망을 학습시키고, 학습된 신경망을 다음으로 높은 저해상도에 대응하는 신경망의 학습에 사용하는 학습 방법에 해당할 수 있다. 다중 스케일 학습 방법은 특히 최저 해상도(예: 240p)에서 학습 정확도를 빠르게 증가시킬 수 있다. 일 실시 예에 따른 각 해상도에 대응하는 신경망의 학습에 다중 스케일 학습 방법을 이용함으로써, 서로 다른 해상도의 프레임에 대응하여 동일한 파라미터를 포함하는 신경망을 이용하는 경우 저해상도에서의 추론의 품질 저하를 개선할 수 있으며, 제한된 학습 시간을 요구하는 라이브 스트리밍에서 각 해상도에 대응하는 신경망의 학습 시간을 줄일 수 있다.
일 실시 예에 따른 실시간 학습 동작의 구체적인 알고리즘은 도 6을 참조할 수 있다. 도 6을 참조하면, 알고리즘 1은 도 6에 도시된 실시간 학습 프로세스를 기술한 것이다. 알고리즘 1의 5-6행은 학습 이터레이션 횟수를 늘리기 위하여 세그먼트에 포함된 프레임을 GPU에 미리 로드하는 동작에 해당할 수 있다. 8-21행은 커리큘럼 기반 다중 스케일 학습 동작에 해당할 수 있다. 2행에 의해 초기 이터레이션 횟수 n0은 100×d로 설정될 수 있며, 여기서 d 는 특정 비디오 세그먼트에 기초한 학습 시간으로, 해당 비디오 세그먼트의 지속 시간(초)에 해당할 수 있다. 23행을 참조하면, 파라미터 갱신 후 1회의 이터레이션이 시간 Titer의 평균 값 및 전체 이터레이션의 수행 시간에 기초하여, 각 해상도에 대응하는 이터레이션의 반복 횟수 nt를 추정할 수 있다. 15-16행을 참조하면, 실시간의 제약으로 인해, 학습 시간이 d를 초과하면 해당 세그먼트에 대응하는 파라미터 갱신을 위한 학습 프로세스가 중지될 수 있다.
일 실시 예에 따르면, 각 비디오 세그먼트에 대응하는 신경망의 파라미터는 클라이언트에 전송될 수 있다. 제한된 네트워크 대역폭 내에서 비디오 품질을 최대화기 위해, 신경망의 파라미터는 라이브 스트리밍 환경에서 압축 손실을 최소화하면서 실시간으로 압축될 수 있다. 이를 위해 일 실시 예에 따른 시스템의 서버는 신경망의 파라미터를 압축하기 위한 신경망 압축 동작을 수행할 수 있다.
일 실시 예에 따른 신경망 압축 동작은 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값을 압축하는 알고리즘을 이용하여 각 해상도에 대응하는 신경망의 파라미터를 압축하는 동작을 포함할 수 있다. 일 예로, 도 7을 참조하면, 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값(residual weight values)(이하, 잔차 값)의 분포 범위가 복수의 해상도들 각각에 대응하는 신경망의 파라미터 값(weight values of updated parameters)의 분포 범위보다 좁음을 실험적으로 관찰할 수 있다. 양자화 범위를 줄이기 위해 상대적으로 값들의 분포 범위가 좁은 신경망의 잔차 값을 양자화 대상으로 설정할 수 있다. 사전 학습된 신경망의 파라미터(Npre)는 이미 클라이언트 측에 저장되어 있으므로, 아래의 수학식 1과 같이 갱신된 신경망의 잔차 값(Rr t)만 클라이언트 측에 전송될 수 있다.
Figure PCTKR2022020376-appb-img-000003
수학식 1에서, Nr t는 저해상도 의 번째 비디오 세그먼트에 기초하여 갱신된 신경망의 파라미터이다.
일 예로, 서버는 Rr t를 압축하기 위해 아래의 수학식 2와 같이 양자화(Q) 및 인코딩(H)을 수행할 수 있다.
Figure PCTKR2022020376-appb-img-000004
일 예로, Rr t의 양자화를 위해 l 클러스터 중심들 C의 k-means 클러스터링을 사용할 수 있으며, 여기서 랜덤으로 샘플링된 10%의 신경망의 파라미터는 고속 클러스터링을 위해 사용될 수 있다. 이후 양자화된 Rr t에 발생 확률(occurrence probability) 기반의 무손실 데이터 압축에 일반적으로 사용되는 허프만 인코딩(Huffman-Encoding)이 적용될 수 있다. 마지막으로 인코딩된 신경망의 파라미터(
Figure PCTKR2022020376-appb-img-000005
)는 8비트 정수로 의 값을 저장하고 16비트 부동 소수점으로 클러스터 중심(C)을 저장하며, 클라이언트 측에서의 디코딩을 위한 C의 (l × 32) 비트 허프만 사전을 저장할 수 있다. 잔차 값을 압축하여 저장하는 방법을 통해 학습 정확도의 저하가 감소될 수 있다.
일 실시 예에 따르면, 라이브 스트리밍을 위해 서버는 비디오 세그먼트와 압축된 신경망의 파라미터를 클라이언트에 전송할 수 있다. HLS 스트리밍의 일반적인 비트레이트에 따르면, 신경망의 파라미터 전송을 위한 비트레이트만큼 비디오의 전송을 위한 비트레이트가 희생될 수 있다.
일 예로, 비디오 세그먼트의 총 비트레이트는 (240, 360, 480, 720, 1080)p 해상도의 비디오들에 따른 (400-β, 800-β, 1200-β, 2400-β, 4800-β) Kbps이며, 여기서 β는 압축된 신경망의 크기를 비디오 세그먼트의 지속 시간으로 나눈 신경망의 비트레이트에 해당할 수 있다. 최적의 β를 선택하기 위하여, 압축된 신경망의 파라미터의 크기와 압축 손실 간의 트레이드오프(tradeoff)를 고려할 수 있다. 예를 들어, 학습 이터레이션의 반복 횟수가 증가함에 따라 신경망의 압축 품질이 감소할 수 있으며, 이러한 감도(sensitivity)를 고려하여 비디오 세그먼트 지속 시간에 따라 양자화 횟수 l은 다르게 설정될 수 있다.
도 8은 일 실시 예에 따른 서버의 동작 방법의 흐름도이다.
일 실시 예에 따른 서버는 라이브 스트리밍 시스템에서 클라이언트에 라이브 스트리밍 서비스를 제공하는 서버로, 예를 들어 도 1의 서버(101) 또는 도 2의 서버(201)에 대응될 수 있다.
도 8을 참조하면, 일 실시 예에 따른 서버의 동작 방법은 라이브 스트리밍을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하는 단계(810), 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 해당 해상도의 세그먼트에 기초하여 갱신하는 단계(820), 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하여 저장하는 단계(830) 및 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는 단계(840)를 포함할 수 있다.
일 실시 예에 따른 서버의 동작 방법은 도 5를 통해 상술한 서버에서 수행되는 동작들 또는 도 2에 도시된 서버(201)에서 수행되는 동작들에 대응될 수 있다. 일 예로, 단계(810)는 도 5를 통해 상술한 데이터 준비 동작에 대응될 수 있으며, 도 2에 도시된 복수의 해상도들에 대응하는 세그먼트들(211)을 생성하는 동작을 포함할 수 있다. 일 실시 예에 따른 단계(801)는 획득된 비디오 스트림을 HLS 인코딩하는 단계를 더 포함할 수 있으며, HLS 인코딩하는 단계는 도 5를 통해 상술한 HLS 인코딩 동작 혹은 도 2를 통해 상술한 HLS 인코딩 동작(210)에 대응될 수 있다.
일 예로, 단계(820)는 도 5를 통해 상술한 실시간 학습 동작에 대응될 수 있으며, 도 2에 도시된 실시간 학습 단계(220)에 대응될 수 있다.
일 실시 예에 따른 서버의 동작 방법은 해당 해상도의 세그먼트에 기초하여 갱신하는 단계(820)에 앞서, 복수의 해상도들 각각에 대응하는 세그먼트의 보간 및 역 픽셀 셔플(inverse pixel shuffle) 중 적어도 하나에 기초하여, 복수의 해상도들 각각에 대응하는 세그먼트를 다운 샘플링(down sampling)하는 단계를 더 포함할 수 있다. 다운 샘플링하는 단계는 도 3을 통해 상술한 저해상도(예: 240p, 360p, 480p, 720p)의 세그먼트의 프레임을 고해상도(예: 1080p)의 도메인으로 보간하여 보간된 프레임(301)을 획득하고, 보간된 프레임(301)을 다운 샘플러(310)에 인가하여 역 픽셀 셔플(inverse pixel shuffle)을 수행하는 동작에 대응될 수 있다.
일 실시 예에 따른 단계(820)는 신경망의 잔차 블록(residual block)에 포함된 가중치가 아닌 신경망의 파라미터의 값을 고정하는 단계 및 신경망의 잔차 블록에 포함된 가중치를 갱신하는 단계를 포함할 수 있다. 상술한 바와 같이, 신경망의 파라미터를 갱신하는 학습 과정에서 신경망의 전체 파라미터를 갱신하는 대신 일부 파라미터만 갱신함으로써 학습을 효율적으로 수행할 수 있다.
일 실시 예에 따른 단계(820)는 상술한 다중 스케일 학습 방법에 따른 동작들을 포함할 수 있다. 일 예로, 단계(820)는 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 사전 학습된 신경망의 파라미터(예: Npre)를 갱신함으로써, 제1 해상도에 대응하는 신경망을 획득하는 단계 및 복수의 해상도들 중 제2 해상도의 세그먼트에 기초하여, 제1 해상도에 대응하는 신경망의 파라미터를 갱신함으로써, 제2 해상도에 대응하는 신경망을 획득하는 단계를 포함할 수 있다. 제1 해상도는 상기 제2 해상도보다 높은 해상도를 포함할 수 있다. 예를 들어, 제1 해상도는 복수의 해상도들 중 가장 높은 해상도에 해당할 수 있다. 제1 해상도에 대응하는 신경망의 파라미터는 사전 학습된 신경망을 제1 해상도의 세그먼트에 기초하여 학습함으로써 갱신된 파라미터 값을 포함할 수 있다. 제1 해상도보다 낮은 해상도의 제2 해상도에 대응하는 신경망의 파라미터는 제1 해상도에 대응하는 신경망의 파라미터를 제1 해상도의 세그먼트에 기초하여 학습함으로써 갱신된 파라미터 값을 포함할 수 있다. 일 실시 예에 따르면, 복수의 해상도들 중 제2 해상도 다음으로 낮은 제3 해상도가 포함된 경우, 제3 해상도의 세그먼트에 기초하여 제2 해상도에 대응하는 신경망이 학습될 수 있으며, 학습에 의해 갱신된 파라미터 값을 포함하는 제3 해상도에 대응하는 신경망의 파라미터가 획득될 수 있다. 다중 스케일 학습 방법에 따라 복수의 해상도들 각각에 대응하는 신경망의 파라미터가 획득될 수 있다.
또 일 예로, 단계(820)는 해당 해상도의 세그먼트에 포함된 프레임들에 기초하여 학습 이터레이션을 반복적으로 수행함으로써, 해당 해상도보다 높은 해상도에 대응하는 제1 신경망의 파라미터를 갱신하는 단계 및 학습 이터레이션의 반복의 종료에 기초하여, 갱신된 제1 신경망의 파라미터를 포함하는 해당 해상도에 대응하는 제2 신경망을 획득하는 단계를 포함할 수 있다. 학습 이터레이션은 해당 해상도에 대응하는 세그먼트의 프레임을 제1 신경망에 인가하여 획득된 출력 프레임과 정답 데이터의 차이에 관한 손실 함수에 기초하여 획득된 그래디언트(gradient)를 제1 신경망에 역전파(back-propagation)하는 단계를 포함할 수 있다. 신경망의 학습을 위한 손실 함수는 도 3a를 통해 상술한 바와 같이 신경망의 출력인 초해상화 프레임(302)과 정답 데이터인 고해상도의 프레임(330)의 차이에 관한 손실 함수를 포함할 수 있다.
일 실시 예에 따른 제1 신경망의 파라미터를 갱신하는 단계는 해당 해상도의 세그먼트에 포함된 프레임들을 로드하는 단계 및 로드된 프레임들에 기초하여, 학습 이터레이션을 반복하는 단계를 포함할 수 있다. 상술한 바와 같이 학습 이터레이션마다 새로 처리된 학습 데이터를 GPU에 로드하는 시간이 병목 현상으로 작용할 수 있으므로, 데이터의 일반화와 관련된 프로세스를 생략하고 미리 로드된 프레임을 모든 이터레이션에서 사용하여, 제한된 시간 내에서 데이터 처리 시간을 줄이고 학습 이터레이션의 반복 횟수를 늘릴 수 있다.
일 실시 예에 따른 학습 이터레이션의 반복은 해당 해상도의 세그먼트의 지속 시간(duration) 동안 수행될 수 있다. 다시 말해, 실시간이라는 제한 조건에 의해 특정 비디오 세그먼트에 대응하는 총 학습 시간은 해당 세그먼트의 지속 시간(예: d)로 제한될 수 있다.
일 예로, 단계(830)는 도 5를 통해 상술한 신경망 압축 동작에 대응될 수 있으며, 도 2에 도시된 압축 단계(230) 및 플레이리스트 갱신 단계(240)를 포함할 수 있다.
일 실시 예에 따른 압축하여 저장하는 단계(830)는 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값을 양자화하는 단계 및 복수의 해상도들 각각에 대응하는 양자화된 값의 인코딩 데이터를 저장하는 단계를 포함할 수 있다.
일 예로, 단계(840)는 도 2에 도시된 비디오 세그먼트 파일(242) 및 신경망의 파라미터에 관한 데이터(244)를 클라이언트(202)에 제공하는 동작에 대응될 수 있다.
도 9는 일 실시 예에 따른 라이브 스트리밍을 위하여 클라이언트 측에서 수행되는 동작의 타임라인을 도시한 도면이다.
도 9에서, S0, S1, S2 및 S3는 시간 순서에 따른 세그먼트를 의미하며, S0, S1, S2 또는 S3가 기재된 블록들은 각 세그먼트에 대응하는 동작을 의미한다. 블록의 가로 길이는 해당 세그먼트에 대응하여 해당 동작이 수행되는 시간을 의미한다.
도 9를 참조하면, 라이브 스트리밍을 위하여 클라이언트 측에서 수행되는 동작은 다운로드(download) 동작, 신경망의 디코딩(NN decoding) 동작, 초해상화(SR) 동작 및 재생(playblack) 동작을 포함할 수 있다. 일 실시 예에 따른 클라이언트에서 수행되는 동작들은 병렬적으로 수행될 수 있다.
일 실시 예에 따른 새로운 라이브 비디오 세그먼트와 해당 신경망 데이터는 Pt(t = 0, 1, 2...)에 다운로드될 수 있다. 신경망 데이터는 신경망의 파라미터에 관한 데이터 혹은 신경망의 압축된 파라미터에 관한 데이터를 포함할 수 있다. 비디오 세그먼트가 다운로드되는 매 시점 Pt(t = 0, 1, 2...) 혹은 (t-1)번째 비디오 세그먼트가 다운로드 완료된 이후 시점에, t번째의 비디오 세그먼트에 대응하는 해상도가 선택될 수 있으며, 선택된 해상도에 기초하여 비디오 스트림의 플레이리스트가 수신될 수 있다. 선택된 해상도에 대응하는 비디오 세그먼트가 다운로드되기 전에, 선택된 해상도에 대응하는 신경망에 관한 데이터가 다운로드되어 디코딩될 수 있다.
일 실시 예에 따른 신경망 디코딩 동작은 아래의 수학식 3과 같이 허프만 디코딩 및 역양자화(dequantization)를 통해 t번째 압축된 신경망을 재구성 혹은 복원(reconstruct)하는 동작을 포함할 수 있다.
Figure PCTKR2022020376-appb-img-000006
t번째 CNN이 복원되고 비디오 세그먼트가 다운로드 된 후, 복원된 CNN의 파라미터
Figure PCTKR2022020376-appb-img-000007
에 기초하여, 다운로드된 비디오 세그먼트는 초해상화될 수 있다. 복원된 CNN에서 다운로드된 비디오 세그먼트에 포함된 저해상도의 프레임들에 대응하는 고해상도의 초해상화 프레임들이 출력될 수 있으며, 초해상화 프레임들은 t번째 세그먼트의 재생을 대기하는 프레임 버퍼에 저장될 수 있다.
일 실시 예에 따른 클라이언트는 추가적인 버퍼링의 발생 없이 초해상화에 따른 고해상도의 비디오를 출력할 수 있으며, 결과적으로 QoE가 개선된 실시간 비디오 스트리밍 서비스를 제공받을 수 있다.
도 10은 일 실시 예에 따른 클라이언트의 동작 방법의 흐름도이다.
일 실시 예에 따른 클라이언트는 라이브 스트리밍 시스템에서 서버로부터 라이브 스트리밍 서비스를 제공받는 클라이언트로, 예를 들어 도 1의 클라이언트(102) 또는 도 2의 클라이언트(202)에 대응될 수 있다.
도 10을 참조하면, 일 실시 예에 따른 클라이언트의 동작 방법은 라이브 스트리밍을 위한 서버로부터, 선택된 제1 해상도에 대응하는 비디오 스트림의 플레이리스트를 수신하는 단계(1010), 플레이리스트에 기초하여, 서버로부터 비디오 스트림에 대응하는 제1 해상도의 세그먼트 및 신경망에 관한 데이터를 수신하는 단계(1020), 제1 해상도에 대응하는 신경망에 관한 데이터 및 미리 로드된 사전 학습된 신경망의 파라미터에 기초하여, 제1 해상도에 대응하는 신경망을 복원하는 단계(1030), 및 복원된 제1 해상도에 대응하는 신경망에 기초하여, 제1 해상도의 세그먼트를 제2 해상도의 세그먼트로 변환하는 단계(1040)를 포함할 수 있다. 일 예로, 제1 해상도는 사용자로부터 수신된 선택 입력 및 비디오 스트림이 수신되는 네트워크의 통신 환경 중 적어도 하나에 기초하여 결정된 제2 해상도보다 낮은 해상도를 포함할 수 있다.
일 실시 예에 따른 클라이언트의 동작 방법은 도 9를 통해 상술한 클라이언트에서 수행되는 동작들 또는 도 2에 도시된 클라이언트(202)에서 수행되는 동작들에 대응될 수 있다. 일 예로, 단계(1010) 및 단계(1020)는 도 9에 도시된 다운로드 동작에 대응될 수 있으며, 도 2에 도시된 ABR 컨트롤러 모듈(204)에서 네트워크 대역폭에 따라 적절한 해상도(r)를 선택하는 동작 및 선택된 해상도(r)의 비디오 세그먼트 파일(242)과 해당 해상도(r)에 대응하는 압축된 신경망의 파라미터에 관한 데이터(244)가 네트워크를 통해 다운로드하는 동작을 포함할 수 있다.
일 예로, 단계(1030)는 도 9에 도시된 신경망의 디코딩 동작에 대응될 수 있으며, 도 2에 도시된 복원 단계(250)에 의해 압축된 신경망의 파라미터에 관한 데이터(244)를 사전 학습된 신경망의 파라미터(Npre)에 기초하여 해상도(r)에 대응하는 신경망의 파라미터(
Figure PCTKR2022020376-appb-img-000008
)로 복원하는 동작에 대응될 수 있다. 보다 구체적으로, 단계(1030)는 서버로부터 획득된 제1 해상도에 대응하는 신경망의 파라미터에 관한 데이터를 디코딩함으로써, 제1 해상도에 대응하는 신경망의 잔차 값을 획득하는 단계 및 획득된 잔차 값을 사전 학습된 신경망의 파라미터에 더함으로써, 제1 해상도에 대응하는 신경망의 파라미터를 복원하는 단계를 포함할 수 있다. 상술한 바와 같이, 제1 해상도에 대응하는 신경망의 파라미터는 라이브 스트리밍 서비스를 제공하는 서버에서, 미리 정해진 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 복수의 해상도들 중 제1 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망 또는 사전 학습된 신경망의 파라미터를 갱신함으로써 획득될 수 있다.
일 예로, 단계(1040)는 도 9의 초해상화 동작에 대응될 수 있으며, 도 2에 도시된 초해상화 단계(260)에서, 저해상도의 비디오 프레임(들)(211)을 복원된 신경망의 파라미터(
Figure PCTKR2022020376-appb-img-000009
)에 의해 초해상화 프레임(들)(261)로 변환하는 동작에 대응될 수 있다.
일 실시 예에 따른 클라이언트의 동작 방법은 단계(1040) 이후에 변환된 제2 해상도의 세그먼트의 프레임들을 재생하는 단계를 더 포함할 수 있으며, 변환된 제2 해상도의 세그먼트의 프레임들을 재생하는 단계는 도 9를 통해 상술한 재생 동작에 대응될 수 있다.
도 11은 일 실시 예에 따른 장치의 구성의 예시도이다.
도 11을 참조하면, 장치(1100)는 프로세서(1101), 메모리(1103) 및 통신 모듈(1105)을 포함할 수 있다. 일 실시 예에 따른 장치(1100)는 도 1 내지 도 10을 통하여 전술한 라이브 스트리밍 시스템의 서버 및 클라이언트의 단말을 포함할 수 있다. 클라이언트의 단말은 미디어 파일을 재생하기 위한 장치로, 예를 들어 휴대폰, 퍼스널 컴퓨터, 태블릿 PC를 포함할 수 있다.
일 실시 예에 따른 프로세서(1101)는 도 1 내지 도 10을 통하여 전술한 서버 혹은 클라이언트의 적어도 하나의 동작을 수행할 수 있다.
일 예로, 서버의 프로세서(1101)는 라이브 스트리밍을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하는 동작, 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 해당 해상도의 세그먼트에 기초하여 갱신하는 동작, 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하여 저장하는 동작 및 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는 동작을 수행할 수 있다.
또 일 예로, 클라이언트의 단말의 프로세서(1101)는 라이브 스트리밍을 위한 서버로부터, 선택된 제1 해상도에 대응하는 비디오 스트림의 플레이리스트를 수신하는 동작, 플레이리스트에 기초하여, 서버로부터 비디오 스트림에 대응하는 제1 해상도의 세그먼트 및 신경망에 관한 데이터를 수신하는 동작, 제1 해상도에 대응하는 신경망에 관한 데이터 및 미리 로드된 사전 학습된 신경망의 파라미터에 기초하여, 제1 해상도에 대응하는 신경망을 복원하는 동작 및 복원된 제1 해상도에 대응하는 신경망에 기초하여, 제1 해상도의 세그먼트를 제2 해상도의 세그먼트로 변환하는 동작을 수행할 수 있다.
일 실시 예에 따른 메모리(1103)는 휘발성 메모리 또는 비휘발성 메모리일 수 있으며, 도 1 내지 도 10을 통하여 전술한 라이브 스트리밍 서비스에 관한 데이터를 저장할 수 있다.
일 예로, 서버의 메모리(1103)는 라이브 스트리밍 서비스를 제공하기 위한 서버의 동작 방법을 수행하는 과정에서 발생한 데이터 혹은 라이브 스트리밍 서비스를 제공하기 위한 서버의 동작 방법을 수행하기 위하여 필요한 데이터를 저장할 수 있다. 예를 들어, 메모리(1103)는 수신된 비디오 스트림의 각 해상도에 대응하는 세그먼트 파일을 저장할 수 있으며, 각 해상도에 대응하는 학습된 신경망의 파라미터를 저장할 수 있다.
또 일 예로, 클라이언트의 단말의 메모리(1103)는 라이브 스트리밍 서비스를 제공받기 위한 클라이언트의 동작 방법을 수행하는 과정에서 발생한 데이터 혹은 라이브 스트리밍 서비스를 제공받기 위한 클라이언트의 동작 방법을 수행하기 위하여 필요한 데이터를 저장할 수 있다. 예를 들어, 메모리(1103)는 사전 학습된 신경망의 파라미터를 저장할 수 있으며, 서버로부터 획득된 특정 해상도에 대응하는 세그먼트 파일 및 신경망의 압축된 파라미터를 저장할 수 있다.
일 실시 예에 따른 통신 모듈(1105)은 네트워크를 통해 장치(1100)가 다른 전자 기기 또는 다른 서버와 통신하기 위한 기능을 제공할 수 있다. 다시 말해, 장치(1100)는 통신 모듈(1105)를 통하여 외부 장치(예를 들어, 유저의 단말, 서버 또는 네트워크)에 연결되고, 데이터를 교환할 수 있다. 예를 들어, 서버는 통신 모듈(1105)를 통해 클라이언트의 단말 및 영상 촬영 장치와 데이터를 송수신할 수 있다. 또 예를 들어, 클라이언트의 단말은 통신 모듈(1105)을 서버와 데이터를 송수신할 수 있으며, 사용자로부터 입력된 데이터를 수신할 수 있다.
일 실시 예에 따르면, 메모리(1103)는 도 1 내지 도 10을 통하여 전술한 타겟팅 광고 방법이 구현된 프로그램을 저장할 수 있다. 프로세서(1101)는 메모리(1103)에 저장된 프로그램을 실행하고, 장치(1100)를 제어할 수 있다. 프로세서(1101)에 의하여 실행되는 프로그램의 코드는 메모리(1103)에 저장될 수 있다.
일 실시 예에 따른 장치(1100)는 도시되지 않은 다른 구성 요소들을 더 포함할 수 있다. 예를 들어, 장치(1100)는 통신 모듈(1105)와의 인터페이스를 위한 수단으로 입력 장치 및 출력 장치를 포함하는 입출력 인터페이스를 더 포함할 수 있다. 또 예를 들어, 장치(1100)는 트랜시버(transceiver), 각종 센서, 데이터베이스 등과 같은 다른 구성 요소들을 더 포함할 수도 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 라이브 스트리밍(live streaming)을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하는 단계;
    상기 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계;
    상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하여 저장하는 단계; 및
    상기 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 상기 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는 단계
    를 포함하는,
    서버의 동작 방법.
  2. 제1항에 있어서,
    상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계는
    상기 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 사전 학습된 신경망의 파라미터를 갱신함으로써, 상기 제1 해상도에 대응하는 신경망을 획득하는 단계; 및
    상기 복수의 해상도들 중 제2 해상도의 세그먼트에 기초하여, 상기 제1 해상도에 대응하는 신경망의 파라미터를 갱신함으로써, 상기 제2 해상도에 대응하는 신경망을 획득하는 단계
    를 포함하고,
    상기 제1 해상도는 상기 제2 해상도보다 높은 해상도를 포함하는,
    서버의 동작 방법.
  3. 제1항에 있어서,
    상기 복수의 해상도들 각각에 대응하는 세그먼트의 보간 및 역 픽셀 셔플(inverse pixel shuffle) 중 적어도 하나에 기초하여, 상기 복수의 해상도들 각각에 대응하는 세그먼트를 다운 샘플링(down sampling)하는 단계
    를 더 포함하는,
    서버의 동작 방법.
  4. 제1항에 있어서,
    상기 압축하여 저장하는 단계는
    상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값을 양자화하는 단계; 및
    상기 복수의 해상도들 각각에 대응하는 상기 양자화된 값의 인코딩 데이터를 저장하는 단계
    를 포함하는,
    서버의 동작 방법.
  5. 제1항에 있어서,
    상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계는
    상기 해당 해상도의 세그먼트에 포함된 프레임들에 기초하여 학습 이터레이션(iteration)을 반복적으로 수행함으로써, 상기 해당 해상도보다 높은 해상도에 대응하는 제1 신경망의 파라미터를 갱신하는 단계; 및
    상기 학습 이터레이션의 반복의 종료에 기초하여, 상기 갱신된 제1 신경망의 파라미터를 포함하는 상기 해당 해상도에 대응하는 제2 신경망을 획득하는 단계
    를 포함하고,
    상기 학습 이터레이션은
    상기 해당 해상도에 대응하는 세그먼트의 프레임을 상기 제1 신경망에 인가하여 획득된 출력 프레임과 정답 데이터의 차이에 관한 손실 함수에 기초하여 획득된 그래디언트(gradient)를 상기 제1 신경망에 역전파(back-propagation)하는 단계
    를 포함하는,
    서버의 동작 방법.
  6. 제5항에 있어서,
    상기 제1 신경망의 파라미터를 갱신하는 단계는
    상기 해당 해상도의 세그먼트에 포함된 프레임들을 로드하는 단계; 및
    상기 로드된 프레임들에 기초하여, 상기 학습 이터레이션을 반복하는 단계
    를 포함하는,
    서버의 동작 방법.
  7. 제5항에 있어서,
    상기 학습 이터레이션의 반복은 상기 해당 해상도의 세그먼트의 지속 시간(duration) 동안 수행되는,
    서버의 동작 방법.
  8. 제1항에 있어서,
    상기 해당 해상도의 세그먼트에 기초하여 갱신하는 단계는
    상기 신경망의 잔차 블록(residual block)에 포함된 가중치가 아닌 상기 신경망의 파라미터의 값을 고정하는 단계; 및
    상기 신경망의 상기 잔차 블록에 포함된 가중치를 갱신하는 단계
    를 포함하는,
    서버의 동작 방법.
  9. 라이브 스트리밍을 위한 서버로부터, 선택된 제1 해상도에 대응하는 비디오 스트림의 플레이리스트를 수신하는 단계;
    상기 플레이리스트에 기초하여, 상기 서버로부터 상기 비디오 스트림에 대응하는 상기 제1 해상도의 세그먼트 및 상기 제1 해상도에 대응하는 신경망에 관한 데이터를 수신하는 단계;
    상기 제1 해상도에 대응하는 신경망에 관한 데이터 및 미리 로드된 사전 학습된 신경망의 파라미터에 기초하여, 상기 제1 해상도에 대응하는 신경망을 복원하는 단계; 및
    상기 복원된 제1 해상도에 대응하는 신경망에 기초하여, 상기 제1 해상도의 세그먼트를 제2 해상도의 세그먼트로 변환하는 단계
    를 포함하는,
    클라이언트의 동작 방법.
  10. 제9항에 있어서,
    상기 제1 해상도에 대응하는 신경망을 복원하는 단계는
    상기 서버로부터 획득된 상기 제1 해상도에 대응하는 신경망의 파라미터에 관한 데이터를 디코딩함으로써, 상기 제1 해상도에 대응하는 신경망의 잔차 값을 획득하는 단계; 및
    상기 획득된 잔차 값을 상기 사전 학습된 신경망의 파라미터에 더함으로써, 상기 제1 해상도에 대응하는 신경망의 파라미터를 복원하는 단계
    를 포함하는,
    클라이언트의 동작 방법.
  11. 제9항에 있어서,
    상기 제1 해상도는
    사용자로부터 수신된 선택 입력 및 상기 비디오 스트림이 수신되는 네트워크의 통신 환경 중 적어도 하나에 기초하여 결정된 상기 제2 해상도보다 낮은 해상도를 포함하는,
    클라이언트의 동작 방법.
  12. 제9항에 있어서,
    상기 제1 해상도에 대응하는 신경망의 파라미터는
    상기 서버에서, 미리 정해진 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 상기 복수의 해상도들 중 상기 제1 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망 또는 상기 사전 학습된 신경망의 파라미터를 갱신함으로써 획득되는,
    클라이언트의 동작 방법.
  13. 제9항에 있어서,
    상기 변환된 제2 해상도의 세그먼트의 프레임들을 재생하는 단계
    를 더 포함하는,
    클라이언트의 동작 방법.
  14. 하드웨어와 결합되어 제1항 내지 제13항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
  15. 라이브 스트리밍(live streaming)을 위한 비디오 스트림을 복수의 해상도들 각각에 대응하는 미리 정해진 길이의 세그먼트로 분리하고,
    상기 복수의 해상도들 각각에 대응하여, 해당 해상도보다 높은 해상도의 세그먼트에 기초하여 기 학습된 신경망의 파라미터를 상기 해당 해상도의 세그먼트에 기초하여 갱신하고,
    상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터에 관한 데이터를 압축하며,
    상기 비디오 스트림의 라이브 스트리밍을 요청한 클라이언트에, 상기 복수의 해상도들 중 적어도 하나에 대응하는 압축된 신경망의 파라미터에 관한 데이터 및 세그먼트를 전송하는,
    적어도 하나의 프로세서
    를 포함하는,
    서버.
  16. 제15항에 있어서,
    상기 프로세서는,
    상기 해당 해상도의 세그먼트에 기초하여 갱신함에 있어서,
    상기 복수의 해상도들 중 제1 해상도의 세그먼트에 기초하여, 사전 학습된 신경망의 파라미터를 갱신함으로써, 상기 제1 해상도에 대응하는 신경망을 획득하고,
    상기 복수의 해상도들 중 제2 해상도의 세그먼트에 기초하여, 상기 제1 해상도에 대응하는 신경망의 파라미터를 갱신함으로써, 상기 제2 해상도에 대응하는 신경망을 획득하며,
    상기 제1 해상도는 상기 제2 해상도보다 높은 해상도를 포함하는,
    서버.
  17. 제15항에 있어서,
    상기 프로세서는,
    상기 복수의 해상도들 각각에 대응하는 세그먼트의 보간 및 역 픽셀 셔플(inverse pixel shuffle) 중 적어도 하나에 기초하여, 상기 복수의 해상도들 각각에 대응하는 세그먼트를 다운 샘플링(down sampling)하는,
    서버.
  18. 제15항에 있어서,
    상기 프로세서는,
    상기 압축하여 저장함에 있어서,
    상기 복수의 해상도들 각각에 대응하는 신경망의 파라미터와 사전 학습된 신경망의 파라미터의 차이 값을 양자화하고,
    상기 복수의 해상도들 각각에 대응하는 상기 양자화된 값의 인코딩 데이터를 저장하는,
    서버.
  19. 제15항에 있어서,
    상기 프로세서는,
    상기 해당 해상도의 세그먼트에 기초하여 갱신함에 있어서,
    상기 해당 해상도의 세그먼트에 포함된 프레임들에 기초하여 학습 이터레이션(iteration)을 반복적으로 수행함으로써, 상기 해당 해상도보다 높은 해상도에 대응하는 제1 신경망의 파라미터를 갱신하고,
    상기 학습 이터레이션의 반복의 종료에 기초하여, 상기 갱신된 제1 신경망의 파라미터를 포함하는 상기 해당 해상도에 대응하는 제2 신경망을 획득하며,
    상기 학습 이터레이션은
    상기 해당 해상도에 대응하는 세그먼트의 프레임을 상기 제1 신경망에 인가하여 획득된 출력 프레임과 정답 데이터의 차이에 관한 손실 함수에 기초하여 획득된 그래디언트(gradient)를 상기 제1 신경망에 역전파(back-propagation)하는 단계
    를 포함하는,
    서버.
  20. 라이브 스트리밍을 위한 서버로부터, 선택된 제1 해상도에 대응하는 비디오 스트림의 플레이리스트를 수신하고,
    상기 플레이리스트에 기초하여, 상기 서버로부터 상기 비디오 스트림에 대응하는 상기 제1 해상도의 세그먼트 및 상기 제1 해상도에 대응하는 신경망에 관한 데이터를 수신하고,
    상기 제1 해상도에 대응하는 신경망에 관한 데이터 및 미리 로드된 사전 학습된 신경망의 파라미터에 기초하여, 상기 제1 해상도에 대응하는 신경망을 복원하며,
    상기 복원된 제1 해상도에 대응하는 신경망에 기초하여, 상기 제1 해상도의 세그먼트를 제2 해상도의 세그먼트로 변환하는,
    적어도 하나의 프로세서
    를 포함하는,
    클라이언트의 단말.
PCT/KR2022/020376 2021-12-14 2022-12-14 라이브 스트리밍 방법 및 장치 WO2023113473A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2021-0178403 2021-12-14
KR1020210178403A KR102634627B1 (ko) 2021-12-14 2021-12-14 라이브 스트리밍 방법 및 장치

Publications (1)

Publication Number Publication Date
WO2023113473A1 true WO2023113473A1 (ko) 2023-06-22

Family

ID=86773053

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/020376 WO2023113473A1 (ko) 2021-12-14 2022-12-14 라이브 스트리밍 방법 및 장치

Country Status (2)

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

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018216207A1 (ja) * 2017-05-26 2018-11-29 楽天株式会社 画像処理装置、画像処理方法、および画像処理プログラム
KR20200037015A (ko) * 2018-09-28 2020-04-08 한국과학기술원 컨텐츠 인지 신경망을 이용하여 실시간으로 적응형 비디오를 전송하는 방법 및 장치
US11095925B2 (en) * 2018-04-24 2021-08-17 Gdflab Co., Ltd. Artificial intelligence based resolution improvement system
KR20210135465A (ko) * 2019-03-26 2021-11-15 (주)인시그널 훈련된 심층 신경망의 압축 장치가 구현된 컴퓨터 시스템

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102338986B1 (ko) * 2019-11-15 2021-12-14 한국과학기술원 라이브 비디오 수집 시스템 및 방법
KR102313136B1 (ko) * 2020-07-17 2021-10-15 한국과학기술원 실시간 비디오 스트리밍에서의 초해상화 가속을 위한 장치 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018216207A1 (ja) * 2017-05-26 2018-11-29 楽天株式会社 画像処理装置、画像処理方法、および画像処理プログラム
US11095925B2 (en) * 2018-04-24 2021-08-17 Gdflab Co., Ltd. Artificial intelligence based resolution improvement system
KR20200037015A (ko) * 2018-09-28 2020-04-08 한국과학기술원 컨텐츠 인지 신경망을 이용하여 실시간으로 적응형 비디오를 전송하는 방법 및 장치
KR20210135465A (ko) * 2019-03-26 2021-11-15 (주)인시그널 훈련된 심층 신경망의 압축 장치가 구현된 컴퓨터 시스템

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DU CHEN; ZEWEI HE; ANSHUN SUN; JIANGXIN YANG; YANLONG CAO; YANPENG CAO; SILIANG TANG; YANG MICHAEL YING: "Orientation-Aware Deep Neural Network for Real Image Super-Resolution", 2019 IEEE/CVF CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION WORKSHOPS (CVPRW), IEEE, 16 June 2019 (2019-06-16), pages 1944 - 1953, XP033747112, DOI: 10.1109/CVPRW.2019.00246 *

Also Published As

Publication number Publication date
KR102634627B1 (ko) 2024-02-08
KR20230089753A (ko) 2023-06-21

Similar Documents

Publication Publication Date Title
US8533166B1 (en) Methods and systems for encoding/decoding files and transmission thereof
US20070053427A1 (en) Method and device for selecting a transcoding method from a set of transcoding methods
WO2022014801A1 (ko) 실시간 비디오 스트리밍에서의 초해상화 가속을 위한 장치 및 방법
US10531082B2 (en) Predictive light-field compression
US10623731B2 (en) DC coefficient sign coding scheme
US10880573B2 (en) Dynamic motion vector referencing for video coding
CN113473126B (zh) 视频流的处理方法、装置、电子设备及计算机可读介质
WO2009031134A2 (en) Apparatus and method for representing a sequence of content as projections and for reconstructing the sequence at full or lower quality
JP2022188147A (ja) 中断可能な映像トランスコーディング
WO2020122478A2 (ko) 기계 학습 기반으로 파라미터를 학습하는 영상 처리 장치 및 동작 방법
WO2023113473A1 (ko) 라이브 스트리밍 방법 및 장치
WO2024104014A1 (zh) 视频的压缩方法、解压缩方法、装置、计算机设备和存储介质
Bai et al. Deep lossy plus residual coding for lossless and near-lossless image compression
EP1446955A2 (en) Method and device for determining at least one multimedia data encoding parameter
JP7368639B2 (ja) ビデオ符号化のための方法、装置及びコンピュータプログラム
WO2019088435A1 (ko) 로우-퀄리티 부호화 모드에 따라 영상을 부호화하는 방법 및 장치, 및 영상을 복호화하는 방법 및 장치
RU2697702C1 (ru) Способ сжатия изображения, способ восстановления изображения, устройство сжатия изображения и устройство восстановления изображения
WO2021261950A1 (ko) 뉴럴 네트워크의 압축 및 학습을 위한 방법 및 장치
KR102313651B1 (ko) 서버와 클라이언트 장치 간 비디오 스트리밍 방법
CN115867906A (zh) 使用基于会话的dash操作的基于会话的描述url定制
WO2024025386A1 (ko) 표준 정규분포 기반 양자화 기법을 이용한 딥러닝 네트워크 부호화/복호화 방법 및 장치
WO2023085819A1 (en) Method and system for adaptively streaming artificial intelligence model file
WO2024128644A1 (en) Method, and electronic device for processing a video
KR20240068012A (ko) 영상 코딩을 위한 영상 처리 방법 및 이를 수행하는 전자 장치
WO2023177272A1 (ko) 신경망 기반 특징 텐서 압축 방법 및 장치

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22907940

Country of ref document: EP

Kind code of ref document: A1