WO2023033441A1 - 프레임들 사이의 움직임 벡터를 결정하는 영상 처리 장치 및 이에 의한 방법 - Google Patents

프레임들 사이의 움직임 벡터를 결정하는 영상 처리 장치 및 이에 의한 방법 Download PDF

Info

Publication number
WO2023033441A1
WO2023033441A1 PCT/KR2022/012599 KR2022012599W WO2023033441A1 WO 2023033441 A1 WO2023033441 A1 WO 2023033441A1 KR 2022012599 W KR2022012599 W KR 2022012599W WO 2023033441 A1 WO2023033441 A1 WO 2023033441A1
Authority
WO
WIPO (PCT)
Prior art keywords
frame
sample
samples
value
maps
Prior art date
Application number
PCT/KR2022/012599
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 WO2023033441A1 publication Critical patent/WO2023033441A1/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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region

Definitions

  • the present disclosure relates to the field of video or frame processing. More specifically, the present disclosure relates to the field of processing multiple images or multiple frames based on a neural network.
  • Image processing technology is a technology that processes all types of information whose input and output are images. do.
  • Image processing technologies have been developed based on algorithms, and as artificial intelligence technology has recently developed, a significant part of image processing is performed based on artificial intelligence.
  • an artificial intelligence model there is a neural network.
  • a neural network can be trained using training data.
  • the neural network may obtain a desired processing result by processing an image with a weight value set through training.
  • neural network-based image processing is not effective in processing time-sequentially related multi-frames.
  • a technical task is to effectively process frames in consideration of temporal correlation of multi-frames.
  • one embodiment makes it a technical task to accurately determine motion vectors between frames.
  • An image processing device includes a memory for storing one or more instructions; and a processor that executes the one or more instructions stored in the memory, wherein the processor includes a first frame or a first feature map corresponding to the first frame, and a plurality of second feature maps corresponding to the second frame.
  • a plurality of difference maps are obtained, and a plurality of difference maps are pooled according to a first size and a second size to obtain a plurality of third feature maps and a plurality of fourth feature maps, and the plurality of difference maps are obtained.
  • a plurality of modified difference maps are obtained by weighted summing the third feature maps of and the plurality of fourth feature maps, and the plurality of modified difference maps corresponding to the current sample of the first frame Used to identify any one collocated sample in consideration of the size of sample values of collocated samples of the maps, and to obtain a second feature map corresponding to a deformation difference map including the identified collocated sample
  • a filter kernel may be determined as a motion vector of the current sample.
  • An image processing apparatus and method may improve processing performance of a current frame by processing the current frame based on temporal correlation between a current frame and a previous frame.
  • the image processing apparatus and method according to the exemplary embodiment may derive a motion vector having excellent robustness against noise from frames.
  • FIG. 1 is a diagram illustrating a configuration of an image processing device according to an exemplary embodiment.
  • FIG. 2 is a diagram illustrating a process of processing a current frame according to an exemplary embodiment.
  • 3 is a diagram for explaining a convolution operation.
  • FIG. 4 is a diagram for explaining the motion estimation process shown in FIG. 2 .
  • FIG. 5 is an exemplary diagram illustrating a convolution operation applied to a current frame for motion prediction.
  • FIG. 6 is an exemplary diagram illustrating a convolution operation applied to a previous frame for motion prediction.
  • FIG. 7 is an exemplary diagram illustrating prediction samples corresponding to samples within a current frame.
  • FIG. 8 is a diagram for explaining the motion compensation process shown in FIG. 2 .
  • FIG. 9 is an exemplary diagram illustrating a process of motion compensation for a previous frame using a motion prediction result.
  • FIG. 10 is an exemplary diagram illustrating a process of applying weights to prediction frames obtained as a result of motion compensation.
  • 11 is a diagram for explaining a method of increasing the number of motion vectors obtained for a downsampled frame.
  • FIG. 12 is a diagram showing the structure of a first sub-neural network included in a neural network.
  • 13 is a diagram showing the structure of the last sub-neural network included in the neural network.
  • FIG. 14 is a diagram illustrating an application example of an image processing method according to an exemplary embodiment.
  • 15 is a diagram illustrating an application example of an image processing method according to another embodiment.
  • 16 is a diagram illustrating an application example of an image processing method according to another embodiment.
  • 17 is a flowchart of a multi-frame processing method according to an embodiment.
  • FIG. 18 is a diagram illustrating a configuration of an image processing device according to another embodiment.
  • 19 is a diagram for explaining convolution processing for a first frame.
  • 20 is a diagram for explaining convolution processing for a second frame.
  • 21 is a diagram for explaining a method of obtaining a difference map between a first feature map and a second feature map.
  • 22 is a diagram for explaining a pooling process for a difference map.
  • FIG. 23 is a diagram for explaining a method of combining a third feature map, a fourth feature map, and a fifth feature map obtained through a pooling process.
  • 24 is a diagram for explaining a method of determining motion vectors from deformation difference maps.
  • 25 is a diagram illustrating samples within a frame used for a convolution operation between a first filter kernel and a second filter kernel.
  • 26 is a diagram for explaining a neural network training method for outputting weights for combining feature maps obtained through pooling processing.
  • FIG. 27 is a flowchart illustrating an image processing method according to another exemplary embodiment.
  • An image processing device includes a memory for storing one or more instructions; and a processor that executes the one or more instructions stored in the memory, wherein the processor includes a first frame or a first feature map corresponding to the first frame, and a plurality of second feature maps corresponding to the second frame.
  • a plurality of difference maps are obtained, and a plurality of difference maps are pooled according to a first size and a second size to obtain a plurality of third feature maps and a plurality of fourth feature maps, and the plurality of difference maps are obtained.
  • a plurality of modified difference maps are obtained by weighted summing the third feature maps of and the plurality of fourth feature maps, and the plurality of modified difference maps corresponding to the current sample of the first frame Used to identify any one collocated sample in consideration of the size of sample values of collocated samples of the maps, and to obtain a second feature map corresponding to a deformation difference map including the identified collocated sample
  • a filter kernel may be determined as a motion vector of the current sample.
  • a first stride used in the pooling process based on the first size may be different from a second stride used in the pooling process based on the second size.
  • the first size and the first stride may be larger than the second size and the second stride.
  • the first size and the first stride may be k (k is a natural number), and the second size and the second stride may be k/2.
  • the processor may obtain a first weight applied to the plurality of third feature maps and a second weight applied to the plurality of fourth feature maps from a neural network.
  • the processor obtains a plurality of deformation difference maps by weighting summing the plurality of third feature maps and the plurality of fourth feature maps based on first preliminary weights and second preliminary weights output from the neural network, and Determines motion vectors corresponding to samples of the first frame from transform difference maps of and motion-compensates the second frame based on the determined motion vectors, and the neural network performs motion compensation on the motion-compensated second It may be trained based on first loss information corresponding to a difference between a frame and the first frame.
  • the neural network may be trained further based on second loss information indicating how much the sum of the first preliminary weight and the second preliminary weight differs from a predetermined threshold value.
  • the neural network may be trained further based on third loss information indicating how small negative values the first preliminary weight and the second preliminary weight have.
  • the pooling process may include an average pooling process or a median pooling process.
  • the first feature map is obtained through convolution based on a first filter kernel for the first frame
  • the plurality of second feature maps are obtained through convolution based on a plurality of second filter kernels for the second frame. It can be obtained through processing.
  • a distance between samples of the first frame and the second frame subjected to a convolution operation with the first filter kernel and the plurality of second filter kernels may be greater than 1.
  • a sample corresponding to the current sample of the first frame may have a preset first value, and other samples may have a value of 0.
  • one sample has a preset second value and other samples have a value of 0, and the position of the one sample having the second value is determined by the plurality of second filter kernels. It can be different for each filter kernel.
  • Signs of the preset first value and the preset second value may be opposite to each other.
  • An image processing method includes obtaining a plurality of difference maps between a first frame or a first feature map corresponding to the first frame and a plurality of second feature maps corresponding to a second frame; obtaining a plurality of third feature maps and a plurality of fourth feature maps by pooling a plurality of difference maps according to a first size and a second size; obtaining a plurality of modified difference maps by weighted summing the plurality of third feature maps and the plurality of fourth feature maps; identifying a collocated sample in consideration of sample values of collocated samples of the plurality of modified difference maps corresponding to the current sample of the first frame; and determining a filter kernel used to obtain a second feature map corresponding to a modified difference map including the identified collocated sample as a motion vector of the current sample.
  • the expression “at least one of a, b, or c” means “a”, “b”, “c”, “a and b”, “a and c”, “b and c”, “a, b” and c”, or variations thereof.
  • components expressed as ' ⁇ unit (unit)' or 'module' are two or more components combined into one component, or one component is divided into two or more for each more subdivided function. It could be.
  • each of the components to be described below may additionally perform some or all of the functions of other components in addition to its own main function, and some of the main functions of each component may be different from other components. Of course, it may be performed exclusively by a component.
  • a 'frame' may be a still image.
  • 'frame' may include a still image constituting a moving picture (or video).
  • sample' refers to data to be processed as data allocated to a sampling position of a frame or feature map.
  • it may be a pixel value in a frame in the spatial domain.
  • a unit including at least one sample may be defined as a block.
  • a 'current sample' refers to a specific sample included in the current frame (or first frame) to be processed, or a sample included in the current frame (or first frame) to be processed. means that the sample 'collocated' refers to samples included in frames other than the current frame (or first frame) (eg, previous frame, next frame, output frame, feature map, second frame, etc.) It means the sample at the same location as the sample.
  • a 'neural network' is an example of an artificial intelligence model that mimics a cranial nerve, and is not limited to a neural network model using a specific algorithm.
  • a 'weighting value' is a value used in an operation process of each layer constituting a neural network, and may be used, for example, when an input value is applied to a predetermined operation expression.
  • a weighting value is also referred to as a weight.
  • it is used in a neural network calculation process to distinguish it from a weight derived in a weight derivation process (see 230 in FIG. 2) described later.
  • the weight value is a value set as a result of training, and can be updated through separate training data as needed.
  • FIG. 1 is a diagram illustrating a configuration of an image processing device 100 according to an exemplary embodiment.
  • the image processing device 100 includes a memory 110 and a processor 130 .
  • the image processing device 100 may be implemented as a device having an image processing function, such as a server, a TV, a camera, a mobile phone, a tablet PC, and a laptop computer.
  • an image processing function such as a server, a TV, a camera, a mobile phone, a tablet PC, and a laptop computer.
  • memory 110 and processor 130 are shown separately.
  • memory 110 and processor 130 may be implemented through one or more hardware modules (eg, chips). there is.
  • the processor 130 may be implemented as a dedicated processor for neural network-based image processing.
  • the processor 130 may be implemented through a combination of software and a general-purpose processor such as an application processor (AP), central processing unit (CPU), or graphic processing unit (GPU).
  • a dedicated processor may include a memory for implementing an embodiment of the present disclosure or a memory processing unit for using an external memory.
  • the processor 130 may be composed of a plurality of processors. In this case, it may be implemented by a combination of dedicated processors, or it may be implemented by a combination of software and a plurality of general-purpose processors such as APs, CPUs, or GPUs.
  • the processor 130 may include at least one arithmetic logic unit (ALU) for a convolution operation to be described later.
  • the ALU may include a multiplier for performing a multiplication operation between sample values and an adder for adding multiplication result values.
  • Memory 110 may store one or more instructions for processing successive frames.
  • memory 110 may store a neural network used to generate an output frame.
  • a neural network is implemented in the form of a dedicated hardware chip for artificial intelligence, or is implemented as part of an existing general-purpose processor (eg, CPU or application processor) or a graphics-only processor (eg, GPU), the neural network is implemented in memory ( 110) may not be stored.
  • the processor 130 sequentially processes consecutive frames according to instructions stored in the memory 110 to obtain consecutive output frames.
  • successive frames may represent frames constituting a video.
  • consecutive frames do not necessarily constitute one moving picture.
  • the image processing device 100 may process still images individually photographed according to a predetermined order, a random order, or an order set by a user.
  • the image processing apparatus 100 sequentially processes the first frame (X 1 ) to the n-th frame (X n ) to obtain a first output frame (Y 1 ) to an n-th output frame (Y n ) can be obtained.
  • t in X t may represent an order in which frames are processed by the image processing device 100 .
  • the image processing device 100 may obtain the first to n th output frames Y n through a pretrained neural network.
  • the neural network may be pre-trained to increase frame resolution, remove noise, expand dynamic range, or improve image quality.
  • the image processing device 100 processes the first frame (X 1 ) to the n-th frame (X n ) based on the neural network to obtain the first frame (X 1 ) to n th frames (X n ), the first output frame (Y 1 ) to the n th output frame (Y n ) having a higher resolution may be obtained.
  • loss information is calculated by comparing an output frame for training obtained as a result of processing the training frame by the neural network with an answer frame having a previously increased resolution, and the neural network is trained in a direction that minimizes the calculated loss information.
  • weight values used in layers in the neural network may be updated.
  • the image processing device 100 processes the first frame (X 1 ) to the n-th frame (X n ) based on the neural network to obtain the first frame (X 1 ) . ) to the n-th frame (X n ), the first output frame (Y 1 ) to the n-th output frame (Y n ) having less noise than noise included in the frame (X n ) may be obtained.
  • the training output frame obtained as a result of processing the training frame by the neural network is compared with the correct answer frame from which noise has been removed in advance to calculate loss information, and the neural network can be trained in a direction that minimizes the calculated loss information. there is.
  • Neural networks can be trained through supervised learning, unsupervised learning, or reinforcement learning.
  • a previous frame when processing a current frame, which is a current processing target, among consecutive frames, a previous frame may also be used.
  • the first frame X 1 when the second frame X 2 is to be processed, the first frame X 1 may also be input to the image processing device 100 .
  • the first output frame (Y 1 ) obtained as a result of processing the first frame (X 1 ) and the feature map obtained during processing of the first frame (X 1 ) are also similar to those of the second frame (X 2 ). Together, they may be input to the image processing device 100 .
  • the reason why the previous frame is input to the image processing device 100 when processing the current frame is to consider temporal correlation between successive frames.
  • an object existing in the previous frame may be occluded in the current frame.
  • Occlusion refers to a situation in which all or some of the objects existing in the previous frame are not included in the current frame.
  • an object included in a previous frame may be hidden by another object in the current frame or may not be captured by a camera when capturing the current frame.
  • An object of a previous frame that is occluded in the current frame may not be helpful in processing the current frame.
  • the image processing apparatus 100 uses the previous frame together when processing the current frame in order to consider the temporal correlation between the current frame and the previous frame, but does not use the previous frame as it is, but instead uses the previous frame.
  • the predicted frame generated from can be used for processing the current frame.
  • the image processing device 100 may determine how many samples of the prediction frame are to be used in the process of processing the current frame, and may perform gating on the prediction frame accordingly. The gating process will be described later.
  • the image processing device 100 may further include a display or may be connected to a separate display device. At least one of the continuous output frames generated by the image processing device 100 may be reproduced on a display or a display device. If necessary, at least one of the output frames may be reproduced on a display or display device after being post-processed.
  • the image processing device 100 may encode at least one of the output frames through an image compression method using frequency conversion.
  • An image compression method using frequency conversion involves generating prediction data by predicting an output frame, generating residual data corresponding to a difference between an output frame and prediction data, and converting residual data, which is a component in the spatial domain, into a component in the frequency domain. It may include a process of transforming, a process of quantizing residual data converted into frequency domain components, and a process of entropy encoding the quantized residual data.
  • Such video compression methods include frequency conversion such as MPEG-2, H.264 AVC (Advanced Video Coding), MPEG-4, HEVC (High Efficiency Video Coding), VC-1, VP8, VP9, and AV1 (AOMedia Video 1). It can be implemented through at least one of image compression methods using .
  • Encoded data or bitstream generated through encoding of the output frame is transmitted to an external device via a network, or magnetic media such as hard disks, floppy disks and magnetic tapes, optical recording media such as CD-ROMs and DVDs, and floptical disks. It may be stored in a data storage medium such as a magneto-optical medium such as a floptical disk.
  • the image processing device 100 obtains data to be input to the neural network 250 through a motion estimation process 210, a motion compensation process 220, a weight derivation process 230, and a gating process 240.
  • motion prediction 210 is a process of determining a motion vector between samples of a current frame (X t ) and samples of a previous frame (X t ⁇ 1 ).
  • a motion vector represents a relative positional relationship between the same or similar samples existing in the previous frame (X t ⁇ 1 ) and the current frame (X t ). For example, if a specific sample is located at coordinates (a, b) in the previous frame (X t-1 ) and the sample is located at coordinates (c, d) in the current frame (X t ), the corresponding sample A motion vector can be expressed as (ca, db).
  • a motion vector may be expressed as a filter kernel for convolution operation.
  • the image processing device 100 may identify predicted samples corresponding to samples of the current frame (X t ) in the previous frame (X t-1 ) through motion estimation 210 .
  • the image processing apparatus 100 searches which sample among the samples of the previous frame (X t-1 ) each of the samples of the current frame (X t ) is similar to, and searches the searched previous frame (X t -1 ) may be identified as predicted samples of samples within the current frame (X t ). For example, the image processing apparatus 100 determines whether a current sample of a current frame (X t ) is a sample (ie, a collocated sample) located at the same location as the current sample among samples of a previous frame (X t ⁇ 1 ). A sample to the right of the collocated sample can be identified as a predicted sample of the current sample if it is most similar to the sample to the right.
  • the image processing device 100 may perform the motion prediction 210 through a convolution operation, which will be described with reference to FIGS. 4 to 7 .
  • the image processing apparatus 100 uses a relative positional relationship between samples of the current frame (X t ) and predicted samples in a corresponding previous frame (X t ⁇ 1 ) as a motion vector in the motion compensation process 220.
  • the motion compensation process 220 is a process of obtaining a predicted frame (X t_pred ), which is a predicted version of the current frame (X t ), by changing sample values of samples of the previous frame (X t ⁇ 1 ).
  • the image processing device 100 may obtain a prediction frame (X t_pred ) by changing sample values of the previous frame (X t ⁇ 1 ) according to sample values of prediction samples.
  • sample values of collocated samples of the previous frame (X t ⁇ 1 ) at the same position as the samples of the current frame (X t ) may be changed according to sample values of the predicted samples. For example, if the prediction sample of the current sample located at the top left of the current frame (X t ) is located on the right side of the collocated sample of the previous frame (X t-1 ), the previous frame (X t-1 ) The sample value of the collocated sample of can be changed according to the sample value located on the right side (ie, the sample value of the predicted sample).
  • the weight derivation process 230 determines how helpful the samples of the predicted frame (X t_pred ) are in processing the current frame (X t ) or within the predicted frame (X t_pred ) during processing of the current frame (X t ). It can be understood as a process of determining the contribution of samples.
  • Weights to be applied to samples of the prediction frame (X t_pred ) may be derived through the weight derivation process 230 .
  • a high weight may be derived for a sample having a high contribution
  • a low weight may be derived for a sample having a low contribution.
  • the weight may be based on a difference value between sample values of samples of the current frame (X t ) and sample values of corresponding predicted samples. The larger the difference value, the smaller the weight, and the smaller the difference value, the larger the weight. If the difference value is large, it may mean that the sample value of the predicted sample does not have a high contribution to the processing of the sample of the current frame (X t ), and thus the weight may be calculated to be small.
  • the gating process 240 is a process of applying weights to samples of the prediction frame (X t_pred ). Sample values of the prediction frame (X t_pred ) may be changed according to the contribution of the samples of the prediction frame (X t_pred ).
  • sample values of samples of the prediction frame X t_pred may be multiplied by a weight.
  • the sample value of a sample multiplied by a weight of 1 is maintained, but the sample value of a sample multiplied by a weight less than 1 is reduced.
  • the image processing device 100 when processing the current frame (X t ), outputs a previous output frame (Y t-1 ) corresponding to the previous frame (X t-1 ) and a previous frame (X t-1 ).
  • a previous feature map (S t-1 ) obtained during the process of t-1 may be further used.
  • the previous output frame (Y t-1 ) and the previous feature map (S t-1 ) may be output by the neural network 250 during processing of the previous frame (X t-1 ).
  • the previous output frame Y t-1 may be output from the last layer of the neural network 250
  • the previous feature map S t-1 may be output from the previous layer of the last layer of the neural network 250.
  • the previous layer of the last layer may mean a previous layer directly connected to the last layer or a previous layer in which one or more layers exist between the last layer and the last layer.
  • the previous output frame (Y t-1 ) and the previous feature map (S t-1 ) may also have the characteristics of the previous frame (X t-1 ), the above motion compensation process 220 and gating process 240 application may be required.
  • the predicted output frame (Y t_pred ) which is a predicted version of the current output frame (Y t ) from the previous output frame (Y t-1 ) and the previous feature map (S t-1 ) through the motion compensation process 220
  • a predicted feature map (S t_pred ) which is a predicted version of the current feature map (S t ) can be obtained.
  • the motion compensation process 220 for the previous output frame (Y t-1 ) and the previous feature map (S t-1 ) may be the same as the motion compensation process 220 for the previous frame (X t-1 ). there is.
  • a prediction output frame (Y t_pred ) and a prediction feature map (S t_pred ) may be generated by changing sample values of the collocated samples of the map (S t-1 ).
  • the prediction sample of the current sample of the current frame (X t ) is located to the right of the collocated sample of the previous frame (X t-1 )
  • the previous output frame (Y t-1 ) and the previous feature map The sample value of the collocated sample of (S t-1 ) may be changed according to the sample value positioned to the right of it.
  • the weights obtained through the weight derivation process 230 are applied to the samples of the prediction output frame Y t_pred and the prediction feature map S t_pred in the gating process 240, resulting in a weighted prediction output frame Y' t_pred and a weighted prediction feature map (S' t_pred ) may be obtained.
  • FIG. 2 shows that both the previous output frame (Y t-1 ) and the previous feature map (S t-1 ) are used when processing the current frame (X t ), but this is just one example, and the previous output frame (Y t-1 ) and the previous feature map (S t-1 ) may not be used in the process of processing the current frame (X t ). In one embodiment, only the previous frame (X t ⁇ 1 ) may be considered in the processing of the current frame (X t ). In another embodiment, when processing the current frame (X t ), only one of the previous output frame (Y t-1 ) and the previous feature map (S t-1 ) may be used.
  • the weighted prediction frame (X' t_pred ) derived through the gating process 240, the weighted prediction output frame (Y' t_pred ), the weighted prediction feature map (S' t_pred ), and the current frame (X t ) are the neural network ( 250) is entered.
  • a current output frame (Y t ) corresponding to the current frame (X t ) is obtained.
  • the neural network 250 may include a convolution layer.
  • convolution processing is performed on input data using a filter kernel. Convolution processing for the convolution layer will be described with reference to FIG. 3 .
  • the neural network 250 may include one or more sub-neural networks 260-1 ... 260-n. Although FIG. 2 shows that several sub neural networks 260-1 ... 260-n are included in the neural network 250, this is just an example and only one sub neural network 260-1 is included in the neural network 250. may have been included. The fact that one sub neural network 260 - 1 is included in the neural network 250 may mean that the neural network 250 includes a fusion layer 262 and a plurality of convolution layers.
  • the fusion layer 262 includes the current frame (X t ) and the data output from the gating process 240, that is, the weighted prediction frame (X' t_pred ), the weighted prediction output frame (Y' t_pred ), and the weighted prediction frame (Y' t_pred ).
  • Predictive feature maps (S' t_pred ) can be fused. Through the convergence process, different types of data can be integrated.
  • an intermediate output frame (Y t_int ) and an intermediate feature map (S t_int ) may be obtained.
  • the intermediate output frame (Y t_int ) is output by the last layer included in the first sub-neural network 260-1
  • the intermediate feature map (S t_int ) is the output of the last layer included in the first sub-neural network 260-1. It can be output by the previous layer.
  • the current frame (X t ), the weighted prediction frame (X' t_pred ), and the intermediate output frame (Y t_int ) and the intermediate feature map (S t_int ) output from the first sub-neural network 260-1 are the second sub-neural network It can be entered as (260-2). Similar to the first sub-neural network 260-1, in the convergence layer 262 of the second sub-neural network 260-2, the current frame (X t ), the weighted prediction frame (X' t_pred ), and the intermediate output frame (Y t_int ) and the intermediate feature map (S t_int ) can be merged and then convolved.
  • an intermediate output frame (Y t_int ) and an intermediate feature map (S t_int ) are output, and the output intermediate output frame (Y t_int ) and intermediate feature map (S t_int ) are It may be input to the th sub neural network 260-3. Similar to the second sub neural network 260 - 2 , the current frame (X t ) and the weighted prediction frame (X' t_pred ) may be further input to the third sub neural network 260 - 3 . As a result of processing by the last sub-neural network 260-n, a current output frame Y t corresponding to the current frame X t may be obtained.
  • the current frame (X t ), the current output frame (Y t ) output from the last sub-neural network 260-n, and the current feature map (S t ) may be used in the process of processing the next frame (X t+1 ). .
  • the previous frame (X t ) is the first frame of consecutive frames
  • the previous frame (X t-1 ), the previous output frame (Y t-1 ) and the previous feature map (S t-1 ) are predetermined It can be set to have a sample value (eg 0).
  • 3 is a diagram for explaining a convolution operation.
  • the feature map 350 may be generated through a multiplication operation and an addition operation between the weight values of the filter kernel 330 used in the convolution layer and the corresponding sample values in the frame 310 .
  • the filter kernel 330 has a predetermined size (3x3 in FIG. 3).
  • the number of feature maps 350 varies according to the number of filter kernels 330 .
  • the number of filter kernels 330 and the number of feature maps 350 may be the same. That is, if one filter kernel 330 is used in the convolution layer, one feature map 350 may be generated, and if two filter kernels 330 are used, two feature maps 350 may be generated.
  • I1 to I49 indicated in the frame 310 indicate samples of the frame 310
  • F1 to F9 indicated in the filter kernel 330 indicate weight values of the filter kernel 330
  • M1 to M9 displayed on the feature map 350 represent samples of the feature map 350 .
  • the frame 310 includes 49 samples, but this is just one example, and if the frame 310 has a resolution of 4K, for example, it will include 3840 X 2160 samples.
  • each of the sample values of I3, I4, I5, I10, I11, I12, I17, I18, and I19 of the frame 310 and F1, F2, and F3 of the filter kernel 330 , F4, F5, F6, F7, F8, and F9 are respectively multiplied, and a value obtained by combining the result values of the multiplication operation may be assigned as the value of M2 of the feature map 350.
  • a convolution operation is performed between the sample values in the frame 310 and the weighted values of the filter kernel 330.
  • a feature map 350 having a size may be obtained.
  • FIG. 4 is a diagram for explaining the motion estimation process 210 shown in FIG. 2 .
  • the image processing device 100 may perform motion prediction based on the convolution operations 410 and 420 for the current frame (X t ) and the previous frame (X t ⁇ 1 ).
  • the image processing device 100 obtains a first feature map 417 by performing a convolution operation 410 on the current frame X t with a first predetermined filter kernel 415, and obtains a plurality of predetermined first feature maps.
  • a plurality of second feature maps 427 may be obtained by performing a convolution operation 420 on the previous frame (X t ⁇ 1 ) with two filter kernels 425 .
  • the convolution operation 410 based on the first filter kernel 415 may be sequentially performed on the samples of the current frame X t
  • the convolution operation based on the plurality of second filter kernels 425 ( 420) may be sequentially performed on the samples of the previous frame (X t-1 ).
  • the collocated sample of the first feature map 415 is A sample value can be obtained.
  • a convolution operation 420 based on a plurality of second filter kernels 425 is performed on the collocated sample of the previous frame (X t-1 ) and samples surrounding the collocated sample, thereby obtaining a plurality of Sample values of collocated samples of the second feature maps 427 may be obtained.
  • the first filter kernel 415 and the plurality of second filter kernels 425 may have a predetermined size.
  • the first filter kernel 415 and the plurality of second filter kernels 425 may have a size of 3x3 as shown in FIG. 4, but are not limited thereto.
  • the first filter kernel 415 and the plurality of second filter kernels 425 may have a size of 4x4 or 5x5.
  • a first feature map 417 having the same size as the current frame X t may be obtained.
  • the current frame (X t ) may be padded to obtain the first feature map 417 having the same size as the current frame (X t ) through the convolution operation 410 .
  • Padding means allocating a sample having a predetermined sample value (eg, 0) outside at least one of a left boundary, an upper boundary, a right boundary, or a lower boundary of the current frame (X t ). Through padding, the number of samples of the current frame (X t ) is increased.
  • a sample corresponding to the current sample may have a preset first value, and the remaining samples may have a value of 0. 4 shows that the first filter kernel 415 has a value of 1 and a value of 0, but 1 is an example of a preset first value.
  • the first filter kernel 415 is applied to the current sample of the current frame (X t ) and neighboring samples of the current samples. It may mean a sample applied to the multiplication operation. 4 shows that the center sample of the first filter kernel 415 has a weight value of 1, which means that the current frame (X t ) is padded to the left of the left boundary and to the top of the upper boundary. case is taken into account.
  • the top-left sample and the first filter kernel must be padded in the left and top directions of the current frame (X t ).
  • a multiplication operation between the center samples of (415) may be performed. Accordingly, if the current frame (X t ) is not padded in the left and top directions, the top-left sample of the first filter kernel 415 has a value of 1.
  • the sample corresponding to the current sample has a preset first value, so that the samples of the first feature map 417 are the sample values of the samples of the current frame (X t ). It can be calculated as a value multiplied by 1. Accordingly, if the first value is 1, sample values of the first feature map 417 are equal to sample values of the current frame X t .
  • the convolution operation 410 on the current frame (X t ) may be omitted in the motion estimation process.
  • the reason is that when a sample of the first filter kernel 415 corresponding to the current sample has a value of 1 and other samples have a value of 0, the first feature obtained as a result of the convolution operation 410 This is because the map 417 is eventually identical to the current frame X t . Therefore, prediction samples 430 can be identified by comparing the second feature maps 427 obtained as a result of the convolution operation 420 for the previous frame (X t-1 ) and the current frame (X t ) there is.
  • the plurality of second filter kernels 425 used in the convolution operation 420 for the previous frame (X t ⁇ 1 ) may have a value of 0 and a preset second value.
  • the preset second value may be the same as the preset first value.
  • both the first value and the second value may be 1.
  • the first filter kernel 415 may correspond to any one of the plurality of second filter kernels 425 .
  • the preset second value may have a different sign from the preset first value. For example, if the first value is 1, the second value may be -1.
  • any one of the samples of the plurality of second filter kernels 425 may have a preset second value, and the remaining samples may have a value of 0.
  • the position of the sample having the second value may be different for each of the plurality of second filter kernels 425 .
  • the upper left sample has the second value
  • the right sample of the upper left sample has the second value.
  • the number of second filter kernels 425 may vary according to the size of the second filter kernels 425 . If the size of the second filter kernels 425 is 3x3, the number of second filter kernels 425 may be nine. This is because the position of the sample having the second value is different for each of the second filter kernels 425 .
  • the second feature maps 427 are obtained through a convolution operation 420 on the previous frame (X t ⁇ 1 ) using the second filter kernels 425 .
  • the number of second feature maps 427 may be the same as the number of second filter kernels 425 .
  • the second filter kernels 425 may be used to extract a sample value of any one of the collocated sample of the previous frame (X t ⁇ 1 ) and samples surrounding the collocated sample.
  • a second filter kernel in which an upper-left sample has a second value may be used to extract a sample value of a sample located in the upper-left corner of the collocated samples of the previous frame (X t-1 )
  • a second filter kernel in which a side sample has a second value may be used to extract a sample value of a sample located in the upper right corner of the collocated sample of the previous frame (X t ⁇ 1 ).
  • the image processing apparatus 100 compares sample values of the first feature map 417 and sample values of the second feature maps 427 to identify predicted samples 430 of samples in the current frame X t . there is.
  • the image processing device 100 identifies a sample most similar to a sample value at a predetermined position of the first feature map 417 among sample values at a predetermined position of the second feature maps 427, and identifies a previous frame corresponding to the checked sample.
  • a sample within (X t ⁇ 1 ) may be identified as a predicted sample 430 of a current sample at a predetermined position.
  • the current sample is the center sample in the current frame (X t )
  • a sample in the previous frame (X t ⁇ 1 ) corresponding to the checked sample value may be identified as the predicted sample 430 of the current sample.
  • a sample located at the upper right of the center sample of the previous frame (X t ⁇ 1 ) may be determined as the prediction sample 430 of the current sample.
  • FIG. 5 is an exemplary diagram illustrating a convolution operation applied to a current frame 510 for motion prediction.
  • the center sample corresponding to the current sample has a value of 1 and the remaining samples have a value of 0.
  • the current frame 510 may have samples a1, b1, c1, d1, e1, f1, g1, h1, and i1. Although FIG. 5 illustrates that the size of the current frame 510 is 3x3, this is only for convenience of explanation, and the size of the current frame 510 may vary.
  • the current frame 510 may be padded in a left direction, an upper direction, a right direction, and a lower direction. Through padding, samples p0 to p15 having predetermined sample values may be added to the current frame 510 in the left direction, top direction, right direction, and bottom direction of the current frame 510 .
  • a stride of the convolution operation may be set to 1 to sequentially perform the convolution operation on the samples of the current frame 510 .
  • a convolution operation of the weight values of the p0 sample, p1 sample, p2 sample, p5 sample, a1 sample, b1 sample, p7 sample, d1 sample, and e1 sample of the current frame 510 and the first filter kernel 415 is performed.
  • the sample value of the first sample (ie, the top left sample) of the first feature map 417 is derived. Since the center sample of the first filter kernel 415 has a value of 1 and the remaining samples have a value of 0, the sample value of the top left sample of the first feature map 417 is derived as a1.
  • a convolution operation of the weight values of the p1 sample, p2 sample, p3 sample, a1 sample, b1 sample, c1 sample, d1 sample, e1 sample, and f1 sample of the current frame 510 and the first filter kernel 415 is performed.
  • a sample value of the second sample of the first feature map 417 (that is, a sample positioned to the right of the top left sample) is derived through Through the convolution operation, the sample value of the second sample of the first feature map 417 is derived as b1.
  • a convolution operation based on the samples of the current frame 510 and the first filter kernel 415 is performed until the first filter kernel 415 reaches the last sample of the current frame 510, that is, sample i1.
  • the first filter kernel 415 reaches the i1 sample, the e1 sample, the f1 sample, the p8 sample, the h1 sample, the i1 sample, the p10 sample, the p13 sample, the p14 sample, and the p15 sample of the current frame 510 and the first
  • a sample value of the last sample of the first feature map 417 is derived as i1 through a convolution operation of the weight values of the filter kernel 415 .
  • the central sample of the first filter kernel 415 has a value of 1, it can be seen that the sample values of the current frame 510 and the sample values of the first feature map 417 are the same. there is. That is, the first filter kernel 415 in which a sample corresponding to the current sample has a value of 1 is used to extract sample values of the current frame 510 .
  • FIG. 6 is an exemplary diagram illustrating a convolution operation applied to a previous frame for motion prediction.
  • the second filter kernels 425 may include one sample having a value of 1 and other samples having a value of 0. As described above, the position of a sample having a weight value of 1 may be different for each second filter kernel 425 .
  • the second filter kernels 425 may include one sample having a value of -1 and other samples having a value of 0.
  • the previous frame 530 may include samples of a2, b2, c2, d2, e2, f2, g2, h2, and i2.
  • FIG. 6 illustrates that the size of the previous frame 530 is 3x3, this is only for convenience of explanation, and the size of the previous frame 530 may vary.
  • the previous frame 530 may be padded in the left direction, top direction, right direction, and bottom direction. Samples having predetermined sample values may be added to the previous frame 530 in the left direction, top direction, right direction, and bottom direction of the previous frame 530 through padding.
  • Second feature maps 427 corresponding to the second filter kernels 425 may be obtained through a convolution operation based on the previous frame 530 and each of the second filter kernels 425 .
  • each of the second filter kernels 425 is classified into a second filter kernel (A) 425-1 and a second filter according to the location of a sample having a value of 1.
  • Kernel (B) 425-2 to second filter kernel (I) 425-9 are referred to, and each of the second feature maps 427 is used as a second feature to classify the second feature maps 427.
  • Map (A) 427-1, second feature map (B) 427-2 to second feature map (I) 427-9 are referred to.
  • a stride of the convolution operation may be set to 1 in order to sequentially perform the convolution operation on the samples of the previous frame 530 .
  • a second feature map (A) 427-1 may be obtained through a convolution operation based on a second filter kernel (A) 425-1 having an upper-left sample value of 1 and a previous frame 530.
  • the second filter kernel (A) 425 - 1 may perform a convolution operation with the previous frame 530 while moving according to a stride of 1.
  • the second filter kernel (A) 425-1 is a sample of the previous frame 530 (a2 sample, b2 sample, c2 sample, d2 sample, e2 sample, f2 sample, g2 sample, h2 sample, i2 sample) This is for extracting the sample value located in the upper left corner.
  • the second feature map (A) 427-1 is composed of samples (a2 sample, b2 sample, c2 sample, d2 sample, e2 sample, f2 sample, g2 sample, h2 sample, i2 sample) of the previous frame 530.
  • sample has a value obtained by multiplying the sample values of the samples located in the upper left corner by 1. For example, if the current sample is a1, the collocated sample of the previous frame 530 becomes a2, and the sample value of the collocated sample of the second feature map (A) 427-1 is the left side of the sample a2. It is derived as the sample value of p0 located at the top.
  • a second feature map (B) is obtained through a convolution operation between the second filter kernel (B) 425-2 in which the value of the sample located to the right of the upper-left sample is 1 and the previous frame 530 ( 427-2) can be obtained.
  • the second filter kernel (B) 425-2 is a sample of the previous frame 530 (a2 sample, b2 sample, c2 sample, d2 sample, e2 sample, f2 sample, g2 sample, h2 sample, i2 sample) It is for extracting the sample value located at the top.
  • the second feature map (B) 427-2 is composed of samples (a2 sample, b2 sample, c2 sample, d2 sample, e2 sample, f2 sample, g2 sample, h2 sample, i2 sample) of the previous frame 530. sample) is multiplied by 1 to the sample value of the samples located on top of the sample). For example, if the current sample is a1, the collocated sample of the previous frame 530 becomes a2, and the sample value of the collocated sample of the second feature map (B) 427-2 is the top of the sample a2. It is derived as the sample value of p1 located at .
  • the second feature map (A) 427 is performed through a convolution operation between each of the second filter kernel (A) 425-1 to the second filter kernel (I) 425-9 and the previous frame 530. -1) to second feature maps (I) 427-9 may be obtained.
  • FIG. 7 is an exemplary diagram illustrating prediction samples 430 corresponding to samples within the current frame.
  • the image processing device 100 may determine which sample of the second feature maps 427 is most similar to each sample in the first feature map 417 . At this time, among the samples of the first feature map 417 and the samples of the second feature maps 427, samples at the same position are compared. In an embodiment, the image processing device 100 determines an absolute value of a difference between a sample value of a sample at a specific position in the first feature map 417 and a sample value of samples at a specific position in the second feature maps 427. is calculated, and the sample value with the smallest calculated absolute value can be identified. The image processing device 100 may determine a sample in the previous frame 530 corresponding to the sample value having the smallest absolute difference as the predicted sample.
  • the first characteristic A difference between a sample value of a sample in the map 417 and a sample value of samples in the second feature maps 427 may be calculated through a difference operation, and conversely, a sign of the first value and a sign of the second value may be calculated. If they are different from each other, a difference between sample values of samples in the first feature map 417 and sample values of samples in the second feature maps 427 may be calculated through a sum operation.
  • the absolute value of the difference between the sample values of the top left sample of s can be calculated.
  • is calculated between the sample value of the upper left sample a1 of the first feature map 417 and the sample value of the upper left sample p0 of the second feature map (A) 427-1.
  • may be calculated between the sample value of the upper left sample a1 of the first feature map 417 and the sample value of the upper left sample p1 of the second feature map (B) 427-2.
  • the second feature A sample e2 in the previous frame 530 corresponding to the top left sample e2 of the map (I) 427 - 9 may be determined as a predicted sample of the top left sample a1 of the current frame 510 .
  • prediction samples 430 corresponding to each sample of the current frame 510 may be identified.
  • prediction samples corresponding to samples of the current frame 510 are determined to be b2, e2, f2, e2, f2, i2, h2, e2, and i2.
  • the motion prediction process can be understood as a process of finding a motion vector.
  • Each of the aforementioned second filter kernels 425 may be interpreted as a positional relationship between the collocated sample of the previous frame 530 and its neighboring samples and the current sample, that is, a motion vector candidate.
  • the motion prediction process determines a motion vector candidate (one of the second filter kernels) pointing to a sample most similar to the current sample among several motion vector candidates (several second filter kernels) as the motion vector of the current sample. can be a process.
  • FIG. 8 is a diagram for explaining the motion compensation process 220 shown in FIG. 2 .
  • the motion compensation process is a process of changing sample values of samples of a previous frame (X t ⁇ 1 ) located at the same location as samples of the current frame (X t ) according to sample values of predicted samples.
  • a prediction frame (X t_pred ) may be obtained through a motion compensation process.
  • the image processing device 100 may perform a motion compensation process through a convolution operation.
  • the image processing device 100 selects a third filter kernel to be used for motion compensation of each sample of the previous frame (X t ⁇ 1 ) from among a plurality of predetermined third filter kernels 815, and selects a third filter kernel for the selected third filter kernel.
  • the based convolution operation may be applied to each sample of the previous frame (X t-1 ).
  • a third filter kernel corresponding to each sample of the previous frame (X t ⁇ 1 ) may be selected.
  • the plurality of third filter kernels 815 may include samples having a predetermined third value and samples having a 0, and the position of the sample having the third value may be different for each third filter kernel 815.
  • the third value may be 1, for example.
  • the plurality of second filter kernels 425 used in the motion estimation process may also be used in the motion compensation process.
  • FIG. 9 is an exemplary diagram illustrating a process of motion compensation for a previous frame using a motion prediction result.
  • each of the third filter kernels 815 For discrimination of each of the third filter kernels 815, reference is made to the third filter kernel (A) 815-1 to the third filter kernel (I) 815-9 according to the position of the sample having the third value. do.
  • the image processing apparatus 100 provides a third filter kernel 815 having a third value at a position corresponding to the predicted sample for each of the samples of the previous frame 530 located at the same position as the samples of the current frame 510. ) can be selected.
  • the a2 sample located at the upper left of the previous frame 530 will be described as a reference. If the prediction sample of the a1 sample located at the upper left of the current frame 510 is determined to be the b2 sample, the image processing device 100 selects a sample located to the right of the center sample and having a value of 1 and the remaining samples having a value of 0.
  • a third filter kernel (F) 815 - 6 including may be selected for the a2 sample. In this case, the image processing device 100 uses the p0 sample, p1 sample, p2 sample, p5 sample, a2 sample, b2 sample, p7 sample, d2 sample, and e2 sample of the previous frame 530 and the third filter kernel (F).
  • the top-left sample b2 of the prediction frame 900 can be derived through multiplication and addition operations based on 0, 0, 0, 0, 0, 1, 0, 0, and 0 of (815-6). That is, it can be seen that the a2 sample is replaced with the b2 sample in the prediction frame 900 through a convolution operation on the a2 sample of the previous frame 530 and its neighboring samples.
  • a third filter kernel (H) 815-8 including may be selected for the b2 sample.
  • the image processing device 100 uses the p1 sample, p2 sample, p3 sample, a2 sample, b2 sample, c2 sample, d2 sample, e2 sample, and f2 sample of the previous frame 530 and a third filter kernel (H) (815- Sample e2 located above the central sample of the prediction frame 900 can be derived through multiplication and sum operations based on 0, 0, 0, 0, 0, 0, 0, 1 and 0 in 8). That is, it can be seen that the b2 sample of the previous frame 530 is replaced with the e2 sample in the prediction frame 900 through a convolution operation on the b2 sample of the previous frame 530 and its neighboring samples.
  • the predicted frame 900 which is a predicted version of the current frame 510, is obtained.
  • FIG. 10 is an exemplary diagram illustrating a process of applying a weight 950 to a prediction frame 900 obtained as a result of motion compensation.
  • the image processing device 100 calculates a weight 950 based on a difference between a current sample in the current frame 510 and a predicted sample in the previous frame 530 (or a collocated sample in the predicted frame 900). can do.
  • the image processing device 100 may calculate the weight 950 for each sample of the current frame 510 .
  • the weight 950 indicates how much the samples of the predicted frame 900 are helpful to the processing of the current frame 510 .
  • the weight 950 may be derived based on Equation 1 below.
  • Equation 1 ⁇ is a predetermined constant and may be, for example, 16. Referring to Equation 1, if the sample value of the current sample and the sample value of the predicted sample are the same, the weight 950 is calculated as 1, and as the difference between the sample value of the current sample and the sample value of the predicted sample increases, the weight It can be seen that 950 is calculated small.
  • the image processing device 100 may obtain a weighted prediction frame 1000 by multiplying each sample of the prediction frame 900 by a corresponding weight 950 .
  • the image processing device 100 may obtain a weighted prediction output frame and a weighted prediction feature map by applying a corresponding weight 950 to each sample of the prediction output frame and the prediction feature map.
  • the motion estimation process and the motion compensation process may be performed based on convolution operation.
  • the motion prediction process may be performed once (if the convolution operation 410 for the current frame is omitted) or through two convolution operations, and as shown in FIG. 8, Since the motion compensation process can be performed through a single convolution operation, computational complexity can be significantly reduced.
  • downsampling means a process of reducing the number of samples in a frame. Downsampling of frames can be performed in a variety of ways. For example, the number of samples in the current frame and the previous frame may be reduced by pooling the current frame and the previous frame.
  • the pooling process may include a max pooling process or an average pooling process. Since the pooling process can be clearly understood from the pooling layer used in the field of artificial neural networks, a detailed description thereof will be omitted.
  • downsampling of the current frame and the previous frame may be performed through various known downsampling algorithms.
  • the motion prediction process When the motion prediction process is performed on the downsampled current frame and the downsampled previous frame, as many motion vectors as the number of samples included in the downsampled current frame can be derived. Since the number of motion vectors required in the motion compensation process is greater than the number of motion vectors obtained through the motion estimation process based on the downsampled frame, the number of motion vectors obtained in the motion estimation process needs to be increased.
  • 11 is a diagram for explaining a method of increasing the number of motion vectors obtained for a downsampled frame.
  • the size of the downsampled frame 1110 is 2x2, and the size of the frame 1130 before downsampling is 4x4.
  • the size of the downsampled frame 1110 may be variously changed according to the downsampling ratio.
  • the image processing device 100 may group samples of the frame 1130 before downsampling according to the number of samples in the downsampled frame 1110 . Also, the image processing device 100 may allocate each of the motion vectors derived in the motion estimation process to sample groups of the frame 1130 before downsampling. At this time, sample groups of the frame 1130 before downsampling and positions of samples in the downsampled frame 1110 may be considered.
  • the motion vector mv1 derived for the upper left sample 1112 among the samples 1112, 1114, 1116, and 1118 in the downsampled frame 1110 is the sample of the frame 1130 before the downsampling.
  • the sample group 1132 located in the upper left corner may be assigned. Accordingly, motion compensation may be performed on the samples included in the sample group 1132 positioned at the upper left of the frame 1130 based on the motion vector mv1. Note here that motion compensation is performed on the previous frame before being downsampled.
  • the motion vector mv2 derived for the upper right sample 1114 is the sample groups 1132 of the frame 1130 before the downsampling.
  • 1134, 1136, 1138) may be assigned to the sample group 1134 located in the upper right corner. Accordingly, motion compensation may be performed on the samples included in the sample group 1134 positioned at the upper right of the frame 1130 based on the motion vector mv2.
  • the image processing apparatus 100 combines a motion vector assigned to a corresponding sample group and a motion vector assigned to an adjacent sample group for samples adjacent to a boundary with an adjacent sample group among samples included in a sample group. A single motion vector may be applied.
  • the image processing device 100 may obtain motion vectors for motion compensation of the frame 1130 before downsampling by interpolating motion vectors obtained for the downsampled frame 1110 .
  • interpolation bilinear interpolation, bicubic interpolation, or nearest neighbor interpolation may be applied.
  • the number of weights derived in the weight derivation process is also smaller than the number of weights required in the gating process. Accordingly, the image processing device 100 increases the number of weights acquired through a weight derivation process.
  • the gating process may be applied to a predicted frame generated through a motion compensation process from a previous frame before downsampling.
  • the image processing device 100 may group samples of the frame 1130 before downsampling according to the number of samples in the downsampled frame 1110 . Also, the image processing device 100 may allocate each of the weights derived in the weight derivation process to the sample groups of the frame 1130 before downsampling. At this time, sample groups of the frame 1130 before downsampling and positions of samples in the downsampled frame 1110 may be considered.
  • the first weight derived for the upper left sample 1112 among the samples 1112, 1114, 1116, and 1118 in the downsampled frame 1110 is the sample groups of the frame 1130 before the downsampling. Among (1132, 1134, 1136, 1138), it can be assigned to the sample group 1132 located in the upper left. Accordingly, a gating process may be performed on the samples included in the sample group 1132 positioned at the upper left of the frame 1130 based on the first weight.
  • the second weight derived for the upper right sample 1114 among the samples 1112, 1114, 1116, and 1118 in the downsampled frame 1110 is the sample groups 1132 of the frame 1130 before the downsampling.
  • 1134, 1136, 1138) may be assigned to the sample group 1134 located in the upper right corner. Accordingly, a gating process may be performed based on the second weight for samples included in the sample group 1134 located in the upper right corner of the frame 1130 .
  • the image processing device 100 among samples included in a sample group, for samples adjacent to a boundary with an adjacent sample group, has a weight obtained by combining a weight assigned to the corresponding sample group and a weight assigned to the adjacent sample group. can also be applied.
  • the image processing device 100 may obtain weights for a gating process of the frame 1130 before downsampling by interpolating weights obtained for the downsampled frame 1110 .
  • interpolation bilinear interpolation, bicubic interpolation, or nearest neighbor interpolation may be applied.
  • motion prediction process and motion compensation process have been described as being performed based on convolution operation, this corresponds to one embodiment, and the motion prediction process and motion compensation process are used in inter prediction of a known video codec. It can be done with an algorithm that
  • the motion estimation process may be performed based on a block matching algorithm or an optical flow algorithm.
  • the block matching algorithm and optical flow are algorithms that search for a sample or block most similar to a sample or block in a current frame in a previous frame.
  • a motion vector between a sample or block in a current frame and a similar sample or similar block in a previous frame is obtained through a block matching algorithm and an optical flow, and a prediction frame may be obtained by performing motion compensation on a previous frame based on the obtained motion vector.
  • a block matching algorithm and an optical flow algorithm are techniques that are obvious to those skilled in the art, and detailed descriptions thereof are omitted in the present disclosure.
  • a current frame (X t ), a weighted prediction frame (X' t_pred ), a weighted prediction output frame (Y' t_pred ), and a weighted prediction feature map (S' t_pred ) are neural network
  • the current output frame Y t corresponding to the current frame X t may be obtained.
  • the neural network 250 may include at least one sub neural network, and each sub neural network may include a convergence layer and a plurality of convolution layers.
  • the structure of a first sub-neural network 1200 among at least one sub-neural network is shown in FIG. 12 .
  • a first sub-neural network 1200 includes a fusion layer 1210 including a first convolution layer 1214 and a second convolution layer 1216, and a plurality of third convolution layers 1230. ) can be configured.
  • a convolution operation may be performed on input data based on a filter kernel determined through training.
  • the fusion layer 1210 is a current frame (X t ), data output through the gating process, that is, a weighted prediction frame (X' t_pred ), a weighted prediction output frame (Y' t_pred ), and a weighted prediction feature Maps (S' t_pred ) can be fused.
  • the current frame (X t ), the weighted prediction frame (X' t_pred ), and the weighted prediction output frame (Y' t_pred ) are concatenated (1212) and then input to the first convolution layer (1214).
  • Concatenation may refer to a process of combining a current frame (X t ), a weighted prediction frame (X' t_pred ), and a weighted prediction output frame (Y' t_pred ) in a channel direction.
  • Data obtained as a result of concatenation 1212 may be subjected to convolution in the first convolution layer 1214 .
  • 3x3x1 displayed on the first convolution layer 1214 illustrates convolution processing on input data using one filter kernel having a size of 3x3.
  • one feature map may be generated by one filter kernel.
  • the result of concatenating the current frame (X t ), the weighted prediction frame (X' t_pred ), and the weighted prediction output frame (Y' t_pred ) is input to the first convolution layer 1214.
  • Weighted prediction features The map S' t_pred may be input to the second convolutional layer 1216 .
  • the weighted prediction feature map (S' t_pred ) may be convoluted in the second convolution layer 1216 .
  • 3x3x1 displayed on the second convolution layer 1216 exemplifies convolution processing on input data using one filter kernel having a size of 3x3.
  • one feature map may be generated by one filter kernel.
  • the data output from the first convolution layer 1214 and the data output from the second convolution layer 1216 may be concatenated 1218 and then sequentially processed by the plurality of third convolution layers 1230. there is.
  • the weighted prediction feature map (S' t_pred ) is distinguished from the current frame (X t ), the weighted prediction frame (X' t_pred ), and the weighted prediction output frame (Y' t_pred ). 2
  • the reason for input to the convolutional layer 1216 is that the domain of the weighted prediction feature map (S' t_pred ), the current frame (X t ), the weighted prediction frame (X' t_pred ), and the weighted prediction output frame (Y This is because the domains of ' t_pred ) are different.
  • the weighted prediction feature map (S' t_pred ) is the data of the feature domain obtained in the process of processing the frame, but the current frame (X t ), the weighted prediction frame (X' t_pred ), and the weighted prediction output frame (Y' t_pred ) is the image data corresponding to the processing target or the image data obtained as a result of the processing, so they are concatenated after convolution processing by distinguishing them.
  • the first convolution layer 1214 and the second convolution layer 1216 are respectively a current frame (X t ), a weighted prediction frame (X' t_pred ), a weighted prediction output frame (Y' t_pred ), and a weight It can function to match the domain of the applied predictive feature map (S' t_pred ).
  • the data output from the first convolution layer 1214 and the data output from the second convolution layer 1216 are concatenated 1218 and then sequentially processed by the plurality of third convolution layers 1230 to intermediate An output frame (Y t_int ) may be obtained.
  • the intermediate output frame (Y t_int ) is output from the last layer 1234 of the plurality of third convolution layers 1230, and the intermediate feature in the previous layer 1232 of the last layer 1234
  • a map (S t_int ) is output. 12 shows that the last layer 1234 is located after the previous layer 1232, but one or more convolutional layers may be located between the previous layer 1232 and the last layer 1234.
  • 3x3x1 displayed on the third convolution layers 1230 exemplifies convolution processing on input data using one filter kernel having a size of 3x3.
  • one feature map or one output frame may be generated by one filter kernel.
  • the intermediate feature maps (S t_int ) and intermediate output frames (Y t_int ) output from the plurality of third convolutional layers 1230 may be input to the next sub-neural network.
  • the current output frame (Y t ) is output from the last layer 1234 of the plurality of third convolution layers 1230, and the previous layer 1232 of the last layer 1234 ), the current feature map (S t ) may be output.
  • the current output frame (Y t ) and the current feature map (S t ) may be used in the processing of the next frame.
  • the structure of the first sub-neural network 1200 shown in FIG. 12 is an example, and the number of convolution layers, the size of filter kernels, and the number of filter kernels included in the first sub-neural network 1200 vary according to embodiments. can be changed to
  • 13 is a diagram showing the structure of the last sub-neural network 1300 included in the neural network.
  • the last sub neural network 1300 includes a fusion layer 1310 including a first convolution layer 1314 and a second convolution layer 1316, and a plurality of third convolution layers. (1330).
  • a convolution operation may be performed on input data based on a filter kernel determined through training.
  • the fusion layer 1310 includes the current frame (X t ), the weighted prediction frame (X' t_pred ), the intermediate output frame output from the previous sub-neural network (Y t_int ), and the intermediate feature map output from the previous sub-neural network (S t_int ). can be fused.
  • the current frame (X t ), the weighted predicted frame (X' t_pred ), and the intermediate output frame (Y t_int ) may be concatenated (1312) and then input to the first convolution layer (1314).
  • Data obtained as a result of concatenation 1312 may be subjected to convolution in the first convolution layer 1314 .
  • 3x3x1 displayed on the first convolution layer 1314 illustrates convolution processing on input data using one filter kernel having a size of 3x3.
  • one feature map may be generated by one filter kernel.
  • the result of concatenation of the current frame (X t ), the weighted prediction frame (X' t_pred ) and the intermediate output frame (Y t_int ) is input to the first convolution layer 1314, and the intermediate feature map (S t_int ) may be input to the second convolution layer 1316.
  • the intermediate feature map (S t_int ) may be convoluted in the second convolution layer 1316 .
  • 3x3x1 displayed on the second convolution layer 1316 exemplifies convolution processing on input data using one filter kernel having a size of 3x3.
  • one feature map may be generated by one filter kernel.
  • the first convolutional layer 1314 and the second convolutional layer 1316 in the fusion layer 1310 are the current frame (X t ), the weighted prediction frame (X' t_pred ), and the intermediate output frame, respectively.
  • (Y t_int ) and the domain of the intermediate feature map (S t_int ) may be matched.
  • the data output from the first convolution layer 1314 and the data output from the second convolution layer 1316 may be concatenated 1318 and then sequentially processed by the plurality of third convolution layers 1330. there is.
  • the data output from the first convolution layer 1314 and the data output from the second convolution layer 1316 are concatenated and then sequentially processed by the plurality of third convolution layers 1330 so that the current output frame ( Y t ) can be obtained.
  • the current output frame (Y t ) is output from the last layer 1334 of the plurality of third convolution layers 1330, and the current feature from the previous layer 1332 of the last layer 1334 A map S t may be output.
  • the last layer 1334 is positioned after the previous layer 1332, but one or more convolution layers may be positioned between the previous layer 1332 and the last layer 1334.
  • an intermediate output frame (Y t_int ) is output from the last layer 1334 of the plurality of third convolution layers 1330, and the last layer 1334
  • An intermediate feature map (S t_int ) may be output from the previous layer 1332 of .
  • the output intermediate output frame (Y t_int ) and intermediate feature map (S t_int ) may be input to the next sub-neural network.
  • 3x3x1 displayed on the third convolution layers 1330 illustrates convolution processing on input data using one filter kernel having a size of 3x3.
  • one feature map or one output frame may be generated by one filter kernel.
  • the structure of the sub neural network 1300 shown in FIG. 13 is an example, and the number of convolution layers included in the sub neural network 1300, the size of filter kernels, and the number of filter kernels may be variously changed according to embodiments. there is.
  • FIG. 14 is a diagram illustrating an application example of an image processing method according to an exemplary embodiment.
  • the application example shown in FIG. 14 shows a process of obtaining output frames having a resolution greater than that of the input frames through image processing on the input frames.
  • a video neural network (VNN) 1400 of FIG. 14 may correspond to the neural network 250 shown in FIG. 2 . It is assumed that the above-described motion prediction process, motion compensation process, weight derivation process, and gating process have been performed before frames are input to the VNN 1400.
  • a first output frame 1432 that is greater than the resolution of the first frame 1412 may be obtained.
  • the first frame 1412 and the first output frame 1432 are input to the VNN 1400 together with the second frame 1414, and as a result of processing by the VNN 1400, the resolution is greater than that of the second frame 1414.
  • a second output frame 1434 having a resolution may be obtained.
  • the second frame 1414 and the second output frame 1434 are input to the VNN 1400 together with the third frame 1416, and as a result of processing by the VNN 1400, the resolution is greater than that of the third frame 1416.
  • a third output frame 1436 having a resolution may be obtained.
  • the application example shown in FIG. 14 may be useful when trying to increase the resolution of frames received from a server or the like.
  • the server may transmit a small bit rate to the image processing device 100 by encoding frames of a small resolution, and the image processing device 100 processes the frames of a small resolution obtained through decoding to output a larger resolution. frames can be obtained.
  • 15 is a diagram illustrating an application example of an image processing method according to another embodiment.
  • the application example shown in FIG. 15 shows a process of obtaining one output frame in which characteristics of the input frames are combined through image processing on the input frames.
  • the first frame 1512 is input to the VNN 1500, and the processing result of the first frame 1512 by the VNN 1500 is transmitted to the VNN 1500 together with the first frame 1512 and the second frame 1514. can be entered as Also, the processing result by the VNN 1500 may be input back to the VNN 1500 together with the second frame 1514 and the third frame 1516 . As a result of processing by the VNN 1500 , an output frame 1530 in which characteristics of the first frame 1512 , the second frame 1514 , and the third frame 1516 are all reflected may be obtained.
  • the application example shown in FIG. 15 may be useful for improving the dynamic range of frames. For example, if one frame is captured with a long exposure time and the other frame is captured with a short exposure time, an output frame having a high dynamic range may be obtained by including characteristics of both frames.
  • 16 is a diagram illustrating an application example of an image processing method according to another embodiment.
  • the application example shown in FIG. 16 considers the case where the image processing device 100 operates as a server or an image provider.
  • a server may encode and transmit an image to a terminal device, and the terminal device may decode a bitstream received from the server to restore the image.
  • the image processing device 100 may also use frames encoded by the encoder 120 and then decoded by the decoder 140 when processing frames to compensate for loss occurring during encoding/decoding.
  • the image processing device 100 may obtain a first output frame A (not shown) by processing the first frame 1612 based on the VNN 1600 .
  • a first bitstream may be generated through encoding of the first output frame A, and the first output frame A may be restored through decoding of the first bitstream.
  • the image processing device 100 may obtain a first output frame B (not shown) by processing the first output frame A with the VNN 1600 .
  • the first frame 1612 , the first output frame A and the first output frame B may be input to the VNN 1600 together with the second frame 1614 .
  • one output frame is input to the VNN 1600 together with the next frame, but in the application example shown in FIG. 16, two output frames may be input to the VNN 1600 together with the next frame.
  • a motion compensation process and a gating process may be applied to both output frames before being input to the VNN 1600 .
  • the second frame 1614, the first frame 1612, the first output frame (A), and the first output frame (B) may be processed by the VNN 1600 to obtain the second output frame (A). .
  • a second bitstream may be generated through encoding of the second output frame A, and the second output frame A may be restored through decoding of the second bitstream.
  • the image processing device 100 may obtain a second output frame B (not shown) by processing the second output frame A and the first output frame B with the VNN 1600 .
  • the image processing device 100 also processes the first output frame (A) restored through decoding with the VNN 1600 together with the second output frame (A) and the first output frame (B), 2 output frames B (not shown) can be obtained.
  • the second frame 1614 , the second output frame A and the second output frame B may be input to the VNN 1600 together with the third frame 1616 .
  • the third frame 1616, the second frame 1614, the second output frame (A), and the second output frame (B) may be processed by the VNN 1600 to obtain the third output frame (A). .
  • 17 is a flowchart of a multi-frame processing method according to an embodiment.
  • step S1710 the image processing device 100 identifies a predicted sample corresponding to the current sample of the current frame from the previous frame.
  • Motion prediction for a current frame and a previous frame may be performed to identify prediction samples.
  • a convolution operation may be performed on the current frame and the previous frame to identify prediction samples.
  • step S1720 the image processing device 100 generates a prediction frame of the current frame by changing the sample value of the collocated sample of the previous frame according to the sample value of the prediction sample.
  • a prediction frame may be generated through a convolution operation on a previous frame based on filter kernels corresponding to motion vectors.
  • step S1730 the image processing device 100 compares the sample value of the current sample and the sample value of the predicted sample to derive a weight.
  • the image processing device 100 determines a smaller weight as the difference between the sample value of the current sample and the sample value of the predicted sample increases, and determines a larger weight as the difference between the sample value of the current sample and the sample value of the predicted sample decreases.
  • step S1740 the image processing device 100 applies weights to collocated samples of the prediction frame.
  • the image processing device 100 may multiply the collocated sample of the predicted frame by a weight.
  • step S1750 the image processing device 100 obtains a current output frame by processing the weighted prediction frame and the current frame through a neural network including a convolution layer.
  • the current sample is A prediction sample may be identified, and a relative position of a current sample in a current frame (X t ) and a prediction sample in a previous frame (X t ⁇ 1 ) may be determined as a motion vector.
  • the motion vector corresponding to the current sample is vulnerable to noise. There is a possibility that it will break down.
  • the predicted sample corresponding to the current sample may not be located around the collocated sample of the previous frame (X t ⁇ 1 ). In this case, an inaccurate motion vector may be derived by identifying a prediction sample around the collocated sample of the previous frame (X t ⁇ 1 ).
  • the motion estimation process to be described below is another embodiment of the motion estimation process 210 shown in FIG. A processing process by can also be performed. However, the motion estimation process to be described below is not only for processing the current frame shown in FIG. 2 . A motion estimation process described later can be applied to various fields for deriving a motion vector from two frames.
  • FIG. 18 is a diagram illustrating a configuration of an image processing device 1800 according to another embodiment.
  • an image processing device 1800 includes a convolution processor 1810, a comparator 1820, a pooling processor 1830, a combiner 1840, and a motion vector determiner 1850.
  • a convolution processor 1810 includes a convolution processor 1810, a comparator 1820, a pooling processor 1830, a combiner 1840, and a motion vector determiner 1850.
  • the convolution processor 1810, the comparator 1820, the pooling processor 1830, the combiner 1840, and the motion vector determiner 1850 may be implemented by at least one processor.
  • the convolution processor 1810, the comparator 1820, the pooling processor 1830, the combiner 1840, and the motion vector determiner 1850 may operate according to one or more instructions stored in memory.
  • the convolution processing unit 1810 and the pooling processing unit 1830 may include at least one arithmetic logic unit (ALU) for a convolution operation and a pooling operation, which will be described later.
  • ALU arithmetic logic unit
  • the ALU may include multipliers that perform multiplication operations and adders that perform addition operations.
  • the image processing device 1800 shown in FIG. 18 is for performing a motion estimation process, and in one embodiment, may also perform a motion compensation process.
  • the convolution processing unit 1810 performs convolution on the first frame based on a first filter kernel to obtain a first feature map, and performs convolution on the second frame based on a plurality of second filter kernels to obtain a plurality of first feature maps. 2 feature maps can be obtained.
  • the first frame and the second frame may be still images captured at different viewpoints.
  • the first frame may be the current frame (X t )
  • the second frame may be the previous frame (X tn ) (n being an integer greater than or equal to 1).
  • the first frame may be a patch frame divided from the first full frame
  • the second frame may be a patch frame divided from the second full frame.
  • the convolution processing unit 1810 may sequentially perform a convolution operation based on the first filter kernel on the samples of the first frame according to the stride, and on the samples of the second frame, a plurality of second filter kernels
  • the convolution operation based on can be performed sequentially according to the stride.
  • a stride of the convolution operation based on the first filter kernel and the second filter kernels may be 1.
  • Sample values of collocated samples of the first feature map may be obtained by performing a convolution operation based on the first filter kernel on the current sample of the first frame and samples adjacent to the current sample.
  • a convolution operation based on a plurality of second filter kernels is performed on the collocated sample of the second frame and samples adjacent to the collocated sample, thereby performing a sample of the collocated sample of the plurality of second feature maps. value can be obtained.
  • the first filter kernel and the plurality of second filter kernels may have a predetermined size.
  • the first filter kernel and the plurality of second filter kernels may have a size of 3x3, 4x4, or 5x5.
  • first feature maps and second feature maps having the same size as the first frame and the second frame may be obtained.
  • the convolution processor 1810 may pad the first frame and the second frame.
  • a sample corresponding to the current sample may have a preset first value and the remaining samples may have a value of 0.
  • the first filter kernel is applied to the current sample of the first frame and samples adjacent to the current samples.
  • the sample corresponding to the current sample refers to a sample applied to a multiplication operation with the current sample among samples of the first filter kernel. .
  • the sample corresponding to the current sample has a preset first value, so that the samples of the first feature map are calculated as values obtained by multiplying sample values of samples of the first frame by the first value. there is. Accordingly, if the first value is 1, sample values of the first feature map are equal to sample values of the first frame.
  • the convolution operation on the first frame may be omitted.
  • the reason is that when the sample of the first filter kernel corresponding to the current sample has a value of 1 and the other samples have a value of 0, the first feature map obtained as a result of the convolution operation is eventually the first frame because it is identical to
  • the plurality of second filter kernels used for the convolution operation on the second frame may have a value of 0 and a preset second value.
  • the preset second value may be the same as the preset first value.
  • both the first value and the second value may be 1.
  • the first filter kernel may correspond to any one of a plurality of second filter kernels.
  • the preset second value may have a different sign from the preset first value. For example, if the first value is 1, the second value may be -1.
  • Any one of the samples of the plurality of second filter kernels may have a preset second value, and the remaining samples may have a value of 0.
  • a position of a sample having a second value may be different for each of a plurality of second filter kernels.
  • the number of second filter kernels may vary according to the size of the second filter kernels.
  • the number of second filter kernels may be equal to the number of samples included in each of the second filter kernels. For example, if the size of the second filter kernels is 3x3, the number of second filter kernels may be 9. This is because the position of the sample having the second value is different for each second filter kernel.
  • the second feature maps may be obtained through a convolution operation on the second frame using the second filter kernels.
  • the number of second feature maps is equal to the number of second filter kernels.
  • the second filter kernels may be used to extract a sample value of any one of the collocated sample of the second frame and samples surrounding the collocated sample.
  • a second filter kernel in which an upper-left sample has a second value may be used to extract a sample value of a sample located in an upper-left corner of the collocated samples of the second frame, and an upper-right sample has a second value.
  • a second filter kernel having a value may be used to extract a sample value of a sample located in the upper right corner of the collocated samples of the second frame.
  • Sample values of the second frame extracted by the second filter kernel may be multiplied by the second value and assigned to collocated samples of the second feature map.
  • the first feature map and the plurality of second feature maps obtained by the convolution processing unit 1810 may be provided to the comparison unit 1820 .
  • the comparator 1820 may generate difference maps between the first feature map and each of the second feature maps.
  • the difference map indicates a difference between sample values in the first feature map and sample values at the same location in each second feature map.
  • a value obtained by subtracting sample values at the same location in each second feature map from sample values in the first feature map may be sample values of the difference map.
  • the absolute value of the value obtained by subtracting the sample value of the collocated sample in each second feature map from the sample value of the collocated sample in the first feature map is the sample value of the collocated sample in the difference maps. It can be.
  • Difference maps generated by the comparator 1820 may be provided to the pooling processor 1830 .
  • the pooling processing unit 1830 may pool a plurality of processing maps.
  • the pooling process may include an average pooling process or a median pooling process.
  • the pooling processor 1830 generates a plurality of third feature maps by pooling difference maps based on a filter kernel of a first size, and pools difference maps based on a filter kernel of a second size to generate a plurality of feature maps.
  • 4 feature maps can be created.
  • the first size and the second size may be different from each other.
  • the pooling processing unit 1830 may generate a plurality of fifth feature maps by pooling difference maps based on a filter kernel having a third size different from the first size and the second size.
  • the number of samples in the difference map used for one pooling process varies according to the size of the filter kernel. For example, in the case of a filter kernel having a size of 2x2, 4 samples in each difference map are pooled, and the next 4 samples in each difference map are pooled according to the stride. As another example, in the case of a filter kernel having a size of 4x4, 16 samples in each difference map are pooled, and next 16 samples in each difference map are pooled according to the stride.
  • the first stride used in the pooling process based on the filter kernel 2215 of the first size may be different from the second stride used in the pooling process based on the filter kernel 2216 of the second size.
  • the first size and the first stride may be greater than the second size and the second stride.
  • the first magnitude and the first stride may be k (k is a natural number), and the second magnitude and second stride may be k/2.
  • the size k or k/2 means that the horizontal or vertical size of the filter kernel is k or k/2.
  • the fact that the first size is k means that the number of samples used in one pooling process in the horizontal direction or in the vertical direction is k.
  • the second size is k/2, it means that the number of samples used in one pooling process in the horizontal direction or in the vertical direction is k/2.
  • the pooling process according to the filter kernel of size k and the stride of k serves to remove noise components of the difference map calculated for each sample in consideration of the motion direction in a relatively large area.
  • the pooling process according to the k / 2 size filter kernel and the k / 2 stride prevents blur that may occur due to the pooling process based on the large size filter kernel in consideration of motion in a relatively small area. serves to alleviate
  • the difference maps indicate the difference between the current sample in the first frame and the collocated sample in the second frame and the neighboring samples of the collocated sample, as described above, when the motion information of the object is large or the first frame When the resolution of the second frame and the second frame are large, the motion vector of the current sample may not be accurately calculated.
  • the pooling processing unit 1830 pools difference maps based on filter kernels of different sizes, so that samples far from the collocated sample in the second frame can have an effect on calculating the motion vector of the current sample. . That is, the entire context of the second frame is considered.
  • the combining unit 1840 may generate a plurality of deformation difference maps by combining the plurality of third feature maps and the plurality of fourth feature maps.
  • the combining unit 1840 may generate a modified difference map corresponding to any one difference map by combining the third feature map and the fourth feature map generated through the pooling process for any one difference map.
  • the combiner 1840 may generate a modified difference map corresponding to the other difference map by combining the third feature map and the fourth feature map generated through the pooling process for the other difference map. .
  • the combiner 1840 may generate a plurality of deformation difference maps by weighting summing samples of the plurality of third feature maps and samples of the plurality of fourth feature maps according to predetermined weights.
  • the combiner 1840 may determine weights applied to the plurality of third feature maps and weights applied to the plurality of fourth feature maps to be different from each other.
  • the combiner 1840 may determine a weight applied to the third feature maps greater than a weight applied to the fourth feature maps. Accordingly, a sample far from the collocated sample of the second frame corresponding to the current sample may have more influence in determining the motion vector of the current sample.
  • the combiner 1840 may determine a weight applied to the third feature maps to be smaller than a weight applied to the fourth feature maps.
  • the combiner 1840 may determine weights to be applied to the third feature maps and weights to be applied to the fourth feature maps according to the contents of the first frame and the second frame.
  • the first frame and the second frame are frames constituting a sports game or an action movie (that is, frames of an image with large object motion), and the first filter kernel used to generate the third feature maps If the size is greater than the second size of the filter kernel used to generate the fourth feature maps, weights applied to the third feature maps may be determined to be greater than weights applied to the fourth feature maps.
  • the weight applied to the third feature maps is set as the fourth feature It can be determined to be smaller than the weight applied to the maps.
  • Weights to be applied to feature maps generated through the pooling process may be determined based on a neural network, which will be described later with reference to FIG. 26 .
  • the motion vector determiner 1850 may derive motion vectors corresponding to samples in the first frame by using a plurality of transform difference maps.
  • the motion vector determiner 1850 may identify one collocated sample by considering the sizes of the collocated samples of the plurality of deformation difference maps corresponding to the current sample of the first frame.
  • the motion vector determiner 1850 may identify a collocated sample having the smallest size among collocated samples of a plurality of deformation difference maps.
  • the motion vector determiner 1850 may check the second filter kernel used to obtain the second feature map corresponding to the modified difference map including the identified collocated samples. Since the plurality of second filter kernels, the plurality of second feature maps, the plurality of difference maps, and the plurality of modified difference maps correspond 1: 1, the motion vector determiner 1850 includes the identified collocated sample. A second filter kernel corresponding to the deformation difference map can be checked.
  • the motion vector determiner 1850 may determine the identified second filter kernel as a motion vector corresponding to the current sample.
  • the convolution processing unit 1810 may transform the second frame to be similar to the first frame by applying motion compensation to the second frame.
  • the convolution processing unit 1810 may perform motion compensation by performing convolution on the second frame based on a filter kernel corresponding to the motion vector. Since the motion compensation process based on the filter kernel has been described with reference to FIGS. 8 and 9 , a detailed description thereof will be omitted.
  • FIG. 19 is a diagram for explaining convolution processing for the first frame 1910. Referring to FIG. 19
  • first frame 1910 and the first filter kernel 1915 have a size of 4x4, but this is only an example and the first frame 1910 and the first filter kernel 1915 have a size of 4x4. Sizes can vary.
  • a first feature map 1930 may be generated through a convolution operation between sample values of the first frame 1910 and samples of the first filter kernel 1915 .
  • the size of the first feature map 1930 is also 4x4, which may be the same as that of the first frame 1910.
  • a sample used in the multiplication operation with each of the samples in the first frame 1910 in the convolution operation process may have a value of 1, and the remaining samples may have a value of 0. there is.
  • the position of the top left sample among the samples of the first filter kernel 1915 is (0,0)
  • the value of the sample at the position of (1, 1) is 1, and the other sample values are 0
  • the first filter kernel 1915 moves according to the stride and performs a convolution operation with the first frame 1910
  • the sample at the position of (1, 1) in the first filter kernel 1915 is the first frame 1910 ) can be used for multiplication with each sample.
  • the first filter kernel 1915 may perform a convolution operation with the samples in the first frame 1910 while moving according to the stride (the stride is 1 in FIG. 19 ). Since the sample value of the first filter kernel 1915 used for the multiplication operation with each of the samples in the first frame 1910 is 1 in the convolution operation process, the first feature map 1930 is identical to that of the first frame 1910. ) can be created.
  • portions P indicated by dotted lines outside the first frame 1910 are padding areas, and the convolution processor 1810 generates a first feature map 1930 having the same size as the first frame 1910.
  • the first frame 1910 may be padded to generate .
  • Sample values of the padding area may be set to 0, but are not limited thereto.
  • FIG. 20 is a diagram for explaining convolution processing for the second frame 2010. Referring to FIG.
  • FIG. 20 shows only the convolution process by one of the second filter kernels 2015 for clarity.
  • a plurality of second feature maps corresponding to each of the plurality of second filter kernels may be generated through convolution processing by each of the plurality of second filter kernels.
  • a process of convolution processing by second filter kernels other than the second filter kernel 2015 shown in FIG. 20 among a plurality of second filter kernels may be the same as the process described below.
  • the second frame 2010 and the second filter kernel 2015 have a size of 4x4, but this is only an example, and the second frame 2010 and the second filter kernel 2015 Sizes can vary.
  • the second feature map 2030 can be generated through a convolution operation between sample values of the second frame 2010 and samples of the second filter kernel 2015.
  • the size of the second feature map 2030 is also 4x4. As , it may be the same as the size of the second frame 2010 .
  • portions P indicated by dotted lines outside the second frame 2010 are padding areas, and the convolution processor 1810 generates a second feature map 2030 having the same size as the second frame 2010.
  • the second frame 2010 may be padded to generate .
  • the padding area may have a value of 0, but is not limited thereto.
  • any one of the samples of the second filter kernel 2015 may have a value of -1, and the remaining samples may have a value of 0.
  • the position of a sample having a value of -1 may be different for each second filter kernel.
  • the second filter kernel 2015 may perform a convolution operation with the samples in the second frame 2010 while moving according to the stride (the stride is 1 in FIG. 20 ).
  • the second feature map 2030 corresponding to the second filter kernel 2015 is generated through a convolution operation between samples in the second frame 2010 and samples of the second filter kernel 2015. It can be.
  • the plurality of second filter kernels may correspond to motion vector candidates corresponding to samples of the first frame 1910 .
  • One of the motion vector candidates may be determined as a motion vector for each of the samples of the first frame 1910 .
  • FIG. 21 is a diagram for explaining a method of obtaining a difference map 2100 between a first feature map 1930 and a second feature map 2030. Referring to FIG. 21
  • the comparator 1820 may generate a difference map 2100 between samples of the first feature map 1930 and samples of the second feature map 2030 .
  • the comparator 1820 may compare samples at the same location.
  • the process of deriving the difference map 2100 between the first feature map 1930 and the second feature map 2030 will be described.
  • the absolute value of the sum of 0, which is the upper left sample value of may be assigned as the upper left sample value of the difference map 2100.
  • the absolute value of the sum of the right sample value of 2 of the upper left sample of the first feature map 1930 and the value of 0 of the right sample of the upper left sample of the second feature map 2030 is the value of the upper left sample of the difference map 2100. It can be assigned to the right sample value.
  • the absolute value of the sum of 7, which is the lower right sample value of the first feature map 1930, and -3, which is the lower right sample value of the second feature map 2030 is the lower right sample value of the difference map 2100.
  • Sample values of the difference map 2100 may represent how similar samples of the first frame 1910 are to samples located at the same location in the second frame 2010 and samples positioned around it.
  • the second feature map 2030 is generated from the second filter kernel 2015 in which the upper-left sample value is -1, the fact that the sample value of a specific position in the difference map 2100 is small indicates that the specific value in the first frame 1910 is small. It may mean that there is a high possibility that the motion vector of the sample at the position is the second filter kernel 2015 in which the value of the upper left sample is -1.
  • the pooling processing unit 1830 may perform a pooling process on the difference map 2100 in order to prevent motion vectors from being inaccurate due to noise.
  • 22 is a diagram for explaining a pooling process for the difference map 2100.
  • the pooling processor 1830 pools the difference map 2100 based on the filter kernel 2215 of the first size, the filter kernel 2216 of the second size, and the filter kernel 2217 of the third size. 22 illustrates the average pooling process.
  • the first size is 4 (or 4x4)
  • the second size is 2 (or 2x2)
  • the third size is 1 (or 1x1).
  • a third feature map 2202 having an average value of sample values in the difference map 2100 as a sample value is generated.
  • a fourth feature map 2204 having an average value of 4 sample values in the difference map 2100 as a sample value can be created.
  • the size of the filter kernels 2215, 2216, and 2217 shown in FIG. 22 is only an example, and if the size of the filter kernels used in the pooling process is different from each other, the number and size of the filter kernels may vary.
  • 23 is a diagram for explaining a method of combining a third feature map 2202, a fourth feature map 2204, and a fifth feature map 2206 obtained through pooling processing.
  • the combining unit 1840 may generate a modified difference map 2300 by combining the third feature map 2202 , the fourth feature map 2204 , and the fifth feature map 2206 .
  • weights applied to the third feature map 2202, the fourth feature map 2204, and the fifth feature map 2206 are all 1. However, as described above, weights applied to the third feature map 2202, the fourth feature map 2204, and the fifth feature map 2206 may be variously determined.
  • 24 is a diagram for explaining a method of determining motion vectors from the transformation difference maps 2300a to 2300p.
  • the motion vector determiner 1850 compares sizes of samples at the same location of the modified difference maps 2300a to 2300p to identify minimum samples for each location. In other words, the motion vector determiner 1850 may identify samples for each position having the smallest size among samples at the same position of the modified difference maps 2300a to 2300p.
  • the motion vector determiner 1850 may identify samples having the smallest size for each position from a position of (0,0) to a position of (3, 3) of the modified difference maps 2300a to 2300p. .
  • the deformation difference map 2300a, the deformation difference map 2300b, and the deformation difference map 2300p shown in FIG. 24 the deformation difference map 2300a, the deformation difference map 2300b, and the deformation difference map 2300p Since the sample value of 5.5 of the top-left sample of the deformation difference map 2300a is the smallest among the top-left samples (samples at position (0,0)) of sample can be identified.
  • the lower right sample of the deformation difference map 2300a Since the sample value of 8.2 is the smallest, the lower right sample with the smallest size can be identified as the lower right sample in the deformation difference map 2300a.
  • the motion vector determiner 1850 identifies deformation difference maps to which the minimum samples identified for each location belong, and converts second filter kernels used to generate second feature maps corresponding to the identified deformation difference maps into motion vectors for each location. can decide
  • the motion vector determiner 1850 determines the second feature corresponding to the corresponding transformation difference map.
  • a second filter kernel used to generate a map may be determined as a motion vector of an upper left sample of the first frame 1910 .
  • the lower right sample of the deformation difference map 2300a Since the sample value of 8.2 is the smallest, the motion vector corresponding to the lower right sample of the first frame may be determined as the second filter kernel used to generate the second feature map corresponding to the deformation difference map 2300a.
  • the motion vector determiner 1850 may obtain second filter kernels corresponding to each of the samples of the first frame 1910 as motion vectors.
  • Each motion vector map 2400 shown in FIG. 24 represents an identification value of the second filter kernel determined as a motion vector corresponding to each position.
  • the convolution process on the first frame 1910 based on the first filter kernel and the convolution process on the second frame 2010 based on a plurality of second filter kernels are extended convolution Dilated convolution processing may be included. This will be described with reference to FIG. 25 .
  • 25 is a diagram illustrating samples within a frame used for a convolution operation between a first filter kernel 1915 and a second filter kernel 2015. Referring to FIG.
  • FIG. 25 shows only one second filter kernel 2015 for simplicity, the fact that a plurality of second filter kernels are used in the convolution operation with the second frame may be the same as described above.
  • the convolution processing unit 1810 determines samples within a frame 2500 (first frame or second frame) used for convolution operation with the first filter kernel 1915 and the second filter kernel 2015 to be adjacent to each other. can When samples are adjacent to each other, it means that the distance between adjacent samples is 1. Performing a convolution operation on samples adjacent to each other within the frame 2500 may be referred to as general convolution processing.
  • the convolution processing unit 1810 may determine samples within the frame 2500 used for the convolution operation with the first filter kernel 1915 and the second filter kernel 2015 to be spaced apart from each other. That the samples are spaced apart from each other may mean that the distance between adjacent samples is greater than 1. If the distance between one sample and another neighboring sample is greater than 1, it may mean that one or more other samples are located between one sample and another sample. Performing a convolution operation on samples spaced apart from each other within the frame 2500 may be referred to as extended convolution processing.
  • the shaded samples in the frame 2500 represent samples used in the convolution operation with the first filter kernel 1915 and the second filter kernel 2015, and the corresponding samples are shown at the top in FIG. As shown, they may be positioned adjacent to each other, and as shown in the lower portion of FIG. 25, they may be spaced apart from each other.
  • the convolution processing unit 1810 may use samples farther from the collocated sample in the second frame when determining the motion vector of the current sample by performing extended convolution processing on the first frame and the second frame. there is.
  • the convolution processing unit 1810 performs an extended convolution process on the first frame and the second frame when the sizes of the first frame and the second frame are equal to or greater than a predetermined size, and the first frame and the second frame If the size of the second frame is smaller than the predetermined size, general convolution processing may be performed on the first frame and the second frame.
  • a neural network 2600 that calculates weights for combining feature maps generated through a pooling process will be described.
  • 26 is a diagram for explaining a training method of a neural network 2600 outputting weights for combining feature maps obtained through pooling processing.
  • Neural network 2600 may include one or more convolutional layers.
  • the neural network 2600 may receive the first frame and the second frame, process the first frame and the second frame with preset weight values, and output a plurality of preliminary weights.
  • the neural network 2600 determines the first preliminary weights to be applied to the plurality of third feature maps, the plurality of feature maps, and the plurality of feature maps.
  • a second preliminary weight to be applied to the fourth feature map and a third preliminary weight to be applied to the plurality of fifth feature maps may be output. If a plurality of third feature maps and a plurality of fourth feature maps are generated through the pooling process, the neural network 2600 may be configured to output first preliminary weights and second preliminary weights.
  • the plurality of third feature maps, the plurality of fourth feature maps, and the plurality of fifth feature maps generated through the pooling process are According to the first preliminary weight, the second preliminary weight, and the third preliminary weight, weighted combination may be performed in the motion estimation process 260 . Also, motion vectors corresponding to samples in the first frame may be obtained from the transformed difference maps, which are results of the weighted combination.
  • the neural network 2600 may output first preliminary weights to be applied to samples in each third feature map. Similarly, the neural network 2600 may output second preliminary weights to be applied to samples in each fourth feature map, and output third preliminary weights to be applied to samples in each fifth feature map.
  • Motion compensation processing 2604 may be applied to the second frame according to motion vectors corresponding to samples in the first frame. Motion compensation processing 2604 may cause the second frame to be similarly transformed to the first frame.
  • the first loss information corresponding to the difference between the motion-compensated second frame and the first frame may be used to train the neural network 2600 .
  • the first loss information is an L1-norm value, an L2-norm value, a Structural Similarity (SSIM) value, a Peak Signal-To-Noise Ratio-PSNR-HVS (PSNR-HVS) value corresponding to the difference between the first frame and the motion-compensated second frame.
  • SSIM Structural Similarity
  • PSNR-HVS Peak Signal-To-Noise Ratio-PSNR-HVS
  • MS-SSIM Human Vision System
  • MS-SSIM Multiscale SSIM
  • VIF Variance Inflation Factor
  • VMAF Video Multimethod Assessment Fusion
  • 1-NCC Normalized Cross Correlation
  • second loss information and/or third loss information may be calculated from the first preliminary weight, the second preliminary weight, and the third preliminary weight.
  • the second loss information may indicate how different the sum of the first preliminary weight, the second preliminary weight, and the third preliminary weight is from a predetermined threshold value.
  • the second loss information may be used to match the sum of the first preliminary weight, the second preliminary weight, and the third preliminary weight to a predetermined threshold value.
  • the size ratio between the first preliminary weight, the second preliminary weight, and the third preliminary weight is more important than what value each has. Therefore, by restricting the sum of the first preliminary weight, the second preliminary weight, and the third preliminary weight to match a predetermined threshold value, at least one of the first preliminary weight, the second preliminary weight, and the third preliminary weight becomes very large. that can be prevented
  • the third loss information may indicate how small negative values the first preliminary weight, the second preliminary weight, and the third preliminary weight have.
  • the third loss information limits the first preliminary weight, the second preliminary weight, and the third preliminary weight to have positive values.
  • the difference map may indicate how different the samples of the first feature map and the samples of the second feature map are. If a negative weight is applied to any one of the third feature map, the fourth feature map, and the fifth feature map generated through the pooling process for the difference map, the characteristics of the difference map may not be properly reflected in the modified difference map. Therefore, the first preliminary weight, the second preliminary weight, and the third preliminary weight are limited to positive values.
  • the second loss information and the third loss information may be calculated according to Equations 2 and 3, respectively.
  • Equation 2 ⁇ , ⁇ , and ⁇ denote the first preliminary weight, the second preliminary weight, and the third preliminary weight, respectively, and i is the index of the sample.
  • k represents a predetermined threshold value.
  • Equation 3 r() represents a relu function. r(- ⁇ ) outputs - ⁇ when ⁇ is negative, and outputs 0 when ⁇ is positive.
  • Equation 3 it can be seen that when ⁇ , ⁇ , and ⁇ are all positive numbers, the third loss information is calculated as 0, and the third loss information increases as ⁇ , ⁇ , and ⁇ are negative numbers and their values are smaller. .
  • the neural network 2600 may update weight values in the neural network 2600 such that final loss information calculated from at least one of the first loss information, the second loss information, and the third loss information is reduced or minimized.
  • the neural network 2600 assigns the first preliminary weight, the second preliminary weight, and the third preliminary weight that cause the minimum final loss information to the first weight, the second preliminary weight, and the second preliminary weight to be applied to the third feature maps, the fourth feature maps, and the fifth feature maps. It can be determined by the weight and the third weight.
  • the neural network 2600 may be pre-trained according to the first training frame and the second training frame. Specifically, the neural network 2600 may output first preliminary weights, second preliminary weights, and third preliminary weights by processing the first training frame and the second training frame with preset weight values. Further, the training device (such as the image processing device 1800 or an external server) generates motion-compensated second training frames through a motion compensation process 2604 for the second training frame based on the motion vectors output from the motion prediction process 2602. A training frame can be acquired.
  • the training device such as the image processing device 1800 or an external server
  • the neural network 2600 generates first loss information calculated from a first training frame and a motion-compensated second training frame, and second loss information calculated from first preliminary weights, second preliminary weights, and third preliminary weights, and/or An internal weight value may be updated according to the third loss information.
  • the neural network 2600 may update the weight values so that the final loss information is reduced or minimized. Then, when the first frame and the second frame are input to the neural network 2600, the neural network 2600 processes the first frame and the second frame according to weight values optimized through training, and obtains a first weight and a second weight And a third weight can be output.
  • FIG. 27 is a flowchart illustrating an image processing method according to another exemplary embodiment.
  • step S2710 the image processing device 1800 obtains a first feature map corresponding to the first filter kernel by convolving the first frame with the first filter kernel. In one embodiment, the image processing device 1800 may omit performing step S2710.
  • step S2720 the image processing apparatus 1800 obtains a plurality of second feature maps corresponding to the plurality of second filter kernels by convolution-processing the second frame with a plurality of second filter kernels.
  • the image processing device 1800 obtains difference maps between the first feature map and the plurality of second feature maps.
  • the number of difference maps may be equal to the number of second feature maps.
  • step S2740 the image processing device 1800 pools the difference maps according to different sizes, eg, a filter kernel of a first size and a filter kernel of a second size, to obtain a plurality of third feature maps and a plurality of second feature maps. Acquire 4 feature maps.
  • the number of the plurality of third feature maps and the number of the plurality of fourth feature maps may be equal to the number of difference maps.
  • step S2750 the image processing device 1800 obtains a plurality of deformation difference maps by adding a weighted sum of the plurality of third feature maps and the plurality of fourth feature maps.
  • the number of the plurality of modified difference maps may be equal to the number of the plurality of difference maps.
  • step S2760 the image processing device 1800 compares the size of samples at the same position in the deformation difference maps to identify samples having the minimum value for each position.
  • the image processing device 1800 determines motion vectors corresponding to samples of the first frame from samples having minimum values for each position.
  • the image processing apparatus 1800 identifies a morph difference map to which samples having the minimum value for each position belong, and uses a second filter kernel used to generate a second feature map corresponding to the identified morph difference map. may be determined as a motion vector for each position.
  • the above-described embodiments of the present disclosure can be written as a program that can be executed on a computer, and the written program can be stored in a storage medium readable by a device.
  • the device-readable storage medium may be provided in the form of a non-transitory storage medium.
  • 'non-temporary storage medium' only means that it is a tangible device and does not contain signals (e.g., electromagnetic waves), and this term refers to the case where data is stored semi-permanently in the storage medium and temporary It does not discriminate if it is saved as .
  • a 'non-temporary storage medium' may include a buffer in which data is temporarily stored.
  • the method according to various embodiments disclosed in this document may be provided by being included in a computer program product.
  • Computer program products may be traded between sellers and buyers as commodities.
  • a computer program product is distributed in the form of a device-readable storage medium (e.g. compact disc read only memory (CD-ROM)), or through an application store (e.g. Play StoreTM) or on two user devices (e.g. It can be distributed (eg downloaded or uploaded) online, directly between smartphones.
  • a part of a computer program product eg, a downloadable app
  • a device-readable storage medium such as a memory of a manufacturer's server, an application store server, or a relay server. It can be temporarily stored or created temporarily.

Landscapes

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

Abstract

제 1 프레임 또는 제 1 프레임에 대응하는 제 1 특징 맵과, 제 2 프레임에 대응하는 복수의 제 2 특징 맵들 사이의 복수의 차이 맵들을 획득하고, 복수의 차이 맵들을 제 1 크기 및 제 2 크기에 따라 풀링 처리하여 복수의 제 3 특징 맵들과 복수의 제 4 특징 맵들을 획득하고, 복수의 제 3 특징 맵들과 복수의 제 4 특징 맵들을 가중 합하여 복수의 변형 차이 맵들을 획득하고, 제 1 프레임의 현재 샘플에 대응하는 복수의 변형 차이 맵들의 콜로케이티드 샘플들의 크기를 고려하여 어느 하나의 콜로케이티드 샘플을 식별하고, 식별된 콜로케이티드 샘플을 포함하는 변형 차이 맵에 대응하는 제 2 특징 맵을 획득하는데 이용된 필터 커널을 현재 샘플의 움직임 벡터로 결정하는, 일 실시예에 따른 영상 처리 장치가 개시된다.

Description

프레임들 사이의 움직임 벡터를 결정하는 영상 처리 장치 및 이에 의한 방법
본 개시는 영상 또는 프레임의 처리 분야에 관한 것이다. 보다 구체적으로, 본 개시는 여러 영상들 또는 여러 프레임들을 신경망 기반으로 처리하는 분야에 관한 것이다.
영상의 부호화 또는 디스플레이 전에 영상을 처리하는 다양한 기술이 존재한다. 영상 처리 기술이란 입력과 출력이 영상인 모든 형태의 정보를 처리하는 기술로서, 영상의 개선, 강조, 압축 등과 같이 인간의 이해를 돕거나 이차적인 응용을 위해 영상을 가공하고, 변형시키는 기술을 의미한다.
영상 처리 기술들은 알고리즘 기반으로 발전하였는데, 근래에 인공지능 기술이 발전함에 따라 영상 처리의 상당 부분이 인공 지능 기반으로 수행되고 있다. 인공 지능 모델의 대표적인 예시로서, 신경망(neural network)이 존재한다.
신경망은 훈련 데이터를 통해 훈련될 수 있다. 신경망은 훈련을 통해 설정된 가중 값으로 영상을 처리하여 원하는 처리 결과를 획득할 수 있다. 다만, 아직까지의 신경망 기반의 영상 처리는 시계열적으로 관련된 멀티 프레임을 처리하는데 효과적이지 않다.
일 실시예는, 멀티 프레임의 시간적 상관성(temporal correlation)을 고려하여 프레임들을 효과적으로 처리하는 것을 기술적 과제로 한다.
또한, 일 실시예는, 프레임들 사이의 움직임 벡터를 정확하게 결정하는 것을 기술적 과제로 한다.
일 실시예에 따른 영상 처리 장치는, 하나 이상의 인스트럭션을 저장하는 메모리; 및 상기 메모리에 저장된 상기 하나 이상의 인스트럭션을 실행하는 프로세서를 포함하고, 상기 프로세서는, 제 1 프레임 또는 상기 제 1 프레임에 대응하는 제 1 특징 맵과, 제 2 프레임에 대응하는 복수의 제 2 특징 맵들 사이의 복수의 차이 맵(difference map)들을 획득하고, 복수의 차이 맵들을 제 1 크기 및 제 2 크기에 따라 풀링 처리하여 복수의 제 3 특징 맵들과 복수의 제 4 특징 맵들을 획득하고, 상기 복수의 제 3 특징 맵들과 상기 복수의 제 4 특징 맵들을 가중 합(weighted summing)하여 복수의 변형 차이 맵(modified difference map)들을 획득하고, 상기 제 1 프레임의 현재 샘플에 대응하는 상기 복수의 변형 차이 맵들의 콜로케이티드 샘플들의 샘플 값들의 크기를 고려하여 어느 하나의 콜로케이티드 샘플을 식별하고, 상기 식별된 콜로케이티드 샘플을 포함하는 변형 차이 맵에 대응하는 제 2 특징 맵을 획득하는데 이용된 필터 커널을 상기 현재 샘플의 움직임 벡터로 결정할 수 있다.
일 실시예에 따른 영상 처리 장치 및 이에 의한 방법은 현재 프레임과 이전 프레임 사이의 시간적 상관성을 기초로 현재 프레임을 처리함으로써 현재 프레임의 처리 성능을 향상시킬 수 있다.
또한, 일 실시예에 따른 영상 처리 장치 및 이에 의한 방법은 프레임들로부터 노이즈에 대한 강인성이 우수한 움직임 벡터를 도출할 수 있다.
다만, 일 실시예에 따른 영상 처리 장치 및 이에 의한 방법이 달성할 수 있는 효과는 이상에서 언급한 것들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 개시에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 일 실시예에 따른 영상 처리 장치의 구성을 도시하는 도면이다.
도 2는 일 실시예에 따른 현재 프레임의 처리 과정을 도시하는 도면이다.
도 3은 컨볼루션 연산을 설명하기 위한 도면이다.
도 4는 도 2에 도시된 움직임 예측 과정을 설명하기 위한 도면이다.
도 5는 움직임 예측을 위해 현재 프레임에 적용되는 컨볼루션 연산을 도시하는 예시적인 도면이다.
도 6은 움직임 예측을 위해 이전 프레임에 적용되는 컨볼루션 연산을 도시하는 예시적인 도면이다.
도 7은 현재 프레임 내 샘플들에 대응하는 예측 샘플들을 도시하는 예시적인 도면이다.
도 8은 도 2에 도시된 움직임 보상 과정을 설명하기 위한 도면이다.
도 9는 움직임 예측 결과를 이용하여 이전 프레임을 움직임 보상하는 과정을 도시하는 예시적인 도면이다.
도 10은 움직임 보상의 결과로 획득된 예측 프레임에 가중치를 적용하는 과정을 도시하는 예시적인 도면이다.
도 11은 다운샘플링된 프레임을 대상으로 하여 획득된 움직임 벡터의 개수를 증가시키는 방법을 설명하기 위한 도면이다.
도 12는 신경망에 포함된 제 1 서브 신경망의 구조를 도시하는 도면이다.
도 13은 신경망에 포함된 마지막 서브 신경망의 구조를 도시하는 도면이다.
도 14는 일 실시예에 따른 영상 처리 방법의 응용 예를 도시하는 도면이다.
도 15는 다른 실시예에 따른 영상 처리 방법의 응용 예를 도시하는 도면이다.
도 16은 또 다른 실시예에 따른 영상 처리 방법의 응용 예를 도시하는 도면이다.
도 17은 일 실시예에 따른 멀티 프레임의 처리 방법의 순서도이다.
도 18은 다른 실시예에 따른 영상 처리 장치의 구성을 도시하는 도면이다.
도 19는 제 1 프레임에 대한 컨볼루션 처리를 설명하기 위한 도면이다.
도 20은 제 2 프레임에 대한 컨볼루션 처리를 설명하기 위한 도면이다.
도 21은 제 1 특징 맵과 제 2 특징 맵 사이의 차이 맵을 획득하는 방법을 설명하기 위한 도면이다.
도 22는 차이 맵에 대한 풀링 처리를 설명하기 위한 도면이다.
도 23은 풀링 처리를 통해 획득된 제 3 특징 맵, 제 4 특징 맵 및 제 5 특징 맵을 결합하는 방법을 설명하기 위한 도면이다.
도 24는 변형 차이 맵들로부터 움직임 벡터들을 결정하는 방법을 설명하기 위한 도면이다.
도 25는 제 1 필터 커널과 제 2 필터 커널과의 컨볼루션 연산에 이용되는 프레임 내 샘플들을 나타내는 도면이다.
도 26은 풀링 처리를 통해 획득된 특징 맵들을 결합하기 위한 가중치들을 출력하는 신경망의 훈련 방법을 설명하기 위한 도면이다.
도 27은 다른 실시예에 따른 영상 처리 방법을 설명하기 위한 순서도이다.
일 실시예에 따른 영상 처리 장치는, 하나 이상의 인스트럭션을 저장하는 메모리; 및 상기 메모리에 저장된 상기 하나 이상의 인스트럭션을 실행하는 프로세서를 포함하고, 상기 프로세서는, 제 1 프레임 또는 상기 제 1 프레임에 대응하는 제 1 특징 맵과, 제 2 프레임에 대응하는 복수의 제 2 특징 맵들 사이의 복수의 차이 맵(difference map)들을 획득하고, 복수의 차이 맵들을 제 1 크기 및 제 2 크기에 따라 풀링 처리하여 복수의 제 3 특징 맵들과 복수의 제 4 특징 맵들을 획득하고, 상기 복수의 제 3 특징 맵들과 상기 복수의 제 4 특징 맵들을 가중 합(weighted summing)하여 복수의 변형 차이 맵(modified difference map)들을 획득하고, 상기 제 1 프레임의 현재 샘플에 대응하는 상기 복수의 변형 차이 맵들의 콜로케이티드 샘플들의 샘플 값들의 크기를 고려하여 어느 하나의 콜로케이티드 샘플을 식별하고, 상기 식별된 콜로케이티드 샘플을 포함하는 변형 차이 맵에 대응하는 제 2 특징 맵을 획득하는데 이용된 필터 커널을 상기 현재 샘플의 움직임 벡터로 결정할 수 있다.
상기 제 1 크기에 기반한 풀링 처리에서 이용되는 제 1 스트라이드와 상기 제 2 크기에 기반한 풀링 처리에서 이용되는 제 2 스트라이드는 서로 다를 수 있다.
상기 제 1 크기 및 상기 제 1 스트라이드는, 상기 제 2 크기 및 상기 제 2 스트라이드보다 클 수 있다.
상기 제 1 크기 및 상기 제 1 스트라이드는 k(k는 자연수)이고, 상기 제 2 크기 및 상기 제 2 스트라이드는 k/2일 수 있다.
상기 프로세서는, 상기 복수의 제 3 특징 맵들에 적용되는 제 1 가중치와 상기 복수의 제 4 특징 맵들에 적용되는 제 2 가중치를 신경망으로부터 획득할 수 있다.
상기 프로세서는, 상기 신경망으로부터 출력되는 제 1 예비 가중치와 제 2 예비 가중치를 기초로 상기 복수의 제 3 특징 맵들과 상기 복수의 제 4 특징 맵들을 가중 합하여 복수의 변형 차이 맵들을 획득하고, 상기 복수의 변형 차이 맵들로부터 상기 제 1 프레임의 샘플들에 대응하는 음직임 벡터들을 결정하고, 상기 결정된 움직임 벡터들에 기초하여 상기 제 2 프레임을 움직임 보상하되, 상기 신경망은, 상기 움직임 보상된 상기 제 2 프레임과 상기 제 1 프레임 사이의 차이에 대응하는 제 1 손실 정보에 기초하여 훈련될 수 있다.
상기 신경망은, 상기 제 1 예비 가중치와 상기 제 2 예비 가중치의 합이 미리 결정된 임계 값과 얼마나 차이가 나는지를 나타내는 제 2 손실 정보에 더 기초하여 훈련될 수 있다.
상기 신경망은, 상기 제 1 예비 가중치와 상기 제 2 예비 가중치가 얼마나 작은 음수 값을 가지는지를 나타내는 제 3 손실 정보에 더 기초하여 훈련될 수 있다.
상기 풀링 처리는, 에버리지 풀링 처리(average pooling process) 또는 메디안 풀링 처리(median pooling process)를 포함할 수 있다.
상기 제 1 특징 맵은 상기 제 1 프레임에 대한 제 1 필터 커널 기반의 컨볼루션 처리를 통해 획득되고, 상기 복수의 제 2 특징 맵들은 상기 제 2 프레임에 대한 복수의 제 2 필터 커널 기반의 컨볼루션 처리를 통해 획득될 수 있다.
상기 제 1 필터 커널 및 상기 복수의 제 2 필터 커널과 컨볼루션 연산되는 상기 제 1 프레임 및 상기 제 2 프레임의 샘플들 사이의 거리는 1보다 클 수 있다.
상기 제 1 필터 커널은, 상기 제 1 프레임의 현재 샘플에 대응하는 샘플이 기 설정된 제 1 값을 갖고, 다른 샘플들이 0의 값을 가질 수 있다.
상기 복수의 제 2 필터 커널들은, 어느 하나의 샘플이 기 설정된 제 2 값을 갖고, 다른 샘플들이 0의 값을 갖되, 상기 제 2 값을 갖는 상기 어느 하나의 샘플의 위치는 상기 복수의 제 2 필터 커널마다 다를 수 있다.
상기 기 설정된 제 1 값과 상기 기 설정된 제 2 값의 부호는 서로 반대일 수 있다.
일 실시예에 따른 영상 처리 방법은, 제 1 프레임 또는 상기 제 1 프레임에 대응하는 제 1 특징 맵과, 제 2 프레임에 대응하는 복수의 제 2 특징 맵들 사이의 복수의 차이 맵들을 획득하는 단계; 복수의 차이 맵들을 제 1 크기 및 제 2 크기에 따라 풀링 처리하여 복수의 제 3 특징 맵들과 복수의 제 4 특징 맵들을 획득하는 단계; 상기 복수의 제 3 특징 맵들과 상기 복수의 제 4 특징 맵들을 가중 합하여 복수의 변형 차이 맵들을 획득하는 단계; 상기 제 1 프레임의 현재 샘플에 대응하는 상기 복수의 변형 차이 맵들의 콜로케이티드 샘플들의 샘플 값들의 크기를 고려하여 어느 하나의 콜로케이티드 샘플을 식별하는 단계; 및 상기 식별된 콜로케이티드 샘플을 포함하는 변형 차이 맵에 대응하는 제 2 특징 맵을 획득하는데 이용된 필터 커널을 상기 현재 샘플의 움직임 벡터로 결정하는 단계를 포함할 수 있다.
본 개시는 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고, 이를 상세한 설명을 통해 설명하고자 한다. 그러나, 이는 본 개시를 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
실시예를 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 실시예의 설명 과정에서 이용되는 숫자(예를 들어, 제 1, 제 2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
본 개시에서, "a, b 또는 c 중 적어도 하나" 표현은 " a", " b", " c", "a 및 b", "a 및 c", "b 및 c", "a, b 및 c 모두", 혹은 그 변형들을 지칭할 수 있다.
본 개시에서 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.
본 개시에서 '~부(유닛)', '모듈' 등으로 표현되는 구성요소는 2개 이상의 구성요소가 하나의 구성요소로 합쳐지거나 또는 하나의 구성요소가 보다 세분화된 기능별로 2개 이상으로 분화될 수도 있다. 또한, 이하에서 설명할 구성요소 각각은 자신이 담당하는 주기능 이외에도 다른 구성요소가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성요소 각각이 담당하는 주기능 중 일부 기능이 다른 구성요소에 의해 전담되어 수행될 수도 있음은 물론이다.
본 개시에서, '프레임'은 정지 영상일 수 있다. 예를 들어, '프레임'은 동영상(또는 비디오)를 구성하는 정지 영상을 포함할 수 있다.
본 개시에서, '샘플'은 프레임 또는 특징 맵의 샘플링 위치에 할당된 데이터로서 처리 대상이 되는 데이터를 의미한다. 예를 들어, 공간 영역의 프레임에서 픽셀 값일 수 있다. 적어도 하나의 샘플들을 포함하는 단위를 블록이라고 정의할 수 있다.
본 개시에서, '현재 샘플(current sample)'은 처리 대상이 되는 현재 프레임(또는 제 1 프레임)에 포함된 특정의 샘플, 또는 현재 프레임(또는 제 1 프레임)에 포함된 샘플들 중 처리 대상이 되는 샘플을 의미한다. '콜로케이티드 샘플(collocated)'은 현재 프레임(또는 제 1 프레임) 이외의 프레임(예를 들어, 이전 프레임, 다음 프레임, 출력 프레임, 특징 맵, 제 2 프레임 등)에 포함된 샘플들 중 현재 샘플과 동일한 위치에 있는 샘플을 의미한다.
본 개시에서 '신경망(neural network)'은 뇌 신경을 모사한 인공지능 모델의 예시로서, 특정 알고리즘을 사용한 신경망 모델로 한정되지 않는다.
본 개시에서 '가중 값(weighting value)'는 신경망을 이루는 각 레이어의 연산 과정에서 이용되는 값으로서 예를 들어, 입력 값을 소정 연산식에 적용할 때 이용될 수 있다. 일반적으로, 가중 값(weighting value)은 가중치(weight)로도 참조되는데, 본 개시에서는 후술하는 가중치 도출 과정(도 2의 230 참조)에서 도출되는 가중치(weight)와의 구별을 위해 신경망의 연산 과정에서 이용되는 가중치를 가중 값으로 참조한다. 가중 값은 훈련의 결과로 설정되는 값으로서, 필요에 따라 별도의 훈련 데이터(training data)를 통해 갱신될 수 있다.
이하, 본 개시의 기술적 사상에 의한 실시예들을 차례로 상세히 설명한다.
도 1은 일 실시예에 따른 영상 처리 장치(100)의 구성을 도시하는 도면이다.
영상 처리 장치(100)는 메모리(110) 및 프로세서(130)를 포함한다.
영상 처리 장치(100)는 서버, TV, 카메라, 휴대폰, 태블릿 PC, 노트북 등 영상 처리 기능을 갖춘 기기로 구현될 수 있다.
도 1에는 메모리(110) 및 프로세서(130)가 개별적으로 도시되어 있는데, 일 실시예에서, 메모리(110) 및 프로세서(130)는 하나 이상의 하드웨어 모듈(예를 들어, 칩)을 통해 구현될 수 있다.
프로세서(130)는 신경망 기반의 영상 처리를 위한 전용 프로세서로 구현될 수 있다. 또는, 프로세서(130)는 AP(application processor), CPU(central processing unit) 또는 GPU(graphic processing unit)와 같은 범용 프로세서와 소프트웨어의 조합을 통해 구현될 수도 있다. 전용 프로세서의 경우, 본 개시의 실시예를 구현하기 위한 메모리를 포함하거나, 외부 메모리를 이용하기 위한 메모리 처리부를 포함할 수 있다.
프로세서(130)는 복수의 프로세서로 구성될 수도 있다. 이 경우, 전용 프로세서들의 조합으로 구현될 수도 있고, AP, CPU 또는 GPU와 같은 다수의 범용 프로세서들과 소프트웨어의 조합을 통해 구현될 수도 있다.
프로세서(130)는 후술하는 컨볼루션 연산을 위한 적어도 하나의 ALU(Arithmetic logic unit)를 포함할 수 있다. 컨볼루션 연산을 위해, ALU는 샘플 값들 사이의 곱 연산을 수행하는 곱셈기 및 곱셈의 결과 값들을 더하는 가산기를 포함할 수 있다.
메모리(110)는 연속된 프레임들의 처리를 위한 하나 이상의 인스트럭션을 저장할 수 있다. 일 실시예에서, 메모리(110)는 출력 프레임의 생성에 이용되는 신경망을 저장할 수 있다. 신경망이 인공 지능을 위한 전용 하드웨어 칩 형태로 구현되거나, 기존의 범용 프로세서(예를 들어, CPU 또는 애플리케이션 프로세서) 또는 그래픽 전용 프로세서(예를 들어, GPU)의 일부로 구현되는 경우에는, 신경망이 메모리(110)에 저장되지 않을 수 있다.
프로세서(130)는 메모리(110)에 저장된 인스트럭션에 따라 연속된 프레임들을 순차적으로 처리하여 연속된 출력 프레임들을 획득한다. 여기서, 연속된 프레임은 대표적으로 동영상을 구성하는 프레임들을 의미할 수 있다. 그러나, 본 개시에서 연속된 프레임이 반드시 하나의 동영상을 구성할 필요는 없다. 다시 말하면, 서로 개별적으로 촬영된 정지 영상들이 미리 결정된 순서, 임의의 순서 또는 사용자가 설정한 순서에 따라 영상 처리 장치(100)에 의해 처리될 수 있다.
도 1에 도시된 것과 같이, 영상 처리 장치(100)는 제 1 프레임(X1) 내지 제 n 프레임(Xn)을 순차적으로 처리하여 제 1 출력 프레임(Y1) 내지 제 n 출력 프레임(Yn)을 획득할 수 있다. 도 1에서 Xt의 t는 프레임이 영상 처리 장치(100)에 의해 처리되는 순서를 나타낼 수 있다.
영상 처리 장치(100)는 미리 훈련된 신경망을 통해 제 1 출력 프레임(Y1) 내지 제 n 출력 프레임(Yn)을 획득할 수 있다. 신경망은 프레임의 해상도 증가, 노이즈 제거, 다이내믹 레인지의 확장 또는 화질 개선을 위해 미리 훈련될 수 있다.
예를 들어, 신경망이 프레임의 해상도를 증가시키도록 훈련된 경우, 영상 처리 장치(100)는 제 1 프레임(X1) 내지 제 n 프레임(Xn)을 신경망 기반으로 처리하여 제 1 프레임(X1) 내지 제 n 프레임(Xn)의 해상도보다 큰 해상도를 갖는 제 1 출력 프레임(Y1) 내지 제 n 출력 프레임(Yn)을 획득할 수 있다.
프레임의 해상도를 증가시키기 위한 신경망을 훈련시키는 방법은 다양할 수 있다. 일 예로, 신경망에 의한 훈련용 프레임의 처리 결과로 획득되는 훈련용 출력 프레임과 미리 증가된 해상도를 갖는 정답 프레임을 비교하여 손실 정보를 산출하고, 산출된 손실 정보를 최소화시키는 방향으로 신경망을 훈련시킬 수 있다. 신경망의 훈련 결과, 신경망 내 레이어들에서 이용되는 가중 값들이 갱신될 수 있다.
다른 예로, 신경망이 프레임의 노이즈를 제거시키도록 훈련된 경우, 영상 처리 장치(100)는 제 1 프레임(X1) 내지 제 n 프레임(Xn)을 신경망 기반으로 처리하여 제 1 프레임(X1) 내지 제 n 프레임(Xn)에 포함된 노이즈보다 적은 노이즈를 갖는 제 1 출력 프레임(Y1) 내지 제 n 출력 프레임(Yn)을 획득할 수 있다.
프레임의 노이즈를 감소시키기 위한 신경망을 훈련시키는 방법은 다양할 수 있다. 일 예로, 신경망에 의한 훈련용 프레임의 처리 결과로 획득되는 훈련용 출력 프레임과 미리 노이즈가 제거된 정답 프레임을 비교하여 손실 정보를 산출하고, 산출된 손실 정보를 최소화시키는 방향으로 신경망을 훈련시킬 수 있다.
신경망은 지도 학습(Supervised Learning), 비지도 학습(Unsupervised Learning) 또는 강화 학습(Reinforcement Learning)을 통해 훈련될 수 있다.
일 실시예에 따르면, 연속된 프레임들 중 현재 처리 대상인 현재 프레임을 처리할 때, 이전 프레임도 함께 이용될 수 있다. 도 1에 도시된 바와 같이, 제 2 프레임(X2)이 처리될 차례에 제 1 프레임(X1)도 영상 처리 장치(100)로 입력될 수 있다. 후술하는 바와 같이, 제 1 프레임(X1)의 처리 결과로 획득되는 제 1 출력 프레임(Y1)과 제 1 프레임(X1)의 처리 중에 획득되는 특징 맵도 제 2 프레임(X2)과 함께 영상 처리 장치(100)로 입력될 수 있다.
현재 프레임의 처리 시 이전 프레임을 영상 처리 장치(100)로 입력하는 이유는 연속된 프레임들 사이의 시간적 상관성(temporal correlation)을 고려하기 위함이다. 현재 프레임의 처리에 이전 프레임의 정보, 예를 들어, 이전 프레임의 샘플 값들을 반영함으로써, 현재 프레임만을 신경망 기반으로 처리할 때보다 더 우수한 결과를 기대할 수 있다.
다만, 이전 프레임을 그대로 이용하는 경우에는 현재 출력 프레임에 포함된 오브젝트의 위치에 에러가 발생할 가능성이 있다. 그 이유는 서로 다른 시점에 촬영된 이전 프레임과 현재 프레임에 공통적으로 포함된 오브젝트의 위치가 이전 프레임과 현재 프레임 내에서 서로 다를 수 있기 때문이다. 다시 말하면, 공통의 오브젝트가 현재 프레임과 이전 프레임에서 서로 다른 지점에 위치하는 경우, 현재 프레임의 처리 과정 중에 이전 프레임에 포함된 오브젝트의 위치가 반영됨으로써 현재 출력 프레임에 포함된 오브젝트의 위치가 현재 프레임과 달라질 수 있는 것이다.
또한, 오브젝트의 움직임으로 인해, 이전 프레임에 존재하는 오브젝트가 현재 프레임에서는 오클루젼(occlusion)되어 있을 수도 있다. 오클루젼이란, 이전 프레임에 존재하는 오브젝트의 전부 또는 일부가 현재 프레임에 포함되지 않는 상황을 의미한다. 예를 들어, 이전 프레임에 포함된 오브젝트가 현재 프레임에서는 다른 오브젝트에 의해 가려져(hided) 있거나, 현재 프레임의 촬영시 카메라에 의해 캡쳐되지 않을 수 있다. 현재 프레임에서 오클루젼된 이전 프레임의 오브젝트는 현재 프레임의 처리에 도움이 되지 않을 수 있다.
이에 본 개시의 일 실시예에 따른 영상 처리 장치(100)는 현재 프레임과 이전 프레임의 시간적 상관성을 고려하기 위해 현재 프레임의 처리 시 이전 프레임도 함께 이용하지만, 이전 프레임을 그대로 이용하지 않고 대신 이전 프레임으로부터 생성된 예측 프레임을 현재 프레임의 처리에 이용할 수 있다.
또한, 영상 처리 장치(100)는 현재 프레임의 처리 과정에서 예측 프레임의 샘플들을 어느 정도로 이용할지를 판단하고, 그에 따라 예측 프레임을 게이팅(gating) 처리할 수 있다. 게이팅 처리에 대해서는 후술한다.
도 1에는 도시되어 있지는 않지만, 영상 처리 장치(100)는 디스플레이를 더 포함하거나, 별도의 디스플레이 장치와 연결될 수 있다. 영상 처리 장치(100)에 의해 생성된 연속된 출력 프레임들 중 적어도 하나는 디스플레이 또는 디스플레이 장치에서 재생될 수 있다. 필요한 경우, 출력 프레임들 중 적어도 하나는 후처리된 후 디스플레이 또는 디스플레이 장치에서 재생될 수도 있다.
일 실시예에서, 영상 처리 장치(100)는 주파수 변환을 이용한 영상 압축 방법을 통해 출력 프레임들 중 적어도 하나를 부호화할 수 있다. 주파수 변환을 이용한 영상 압축 방법은 출력 프레임을 예측하여 예측 데이터를 생성하는 과정, 출력 프레임과 예측 데이터 사이의 차이에 해당하는 잔차 데이터를 생성하는 과정, 공간 영역 성분인 잔차 데이터를 주파수 영역 성분으로 변환(transformation)하는 과정, 주파수 영역 성분으로 변환된 잔차 데이터를 양자화(quantization)하는 과정 및 양자화된 잔차 데이터를 엔트로피 부호화하는 과정 등을 포함할 수 있다. 이와 같은 영상 압축 방법은 MPEG-2, H.264 AVC(Advanced Video Coding), MPEG-4, HEVC(High Efficiency Video Coding), VC-1, VP8, VP9 및 AV1(AOMedia Video 1) 등의 주파수 변환을 이용한 영상 압축 방법들 중 적어도 하나를 통해 구현될 수 있다.
출력 프레임의 부호화를 통해 생성된 부호화 데이터 또는 비트스트림은 네트워크를 통해 외부 기기로 전달되거나, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium) 등의 데이터 저장 매체에 저장될 수 있다.
이하에서는, 도 2를 참조하여, 영상 처리 장치(100)에 의한 현재 프레임(Xt)의 처리 과정을 구체적으로 설명한다.
영상 처리 장치(100)는 움직임 예측 과정(210), 움직임 보상 과정(220), 가중치 도출 과정(230) 및 게이팅 과정(240)을 통해 신경망(250)으로 입력될 데이터를 획득한다.
먼저, 움직임 예측(210)은, 현재 프레임(Xt)의 샘플들과 이전 프레임(Xt-1)의 샘플들 사이의 움직임 벡터를 결정하는 과정이다. 움직임 벡터란, 이전 프레임(Xt-1)과 현재 프레임(Xt)에 존재하는 동일 또는 유사한 샘플들의 상대적인 위치 관계를 나타낸다. 예를 들어, 특정의 샘플이 이전 프레임(Xt-1)에서 (a,b) 좌표에 위치하고, 해당 샘플이 현재 프레임(Xt)에서 (c, d) 좌표에 위치하는 경우, 해당 샘플의 움직임 벡터는 (c-a, d-b)로 표현될 수 있다.
후술하는 바와 같이, 본 개시의 일 실시예에서 움직임 벡터는 컨볼루션 연산을 위한 필터 커널로 표현될 수도 있다.
영상 처리 장치(100)는 움직임 예측(210)을 통해 현재 프레임(Xt)의 샘플들에 대응하는 예측 샘플들을 이전 프레임(Xt-1)에서 식별할 수 있다.
일 실시예에서, 영상 처리 장치(100)는 현재 프레임(Xt)의 샘플들 각각이 이전 프레임(Xt-1)의 샘플들 중 어느 샘플과 유사한지를 써치하고, 써치된 이전 프레임(Xt-1) 내 샘플들을 현재 프레임(Xt) 내 샘플들의 예측 샘플로 식별할 수 있다. 예를 들어, 영상 처리 장치(100)는 현재 프레임(Xt)의 현재 샘플이 이전 프레임(Xt-1)의 샘플들 중 현재 샘플과 동일한 위치에 있는 샘플(즉, 콜로케이티드 샘플)의 우측에 있는 샘플과 가장 유사한 경우, 콜로케이티드 샘플의 우측에 있는 샘플을 현재 샘플의 예측 샘플로 식별할 수 있다.
일 실시예에서, 영상 처리 장치(100)는 움직임 예측(210)을 컨볼루션 연산을 통해 수행할 수 있는데, 이에 대해서는 도 4 내지 도 7을 참조하여 설명한다.
영상 처리 장치(100)는 현재 프레임(Xt)의 샘플들과 그에 대응하는 이전 프레임(Xt-1) 내 예측 샘플들 사이의 상대적인 위치 관계를 움직임 벡터로서 움직임 보상 과정(220)에서 이용한다.
움직임 보상 과정(220)은 이전 프레임(Xt-1)의 샘플들의 샘플 값들을 변경하여 현재 프레임(Xt)의 예측 버전인 예측 프레임(Xt_pred)을 획득하는 과정이다.
영상 처리 장치(100)는 이전 프레임(Xt-1)의 샘플 값들을 예측 샘플들의 샘플 값들에 따라 변경하여 예측 프레임(Xt_pred)을 획득할 수 있다.
일 실시예에서, 현재 프레임(Xt)의 샘플들과 동일한 위치에 있는 이전 프레임(Xt-1)의 콜로케이티드 샘플들의 샘플 값들이 예측 샘플들의 샘플 값들에 따라 변경될 수 있다. 예를 들어, 현재 프레임(Xt)의 좌측 상단에 위치하는 현재 샘플의 예측 샘플이 이전 프레임(Xt-1)의 콜로케이티드 샘플의 우측에 위치하는 경우, 이전 프레임(Xt-1)의 콜로케이티드 샘플의 샘플 값은 우측에 위치하는 샘플 값(즉, 예측 샘플의 샘플 값)에 따라 변경될 수 있다.
가중치 도출 과정(230)은, 현재 프레임(Xt)을 처리하는데 예측 프레임(Xt_pred)의 샘플들이 어느 정도로 도움이 되는지 또는 현재 프레임(Xt)의 처리 과정에서의 예측 프레임(Xt_pred) 내 샘플들의 기여도를 판단하는 과정으로 이해될 수 있다.
가중치 도출 과정(230)을 통해 예측 프레임(Xt_pred)의 샘플들에 적용될 가중치들이 도출될 수 있다. 현재 프레임(Xt)을 처리하는데 기여도가 높은 샘플에 대해서는 높은 가중치가 도출되고, 기여도가 낮은 샘플에 대해서는 낮은 가중치가 도출될 수 있다.
가중치는 현재 프레임(Xt)의 샘플들의 샘플 값들과 그에 대응하는 예측 샘플들의 샘플 값들 사이의 차이 값에 기반할 수 있다. 차이 값이 클수록 가중치는 작아지고, 차이 값이 작을수록 가중치는 커질 수 있다. 차이 값이 크다는 것은, 예측 샘플의 샘플 값이 현재 프레임(Xt)의 샘플의 처리에 기여도가 높지 않다는 것을 의미할 수 있므로, 가중치는 작게 산출될 수 있다.
게이팅 과정(240)은 예측 프레임(Xt_pred)의 샘플들에 가중치를 적용하는 과정이다. 예측 프레임(Xt_pred)의 샘플들의 기여도에 따라 예측 프레임(Xt_pred)의 샘플 값들이 변경될 수 있다.
일 실시예에서, 게이팅 과정(240)에서는 예측 프레임(Xt_pred)의 샘플들의 샘플 값들에 가중치가 곱해질 수 있다. 1의 가중치가 곱해진 샘플의 샘플 값은 그대로 유지되지만, 1보다 작은 가중치가 곱해진 샘플의 샘플 값은 작아진다.
도 1과 관련하여 설명한 것과 같이, 영상 처리 장치(100)는 현재 프레임(Xt)의 처리 시 이전 프레임(Xt-1)에 대응하는 이전 출력 프레임(Yt-1)과 이전 프레임(Xt-1)의 처리 과정 중에 획득되는 이전 특징 맵(St-1)을 더 이용할 수도 있다.
이전 출력 프레임(Yt-1)과 이전 특징 맵(St-1)은 이전 프레임(Xt-1)의 처리 과정에서 신경망(250)에 의해 출력될 수 있다. 이전 출력 프레임(Yt-1)은 신경망(250)의 마지막 레이어에서 출력되고, 이전 특징 맵(St-1)은 신경망(250)의 마지막 레이어의 이전 레이어에서 출력될 수 있다. 여기서 마지막 레이어의 이전 레이어는, 마지막 레이어와 직접적으로 연결된 이전 레이어 또는 마지막 레이어와의 사이에 하나 이상의 레이어가 존재하는 이전 레이어를 의미할 수 있다.
이전 출력 프레임(Yt-1)과 이전 특징 맵(St-1)도 이전 프레임(Xt-1)의 특성을 가질 수 있으므로, 전술한 움직임 보상 과정(220) 및 게이팅 과정(240)의 적용이 필요할 수 있다. 일 실시예에서, 움직임 보상 과정(220)을 통해 이전 출력 프레임(Yt-1)과 이전 특징 맵(St-1)으로부터 현재 출력 프레임(Yt)의 예측 버전인 예측 출력 프레임(Yt_pred)과, 현재 특징 맵(St)의 예측 버전인 예측 특징 맵(St_pred)이 획득될 수 있다.
이전 출력 프레임(Yt-1)과 이전 특징 맵(St-1)에 대한 움직임 보상 과정(220)은 전술한 이전 프레임(Xt-1)에 대한 움직임 보상 과정(220)과 동일할 수 있다. 일 실시예에서, 현재 프레임(Xt)의 현재 샘플과 이전 프레임(Xt-1) 내 예측 샘플 사이의 위치 관계(즉, 움직임 벡터)에 따라 이전 출력 프레임(Yt-1) 및 이전 특징 맵(St-1)의 콜로케이티드 샘플의 샘플 값을 변경하여 예측 출력 프레임(Yt_pred) 및 예측 특징 맵(St_pred)이 생성될 수 있다. 예를 들어, 현재 프레임(Xt)의 현재 샘플의 예측 샘플이 이전 프레임(Xt-1)의 콜로케이티드 샘플의 우측에 위치하는 경우, 이전 출력 프레임(Yt-1) 및 이전 특징 맵(St-1)의 콜로케이티드 샘플의 샘플 값은 그 우측에 위치하는 샘플 값에 따라 변경될 수 있다.
가중치 도출 과정(230)을 통해 획득된 가중치들이 게이팅 과정(240)에서 예측 출력 프레임(Yt_pred) 및 예측 특징 맵(St_pred)의 샘플들에 적용됨으로써, 가중치 적용된 예측 출력 프레임(Y't_pred) 및 가중치 적용된 예측 특징 맵(S't_pred)이 획득될 수 있다.
도 2는 현재 프레임(Xt)의 처리 시 이전 출력 프레임(Yt-1)과 이전 특징 맵(St-1)이 모두 이용되는 것으로 도시되어 있으나, 이는 하나의 예시일 뿐, 이전 출력 프레임(Yt-1)과 이전 특징 맵(St-1)은 현재 프레임(Xt)의 처리 과정에서 이용되지 않을 수 있다. 일 실시예에서, 현재 프레임(Xt)의 처리 시 이전 프레임(Xt-1)만 고려될 수 있다. 다른 실시예에서, 현재 프레임(Xt)의 처리시 이전 출력 프레임(Yt-1)과 이전 특징 맵(St-1) 중 어느 하나만 이용될 수도 있다.
게이팅 과정(240)을 통해 도출된 가중치 적용된 예측 프레임(X't_pred), 가중치 적용된 예측 출력 프레임(Y't_pred), 가중치 적용된 예측 특징 맵(S't_pred) 및 현재 프레임(Xt)이 신경망(250)으로 입력된다. 신경망(250)의 처리 결과 현재 프레임(Xt)에 대응하는 현재 출력 프레임(Yt)이 획득된다.
일 실시예에 따른 신경망(250)은 컨볼루션 레이어를 포함할 수 있다. 컨볼루션 레이어에서는 필터 커널을 이용하여 입력 데이터에 대한 컨볼루션 처리가 수행된다. 컨볼루션 레이어에 대한 컨볼루션 처리에 대해서는 도 3을 참조하여 설명한다.
신경망(250)은 하나 이상의 서브 신경망(260-1 ... 260-n)을 포함할 수 있다. 도 2는 여러 서브 신경망(260-1 ... 260-n)들이 신경망(250)에 포함되어 있는 것으로 도시되어 있으나, 이는 예시일 뿐 하나의 서브 신경망(260-1)만이 신경망(250)에 포함되어 있을 수도 있다. 하나의 서브 신경망(260-1)이 신경망(250)에 포함되어 있다는 것은, 신경망(250)이 융합(fusion) 레이어(262) 및 복수의 컨볼루션 레이어들로 이루어져 있다는 것을 의미할 수 있다.
융합 레이어(262)는 현재 프레임(Xt)과, 게이팅 과정(240)에서 출력되는 데이터들, 즉, 가중치 적용된 예측 프레임(X't_pred), 가중치 적용된 예측 출력 프레임(Y't_pred) 및 가중치 적용된 예측 특징 맵(S't_pred)을 융합할 수 있다. 융합 과정을 통해 서로 다른 종류의 데이터들이 통합될 수 있다.
가중치 적용된 예측 프레임(X't_pred), 가중치 적용된 예측 출력 프레임(Y't_pred), 가중치 적용된 예측 특징 맵(S't_pred) 및 현재 프레임(Xt)이 융합 레이어(262)에 의해 통합된 결과는 후속하는 컨볼루션 레이어들(264)에 의해 컨볼루션 처리된다.
첫 번째 서브 신경망(260-1)에 의한 처리 결과, 중간 출력 프레임(Yt_int)과 중간 특징 맵(St_int)이 획득될 수 있다.
중간 출력 프레임(Yt_int)은 첫 번째 서브 신경망(260-1)에 포함된 마지막 레이어에 의해 출력되고, 중간 특징 맵(St_int)은 첫 번째 서브 신경망(260-1)에 포함된 마지막 레이어의 이전 레이어에 의해 출력될 수 있다.
현재 프레임(Xt)과 가중치 적용된 예측 프레임(X't_pred), 및 첫 번째 서브 신경망(260-1)에서 출력되는 중간 출력 프레임(Yt_int)과 중간 특징 맵(St_int)이 두 번째 서브 신경망(260-2)으로 입력될 수 있다. 첫 번째 서브 신경망(260-1)과 마찬가지로, 두 번째 서브 신경망(260-2)의 융합 레이어(262)에서 현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred), 중간 출력 프레임(Yt_int) 및 중간 특징 맵(St_int)이 통합된 후 컨볼루션 처리될 수 있다.
두 번째 서브 신경망(260-2)의 처리 결과 중간 출력 프레임(Yt_int) 및 중간 특징 맵(St_int)이 출력되고, 출력된 중간 출력 프레임(Yt_int) 및 중간 특징 맵(St_int)이 세 번째 서브 신경망(260-3)으로 입력될 수 있다. 두 번째 서브 신경망(260-2)과 마찬가지로, 현재 프레임(Xt)과 가중치 적용된 예측 프레임(X't_pred)이 세 번째 서브 신경망(260-3)으로 더 입력될 수 있다. 마지막 서브 신경망(260-n)에 의한 처리 결과 현재 프레임(Xt)에 대응하는 현재 출력 프레임(Yt)이 획득될 수 있다.
현재 프레임(Xt), 마지막 서브 신경망(260-n)에서 출력되는 현재 출력 프레임(Yt)과 현재 특징 맵(St)은 다음 프레임(Xt+1)의 처리 과정에서 이용될 수 있다.
한편, 현재 프레임(Xt)이 연속된 프레임의 첫 번째 프레임인 경우, 이전 프레임(Xt-1), 이전 출력 프레임(Yt-1) 및 이전 특징 맵(St-1)은 미리 결정된 샘플 값(예를 들어, 0)을 갖는 것으로 설정될 수 있다.
이하에서, 움직임 예측 과정(210)과 움직임 보상 과정(220)에 대해 상세히 설명하기에 앞서 컨볼루션 연산에 대해 설명한다.
도 3은 컨볼루션 연산을 설명하기 위한 도면이다.
컨볼루션 레이어에서 이용되는 필터 커널(330)의 가중 값들과 그에 대응하는 프레임(310) 내 샘플 값들 사이의 곱 연산 및 덧셈 연산을 통해 특징 맵(350)이 생성될 수 있다. 필터 커널(330)은 미리 결정된 크기(도 3에서는 3x3)를 갖는다.
필터 커널(330)의 개수에 따라 특징 맵(350)의 개수가 달라진다. 필터 커널(330)의 개수와 특징 맵(350)의 개수는 동일할 수 있다. 즉, 컨볼루션 레이어에서 하나의 필터 커널(330)이 이용되면 하나의 특징 맵(350)이 생성되고, 두 개의 필터 커널(330)이 이용되면 두 개의 특징 맵(350)이 생성될 수 있다.
도 3에서 프레임(310)에 표시된 I1 내지 I49는 프레임(310)의 샘플들을 나타내고, 필터 커널(330)에 표시된 F1 내지 F9는 필터 커널(330)의 가중 값들을 나타낸다. 또한, 특징 맵(350)에 표시된 M1 내지 M9는 특징 맵(350)의 샘플들을 나타낸다.
도 3은 프레임(310)이 49개의 샘플을 포함하는 것으로 예시하고 있으나, 이는 하나의 예시일 뿐이며, 프레임(310)이 4K의 해상도를 갖는 경우, 예를 들어, 3840 X 2160개의 샘플을 포함할 수 있다.
컨볼루션 연산 과정에서, 프레임(310)의 I1, I2, I3, I8, I9, I10, I15, I16, I17의 샘플 값들 각각과 필터 커널(330)의 F1, F2, F3, F4, F5, F6, F7, F8 및 F9 각각의 곱 연산이 수행되고, 곱 연산의 결과 값들을 조합(예를 들어, 덧셈 연산)한 값이 특징 맵(350)의 M1의 값으로 할당될 수 있다.
컨볼루션 연산의 스트라이드(stride)가 2라면, 프레임(310)의 I3, I4, I5, I10, I11, I12, I17, I18, I19의 샘플 값들 각각과 필터 커널(330)의 F1, F2, F3, F4, F5, F6, F7, F8 및 F9 각각의 곱 연산이 수행되고, 곱 연산의 결과 값들을 조합한 값이 특징 맵(350)의 M2의 값으로 할당될 수 있다.
필터 커널(330)이 프레임(310)의 마지막 샘플에 도달할 때까지 스트라이드에 따라 이동하는 동안 프레임(310) 내 샘플 값들과 필터 커널(330)의 가중 값들 사이의 컨볼루션 연산이 수행됨으로써, 소정 크기를 갖는 특징 맵(350)이 획득될 수 있다.
도 4는 도 2에 도시된 움직임 예측 과정(210)을 설명하기 위한 도면이다.
일 실시예에서, 영상 처리 장치(100)는 현재 프레임(Xt) 및 이전 프레임(Xt-1)에 대한 컨볼루션 연산(410, 420)을 기반으로 움직임 예측을 수행할 수 있다.
영상 처리 장치(100)는 미리 결정된 제 1 필터 커널(415)로 현재 프레임(Xt)에 대해 컨볼루션 연산(410)을 수행하여 제 1 특징 맵(417)을 획득하고, 미리 결정된 복수의 제 2 필터 커널들(425)로 이전 프레임(Xt-1)에 대해 컨볼루션 연산(420)을 수행하여 복수의 제 2 특징 맵들(427)을 획득할 수 있다.
제 1 필터 커널(415)에 기반한 컨볼루션 연산(410)은 현재 프레임(Xt)의 샘플들에 대해 순차적으로 수행될 수 있고, 복수의 제 2 필터 커널들(425)에 기반한 컨볼루션 연산(420)은 이전 프레임(Xt-1)의 샘플들에 대해 순차적으로 수행될 수 있다.
현재 프레임(Xt)의 현재 샘플 및 현재 샘플의 주변 샘플들에 대해 제 1 필터 커널(415) 기반의 컨볼루션 연산(410)이 수행됨으로써, 제 1 특징 맵(415)의 콜로케이티드 샘플의 샘플 값이 획득될 수 있다. 또한, 이전 프레임(Xt-1)의 콜로케이티드 샘플 및 콜로케이티드 샘플의 주변 샘플들에 대해 복수의 제 2 필터 커널들(425) 기반의 컨볼루션 연산(420)이 수행됨으로써, 복수의 제 2 특징 맵들(427)의 콜로케이티드 샘플의 샘플 값이 획득될 수 있다.
제 1 필터 커널(415) 및 복수의 제 2 필터 커널들(425)은 소정의 크기를 가질 수 있다. 예를 들어, 제 1 필터 커널(415) 및 복수의 제 2 필터 커널들(425)은 도 4에 도시된 것과 같이 3x3의 크기를 가질 수 있으나, 이에 한정되는 것은 아니다. 일 실시예에서, 제 1 필터 커널(415) 및 복수의 제 2 필터 커널들(425)은 4x4 또는 5x5 등의 크기를 가질 수도 있다.
제 1 필터 커널(415)에 기반한 현재 프레임(Xt)에 대한 컨볼루션 연산(410) 결과 현재 프레임(Xt)과 동일한 크기의 제 1 특징 맵(417)이 획득될 수 있다. 컨볼루션 연산(410)을 통해 현재 프레임(Xt)과 동일한 크기의 제 1 특징 맵(417)을 획득하기 위해 현재 프레임(Xt)이 패딩(padding)될 수 있다. 패딩이란, 현재 프레임(Xt)의 좌측 바운더리, 상부 바운더리, 우측 바운더리 또는 하부 바운더리 중 적어도 하나의 외부에 미리 결정된 샘플 값(예를 들어, 0)을 갖는 샘플을 할당하는 것을 의미한다. 패딩을 통해 현재 프레임(Xt)의 샘플 개수가 증가하게 된다.
제 1 필터 커널(415)은 현재 샘플에 대응하는 샘플이 기 설정된 제 1 값을 가지고, 나머지 샘플들이 0의 값을 가질 수 있다. 도 4는 제 1 필터 커널(415)이 1의 값과 0의 값을 가지는 것으로 도시하고 있으나, 1은 기 설정된 제 1 값의 예시이다.
제 1 필터 커널(415)은 현재 프레임(Xt)의 현재 샘플 및 현재 샘플들의 주변 샘플에 적용되는데, 현재 샘플에 대응하는 샘플이란, 제 1 필터 커널(415)의 샘플들 중 현재 샘플과의 곱연산에 적용되는 샘플을 의미할 수 있다. 도 4는 제 1 필터 커널(415)의 중앙 샘플이 1의 가중 값을 가지는 것으로 도시하고 있는데, 이는 현재 프레임(Xt)이 좌측 바운더리의 좌측 방향으로, 그리고 상부 바운더리의 상부 방향으로 패딩되어 있는 경우를 고려한 것이다.
예를 들어, 현재 프레임(Xt)의 좌상측 샘플에 대해 컨볼루션 연산(410)이 수행되는 경우, 현재 프레임(Xt)이 좌측 방향 및 상부 방향으로 패딩되어야만 좌상측 샘플과 제 1 필터 커널(415)의 중앙 샘플 사이의 곱연산이 수행될 수 있다. 따라서, 현재 프레임(Xt)이 좌측 방향 및 상부 방향으로 패딩되어 있지 않다면, 제 1 필터 커널(415)의 좌상측 샘플이 1의 값을 가지게 된다.
제 1 필터 커널(415)의 샘플들 중 현재 샘플에 대응하는 샘플이 기 설정된 제 1 값을 가짐으로써, 제 1 특징 맵(417)의 샘플들이 현재 프레임(Xt)의 샘플들의 샘플 값들에 제 1 값을 곱한 값으로 산출될 수 있다. 따라서, 제 1 값이 1이라면, 제 1 특징 맵(417)의 샘플 값들은 현재 프레임(Xt)의 샘플 값들과 동일하게 된다.
일 실시예에서, 움직임 예측 과정에서 현재 프레임(Xt)에 대한 컨볼루션 연산(410)은 생략될 수도 있다. 그 이유는, 현재 샘플에 대응하는 제 1 필터 커널(415)의 샘플이 1의 값을 가지고, 그 이외의 샘플들이 0의 값을 가지는 경우, 컨볼루션 연산(410) 결과로 획득되는 제 1 특징 맵(417)은 결국 현재 프레임(Xt)과 동일하기 때문이다. 따라서, 이전 프레임(Xt-1)에 대한 컨볼루션 연산(420) 결과로 획득되는 제 2 특징 맵들(427)과 현재 프레임(Xt)의 비교를 통해 예측 샘플들(430)이 식별될 수 있다.
이전 프레임(Xt-1)에 대한 컨볼루션 연산(420)에 이용되는 복수의 제 2 필터 커널들(425)은 0의 값 및 기 설정된 제 2 값을 가질 수 있다. 기 설정된 제 2 값은 기 설정된 제 1 값과 동일할 수 있다. 예를 들어, 제 1 값과 제 2 값 모두 1일 수 있다. 제 1 값과 제 2 값이 동일한 경우, 제 1 필터 커널(415)은 복수의 제 2 필터 커널들(425) 중 어느 하나에 해당할 수 있다.
일 실시예에서, 기 설정된 제 2 값은 기 설정된 제 1 값과 부호가 다른 값일 수 있다. 예를 들어, 제 1 값이 1이면 제 2 값은 -1일 수 있다.
복수의 제 2 필터 커널들(425)의 샘플들 중 어느 하나의 샘플은 기 설정된 제 2 값을 가지고, 나머지 샘플들은 0의 값을 가질 수 있다. 제 2 값을 가지는 샘플의 위치는 복수의 제 2 필터 커널(425) 별로 다를 수 있다. 도 4에 도시된 것과 같이, 어느 하나의 제 2 필터 커널(425)은 좌상측 샘플이 제 2 값을 가지고, 다른 하나의 제 2 필터 커널(425)은 좌상측 샘플의 우측 샘플이 제 2 값을 가질 수 있다.
제 2 필터 커널들(425)의 개수는 제 2 필터 커널들(425)의 크기에 따라 달라질 수 있다. 제 2 필터 커널들(425)의 크기가 3x3이라면, 제 2 필터 커널들(425)의 개수는 9개일 수 있다. 이는, 제 2 값을 갖는 샘플의 위치가 제 2 필터 커널들(425)마다 다르기 때문이다.
제 2 필터 커널들(425)을 이용한 이전 프레임(Xt-1)에 대한 컨볼루션 연산(420)을 통해 제 2 특징 맵들(427)이 획득된다. 제 2 특징 맵들(427)의 개수는 제 2 필터 커널들(425)의 개수와 동일할 수 있다.
제 2 필터 커널들(425)은 이전 프레임(Xt-1)의 콜로케이티드 샘플과 콜로케이티드 샘플의 주변 샘플들 중 어느 하나의 샘플 값을 추출하는데 이용될 수 있다. 예를 들어, 좌상측 샘플이 제 2 값을 갖는 제 2 필터 커널은, 이전 프레임(Xt-1)의 콜로케이티드 샘플의 좌측 상부에 위치한 샘플의 샘플 값을 추출하는데 이용될 수 있고, 우상측 샘플이 제 2 값을 갖는 제 2 필터 커널은, 이전 프레임(Xt-1)의 콜로케이티드 샘플의 우측 상부에 위치한 샘플의 샘플 값을 추출하는데 이용될 수 있다.
영상 처리 장치(100)는 제 1 특징 맵(417)의 샘플 값들과 제 2 특징 맵들(427)의 샘플 값들을 비교하여 현재 프레임(Xt) 내 샘플들의 예측 샘플들(430)을 식별할 수 있다. 영상 처리 장치(100)는 제 2 특징 맵들(427)의 소정 위치의 샘플 값들 중 제 1 특징 맵(417)의 소정 위치의 샘플 값과 가장 유사한 샘플을 확인하고, 확인된 샘플에 대응하는 이전 프레임(Xt-1) 내 샘플을 소정 위치의 현재 샘플의 예측 샘플(430)로 식별할 수 있다.
예를 들면, 현재 샘플이 현재 프레임(Xt) 내 중앙 샘플이라면, 제 2 특징 맵들(427)의 중앙 샘플들의 샘플 값들 중 제 1 특징 맵(417)의 중앙 샘플의 샘플 값과 가장 유사한 샘플 값이 확인된다. 그리고, 확인된 샘플 값에 대응하는 이전 프레임(Xt-1) 내 샘플이 현재 샘플의 예측 샘플(430)로 식별될 수 있다. 만약, 우상측 샘플이 제 2 값을 갖는 제 2 필터 커널(425)에 기반하여 생성된 제 2 특징 맵(427)의 중앙 샘플의 샘플 값이 제 1 특징 맵(417)의 중앙 샘플의 샘플 값과 가장 유사하다면, 이전 프레임(Xt-1)의 중앙 샘플의 우측 상부에 위치한 샘플이 현재 샘플의 예측 샘플(430)로 결정될 수 있다.
이하에서는, 도 5 내지 도 7을 참조하여 움직임 예측 과정에 대해 예를 들어 설명한다.
도 5는 움직임 예측을 위해 현재 프레임(510)에 적용되는 컨볼루션 연산을 도시하는 예시적인 도면이다.
제 1 필터 커널(415)은, 현재 샘플에 대응하는 중앙 샘플이 1의 값을 가지고, 나머지 샘플들이 0의 값을 갖는다.
현재 프레임(510)은 a1, b1, c1, d1, e1, f1, g1, h1, i1의 샘플들을 가질 수 있다. 도 5는 현재 프레임(510)의 크기가 3x3인 것으로 도시하고 있으나, 이는 설명의 편의를 위한 것일 뿐, 현재 프레임(510)의 크기는 다양할 수 있다.
현재 프레임(510)과 동일한 크기의 제 1 특징 맵(417)의 생성을 위해 현재 프레임(510)이 좌측 방향, 상부 방향, 우측 방향 및 하부 방향으로 패딩될 수 있다. 패딩을 통해 현재 프레임(510)의 좌측 방향, 상부 방향, 우측 방향 및 하부 방향으로 미리 결정된 샘플 값을 갖는 샘플들(p0 내지 p15)이 현재 프레임(510)에 부가될 수 있다.
현재 프레임(510)의 샘플들에 대해 순차적으로 컨볼루션 연산을 수행하기 위해 컨볼루션 연산의 스트라이드는 1로 설정될 수 있다.
먼저, 현재 프레임(510)의 p0 샘플, p1 샘플, p2 샘플, p5 샘플, a1 샘플, b1 샘플, p7 샘플, d1 샘플 및 e1 샘플과 제 1 필터 커널(415)의 가중 값들의 컨볼루션 연산을 통해 제 1 특징 맵(417)의 첫 번째 샘플(즉, 좌상측 샘플)의 샘플 값이 도출된다. 제 1 필터 커널(415)의 중앙 샘플이 1의 값을 가지고, 나머지 샘플들이 0의 값을 가지므로, 제 1 특징 맵(417)의 좌상측 샘플의 샘플 값은 a1으로 도출된다.
다음으로, 현재 프레임(510)의 p1 샘플, p2 샘플, p3 샘플, a1 샘플, b1 샘플, c1 샘플, d1 샘플, e1 샘플 및 f1 샘플과 제 1 필터 커널(415)의 가중 값들의 컨볼루션 연산을 통해 제 1 특징 맵(417)의 두 번째 샘플(즉, 좌상측 샘플의 우측에 위치하는 샘플)의 샘플 값이 도출된다. 컨볼루션 연산을 통해 제 1 특징 맵(417)의 두 번째 샘플의 샘플 값은 b1으로 도출된다.
제 1 필터 커널(415)이 현재 프레임(510)의 마지막 샘플, 즉 i1 샘플에 도달할 때까지 현재 프레임(510)의 샘플들과 제 1 필터 커널(415)에 기반한 컨볼루션 연산이 수행된다. 제 1 필터 커널(415)이 i1 샘플에 도달하면, 현재 프레임(510)의 e1 샘플, f1 샘플, p8 샘플, h1 샘플, i1 샘플, p10 샘플, p13 샘플, p14 샘플 및 p15 샘플들과 제 1 필터 커널(415)의 가중 값들의 컨볼루션 연산을 통해 제 1 특징 맵(417)의 마지막 샘플의 샘플 값이 i1으로 도출된다.
도 5를 참조하면, 제 1 필터 커널(415)의 중앙 샘플이 1의 값을 가지는 경우, 현재 프레임(510)의 샘플 값들과 제 1 특징 맵(417)의 샘플 값들이 동일하게 되는 것을 알 수 있다. 즉, 현재 샘플에 대응하는 샘플이 1의 값을 갖는 제 1 필터 커널(415)은, 현재 프레임(510)의 샘플 값들을 추출하는데 이용된다.
도 6은 움직임 예측을 위해 이전 프레임에 적용되는 컨볼루션 연산을 도시하는 예시적인 도면이다.
제 2 필터 커널(425)들은, 1의 값을 가지는 하나의 샘플과 0의 값을 가지는 다른 샘플들을 포함할 수 있다. 전술한 바와 같이, 1의 가중 값을 가지는 샘플의 위치는 제 2 필터 커널(425)마다 다를 수 있다. 제 2 필터 커널(425)들은, -1의 값을 가지는 하나의 샘플과 0의 값을 가지는 다른 샘플들을 포함할 수도 있다.
이전 프레임(530)은 a2, b2, c2, d2, e2, f2, g2, h2, i2의 샘플들을 포함할 수 있다. 도 6은 이전 프레임(530)의 크기가 3x3인 것으로 도시하고 있으나, 이는 설명의 편의를 위한 것일 뿐, 이전 프레임(530)의 크기는 다양할 수 있다.
이전 프레임(530)과 동일한 크기의 제 2 특징 맵(427)들의 생성을 위해 이전 프레임(530)이 좌측 방향, 상부 방향, 우측 방향 및 하부 방향으로 패딩될 수 있다. 패딩을 통해 이전 프레임(530)의 좌측 방향, 상부 방향, 우측 방향 및 하부 방향으로 미리 결정된 샘플 값을 갖는 샘플들이 이전 프레임(530)에 부가될 수 있다.
이전 프레임(530)과 제 2 필터 커널(425)들 각각에 기반한 컨볼루션 연산을 통해 제 2 필터 커널(425)들에 대응하는 제 2 특징 맵(427)들이 획득될 수 있다.
이하에서는, 제 2 필터 커널(425)들의 구분을 위해 1의 값을 가지는 샘플의 위치에 따라 제 2 필터 커널(425)들 각각을 제 2 필터 커널(A)(425-1), 제 2 필터 커널(B)(425-2) 내지 제 2 필터 커널(I)(425-9)로 참조하고, 제 2 특징 맵(427)들의 구분을 위해 제 2 특징 맵(427)들 각각을 제 2 특징 맵(A)(427-1), 제 2 특징 맵(B)(427-2) 내지 제 2 특징 맵(I)(427-9)로 참조한다.
이전 프레임(530)의 샘플들에 대해 순차적으로 컨볼루션 연산을 수행하기 위해 컨볼루션 연산의 스트라이드는 1로 설정될 수 있다.
먼저, 좌상측 샘플 값이 1인 제 2 필터 커널(A)(425-1)과 이전 프레임(530)에 기반한 컨볼루션 연산을 통해 제 2 특징 맵(A)(427-1)가 획득될 수 있다. 전술한 바와 같이, 제 2 필터 커널(A)(425-1)는 1의 스트라이드에 따라 이동하면서 이전 프레임(530)과 컨볼루션 연산될 수 있다. 제 2 필터 커널(A)(425-1)는 이전 프레임(530)의 샘플들(a2 샘플, b2 샘플, c2 샘플, d2 샘플, e2 샘플, f2 샘플, g2 샘플, h2 샘플, i2 샘플)의 좌측 상부에 위치한 샘플 값을 추출하기 위한 것이다. 이에 따라, 제 2 특징 맵(A)(427-1)은 이전 프레임(530)의 샘플들(a2 샘플, b2 샘플, c2 샘플, d2 샘플, e2 샘플, f2 샘플, g2 샘플, h2 샘플, i2 샘플)의 좌측 상부에 위치하는 샘플들의 샘플 값에 1을 곱한 값을 가지게 된다. 예를 들어, 현재 샘플이 a1이라면, 이전 프레임(530)의 콜로케이티드 샘플은 a2가 되고, 제 2 특징 맵(A)(427-1)의 콜로케이티드 샘플의 샘플 값은 a2 샘플의 좌측 상부에 위치하는 p0의 샘플 값으로 도출된다.
다음으로, 좌상측 샘플의 우측에 위치하는 샘플의 값이 1인 제 2 필터 커널(B)(425-2)과 이전 프레임(530) 사이의 컨볼루션 연산을 통해 제 2 특징 맵(B)(427-2)가 획득될 수 있다. 제 2 필터 커널(B)(425-2)는 이전 프레임(530)의 샘플들(a2 샘플, b2 샘플, c2 샘플, d2 샘플, e2 샘플, f2 샘플, g2 샘플, h2 샘플, i2 샘플)의 상부에 위치한 샘플 값을 추출하기 위한 것이다. 이에 따라, 제 2 특징 맵(B)(427-2)은 이전 프레임(530)의 샘플들(a2 샘플, b2 샘플, c2 샘플, d2 샘플, e2 샘플, f2 샘플, g2 샘플, h2 샘플, i2 샘플)의 상부에 위치하는 샘플들의 샘플 값에 1을 곱한 값을 가지게 된다. 예를 들어, 현재 샘플이 a1이라면, 이전 프레임(530)의 콜로케이티드 샘플은 a2가 되고, 제 2 특징 맵(B)(427-2)의 콜로케이티드 샘플의 샘플 값은 a2 샘플의 상부에 위치하는 p1의 샘플 값으로 도출된다.
이와 같이, 제 2 필터 커널(A)(425-1) 내지 제 2 필터 커널(I)(425-9) 각각과 이전 프레임(530)의 컨볼루션 연산을 통해 제 2 특징 맵(A)(427-1) 내지 제 2 특징 맵(I)(427-9)가 획득될 수 있다.
도 7은 현재 프레임 내 샘플들에 대응하는 예측 샘플들(430)을 도시하는 예시적인 도면이다.
영상 처리 장치(100)는 제 1 특징 맵(417) 내 각 샘플이, 제 2 특징 맵(427)들 내 샘플들 중 어느 샘플과 가장 유사한지를 확인할 수 있다. 이 때, 제 1 특징 맵(417)의 샘플들과 제 2 특징 맵(427)들의 샘플들 중 동일 위치에 있는 샘플들이 비교 대상이 된다. 일 실시예에서, 영상 처리 장치(100)는 제 1 특징 맵(417) 내 특정 위치의 샘플의 샘플 값과 제 2 특징 맵(427)들 내 특정 위치의 샘플들의 샘플 값들 사이의 차이의 절대 값을 산출하고, 산출된 절대 값이 가장 작은 샘플 값을 확인할 수 있다. 영상 처리 장치(100)는 차이의 절대 값이 가장 작은 샘플 값에 대응하는 이전 프레임(530) 내 샘플을 예측 샘플로 결정할 수 있다.
전술한 바와 같이, 제 1 필터 커널(415)의 어느 한 샘플이 가지는 제 1 값의 부호와 제 2 필터 커널(425)의 어느 한 샘플이 가지는 제 2 값의 부호가 서로 동일하다면, 제 1 특징 맵(417) 내 샘플의 샘플 값과 제 2 특징 맵(427)들 내 샘플들의 샘플 값들 사이의 차이는 차 연산을 통해 산출될 수 있고, 반대로, 제 1 값의 부호와 제 2 값의 부호가 서로 다르다면, 제 1 특징 맵(417) 내 샘플의 샘플 값과 제 2 특징 맵(427)들 내 샘플들의 샘플 값들 사이의 차이는 합 연산을 통해 산출될 수 있다.
도 5에 도시된 제 1 특징 맵(417)의 좌상단 샘플을 기준으로 설명하면, 영상 처리 장치(100)는 제 1 특징 맵(417)의 좌상단 샘플 a1의 샘플 값과 제 2 특징 맵(427)들의 좌상단 샘플의 샘플 값들 사이의 차이의 절대 값을 산출할 수 있다. 예를 들어, 제 1 특징 맵(417)의 좌상단 샘플 a1의 샘플 값과 제 2 특징 맵(A)(427-1)의 좌상단 샘플 p0의 샘플 값 사이에서 |a1-p0|이 산출되고, 제 1 특징 맵(417)의 좌상단 샘플 a1의 샘플 값과 제 2 특징 맵(B)(427-2)의 좌상단 샘플 p1의 샘플 값 사이에서 |a1-p1|이 산출될 수 있다. 만약, 제 2 특징 맵(I)(427-9)의 좌상단 샘플 e2의 샘플 값과 제 1 특징 맵(417)의 좌상단 샘플 a1의 샘플 값 사이의 차이의 절대 값이 가장 작다면, 제 2 특징 맵(I)(427-9)의 좌상단 샘플 e2 샘플에 대응하는 이전 프레임(530) 내 e2 샘플이 현재 프레임(510)의 좌상단 샘플 a1의 예측 샘플로 결정될 수 있다.
이와 같이, 제 1 특징 맵(417)의 샘플 값들과 제 2 특징 맵(427)들의 샘플 값들을 비교함으로써, 현재 프레임(510)의 각 샘플에 대응하는 예측 샘플들(430)이 식별될 수 있다.
도 7에서는, 현재 프레임(510)의 샘플들에 대응하는 예측 샘플들이 b2, e2, f2, e2, f2, i2, h2, e2, i2인 것으로 결정된 것을 알 수 있다.
도 4 내지 도 7에서 예측 샘플의 결정 과정을 중심으로 하여 움직임 예측 과정에 대해 설명하였으나, 움직임 예측 과정은 움직임 벡터를 찾는 과정으로 이해될 수 있다. 전술한 제 2 필터 커널(425)들 각각은 이전 프레임(530)의 콜로케이티드 샘플 및 그 주변 샘플들과 현재 샘플 사이의 위치 관계, 즉 움직임 벡터 후보로 해석될 수 있다. 다시 말하면, 움직임 예측 과정은 여러 움직임 벡터 후보들(여러 개의 제 2 필터 커널들) 중 현재 샘플과 가장 유사한 샘플을 가리키는 움직임 벡터 후보(어느 하나의 제 2 필터 커널)를 현재 샘플의 움직임 벡터로 결정하는 과정일 수 있다.
도 8은 도 2에 도시된 움직임 보상 과정(220)을 설명하기 위한 도면이다.
움직임 보상 과정은, 현재 프레임(Xt)의 샘플들과 동일한 위치에 있는 이전 프레임(Xt-1)의 샘플들의 샘플 값들을 예측 샘플들의 샘플 값들에 따라 변경하는 과정이다. 움직임 보상 과정을 통해 예측 프레임(Xt_pred)이 획득될 수 있다.
영상 처리 장치(100)는 움직임 예측 과정과 마찬가지로 컨볼루션 연산을 통해 움직임 보상 과정을 수행할 수 있다.
영상 처리 장치(100)는 미리 결정된 복수의 제 3 필터 커널(815) 중 이전 프레임(Xt-1)의 각 샘플의 움직임 보상에 이용될 제 3 필터 커널을 선택하고, 선택된 제 3 필터 커널에 기반한 컨볼루션 연산을 이전 프레임(Xt-1)의 각 샘플에 적용할 수 있다. 이 때, 이전 프레임(Xt-1)의 샘플 별로 그에 대응하는 제 3 필터 커널이 선택될 수 있다.
복수의 제 3 필터 커널들(815)은 미리 결정된 제 3 값을 갖는 샘플과 0을 갖는 샘플들을 포함할 수 있고, 제 3 값을 갖는 샘플의 위치는 제 3 필터 커널(815)마다 다를 수 있다. 제 3 값은 예를 들어, 1일 수 있다. 일 실시예에서, 움직임 예측 과정에서 이용된 복수의 제 2 필터 커널(425)들이 움직임 보상 과정에서도 사용될 수 있다.
도 9는 움직임 예측 결과를 이용하여 이전 프레임을 움직임 보상하는 과정을 도시하는 예시적인 도면이다.
제 3 필터 커널(815)들 각각의 구별을 위해 제 3 값을 갖는 샘플의 위치에 따라 제 3 필터 커널(A)(815-1) 내지 제 3 필터 커널(I)(815-9)로 참조한다.
영상 처리 장치(100)는 현재 프레임(510)의 샘플들과 동일한 위치에 있는 이전 프레임(530)의 샘플들 각각에 대하여, 예측 샘플에 대응하는 위치에서 제 3 값을 갖는 제 3 필터 커널(815)을 선택할 수 있다.
먼저, 이전 프레임(530)의 좌상단에 위치한 a2 샘플을 기준으로 설명한다. 현재 프레임(510)의 좌상단에 위치한 a1 샘플의 예측 샘플이 b2 샘플로 결정되었다면, 영상 처리 장치(100)는 중앙 샘플의 우측에 위치하면서 1의 값을 가지는 샘플과 0의 값을 가지는 나머지 샘플들을 포함하는 제 3 필터 커널(F)(815-6)을 a2 샘플을 위해 선택할 수 있다. 이 경우, 영상 처리 장치(100)는 이전 프레임(530)의 p0 샘플, p1 샘플, p2 샘플, p5 샘플, a2 샘플, b2 샘플, p7 샘플, d2 샘플 및 e2 샘플과 제 3 필터 커널(F)(815-6)의 0, 0, 0, 0, 0, 1, 0, 0 및 0에 기반한 곱연산 및 합연산을 통해 예측 프레임(900)의 좌상단 샘플 b2를 도출할 수 있다. 즉, 이전 프레임(530)의 a2 샘플과 그 주변 샘플들에 대한 컨볼루션 연산을 통해 a2 샘플이 예측 프레임(900)에서 b2 샘플로 교체된 것을 알 수 있다.
다음으로, 현재 프레임(510)의 중앙 샘플의 상부에 위치하는 b1 샘플의 예측 샘플이 e2 샘플로 결정되었다면, 중앙 샘플의 하부에 위치하면서 1의 값을 가지는 샘플과 0의 값을 가지는 나머지 샘플들을 포함하는 제 3 필터 커널(H)(815-8)이 b2 샘플을 위해 선택될 수 있다. 영상 처리 장치(100)는 이전 프레임(530)의 p1 샘플, p2 샘플, p3 샘플, a2 샘플, b2 샘플, c2 샘플, d2 샘플, e2 샘플 및 f2 샘플과 제 3 필터 커널(H)(815-8)의 0, 0, 0, 0, 0, 0, 0, 1 및 0에 기반한 곱연산 및 합연산을 통해 예측 프레임(900)의 중앙 샘플의 상부에 위치하는 샘플 e2를 도출할 수 있다. 즉, 이전 프레임(530)의 b2 샘플과 그 주변 샘플들에 대한 컨볼루션 연산을 통해 이전 프레임(530)의 b2 샘플이 예측 프레임(900)에서 e2 샘플로 교체된 것을 알 수 있다.
이전 프레임(530)의 첫 번째 샘플부터 마지막 샘플까지 각 샘플에 대응하는 제 3 필터 커널(815)을 기반으로 컨볼루션 연산을 수행함에 따라 현재 프레임(510)의 예측 버전인 예측 프레임(900)이 생성될 수 있다.
도 10은 움직임 보상의 결과로 획득된 예측 프레임(900)에 가중치(950)를 적용하는 과정을 도시하는 예시적인 도면이다.
영상 처리 장치(100)는 현재 프레임(510) 내 현재 샘플과 이전 프레임(530) 내 예측 샘플(또는 예측 프레임(900) 내 콜로케이티드 샘플) 사이의 차이 값에 기반하여 가중치(950)를 산출할 수 있다. 영상 처리 장치(100)는 현재 프레임(510)의 샘플별로 가중치(950)를 산출할 수 있다.
전술한 바와 같이, 가중치(950)는 예측 프레임(900)의 샘플들이 현재 프레임(510)의 처리에 어느 정도로 도움이 되는지를 나타낸다.
가중치(950)는 하기 수학식 1에 기반하여 도출될 수 있다.
[수학식 1]
Figure PCTKR2022012599-appb-img-000001
수학식 1에서, σ는 미리 결정된 상수로서 예를 들어 16일 수 있다. 수학식 1을 참조하면, 현재 샘플의 샘플 값과 예측 샘플의 샘플 값이 동일하다면, 가중치(950)는 1로 산출되고, 현재 샘플의 샘플 값과 예측 샘플의 샘플 값의 차이 값이 커질수록 가중치(950)는 작게 산출되는 것을 알 수 있다.
영상 처리 장치(100)는 예측 프레임(900)의 각 샘플에 대해 그에 대응하는 가중치(950)를 곱함으로써 가중치 적용된 예측 프레임(1000)을 획득할 수 있다.
전술한 바와 같이, 영상 처리 장치(100)는 예측 출력 프레임 및 예측 특징 맵의 각 샘플에 대해 그에 대응하는 가중치(950)를 적용하여 가중치 적용된 예측 출력 프레임 및 가중치 적용된 예측 특징 맵을 획득할 수도 있다.
전술한 것과 같이, 일 실시예에서 움직임 예측 과정과 움직임 보상 과정은 컨볼루션 연산을 기반으로 수행될 수 있다. 도 4에 도시된 것과 같이, 움직임 예측 과정이 한번(현재 프레임에 대한 컨볼루션 연산(410)이 생략되는 경우) 또는 두번의 컨볼루션 연산을 통해 수행될 수 있고, 도 8에 도시된 것과 같이, 움직임 보상 과정이 한번의 컨볼루션 연산을 통해 수행될 수 있으므로, 연산의 복잡성이 상당히 감소될 수 있다.
한편, 전술한 움직임 예측 과정은 다운샘플링된 현재 프레임 및 다운샘플링된 이전 프레임에 대해 적용될 수도 있다. 이는, 움직임 예측 과정에 따른 부하 및 복잡도를 감소시키기 위함이다. 여기서, 다운샘플링이란, 프레임 내 샘플 개수를 감소시키는 처리를 의미한다. 프레임의 다운샘플링은 다양한 방법으로 수행될 수 있다. 일예로, 현재 프레임과 이전 프레임을 풀링(pooling) 처리하여 현재 프레임과 이전 프레임 내 샘플 개수를 감소시킬 수 있다. 풀링 처리는 맥스 풀링(max pooling) 처리 또는 평균 풀링(average pooling) 처리를 포함할 수 있다. 풀링 처리는 인공신경망 분야에서 이용되는 풀링 레이어로부터 자명하게 이해될 수 있으므로 그 상세한 설명은 생략한다. 일 실시예에서, 현재 프레임 및 이전 프레임의 다운샘플링은 공지된 다양한 다운샘플링 알고리즘을 통해 수행될 수도 있다.
다운샘플링된 현재 프레임과 다운샘플링된 이전 프레임을 대상으로 하여 움직임 예측 과정을 수행하게 되면, 다운샘플링된 현재 프레임에 포함된 샘플 개수만큼의 움직임 벡터들이 도출될 수 있다. 움직임 보상 과정에서 필요한 움직임 벡터의 개수는 다운샘플링된 프레임에 기반한 움직임 예측 과정을 통해 획득되는 움직임 벡터의 개수보다 많으므로, 움직임 예측 과정에서 획득되는 움직임 벡터의 개수를 증가시켜야 한다.
움직임 예측 과정에서 획득되는 움직임 벡터의 개수를 증가시키는 방법에 대해 도 11을 참조하여 설명한다.
도 11은 다운샘플링된 프레임을 대상으로 하여 획득된 움직임 벡터의 개수를 증가시키는 방법을 설명하기 위한 도면이다.
도 11을 참조하면, 다운샘플링된 프레임(1110)의 크기는 2x2이고, 다운샘플링되기 전의 프레임(1130)의 크기는 4x4이다. 다운샘플링된 프레임(1110)의 크기는 다운샘플링 비율에 따라 다양하게 변경될 수 있다.
전술한 움직임 예측 과정을 다운샘플링된 프레임(1110)에 대해 적용하면, 프레임(1110)에 포함된 4개의 샘플들에 대응하는 4개의 움직임 벡터(즉, 필터 커널)가 도출된다. 다운샘플링되기 전의 프레임(1130)의 크기는 4x4이므로, 움직임 보상 과정에서 16개의 움직임 벡터가 요구된다.
일예로, 영상 처리 장치(100)는 다운샘플링된 프레임(1110) 내 샘플들의 개수에 따라 다운샘플링되기 전의 프레임(1130)의 샘플들을 그룹핑할 수 있다. 그리고, 영상 처리 장치(100)는 움직임 예측 과정에서 도출된 움직임 벡터들 각각을 다운샘플링 전의 프레임(1130)의 샘플 그룹들에 할당할 수 있다. 이때, 다운샘플링 전의 프레임(1130)의 샘플 그룹들과 다운샘플링된 프레임(1110) 내 샘플들의 위치가 고려될 수 있다.
상세히 설명하면, 다운샘플링된 프레임(1110) 내 샘플들(1112, 1114, 1116, 1118) 중 좌측 상부 샘플(1112)에 대해 도출된 움직임 벡터(mv1)는 다운샘플링되기 전 프레임(1130)의 샘플 그룹들(1132, 1134, 1136, 1138) 중 좌측 상부에 위치하는 샘플 그룹(1132)에 할당될 수 있다. 이에 따라 프레임(1130)에서 좌측 상부에 위치하는 샘플 그룹(1132)에 포함된 샘플들에 대해서는 움직임 벡터(mv1) 기반으로 움직임 보상이 수행될 수 있다. 여기서, 움직임 보상은 다운샘플링 되기 전의 이전 프레임에 대해 수행된다는 것에 주의한다.
다운샘플링된 프레임(1110) 내 샘플들(1112, 1114, 1116, 1118) 중 우측 상부 샘플(1114)에 대해 도출된 움직임 벡터(mv2)는 다운샘플링되기 전 프레임(1130)의 샘플 그룹들(1132, 1134, 1136, 1138) 중 우측 상부에 위치하는 샘플 그룹(1134)에 할당될 수 있다. 이에 따라 프레임(1130)에서 우측 상부에 위치하는 샘플 그룹(1134)에 포함된 샘플들에 대해서는 움직임 벡터(mv2) 기반으로 움직임 보상이 수행될 수 있다.
샘플 그룹에 포함된 샘플의 개수가 많은 경우, 샘플 그룹에 포함된 모든 샘플들에 대해 동일한 움직임 벡터를 적용하는 것은 움직임 보상의 정확도를 감소시킬 수 있다. 다른 예로서, 영상 처리 장치(100)는 샘플 그룹에 포함된 샘플들 중 인접 샘플 그룹과의 경계에 인접한 샘플들에 대해서는 해당 샘플 그룹에 할당된 움직임 벡터와 인접한 샘플 그룹에 할당된 움직임 벡터를 조합한 움직임 벡터를 적용할 수도 있다.
또 다른 예로, 영상 처리 장치(100)는 다운샘플링된 프레임(1110)에 대해 획득한 움직임 벡터들을 인터폴레이션하여 다운샘플링되기 전의 프레임(1130)의 움직임 보상을 위한 움직임 벡터들을 획득할 수 있다. 인터폴레이션의 예로서, 바이리니어(bilinear) 인터폴레이션, 바이큐빅(bicubic) 인터폴레이션 또는 니어리스트 네이버(neareast neighbor) 인터폴레이션이 적용될 수 있다.
다운샘플링된 프레임(1110)을 대상으로 하여 움직임 예측을 수행하면, 가중치 도출 과정에서 도출되는 가중치의 개수 역시 게이팅 과정에서 필요로 하는 가중치의 개수보다 적어진다. 따라서, 영상 처리 장치(100)는 가중치 도출 과정을 통해 획득된 가중치의 개수를 증가시킨다. 여기서, 게이팅 과정은 다운샘플링 되기 전의 이전 프레임으로부터 움직임 보상 과정을 통해 생성된 예측 프레임에 대해 적용될 수 있다.
일 예로, 영상 처리 장치(100)는 다운샘플링된 프레임(1110) 내 샘플들의 개수에 따라 다운샘플링되기 전의 프레임(1130)의 샘플들을 그룹핑할 수 있다. 그리고, 영상 처리 장치(100)는 가중치 도출 과정에서 도출된 가중치들 각각을 다운샘플링 전의 프레임(1130)의 샘플 그룹들에 할당할 수 있다. 이때, 다운샘플링 전의 프레임(1130)의 샘플 그룹들과 다운샘플링된 프레임(1110) 내 샘플들의 위치가 고려될 수 있다.
상세히 설명하면, 다운샘플링된 프레임(1110) 내 샘플들(1112, 1114, 1116, 1118) 중 좌측 상부 샘플(1112)에 대해 도출된 제 1 가중치는 다운샘플링되기 전 프레임(1130)의 샘플 그룹들(1132, 1134, 1136, 1138) 중 좌측 상부에 위치하는 샘플 그룹(1132)에 할당될 수 있다. 이에 따라 프레임(1130)에서 좌측 상부에 위치하는 샘플 그룹(1132)에 포함된 샘플들에 대해서는 제 1 가중치 기반으로 게이팅 과정이 수행될 수 있다. 또한, 다운샘플링된 프레임(1110) 내 샘플들(1112, 1114, 1116, 1118) 중 우측 상부 샘플(1114)에 대해 도출된 제 2 가중치는 다운샘플링되기 전 프레임(1130)의 샘플 그룹들(1132, 1134, 1136, 1138) 중 우측 상부에 위치하는 샘플 그룹(1134)에 할당될 수 있다. 이에 따라 프레임(1130)에서 우측 상부에 위치하는 샘플 그룹(1134)에 포함된 샘플들에 대해서는 제 2 가중치 기반으로 게이팅 과정이 수행될 수 있다.
다른 예로서, 영상 처리 장치(100)는 샘플 그룹에 포함된 샘플들 중 인접 샘플 그룹과의 경계에 인접한 샘플들에 대해서는 해당 샘플 그룹에 할당된 가중치와 인접한 샘플 그룹에 할당된 가중치를 조합한 가중치를 적용할 수도 있다.
또 다른 예로, 영상 처리 장치(100)는 다운샘플링된 프레임(1110)에 대해 획득된 가중치들을 인터폴레이션하여 다운샘플링되기 전의 프레임(1130)의 게이팅 과정을 위한 가중치들을 획득할 수 있다. 인터폴레이션의 예로서, 바이리니어(bilinear) 인터폴레이션, 바이큐빅(bicubic) 인터폴레이션 또는 니어리스트 네이버(neareast neighbor) 인터폴레이션이 적용될 수 있다.
앞서 움직임 예측 과정 및 움직임 보상 과정들이 컨볼루션 연산 기반으로 수행되는 것으로 설명하였지만, 이는 하나의 실시예에 해당하고, 움직임 예측 과정과 움직임 보상 과정은 공지의 비디오 코덱의 인터 예측(inter prediction)에서 이용되는 알고리즘으로 수행될 수 있다.
일 예로, 움직임 예측 과정은 블록 매칭 알고리즘(block matching algorithm) 또는 옵티컬 플로우(optical flow) 알고리즘 기반으로 수행될 수 있다. 블록 매칭 알고리즘 및 옵티컬 플로우는 현재 프레임 내 샘플 또는 블록과 가장 유사한 샘플 또는 블록을 이전 프레임에서 써치하는 알고리즘이다. 블록 매칭 알고리즘 및 옵티컬 플로우을 통해 현재 프레임 내 샘플 또는 블록과 이전 프레임 내 유사 샘플 또는 유사 블록 사이의 움직임 벡터가 획득되고, 획득된 움직임 벡터에 기반하여 이전 프레임을 움직임 보상함으로써 예측 프레임이 획득될 수 있다. 블록 매칭 알고리즘(block matching algorithm) 및 옵티컬 플로우(optical flow) 알고리즘은 당업자에게 자명한 기술인 바, 본 개시에서는 상세한 설명을 생략한다.
이하에서는, 도 12 및 도 13을 참조하여 프레임들의 처리에 이용되는 신경망에 대해 상세히 설명한다.
도 2를 참조하여 전술한 바와 같이, 현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred), 가중치 적용된 예측 출력 프레임(Y't_pred) 및 가중치 적용된 예측 특징 맵(S't_pred)이 신경망(250)에 의해 처리됨으로써 현재 프레임(Xt)에 대응하는 현재 출력 프레임(Yt)이 획득될 수 있다.
신경망(250)은 적어도 하나의 서브 신경망을 포함할 수 있는데, 각 서브 신경망은 융합 레이어 및 복수의 컨볼루션 레이어로 구성될 수 있다.
적어도 하나의 서브 신경망 중 제 1 서브 신경망(1200)의 구조는 도 12에 도시되어 있다.
도 12를 참조하면, 제 1 서브 신경망(1200)은 제 1 컨볼루션 레이어(1214)와 제 2 컨볼루션 레이어(1216)를 포함하는 융합 레이어(1210), 및 복수의 제 3 컨볼루션 레이어(1230)로 구성될 수 있다. 컨볼루션 레이어에서는 훈련을 통해 결정된 필터 커널 기반으로 입력된 데이터에 대해 컨볼루션 연산이 수행될 수 있다.
융합 레이어(1210)는 현재 프레임(Xt)과, 게이팅 과정을 통해 출력된 데이터들, 즉, 가중치 적용된 예측 프레임(X't_pred), 가중치 적용된 예측 출력 프레임(Y't_pred) 및 가중치 적용된 예측 특징 맵(S't_pred)을 융합할 수 있다.
먼저, 현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred) 및 가중치 적용된 예측 출력 프레임(Y't_pred)은 연접(concatenation)(1212)된 후 제 1 컨볼루션 레이어(1214)로 입력될 수 있다.
연접이란, 현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred) 및 가중치 적용된 예측 출력 프레임(Y't_pred)을 채널 방향으로 결합하는 처리를 의미할 수 있다.
연접(1212) 결과로 획득된 데이터는 제 1 컨볼루션 레이어(1214)에서 컨볼루션 처리될 수 있다. 제 1 컨볼루션 레이어(1214)에 표시된 3x3x1은 3 x 3의 크기의 1개의 필터 커널을 이용하여 입력된 데이터에 대해 컨볼루션 처리를 하는 것을 예시한다. 컨볼루션 처리 결과 1개의 필터 커널에 의해 1개의 특징 맵이 생성될 수 있다.
현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred) 및 가중치 적용된 예측 출력 프레임(Y't_pred)이 연접된 결과가 제 1 컨볼루션 레이어(1214)로 입력되는 것과 별개로 가중치 적용된 예측 특징 맵(S't_pred)은 제 2 컨볼루션 레이어(1216)로 입력될 수 있다. 가중치 적용된 예측 특징 맵(S't_pred)은 제 2 컨볼루션 레이어(1216)에서 컨볼루션 처리될 수 있다. 제 2 컨볼루션 레이어(1216)에 표시된 3x3x1은 3 x 3의 크기의 1개의 필터 커널을 이용하여 입력된 데이터에 대해 컨볼루션 처리를 하는 것을 예시한다. 컨볼루션 처리 결과 1개의 필터 커널에 의해 1개의 특징 맵이 생성될 수 있다.
제 1 컨볼루션 레이어(1214)에서 출력된 데이터와 제 2 컨볼루션 레이어(1216)에서 출력된 데이터는 연접(1218)된 후 복수의 제 3 컨볼루션 레이어(1230)들에 의해 순차적으로 처리될 수 있다.
융합 레이어(1210)에서, 현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred) 및 가중치 적용된 예측 출력 프레임(Y't_pred)과 달리 가중치 적용된 예측 특징 맵(S't_pred)만이 구별되어 제 2 컨볼루션 레이어(1216)로 입력되는 이유는, 가중치 적용된 예측 특징 맵(S't_pred)의 도메인과 현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred) 및 가중치 적용된 예측 출력 프레임(Y't_pred)의 도메인이 서로 다르기 때문이다. 가중치 적용된 예측 특징 맵(S't_pred)은 프레임의 처리 과정에서 획득되는 특징 도메인의 데이터이나, 현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred) 및 가중치 적용된 예측 출력 프레임(Y't_pred)은 처리 대상에 해당하는 영상 데이터 또는 처리 결과로서 획득되는 영상 데이터이므로, 이들을 구별하여 컨볼루션 처리한 후 연접하는 것이다. 즉, 제 1 컨볼루션 레이어(1214)와 제 2 컨볼루션 레이어(1216)는 각각 현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred), 가중치 적용된 예측 출력 프레임(Y't_pred) 및 가중치 적용된 예측 특징 맵(S't_pred)의 도메인을 일치시키는 기능을 할 수 있다.
제 1 컨볼루션 레이어(1214)에서 출력된 데이터와 제 2 컨볼루션 레이어(1216)에서 출력된 데이터는 연접(1218)된 후 복수의 제 3 컨볼루션 레이어(1230)들에 의해 순차적으로 처리됨으로써 중간 출력 프레임(Yt_int)이 획득될 수 있다. 도 12에 도시된 것과 같이, 복수의 제 3 컨볼루션 레이어(1230)의 마지막 레이어(1234)에서 중간 출력 프레임(Yt_int)이 출력되고, 마지막 레이어(1234)의 이전 레이어(1232)에서 중간 특징 맵(St_int)이 출력된다. 도 12는 이전 레이어(1232) 다음에 마지막 레이어(1234)가 위치하는 것으로 도시하고 있으나, 이전 레이어(1232)와 마지막 레이어(1234) 사이에 하나 이상의 컨볼루션 레이어가 위치할 수도 있다.
제 3 컨볼루션 레이어(1230)들에 표시된 3x3x1은 3 x 3의 크기의 1개의 필터 커널을 이용하여 입력된 데이터에 대해 컨볼루션 처리를 하는 것을 예시한다. 컨볼루션 처리 결과 1개의 필터 커널에 의해 1개의 특징 맵 또는 1개의 출력 프레임이 생성될 수 있다.
복수의 제 3 컨볼루션 레이어(1230)들로부터 출력되는 중간 특징 맵(St_int)과 중간 출력 프레임(Yt_int)은 다음 서브 신경망으로 입력될 수 있다.
신경망이 하나의 서브 신경망만을 포함하고 있는 경우, 복수의 제 3 컨볼루션 레이어(1230)의 마지막 레이어(1234)에서 현재 출력 프레임(Yt)이 출력되고, 마지막 레이어(1234)의 이전 레이어(1232)에서 현재 특징 맵(St)이 출력될 수 있다.
현재 출력 프레임(Yt)과 현재 특징 맵(St)은 다음 프레임의 처리 과정에 이용될 수 있다.
도 12에 도시된 제 1 서브 신경망(1200)의 구조는 일 예시이며, 제 1 서브 신경망(1200)에 포함된 컨볼루션 레이어의 개수, 필터 커널의 크기 및 필터 커널의 개수는 실시예에 따라 다양하게 변경될 수 있다.
도 13은 신경망에 포함된 마지막 서브 신경망(1300)의 구조를 도시하는 도면이다.
제 1 서브 신경망(1200)과 마찬가지로 마지막 서브 신경망(1300)은 제 1 컨볼루션 레이어(1314)와 제 2 컨볼루션 레이어(1316)를 포함하는 융합 레이어(1310), 및 복수의 제 3 컨볼루션 레이어(1330)로 구성될 수 있다. 컨볼루션 레이어에서는 훈련을 통해 결정된 필터 커널 기반으로 입력된 데이터에 대해 컨볼루션 연산이 수행될 수 있다.
융합 레이어(1310)는 현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred), 이전 서브 신경망에서 출력된 중간 출력 프레임(Yt_int) 및 이전 서브 신경망에서 출력된 중간 특징 맵(St_int)을 융합할 수 있다.
먼저, 현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred) 및 중간 출력 프레임(Yt_int)은 연접(1312)된 후 제 1 컨볼루션 레이어(1314)로 입력될 수 있다.
연접(1312) 결과로 획득된 데이터는 제 1 컨볼루션 레이어(1314)에서 컨볼루션 처리될 수 있다. 제 1 컨볼루션 레이어(1314)에 표시된 3x3x1은 3 x 3의 크기의 1개의 필터 커널을 이용하여 입력된 데이터에 대해 컨볼루션 처리를 하는 것을 예시한다. 컨볼루션 처리 결과 1개의 필터 커널에 의해 1개의 특징 맵이 생성될 수 있다.
현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred) 및 중간 출력 프레임(Yt_int)이 연접된 결과가 제 1 컨볼루션 레이어(1314)로 입력되는 것과 별개로 중간 특징 맵(St_int)은 제 2 컨볼루션 레이어(1316)로 입력될 수 있다. 전술한 바와 같이, 중간 특징 맵(St_int)은 제 2 컨볼루션 레이어(1316)에서 컨볼루션 처리될 수 있다. 제 2 컨볼루션 레이어(1316)에 표시된 3x3x1은 3 x 3의 크기의 1개의 필터 커널을 이용하여 입력된 데이터에 대해 컨볼루션 처리를 하는 것을 예시한다. 컨볼루션 처리 결과 1개의 필터 커널에 의해 1개의 특징 맵이 생성될 수 있다.
전술한 바와 같이, 융합 레이어(1310) 내 제 1 컨볼루션 레이어(1314)와 제 2 컨볼루션 레이어(1316)는 각각 현재 프레임(Xt), 가중치 적용된 예측 프레임(X't_pred), 중간 출력 프레임(Yt_int) 및 중간 특징 맵(St_int)의 도메인을 일치시키는 기능을 할 수 있다.
제 1 컨볼루션 레이어(1314)에서 출력된 데이터와 제 2 컨볼루션 레이어(1316)에서 출력된 데이터는 연접(1318)된 후 복수의 제 3 컨볼루션 레이어(1330)들에 의해 순차적으로 처리될 수 있다.
제 1 컨볼루션 레이어(1314)에서 출력된 데이터와 제 2 컨볼루션 레이어(1316)에서 출력된 데이터는 연접된 후 복수의 제 3 컨볼루션 레이어(1330)들에 의해 순차적으로 처리됨으로써 현재 출력 프레임(Yt)이 획득될 수 있다.
도 13에 도시된 것과 같이, 복수의 제 3 컨볼루션 레이어(1330)의 마지막 레이어(1334)에서 현재 출력 프레임(Yt)이 출력되고, 마지막 레이어(1334)의 이전 레이어(1332)에서 현재 특징 맵(St)이 출력될 수 있다.
도 13은 이전 레이어(1332) 다음에 마지막 레이어(1334)가 위치하는 것으로 도시하고 있으나, 이전 레이어(1332)와 마지막 레이어(1334) 사이에 하나 이상의 컨볼루션 레이어가 위치할 수도 있다.
도 13에 도시된 서브 신경망(1300)이 마지막 서브 신경망이 아니라면, 복수의 제 3 컨볼루션 레이어(1330)의 마지막 레이어(1334)에서 중간 출력 프레임(Yt_int)이 출력되고, 마지막 레이어(1334)의 이전 레이어(1332)에서 중간 특징 맵(St_int)이 출력될 수 있다. 출력된 중간 출력 프레임(Yt_int)과 중간 특징 맵(St_int)은 다음 서브 신경망으로 입력될 수 있다.
제 3 컨볼루션 레이어(1330)들에 표시된 3x3x1은 3 x 3의 크기의 1개의 필터 커널을 이용하여 입력된 데이터에 대해 컨볼루션 처리를 하는 것을 예시한다. 컨볼루션 처리 결과 1개의 필터 커널에 의해 1개의 특징 맵 또는 1개의 출력 프레임이 생성될 수 있다.
도 13에 도시된 서브 신경망(1300)의 구조는 일 예시이며, 서브 신경망(1300)에 포함된 컨볼루션 레이어의 개수, 필터 커널의 크기 및 필터 커널의 개수는 실시예에 따라 다양하게 변경될 수 있다.
도 14는 일 실시예에 따른 영상 처리 방법의 응용 예를 도시하는 도면이다.
도 14에 도시된 응용 예는, 입력된 프레임들에 대한 영상 처리를 통해 입력된 프레임들의 해상도보다 큰 해상도를 갖는 출력 프레임들을 획득하는 과정을 나타낸다.
도 14의 VNN(video neural network)(1400)는 도 2에 도시된 신경망(250)에 대응할 수 있다. 프레임들이 VNN(1400)으로 입력되기 전에 전술한 움직임 예측 과정, 움직임 보상 과정, 가중치 도출 과정 및 게이팅 과정이 수행된 것으로 가정한다.
제 1 프레임(1412)이 VNN(1400)에 의해 처리됨에 따라 제 1 프레임(1412)의 해상도보다 큰 제 1 출력 프레임(1432)이 획득될 수 있다. 제 1 프레임(1412)과 제 1 출력 프레임(1432)은 제 2 프레임(1414)과 함께 VNN(1400)으로 입력되고, VNN(1400)에 의한 처리 결과로 제 2 프레임(1414)의 해상도보다 큰 해상도를 갖는 제 2 출력 프레임(1434)이 획득될 수 있다. 제 2 프레임(1414)과 제 2 출력 프레임(1434)은 제 3 프레임(1416)과 함께 VNN(1400)으로 입력되고, VNN(1400)에 의한 처리 결과로 제 3 프레임(1416)의 해상도보다 큰 해상도를 갖는 제 3 출력 프레임(1436)이 획득될 수 있다.
도 14에 도시된 응용 예는, 서버 등으로부터 수신한 프레임들의 해상도를 증가시키고자 할 때 유용할 수 있다. 서버는 작은 해상도의 프레임들을 부호화함으로써 작은 크기의 비트레이트를 영상 처리 장치(100)로 전송할 수 있고, 영상 처리 장치(100)는 복호화를 통해 획득한 작은 해상도의 프레임들을 처리하여 보다 큰 해상도의 출력 프레임들을 획득할 수 있다.
도 15는 다른 실시예에 따른 영상 처리 방법의 응용 예를 도시하는 도면이다.
도 15에 도시된 응용 예는, 입력된 프레임들에 대한 영상 처리를 통해 입력된 프레임들의 특성이 결합된 하나의 출력 프레임을 획득하는 과정을 나타낸다.
전술한 바와 같이, 프레임들이 VNN(1500)으로 입력되기 전에 전술한 움직임 예측 과정, 움직임 보상 과정, 가중치 도출 과정 및 게이팅 과정이 수행된 것으로 가정한다.
제 1 프레임(1512)은 VNN(1500)으로 입력되고, VNN(1500)에 의한 제 1 프레임(1512)의 처리 결과는 제 1 프레임(1512) 및 제 2 프레임(1514)과 함께 VNN(1500)으로 입력될 수 있다. 그리고, VNN(1500)에 의한 처리 결과는 제 2 프레임(1514) 및 제 3 프레임(1516)과 함께 VNN(1500)으로 다시 입력될 수 있다. VNN(1500)에 의한 처리 결과, 제 1 프레임(1512), 제 2 프레임(1514) 및 제 3 프레임(1516)의 특성이 모두 반영된 출력 프레임(1530)이 획득될 수 있다.
도 15에 도시된 응용 예는, 프레임들의 다이내믹 레인지를 향상시키는데 유용할 수 있다. 예를 들어, 어느 하나의 프레임이 긴 노출 시간으로 촬영되었고, 다른 하나의 프레임이 짧은 노출 시간으로 촬영되었다면, 두 프레임의 특성을 모두 포함함으로써 높은 다이내믹 레인지를 갖는 출력 프레임이 획득될 수 있다.
도 16은 또 다른 실시예에 따른 영상 처리 방법의 응용 예를 도시하는 도면이다.
도 16에 도시된 응용 예는, 영상 처리 장치(100)가 서버 또는 영상 프로바이더(provider)로서 동작할 때를 고려한 것이다. 일반적으로, 서버는 영상을 부호화하여 단말 장치로 전송하고, 단말 장치는 서버로부터 수신된 비트스트림을 복호화하여 영상을 복원할 수 있다.
영상 처리 장치(100)는 부호화/복호화 과정에서 발생하는 손실을 보상하기 위해 프레임들을 처리할 때, 인코더(120)에 의해 부호화된 후 디코더(140)에 의해 복호화된 프레임도 함께 이용할 수 있다.
구체적으로, 영상 처리 장치(100)는 제 1 프레임(1612)을 VNN(1600) 기반으로 처리하여 제 1 출력 프레임(A)(미도시)를 획득할 수 있다. 제 1 출력 프레임(A)의 부호화를 통해 제 1 비트스트림이 생성되고, 제 1 비트스트림에 대한 복호화를 통해 제 1 출력 프레임(A)이 복원될 수 있다. 영상 처리 장치(100)는 제 1 출력 프레임(A)를 VNN(1600)으로 처리하여 제 1 출력 프레임(B)(미도시)를 획득할 수 있다.
제 1 프레임(1612), 제 1 출력 프레임(A) 및 제 1 출력 프레임(B)는 제 2 프레임(1614)과 함께 VNN(1600)으로 입력될 수 있다. 전술한 실시예들에서는 하나의 출력 프레임이 다음 프레임과 함께 VNN(1600)으로 입력되었지만, 도 16에 도시된 응용 예에서는 두 개의 출력 프레임이 다음 프레임과 함께 VNN(1600)으로 입력될 수 있다. VNN(1600)으로 입력되기 전에 두 개의 출력 프레임 모두에 대해 움직임 보상 과정 및 게이팅 과정이 적용될 수 있다.
제 2 프레임(1614), 제 1 프레임(1612), 제 1 출력 프레임(A) 및 제 1 출력 프레임(B)이 VNN(1600)에 의해 처리되어 제 2 출력 프레임(A)가 획득될 수 있다. 제 2 출력 프레임(A)의 부호화를 통해 제 2 비트스트림이 생성되고, 제 2 비트스트림에 대한 복호화를 통해 제 2 출력 프레임(A)이 복원될 수 있다. 영상 처리 장치(100)는 제 2 출력 프레임(A)와 제 1 출력 프레임(B)를 VNN(1600)으로 처리하여 제 2 출력 프레임(B)(미도시)를 획득할 수 있다. 도시되어 있지는 않지만, 영상 처리 장치(100)는 제 2 출력 프레임(A) 및 제 1 출력 프레임(B)와 함께 복호화를 통해 복원된 제 1 출력 프레임(A)도 VNN(1600)으로 처리하여 제 2 출력 프레임(B)(미도시)를 획득할 수 있다.
제 2 프레임(1614), 제 2 출력 프레임(A) 및 제 2 출력 프레임(B)는 제 3 프레임(1616)과 함께 VNN(1600)으로 입력될 수 있다. 제 3 프레임(1616), 제 2 프레임(1614), 제 2 출력 프레임(A) 및 제 2 출력 프레임(B)이 VNN(1600)에 의해 처리되어 제 3 출력 프레임(A)가 획득될 수 있다.
도 17은 일 실시예에 따른 멀티 프레임의 처리 방법의 순서도이다.
S1710 단계에서, 영상 처리 장치(100)는 현재 프레임의 현재 샘플에 대응하는 예측 샘플을 이전 프레임에서 식별한다.
예측 샘플의 식별을 위해 현재 프레임 및 이전 프레임에 대한 움직임 예측이 수행될 수 있다. 전술한 바와 같이, 예측 샘플의 식별을 위해 현재 프레임 및 이전 프레임에 대해 컨볼루션 연산이 수행될 수 있다.
S1720 단계에서, 영상 처리 장치(100)는 이전 프레임의 콜로케이티드 샘플의 샘플 값을 예측 샘플의 샘플 값에 따라 변경하여 현재 프레임의 예측 프레임을 생성한다.
움직임 벡터들에 해당하는 필터 커널들에 기반한 이전 프레임에 대한 컨볼루션 연산을 통해 예측 프레임이 생성될 수 있다.
S1730 단계에서, 영상 처리 장치(100)는 현재 샘플의 샘플 값과 예측 샘플의 샘플 값을 비교하여 가중치를 도출한다.
영상 처리 장치(100)는 현재 샘플의 샘플 값과 예측 샘플의 샘플 값의 차이 값이 클수록 가중치를 작게 결정하고, 현재 샘플의 샘플 값과 예측 샘플의 샘플 값의 차이 값이 작을수록 가중치를 크게 결정할 수 있다.
S1740 단계에서, 영상 처리 장치(100)는 예측 프레임의 콜로케이티드 샘플에 가중치를 적용한다.
영상 처리 장치(100)는 예측 프레임의 콜로케이티드 샘플에 가중치를 곱할 수 있다.
S1750 단계에서, 영상 처리 장치(100)는 컨볼루션 레이어를 포함하는 신경망을 통해 가중치 적용된 예측 프레임과 현재 프레임을 처리하여 현재 출력 프레임을 획득한다.
한편, 전술한 움직임 예측 과정(210)에서는, 현재 프레임(Xt)의 현재 샘플에 대응하는 이전 프레임(Xt-1)의 콜로케이티드 샘플 및 콜로케이티드 샘플의 주변 샘플들 중에서 현재 샘플의 예측 샘플을 식별하고, 현재 프레임(Xt) 내 현재 샘플과 이전 프레임(Xt-1) 내 예측 샘플의 상대적 위치를 움직임 벡터로 결정할 수 있다. 그러나, 이러한 움직임 예측 과정(210)에서는 이전 프레임(Xt-1)의 콜로케이티드 샘플 및 콜로케이티드 샘플의 주변 샘플들만을 비교 대상으로 이용하므로, 현재 샘플에 대응하는 움직임 벡터가 노이즈에 취약해질 가능성이 있다.
예를 들어, 현재 프레임(Xt)과 이전 프레임(Xt-1)에 포함된 오브젝트의 움직임이 큰 경우, 또는 현재 프레임(Xt)과 이전 프레임(Xt-1)의 해상도가 큰 경우, 현재 샘플에 대응하는 예측 샘플이 이전 프레임(Xt-1)의 콜로케이티드 샘플의 주변에 위치하지 않을 수 있다. 이때, 이전 프레임(Xt-1)의 콜로케이티드 샘플의 주변에서 예측 샘플을 식별함으로써, 부정확한 움직임 벡터가 도출될 수 있는 것이다.
이하에서는, 프레임에 움직임이 큰 오브젝트와 움직임이 작은 오브젝트가 함께 포함되거나, 프레임의 해상도가 크더라도 프레임 내 샘플들에 대응하는 움직임 벡터들을 보다 정확히 결정하는 방법에 대해 설명한다.
이하에서 설명할 움직임 예측 과정은, 도 2에 도시된 움직임 예측 과정(210)의 다른 실시예로서, 움직임 보상 과정(220), 가중치 도출 과정(230), 게이팅 과정(240) 및 신경망(250)에 의한 처리 과정도 수행될 수 있다. 그러나, 이하에서 설명할 움직임 예측 과정은, 도 2에 도시된 현재 프레임의 처리 과정만을 위한 것은 아니다. 후술하는 움직임 예측 과정은 두 개의 프레임들로부터 움직임 벡터를 도출하기 위한 다양한 분야에 적용될 수 있다.
도 18은 다른 실시예에 따른 영상 처리 장치(1800)의 구성을 도시하는 도면이다.
도 18을 참조하면, 다른 실시예에 따른 영상 처리 장치(1800)는 컨볼루션 처리부(1810), 비교부(1820), 풀링 처리부(1830), 결합부(1840) 및 움직임 벡터 결정부(1850)를 포함할 수 있다.
컨볼루션 처리부(1810), 비교부(1820), 풀링 처리부(1830), 결합부(1840) 및 움직임 벡터 결정부(1850)는 적어도 하나의 프로세서로 구현될 수 있다.
컨볼루션 처리부(1810), 비교부(1820), 풀링 처리부(1830), 결합부(1840) 및 움직임 벡터 결정부(1850)는 메모리에 저장된 하나 이상의 인스트럭션에 따라 동작할 수 있다.
컨볼루션 처리부(1810) 및 풀링 처리부(1830)는 후술하는 컨볼루션 연산 및 풀링 연산을 위한 적어도 하나의 ALU(Arithmetic logic unit)를 포함할 수 있다. 컨볼루션 연산 및 풀링 연산을 위해, ALU는 곱 연산을 수행하는 곱셈기 및 덧셈 연산을 하는 가산기를 포함할 수 있다.
도 18에 도시된 영상 처리 장치(1800)는 움직임 예측 과정을 수행하기 위한 것으로서, 일 실시예에서, 움직임 보상 과정도 함께 수행할 수 있다.
컨볼루션 처리부(1810)는 제 1 프레임에 대해 제 1 필터 커널 기반으로 컨볼루션 처리하여 제 1 특징 맵을 획득하고, 제 2 프레임에 대해 복수의 제 2 필터 커널 기반으로 컨볼루션 처리하여 복수의 제 2 특징 맵들을 획득할 수 있다.
제 1 프레임과 제 2 프레임은 서로 다른 시점에 촬영된 정지 영상일 수 있다. 예를 들어, 제 1 프레임은 현재 프레임(Xt)이고, 제 2 프레임은 이전 프레임(Xt-n)(n인 1 이상의 정수)일 수 있다. 제 1 프레임은 제 1 전체 프레임으로부터 분할된 패치 프레임이고, 제 2 프레임은 제 2 전체 프레임으로부터 분할된 패치 프레임일 수 있다.
컨볼루션 처리부(1810)는 제 1 프레임의 샘플들에 대해 제 1 필터 커널에 기반한 컨볼루션 연산을 스트라이드에 따라 순차적으로 수행할 수 있고, 제 2 프레임의 샘플들에 대해 복수의 제 2 필터 커널들에 기반한 컨볼루션 연산을 스트라이드에 따라 순차적으로 수행할 수 있다. 제 1 필터 커널과 제 2 필터 커널들에 기반한 컨볼루션 연산의 스트라이드는 1일 수 있다.
제 1 프레임의 현재 샘플 및 현재 샘플의 주변 샘플들에 대해 제 1 필터 커널 기반의 컨볼루션 연산이 수행됨으로써, 제 1 특징 맵의 콜로케이티드 샘플의 샘플 값이 획득될 수 있다. 또한, 제 2 프레임의 콜로케이티드 샘플 및 콜로케이티드 샘플의 주변 샘플들에 대해 복수의 제 2 필터 커널들 기반의 컨볼루션 연산이 수행됨으로써, 복수의 제 2 특징 맵들의 콜로케이티드 샘플의 샘플 값이 획득될 수 있다.
제 1 필터 커널 및 복수의 제 2 필터 커널들은 소정의 크기를 가질 수 있다. 예를 들어, 제 1 필터 커널 및 복수의 제 2 필터 커널들은 3x3, 4x4 또는 5x5 등의 크기를 가질 수 있다.
제 1 필터 커널 및 복수의 제 2 필터 커널에 기반한 제 1 프레임 및 제 2 프레임에 대한 컨볼루션 연산 결과 제 1 프레임 및 제 2 프레임과 동일한 크기의 제 1 특징 맵과 제 2 특징 맵들이 획득될 수 있다. 제 1 프레임 및 제 2 프레임과 동일한 크기의 제 1 특징 맵과 제 2 특징 맵들을 획득하기 위해 컨볼루션 처리부(1810)는 제 1 프레임과 제 2 프레임을 패딩(padding)할 수 있다.
제 1 필터 커널은 현재 샘플에 대응하는 샘플이 기 설정된 제 1 값을 가지고, 나머지 샘플들이 0의 값을 가질 수 있다. 제 1 필터 커널은 제 1 프레임의 현재 샘플 및 현재 샘플들의 주변 샘플에 적용되는데, 현재 샘플에 대응하는 샘플이란, 제 1 필터 커널의 샘플들 중 현재 샘플과의 곱연산에 적용되는 샘플을 의미한다.
제 1 필터 커널의 샘플들 중 현재 샘플에 대응하는 샘플이 기 설정된 제 1 값을 가짐으로써, 제 1 특징 맵의 샘플들이 제 1 프레임의 샘플들의 샘플 값들에 제 1 값을 곱한 값으로 산출될 수 있다. 따라서, 제 1 값이 1이라면, 제 1 특징 맵의 샘플 값들은 제 1 프레임의 샘플 값들과 동일하게 된다.
일 실시예에서, 제 1 프레임에 대한 컨볼루션 연산은 생략될 수도 있다. 그 이유는, 현재 샘플에 대응하는 제 1 필터 커널의 샘플이 1의 값을 가지고, 그 이외의 샘플들이 0의 값을 가지는 경우, 컨볼루션 연산 결과로 획득되는 제 1 특징 맵은 결국 제 1 프레임과 동일하기 때문이다.
제 2 프레임에 대한 컨볼루션 연산에 이용되는 복수의 제 2 필터 커널들은 0의 값 및 기 설정된 제 2 값을 가질 수 있다. 기 설정된 제 2 값은 기 설정된 제 1 값과 동일할 수 있다. 예를 들어, 제 1 값과 제 2 값 모두 1일 수 있다. 제 1 값과 제 2 값이 동일한 경우, 제 1 필터 커널은 복수의 제 2 필터 커널들 중 어느 하나에 해당할 수 있다.
일 실시예에서, 기 설정된 제 2 값은 기 설정된 제 1 값과 부호가 다른 값일 수 있다. 예를 들어, 제 1 값이 1이면 제 2 값은 -1일 수 있다.
복수의 제 2 필터 커널들의 샘플들 중 어느 하나의 샘플은 기 설정된 제 2 값을 가지고, 나머지 샘플들은 0의 값을 가질 수 있다. 제 2 값을 가지는 샘플의 위치는 복수의 제 2 필터 커널 별로 다를 수 있다.
제 2 필터 커널들의 개수는 제 2 필터 커널들의 크기에 따라 달라질 수 있다. 제 2 필터 커널들의 개수는 제 2 필터 커널들 각각에 포함된 샘플들의 개수와 동일할 수 있다. 예를 들어, 제 2 필터 커널들의 크기가 3x3이라면, 제 2 필터 커널들의 개수는 9개일 수 있다. 이는, 제 2 값을 갖는 샘플의 위치가 제 2 필터 커널들마다 다르기 때문이다.
제 2 필터 커널들을 이용한 제 2 프레임에 대한 컨볼루션 연산을 통해 제 2 특징 맵들이 획득될 수 있다. 제 2 특징 맵들의 개수는 제 2 필터 커널들의 개수와 동일하다.
제 2 필터 커널들은 제 2 프레임의 콜로케이티드 샘플과 콜로케이티드 샘플의 주변 샘플들 중 어느 하나의 샘플 값을 추출하는데 이용될 수 있다. 예를 들어, 좌상측 샘플이 제 2 값을 갖는 제 2 필터 커널은, 제 2 프레임의 콜로케이티드 샘플의 좌측 상부에 위치한 샘플의 샘플 값을 추출하는데 이용될 수 있고, 우상측 샘플이 제 2 값을 갖는 제 2 필터 커널은, 제 2 프레임의 콜로케이티드 샘플의 우측 상부에 위치한 샘플의 샘플 값을 추출하는데 이용될 수 있다. 제 2 필터 커널에 의해 추출된 제 2 프레임의 샘플 값에 제 2 값이 곱해져 제 2 특징 맵의 콜로케이티드 샘플에 할당될 수 있다.
컨볼루션 처리부(1810)에 의해 획득된 제 1 특징 맵 및 복수의 제 2 특징 맵들은 비교부(1820)로 제공될 수 있다.
비교부(1820)는 제 1 특징 맵과 각각의 제 2 특징 맵들 사이의 차이 맵들을 생성할 수 있다. 차이 맵은 제 1 특징 맵 내 샘플 값들과 각각의 제 2 특징 맵 내 동일 위치의 샘플 값들이 얼마나 차이가 나는지를 가리킨다.
일 예시에서, 제 1 특징 맵 내 샘플 값들로부터 각각의 제 2 특징 맵 내 동일 위치의 샘플 값들을 차감한 값(또는, 제 1 특징 맵 내 샘플 값들과 각각의 제 2 특징 맵 내 동일 위치의 샘플 값들을 합산한 값)들의 절대 값들이 차이 맵의 샘플 값들이 될 수 있다.
예를 들어, 제 1 특징 맵 내 콜로케이티드 샘플의 샘플 값으로부터 각각의 제 2 특징 맵 내 콜로케이티드 샘플의 샘플 값을 차감한 값의 절대 값이 차이 맵들의 콜로케이티드 샘플의 샘플 값이 될 수 있다.
비교부(1820)에 의해 생성된 차이 맵들은 풀링 처리부(1830)로 제공될 수 있다.
풀링 처리부(1830)는 복수의 처리 맵들을 풀링(pooling) 처리할 수 있다. 여기서, 풀링 처리는 에버리지 풀링 처리(average pooling process) 또는 메디안 풀링 처리(median pooling process)를 포함할 수 있다.
구체적으로, 풀링 처리부(1830)는 제 1 크기의 필터 커널 기반으로 차이 맵들을 풀링 처리하여 복수의 제 3 특징 맵들을 생성하고, 제 2 크기의 필터 커널 기반으로 차이 맵들을 풀링 처리하여 복수의 제 4 특징 맵들을 생성할 수 있다. 여기서, 제 1 크기와 제 2 크기는 서로 상이할 수 있다.
일 실시예에서, 풀링 처리부(1830)는 제 1 크기 및 제 2 크기와 상이한 제 3 크기의 필터 커널 기반으로 차이 맵들을 풀링 처리하여 복수의 제 5 특징 맵들을 생성할 수도 있다.
필터 커널의 크기에 따라 한번의 풀링 처리에 이용되는 차이 맵 내 샘플들의 개수가 달라진다. 예를 들어, 2x2 크기의 필터 커널의 경우, 각각의 차이 맵 내 4개의 샘플들이 풀링 처리되고, 스트라이드에 따라 각각의 차이 맵 내 다음 4개의 샘플들이 풀링 처리된다. 다른 예로, 4x4 크기의 필터 커널의 경우, 각각의 차이 맵 내 16개의 샘플들이 풀링 처리되고, 스트라이드에 따라 각각의 차이 맵 내 다음 16개의 샘플들이 풀링 처리된다.
제 1 크기의 필터 커널(2215)에 기반한 풀링 처리에서 이용되는 제 1 스트라이드와 제 2 크기의 필터 커널(2216)에 기반한 풀링 처리에서 이용되는 제 2 스트라이드는 서로 다를 수 있다. 제 1 크기 및 제 1 스트라이드는, 제 2 크기 및 제 2 스트라이드보다 클 수 있다.
예를 들어, 제 1 크기 및 제 1 스트라이드는 k(k는 자연수)이고, 제 2 크기 및 제 2 스트라이드는 k/2일 수 있다. 크기가 k 또는 k/2라는 것은, 필터 커널의 가로 크기 또는 세로 크기가 k 또는 k/2라는 것을 의미한다. 다시 말하면, 제 1 크기가 k라는 것은, 한 번의 풀링 처리에 이용되는 샘플들의 가로 방향의 개수 또는 세로 방향의 개수가 k라는 것을 의미한다. 마찬가지로, 제 2 크기가 k/2라는 것은, 한 번의 풀링 처리에 이용되는 샘플들의 가로 방향의 개수 또는 세로 방향의 개수가 k/2라는 것을 의미한다.
k 크기의 필터 커널 및 k의 스트라이드에 따른 풀링 처리는, 상대적으로 큰 영역에서의 움직임 방향성을 고려하여 샘플 별로 계산한 차이 맵의 노이즈 성분을 제거하는 역할을 한다. 또한, k/2 크기의 필터 커널 및 k/2의 스트라이드에 따른 풀링 처리는, 상대적으로 작은 영역에서의 움직임을 고려하여 큰 크기의 필터 커널 기반의 풀링 처리로 인해 발생 가능한 블러(blur) 현상을 완화하는 역할을 한다.
차이 맵들은 제 1 프레임 내 현재 샘플과 제 2 프레임 내 콜로케이티드 샘플 및 콜로케이티드 샘플의 주변 샘플들 사이의 차이를 나타내므로, 전술한 바와 같이, 오브젝트의 움직임 정보가 큰 경우 또는 제 1 프레임과 제 2 프레임의 해상도가 큰 경우, 현재 샘플의 움직임 벡터가 정확하게 산출되지 않을 수 있다.
이에, 풀링 처리부(1830)는 서로 다른 크기의 필터 커널 기반으로 차이 맵들을 풀링 처리함으로써, 제 2 프레임 내 콜로케이티드 샘플로부터 멀리 떨어진 샘플도 현재 샘플의 움직임 벡터를 산출하는데 영향을 미칠 수 있게 한다. 즉, 제 2 프레임의 전체 문맥을 고려하는 것이다.
결합부(1840)는 복수의 제 3 특징 맵들과 복수의 제 4 특징 맵들을 결합하여 복수의 변형 차이 맵들을 생성할 수 있다.
결합부(1840)는 어느 하나의 차이 맵에 대한 풀링 처리를 통해 생성된 제 3 특징 맵과 제 4 특징 맵을 결합하여 상기 어느 하나의 차이 맵에 대응하는 변형 차이 맵을 생성할 수 있다. 또한, 결합부(1840)는 다른 하나의 차이 맵에 대한 풀링 처리를 통해 생성된 제 3 특징 맵과 제 4 특징 맵을 결합하여 상기 다른 하나의 차이 맵에 대응하는 변형 차이 맵을 생성할 수 있다.
결합부(1840)는 복수의 제 3 특징 맵들의 샘플들과 복수의 제 4 특징 맵들의 샘플들을 미리 결정된 가중치들에 따라 가중 합하여 복수의 변형 차이 맵들을 생성할 수 있다.
결합부(1840)는 복수의 제 3 특징 맵들에 적용되는 가중치와 복수의 제 4 특징 맵들에 적용되는 가중치를 서로 다르게 결정할 수 있다.
예를 들어, 복수의 제 3 특징 맵들을 생성하는데 이용된 필터 커널의 제 1 크기가 복수의 제 4 특징 맵들을 생성하는데 이용된 필터 커널의 제 2 크기보다 크고, 제 1 프레임과 제 2 프레임에 포함된 오브젝트의 움직임이 크다면, 결합부(1840)는 제 3 특징 맵들에 적용되는 가중치를 제 4 특징 맵들에 적용되는 가중치보다 크게 결정할 수 있다. 이에 따라, 현재 샘플에 대응하는 제 2 프레임의 콜로케이티드 샘플로부터 멀리 떨어진 샘플이 현재 샘플의 움직임 벡터를 결정하는데 더 많은 영향을 미칠 수 있다.
반대로, 제 1 프레임과 제 2 프레임에 포함된 오브젝트의 움직임이 작다면, 결합부(1840)는 제 3 특징 맵들에 적용되는 가중치를 제 4 특징 맵들에 적용되는 가중치보다 작게 결정할 수 있다.
결합부(1840)는 제 1 프레임과 제 2 프레임의 컨텐츠에 따라 제 3 특징 맵들에 적용될 가중치와 제 4 특징 맵들에 적용될 가중치를 결정할 수 있다.
일 예로, 제 1 프레임과 제 2 프레임이 스포츠 경기, 액션 무비를 구성하는 프레임들(즉, 오브젝트들의 움직임이 큰 영상의 프레임들)이고, 제 3 특징 맵들을 생성하는데 이용된 필터 커널의 제 1 크기가 제 4 특징 맵들을 생성하는데 이용된 필터 커널의 제 2 크기보다 크다면, 제 3 특징 맵들에 적용되는 가중치를 제 4 특징 맵들에 적용되는 가중치보다 크게 결정할 수 있다.
다른 예로, 제 1 프레임과 제 2 프레임이 연주 영상이나 토크쇼 영상 등을 구성하는 프레임들(즉, 오브젝트들의 움직임이 작은 영상의 프레임들)인 경우, 제 3 특징 맵들에 적용되는 가중치를 제 4 특징 맵들에 적용되는 가중치보다 작게 결정할 수 있다.
풀링 처리를 통해 생성되는 특징 맵들에 적용될 가중치는 신경망 기반으로 결정될 수도 있는데, 이와 관련하여서는 도 26을 참조하여 후술한다.
움직임 벡터 결정부(1850)는 복수의 변형 차이 맵들을 이용하여 제 1 프레임 내 샘플들에 대응하는 움직임 벡터들을 도출할 수 있다.
일 실시예에서, 움직임 벡터 결정부(1850)는 제 1 프레임의 현재 샘플에 대응하는 복수의 변형 차이 맵들의 콜로케이티드 샘플들의 크기를 고려하여 어느 하나의 콜로케이티드 샘플을 식별할 수 있다.
일 실시예에서, 움직임 벡터 결정부(1850)는 복수의 변형 차이 맵들의 콜로케이티드 샘플들 중 가장 작은 크기의 콜로케이티드 샘플을 식별할 수 있다.
움직임 벡터 결정부(1850)는 식별된 콜로케이티드 샘플을 포함하는 변형 차이 맵에 대응하는 제 2 특징 맵을 획득하는데 이용된 제 2 필터 커널을 확인할 수 있다. 복수의 제 2 필터 커널들, 복수의 제 2 특징 맵들, 복수의 차이 맵들 및 복수의 변형 차이 맵들은 1:1로 대응하므로, 움직임 벡터 결정부(1850)는 식별된 콜로케이티드 샘플을 포함하는 변형 차이 맵에 대응하는 제 2 필터 커널을 확인할 수 있다.
움직임 벡터 결정부(1850)는 확인된 제 2 필터 커널을 현재 샘플에 대응하는 움직임 벡터로 결정할 수 있다.
컨볼루션 처리부(1810)는 제 1 프레임 내 샘플들에 대응하는 움직임 벡터들이 결정되면, 제 2 프레임에 대해 움직임 보상을 적용함으로써 제 2 프레임을 제 1 프레임과 유사하게 변형시킬 수 있다.
컨볼루션 처리부(1810)는 제 2 프레임을 움직임 벡터에 해당하는 필터 커널 기반으로 컨볼루션 처리함으로써 움직임 보상을 수행할 수 있다. 필터 커널 기반의 움직임 보상 과정은 도 8 및 도 9와 관련하여 설명하였으므로, 여기서는 상세한 설명을 생략한다.
이하에서는, 도 19 내지 도 24를 참조하여, 영상 처리 장치(1800)에 의한 움직임 예측 과정을 구체적인 예를 들어 설명한다.
도 19는 제 1 프레임(1910)에 대한 컨볼루션 처리를 설명하기 위한 도면이다.
도 19는 제 1 프레임(1910) 및 제 1 필터 커널(1915)이 4x4의 크기를 갖는 것으로 도시하고 있으나, 이는 하나의 예시일 뿐, 제 1 프레임(1910) 및 제 1 필터 커널(1915)의 크기는 다양할 수 있다.
제 1 프레임(1910)의 샘플 값들과 제 1 필터 커널(1915)의 샘플들 사이의 컨볼루션 연산을 통해 제 1 특징 맵(1930)이 생성될 수 있다. 제 1 특징 맵(1930)의 크기 역시 4x4로서 제 1 프레임(1910)의 크기와 동일할 수 있다.
제 1 필터 커널(1915)의 샘플들 중 컨볼루션 연산 과정에서 제 1 프레임(1910) 내 샘플들 각각과의 곱 연산에 이용되는 샘플은 1의 값을 가지고, 나머지 샘플들은 0의 값을 가질 수 있다. 일 실시예에서, 제 1 필터 커널(1915)의 샘플들 중 좌상단 샘플의 위치가 (0,0)이라 하였을 때, (1, 1)의 위치에 있는 샘플 값은 1이고, 나머지 샘플 값들은 0일 수 있다. 제 1 필터 커널(1915)이 스트라이드에 따라 이동하면서 제 1 프레임(1910)과 컨볼루션 연산될 때, 제 1 필터 커널(1915) 내 (1, 1)의 위치에 있는 샘플은 제 1 프레임(1910)의 각 샘플과의 곱 연산에 이용될 수 있다.
제 1 필터 커널(1915)은 스트라이드(도 19에서 스트라이드는 1임)에 따라 이동하면서 제 1 프레임(1910) 내 샘플들과 컨볼루션 연산될 수 있다. 컨볼루션 연산 과정에서 제 1 프레임(1910) 내 샘플들 각각과의 곱 연산에 이용되는 제 1 필터 커널(1915)의 샘플 값이 1이므로, 제 1 프레임(1910)과 동일한 제 1 특징 맵(1930)이 생성될 수 있다.
도 19에서 제 1 프레임(1910)의 외부에 점선으로 도시된 부분들(P)은 패딩 영역으로서, 컨볼루션 처리부(1810)는 제 1 프레임(1910)과 동일한 크기의 제 1 특징 맵(1930)을 생성하기 위해 제 1 프레임(1910)을 패딩 처리할 수 있다. 패딩 영역의 샘플 값들은 0으로 설정될 수 있으나, 이에 한정되는 것은 아니다.
도 20은 제 2 프레임(2010)에 대한 컨볼루션 처리를 설명하기 위한 도면이다.
도 20은 명확한 설명을 위해 어느 하나의 제 2 필터 커널(2015)에 의한 컨볼루션 처리만을 도시하고 있다. 그러나, 전술한 바와 같이, 복수의 제 2 필터 커널 각각에 의한 컨볼루션 처리를 통해 복수의 제 2 필터 커널들 각각에 대응하는 복수의 제 2 특징 맵들이 생성될 수 있다. 복수의 제 2 필터 커널들 중 도 20에 도시된 제 2 필터 커널(2015) 이외의 제 2 필터 커널들에 의한 컨볼루션 처리 과정은 이하에서 설명할 과정과 동일할 수 있다.
도 20은 제 2 프레임(2010) 및 제 2 필터 커널(2015)이 4x4의 크기를 갖는 것으로 도시하고 있으나, 이는 하나의 예시일 뿐, 제 2 프레임(2010) 및 제 2 필터 커널(2015)의 크기는 다양할 수 있다.
제 2 프레임(2010)의 샘플 값들과 제 2 필터 커널(2015)의 샘플들 사이의 컨볼루션 연산을 통해 제 2 특징 맵(2030)이 생성될 수 있다 제 2 특징 맵(2030)의 크기 역시 4x4로서 제 2 프레임(2010)의 크기와 동일할 수 있다.
도 20에서 제 2 프레임(2010)의 외부에 점선으로 도시된 부분들(P)은 패딩 영역으로서, 컨볼루션 처리부(1810)는 제 2 프레임(2010)과 동일한 크기의 제 2 특징 맵(2030)을 생성하기 위해 제 2 프레임(2010)을 패딩 처리할 수 있다. 패딩 영역은 0의 값을 가질 수 있으나, 이에 한정되는 것은 아니다.
제 2 필터 커널(2015)의 샘플들 중 어느 하나의 샘플은 -1의 값을 가지고, 나머지 샘플들은 0의 값을 가질 수 있다. 전술한 바와 같이, -1의 값을 갖는 샘플의 위치는 제 2 필터 커널별로 상이할 수 있다.
제 2 필터 커널(2015)은 스트라이드(도 20에서 스트라이드는 1임)에 따라 이동하면서 제 2 프레임(2010) 내 샘플들과 컨볼루션 연산될 수 있다.
일 실시예에서, 제 2 프레임(2010) 내 샘플들과 제 2 필터 커널(2015)의 샘플들 간의 컨볼루션 연산을 통해 제 2 필터 커널(2015)에 대응하는 제 2 특징 맵(2030)이 생성될 수 있다.
복수의 제 2 필터 커널들은 제 1 프레임(1910)의 샘플들에 대응하는 움직임 벡터 후보들에 해당할 수 있다. 움직임 벡터 후보들 중 어느 하나가 제 1 프레임(1910)의 샘플들 각각에 대한 움직임 벡터로 결정될 수 있다.
도 21은 제 1 특징 맵(1930)과 제 2 특징 맵(2030) 사이의 차이 맵(2100)을 획득하는 방법을 설명하기 위한 도면이다.
비교부(1820)는 제 1 특징 맵(1930)의 샘플들과 제 2 특징 맵(2030)의 샘플들 사이의 차이 맵(2100)을 생성할 수 있다.
비교부(1820)는 제 1 특징 맵(1930)과 제 2 특징 맵(2030)을 비교할 때 동일 위치의 샘플들끼리 비교할 수 있다. 제 1 특징 맵(1930)과 제 2 특징 맵(2030) 사이의 차이 맵(2100)이 도출되는 과정을 설명하면, 제 1 특징 맵(1930)의 좌상단 샘플 값인 1과 제 2 특징 맵(2030)의 좌상단 샘플 값인 0을 합산한 값의 절대 값이 차이 맵(2100)의 좌상단 샘플 값으로 할당될 수 있다. 그리고, 제 1 특징 맵(1930)의 좌상단 샘플의 우측 샘플 값인 2와 제 2 특징 맵(2030)의 좌상단 샘플의 우측 샘플 값인 0을 합산한 값의 절대 값이 차이 맵(2100)의 좌상단 샘플의 우측 샘플 값으로 할당될 수 있다. 마지막으로, 제 1 특징 맵(1930)의 우하단 샘플 값인 7과 제 2 특징 맵(2030)의 우하단 샘플 값인 -3을 합산한 값의 절대 값이 차이 맵(2100)의 우하단 샘플 값으로 할당될 수 있다.
차이 맵(2100)이 갖는 샘플 값들은 제 1 프레임(1910)의 샘플들이 제 2 프레임(2010) 내 동일 위치의 샘플들 및 그 주위에 위치하는 샘플들과 얼마나 유사한지를 나타낼 수 있다.
제 2 특징 맵(2030)은 좌상단 샘플 값이 -1인 제 2 필터 커널(2015)로부터 생성된 것이므로, 차이 맵(2100) 내 특정 위치의 샘플 값이 작다는 것은 제 1 프레임(1910) 내 특정 위치의 샘플의 움직임 벡터가 좌상단 샘플 값이 -1인 제 2 필터 커널(2015)일 가능성이 높다는 것을 의미할 수 있다. 다만, 전술한 바와 같이, 노이즈로 인한 움직임 벡터의 부정확함을 방지하기 위해 풀링 처리부(1830)는 차이 맵(2100)에 대한 풀링 처리를 할 수 있다.
도 22는 차이 맵(2100)에 대한 풀링 처리를 설명하기 위한 도면이다.
풀링 처리부(1830)는 제 1 크기의 필터 커널(2215), 제 2 크기의 필터 커널(2216) 및 제 3 크기의 필터 커널(2217)을 기반으로 차이 맵(2100)을 풀링 처리한다. 도 22는 애버리지 풀링 처리를 예시하고 있다.
도 22에서, 제 1 크기는 4 (또는 4x4)이고, 제 2 크기는 2 (또는 2x2)이고, 제 3 크기는 1(또는 1x1)이다.
4의 크기를 갖는 필터 커널을 통해 4의 스트라이드에 따라 차이 맵(2100)이 풀링 처리됨으로써, 차이 맵(2100) 내 샘플 값들의 평균 값을 샘플 값으로 갖는 제 3 특징 맵(2202)이 생성될 수 있다.
또한, 2의 크기를 갖는 필터 커널을 통해 2의 스트라이드에 따라 차이 맵(2100)이 풀링 처리됨으로써, 차이 맵(2100) 내 4개의 샘플 값들의 평균 값을 샘플 값으로 갖는 제 4 특징 맵(2204)이 생성될 수 있다.
또한, 1의 크기를 갖는 필터 커널을 통해 1의 스트라이드에 따라 차이 맵(2100)이 풀링 처리됨으로써, 차이 맵(2100) 내 샘플 값들 각각을 샘플 값으로 갖는 제 5 특징 맵(2206)이 생성될 수 있다.
도 22에 도시된 필터 커널들(2215, 2216, 2217)의 크기는 하나의 예시일 뿐이며, 풀링 처리에 이용되는 필터 커널들의 크기가 서로 다르다면, 필터 커널의 개수 및 크기는 다양할 수 있다.
도 23은 풀링 처리를 통해 획득된 제 3 특징 맵(2202), 제 4 특징 맵(2204) 및 제 5 특징 맵(2206)을 결합하는 방법을 설명하기 위한 도면이다.
결합부(1840)는 제 3 특징 맵(2202), 제 4 특징 맵(2204) 및 제 5 특징 맵(2206)을 결합하여 변형 차이 맵(2300)을 생성할 수 있다.
도 23은 제 3 특징 맵(2202), 제 4 특징 맵(2204) 및 제 5 특징 맵(2206)에 적용되는 가중치들이 모두 1인 것으로 가정하고 있다. 그러나 전술한 바와 같이, 제 3 특징 맵(2202), 제 4 특징 맵(2204) 및 제 5 특징 맵(2206)에 적용되는 가중치들은 다양하게 결정될 수 있다.
도 24는 변형 차이 맵들(2300a 내지 2300p)로부터 움직임 벡터들을 결정하는 방법을 설명하기 위한 도면이다.
도 19 내지 도 23을 통해 하나의 변형 차이 맵(2300)이 획득되는 과정을 설명하였지만, 제 2 프레임과의 컨볼루션 연산에 복수의 제 2 필터 커널들이 이용됨으로써, 복수의 제 2 필터 커널들의 개수와 동일한 개수의 변형 차이 맵들(2300a 내지 2300p)이 획득될 수 있다.
움직임 벡터 결정부(1850)는 변형 차이 맵들(2300a 내지 2300p)의 동일 위치의 샘플들의 크기를 비교하여 각 위치별 최소 샘플들을 식별한다. 다시 말하면, 움직임 벡터 결정부(1850)는 변형 차이 맵들(2300a 내지 2300p)의 동일 위치의 샘플들 중 가장 작은 크기를 갖는 위치별 샘플들을 식별할 수 있다.
예를 들어, 움직임 벡터 결정부(1850)는 변형 차이 맵들(2300a 내지 2300p)의 (0,0)의 위치로부터 (3, 3)의 위치까지 각 위치별로 가장 작은 크기의 샘플들을 식별할 수 있다. 도 24에 도시된 변형 차이 맵(2300a), 변형 차이 맵(2300b) 및 변형 차이 맵(2300p)를 이용하여 설명하면, 변형 차이 맵(2300a), 변형 차이 맵(2300b) 및 변형 차이 맵(2300p)의 좌상단 샘플들((0,0) 위치의 샘플들) 중 변형 차이 맵(2300a)의 좌상단 샘플의 5.5의 샘플 값이 가장 작으므로, 최소 크기의 좌상단 샘플을 변형 차이 맵(2300a) 내 좌상단 샘플로 식별할 수 있다. 또한, 변형 차이 맵(2300a), 변형 차이 맵(2300b) 및 변형 차이 맵(2300p)의 우하단 샘플들((3,3) 위치의 샘플들) 중 변형 차이 맵(2300a)의 우하단 샘플의 8.2의 샘플 값이 가장 작으므로, 최소 크기의 우하단 샘플을 변형 차이 맵(2300a) 내 우하단 샘플로 식별할 수 있다.
움직임 벡터 결정부(1850)는 위치별로 식별된 최소 샘플들이 속한 변형 차이 맵들을 확인하고, 확인된 변형 차이 맵들에 대응하는 제 2 특징 맵들을 생성하는데 이용된 제 2 필터 커널들을 위치별 움직임 벡터로 결정할 수 있다.
예를 들어, 움직임 벡터 결정부(1850)는 변형 차이 맵(2100)들의 좌상단 샘플들 중 가장 작은 크기의 좌상단 샘플이 특정의 변형 차이 맵에 포함되어 있다면, 해당 변형 차이 맵에 대응하는 제 2 특징 맵을 생성하는데 이용된 제 2 필터 커널을 제 1 프레임(1910)의 좌상단 샘플의 움직임 벡터로 결정할 수 있다.
변형 차이 맵(2300a), 변형 차이 맵(2300b) 및 변형 차이 맵(2300p)의 좌상단 샘플들((0,0) 위치의 샘플들) 중 변형 차이 맵(2300a)의 좌상단 샘플의 5.5의 샘플 값이 가장 작으므로, 제 1 프레임의 좌상단 샘플에 대응하는 움직임 벡터를 변형 차이 맵(2300a)에 대응하는 제 2 특징 맵을 생성하는데 이용된 제 2 필터 커널로 결정할 수 있다. 또한, 변형 차이 맵(2300a), 변형 차이 맵(2300b) 및 변형 차이 맵(2300p)의 우하단 샘플들((3,3) 위치의 샘플들) 중 변형 차이 맵(2300a)의 우하단 샘플의 8.2의 샘플 값이 가장 작으므로, 제 1 프레임의 우하단 샘플에 대응하는 움직임 벡터를 변형 차이 맵(2300a)에 대응하는 제 2 특징 맵을 생성하는데 이용된 제 2 필터 커널로 결정할 수 있다.
움직임 벡터 결정부(1850)는 도 24에 도시된 바와 같이, 제 1 프레임(1910)의 샘플들 각각에 대응하는 제 2 필터 커널들을 움직임 벡터로서 획득할 수 있다. 도 24에 도시된 각 움직임 벡터 맵(2400)은 각각의 위치에 대응하는 움직임 벡터로 결정된 제 2 필터 커널의 식별 값을 나타낸다.
한편, 일 실시예에서, 제 1 필터 커널에 기반한 제 1 프레임(1910)에 대한 컨볼루션 처리 및 복수의 제 2 필터 커널들에 기반한 제 2 프레임(2010)에 대한 컨볼루션 처리는 확장된 컨볼루션 처리(Dilated Convolution processing)를 포함할 수 있다. 이에 대해 도 25를 참조하여 설명한다.
도 25는 제 1 필터 커널(1915)과 제 2 필터 커널(2015)과의 컨볼루션 연산에 이용되는 프레임 내 샘플들을 나타내는 도면이다.
도 25는 간략한 도시를 위해 하나의 제 2 필터 커널(2015)만을 도시하고 있으나, 제 2 프레임과의 컨볼루션 연산에 복수의 제 2 필터 커널들이 이용된다는 점은 전술한 바와 동일할 수 있다.
컨볼루션 처리부(1810)는 제 1 필터 커널(1915) 및 제 2 필터 커널(2015)과의 컨볼루션 연산에 이용되는 프레임(2500)(제 1 프레임 또는 제 2 프레임) 내 샘플들을 서로 인접하게 결정할 수 있다. 샘플들이 서로 인접한다는 것은 서로 이웃하는 샘플들 사이의 거리가 1이라는 것을 의미한다. 프레임(2500) 내 서로 인접한 샘플들을 대상으로 하여 컨볼루션 연산을 수행하는 것을 일반 컨볼루션 처리라 할 수 있다.
일 실시예에서, 컨볼루션 처리부(1810)는 제 1 필터 커널(1915) 및 제 2 필터 커널(2015)과의 컨볼루션 연산에 이용되는 프레임(2500) 내 샘플들을 서로 이격되도록 결정할 수 있다. 샘플들이 서로 이격되어 있다는 것은, 서로 이웃한 샘플들 사이의 거리가 1보다 크다는 것을 의미할 수 있다. 어느 하나의 샘플과 이에 이웃하는 다른 하나의 샘플 사이의 거리가 1보다 크다는 것은, 어느 하나의 샘플과 다른 하나의 샘플 사이에 하나 이상의 다른 샘플이 위치한다는 것을 의미할 수 있다. 프레임(2500) 내 서로 이격된 샘플들을 대상으로 하여 컨볼루션 연산을 수행하는 것을 확장된 컨볼루션 처리라 할 수 있다.
도 25에서 프레임(2500) 내 음영으로 표시된 샘플들이 제 1 필터 커널(1915) 및 제 2 필터 커널(2015)과의 컨볼루션 연산에 이용되는 샘플들을 나타내는데, 해당 샘플들은 도 25에 상부에 도시되어 있듯이 서로 인접하여 위치할 수 있고, 도 25의 하부에 도시되어 있듯이 서로 이격되어 위치할 수도 있다.
컨볼루션 처리부(1810)는 제 1 프레임 및 제 2 프레임에 대해 확장된 컨볼루션 처리를 수행함으로써, 현재 샘플의 움직임 벡터를 결정할 때, 제 2 프레임 내 콜로케이티드 샘플로부터 보다 멀리 위치한 샘플들을 이용할 수 있다.
일 실시예에서, 컨볼루션 처리부(1810)는 제 1 프레임 및 제 2 프레임의 크기가 미리 결정된 크기 이상이면, 제 1 프레임 및 제 2 프레임에 대해 확장된 컨볼루션 처리를 수행하고, 제 1 프레임 및 제 2 프레임의 크기가 미리 결정된 크기 미만이면, 제 1 프레임 및 제 2 프레임에 대해 일반 컨볼루션 처리를 수행할 수 있다.
이하에서는, 도 26을 참조하여 풀링 처리를 통해 생성된 특징 맵들을 결합하기 위한 가중치들을 산출하는 신경망(2600)에 대해 설명한다.
도 26은 풀링 처리를 통해 획득된 특징 맵들을 결합하기 위한 가중치들을 출력하는 신경망(2600)의 훈련 방법을 설명하기 위한 도면이다.
신경망(2600)은 하나 이상의 컨볼루션 레이어를 포함할 수 있다. 신경망(2600)은 제 1 프레임과 제 2 프레임을 입력받고, 미리 설정된 가중 값으로 제 1 프레임과 제 2 프레임을 처리하여 복수의 예비 가중치를 출력할 수 있다.
도 26은 신경망(2600)으로부터 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치가 출력되는 것으로 도시하고 있는데, 이는 풀링 처리에 서로 다른 크기의 3개의 필터 커널이 이용되는 경우를 위한 것이다. 즉, 풀링 처리를 통해 복수의 제 3 특징 맵, 복수의 제 4 특징 맵 및 복수의 제 5 특징 맵이 생성될 때, 신경망(2600)은 복수의 제 3 특징 맵에 적용될 제 1 예비 가중치, 복수의 제 4 특징 맵에 적용될 제 2 예비 가중치 및 복수의 제 5 특징 맵에 적용될 제 3 예비 가중치를 출력할 수 있다. 만약, 풀링 처리를 통해 복수의 제 3 특징 맵과 복수의 제 4 특징 맵이 생성된다면, 신경망(2600)은 제 1 예비 가중치와 제 2 예비 가중치를 출력하도록 구성될 수 있다.
신경망(2600)으로부터 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치가 출력되면, 풀링 처리를 통해 생성된 복수의 제 3 특징 맵, 복수의 제 4 특징 맵 및 복수의 제 5 특징 맵이 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치에 따라 움직임 예측 과정(260)에서 가중 결합될 수 있다. 그리고, 가중 결합된 결과인 변형된 차이 맵들로부터 제 1 프레임 내 샘플들에 대응하는 움직임 벡터들이 획득될 수 있다.
신경망(2600)은 각각의 제 3 특징 맵 내 샘플들에 적용될 제 1 예비 가중치들을 출력할 수 있다. 마찬가지로, 신경망(2600)은 각각의 제 4 특징 맵 내 샘플들에 적용될 제 2 예비 가중치들을 출력하고, 각각의 제 5 특징 맵 내 샘플들에 적용될 제 3 예비 가중치들을 출력할 수 있다.
제 1 프레임 내 샘플들에 대응하는 움직임 벡터들에 따라 제 2 프레임에 대해 움직임 보상 처리(2604)가 적용될 수 있다. 움직임 보상 처리(2604)를 통해 제 2 프레임이 제 1 프레임과 유사하게 변형될 수 있다.
움직임 보상된 제 2 프레임과 제 1 프레임 사이의 차이에 대응하는 제 1 손실 정보가 신경망(2600)의 훈련에 이용될 수 있다. 제 1 손실 정보는 제 1 프레임과 움직임 보상된 제 2 프레임 사이의 차이에 대응하는 L1-norm 값, L2-norm 값, SSIM(Structural Similarity) 값, PSNR-HVS(Peak Signal-To-Noise Ratio-Human Vision System) 값, MS-SSIM(Multiscale SSIM) 값, VIF(Variance Inflation Factor) 값, VMAF(Video Multimethod Assessment Fusion) 값 또는 1-NCC(Normalized Cross Correlation) 값 중 적어도 하나를 포함할 수 있다.
또한, 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치로부터 제 2 손실 정보 및/또는 제 3 손실 정보가 산출될 수 있다.
제 2 손실 정보는 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치의 합이 미리 결정된 임계 값과 얼마나 차이가 나는지를 나타낼 수 있다. 제 2 손실 정보는 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치의 합을 미리 결정된 임계 값과 일치시키기 위해 이용될 수 있다.
제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치는 각각이 어떠한 값을 가지는지 보다 이들 사이의 크기 비율이 중요하다. 따라서, 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치를 합한 값이 미리 결정된 임계 값과 일치되도록 제한함으로써, 제 1 예비 가중치, 제 2 예비 가중치 또는 제 3 예비 가중치 중 적어도 하나가 매우 커지는 것을 방지할 수 있다.
제 3 손실 정보는 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치가 얼마나 작은 음수 값을 가지는지를 나타낼 수 있다. 제 3 손실 정보는 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치가 양의 값을 가지도록 제한한다. 전술한 바와 같이, 차이 맵은 제 1 특징 맵의 샘플들과 제 2 특징 맵의 샘플들이 얼마나 차이가 나는지를 나타낼 수 있다. 차이 맵에 대한 풀링 처리를 통해 생성되는 제 3 특징 맵, 제 4 특징 맵 및 제 5 특징 맵 중 어느 하나에 음의 가중치가 적용되는 경우, 차이 맵의 특성이 변형 차이 맵에 제대로 반영되지 않을 수 있으므로, 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치를 양의 값으로 제한하는 것이다.
일 실시예에서, 제 2 손실 정보 및 제 3 손실 정보는 각각 수학식 2 및 수학식 3에 따라 산출될 수 있다.
[수학식 2]
Figure PCTKR2022012599-appb-img-000002
[수학식 3]
Figure PCTKR2022012599-appb-img-000003
수학식 2에서, α, β 및 γ는 각각 제 1 예비 가중치, 제 2 예비 가중치, 제 3 예비 가중치를 나타내고, i는 샘플의 인덱스이다. k는 미리 결정된 임계 값을 나타낸다. 수학식 2를 참조하면, 제 1 예비 가중치, 제 2 예비 가중치, 제 3 예비 가중치의 합과 k 사이의 차이가 커질수록 제 2 손실 정보가 커진다는 것을 알 수 있다.
수학식 3에서, r()는 relu 함수를 나타낸다. r(-α)는 α가 음수이면, -α를 출력하고, α가 양수이면 0을 출력한다. 수학식 3을 통해, α, β 및 γ가 모두 양수이면, 제 3 손실 정보는 0으로 산출되고, α, β 및 γ가 음수이면서 그 값이 작을수록 제 3 손실 정보는 커진다는 것을 알 수 있다.
신경망(2600)은 제 1 손실 정보, 제 2 손실 정보 또는 제 3 손실 정보 중 적어도 하나로부터 산출되는 최종 손실 정보가 감소 또는 최소화되도록 신경망(2600) 내 가중 값들을 갱신할 수 있다.
신경망(2600)은 최소의 최종 손실 정보를 야기하는 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치를 제 3 특징 맵들, 제 4 특징 맵들 및 제 5 특징 맵들에 적용될 제 1 가중치, 제 2 가중치 및 제 3 가중치로 결정할 수 있다.
일 실시예에서, 신경망(2600)은 제 1 훈련 프레임과 제 2 훈련 프레임에 따라 미리 훈련될 수도 있다. 구체적으로, 신경망(2600)은 미리 설정된 가중 값으로 제 1 훈련 프레임과 제 2 훈련 프레임을 처리하여 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치를 출력할 수 있다. 그리고, 훈련 장치(영상 처리 장치(1800) 또는 외부 서버 등)는 움직임 예측 과정(2602)에서 출력된 움직임 벡터들에 기반한 제 2 훈련 프레임에 대한 움직임 보상 과정(2604)을 통해 움직임 보상된 제 2 훈련 프레임을 획득할 수 있다. 신경망(2600)은 제 1 훈련 프레임과 움직임 보상된 제 2 훈련 프레임으로부터 산출되는 제 1 손실 정보, 및 제 1 예비 가중치, 제 2 예비 가중치 및 제 3 예비 가중치로부터 산출되는 제 2 손실 정보 및/또는 제 3 손실 정보에 따라 내부 가중 값을 갱신할 수 있다. 신경망(2600)은 최종 손실 정보가 감소 또는 최소화되도록 가중 값을 갱신할 수 있다. 이후, 제 1 프레임과 제 2 프레임이 신경망(2600)으로 입력되면, 신경망(2600)은 훈련을 통해 최적화된 가중 값들에 따라 제 1 프레임과 제 2 프레임을 처리하고, 제 1 가중치, 제 2 가중치 및 제 3 가중치를 출력할 수 있다.
도 27은 다른 실시예에 따른 영상 처리 방법을 설명하기 위한 순서도이다.
S2710 단계에서, 영상 처리 장치(1800)는 제 1 프레임을 제 1 필터 커널로 컨볼루션 처리하여 제 1 필터 커널에 대응하는 제 1 특징 맵을 획득한다. 일 실시예에서, 영상 처리 장치(1800)는 S2710 단계의 수행을 생략할 수도 있다.
S2720 단계에서, 영상 처리 장치(1800)는 제 2 프레임을 복수의 제 2 필터 커널로 컨볼루션 처리하여 복수의 제 2 필터 커널들에 대응하는 복수의 제 2 특징 맵들을 획득한다.
S2730 단계에서, 영상 처리 장치(1800)는 제 1 특징 맵과 복수의 제 2 특징 맵들 사이의 차이 맵들을 획득한다. 차이 맵들의 개수는 제 2 특징 맵들의 개수와 동일할 수 있다.
S2740 단계에서, 영상 처리 장치(1800)는 차이 맵들을 서로 다른 크기, 예를 들어, 제 1 크기의 필터 커널 및 제 2 크기의 필터 커널에 따라 풀링 처리하여 복수의 제 3 특징 맵들과 복수의 제 4 특징 맵들을 획득한다.
복수의 제 3 특징 맵들의 개수 및 복수의 제 4 특징 맵들의 개수는 차이 맵들의 개수와 동일할 수 있다.
S2750 단계에서, 영상 처리 장치(1800)는 복수의 제 3 특징 맵들과 복수의 제 4 특징 맵들을 가중 합하여 복수의 변형 차이 맵들을 획득한다. 복수의 변형 차이 맵들의 개수는 복수의 차이 맵들의 개수와 동일할 수 있다.
S2760 단계에서, 영상 처리 장치(1800)는 변형 차이 맵들의 동일 위치의 샘플들의 크기를 비교하여 각 위치별 최소 값을 갖는 샘플들을 식별한다.
S2770 단계에서, 영상 처리 장치(1800)는 각 위치별 최소 값을 갖는 샘플들로부터 제 1 프레임의 샘플들에 대응하는 움직임 벡터들을 결정한다. 일 실시예에서, 영상 처리 장치(1800)는 각 위치별 최소 값을 갖는 샘플들이 속한 변형 차이 맵을 식별하고, 식별된 변형 차이 맵에 대응하는 제 2 특징 맵을 생성하는데 이용된 제 2 필터 커널을 각 위치별 움직임 벡터로 결정할 수 있다.
한편, 상술한 본 개시의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 작성된 프로그램은 기기로 읽을 수 있는 저장매체에 저장될 수 있다.
기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적 저장매체'는 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다. 예로, '비일시적 저장매체'는 데이터가 임시적으로 저장되는 버퍼를 포함할 수 있다.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품(예: 다운로더블 앱(downloadable app))의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
이상, 본 개시의 기술적 사상을 바람직한 실시예를 들어 상세하게 설명하였으나, 본 개시의 기술적 사상은 상기 실시예들에 한정되지 않고, 본 개시의 기술적 사상의 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러 가지 변형 및 변경이 가능하다.

Claims (15)

  1. 하나 이상의 인스트럭션을 저장하는 메모리; 및
    상기 메모리에 저장된 상기 하나 이상의 인스트럭션을 실행하는 프로세서를 포함하고,
    상기 프로세서는,
    제 1 프레임 또는 상기 제 1 프레임에 대응하는 제 1 특징 맵과, 제 2 프레임에 대응하는 복수의 제 2 특징 맵들 사이의 복수의 차이 맵(difference map)들을 획득하고,
    복수의 차이 맵들을 제 1 크기 및 제 2 크기에 따라 풀링 처리하여 복수의 제 3 특징 맵들과 복수의 제 4 특징 맵들을 획득하고,
    상기 복수의 제 3 특징 맵들과 상기 복수의 제 4 특징 맵들을 가중 합(weighted summing)하여 복수의 변형 차이 맵(modified difference map)들을 획득하고,
    상기 제 1 프레임의 현재 샘플에 대응하는 상기 복수의 변형 차이 맵들의 콜로케이티드 샘플들의 샘플 값들의 크기를 고려하여 어느 하나의 콜로케이티드 샘플을 식별하고,
    상기 식별된 콜로케이티드 샘플을 포함하는 변형 차이 맵에 대응하는 제 2 특징 맵을 획득하는데 이용된 필터 커널을 상기 현재 샘플의 움직임 벡터로 결정하는, 영상 처리 장치.
  2. 제1항에 있어서,
    상기 제 1 크기에 기반한 풀링 처리에서 이용되는 제 1 스트라이드와 상기 제 2 크기에 기반한 풀링 처리에서 이용되는 제 2 스트라이드는 서로 다른, 영상 처리 장치.
  3. 제2항에 있어서,
    상기 제 1 크기 및 상기 제 1 스트라이드는, 상기 제 2 크기 및 상기 제 2 스트라이드보다 큰, 영상 처리 장치.
  4. 제3항에 있어서,
    상기 제 1 크기 및 상기 제 1 스트라이드는 k(k는 자연수)이고, 상기 제 2 크기 및 상기 제 2 스트라이드는 k/2인, 영상 처리 장치.
  5. 제1항에 있어서,
    상기 프로세서는,
    상기 복수의 제 3 특징 맵들에 적용되는 제 1 가중치와 상기 복수의 제 4 특징 맵들에 적용되는 제 2 가중치를 신경망으로부터 획득하는, 영상 처리 장치.
  6. 제1항에 있어서,
    상기 프로세서는,
    상기 신경망으로부터 출력되는 제 1 예비 가중치와 제 2 예비 가중치를 기초로 상기 복수의 제 3 특징 맵들과 상기 복수의 제 4 특징 맵들을 가중 합하여 복수의 변형 차이 맵들을 획득하고,
    상기 복수의 변형 차이 맵들로부터 상기 제 1 프레임의 샘플들에 대응하는 음직임 벡터들을 결정하고,
    상기 결정된 움직임 벡터들에 기초하여 상기 제 2 프레임을 움직임 보상하되,
    상기 신경망은,
    상기 움직임 보상된 상기 제 2 프레임과 상기 제 1 프레임 사이의 차이에 대응하는 제 1 손실 정보에 기초하여 훈련되는, 영상 처리 장치.
  7. 제6항에 있어서,
    상기 신경망은,
    상기 제 1 예비 가중치와 상기 제 2 예비 가중치의 합이 미리 결정된 임계 값과 얼마나 차이가 나는지를 나타내는 제 2 손실 정보에 더 기초하여 훈련되는, 영상 처리 장치.
  8. 제6항에 있어서,
    상기 신경망은,
    상기 제 1 예비 가중치와 상기 제 2 예비 가중치가 얼마나 작은 음수 값을 가지는지를 나타내는 제 3 손실 정보에 더 기초하여 훈련되는, 영상 처리 장치.
  9. 제1항에 있어서,
    상기 풀링 처리는,
    에버리지 풀링 처리(average pooling process) 또는 메디안 풀링 처리(median pooling process)를 포함하는, 영상 처리 장치.
  10. 제1항에 있어서,
    상기 제 1 특징 맵은 상기 제 1 프레임에 대한 제 1 필터 커널 기반의 컨볼루션 처리를 통해 획득되고,
    상기 복수의 제 2 특징 맵들은 상기 제 2 프레임에 대한 복수의 제 2 필터 커널 기반의 컨볼루션 처리를 통해 획득되는, 영상 처리 장치.
  11. 제10항에 있어서,
    상기 제 1 필터 커널 및 상기 복수의 제 2 필터 커널과 컨볼루션 연산되는 상기 제 1 프레임 및 상기 제 2 프레임의 샘플들 사이의 거리는 1보다 큰, 영상 처리 장치.
  12. 제10항에 있어서,
    상기 제 1 필터 커널은,
    상기 제 1 프레임의 현재 샘플에 대응하는 샘플이 기 설정된 제 1 값을 갖고, 다른 샘플들이 0의 값을 갖는, 영상 처리 장치.
  13. 제12항에 있어서,
    상기 복수의 제 2 필터 커널들은,
    어느 하나의 샘플이 기 설정된 제 2 값을 갖고, 다른 샘플들이 0의 값을 갖되,
    상기 제 2 값을 갖는 상기 어느 하나의 샘플의 위치는 상기 복수의 제 2 필터 커널마다 다른, 영상 처리 장치.
  14. 제13항에 있어서,
    상기 기 설정된 제 1 값과 상기 기 설정된 제 2 값의 부호는 서로 반대인, 영상 처리 장치.
  15. 영상 처리 장치에 의한 영상 처리 방법에 있어서,
    제 1 프레임 또는 상기 제 1 프레임에 대응하는 제 1 특징 맵과, 제 2 프레임에 대응하는 복수의 제 2 특징 맵들 사이의 복수의 차이 맵들을 획득하는 단계;
    복수의 차이 맵들을 제 1 크기 및 제 2 크기에 따라 풀링 처리하여 복수의 제 3 특징 맵들과 복수의 제 4 특징 맵들을 획득하는 단계;
    상기 복수의 제 3 특징 맵들과 상기 복수의 제 4 특징 맵들을 가중 합하여 복수의 변형 차이 맵들을 획득하는 단계;
    상기 제 1 프레임의 현재 샘플에 대응하는 상기 복수의 변형 차이 맵들의 콜로케이티드 샘플들의 샘플 값들의 크기를 고려하여 어느 하나의 콜로케이티드 샘플을 식별하는 단계; 및
    상기 식별된 콜로케이티드 샘플을 포함하는 변형 차이 맵에 대응하는 제 2 특징 맵을 획득하는데 이용된 필터 커널을 상기 현재 샘플의 움직임 벡터로 결정하는 단계를 포함하는, 영상 처리 방법.
PCT/KR2022/012599 2021-08-30 2022-08-23 프레임들 사이의 움직임 벡터를 결정하는 영상 처리 장치 및 이에 의한 방법 WO2023033441A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210115025A KR20230032325A (ko) 2021-08-30 2021-08-30 프레임들 사이의 움직임 벡터를 결정하는 영상 처리 장치 및 이에 의한 방법
KR10-2021-0115025 2021-08-30

Publications (1)

Publication Number Publication Date
WO2023033441A1 true WO2023033441A1 (ko) 2023-03-09

Family

ID=85412850

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/012599 WO2023033441A1 (ko) 2021-08-30 2022-08-23 프레임들 사이의 움직임 벡터를 결정하는 영상 처리 장치 및 이에 의한 방법

Country Status (2)

Country Link
KR (1) KR20230032325A (ko)
WO (1) WO2023033441A1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200007250A (ko) * 2018-07-12 2020-01-22 에스케이텔레콤 주식회사 Cnn 기반의 영상 부호화 또는 복호화 장치 및 방법
KR20210011322A (ko) * 2019-07-22 2021-02-01 삼성전자주식회사 시간적 주의에 기초한 비디오 깊이 추정
KR20210036715A (ko) * 2019-09-26 2021-04-05 삼성전자주식회사 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크의 풀링을 처리하는 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200007250A (ko) * 2018-07-12 2020-01-22 에스케이텔레콤 주식회사 Cnn 기반의 영상 부호화 또는 복호화 장치 및 방법
KR20210011322A (ko) * 2019-07-22 2021-02-01 삼성전자주식회사 시간적 주의에 기초한 비디오 깊이 추정
KR20210036715A (ko) * 2019-09-26 2021-04-05 삼성전자주식회사 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크의 풀링을 처리하는 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JUNHEUM PARK; KEUNSOO KO; CHUL LEE; CHANG-SU KIM: "BMBC:Bilateral Motion Estimation with Bilateral Cost Volume for Video Interpolation", ARXIV.ORG, 17 July 2020 (2020-07-17), pages 1 - 16, XP081726878 *
ZACHARY TEED; JIA DENG: "RAFT: Recurrent All-Pairs Field Transforms for Optical Flow", ARXIV.ORG, 26 March 2020 (2020-03-26), pages 1 - 19, XP081628903 *

Also Published As

Publication number Publication date
KR20230032325A (ko) 2023-03-07

Similar Documents

Publication Publication Date Title
WO2020246756A1 (en) Apparatus and method for performing artificial intelligence encoding and artificial intelligence decoding on image
WO2019107916A1 (ko) 영상 코딩 시스템에서 인터 예측에 따른 영상 디코딩 방법 및 장치
WO2017171107A1 (ko) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
WO2020080765A1 (en) Apparatuses and methods for performing artificial intelligence encoding and artificial intelligence decoding on image
WO2011068360A2 (ko) 고해상도 영상의 부호화/복호화 방법 및 이를 수행하는 장치
EP3868096A1 (en) Artificial intelligence encoding and artificial intelligence decoding methods and apparatuses using deep neural network
WO2018097607A1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2017026681A1 (ko) 비디오 코딩 시스템에서 인터 예측 방법 및 장치
WO2019009491A1 (ko) 영상을 부호화 또는 복호화하는 방법 및 장치
WO2017086748A1 (ko) 기하 변환 영상을 이용하는 영상의 부호화/복호화 방법 및 장치
WO2018047995A1 (ko) 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
WO2020055161A1 (ko) 영상 코딩 시스템에서 서브 블록 단위의 움직임 예측에 기반한 영상 디코딩 방법 및 장치
WO2021054676A1 (ko) Prof를 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
WO2016195455A1 (ko) 그래프 기반 변환을 이용하여 비디오 신호를 처리하는 방법 및 장치
WO2021251611A1 (en) Apparatus and method for performing artificial intelligence encoding and decoding on image by using low-complexity neural network
WO2019194425A1 (ko) 영상 부호화 또는 복호화에 인공 신경망을 적용하는 장치 및 방법
WO2020032609A1 (ko) 영상 코딩 시스템에서 어파인 머지 후보 리스트를 사용하는 어파인 움직임 예측에 기반한 영상 디코딩 방법 및 장치
WO2020080782A1 (en) Artificial intelligence (ai) encoding device and operating method thereof and ai decoding device and operating method thereof
WO2021091178A1 (en) Artificial intelligence (ai) encoding apparatus and operating method thereof and ai decoding apparatus and operating method thereof
WO2019009452A1 (ko) 영상을 부호화 또는 복호화하는 방법 및 장치
WO2018124329A1 (ko) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
EP3868097A1 (en) Artificial intelligence (ai) encoding device and operating method thereof and ai decoding device and operating method thereof
WO2020050695A1 (ko) 영상 코딩 시스템에서 머지 후보 리스트를 사용하는 움직임 예측에 기반한 영상 디코딩 방법 및 장치
WO2018169099A1 (ko) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
WO2021054697A1 (ko) 영상의 ai 부호화 방법 및 장치, 영상의 ai 복호화 방법 및 장치

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: 22864944

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022864944

Country of ref document: EP

Effective date: 20240305

NENP Non-entry into the national phase

Ref country code: DE