Video processing based on machine learning

By using a machine learning-based video processing system, which optimizes video compression and decompression using downsamplers and upsamplers, the problem of excessive bandwidth and processor consumption in video processing is solved, achieving efficient video quality improvement and environmentally friendly video transmission.

CN121970344APending Publication Date: 2026-05-01QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
QUALCOMM INC
Filing Date
2024-09-27
Publication Date
2026-05-01

AI Technical Summary

Technical Problem

Existing technologies in video processing suffer from excessive bandwidth and processor consumption, leading to buffering and lag, which negatively impacts user experience and increases the burden on network infrastructure and the environment.

Method used

A machine learning-based video processing system is adopted, including a downsampler and an upsampler. The machine learning model is used to downsample and upsample video frames, and the video compression and decompression process is optimized by estimating the point spread function and the super-resolution kernel.

Benefits of technology

It effectively reduces bandwidth and processor consumption, improves video quality, lowers operating costs, reduces environmental impact, and ensures a smooth user experience and device compatibility.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121970344A_ABST
    Figure CN121970344A_ABST
Patent Text Reader

Abstract

Systems, apparatus, processes, and computer readable media for magnifying video are disclosed. An apparatus configured to process one or more frames (e.g., one or more video frames) includes one or more processors coupled to one or more memories. The one or more processors are configured to: obtain a first frame from the image sensor; downsampling the first frame into a first downsampled frame based on a transfer function associated with the image sensor; and encoding the first down-sampled frame.
Need to check novelty before this filing date? Find Prior Art

Description

Video processing based on machine learning Technical Field

[0001] This disclosure relates in its entirety to mobile devices and other devices that include multimedia capabilities. For example, aspects of this disclosure relate to systems and techniques for providing video processing based on machine learning (e.g., deep neural networks), such as downsampling for compression and upsampling for decompression. Background Technology

[0002] Many devices and systems allow a scene to be captured by generating images (or frames) and / or video data (including multiple frames). For example, a camera or a device that includes a camera can capture a sequence of frames of a scene (e.g., video of the scene). In some cases, the frame sequence can be processed to perform one or more functions, can be output for display, can be output for processing and / or consumption by other devices, and for other purposes.

[0003] Artificial neural networks can be implemented using computer techniques inspired by the logical reasoning performed by the biological neural networks that make up the animal brain. Deep neural networks (such as convolutional neural networks) are widely used in many applications, such as object detection, object classification, object tracking, and big data analysis. For example, convolutional neural networks can extract high-level features (such as facial shapes) from input images and use these high-level features to output, for example, the probability that the input image contains a specific object. Summary of the Invention

[0004] In some examples, systems and technologies for multimedia functions are described. For instance, these systems and technologies can be used in video processing systems based on real-time machine learning.

[0005] Systems, apparatuses, methods, computer-readable media, and circuits for processing one or more frames (e.g., one or more video frames) are disclosed. According to at least one example, a method includes: acquiring a first frame from an image sensor; downsampling the first frame into a first downsampled frame based on a transfer function associated with the image sensor; and encoding the first downsampled frame.

[0006] In another example, an apparatus configured to process one or more frames is provided, the apparatus including one or more memories and one or more processors coupled to the one or more memories and configured to: acquire a first frame from an image sensor; downsample the first frame into a first downsampled frame based on a transfer function associated with the image sensor; and encode the first downsampled frame.

[0007] In another example, a non-transitory computer-readable storage medium includes instructions stored thereon that, when executed by one or more processors, cause the one or more processors to: acquire a first frame from an image sensor; downsample the first frame into a first downsampled frame based on a transfer function associated with the image sensor; and encode the first downsampled frame.

[0008] In another example, an apparatus for encoding video includes: components for acquiring a first frame from an image sensor; components for downsampling the first frame into a first downsampled frame based on a transfer function associated with the image sensor; and components for encoding the first downsampled frame.

[0009] In another example, one approach includes: receiving a first frame; determining the type of the first frame based on a previous frame, wherein the type of the first frame includes an independent frame or a dependent frame; and generating a first upsampled frame based on the type of the first frame.

[0010] In another example, an apparatus for processing one or more frames is provided, the apparatus including one or more memories and one or more processors coupled to the one or more memories and configured to: receive a first frame; determine the type of the first frame based on a previous frame, wherein the type of the first frame includes an independent frame or a dependent frame; and generate a first upsampled frame based on the type of the first frame.

[0011] In another example, a non-transitory computer-readable storage medium includes instructions stored thereon that, when executed by one or more processors, cause the one or more processors to: receive a first frame; determine the type of the first frame based on a previous frame, wherein the type of the first frame includes an independent frame or a dependent frame; and generate a first upsampled frame based on the type of the first frame.

[0012] In another example, an apparatus for encoding video includes: a component for determining the type of a first frame based on a previous frame, wherein the type of the first frame includes an independent frame or a dependent frame; and a component for generating a first upsampled frame based on the type of the first frame.

[0013] In some aspects, one or more of the devices or apparatuses described herein are, are part of, and / or include: wearable devices, extended reality (XR) devices (e.g., virtual reality (VR) devices, augmented reality (AR) devices, or mixed reality (MR) devices, such as XR head-mounted devices (HMD) or XR glasses), wireless communication devices, such as mobile devices (e.g., mobile phones and / or mobile cell phones and / or so-called "smartphones" or other mobile devices), vehicles or computing devices or systems of vehicles, cameras, personal computers, laptop computers, server computers, other devices, or combinations thereof. In some aspects, the apparatus includes one or more cameras for capturing one or more images. In some aspects, the apparatus also includes a display for displaying one or more images, notifications, and / or other displayable data. In some aspects, the apparatus described above may include one or more sensors (e.g., one or more inertial measurement units (IMUs), such as one or more gyroscopes, one or more gyroscope testers, or gyroscopes, one or more accelerometers, any combination thereof, and / or other sensors).

[0014] This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used in isolation to define the scope of the claimed subject matter. This subject matter should be understood with reference to the appropriate portions of the entire specification, any or all drawings, and each claim.

[0015] Based on the accompanying drawings and detailed description, other objects and advantages associated with the aspects disclosed herein will be apparent to those skilled in the art. Attached Figure Description

[0016] Examples of various specific implementations are described in detail below with reference to the following figures: Figure 1 illustrates an example specific implementation of a System-on-Chip (SoC) according to some examples; Figure 2 is a block diagram illustrating an example architecture of an image capture and processing system according to some examples; Figure 3A illustrates an example of a fully connected neural network according to some examples; Figure 3B illustrates an example of a locally connected neural network according to some examples; Figure 3C illustrates an example of a convolutional neural network according to some examples; Figure 4 is a block diagram illustrating an example of a real-time machine learning-based video processing system using the Predictive Point Spread Function (PSF) of frames according to some aspects of the present disclosure; Figure 5 is an illustration of a frame discriminator in a real-time machine learning-based video processing system according to some aspects of the present disclosure, the frame discriminator being configured to identify independent frames and dependent frames; Figure 6 is a diagram illustrating an example of a downsampler of a deep video compressor architecture according to some aspects of the present disclosure; Figure 7A is a diagram illustrating a generator of a downsampler for fine-tuning the downsampler (via online training) according to some aspects of the present disclosure.

[0017] Figure 7B is a diagram illustrating the PSF of a compression technique according to some aspects of the present disclosure; Figure 8 is a diagram illustrating a discriminator of a downsampler for fine-tuning a downsampler (via online training) according to some aspects of the present disclosure; Figure 9 is a diagram illustrating an SR kernel estimator for predicting a super-resolution (SR) kernel for deep compression according to some aspects of the present disclosure; Figure 10 is a conceptual diagram of an upsampler of a deep decoder network according to some aspects of the present disclosure; Figure 11 illustrates upsampling results of the original image and the original image magnified using different techniques; Figure 12 is a conceptual diagram illustrating a temporal filter for correcting temporal alignment problems according to some aspects of the present disclosure; Figure 13 is an illustration of a... Figure 14 is a diagram illustrating an example of an independent frame enhancement architecture; Figure 15 is a diagram illustrating an example of a machine learning architecture for dependent frame image enhancement according to some examples; Figure 16 is a flowchart illustrating an example process for decoding an enhanced image based on one or more images according to aspects of this disclosure; Figure 17 is a flowchart illustrating an example process for decoding an enhanced image based on one or more images according to aspects of this disclosure; Figure 18 is an illustrative example of a deep learning neural network that can be used to implement alignment prediction based on machine learning according to aspects of this disclosure.

[0018] Figure 19 is an exemplary example of a CNN according to various aspects of this disclosure.

[0019] Figure 20 is a diagram illustrating an example of a system used to implement some of the aspects described herein. Detailed Implementation

[0020] Certain aspects and examples of this disclosure are provided below. As will be apparent to those skilled in the art, some of these aspects and examples may be applied independently, and some may be applied in combination. Specific details are set forth in the following description for purposes of explanation to provide a thorough understanding of the aspects and examples of this disclosure. However, it will be apparent that various aspects and examples may be practiced without these specific details. The accompanying drawings and descriptions are not intended to be limiting.

[0021] The following description provides only exemplary aspects and examples and is not intended to limit the scope, applicability, or configuration of this disclosure. Rather, the following description of the exemplary aspects and examples will provide those skilled in the art with enabling descriptions for implementing the aspects and examples of this disclosure. It should be understood that various changes may be made to the function and arrangement of the elements without departing from the scope of this application as set forth in the appended claims.

[0022] As previously noted, various devices and systems allow a scene to be captured by generating images (or frames) and / or (including multiple frames) of video data. A camera is a device that uses an image sensor to receive light from a scene and capture images (such as still images or video frames). The terms “image,” “image frame,” and “frame” are used interchangeably herein. A camera may include a processor (such as an image signal processor (ISP)) that receives and processes one or more images. For example, raw image frames captured by a camera sensor may be processed by an ISP to generate a final image. The processing performed by the ISP may be performed by multiple filters or processing blocks applied to the captured image, such as denoising or noise filtering, edge enhancement, color balancing, contrast adjustment, intensity adjustment (such as darkening or brightening), tone adjustment, etc. Image processing blocks or modules may include lens / sensor noise correction, Bayer filters, demosaicing, color conversion, correction or enhancement / suppression of image attributes, noise reduction filters, sharpening filters, etc.

[0023] Machine learning systems (e.g., deep neural network systems or models) can be used to perform a variety of tasks, such as, but not limited to, video encoding (or compression) and / or video decoding (or decompression), detection and / or recognition (e.g., scene or object detection and / or recognition, face detection and / or recognition, etc.), depth estimation, pose estimation, image reconstruction, classification, 3D modeling, dense regression tasks, data compression and / or decompression, and image processing tasks. For example, one or more machine learning networks can be used to implement various ISP operations (e.g., ISP processing blocks, including one or more processing blocks described above). Image processing machine networks can be included in an ISP and / or can be separated from the ISP. Furthermore, machine learning models can be general and can achieve high-quality results across a variety of tasks. In some cases, image processing machine learning networks can be trained and / or implemented based on usage scenarios associated with the input and / or output image data of the image processing machine learning network.

[0024] Image data (e.g., images, image frames, etc., acquired using a camera) can be used for a variety of purposes. In some examples, image data can be provided as input to decision-making algorithms associated with surveillance, detection, and / or manipulation. For example, camera feeds (e.g., image data) can be provided as input to autonomous or semi-autonomous vehicle control systems. In some cases, image data can be provided in conjunction with various other sensor inputs associated with or corresponding to the image data (e.g., sensor inputs captured at the same or similar time in the same or similar location or environment as the image). For example, image data can be used to perform tasks such as road boundary detection, sign detection, path detection, autonomous or semi-autonomous manipulation, and surveillance.

[0025] Video streaming is a common way for consumers to experience media content, such as using smartphones, gaming apps, entertainment like live games, and work like video conferencing. Streaming is also important in autonomous vehicles, security cameras, smart connected cities, connected devices, and even social media. Delivering video streaming efficiently without sacrificing quality and with low processor utilization and server storage costs is crucial. A key challenge in video streaming is reducing bandwidth and processor consumption. This reduction in bandwidth and processor consumption is essential for several reasons, such as the need for a seamless and enjoyable user experience. High bandwidth and processor consumption can lead to buffering and lag, resulting in viewer frustration. In an era where users expect smooth, uninterrupted streaming, optimizing bandwidth resources is indispensable.

[0026] Reducing bandwidth and processor consumption is crucial for sustainability and resource management. Video streaming platforms handle a significant portion of global internet traffic, and excessive use of bandwidth and processing power can strain network infrastructure and increase carbon emissions. By implementing efficient compression algorithms and optimizing video delivery, streaming services can reduce their environmental impact and contribute to a greener digital ecosystem. Furthermore, cost efficiency is a critical factor for the success of video streaming applications. Data center and network infrastructure maintenance represents a substantial expense for streaming providers. By minimizing bandwidth and processor usage, video streaming platforms can reduce their operating costs and offer competitive pricing to their subscribers.

[0027] Video encoders and decoders (collectively referred to as codecs) are fundamental to the functionality of countless applications, devices, and systems. Computing devices such as mobile phones, laptops, and electric vehicles may include hardware video codecs with long support lifecycles to ensure widespread adoption and compatibility with other devices. Support lifecycles are crucial for maintaining compatibility and reliability across these diverse ecosystems. For example, the video industry is constantly evolving as new compression standards and technologies emerge over time. Ensuring a long support lifecycle for video decoders allows for the seamless adoption of new video formats without disrupting existing infrastructure.

[0028] Upscaling techniques can be used to increase the resolution of lower-quality videos. However, upscaling videos using conventional techniques (such as bicubic and bilinear techniques) can lead to video degradation (e.g., noise and other visual artifacts), which degrades the user experience when watching the video. This degradation can be noticeable in terms of reduced sharpness, blurred details, and pixelation, all of which collectively impair the overall viewing experience. This problem can be particularly pronounced when users attempt to watch high-resolution content on displays lacking the pixel density to accurately represent the finer nuances of video. The trade-off between high-resolution content and the limitations of a device's display resolution underscores the importance of optimizing video formats and quality for a variety of mobile devices to ensure users enjoy the best possible viewing experience, regardless of the device they are using.

[0029] Super-resolution (SR) is a machine learning (ML) technique that uses advanced ML algorithms to enhance the resolution and quality of digital images or videos. For example, by analyzing and extrapolating patterns from low-resolution source content, SR algorithms predict and generate higher-resolution versions of the content, resulting in improved sharpness, finer details, and enhanced visual fidelity. However, the use of SR consumes a significant amount of power on mobile devices.

[0030] This document describes (e.g., using one or more neural network models) systems, apparatuses, processes (also referred to as methods), and computer-readable media (collectively, the “Systems and Technologies”) that provide a machine learning-based video processing system. In some aspects, a machine learning-based video processing system may include a downsampler that performs downsampling of video frames (e.g., for encoding or compression of downsampled video) and an upsampler that performs upsampling of video frames (e.g., for upsampling of decoded or decompressed video). The downsampler and upsampler may be implemented using one or more machine learning models. The machine learning-based video processing system may perform downsampling and upsampling independently of conventional hardware and software video codecs. The downsampler reduces compression complexity by downsampling the input video frames by a certain amount of resolution (e.g., reducing the resolution by a factor of 4 (4×)). The upsampler compensates for the loss of information caused by downsampling and compression by upsampling the frames (e.g., by upsampling these frames by the same amount of resolution that these frames have been downsampled, such as by upsampling the frames by 4×).

[0031] In some cases, machine learning-based video processing systems may include a kernel estimator that estimates the point spread function (PSF) or super-resolution (SR) kernel or degradation kernel associated with the device and the video. In some cases, the kernel estimator is part of the same machine learning model as the downsampler and / or upsampler. In other cases, the kernel estimator is a separate machine learning model. For example, video frames can be downsampled and / or upsampled using a PSF or SR kernel. In some cases, these systems and techniques can perform on-device training to train the kernel estimator machine learning model to estimate the PSF or SR kernel (thus obtaining the kernel prior). In some cases, the downsampler may be a temporal downsampler that can correct for temporal noise (e.g., a recursive temporal downsampler), which may be introduced based on time or other alignment issues between frames. As previously noted, downsampled frames may be encoded or compressed by a video codec. Video codecs can be any type of video codec, such as codecs based on conventional standards (e.g., defined by H.264, H.265, H.266, etc.) or codecs based on machine learning (e.g., using one or more neural network models).

[0032] In some respects, the upsampler may receive decoded (or decompressed) frames from a decoder or video codec. The upsampler may (e.g., independently of the video decoder) upsample the frames to improve their resolution. The SR kernel prior learned during training at the device can be used in the shallow upsampling branch to recover low-frequency textures in a way that reduces various artifacts, such as compression artifacts, staggering, etc.

[0033] Additional aspects of this disclosure are described in more detail below.

[0034] Figure 1 illustrates an example specific implementation of a System-on-Chip (SOC) 100, which may include a Central Processing Unit (CPU) 102 or a multi-core CPU configured to perform one or more of the functions described herein. Parameters or variables (e.g., neural signals and synaptic weights), system parameters associated with computing devices (e.g., a weighted neural network), latency, frequency bin information, task information, and other information may be stored in a memory block associated with a Neural Processing Unit (NPU) 108, a memory block associated with the CPU 102, a memory block associated with a Graphics Processing Unit (GPU) 104, a memory block associated with a Digital Signal Processor (DSP) 106, a memory block 118, and / or may be distributed across multiple blocks. Instructions executed at the CPU 102 may be loaded from the program memory associated with the CPU 102 or from memory block 118.

[0035] The SOC 100 may also include additional processing blocks tailored for specific functions, such as a GPU 104, a DSP 106, a connectivity block 110 (which may include fifth-generation (5G) connectivity, fourth-generation LTE (4G) connectivity, Wi-Fi connectivity, USB connectivity, Bluetooth connectivity, etc.), and a multimedia processor 112 capable of, for example, detecting and recognizing gestures. In one specific implementation, the NPU is implemented within the CPU 102, DSP 106, and / or GPU 104. The SOC 100 may also include a sensor processor, an image signal processor (ISP) 116, and / or a storage device 120.

[0036] The SOC 100 may be based on the ARM instruction set. In one aspect of this disclosure, the instructions loaded into the CPU 102 may include code for searching in a lookup table (LUT) for a stored multiplication result corresponding to the multiplicative product of the input values ​​and filter weights. The instructions loaded into the CPU 102 may also include code for disabling the multiplier during the multiplication operation of the multiplicative product when a lookup table hit for the multiplicative product is detected. Additionally, the instructions loaded into the CPU 102 may include code for storing the calculated multiplicative product of the input values ​​and filter weights when a lookup table miss for the multiplicative product is detected.

[0037] The SOC 100 and / or its components may be configured to perform image processing using machine learning techniques according to various aspects of this disclosure discussed herein. For example, the SOC 100 and / or its components may be configured to perform depth completion according to various aspects of this disclosure.

[0038] SOC 100 can be a computing device or part of a plurality of computing devices. In some examples, SOC 100 can be part of electronic devices (or devices), such as camera systems (e.g., digital cameras, IP cameras, video cameras, surveillance cameras, etc.), telephone systems (e.g., smartphones, cellular phones, conferencing systems, etc.), desktop computers, XR devices (e.g., head-mounted displays, etc.), smart wearable devices (e.g., smartwatches, smart glasses, etc.), laptops or notebooks, tablets, set-top boxes, televisions, display devices, system-on-a-chip (SoC), digital media players, game consoles, video streaming devices, servers, drones, in-vehicle computers, Internet of Things (IoT) devices, or any other suitable electronic devices.

[0039] In some implementations, CPU 102, GPU 104, DSP 106, NPU 108, connectivity block 110, multimedia processor 112, one or more sensors 114, sensor processor, ISP 116, memory block 118, and / or storage device 120 may be part of the same computing device. For example, in some cases, CPU 102, GPU 104, DSP 106, NPU 108, connectivity block 110, multimedia processor 112, one or more sensors 114, ISP 116, memory block 118, and / or storage device 120 may be integrated into smartphones, laptops, tablets, smart wearable devices, video game systems, servers, and / or any other computing device. In other specific implementations, CPU 102, GPU 104, DSP 106, NPU 108, connectivity block 110, multimedia processor 112, one or more sensors 114, ISP 116, memory block 118 and / or storage device 120 may be part of two or more separate computing devices.

[0040] Figure 2 is a block diagram illustrating the architecture of an image capture and processing system 200. The image capture and processing system 200 includes various components for capturing and processing images of a scene (e.g., an image of scene 201). The image capture and processing system 200 can capture individual images (or photographs) and / or capture video comprising multiple images (or video frames) in a specific sequence. A lens 215 of the system 200 faces scene 201 and receives light from scene 201. The lens 215 bends the light toward an image sensor 230. The light received by the lens 215 passes through an aperture controlled by one or more control mechanisms 260 and is received by the image sensor 230.

[0041] One or more control mechanisms 260 may control exposure, focus, and / or zoom based on information from image sensor 230 and / or information from image processor 250. One or more control mechanisms 260 may include multiple mechanisms and components; for example, control mechanism 260 may include one or more exposure control mechanisms 265A, one or more focus control mechanisms 265B, and / or one or more zoom control mechanisms 265C. One or more control mechanisms 260 may also include additional control mechanisms besides those illustrated, such as controls for analog gain, flash, HDR, depth of field, and / or other image capture properties.

[0042] The focus control mechanism 265B of the control mechanism 260 can obtain the focus settings. In some examples, the focus control mechanism 265B stores the focus settings in a memory register. Based on the focus settings, the focus control mechanism 265B can adjust the positioning of the lens 215 relative to the positioning of the image sensor 230. For example, based on the focus settings, the focus control mechanism 265B can move the lens 215 closer to or further away from the image sensor 230 by actuating a motor or servo, thereby adjusting the focus. In some cases, the system 200 may include additional lenses, such as one or more microlenses above each photodiode of the image sensor 230, each of which bends light received from the lens 215 toward the corresponding photodiode before it reaches the photodiode. The focus settings can be determined by contrast detection autofocus (CDAF), phase detection autofocus (PDAF), or some combination thereof. The focus settings can be determined using the control mechanism 260, the image sensor 230, and / or the image processor 250. The focus settings may be referred to as image capture settings and / or image processing settings.

[0043] The exposure control mechanism 265A of the control mechanism 260 can obtain the exposure settings. In some cases, the exposure control mechanism 265A stores the exposure settings in a memory register. Based on the exposure settings, the exposure control mechanism 265A can control the aperture size (e.g., aperture size or aperture coefficient), the duration of the aperture opening (e.g., exposure time or shutter speed), the sensitivity of the image sensor 230 (e.g., ISO speed or film speed), the analog gain applied by the image sensor 230, or any combination thereof. The exposure settings may be referred to as image capture settings and / or image processing settings.

[0044] The zoom control mechanism 265C of the control mechanism 260 can obtain zoom settings. In some examples, the zoom control mechanism 265C stores the zoom settings in a memory register. Based on the zoom settings, the zoom control mechanism 265C can control the focal length of an assembly (lens assembly) comprising lens elements including lens 215 and one or more additional lenses. For example, the zoom control mechanism 265C can control the focal length of the lens assembly by actuating one or more motors or servos to move one or more lenses in the lens relative to each other. The zoom settings may be referred to as image capture settings and / or image processing settings. In some examples, the lens assembly may include a parfocal zoom lens or a variable focal length zoom lens. In some examples, the lens assembly may include a focusing lens (in some cases, this focusing lens may be lens 215) that first receives light from scene 201, where the light then passes through a focusless zoom system between the focusing lens (e.g., lens 215) and image sensor 230 before reaching image sensor 230. In some cases, a focusless zoom system may include two positive (e.g., converging, convex) lenses with equal or similar focal lengths (e.g., within a threshold difference), with a negative (e.g., diverging, concave) lens between them. In some cases, the zoom control mechanism 265C moves one or more lenses in the focusless zoom system, such as the negative lens and one or both positive lenses.

[0045] Image sensor 230 includes one or more arrays of photodiodes or other photosensitive elements. Each photodiode measures the amount of light that ultimately corresponds to a specific pixel in the image generated by image sensor 230. In some cases, different photodiodes may be covered by different color filters, and thus light matching the color of the color filter covering the photodiode can be measured. For example, Bayer color filters include red, blue, and green color filters, where each pixel of the image is generated based on red light data from at least one photodiode covered by the red color filter, blue light data from at least one photodiode covered by the blue color filter, and green light data from at least one photodiode covered by the green color filter. Other types of color filters may use yellow, magenta, and / or cyan (also known as "emerald green") color filters as alternatives to or complements to red, blue, and / or green color filters. Some image sensors may have no color filters at all and may alternatively use different photodiodes (in some cases stacked vertically) throughout the pixel array. Different photodiodes in the pixel array can have different spectral sensitivity profiles, thus responding to light of different wavelengths. Monochrome image sensors may also lack color filters and therefore lack color depth.

[0046] In some cases, image sensor 230 may alternatively or additionally include an opaque mask and / or a reflective mask that blocks light from reaching certain photodiodes or portions of certain photodiodes at certain times and / or from certain angles, which can be used for phase detection autofocus (PDAF). Image sensor 230 may also include an analog gain amplifier for amplifying the analog signal output from the photodiodes and / or an analog-to-digital converter (ADC) for converting the analog signal output from the photodiodes (and / or the analog signal amplified by the analog gain amplifier) ​​into a digital signal. In some cases, certain components or functions discussed with respect to one or more control mechanisms in control mechanism 260 may alternatively or additionally be included in image sensor 230. Image sensor 230 may be a charge-coupled device (CCD) sensor, an electron multiplication CCD (EMCCD) sensor, an active pixel sensor (APS), a complementary metal-oxide-semiconductor (CMOS), an N-type metal-oxide-semiconductor (NMOS), a hybrid CCD / CMOS sensor (e.g., sCMOS), or some other combination thereof.

[0047] The image processor 250 may include one or more processors, such as one or more image signal processors (ISPs) (including ISP 254), one or more host processors (including host processor 252), and / or one or more of any other type of processor 2010 discussed with respect to the computing system 2000. The host processor 252 may be a digital signal processor (DSP) and / or other types of processors. In some specific implementations, the image processor 250 is a single integrated circuit or chip (e.g., referred to as a system-on-a-chip or SoC) including the host processor 252 and the ISP 254. In some cases, the chip may also include one or more input / output ports (e.g., input / output (I / O) port 256), a central processing unit (CPU), a graphics processing unit (GPU), a broadband modem (e.g., 3G, 4G, or LTE, 5G, etc.), memory, connectivity components (e.g., Bluetooth™, Global Positioning System (GPS), etc.), any combination thereof, and / or other components. I / O port 256 may include any suitable input / output port or interface according to one or more protocols or specifications, such as Inter-Integrated Circuit 2 (I2C) interface, Inter-Integrated Circuit 3 (I3C) interface, Serial Peripheral Interface (SPI) interface, Serial General Purpose Input / Output (GPIO) interface, Mobile Industrial Processor Interface (MIPI) (such as MIPI CSI-2 physical (PHY) layer port or interface, Advanced High Performance Bus (AHB) bus, any combination thereof and / or other input / output ports). In an exemplary example, host processor 252 may use the I2C port to communicate with image sensor 230, and ISP 254 may use the MIPI port to communicate with image sensor 230.

[0048] Image processor 250 can perform multiple tasks, such as demosaicing, color space conversion, image downsampling, pixel interpolation, automatic exposure (AE) control, automatic gain control (AGC), CDAF, PDAF, automatic white balance, merging images to form HDR images, image recognition, object recognition, feature recognition, receiving input, managing output, managing memory, or some combination thereof. Image processor 250 can store images and / or processed images in random access memory (RAM) 240 / 1425, read-only memory (ROM) 245 / 1420, cache 1412, memory cells (e.g., system memory 1415), another storage device 1430, or some combination thereof.

[0049] Various input / output (I / O) devices 270 may be connected to the image processor 250. I / O devices 270 may include displays, keyboards, keypads, touchscreens, touchpads, touch-sensitive surfaces, printers, any other output devices, any other input devices, or some combination thereof. In some cases, text may be entered into the image processing device 205B via the physical keyboard or keypad of the I / O device 270, or via a virtual keyboard or keypad on the touchscreen of the I / O device 270. I / O 256 may include one or more ports, jacks, or other connectors that enable wired connections between the system 200 and one or more peripheral devices, through which the system 200 receives data from and / or transmits data to one or more peripheral devices. I / O 256 may include one or more wireless transceivers that enable wireless connections between the system 200 and one or more peripheral devices, through which the system 200 receives data from and / or transmits data to one or more peripheral devices. Peripheral devices may include any type of I / O device 270 discussed earlier, and they can be considered I / O devices 270 in themselves once they are coupled to ports, jacks, wireless transceivers or other wired and / or wireless connectors.

[0050] In some cases, the image capture and processing system 200 may be a single device. In other cases, the image capture and processing system 200 may be two or more independent devices, including an image capture device 205A (e.g., a camera) and an image processing device 205B (e.g., a computing device coupled to the camera). In some embodiments, the image capture device 205A and the image processing device 205B may be coupled together, for example, via one or more wires, cables, or other electrical connectors, and / or wirelessly coupled together via one or more wireless transceivers. In some embodiments, the image capture device 205A and the image processing device 205B may be disconnected from each other.

[0051] As shown in Figure 2, the vertical dashed line divides the image capture and processing system 200 of Figure 2 into two parts, representing the image capture device 205A and the image processing device 205B, respectively. The image capture device 205A includes a lens 215, a control mechanism 260, and an image sensor 230. The image processing device 205B includes an image processor 250 (including an ISP 254 and a host processor 252), RAM 240, ROM 245, and I / O 256. In some cases, certain components illustrated in the image capture device 205A (such as the ISP 254 and / or the host processor 252) may be included in the image capture device 205A.

[0052] Image capture and processing system 200 may include electronic devices such as mobile or landline phones (e.g., smartphones, cellular phones, etc.), desktop computers, laptop or notebook computers, tablet computers, set-top boxes, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, Internet Protocol (IP) cameras, or any other suitable electronic devices. In some examples, image capture and processing system 200 may include one or more wireless transceivers for wireless communication, such as cellular network communication, 802.11 Wi-Fi communication, wireless local area network (WLAN) communication, or some combination thereof. In some specific implementations, image capture device 205A and image processing device 205B may be different devices. For example, image capture device 205A may include a camera device, and image processing device 205B may include a computing device, such as a mobile phone, desktop computer, or other computing device.

[0053] Although the image capture and processing system 200 is shown as including certain components, those skilled in the art will understand that the image capture and processing system 200 may include more components than those shown in Figure 2. Components of the image capture and processing system 200 may include software, hardware, or one or more combinations of software and hardware. For example, in some embodiments, components of the image capture and processing system 200 may include electronic circuitry or other electronic hardware, and / or may be implemented using electronic circuitry or other electronic hardware, which may include one or more programmable electronic circuits (e.g., microprocessors, GPUs, DSPs, CPUs, and / or other suitable electronic circuits); and / or may include computer software, firmware, or any combination thereof, and / or may be implemented using computer software, firmware, or any combination thereof to perform the various operations described herein. Software and / or firmware may include one or more instructions stored on a computer-readable storage medium and executable by one or more processors of an electronic device implementing the image capture and processing system 200.

[0054] The host processor 252 can configure the image sensor 230 with new parameter settings (e.g., via an external control interface such as I2C, I3C, SPI, GPIO, and / or other interfaces). In an exemplary example, the host processor 252 can update the exposure settings used by the image sensor 230 based on the internal processing results of the exposure control algorithm from past images. The host processor 252 can also dynamically configure the parameter settings of the internal pipeline or modules of the ISP 254 to match the settings of one or more input images from the image sensor 230, so that the image data is correctly processed by the ISP 254. The processing (or pipeline) blocks or modules of the ISP 254 may include modules for lens (or sensor) noise correction, demosaicing, color conversion, correction or enhancement / suppression of image attributes, denoising filters, sharpening filters, etc. Each module of the ISP 254 may include a large number of tunable parameter settings. Additionally, modules can be interdependent because different modules may affect similar aspects of the image. For example, denoising and texture correction or enhancement may both affect the high-frequency aspects of the image. As a result, a large number of parameters are used by the ISP to generate the final image based on the captured raw image.

[0055] Machine learning (ML) can be considered a subset of artificial intelligence (AI). ML systems can include algorithms and statistical models that computer systems can use to perform various tasks through pattern-dependent inference without explicit instructions. An example of an ML system is a neural network (also known as an artificial neural network), which can include groups of interconnected artificial neurons (e.g., neuron models). Neural networks can be used in a variety of applications and / or devices, such as image and / or video decoding, image analysis and / or computer vision applications, Internet Protocol (IP) cameras, Internet of Things (IoT) devices, autonomous vehicles, service robots, and more.

[0056] Individual nodes in a neural network mimic biological neurons by taking input data and performing simple operations on that data. The results of these simple operations on the input data are selectively passed to other neurons. Weights are associated with each vector and node in the network, and these values ​​constrain how the input data relates to the output data. For example, the input data of each node can be multiplied by its corresponding weight value, and the products can be summed. The sum of the products can be adjusted with optional biases, and activation functions can be applied to the results to produce the node's output signal or "output activation" (sometimes called a feature map or activation map). The weights can initially be determined by an iterative stream of training data through the network (e.g., weights are established during training phases where the network learns how to identify a particular category based on the characteristics of its typical input data).

[0057] There are different types of neural networks, such as Convolutional Neural Networks (CNNs), Recurrent Neural Networks (RNNs), Generative Adversarial Networks (GANs), Multilayer Perceptron (MLP) neural networks, Transformer Neural Networks, and so on. For example, a Convolutional Neural Network (CNN) is a feedforward artificial neural network. A CNN may consist of a collection of artificial neurons, each with its own receptive field (e.g., a localized region of the input space) that collectively tile the input space. RNNs work on the principle of storing the layer's output and feeding that output back to the input to help predict the layer's outcome. A GAN is a generative neural network that learns patterns in the input data so that the neural network model can generate new synthetic outputs that are reasonably likely derived from the original dataset. A GAN may consist of two neural networks operating together: a generative neural network that generates the synthetic output and a discriminative neural network that evaluates the authenticity of the output. In an MLP neural network, data is fed into the input layer, and one or more hidden layers provide an abstraction level to the data. The output layer can then be predicted based on this abstract data.

[0058] Deep learning (DL) is an example of machine learning techniques and can be considered a subset of ML. Many DL methods are based on neural networks, such as RNNs or CNNs, and utilize multiple layers. Using multiple layers in a deep neural network allows for the progressive extraction of higher-level features from a given raw data input. For example, the output of the first layer of artificial neurons becomes the input of the second layer, the output of the second layer becomes the input of the third layer, and so on. The layers located between the input and output of the entire deep neural network are often called hidden layers. Hidden layers learn (e.g., are trained) by transforming intermediate inputs from previous layers into slightly more abstract and complex representations that can be provided to subsequent layers until the final or desired representation is obtained as the final output of the deep neural network.

[0059] As noted above, neural networks are examples of machine learning systems and can include an input layer, one or more hidden layers, and an output layer. Data is provided from input nodes in the input layer, processed by hidden nodes in one or more hidden layers, and output is produced by output nodes in the output layer. Deep learning networks typically include multiple hidden layers. Each layer of a neural network can include a feature map or activation map, which can include artificial neurons (or nodes). Feature maps can include filters, kernels, etc. Nodes can include one or more weights used to indicate the importance of nodes in one or more layers. In some cases, deep learning networks may have a series of many hidden layers, where earlier layers are used to determine simple and low-level properties of the input, and later layers build a hierarchy of more complex and abstract properties.

[0060] Deep learning architectures can learn hierarchical structures of features. For example, if presented with visual data, the first layer can learn to recognize relatively simple features in the input stream, such as edges. In another example, if presented with auditory data, the first layer can learn to recognize spectral power at specific frequencies. The second layer, taking the output of the first layer as input, can learn to recognize combinations of features, such as simple shapes in visual data or combinations of sounds in auditory data. For example, higher layers can learn to represent complex shapes in visual data or words in auditory data. Even higher layers can learn to recognize common visual objects or spoken phrases. Deep learning architectures perform particularly well when applied to problems with natural hierarchical structures. For example, the classification of motorized vehicles can benefit from first learning to recognize features such as wheels, windshields, and others. These features can then be combined in different ways at higher layers to identify cars, trucks, and airplanes.

[0061] Neural networks can be designed to have multiple connectivity patterns. In feedforward networks, information is passed from lower layers to higher layers, where each neuron in a given layer communicates with neurons in higher layers. As described above, hierarchical representations can be built in successive layers of a feedforward network. Neural networks can also have recurrent or feedback (also known as top-down) connections. In recurrent connections, the output from a neuron in a given layer can be passed to another neuron in the same layer. Recurrent architectures can help identify patterns across more than one block of input data that is sequentially delivered to the neural network. Connections from neurons in a given layer to neurons in lower layers are called feedback (or top-down) connections. Networks with many feedback connections can be helpful when the recognition of higher-level concepts can aid in discerning specific lower-level features of the input.

[0062] The connections between layers in a neural network can be fully connected or locally connected. Figure 3A illustrates an example of a fully connected neural network 302. In a fully connected neural network 302, neurons in a first hidden layer can transmit their outputs to each neuron in a second hidden layer, such that each neuron in the second layer receives input from each neuron in the first layer. Figure 3B illustrates an example of a locally connected neural network 304. In a locally connected neural network 304, neurons in a first hidden layer can connect to a limited number of neurons in a second hidden layer. More generally, the locally connected layers of a locally connected neural network 304 can be configured such that each neuron in the layer will have the same or similar connectivity pattern, but the connection strength can have different values ​​(e.g., 310, 312, 314, and 316). The connectivity pattern of locally connected layers may produce spatially different receptive fields in higher layers because higher-layer neurons in a given region can receive inputs that are trained to the properties of a restricted portion of the network's total input.

[0063] An example of a locally connected neural network is a convolutional neural network. Figure 3C illustrates an example of a convolutional neural network 306. The convolutional neural network 306 can be configured such that the connection strength associated with the input for each neuron in the second layer is shared (e.g., 308). Convolutional neural networks may be well-suited for problems where the spatial location of the input is meaningful. According to various aspects of this disclosure, the convolutional neural network 306 can be used to perform one or more aspects of image processing. An illustrative example of a deep learning network is described in more detail with reference to the example block diagram of Figure 12. An illustrative example of a convolutional neural network is described in more detail with reference to the example block diagram of Figure 13.

[0064] Deep convolutional networks (DCNs) are networks of convolutional networks configured with additional pooling and normalization layers. DCNs can achieve high performance on many tasks. DCNs can be trained using supervised learning, where both the input and output targets are known for many paradigms and are used to modify the network's weights using gradient descent. DCNs can be feedforward networks. Furthermore, as described above, connections from neurons in the first layer of a DCN to a set of neurons in the next higher layer are shared across neurons in the first layer. The feedforward and shared connections of DCNs can be used for fast processing. For example, the computational cost of a DCN may be much smaller than that of a similarly sized neural network that includes recurrent or feedback connections.

[0065] The processing at each layer of a convolutional network can be thought of as a spatially invariant template or base projection. If the input is first decomposed into multiple channels, such as the red, green, and blue channels of a color image, then a convolutional network trained on that input can be thought of as three-dimensional, with two spatial dimensions along the axes of the image and a third dimension capturing color information. The output of the convolutional connections can be thought of as forming a feature map in subsequent layers, where each element in the feature map receives input from a range of neurons in the previous layer and from each of those multiple channels. The values ​​in the feature map can be further processed with nonlinearities (such as corrections, maximum values ​​(0, x)). Values ​​from neighboring neurons can be further pooled, which corresponds to downsampling and provides additional local invariance and dimensionality reduction.

[0066] Video frames can include various artifacts and other types of noise that can be introduced during frame upscaling using ML models. In some respects, examples of ML models include SR functions used to improve resolution. SR techniques can be power-efficient, but their correction of the various noises introduced into the frame is negligible. For example, video frames may have temporal misalignment, which degrades the quality of the upscaled frame. Temporal misalignment occurs when frames in a video sequence are not properly synchronized or aligned over time. This can occur due to various reasons, such as errors in video capture or transmission, frame rate differences, or interruptions in the video stream, and results in visual artifacts such as stuttering in decoded video, frame repetition, or motion discontinuities, negatively impacting the viewing experience.

[0067] In another example, video frames may include checkerboard patterns that occur during video compression and decompression. Checkerboard patterns include visual artifacts that appear when decoding and displaying compressed video, resulting in a checkerboard-like pattern of alternating blocks or pixels. Checkerboard artifacts typically occur when there is data loss or corruption in the compressed video stream, leading to incorrect reconstruction of image details. Checkerboard patterns can be particularly noticeable in low bitrate or highly compressed video and may manifest as alternating areas of high and low image quality.

[0068] In another example, video frames may include blurring that occurs during video compression and decompression. Blurring can be applied based on information during the prediction algorithm and remove information that was not accurately reproduced during encoding.

[0069] In another example, video frames may include flickering that can be based on video compression and decompression. Flickering can occur when playing back compressed video. This type of flickering is characterized by rapid and irregular changes in brightness or contrast, which produce a flickering effect on the screen. Flickering can be caused by compression artifacts, especially when the compression algorithm cannot represent certain types of content, such as fine details, high-frequency patterns, or fast motion.

[0070] In another example, video frames may include staircase artifacts that can occur during video compression and decompression. Staircase, also known as “block artifacts,” is a visual distortion that manifests as visible grid-like blocks or steps along edges and contours within a video frame. This artifact is caused by the quantization process used in video compression, where frames are divided into blocks, and the compression algorithm approximates the pixel values ​​within these blocks. When the compression ratio is high or when bit depth is limited, block boundaries become more pronounced, resulting in the staircase effect.

[0071] In another example, video frames may include compression artifacts that occur during video compression and decompression. Compression artifacts are visual defects or distortions that appear in compressed video frames when compared to the original uncompressed video frames. These artifacts are the result of data reduction techniques used to reduce the file size of the video, often involving lossy compression methods. Common compression artifacts include blockiness or pixelation (block artifacts), blurring of fine details, color bleeding, banding (stripes or abrupt color transitions), ringing (halos around edges), and mosquito noise (small high-frequency distortions).

[0072] In another example, a video frame may include color bleeding that occurs during video compression and decompression. Color bleeding artifacts in video compression refer to visual distortion where color from one part of a frame unintentionally bleeds or spills into adjacent areas, resulting in an unnatural and blurry appearance. Color bleeding can be particularly noticeable in areas of high color contrast, such as at boundaries between objects or along the edges of text or graphics, leading to a blurry or smudged effect.

[0073] As previously noted, a machine learning-based video processing system is provided, comprising a downsampler and an upsampler. The downsampler may downsample video frames before encoding (or compressing) them (e.g., via a conventional compression encoder or codec, such as an encoder or codec configured to operate using one or more of MP4, H.264, H.265, H.266, etc.), and the upsampler may upsample decoded frames. For example, the upsampler may receive decoded frames from a video decoder or codec (e.g., via a conventional compression decoder or codec, such as a decoder or codec configured to operate using one or more of MP4, H.264, H.265, H.266, etc.), which decodes (or decompresses) the encoded (or compressed) frames to generate decoded frames. Machine learning-based video processing systems can learn super-resolution (SR) kernel priors (also known as degradation kernel priors), which use various techniques described below to define the point spread function (PSF) of downsampled frames (e.g., how each pixel in a high-resolution frame spreads or blurs across neighboring pixels in a low-resolution frame, which is a downsampled version of the high-resolution frame). Upsamplers can use the SR kernel prior to upsample frames. In some cases, there are real-time (or near-real-time) machine learning-based video processing systems that can downsample and / or upsample frames as they are received.

[0074] Figure 4 is a block diagram illustrating an example of a machine learning-based video processing system 400 according to some aspects of the present disclosure. In some aspects, the machine learning-based video processing system 400 includes a video processor 410 that processes raw frames (e.g., raw frame 402) and provides the processed video frames to an encoder 420. The machine learning-based video processing system 400 also includes a video processor 440 that processes decoded frames received from a decoder 430 to generate reconstructed frames (e.g., reconstructed frame 404). In some examples, the raw frames and reconstructed frames are video frames. In some aspects, the video processors 410 and 440 are independent of the encoder 420 and decoder 430. For example, the encoder 420 and decoder 430 may be fixed components relative to the machine learning-based video processing system 400, in which case the encoding (compression) and decoding (decompression) operations of the encoder 420 and decoder 430 may remain unchanged. In some cases, the encoder 420 and decoder 430 may be integrated circuits (or a single codec integrated circuit) separate from one or more integrated circuits implementing the video processors 410 and 440.

[0075] The machine learning-based video processing system 400 can be implemented in different configurations depending on the functionality of the system 400. For example, an image capture system or streaming service may implement a video processor 410, in some cases an encoder 420 to encode video content, and a client device for decoding the video content may include a video processor 440, and in some cases a decoder 430. In some aspects, the device may also implement both video processor 410 and video processor 440. For example, the device may use video processor 410 to process video content, use encoder 420 to encode video content, and store the encoded content and / or send the encoded content to one or more other devices for decoding and processing. In such examples, the device may also receive encoded video content from storage devices and / or from one or more other devices, decode the encoded video content using decoder 430, and output reconstructed frames (e.g., reconstructed frame 404) for display or other purposes. In another example, a video conferencing service may implement both video processor 410 and video processor 440 to improve compression for real-time video communication.

[0076] As noted above, video processor 410 is configured to receive raw frame 402 and downsample raw frame 402 using downsampler 412 (and in some cases kernel estimator 418 and / or temporal filter 419). Video processor 410 may output the processed raw frame 402 to encoder 420 for encoding / compression. Encoder 420 may encode (or compress) the downsampled frame. Encoder 420 may output the encoded frame to decoder 430. In some cases, as described above, encoder 420 may output the encoded frame to storage device for storage and / or to one or more other devices for encoding. Decoder 430 may decode the encoded frame to generate a decoded frame. The decoded frame is a reconstructed version of the downsampled raw frame 402 output by video processor 410. Video processor 440 may upsample the downsampled frame to generate a reconstructed frame 404 with a resolution corresponding to (e.g., the same as) the original frame 402.

[0077] Video processor 410 includes a machine learning (ML) model (or multiple ML models) configured to perform one or more of the operations. In some aspects, the ML model may include one or more neural network models. As shown in Figure 4, video processor 410 includes a downsampler 412, a kernel estimator 418, and a temporal filter 419. Downsampler 412 is configured to downsample the original frame 402 from a first resolution to a second resolution lower than the first resolution (e.g., downsample from 1080p resolution to 270p resolution, downsample from 720p resolution to 180p resolution, etc.).

[0078] Downsampling unit 412 includes frame classifier 414 and prediction generator 416. Frame classifier 414 is configured to classify raw frame 402 into independent frames or dependent frames. Independent frames are independent of any previous or subsequent frames, and dependent frames are dependent on the previous frame (e.g., generated based on previously decoded frames). Dependent frames may also be referred to herein as differential frames, which include information indicating the difference between the previous frame and the current frame. As previously noted, video processor 410 and video processor 440 may be independent of encoder 420 and decoder 430. In such cases, frame classifier 414 may identify independent frames and dependent frames independently of intra-frame decoded frames (I-frames) and inter-frame decoded frames (P-frames or B-frames) identified by encoder 420. For example, independent frames determined by frame classifier 414 may differ from I-frames determined by encoder 420, and dependent frames determined by frame classifier 414 may differ from B-frames and P-frames determined by encoder 420.

[0079] The prediction generator 416 is configured to improve downsampling quality to help capture specific degraded features that occur during downsampling and to achieve better recovery during the upsampling process. For example, the prediction generator 416 may predict the features of a frame based on its source. In one aspect, this feature may be a PSF associated with the source of the video, such as features of an image sensor and corresponding hardware (e.g., a lens). The PSF may also be associated with a frame. For example, the prediction generator 416 may estimate the downsampling kernel used to downsample the original frame (e.g., original frame 402), such as by learning the relationship between the original frame patch of the original frame and the corresponding downsampled output frame patch. In some aspects, the training of the prediction generator 416 may be performed using a generative adversarial network (GAN) neural network architecture, as described below with reference to Figures 7A, 7B, and 8.

[0080] In some respects, offline training can be used to train the parameters of the prediction generator 416 (e.g., weights, biases, etc.). In other cases, the parameters of the prediction generator 416 can also be fine-tuned (also known as fine tuning) using online training. Offline training can be performed on a separate device from the device hosting the video processor 410 (e.g., at a server device configured to train the prediction generator 416 using a large training dataset). Online training can be performed on the device hosting the video processor 410 (e.g., using frames captured by the device itself). For example, an image sensor for a vehicle can capture various video frames at the beginning of the device's lifecycle and perform online training (or fine tuning) of the prediction generator 416. Other aspects of online training (or fine tuning) are described with reference to Figures 6, 7A, 7B, and 8.

[0081] Kernel estimator 418 is configured to estimate the SR kernel (or degradation kernel) for use by video processor 440 when upsampling decoded frames. In some cases, the SR kernel is based on the PSF (e.g., the SR kernel describes the PSF). The PSF indicates how each pixel in a high-resolution frame is expanded or blurred across neighboring pixels in the corresponding low-resolution frame (e.g., a downsampled version of the original frame). In some aspects, kernel estimator 418 is configured to maintain the relationship between the PSF of the original frame 402 and the PSF of the reconstructed frame 404. For example, to efficiently perform super-resolution (e.g., upsampling by video processor 440), accurately estimating or approximating the SR kernel may be important because it varies from source to source. Kernel estimator 418 can estimate downsampling degradation by learning the relationship between the original frame 402 (or the original frame patch of the original frame 402) and the corresponding downsampled frame (or the downsampled patch corresponding to the original frame patch) (such as using a loss function between the predicted feature map and the baseline ground truth feature map (e.g., a perceptual loss function)), as described below with respect to Figures 9 and 10.

[0082] In some cases, kernel estimator 418 performs kernel estimation for a given input stream source as a one-time process to generate SR kernel priors. The resulting set of SR kernel priors (e.g., a set of 16 3×3 SR kernel priors) provides valuable information that can be used by upsampler 442 of video processor 440 during the upsampling process to compensate for degradation and additive noise. In some cases, offline training can be used to train the parameters of kernel estimator 418 (e.g., weights, biases, etc.). In some aspects, online training can also be used to fine-tune the parameters of kernel estimator 418. For example, kernel estimator 418 performs kernel estimation as part of a fine-tuning or fitting process, where the parameters of a previously trained neural network model (e.g., weights, biases, and / or other parameters) are fine-tuned or fitted based on additional training (e.g., on-device training via an edge device). For example, once trained (fine-tuned) via on-device training (e.g., on an edge device) and calibrated (e.g., over 15 to 20 training epochs), the learned SR kernel (or SR kernel prior) can be directly used during fine-tuning of the kernel estimator 418 or during inference of the adapted neural network model (e.g., in the inference pipeline). In some cases, dual learning can be utilized. Dual learning involves jointly optimizing the quality of the reconstructed high-resolution frame (e.g., reconstructed frame 404) and the estimated SR kernel, such as minimizing the high-resolution error frame using a first loss (e.g., an L1 loss function) and minimizing the low-resolution error frame using a second loss (e.g., an L2 loss function).

[0083] The temporal filter 419 of the video processor 410 can perform temporal filtering on frames based on motion to account for temporal noise introduced between frames. In some aspects, the temporal filter 419 is configured to identify optical flow information between the current frame and the previous frame, use the optical flow information to warp the previous frame to correspond to the current frame, and generate residual information based on the warped previous frame and the current frame. In this case, the residual information can be applied to the current frame to make the current frame temporally consistent with the previous frame, thereby correcting temporal noise.

[0084] As previously noted, video processor 440 is configured to receive decoded downsampled frames from decoder 430 and generate reconstructed frames 404. In one aspect, video processor 440 includes an upsampler 442 configured to upsample the downsampled frames using prediction techniques (e.g., utilizing one or more SR kernel priors from the SR kernel priors) to generate reconstructed frames 404. Upsampler 442 includes a frame classifier 444 to classify the downsampled decoded frames as independent or dependent frames. In some aspects, upsampler 442 may also use classification results from frame classifier 414. As noted above, the independent and dependent frames classified by frame classifier 444 are different from the I-frames, P-frames, and B-frames used by decoder 430 to decode frames.

[0085] Based on the classification of downsampled frames, upsampler 442 is configured to generate (or reconstruct) reconstructed frame 404 using first frame generator 446 and second frame generator 448. In one aspect, first frame generator 446 may be configured to reconstruct independent frames, and second frame generator 448 may be configured to reconstruct dependent frames. In some aspects, first frame generator 446 and second frame generator 448 are configured to upsample the luminance (or luminance) component (Y component) of the decoded video frame, and after upsampling the Y component, combine it in the color component (e.g., chrominance or chrominance components, such as chrominance red (Cr) and chrominance blue (Cb) components) to reduce the processing loop of upsampler 442, first frame generator 446, and / or second frame generator 448.

[0086] Video processors 410 and 440 are ML models trained for efficient SR downsampling and SR upsampling. Compared to traditional logic-based methods, video processors 410 and 440 use more efficient ML techniques that require fewer processor resources to correct errors such as temporal misalignment, checkerboarding, staircase artifacts, blurring, flickering artifacts, compression artifacts, and color bleeding artifacts.

[0087] Figure 5 is an illustration of a frame classifier 500 in a real-time machine learning-based video processing system according to some aspects of this disclosure, the frame classifier being configured to identify independent frames and dependent frames. In some aspects, the frame classifier 500 can be used in both the video processor 410 (e.g., frame classifier 414) and the video processor 440 (e.g., frame classifier 444) of Figure 4. In some examples, the frame classifier 500 includes a motion classification neural network model.

[0088] Frame classifier 500 can perform feature extraction to extract features from frames (e.g., from the current frame 502 and the previous frame 504). Frame classifier 500 can also perform motion detection to detect the amount of motion and pixel changes between the current frame 502 and the previous frame 504. For example, to detect the amount of motion and pixel changes between frames 502 and 504, frame classifier 500 can determine (or compute) the distance (e.g., Euclidean distance) between features (e.g., edge features, such as pooled edge features generated by the pooling layer of frame classifier 500) of frames 502 and 504. The distance provides a measurement between the current frame 502 and the previous frame 504. Frame classifier 500 can further classify the determined motion using a perceptual similarity index. For example, frame classifier 500 can classify the motion into two categories, including a small category (for small motions) and a large category (for large motions). As described below, neural network layers (e.g., fully connected layers) can be used to classify the motion into the two categories.

[0089] As noted above, frame classifier 500 performs feature extraction. For example, as shown in Figure 5, frame classifier 500 includes a feature extraction layer 510 that includes residual blocks configured to extract features (e.g., features from the Y components or Y-plane of the current frame 502 and the previous frame 504) from the current frame 502 and the previous frame 504. In some cases, the residual blocks are pre-trained. Max pooling layer 512 is configured to perform pooling operations (e.g., MaxPool) to output edge features (referred to as pooling features) associated with the edges of objects in the current frame 502 and the previous frame 504.

[0090] The frame classifier 500 also includes a motion detection layer 520 configured to identify motion differences between edge features extracted from the current frame 502 and the previous frame 504. In one aspect, the motion detection layer 520 calculates the Euclidean distance between the edge features extracted from the current frame 502 and the previous frame 504 to detect the amount of motion and pixel changes between the two frames. The result of the calculation is residual information that can be visually represented by a bitmap, where black indicates no change and gray shading indicates differences.

[0091] The similarity detection layer 530 is a fully connected layer that classifies motion into two distinct categories: small motion or large motion. The output of the similarity detection layer 530 is a Boolean value corresponding to the similarity between the current frame 502 and the previous frame 504. For example, a Boolean truth value indicates high similarity corresponding to no motion, and a Boolean value indicates low similarity corresponding to motion.

[0092] Figure 6 is a conceptual diagram of online training of a downsampler 600 for a machine learning-based video processing system 400 according to some aspects of this disclosure. The downsampler 600 is an example of the downsampler 412 of Figure 4. In some aspects, the downsampler 600 is configured using a device (e.g., the computing system 2000 of Figure 20), or the downsampler may be configured in a SoC (e.g., SoC 100 of Figure 1) or an ISP (e.g., ISP 254 of Figure 2). Each device varies due to numerous variations, such as minor process variations in manufacturing and tolerances associated with each component. Fine tuning of the parameters of the downsampler 600 (e.g., weights, biases, etc.) can improve video quality and efficiency, for example, during encoding and / or decoding.

[0093] In some aspects, downsampler 600 includes one or more ML models. For example, original frame 602 is provided to downsampler 610, which is configured to downsample the frame to downsampled frame 612. In some aspects, downsampler 610 may downsample original frame 602 based on the PSF of an image sensor (e.g., ISP 254 of FIG. 2). Downsampler 610 may also downsample original frame 602 based on the PSF of a frame. Conventional ML models used for downsampling and upsampling are trained on supervised pairs of source frames with standard / known degraded kernels. However, in real-world use, each stream source has its own characteristics, and conventional ML models may perform poorly due to the application of incorrect corrections and the degradation of upsampling effectiveness. For example, conventional ML models may produce checkerboard artifacts, staircase artifacts, blurring, flickering artifacts, compression artifacts, and color bleeding artifacts.

[0094] SR kernel estimator 620 is configured to estimate the kernel based on the PSF of the original frame 602 and the downsampled frame 612 to compensate for degradation noise occurring during downsampling to generate the downsampled frame 612. The PSF can be used for upsampling operations to create a reconstructed frame 632 with high perceptual similarity to the original frame 602. For example, downsampler 610 can estimate the downsampled kernel by learning the relationship between the original frame 602 (or an image patch of the original frame 602) and the corresponding downsampled frame (or an output image patch of the downsampled frame), such as using a GAN as described with respect to Figures 7A, 7B, and 8. Non-limiting examples of various PSFs are illustrated in Figure 7B. In some aspects, SR kernel estimator 620 is configured to be trained or fine-tuned concurrently with the downsampler (e.g., downsampler 610) during the online training phase of the device to capture device-specific degradation characteristics. If the decoder (e.g., video processor 440) receives a downsampled frame with off-target characteristics, the upsampled frame may include various artifacts.

[0095] Fine-tuning (e.g., via online training) can be used to configure the device to provide a frame stream that allows upsampler 630 to perform SR functionality on downsampled coded frames. In some aspects, during online training, upsampler 630 may upsample downsampled frame 612 based on the upsampler's current kernel estimate to generate reconstructed frame 632. In this case, comparator 634 is configured to compare the original frame 602 with the reconstructed frame 632 to identify the L1 loss that occurs based on the downsampling at downsampler 610 and the upsampling at upsampler 630. During online training, the L1 loss is backpropagated to downsampler 610 and SR kernel estimator 620 to train downsampler 610 and SR kernel estimator 620.

[0096] The reconstructed frame 632 is also fed back to the downsampler 610 (shown as downsampler 640 in FIG. 6) to generate the loss frame 642. In some aspects, the comparator 644 is configured to compare the loss frame 642 with the downsampled frame 612 to identify the L2 loss. In some aspects, the L1 loss is the pixel-wise difference between the original frame and the reconstructed frame and can be used to identify weights to estimate the PSF based on the kernel of the original frame 602. The L2 loss squared difference between pixels in the downsampled frame 612 and the loss frame 642 applies a penalty to any difference in the pixels. The L1 loss and L2 loss are used for backpropagation during online training to tune parameters (e.g., weights, biases, etc.) based on the loss. By tuning the parameters during online training, the device incorporated into the downsampler 610 learns in a source-agnostic manner to downsample the frame in a way that prevents various artifacts that may occur due to the SR function performed by the upsampler 630.

[0097] In some respects, downsampler 600 is configured to provide source-agnostic downsampling. Source-agnostic downsampling and upsampling are represented by the following Equation 1: = (Equation 1) In Equation 1, I LR It is a downsampled frame, I HR It is the original high-resolution frame, and k is the downsampling kernel. It's a convolution operation, ↓ S Let n be the downsampling factor and n be the additive noise. By learning the weights in the downsampling based on the SR performed at the upsampling, the downsampled frame (e.g., by downsampling 610) can be source-agnostic and improve real-world usability compared to a regular model trained with a fixed dataset. For example, downsampling 600 can compensate for degradation patterns and additive noise that occur during downsampling and can help upsampling (e.g., upsampling 630) reconstruct the frame with higher fidelity.

[0098] Figure 7A is an illustration of a prediction generator 700 (e.g., prediction generator 416) used to train (or fine-tune) a downsampler (e.g., downsampler 412 of Figure 4, downsampler 610 of Figure 6, etc.) according to some aspects of this disclosure. In some aspects, the prediction generator 700 is part of a GAN network (e.g., PatchGAN), such as in combination with the discriminator 800 of Figure 8. In some cases, the generator 700 is configured to improve downsampling quality and capture specific degradation features that achieve better recovery during the upsampling process. For example, the generator 700 can estimate the downsampling kernel by learning the relationship between a portion (e.g., a patch) of the original frame (e.g., original frame 602) and a corresponding portion (e.g., a patch) of the downsampled frame (e.g., downsampled frame 612) based on the discriminator (e.g., discriminator 800 of Figure 8).

[0099] Generator 700 includes a convolutional layer 710 that reduces the size of input frame 702 to output frame 704 and estimates a downsampling kernel (or SR kernel), such as downsampling kernel 709 of FIG. 7B. In some respects, convolutional layer 710 does not include activation layers or any biases to accurately map the characteristics of the downsampling kernel using multiple convolutional channels that represent the relationship between portions of input frame 702 and portions of output frame 704.

[0100] Figure 7B is a diagram illustrating a downsampling kernel associated with the operation of generator 700 of Figure 7A. The downsampling kernel may be based on a PSF, which indicates how each pixel in a high-resolution frame (e.g., frame 702) is expanded or blurred across neighboring pixels in a low-resolution frame (e.g., output frame 704), which is a downsampled version of the high-resolution frame. The kernel in Figure 7B includes a baseline truth kernel 705 associated with downsampling the original frame to the downsampled frame, an expansion map 707 indicating the expansion or blurring of pixels in a single layer, and the downsampling kernel generated by generator 700 of Figure 7A.

[0101] Figure 8 is a diagram illustrating a discriminator 800 used in conjunction with the generator 700 of Figure 7A according to some aspects of this disclosure, which is trained (or fine-tuned) on a downsampler (e.g., downsampler 412 of Figure 4, downsampler 610 of Figure 6, etc.). In some aspects, the discriminator 800 is part of a GAN network (e.g., PatchGAN) combined with the generator 700 of Figure 7A. In the example of Figure 8, the discriminator 800 includes convolutional layers, normalization layers, and rectified linear unit (ReLU) layers, where the final convolution and sigmoid operation generate feature map 804.

[0102] The discriminator 800 can receive an original input patch 802 (e.g., a 64×64 portion of the original frame) and a corresponding downsampled patch (e.g., 32×32), and can generate a feature map 804 for the two inputs. The downsampled patch can be the output from the generator 700 of FIG. 7A (e.g., output frame 704). In some respects, the feature map 804 corresponds to the PSF of the downsampled frame, and a direct comparison of the feature maps can identify the similarity of the feature maps. Based on the similarity of the feature maps, the discriminator 800 marks the downsampled patch as false or true. The parameters (e.g., weights, biases, etc.) of the generator 700 of FIG. 7A can continue to be tuned until the discriminator 800 can no longer mark any feature map as false.

[0103] Figure 9 is a diagram of an SR kernel estimator 900 for predicting an SR kernel for deep compression, according to some aspects of this disclosure. The SR kernel estimator 900 is an example of the kernel estimator 418 of Figure 4 and the SR kernel estimator 620 of Figure 6. In some cases, the SR kernel estimator 900 is configured to learn an SR kernel corresponding to a PSF, which is used by the upsampler 630 to upsample frames (e.g., decoded frames).

[0104] The SR kernel estimator 900 is configured to determine a perceptual loss function 920 using an original patch 902 of a frame and a downsampled patch 904 of a downsampled frame. This perceptual loss function identifies the loss between features of the original patch 902 and the downsampled patch 904. The SR kernel estimator 900 includes a first pipeline 906 for convolving the original patch 902 into a benchmark ground truth feature map and a second pipeline 908 for generating a predicted feature map based on the downsampled patch 904. The benchmark ground truth feature map and the predicted feature map are input to determine the perceptual loss function 920, which learns an SR kernel prior 910. The SR kernel prior 910 describes the transformation (e.g., expansion or blurring) or PSF associated with the degradation of downsampling in a compressed format. For example, the PSF describes the transformation of pixels in a high-resolution frame across neighboring pixels in a low-resolution frame.

[0105] The SR kernel varies based on the source input, and a correct SR kernel is learned to estimate or approximate the SR kernel based on a comparison of the baseline truth from the first pipeline 908 with the downsampled input. Because the SR kernel varies from source to source, the SR function can be accurately improved based on an accurate SR kernel.

[0106] In some respects, the 16 sets of 3×3 SR kernel priors 910 provide information used during the upsampling process to compensate for degradation and additive noise in the shallow network of the upsampler.

[0107] The SR kernel estimation process is a single-trigger process deployed on-device for offline training. For example, the SR kernel estimator 900 can be trained on-device to calibrate the SR kernel prior 910 over 15 to 20 epochs, and the SR kernel prior 910 is then applied to an upsampler (e.g., video processor 440).

[0108] The SR kernel estimator 900 utilizes dual learning and jointly optimizes the quality of the reconstructed frames based on the estimated SR kernel, while also minimizing the error frames. For example, the L1 loss and L2 loss illustrated in Figure 6 are used to learn the SR kernel prior 910 during the SR kernel estimation process.

[0109] Figure 10 is a conceptual diagram of an upsampler 1000 for a deep decoder network (e.g., the video processor 440 of Figure 4) according to some aspects of the present disclosure. The upsampler 1000 includes a shallow upsampler 1010 and a deep upsampler 1020 for recovering features from a downsampled frame 1002 and generating an upsampled frame 1004.

[0110] The deep upsampler 1020 is configured as a deep neural network and includes various functions for recovering high-frequency features within the upsampled frame 1004. The shallow upsampler 1010 is configured to recover low-frequency texture and features based on the SR kernel 1015 learned during the SR kernel estimation process, in conjunction with the deep upsampler. The SR kernel 1015 can be learned based on the SR kernel estimation process described with respect to Figure 9.

[0111] After the shallow upsampler 1010 and the deep upsampler 1020 each form an upsampled frame, a pixel-wise summation 1030 can be performed to combine each upsampled frame to generate an upsampled frame 1004. In this case, the deep upsampler 1020 and the shallow upsampler 1010 recover different features. In this case, since the SR kernel 1015 is learned on-device, the upsampler 1000 is able to recover low-frequency features more accurately compared to conventional bicubic or bilinear methods.

[0112] Figure 11 illustrates a portion of a high-resolution frame 1100, which is recovered based on a conventional SR operation with a learned SR kernel and a corresponding PSF associated with the upsampled frame. The resulting textures of objects in the high-resolution frame 1100 are sharper, and edge fidelity is maintained after upsampling. The estimated kernel exemplifies a bilinear kernel compensated for the degradation loss due to the downsampling operation, and provides accurate, sharp textures and edges. Due to the accurate downsampling degradation representation, the estimated SR kernel (e.g., SR kernel 1015) in the shallow upsampler (e.g., shallow upsampler 1010) preserves the variation in edges and features.

[0113] Figure 12 is a conceptual diagram illustrating a time filter 1200 for correcting timing alignment problems according to some aspects of this disclosure. The time filter 1200 is configured to take the current frame 1202 as input and apply the previous downsampled frame 1204 to generate the current downsampled frame 1206. The current downsampled frame 1206 is modified to add noise that corrects for timing noise that may have occurred during upsampling.

[0114] For illustrative purposes, temporal filter 1200 illustrates a downsampler 1210 for downsampling the current frame 1202, but it is not necessarily part of downsampler 1210. In this case, the current frame 1202 is downsampled and provided to a first comparator 1212, a subtraction synthesizer 1214, and a second comparator 1216. The previous downsampled frame 1204 is also provided to the first comparator 1212, and the first comparator 1212 is configured to identify the optical flow of pixels between the previous downsampled frame 1204 and the downsampled version of the current frame 1202. Temporal filter 1200 includes a warping engine 1220 configured to receive optical flow information from the first comparator 1212 and generate a prediction frame that estimates how pixels in the previous downsampled frame 1204 move relative to the current frame 1202.

[0115] The predicted frame is provided to a subtractive synthesizer 1214 to generate residual information, which identifies errors based on the downsampled version of the current frame 1202 and the predicted frame. The residual information is provided to a second comparator 1216, which also receives the downsampled version of the current frame 1202 and generates the difference between the residual information and the downsampled current frame 1202. This difference is then provided to an additive synthesizer 1222, which combines the predicted frame with the difference to construct the current downsampled frame 1206. The residual information is temporally aligned with the previous downsampled frame 1204 and reduces noise (e.g., motion inconsistencies and artifacts) that may have been introduced during upsampling.

[0116] In this case, the time filter 1200 takes into account the time dimension related to the downsampling operation. For example, the time filter 1200 may correspond to the time filter 419 of the video processor 410 in Figure 4. The time filter 1200 corrects for flicker, misalignment, and other problems that occur between sequential frames.

[0117] In some aspects, the temporal filter 1200 may be implemented as a neural network configured to determine a sparse motion flow between a previous frame (e.g., the previous downsampled frame 1204) and the current frame (e.g., the current frame 1202). A residual correction block of the neural network may distort the previous frame to generate residual correction information, identify the residual difference between frames, and apply the residual difference to make the current frame temporally consistent with the previous frame.

[0118] Figure 13 is an illustration of an example of a stand-alone frame enhancement network 1300 according to some examples. In one illustrative example, the stand-alone frame enhancement network 1300 may be the same as or similar to the first frame generator 446 of Figure 4.

[0119] The standalone frame augmentation network 1300 (e.g., also referred to as a "keyframe machine learning augmentation network" or "keyframe network") can receive compressed frames (such as YUV frames) as input. In an exemplary example, the system and techniques may perform one or more preprocessing operations to split the YUV frame into its corresponding Y (e.g., luminance), U (e.g., blue chromatic aberration) and V (e.g., red chromatic aberration) components.

[0120] For example, a YUV frame processed by the independent frame enhancement network 1300 may be the same as or similar to a YUV frame classified as an independent frame by frame classifier 414 or frame classifier 444 of FIG. 4 or frame classifier 500 of FIG. 5. The independent frame may be preprocessed and split into a Y-plane luminance component 1302, a U-plane chrominance component 1304, and a V-plane chrominance component 1306.

[0121] In some aspects, the independent frame enhancement network 1300 may include a luminance enhancement subnetwork and a chrominance enhancement subnetwork 1320. The luminance enhancement machine learning network can be used to preserve and / or enhance the details represented in the independent frame input. For example, the luminance enhancement subnetwork can be used to process and enhance the Y-plane luminance component 1302 of the independent frame. In some aspects, the Y-plane luminance component 1302 can be fed as input to a UNet-based luminance enhancement subnetwork, which can be implemented to help preserve image details during image enhancement processing operations. The chrominance enhancement subnetwork 1320 may also be referred to as "ChromaNet". In some aspects, the chrominance enhancement subnetwork 1320 can be implemented based on a residual Conv-Net architecture. The chrominance enhancement subnetwork 1320 can be used to enhance the color information represented in the independent frame input. For example, the chrominance enhancement subnetwork 1320 can be used to enhance, restore, and improve hues to match the original frame. The chrominance enhancement output (e.g., generated by the chrominance enhancement network 1320) can be fused with the hidden state of the luminance enhancement network.

[0122] In some examples, the standalone frame enhancement network 1300 may also include a shallow upsampler 1316 branch for recovering low-frequency features as described above. The shallow upsampler 1316 may implement the functions described in the shallow upsampler 1010, such as using the SR estimation kernel 1318 to correct for various artifacts that occur during SR operation.

[0123] In some examples, the chroma enhancement output can be cascaded with the hidden state of the luminance enhancement network and used to generate the final enhanced independent frame 1350 output by the independent frame enhancement network 1300.

[0124] The luminance enhancement subnetwork (and chroma enhancement subnetwork 1320) may include multiple machine learning layers. For example, the Y-plane luminance component 1302 may be provided as input to a pair of convolutional layers 1362. The convolutional layers 1362 may include one or more convolutional layers, one or more batch normalization (BN) layers, and one or more rectified linear unit (ReLU) layers. The luminance enhancement subnetwork may include multiple cascaded operations or cascaded layers 1364, which may be positioned between pairs of the luminance enhancement subnetwork and / or the remaining machine learning layers of the independent frame enhancement network 1300.

[0125] One or more max-pooling layers 1366 may be provided to perform pooling between the output of one machine layer and the input of another machine learning layer. For example, one or more max-pooling layers 1366 may be set between at least a portion of a convolutional + BN + ReLU layer 1362.

[0126] One or more upconvolutional layers 1368 may be provided to implement the independent frame enhancement network 1300. For example, an upconvolutional layer 1368 may be provided at the output of the chroma enhancement subnetwork 1320, and the upconvolutional layer may be used to fuse or cascade the output of the chroma enhancement subnetwork 1320 with the internal hidden state of the luminance enhancement performed by the independent frame enhancement network 1300.

[0127] After the fusion concatenation of the output of the chroma enhancement subnetwork 1320 and the internal hidden states of the luma enhancement subnetwork, the independent frame enhancement network 1300 may perform one or more additional processing steps. In some aspects, the independent frame enhancement network 1300 may include one or more convolutional layers 1369. For example, the convolutional layer 1369 may be used to generate the hidden state output 1330 of the independent frame enhancement network 1300. The hidden state output 1330 may be different from (and generated after) the internal hidden state fused with the output of the chroma enhancement subnetwork 1320. As will be described in more detail below, the hidden state output 1330 of the independent frame enhancement network 1300 may be provided as input to a dependent frame enhancement network (e.g., dependent frame enhancement network 1400 of FIG. 14) and used to generate (e.g., facilitate) one or more enhanced dependent frames 1460 of FIG. 14.

[0128] The enhanced independent frame 1350 can be generated by the independent frame enhancement network 1300 based on the hidden state output 1330, which represents a fusion concatenation of the hidden states within the luma enhancement subnetwork and the output of the chroma enhancement subnetwork 1320. In some aspects, the independent frame enhancement network 1300 can be trained based on a perceptual quality index. For example, the perceptual quality index (PQI) can be used as a loss function for model pre-training associated with training the independent frame enhancement network 1300. In an exemplary example, the luma enhancement subnetwork and the chroma enhancement subnetwork 1320 can be trained separately. Subsequently, the separately trained luma enhancement subnetwork and the separately trained chroma enhancement subnetwork 1320 can be combined and trained end-to-end. After PQI-based pre-training, GAN-based fine-tuning can be performed to train the independent frame enhancement network 1300 (e.g., after end-to-end training of the combined luma enhancement subnetwork and chroma enhancement subnetwork 1320, GAN-based fine-tuning can be performed).

[0129] Figure 14 is a diagram illustrating an example of a dependent frame enhancement network 1400 according to some examples. The dependent frame enhancement network 1400 (e.g., also referred to as a "dependent frame enhancement network" or "dependent frame network") may receive the Y-plane luminance component 1410 of a YUV frame as input. The YUV frame may be identified as a frame as described above, for example using frame classifier 414 or frame classifier 444 of Figure 4 or frame classifier 500 of Figure 5. In an illustrative example, the system and techniques used for processing YUV frames by the dependent frame enhancement network 1400 may be the same as or similar to those used for classifying YUV frames as dependent frames by frame classifier 414 of Figure 4.

[0130] In some respects, the Y-plane luminance component 1410 can be obtained by splitting a YUV frame (identified as a dependent frame) into its corresponding Y-plane luminance component, U-plane chrominance component, and V-plane chrominance component in the same or similar manner as described above regarding the splitting of YUV independent frames into Y, U, and V components.

[0131] In an exemplary example, the dependent frame enhancement network 1400 receives the Y-plane luminance component 1410 of the dependent frame as input, but does not receive the U-plane or V-plane chrominance components of the dependent frame. In some aspects, the dependent frame enhancement network 1400 may receive the Y-plane luminance component 1410 and the previous frame hidden state 1435, and may use the previous frame hidden state 1435 to recover or otherwise generate accurate color information (e.g., chrominance information) corresponding to the Y-plane luminance component 1410.

[0132] In the previous frame F t-1 In the example of independent frames, the hidden state 1435 of the previous frame can be the same as the hidden state 1330 of the independent frame enhancement network 1300 in Figure 13. (The last sentence appears to be incomplete and possibly refers to a previous frame.)t-1 When it is an independent frame, the hidden state 1435 of the previous frame can be obtained by the dependent frame enhancement network 1400 when processing the previous dependent frame F. t-1 The updated hidden state 1438 generated in time will be described in more detail below. For example, the frame-dependent enhancement network 1400 can skip the color components (e.g., chromaticity components U and V) of the frame-dependent network to improve computational efficiency, and the hidden state features 1435 of the previous frame can be used to generate accurate results with enhanced colors.

[0133] The Y-plane brightness component 1410 can be provided as input to a feature extractor 1440, which generates multiple features corresponding to the scaled-down Y-plane brightness component 1410 of the dependent frame. One or more correlation layers 1442 can receive the multiple features from the feature extractor 1440 and the previous frame hidden state 1435 as input. The correlation layers 1442 can use the previous frame hidden state features 1435 as convolution kernels to perform functional convolution operations. The functional convolution operation compares the features extracted from the Y-plane (e.g., generated by the feature extractor 1440) with the previous frame hidden state features 1435 at each spatial location. The output of one or more correlation layers 1442 can be a correlation output tensor.

[0134] The correlation output tensor generated by the correlation layer 1442 can be provided as input to the cross-attention unit 1444. The cross-attention unit 1444 may include a convolutional + sigmoid activation that takes the correlation output tensor from the correlation layer 1442 as input and generates an attention map as output. In some aspects, the cross-attention unit 1444 may generate an attention map to indicate the mapping between the Y-plane luminance component of the dependent frame and the U-plane and V-plane chrominance components of the previous frame (e.g., based on the hidden state features 1435 of the previous frame).

[0135] Attention maps from cross-attention unit 1444 can be provided as input to feature alignment unit 1446. Feature alignment unit 1446 may additionally receive reduced Y-plane luminance component 1410 as input. Feature alignment unit 1446 applies attention maps (e.g., from cross-attention unit 1444) to features of reduced Y-plane luminance component 1410 while maintaining temporal consistency. In some aspects, feature alignment unit 1446 may apply attention maps to features generated by feature extractor 1440 for reduced Y-plane luminance component 1410.

[0136] The warp engine 1450 may include multiple convolutional layers (e.g., Conv2D) and one or more ReLU layers. The warp engine 1450 may receive the output of the feature alignment unit 1446 as input and can be used to adjust the previous frame's F... t-1(For example, the frame associated with the previous hidden state 1435) and the current frame F t Compensation is made for relative motion between dependent frames (e.g., those processed by the dependent frame enhancement network 1400). For example, the warp engine 1450 can be used to scale and update the previous frame hidden state 1435 to correspond to the current frame (e.g., to the Y-frame luminance component of the current dependent frame). In some respects, the warped hidden state is the same as the updated hidden state 1438 (e.g., the updated hidden state 1438 can be generated by warping the previous frame hidden state 1435 based on the current scaled-down Y-plane luminance component 1410 using the warp engine 1450).

[0137] The scaled-down Y-plane luminance component 1410 of the current dependent frame can be warped using the chroma features of the updated hidden state 1438 and used to generate the enhanced frame output 1452. The enhanced frame output 1452 may have the same pixel size as the scaled-down Y-plane luminance component 1410, the previous frame hidden state 1435, and the updated hidden state 1438 of the current frame.

[0138] In an exemplary example, the dependent frame enhancement network 1400 may include an amplification engine 1455. The amplification engine 1455 may generate an enhanced dependent frame 1460 corresponding to the original resolution dependent frame (e.g., by utilizing a previously estimated SR kernel 1458 corresponding to the original resolution Y-plane luminance component of the dependent frame).

[0139] Figure 15 is a diagram illustrating an example architecture of a frame augmentation machine learning network 1500 based on some examples. The frame augmentation network 1500 may include a DNN 1530. The frame augmentation network 1500 may also include an RNN 1540.

[0140] The input camera feed 1502 can be provided to the frame enhancement network 1500. The input camera feed 1502 can be associated with multiple frames. Multiple frames can be provided in YUV format (e.g., YUV 4:2:0) and various other frame formats.

[0141] In one exemplary example, frame extractor 1504 and frame classifier 1510 may be the same as or similar to frame classifier 414, frame classifier 444, and frame classifier 500 of FIG. 5. In some examples, frame extractor 1504 may be used to generate a selected subset of luminance frames from multiple images.

[0142] (For example, a frame identified by frame extractor 1504) can be passed to frame type identification engine 1510, which determines the similarity S between the current frame Ft and the previous frame Ft-1. In an illustrative example, frame type identification engine 1510 of FIG. 15 can perform operations similar to or the same as those described with respect to FIG. 4 and FIG. 5. Frame type identification engine 1510 can compare the similarity score S between the current frame and the previous frame with a threshold and determine whether the current frame Ft is an independent frame or a dependent frame (e.g., also as previously described with respect to FIG. 4 and FIG. 5).

[0143] If the similarity score S is less than a threshold, the frame type identification engine 1510 identifies the current frame Ft as an independent frame 1520 (e.g., in conjunction with the underlying YUV frame 1521 associated with the identified independent frame 1520, as shown in Figure 15). If the similarity score S is not less than a threshold (e.g., greater than a threshold; greater than or equal to a threshold; etc.), the frame type identification engine 1510 identifies the current frame Ft as a dependent frame 1550.

[0144] YUV frame 1521, identified as independent frame 1520, is provided as input to independent frame DNN 1530, which generates enhanced independent frame 1561 and corresponding hidden state 1535 as output. Enhanced independent frame 1561 may be the same as or similar to enhanced frame output 1350 of FIG. 13. Independent frame hidden state 1535 may be the same as or similar to independent frame hidden state 1330 of FIG. 13. In some aspects, independent frame 1521 is enhanced based on the quantized DNN model used to implement DNN 1530. Independent frame hidden state 1535 may include enhanced luma and chroma features that can be used (e.g., using dependent frame RNN 1540) to perform dependent frame enhancement.

[0145] One or more dependent frames may be associated with the same independent frame. For example, Figure 15 depicts the first frame 1521, which is identified as independent frame 1520. Subsequently, the next frame (e.g., the next frame in the frame sequence obtained from input camera feed 1502) is identified as dependent frame 1550, and the luminance component 1552a is generated and provided to dependent frame RNN 1540.

[0146] The dependent frame RNN 1540 uses the dependent frame luma component 1552a and the previous frame hidden state 1535 (e.g., in this example, the previous frame hidden state 1535 is the independent frame hidden state associated with generating the enhanced independent frame 1561) as input to generate the enhanced frame output of the dependent frame. The output of the dependent frame RNN 1540 has the same downsampling resolution as the scaled-down dependent frame luma component 1552a and can be provided to the upsampling engine 1548. The upsampling engine 1548 of FIG. 15 can be the same as or similar to the upsampler 1010 of FIG. 10. The output of the upsampling engine 1548 is the dependent frame enhanced frame output 1563a, which corresponds to the input dependent frame 1550 / dependent frame luma component 1552a.

[0147] The updated hidden state 1545a of the dependent frame RNN 1540 can be provided as input to potentially process the next frame among multiple frames obtained from the input camera feed 1502. For example, if the next frame is also a dependent frame 1550, the updated hidden state determined for the current frame dependent frame 1552a (e.g., as the hidden state of the previous frame) can be used to perform frame enhancement for the next dependent frame 1552b.

[0148] The process described above can be repeated for each additional dependent frame 1550 identified as the same independent frame 1520 (e.g., each dependent frame in dependent frames 1552a, 1552b, 1552c, 1552d is similar to and associated with the independent frame image 1521). The same dependent frame RNN 1540 can be used to generate corresponding enhanced frame outputs for each of the multiple dependent frames (e.g., 1552a to 1552d).

[0149] In some examples, the dependent frame RNN 1540 uses the independent frame hidden state 1535 to generate the enhanced frame output for the first dependent frame 1552a.

[0150] The dependent frame RNN 1540 can use the updated hidden state 1545a of the first dependent frame 1552a as the previous frame hidden state to generate the enhanced frame output of the second dependent frame 1552b. The updated hidden state 1545b of the second dependent frame 1552b can be used as the previous frame hidden state for generating the enhanced frame output of the third dependent frame 1552c. The updated hidden state 1545c of the third dependent frame 1552c can be used as the previous frame hidden state for generating the enhanced frame output of the fourth dependent frame 1552d.

[0151] When a new independent frame is identified after one or more previous dependent frames, a new hidden state is computed. For example, dependent frames 1552a to 1552d are processed by dependent frame RNN 1540 based on continuous or iterative updates as the initial hidden state of independent frame hidden state 1535 corresponding to independent frame 1521. When a newer frame 1521b is identified as a new (e.g., second) independent frame 1520b, independent frame DNN 1530 generates a completely new hidden state 1535b based on processing the Y, U, and V components of the new independent frame 1521b. For example, the new independent frame hidden state 1535b can be generated without referring to (e.g., independently of) any of the previous independent frame hidden state 1535 or any of the intermediate updated dependent frame hidden states 1545a to 1545d.

[0152] In an illustrative example, the dependent frame augmentation described herein can be performed in a shorter inference time than the independent frame augmentation described herein. For example, the independent frame augmentation DNN 1530 can be associated with an inference time of approximately 10 milliseconds (ms) for generating the augmented output frame 1561 corresponding to the independent frame 1521. The dependent frame augmentation RNN 1540 can be associated with an inference time of approximately 6 milliseconds (ms) for generating the augmented output frame 1563a corresponding to the dependent frame 1552a.

[0153] Figure 16 is a flowchart illustrating an example method 1600 for processing frames using various ML models according to aspects of this disclosure. Method 1600 may be performed by a computing device having an image sensor (such as a mobile wireless communication device, a vehicle (e.g., an autonomous or semi-autonomous vehicle, a wireless-enabled vehicle, and / or other types of vehicles) or a computing device or system of a vehicle, a robotic device or system (e.g., for residential or manufacturing purposes), a camera, an XR device, or another computing device). In one illustrative example, a computing system (e.g., computing system 2000) may be configured to perform all or part of method 1600.

[0154] In some respects, the computing system can be configured to estimate the transfer function using a trained machine learning model. In some respects, the transfer function includes a point spread function. The trained machine learning model can be finely tuned at the computing system. For example, by finely tuning the machine learning model at the computing system, the machine learning model learns unique characteristics of the computing system (e.g., properties associated with the lens of an image sensor, etc.).

[0155] In one aspect, to estimate the transfer function, the computational system can use a downsampler of a trained machine learning model to downsample a second frame captured by an image sensor to generate a second downsampled frame. The computational system can also estimate the super-resolution kernel associated with the second downsampled frame. The computational system can then upsample the second downsampled frame based on the super-resolution kernel to generate a second upsampled frame. The computational system can use a discriminator of the trained machine learning model to determine a first feature map associated with the second downsampled frame, comparing the first feature map with a second feature map associated with the second frame. In one example, the discriminator takes a 32×32 subset from the second downsampled frame and determines whether the trained machine learning model is predicting the same point spread function present in the original image. In one case, the discriminator determines whether the subset is close to true (e.g., ground truth) or false (e.g., fake). Based on this comparison, the computational system can tune the parameters of the downsampler based on the comparison of the first and second feature maps to fine-tune the performance of the trained machine learning model. For example, the computational system can also identify the loss associated with downsampling based on the second frame and the second downsampled frame. In this scenario, the computational system can backpropagate to the trained machine learning model to update its parameters. In one example, the parameters could include the estimated super-resolution kernel.

[0156] In some aspects, the computational system can also estimate the super-resolution kernel. To estimate the super-resolution kernel, the computational system can identify a first feature of the second frame by applying a first convolutional filter to the second frame, and identify a second feature of the second downsampled frame by applying a second convolutional filter to the second downsampled frame. The computational system can compare a first PSF associated with the first feature with a second PSF associated with the second feature, and tune the parameters of the second convolutional filter based on the comparison of the first and second PSFs. These parameters can be associated with the super-resolution kernel.

[0157] On the other hand, the computing system may perform a first operation to upsample the second downsampled frame and generate a first portion of the second upsampled frame. For example, the first portion may represent high-frequency content within the image. The computing system may then perform a second upsampling operation to upsample the second downsampled frame using a super-resolution kernel to obtain a second portion of the second upsampled frame. For example, the second portion may represent low-frequency content within the image. The computing system can then combine the first and second portions into the second upsampled frame. In this case, the estimation of the transfer function can be used to fine-tune the trained machine learning model based on the characteristics of the computing device. In an exemplary example, fine-tuning training may take 30 minutes and is performed once at initial startup, and may not require repetition.

[0158] At box 1602, a computing system (e.g., computing system 2000) may acquire a first frame from an image sensor. For example, the computing system may capture an image for a video conference.

[0159] At box 1604, the computing system may downsample the first frame to a first downsampled frame based on a transfer function associated with the image sensor. This transfer function may be determined, for example, at least in part, in conjunction with fine-tuning training. As noted above, by performing fine-tuning training at the computing system, the machine learning model learns unique characteristics of the computing system (e.g., properties associated with the image sensor's lens, etc.) and can provide forward error correction that will be corrected during decoding.

[0160] As part of box 1604, the computing system can determine the type of the first frame based on the previous frame, and the previous frame can be downsampled to the previous downsampled frame. The type of the first frame includes an independent frame or a dependent frame. The computing system can modify the first downsampled frame based on the type of the first frame. For example, if the first frame includes a dependent frame, temporal effects caused by frame-to-frame motion can be introduced. In the case of a dependent frame, the computing system can also downsample the first frame at box 1604 to correct alignment errors.

[0161] The computing system can also downsample the first frame at box 1604 to correct alignment errors. For example, the computing system is configured to modify the first downsampled frame when the first frame corresponds to a dependent frame. In one aspect, the computing system can determine the optical flow between the previous frame and the first frame, and distort the previous downsampled frame based on that optical flow to generate a distorted frame. The computing system can also determine a residual error based on a comparison between the previous downsampled frame and the first downsampled frame, and update the first downsampled frame based on the residual error. In this case, the residual error may produce temporal effects, such as the previously described temporal misalignment. In this case, the computing system corrects for the residual error and prevents temporal artifacts.

[0162] At box 1606, the computing system can encode the first downsampled frame. In one aspect, the video encoder of the computing system is configured to encode the first downsampled frame.

[0163] Figure 17 is a flowchart illustrating an example method 1700 for processing frames using various ML models according to aspects of this disclosure. Method 1700 may be performed by a computing device having an image sensor (such as a mobile wireless communication device, a vehicle (e.g., an autonomous or semi-autonomous vehicle, a wireless-enabled vehicle, and / or other types of vehicles) or a computing device or system of a vehicle, a robotic device or system (e.g., for residential or manufacturing purposes), a camera, an XR device, or another computing device). In an illustrative example, a computing system (e.g., computing system 2000) may be configured to perform all or part of method 1700.

[0164] At box 1702, the computing system (e.g., computing system 2000) may receive the first frame. For example, the computing system may include a wireless communication transceiver that receives images from a remote device. In another example, the computing system may store the first frame as part of a multimedia file comprising multiple frames. In some aspects, the first frame is decoded using a video decoder prior to operations preceding box 1704.

[0165] At box 1704, the computing system can determine the type of the first frame based on the previous frame. The type of the first frame includes an independent frame or a dependent frame. As described in detail above, the similarity of the first frame to the previous frame can be used to identify whether the first frame is independent or dependent.

[0166] At box 1706, the computational system may generate a first upsampled frame based on the type of the first frame. In one aspect, as part of box 1706, the computational system may upsample a first component of the first frame into a first part based on a super-resolution kernel, corresponding to the first frame and an independent frame, and upsample the first component and at least a second component of the first frame into a second part. For example, the first component may be the luminance (or Y) component of the first frame. The computational system may form hidden state components associated with the next frame from the second part and combine the first part and the second part into the first upsampled frame. The hidden state components are applied to the next frame to generate the next upsampled frame. For example, the hidden state components may be blue luminance (U) and red luminance (V). In this case, the color components are added last to the frame to maintain computational power.

[0167] In some aspects, the computational system can determine the correlation between the hidden state component associated with the previous frame and the first component of the first frame. The computational system can generate an attention map based on features of the hidden state component and the first component from the first frame, and blend the first component of the first frame into an updated component based on the correlation and the attention map. In some aspects, the computational system can blend at least a second component of the previous frame with the updated component to form a first upsampled frame.

[0168] The computing system may also include a display. The computing system (e.g., one or more processors) may provide upsampled frames to the display for output.

[0169] In some examples, the methods described herein (e.g., method 1600, method 1700, and / or other methods described herein) may be performed by a computing device or apparatus. In one example, method 1700 may be performed by a computing device having the computing architecture of the computing system 2000 shown in FIG20.

[0170] Methods 1600 and 1700 are illustrated as logic flowcharts, which represent the order of operations that can be implemented in hardware, computer instructions, or combinations thereof. In the context of computer instructions, each operation represents a computer-executable instruction stored on one or more computer-readable storage media that performs the described operation when executed by one or more processors. Generally, computer-executable instructions include routines, programs, objects, components, data structures, etc., that perform a specific function or implement a specific data type. The order in which the operations are described is not intended to be construed as limiting, and any number of the described operations can be combined in any order and / or in parallel to implement the method.

[0171] Methods 1600, 1700, and / or other methods or processes described herein may be executed under the control of one or more computer systems configured with executable instructions, and may be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) that executes jointly on one or more processors, implemented in hardware, or implemented in a combination thereof. As noted above, the code may be stored on a computer-readable or machine-readable storage medium, for example, in the form of a computer program comprising multiple instructions executable by one or more processors. The computer-readable or machine-readable storage medium may be non-transitory.

[0172] As noted above, various aspects of this disclosure can be implemented using machine learning models or systems. Figure 18 is an exemplary example of a deep learning neural network 1800 that can be used to implement the machine learning-based alignment prediction described above. Input layer 1820 includes input data. In one exemplary example, input layer 1820 may include data representing pixels of an input video frame. Neural network 1800 includes multiple hidden layers 1822a, 1822b through 1822n. Hidden layers 1822a, 1822b through 1822n include “n” hidden layers, where “n” is an integer greater than or equal to one. Multiple hidden layers can be made to include as many layers as needed for a given application. Neural network 1800 also includes an output layer 1824 that provides the output of the processing performed by hidden layers 1822a, 1822b through 1822n. In one exemplary example, output layer 1824 may provide a classification of objects in an input video frame. Categories can include those that identify the type of activity (e.g., looking up, looking down, closing eyes, yawning, etc.).

[0173] Neural network 1800 is a multi-layer neural network composed of interconnected nodes. Each node can represent a piece of information. The information associated with these nodes is shared between different layers, and each layer retains information while processing it. In some cases, neural network 1800 may include a feedforward network, in which case there are no feedback connections where the network's output is fed back into itself. In some cases, neural network 1800 may include a recurrent neural network, which may have loops that allow information to be carried across nodes as input is read.

[0174] Information can be exchanged between nodes through node-to-node interconnections between layers. Nodes in input layer 1820 can activate the node set in the first hidden layer 1822a. For example, as shown, each input node in input layer 1820 is connected to each node in the first hidden layer 1822a. Nodes in the first hidden layer 1822a can transform the information of each input node by applying an activation function to the input node information. The information derived from this transformation can then be passed to nodes in the next hidden layer 1822b, activating those nodes, which can then perform their own specified functions. Example functions include convolution, upsampling, data transformation, and / or any other suitable functions. The output of hidden layer 1822b can then activate nodes in the next hidden layer, and so on. The output of the last hidden layer 1822n can activate one or more nodes in output layer 1824, at which the output is provided. In some cases, although a node in neural network 1800 (e.g., node 1826) is shown as having multiple output lines, the node has a single output and is shown as all lines output from the node representing the same output value.

[0175] In some cases, each node or the interconnection between nodes may have weights, which are a set of parameters derived from the training of the neural network 1800. Once the neural network 1800 is trained, it can be called a trained neural network, which can be used to classify one or more activities. For example, the interconnection between nodes may represent a piece of information about what the interconnected nodes have learned. The interconnection may have tunable numerical weights that can be tuned (e.g., based on the training dataset), allowing the neural network 1800 to adapt to the input and learn as more and more data is processed.

[0176] The neural network 1800 is pre-trained to process features from the data in the input layer 1820 using different hidden layers 1822a, 1822b to 1822n, in order to provide an output through the output layer 1824. In an example where the neural network 1800 is used to identify features and / or objects in an image, the neural network 1800 can be trained using training data that includes both images and labels, as described above. For example, training images can be input into the network, with each training frame having a label indicating features in the image (for a feature extraction machine learning system) or a label indicating the category of activity in each frame. In an example where object classification is used for illustrative purposes, a training frame may include an image of the number 2, in which case the label of the image could be [0 0 1 0 0 0 0 0 0 0].

[0177] In some cases, the Neural Network 1800 can use a training process called backpropagation to adjust the weights of its nodes. As noted above, the backpropagation process includes forward pass, loss function, back pass, and weight update. For each training iteration, forward pass, loss function, back pass, and parameter update are performed. This process can be repeated a certain number of iterations for each training image set until the Neural Network 1800 is trained well enough that the weights of each layer are accurately tuned.

[0178] For an example of identifying features and / or objects in an image, the forward pass may include passing a training image through a neural network 1800. The weights are initially randomized before training the neural network 1800. As an illustrative example, a frame may include a numerical array representing pixels of an image. Each number in the array may include a value from 0 to 255 describing the intensity of the pixel at that location in the array. In one example, the array may include a 28×28×3 numerical array with 28 rows and 28 columns of pixels and 3 color components (such as red, green, and blue, or lightness and two chroma components, etc.).

[0179] As noted above, for the first training iteration of the Neural Network 1800, the output will likely include values ​​due to the weights being randomly chosen during initialization, without prioritizing any particular class. For example, if the output is a vector with probabilities that an object includes different classes, the probability values ​​for each class may be equal or at least very similar (e.g., for ten possible classes, each class may have a probability value of 0.1). Using the initial weights, the Neural Network 1800 cannot determine low-level features and therefore cannot make an accurate determination of what the object's classification might be. A loss function can be used to analyze the error in the output. Any suitable loss function can be defined, such as cross-entropy loss. Another example of a loss function includes mean squared error (MSE), which is defined as... The loss can be set to equal to The value of .

[0180] For the first training image, the loss (or error) will be high because the actual value will be significantly different from the predicted output. The goal of training is to minimize the loss so that the predicted output matches the training labels. The Neural Network 1800 performs backpropagation by determining which inputs (weights) contribute most to the network's loss, and the weights can be adjusted to reduce and eventually minimize the loss. The derivative of the loss with respect to the weights (denoted as dL / dW, where W is the weight at a specific layer) can be calculated to determine the weights that contribute most to the network's loss. After calculating the derivative, a weight update can be performed by updating all the weights of the filter. For example, the weights can be updated so that they change in the opposite direction of the gradient. A weight update can be represented as... Where w represents the weight, w i Let represent the initial weights, and η represent the learning rate. The learning rate can be set to any suitable value, where a high learning rate includes larger weight updates, while a lower value indicates smaller weight updates.

[0181] Neural Network 1800 can include any suitable deep network. An example includes a Convolutional Neural Network (CNN), which includes an input layer and an output layer, with multiple hidden layers between them. The hidden layers of a CNN include a series of convolutional layers, non-linear layers, pooling layers (for downsampling), and fully connected layers. Neural Network 1800 can include any other deep network besides CNNs, such as autoencoders, deep belief networks (DBNs), recurrent neural networks (RNNs), and other examples.

[0182] Figure 19 is an illustrative example of a CNN 1900. The input layer 1920 of the CNN 1900 includes data representing an image or frame. For example, the data may include a numerical array representing pixels of an image, where each number in the array includes a value from 0 to 255 describing the pixel intensity at that location in the array. Using the previous example above, the array may include a 28×28×3 numerical array with 28 rows and 28 columns of pixels and 3 color components (e.g., red, green, and blue, or lightness and two chroma components, etc.). The image may be passed through a convolutional hidden layer 1922a, an optional non-linear activation layer, a pooling hidden layer 1922b, and a fully connected hidden layer 1922c to obtain an output at the output layer 1924. Although only one hidden layer of each type is shown in Figure 19, those skilled in the art will understand that multiple convolutional hidden layers, non-linear layers, pooling hidden layers, and / or fully connected layers may be included in the CNN 1900. As previously described, the output may indicate a single category of an object, or may include the probability that best describes the category of an object in the image.

[0183] The first layer of CNN 1900 is a convolutional hidden layer 1922a. Convolutional hidden layer 1922a analyzes the image data input to layer 1920. Each node in convolutional hidden layer 1922a is connected to a region of the input image called a receptive field (pixel). Convolutional hidden layer 1922a can be thought of as one or more filters (each filter corresponding to a different activation or feature map), where each convolutional iteration of the filter is a node or neuron in convolutional hidden layer 1922a. For example, the region of the input image covered by the filter at each convolutional iteration will be the filter's receptive field. In an exemplary example, if the input image consists of a 28×28 array, and each filter (and its corresponding receptive field) is a 5×5 array, then there will be 24×24 nodes in convolutional hidden layer 1922a. Each connection between a node and its receptive field learns weights, and in some cases, learns an overall bias, allowing each node to learn to analyze its specific local receptive field in the input image. Each node in hidden layer 1922a will have the same weights and biases (referred to as shared weights and shared biases). For example, the filter has a weight (digital) array and the same depth as the input. For the video frame example, the filter will have a depth of 3 (based on the three color components of the input image). An exemplary example size of the filter array is 5×5×3, corresponding to the size of the receptive field of the node.

[0184] The convolutional property of the convolutional hidden layer 1922a is due to the fact that each node of the convolutional layer is applied to its corresponding receptive field. For example, the filters of the convolutional hidden layer 1922a may begin at the top left corner of the input image array and may convolve around the input image. As noted above, each convolutional iteration of the filter can be considered as a node or neuron of the convolutional hidden layer 1922a. In each convolutional iteration, the value of the filter is multiplied by the corresponding number of original pixel values ​​of the image (e.g., a 5×5 filter array is multiplied by a 5×5 array of input pixel values ​​at the top left corner of the input image array). The multiplications from each convolutional iteration can be summed to obtain the sum of that iteration or node. Next, the process continues at the next position in the input image based on the receptive field of the next node in the convolutional hidden layer 1922a. For example, the filter may move a step size (called stride) to the next receptive field. The stride may be set to 1 or other suitable amounts. For example, if the stride is set to 1, the filter will move 1 pixel to the right in each convolutional iteration. Processing the filter at each unique location in the input volume produces a number representing the filter result at that location, thus producing a sum value determined for each node of the convolutional hidden layer 1922a.

[0185] The mapping from the input layer to the convolutional hidden layer 1922a is called an activation map (or feature map). An activation map includes values ​​for each node representing the filter results at each location of the input volume. Activation maps can include arrays containing various sums of values ​​produced by each iteration of the filter over the input volume. For example, if a 5×5 filter is applied to each pixel of a 28×28 input image (with a stride of 1), the activation map would consist of a 24×24 array. The convolutional hidden layer 1922a can include several activation maps to identify multiple features in the image. The example shown in Figure 19 includes three activation maps. Using three activation maps, the convolutional hidden layer 1922a can detect three different kinds of features, each of which is detectable across the entire image.

[0186] In some examples, nonlinear hidden layers can be applied after the convolutional hidden layer 1922a. Nonlinear layers can be used to introduce nonlinearity into a system that has already computed linear operations. An exemplary example of a nonlinear layer is the Corrected Linear Unit (ReLU) layer. A ReLU layer applies the function f(x) = max(0, x) to all values ​​in the input volume, which changes all negative activations to 0. Therefore, ReLU can increase the nonlinearity of the CNN 1900 without affecting the receptive field of the convolutional hidden layer 1922a.

[0187] A pooling hidden layer 1922b can be applied after the convolutional hidden layer 1922a (and, in use, after the non-linear hidden layer). The pooling hidden layer 1922b is used to simplify the information in the output of the convolutional hidden layer 1922a. For example, the pooling hidden layer 1922b can take each activation map from the output of the convolutional hidden layer 1922a and use a pooling function to generate a condensed activation map (or feature map). Max pooling is an example of a function performed by the pooling hidden layer. The pooling hidden layer 1922a uses other forms of pooling functions, such as average pooling, L2 norm pooling, or other suitable pooling functions. Pooling functions (e.g., max pooling filters, L2 norm filters, or other suitable pooling filters) are applied to each activation map included in the convolutional hidden layer 1922a. In the example shown in Figure 19, three pooling filters are used for the three activation maps in the convolutional hidden layer 1922a.

[0188] In some examples, max pooling can be used by applying a max pooling filter (e.g., of size 2×2) with a stride (e.g., equal to the dimension of the filter, such as stride 2) to the activation map output from convolutional hidden layer 1922a. The output from the max pooling filter includes the maximum number in each sub-region of the filter convolution. Using a 2×2 filter as an example, each unit in the pooling layer summarizes a region of 2×2 nodes from the previous layer (each node being a value in the activation map). For example, four values ​​(nodes) in the activation map will be analyzed by the 2×2 max pooling filter at each iteration of the filter, with the maximum of the four values ​​being output as the "maximum" value. If such a max pooling filter is applied to an activation filter of size 24×24 nodes from convolutional hidden layer 1922a, the output from pooling hidden layer 1922b will be an array of 12×12 nodes.

[0189] In some examples, L2 norm pooling filters may also be used. L2 norm pooling filters involve calculating the square root of the sum of squares of the values ​​in a 2×2 region (or other suitable region) of the activation map (instead of calculating the maximum value as done in max pooling) and using the calculated value as the output.

[0190] Intuitively, pooling functions (e.g., max pooling, L2-norm pooling, or other pooling functions) determine whether a given feature is found anywhere within a region of an image, discarding the exact location information. This can be done without affecting the results of feature detection, because once a feature has been found, its exact location is less important than its approximate location relative to other features. Max pooling (and other pooling methods) offers the benefit of having far fewer pooling features, thus reducing the number of parameters required in subsequent layers of the CNN 1800.

[0191] The final connection in the network is a fully connected layer that connects each node from the pooling hidden layer 1822b to each output node in the output layer 1824. Using the example above, the input layer comprises 28×28 nodes encoding the pixel intensity of the input image, the convolutional hidden layer 1822a comprises 3×24×24 hidden feature nodes based on applying a 5×5 local receptive field (for filtering) to three activation maps, and the pooling hidden layer 1822b comprises a layer of 3×12×12 hidden feature nodes based on applying a max-pooling filter to a 2×2 region on each of the three feature maps. Extending this example, the output layer 1824 may comprise ten output nodes. In such an example, each node of the 3×12×12 pooling hidden layer 1822b is connected to each node of the output layer 1824.

[0192] The fully connected layer 1822c takes the output of the previous pooling hidden layer 1822b (which should represent the activation map of high-level features) and determines the features most relevant to a particular class. For example, the fully connected layer 1822c can determine the high-level features most relevant to a particular class and may include weights (nodes) for those high-level features. The product between the weights of the fully connected layer 1822c and the pooling hidden layer 1822b can be computed to obtain the probabilities for different classes. For example, if CNN 1800 is being used to predict whether an object in a video frame is a person, there will be high values ​​in the activation map representing the high-level features of a person (e.g., two legs, a face at the top of the object, two eyes at the upper left and upper right of the face, a nose in the middle of the face, a mouth at the bottom of the face, and / or other features common to people).

[0193] In some examples, the output from output layer 1824 may include an M-dimensional vector (M=10 in the previous example). M indicates the number of classes from which CNN 1800 must choose when classifying objects in an image. Other example outputs may also be provided. Each number in the M-dimensional vector represents the probability that an object belongs to a certain class. In an exemplary example, if the 10-dimensional output vector represents objects of ten different classes as [0 0 0.05 0.8 0 0.15 0 0 0 0], then the vector indicates a 5% probability that the image is an object of the third class (e.g., a dog), an 80% probability that the image is an object of the fourth class (e.g., a person), and a 15% probability that the image is an object of the sixth class (e.g., a kangaroo). The probability of a class can be considered as the confidence level that an object is part of that class.

[0194] Figure 20 is an illustration of an example system for implementing certain aspects of the present technology. Specifically, Figure 20 illustrates an example of a computing system 2000, which can be any computing device, such as constituting an internal computing system, a remote computing system, a camera, or any component thereof, wherein the components of the system communicate with each other using connection 2005. Connection 2005 can be a physical connection using a bus, or a direct connection to a processor 2010, such as in a chipset architecture. Connection 2005 can also be a virtual connection, a networking connection, or a logical connection.

[0195] In some aspects, the computing system 2000 is a distributed system, wherein the functions described herein can be distributed across a data center, multiple data centers, a peer-to-peer network, etc. In some aspects, one or more of the described system components represent a plurality of such components that each perform a function described for some or all of the functions. In some aspects, the components can be physical or virtual devices.

[0196] Example computing system 2000 includes at least one processing unit (CPU or processor) 2010 and a connection 2005 that couples various system components, including system memory 2015 (such as ROM 2020 and RAM 2025), to processor 2010. Computing system 2000 may include a cache 2012 of high-speed memory that is directly connected to, closely proximate to, or integrated into processor 2010.

[0197] Processor 2010 may include any general-purpose processor and hardware or software services (such as services 2032, 2034, and 2036 stored in storage device 2030 and configured to control processor 2010), as well as dedicated processors in which software instructions are incorporated into the actual processor design. Processor 2010 may be a substantially completely independent computing system containing multiple cores or processors, buses, memory controllers, caches, etc. Multi-core processors may be symmetric or asymmetric.

[0198] To enable user interaction, the computing system 2000 includes input devices 2045 that can represent any number of input mechanisms, such as a microphone for voice, a touch-sensitive screen for gesture or graphical input, a keyboard, a mouse, motion input, voice input, etc. The computing system 2000 may also include output devices 2035 that can be one or more of a plurality of output mechanisms. In some instances, a multi-mode system allows the user to provide multiple types of input / output to communicate with the computing system 2000. The computing system 2000 may include a communication interface 2040, which typically controls and manages user input and system output. The communication interface can perform or facilitate the receipt and / or transmission of wired or wireless communications using wired and / or wireless transceivers, including utilizing audio jacks / plugs, microphone jacks / plugs, Universal Serial Bus (USB) ports / plugs, Apple... ® Lightning ® Ports / plugs, Ethernet ports / plugs, fiber optic ports / plugs, dedicated wired ports / plugs, Bluetooth ® Wireless signal transmission, BLE wireless signal transmission, IBEACON ® Wireless signal transmission, RFID wireless signal transmission, Near Field Communication (NFC) wireless signal transmission, Dedicated Short Range Communication (DSRC) wireless signal transmission, 802.11 WiFi wireless signal transmission, WLAN signal transmission, Visible Light Communication (VLC), Microwave Access Global Interoperability (WiMAX), IR communication wireless signal transmission, Public Switched Telephone Network (PSTN) signal transmission, Integrated Services Digital Network (ISDN) signal transmission, 3G / 4G / 5G / LTE cellular data network wireless signal transmission, ad hoc network signal transmission, radio wave signal transmission, microwave signal transmission, infrared signal transmission, visible light signal transmission, ultraviolet light signal transmission, wireless signal transmission along the electromagnetic spectrum, or combinations thereof. The communication interface 2040 may also include one or more Global Navigation Satellite System (GNSS) receivers or transceivers used to determine the location of the computing system 2000 based on one or more signals received from one or more satellites associated with one or more GNSS systems. GNSS systems include, but are not limited to, the US GPS, Russia's GLONASS, China's BeiDou Navigation Satellite System (BDS), and Europe's Galileo GNSS. There are no limitations on operation on any particular hardware configuration, and therefore the underlying features here can be easily replaced to obtain improved hardware or firmware configurations as they are developed.

[0199] Storage device 2030 may be a non-volatile and / or non-transitory and / or computer-readable storage device, and may be a hard disk or other type of computer-readable medium capable of storing data accessible by a computer, such as magnetic tape, flash memory cards, solid-state storage devices, digital versatile optical discs, cartridges, floppy disks, hard disks, magnetic tapes, magnetic stripes, any other magnetic storage media, flash memory, memristor memory, any other solid-state storage, CD-ROM discs, rewritable CD discs, digital video discs (DVD discs), Blu-ray discs (BDD discs), holographic discs, another optical medium, secure digital storage (SD) cards, micro-secure digital storage (microSD) cards, Memory Stick. ® Cards, smart card chips, EMV chips, Subscriber Identity Module (SIM) cards, mini / micro / nano / micro SIM cards, another integrated circuit (IC) chip / card, RAM, static RAM (SRAM), dynamic RAM (DRAM), ROM, programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash EPROM, cache memory (L1 / L2 / L3 / L4 / L5 / L#), resistive random access memory (RRAM / ReRAM), phase-change memory (PCM), spin-transfer torque RAM (STT-RAM), another memory chip or cassette and / or combinations thereof.

[0200] Storage device 2030 may include software services, servers, services, etc., which enable the system to perform functions when the code defining such software is executed by processor 2010. In some aspects, hardware services performing specific functions may include software components for performing functions stored in a computer-readable medium connected to necessary hardware components such as processor 2010, connection 2005, output device 2035, etc. The term "computer-readable medium" includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other media capable of storing, containing, or carrying instructions and / or data. Computer-readable media may include non-transitory media in which data can be stored and which does not include carrier waves and / or transient electronic signals propagating wirelessly or over a wired connection. Examples of non-transitory media may include, but are not limited to, magnetic disks or magnetic tapes, optical storage media (such as CDs or DVDs), flash memory, memory, or memory devices. Computer-readable media may store code and / or machine-executable instructions thereon, which may represent procedures, functions, subroutines, programs, routines, subroutines, modules, software packages, classes, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or hardware circuitry by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc., may be passed, forwarded, or transmitted via any suitable means, including memory sharing, message passing, token passing, network transmission, etc.

[0201] In some examples, the methods described herein (e.g., method 1600, method 1700, and / or other methods described herein) may be performed by a computing device or apparatus. In one example, method 1600 may be performed by a computing device having the computing architecture of the computing system 2000 shown in FIG20.

[0202] In some cases, a computing device or apparatus may include various components such as one or more input devices, one or more output devices, one or more processors, one or more microprocessors, one or more microcomputers, one or more cameras, one or more sensors, and / or other components configured to perform the steps of the methods described herein. In some examples, a computing device may include a display, one or more network interfaces configured to transmit and / or receive data, any combination thereof, and / or other components. One or more network interfaces may be configured to transmit and / or receive wired and / or wireless data, including data according to 3G, 4G, 5G, and / or other cellular standards, data according to the Wi-Fi (802.11x) standard, and data according to Bluetooth. ™ Standard data, data according to IP standards, and / or other types of data.

[0203] Components that enable the implementation of a computing device in a circuit. For example, each component may include and / or may be implemented using electronic circuits or other electronic hardware (which may include one or more programmable electronic circuits (e.g., microprocessors, GPUs, DSPs, CPUs, and / or other suitable electronic circuits)), and / or may include and / or may be implemented using computer software, firmware, or any combination thereof to perform the various operations described herein.

[0204] In some respects, computer-readable storage devices, media, and memories may include cables or wireless signals containing bit streams, etc. However, when referred to, non-transitory computer-readable storage media explicitly exclude media such as energy, carrier signals, electromagnetic waves, and the signals themselves.

[0205] Specific details are provided in the foregoing description to provide a thorough understanding of the aspects and examples presented herein. However, those skilled in the art will understand that these aspects can be practiced without these specific details. For clarity, in some cases, the technology may be presented as comprising individual functional blocks, including functional blocks comprising devices, device components, steps or routines in methods embodied in software or a combination of hardware and software. Additional components may be used in addition to those shown in the figures and / or described herein. For example, circuits, systems, networks, processes and other components may be shown as components in block diagram form to avoid obscuring these aspects in unnecessary detail. In other cases, well-known circuits, processes, algorithms, structures and techniques may be shown without unnecessary detail to avoid obscuring the aspects.

[0206] The various aspects described above can be presented as processes or methods, depicted as flowcharts, diagrams, data flow graphs, structure diagrams, or block diagrams. While a flowchart may describe operations as a sequential process, many operations within an operation can be executed in parallel or concurrently. Furthermore, the order of operations can be rearranged. A process terminates when its operations are completed, but a process may have additional steps not included in the accompanying diagrams. A process can correspond to a method, function, procedure, subroutine, subroutine, etc. When a process corresponds to a function, its termination may correspond to the function returning to the calling function or the main function.

[0207] The processes and methods described in the examples above can be implemented using stored computer-executable instructions or computer-executable instructions otherwise obtainable from a computer-readable medium. Such instructions may include, for example, instructions and data that configure, or otherwise configure, a general-purpose computer, special-purpose computer, or processing device to perform a function or group of functions. The portion may be accessible via a network of the computer resources used. The computer-executable instructions may be, for example, binary, intermediate format instructions, such as assembly language, firmware, source code, etc. Examples of computer-readable media that can be used to store instructions, information used, and / or information created during the methods according to the described examples include disks or optical discs, flash memory, USB devices with non-volatile memory, networked storage devices, etc.

[0208] Devices implementing the processes and methods according to these disclosures may include hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof, and may take any of a variety of form factors. When implemented as software, firmware, middleware, or microcode, program code or code segments (e.g., computer program products) for performing necessary tasks may be stored in a computer-readable or machine-readable medium. A processor may perform the necessary tasks. Typical examples of form factors include laptop computers, smartphones, mobile phones, tablet devices, or other small form factor personal computers, personal digital assistants, rack-mounted devices, standalone devices, etc. The functionality described herein may also be embodied in peripheral devices or interlocking cards. By further example, such functionality may also be implemented on circuit boards of different chips or different processes executed on a single device.

[0209] Instructions, media for delivering such instructions, computing resources for executing them, and other structures for supporting such computing resources are example components for providing the functionality described in this disclosure.

[0210] In the foregoing description, aspects of this application have been described with reference to their specific aspects, but those skilled in the art will recognize that this application is not limited thereto. Therefore, although illustrative aspects of this application have been described in detail herein, it is to be understood that the inventive concept can be implemented and employed in a variety of other ways, and the appended claims are not intended to be construed as including such variations unless limited by prior art. The various features and aspects of the applications described above may be used individually or in combination. Furthermore, aspects may be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of this specification. Therefore, the specification and drawings should be considered illustrative rather than restrictive. For illustrative purposes, the methods are described in a particular order. It should be understood that, in alternative aspects, the methods may be performed in a different order than described.

[0211] Those skilled in the art will understand that, without departing from the scope of this description, the less than (“<”) and greater than (“>”) symbols or terms used herein may be replaced with less than or equal to (“>”) respectively. ") and greater than or equal to (" The symbol ) is used instead.

[0212] When a component is described as being “configured” to perform certain operations, such configuration can be achieved, for example, by designing electronic circuits or other hardware to perform the operations, by programming programmable electronic circuits (e.g., microprocessors or other suitable electronic circuits) to perform the operations, or any combination thereof.

[0213] The phrase “coupled to” means any component that is physically connected directly or indirectly to another component, and / or any component that communicates directly or indirectly with another component (e.g., connected to another component via a wired or wireless connection and / or other suitable communication interface).

[0214] Claim language or other languages ​​that state "at least one of" and / or "one or more of" in a set indicate that one member of the set or multiple members of the set (in any combination) satisfy the claim. For example, claim language stating "at least one of A and B" or "at least one of A or B" means A, B, or A and B. In another example, claim language stating "at least one of A, B, and C" or "at least one of A, B, or C" means A, B, C, or A and B, or A and C, or B and C, A and B and C, or any repetition is information or data (e.g., A and A, B and B, C and C, A and A and B, etc.), or any other ordering, repetition, or combination of A, B, and C. The language "at least one of" and / or "one or more of" in a set does not limit the set to the items listed in the set. For example, the language of a claim stating "at least one of A and B" or "at least one of A or B" may refer to A, B, or A and B, and may additionally include items not listed in the set of A and B. The phrases "at least one" and "one or more" are used interchangeably herein.

[0215] Claim language or other languages ​​that state "at least one processor, at least one processor is configured to," "at least one processor is configured to," "one or more processors, one or more processors are configured to," "one or more processors are configured to," etc., indicate that one or more processors (in any combination) can perform associated operations. For example, claim language stating "at least one processor, at least one processor is configured to: X, Y, and Z" means that a single processor can be used to perform operations X, Y, and Z; or that multiple processors are each assigned a specific subset of tasks of operations X, Y, and Z, such that the multiple processors together perform X, Y, and Z; or that a group of multiple processors work together to perform operations X, Y, and Z. In another example, claim language stating "at least one processor, at least one processor is configured to: X, Y, and Z" could mean that any single processor can perform only at least one subset of operations X, Y, and Z.

[0216] When referring to one or more elements that perform functions (e.g., steps of a method), one element may perform all functions, or more than one element may jointly perform these functions. When more than one element jointly performs these functions, each function does not need to be performed by every single element (e.g., different functions may be performed by different elements), and / or each function does not need to be performed by only one element as a whole (e.g., different elements may perform different sub-functions of a function). Similarly, when referring to one or more elements configured to cause another element (e.g., a device) to perform functions, one element may be configured to cause another element to perform all functions, or more than one element may be jointly configured to cause another element to perform these functions.

[0217] When referring to an entity that performs or is configured to perform functions (e.g., steps of a method) (e.g., any entity or device described herein), the entity may be configured to cause one or more elements (individually or collectively) to perform those functions. One or more components of the entity may include at least one memory, at least one processor, at least one communication interface, another component configured to perform one or more of those functions, and / or any combination thereof. When referring to an entity that performs functions, the entity may be configured to cause one component to perform all functions, or to cause more than one component to perform those functions collectively. When the entity is configured to cause more than one component to perform those functions collectively, each function does not need to be performed by every single component (e.g., different functions may be performed by different components), and / or each function does not need to be performed by only one component as a whole (e.g., different components may perform different sub-functions of a function).

[0218] The various exemplary logic blocks, modules, circuits, and algorithm steps described in conjunction with the aspects disclosed herein can be implemented as electronic hardware, computer software, firmware, or combinations thereof. To clearly illustrate this interchangeability between hardware and software, various exemplary components, blocks, modules, circuits, and steps have been broadly described above in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the specific application and the design constraints imposed on the overall system. Those skilled in the art may implement the described functionality in different ways for each specific application, but such implementation decisions should not be construed as departing from the scope of this application.

[0219] The techniques described herein can also be implemented in electronic hardware, computer software, firmware, or any combination thereof. Such techniques can be implemented in any of a variety of devices, such as general-purpose computers, wireless communication devices (mobile phones), or integrated circuit devices with multiple uses, including applications in wireless communication devices (mobile phones) and other devices. Any feature described as a module or component can be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, these techniques can be implemented at least in part by a computer-readable data storage medium comprising program code including instructions that, when executed, perform one or more of the methods described above. The computer-readable data storage medium can form part of a computer program product, which may include packaging materials. The computer-readable medium may include memory or data storage media, such as RAM (e.g., Synchronous Dynamic Random Access Memory (SDRAM)), ROM, non-volatile random access memory (NVRAM), EEPROM, flash memory, magnetic or optical data storage media, etc. Additionally or alternatively, the technology may be implemented at least in part by a computer-readable communication medium that carries or conveys program code in the form of instructions or data structures that can be accessed, read and / or executed by a computer, such as propagated signals or waves.

[0220] The program code can be executed by a processor, which may include one or more processors, such as one or more DSPs, general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Such processors can be configured to perform any of the techniques described in this disclosure. A general-purpose processor may be a microprocessor; however, in alternatives, the processor may be any conventional processor, controller, microcontroller, or state machine. The processor may also be implemented as a combination of computing devices, such as a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors combined with a DSP core, or any other such configuration. Therefore, as used herein, the term "processor" may refer to any of the foregoing structures, any combination of the foregoing structures, or any other structure or means suitable for implementing the techniques described herein.

[0221] Exemplary aspects of this disclosure include: Aspect 1. An apparatus configured to process one or more frames, the apparatus comprising: one or more memories; and one or more processors coupled to the one or more memories and configured to: acquire a first frame from an image sensor; downsample the first frame to a first downsampled frame based on a transfer function associated with the image sensor; and encode the first downsampled frame.

[0222] Aspect 2. The apparatus according to aspect 1, wherein the one or more processors are configured to estimate the transfer function using a trained machine learning model.

[0223] Aspect 3. The apparatus according to aspect 2, wherein the one or more processors are configured to: downsample a second frame captured by the image sensor using a downsampler of the trained machine learning model to generate a second downsampled frame; estimate a super-resolution kernel associated with the second downsampled frame; and upsample the second downsampled frame based on the super-resolution kernel to generate a second upsampled frame.

[0224] Aspect 4. The apparatus according to aspect 3, wherein the one or more processors are configured to: use a discriminator of the trained machine learning model to determine a first feature map associated with the second downsampled frame; compare the first feature map with a second feature map associated with the second frame; and tune the parameters of the downsampler based on the comparison of the first feature map and the second feature map.

[0225] Aspect 5. The apparatus according to aspect 4, wherein the parameters include an estimated super-resolution kernel.

[0226] Aspect 6. The apparatus according to any one of Aspects 3 to 5, wherein the one or more processors are configured to: identify a loss associated with the downsampling of the second frame based on the second frame and the second downsampled frame.

[0227] Aspect 7. The apparatus according to any one of Aspects 3 to 6, wherein, in order to estimate the super-resolution kernel, the one or more processors are configured to: identify a first feature of the second frame based on applying a first convolutional filter to the second frame; identify a second feature of the second downsampled frame based on applying a second convolutional filter to the second downsampled frame; compare a first point spread function (PSF) associated with the first feature with a second PSF associated with the second feature; and tune parameters of the second convolutional filter based on the comparison of the first PSF and the second PSF, wherein the parameters are associated with the super-resolution kernel.

[0228] Aspect 8. The apparatus according to any one of Aspects 3 to 7, wherein the one or more processors are configured to: perform a first operation to upsample the second downsampled frame and generate a first portion of the second upsampled frame; perform a second upsampling to upsample the second downsampled frame to a second portion of the second upsampled frame using the super-resolution kernel; and combine the first portion and the second portion to form the second upsampled frame.

[0229] Aspect 9. The apparatus according to any one of Aspects 1 to 8, wherein the one or more processors are configured to: determine the type of the first frame based on a previous frame, wherein the previous frame is downsampled to a previous downsampled frame, wherein the type of the first frame includes an independent frame or a dependent frame; and modify the first downsampled frame based on the type of the first frame.

[0230] Aspect 10. The apparatus according to aspect 9, wherein the one or more processors are configured to modify the first downsampled frame when the first frame corresponds to the dependent frame.

[0231] Aspect 11. The apparatus according to any one of Aspects 9 to 10, wherein the one or more processors are configured to: determine an optical flow between the previous frame and the first frame; distort the previous downsampled frame based on the optical flow to generate a distorted frame; determine a residual error based on a comparison of the previous downsampled frame and the first downsampled frame; and update the first downsampled frame based on the residual error.

[0232] Aspect 12. The apparatus according to any one of Aspects 1 to 11, wherein the video encoder is configured to encode the first downsampled frame.

[0233] Aspect 13. The apparatus according to any one of Aspects 1 to 12, wherein the transfer function comprises a point spread function.

[0234] Aspect 14. The apparatus according to any one of aspects 1 to 13, the apparatus further comprising the image sensor integrated into the camera, wherein the image sensor is configured to capture the first frame.

[0235] Aspect 15. An apparatus configured to process one or more frames, the apparatus comprising: one or more memories; and one or more processors coupled to the one or more memories and configured to: receive a first frame; determine a type of the first frame based on a previous frame, wherein the type of the first frame includes an independent frame or a dependent frame; and generate a first upsampled frame based on the type of the first frame.

[0236] Aspect 16. The apparatus according to aspect 15, wherein the one or more processors are configured to: upsample a first component of the first frame to a first portion based on a super-resolution kernel corresponding to the independent frame; upsample the first component and at least a second component of the first frame to a second portion; form a hidden state component associated with a next frame from the second portion; and combine the first portion and the second portion to form the first upsampled frame.

[0237] Aspect 17. The apparatus according to aspect 16, wherein the hidden state component is applied to the next frame to generate the next upsampled frame.

[0238] Aspect 18. The apparatus according to any one of Aspects 15 to 17, wherein the one or more processors are configured to: determine a correlation between a hidden state component associated with the previous frame and a first component of the first frame; generate an attention map based on the hidden state component and features of the first component from the first frame; blend the first component of the first frame into an updated component based on the correlation and the attention map; and blend at least a second component of the previous frame with the updated component into the first upsampled frame.

[0239] Aspect 19. The apparatus according to any one of aspects 15 to 18, the apparatus further comprising a display configured to display the first upsampled frame.

[0240] Aspect 20. An image signal processor configured to process one or more frames, the image signal processor comprising: one or more processors coupled to one or more memories and configured to: acquire a first frame from an image sensor; downsample the first frame to a first downsampled frame based on a transfer function associated with the image sensor; and encode the first downsampled frame.

[0241] Aspect 21. The image signal processor according to aspect 20, wherein the one or more processors are configured to estimate the transfer function using a trained machine learning model.

[0242] Aspect 22. The image signal processor according to aspect 21, wherein the one or more processors are configured to: downsample a second frame captured by the image sensor using a downsampler of the trained machine learning model to generate a second downsampled frame; estimate a super-resolution kernel associated with the second downsampled frame; and upsample the second downsampled frame based on the super-resolution kernel to generate a second upsampled frame.

[0243] Aspect 23. The image signal processor according to aspect 22, wherein the one or more processors are configured to: use a discriminator of the trained machine learning model to determine a first feature map associated with the second downsampled frame; compare the first feature map with a second feature map associated with the second frame; and tune the parameters of the downsampler based on the comparison of the first feature map and the second feature map.

[0244] Aspect 24. The image signal processor according to aspect 23, wherein the parameters include an estimated super-resolution kernel.

[0245] Aspect 25. The image signal processor according to any one of Aspects 22 to 24, wherein the one or more processors are configured to: identify a loss associated with the downsampling of the second frame based on the second frame and the second downsampled frame.

[0246] Aspect 26. An image signal processor according to any one of Aspects 22 to 25, wherein the one or more processors are configured to: estimate the super-resolution kernel further comprising: identifying a first feature of the second frame based on applying a first convolutional filter to the second frame; identifying a second feature of the second downsampled frame based on applying a second convolutional filter to the second downsampled frame; comparing a first point spread function (PSF) associated with the first feature with a second PSF associated with the second feature; and tuning parameters of the second convolutional filter based on the comparison of the first PSF and the second PSF, wherein the parameters are associated with the super-resolution kernel.

[0247] Aspect 27. An image signal processor according to any one of Aspects 22 to 26, wherein the one or more processors are configured to: perform a first operation to upsample the second downsampled frame and generate a first portion of the second upsampled frame; perform a second upsampling to upsample the second downsampled frame to a second portion of the second upsampled frame using the super-resolution kernel; and combine the first portion and the second portion to form the second upsampled frame.

[0248] Aspect 28. An image signal processor according to any one of Aspects 20 to 27, wherein the one or more processors are configured to: determine the type of the first frame based on a previous frame, wherein the previous frame is downsampled to a previous downsampled frame, wherein the type of the first frame includes an independent frame or a dependent frame; and modify the first downsampled frame based on the type of the first frame.

[0249] Aspect 29. The image signal processor according to aspect 28, wherein the one or more processors are configured to modify the first downsampled frame when the first frame corresponds to the dependent frame.

[0250] Aspect 30. The image signal processor according to any one of Aspects 28 or 29, wherein the one or more processors are configured to: determine optical flow between the previous frame and the first frame; distort the previous downsampled frame based on the optical flow to generate a distorted frame; determine a residual error based on a comparison of the previous downsampled frame and the first downsampled frame; and update the first downsampled frame based on the residual error.

[0251] Aspect 31. The image signal processor according to any one of aspects 20 to 30, wherein the video encoder is configured to encode the first.

[0252] Aspect 32. The image signal processor according to any one of Aspects 20 to 31, wherein the one or more processors include a digital signal processor (DSP).

[0253] Aspect 33. The image signal processor according to any one of Aspects 20 to 32, the image signal processor further comprising one or more memories configured to store an encoded first downsampled frame.

[0254] Aspect 34. A method for processing one or more frames, the method comprising: obtaining a first frame from an image sensor; downsampling the first frame into a first downsampled frame based on a transfer function associated with the image sensor; and encoding the first downsampled frame.

[0255] Aspect 35. The method according to aspect 34, the method further comprising: using a trained machine learning model to estimate the transfer function.

[0256] Aspect 36. The method according to aspect 35, the method further comprising: using a downsampler of the trained machine learning model to downsample a second frame captured by the image sensor to generate a second downsampled frame; estimating a super-resolution kernel associated with the second downsampled frame; and upsampling the second downsampled frame based on the super-resolution kernel to generate a second upsampled frame.

[0257] Aspect 37. The method according to aspect 36, the method further comprising: using a discriminator of the trained machine learning model to determine a first feature map associated with the second downsampled frame; comparing the first feature map with a second feature map associated with the second frame; and tuning parameters of the downsampler based on the comparison of the first feature map and the second feature map.

[0258] Aspect 38. The method according to aspect 37, wherein the parameters include an estimated super-resolution kernel.

[0259] Aspect 39. The method according to any one of Aspects 36 to 38, the method further comprising: identifying a loss associated with the downsampling of the second frame based on the second frame and the second downsampled frame.

[0260] Aspect 40. The method according to any one of Aspects 36 to 39, wherein estimating the super-resolution kernel comprises: identifying a first feature of the second frame based on applying a first convolutional filter to the second frame; identifying a second feature of the second downsampled frame based on applying a second convolutional filter to the second downsampled frame; comparing a first point spread function (PSF) associated with the first feature with a second PSF associated with the second feature; and tuning parameters of the second convolutional filter based on the comparison of the first PSF and the second PSF, wherein the parameters are associated with the super-resolution kernel.

[0261] Aspect 41. The method according to any one of Aspects 36 to 40, the method further comprising: performing a first operation to upsample the second downsampled frame and generate a first portion of the second upsampled frame; performing a second upsampling to upsample the second downsampled frame to a second portion of the second upsampled frame using the super-resolution kernel; and combining the first portion and the second portion to form the second upsampled frame.

[0262] Aspect 42. The method according to any one of Aspects 34 to 41, the method further comprising: determining the type of the first frame based on a previous frame, wherein the previous frame is downsampled to a previous downsampled frame, wherein the type of the first frame includes an independent frame or a dependent frame; and modifying the first downsampled frame based on the type of the first frame.

[0263] Aspect 43. The method according to aspect 42, the method further comprising modifying the first downsampled frame when the first frame corresponds to the dependent frame.

[0264] Aspect 44. The method according to any one of Aspects 42 or 43, the method further comprising: determining an optical flow between the previous frame and the first frame; distorting the previous downsampled frame based on the optical flow to generate a distorted frame; determining a residual error based on a comparison of the previous downsampled frame and the first downsampled frame; and updating the first downsampled frame based on the residual error.

[0265] Aspect 45. The method according to any one of aspects 34 to 44, wherein the first downsampled frame is encoded using a video encoder.

[0266] Aspect 46. The method according to any one of Aspects 34 to 45, wherein the transfer function comprises a point spread function.

[0267] Aspect 47. The method according to any one of aspects 34 to 46, the method further comprising using the image sensor to capture the first frame, wherein the image sensor is integrated into a camera.

[0268] Aspect 48. A method for processing one or more frames, the method comprising: receiving a first frame; determining a type of the first frame based on a previous frame, wherein the type of the first frame includes an independent frame or a dependent frame; and generating a first upsampled frame based on the type of the first frame.

[0269] Aspect 49. The method according to aspect 48, the method further comprising: upsampling a first component of the first frame into a first portion based on a super-resolution kernel corresponding to the independent frame; upsampling the first component and at least a second component of the first frame into a second portion; forming a hidden state component associated with a next frame from the second portion; and combining the first portion and the second portion into the first upsampled frame.

[0270] Aspect 50. The method according to aspect 49, wherein the hidden state component is applied to the next frame to generate the next upsampled frame.

[0271] Aspect 51. The method according to any one of Aspects 48 to 50, the method further comprising: determining a correlation between a hidden state component associated with the previous frame and a first component of the first frame; generating an attention map based on features of the hidden state component and the first component from the first frame; blending the first component of the first frame into an updated component based on the correlation and the attention map; and blending at least a second component of the previous frame with the updated component into the first upsampled frame.

[0272] Aspect 52. A non-transitory computer-readable storage medium including instructions stored thereon, the instructions causing the one or more processors, when executed, to perform any one of aspects 34 to 47.

[0273] Aspect 53. An apparatus for processing one or more frames, the apparatus comprising one or more components for performing operations according to any one of aspects 34 to 47.

[0274] Aspect 54. A non-transitory computer-readable storage medium including instructions stored thereon, the instructions causing the one or more processors, when executed by the processors, to perform any one of aspects 48 to 51.

[0275] Aspect 55. An apparatus for processing one or more frames, the apparatus comprising one or more components for performing operations according to any one of aspects 48 to 51.

Claims

1. An apparatus configured to process one or more frames, the apparatus comprising: One or more memory units; and one or more processors, said one or more processors coupled to said one or more memories and configured to: acquire a first frame from an image sensor; downsample the first frame into a first downsampled frame based on a transfer function associated with said image sensor; and encode the first downsampled frame.

2. The apparatus of claim 1, wherein the one or more processors are configured to estimate the transfer function using a trained machine learning model.

3. The apparatus of claim 2, wherein the one or more processors are configured to: use a downsampler of the trained machine learning model to downsample a second frame captured by the image sensor to generate a second downsampled frame; Estimate the super-resolution kernel associated with the second downsampled frame; And based on the super-resolution kernel, the second downsampled frame is upsampled to generate a second upsampled frame.

4. The apparatus of claim 3, wherein the one or more processors are configured to: use a discriminator of the trained machine learning model to determine a first feature map associated with the second downsampled frame; compare the first feature map with a second feature map associated with the second frame; and tune parameters of the downsampler based on the comparison of the first feature map and the second feature map.

5. The apparatus of claim 4, wherein the parameters include an estimated super-resolution kernel.

6. The apparatus of claim 3, wherein the one or more processors are configured to: identify a loss associated with the downsampling of the second frame based on the second frame and the second downsampled frame.

7. The apparatus according to claim 3, wherein, In order to estimate the super-resolution kernel, the one or more processors are configured to: identify a first feature of the second frame based on applying a first convolutional filter to the second frame; A second feature of the second downsampled frame is identified by applying a second convolutional filter to the second downsampled frame; a first point spread function (PSF) associated with the first feature is compared with a second PSF associated with the second feature; and parameters of the second convolutional filter are tuned based on the comparison of the first PSF and the second PSF, wherein the parameters are associated with the super-resolution kernel.

8. The apparatus of claim 3, wherein the one or more processors are configured to: perform a first operation to upsample the second downsampled frame and generate a first portion of the second upsampled frame; perform a second upsampling to upsample the second downsampled frame to a second portion of the second upsampled frame using the super-resolution kernel; and combine the first portion and the second portion to form the second upsampled frame.

9. The apparatus of claim 1, wherein the one or more processors are configured to: determine the type of the first frame based on a previous frame, wherein the previous frame is downsampled to a previous downsampled frame, wherein the type of the first frame includes an independent frame or a dependent frame; and modify the first downsampled frame based on the type of the first frame.

10. The apparatus of claim 9, wherein the one or more processors are configured to modify the first downsampled frame when the first frame corresponds to the dependent frame.

11. The apparatus of claim 9, wherein the one or more processors are configured to: determine an optical flow between the previous frame and the first frame; distort the previous downsampled frame based on the optical flow to generate a distorted frame; determine a residual error based on a comparison of the previous downsampled frame and the first downsampled frame; and update the first downsampled frame based on the residual error.

12. The apparatus of claim 1, wherein the video encoder is configured to encode the first downsampled frame.

13. The apparatus of claim 1, wherein the transfer function comprises a point spread function.

14. The apparatus of claim 1, further comprising the image sensor integrated into the camera, wherein the image sensor is configured to capture the first frame.

15. An apparatus configured to process one or more frames, the apparatus comprising: One or more memory units; And one or more processors, said one or more processors being coupled to said one or more memories and configured to: receive a first frame; The type of the first frame is determined based on the previous frame, wherein the type of the first frame includes an independent frame or a dependent frame; And generate a first upsampled frame based on the type of the first frame.

16. The apparatus of claim 15, wherein the one or more processors are configured to: upsample a first component of the first frame into a first portion based on a super-resolution kernel, corresponding to the independent frame; The first component and at least the second component of the first frame are upsampled into a second part; a hidden state component is formed as associated with the next frame from the second part; And combine the first part and the second part to form the first upsampled frame.

17. The apparatus of claim 16, wherein the hidden state component is applied to the next frame to generate the next upsampled frame.

18. The apparatus of claim 15, wherein the one or more processors are configured to: determine the correlation between a hidden state component associated with the previous frame and a first component of the first frame; An attention map is generated based on the hidden state components and features of the first components from the first frame; the first components of the first frame are blended into updated components based on the correlation and the attention map; And to mix at least the second component of the previous frame with the updated component to form the first upsampled frame.

19. The apparatus of claim 15, further comprising a display configured to display the first upsampled frame.

20. An image signal processor configured to process one or more frames, the image signal processor comprising: One or more processors, said one or more processors being coupled to one or more memories and configured to: acquire a first frame from an image sensor; The first frame is downsampled into a first downsampled frame based on the transfer function associated with the image sensor; and the first downsampled frame is encoded.

21. The image signal processor of claim 20, wherein the one or more processors are configured to estimate the transfer function using a trained machine learning model.

22. The image signal processor of claim 21, wherein the one or more processors are configured to: use a downsampler of the trained machine learning model to downsample a second frame captured by the image sensor to generate a second downsampled frame; Estimate the super-resolution kernel associated with the second downsampled frame; And based on the super-resolution kernel, the second downsampled frame is upsampled to generate a second upsampled frame.

23. The image signal processor of claim 22, wherein the one or more processors are configured to: use a discriminator of the trained machine learning model to determine a first feature map associated with the second downsampled frame; compare the first feature map with a second feature map associated with the second frame; and tune the parameters of the downsampler based on the comparison of the first feature map and the second feature map.

24. The image signal processor of claim 23, wherein the parameters include an estimated super-resolution kernel.

25. The image signal processor of claim 22, wherein the one or more processors are configured to: identify a loss associated with the downsampling of the second frame based on the second frame and the second downsampled frame.

26. The image signal processor of claim 22, wherein the one or more processors are configured to: estimate the super-resolution kernel, further comprising: The first feature of the second frame is identified by applying a first convolutional filter to the second frame; A second feature of the second downsampled frame is identified by applying a second convolutional filter to the second downsampled frame; a first point spread function (PSF) associated with the first feature is compared with a second PSF associated with the second feature; and parameters of the second convolutional filter are tuned based on the comparison of the first PSF and the second PSF, wherein the parameters are associated with the super-resolution kernel.

27. The image signal processor of claim 22, wherein the one or more processors are configured to: perform a first operation to upsample the second downsampled frame and generate a first portion of the second upsampled frame; perform a second upsampling to upsample the second downsampled frame to a second portion of the second upsampled frame using the super-resolution kernel; and combine the first portion and the second portion to form the second upsampled frame.

28. The image signal processor of claim 20, wherein the one or more processors are configured to: determine the type of the first frame based on a previous frame, wherein the previous frame is downsampled to a previous downsampled frame, wherein the type of the first frame includes an independent frame or a dependent frame; and modify the first downsampled frame based on the type of the first frame.

29. The image signal processor of claim 28, wherein the one or more processors are configured to modify the first downsampled frame when the first frame corresponds to the dependent frame.

30. The image signal processor of claim 28, wherein the one or more processors are configured to: determine an optical flow between the previous frame and the first frame; distort the previous downsampled frame based on the optical flow to generate a distorted frame; determine a residual error based on a comparison of the previous downsampled frame and the first downsampled frame; and update the first downsampled frame based on the residual error.