DE102019218837A1 - VERFAHREN UND SYSTE M ZUR NEURONALNETZ WERK-SCHLEIFENFILTERUNG ZUR VlDEOCODIERUNG - Google Patents

VERFAHREN UND SYSTE M ZUR NEURONALNETZ WERK-SCHLEIFENFILTERUNG ZUR VlDEOCODIERUNG Download PDF

Info

Publication number
DE102019218837A1
DE102019218837A1 DE102019218837.0A DE102019218837A DE102019218837A1 DE 102019218837 A1 DE102019218837 A1 DE 102019218837A1 DE 102019218837 A DE102019218837 A DE 102019218837A DE 102019218837 A1 DE102019218837 A1 DE 102019218837A1
Authority
DE
Germany
Prior art keywords
data
neural networks
training
frame
image data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019218837.0A
Other languages
English (en)
Inventor
Hujun Yin
Shoujiang Ma
Xiaoran Fang
Rongzhen Yang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102019218837A1 publication Critical patent/DE102019218837A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Ein Verfahren, System, Medium und Artikel stellen Neuronalnetzwerk-Schleifenfilterung zur Videocodierung mit mehreren alternativen neuronalen Netzwerken bereit.

Description

  • PRIORÄTSANSPRUCH
  • Die vorliegende Anmeldung beansprucht Priorität der vorläufigen US-Patentanmeldung Nr. 62/789,952 , eingereicht am 8.1.2019 mit dem Titel „METHOD AND SYSTEM OF NEURAL NETWORK LOOP FILTERING FOR VIDEO CODING“, und der US-Patentanmeldung Nr. 16/418,803 , eingereicht am 21.5.2019 mit dem Titel „METHOD AND SYSTEM OF NEURAL NETWORK LOOP FILTERING FOR VIDEO CODING“, die durch Bezugnahme vollständig aufgenommen werden.
  • HINTERGRUND
  • Videocodierung (CODEC) dient zum Komprimieren, Übertragen und Dekomprimieren von Videodaten zur Betrachtung von Bildern auf einer entfernten Videoanzeigevorrichtung. Codierer, die die Daten komprimieren, verwenden oft eine Schleife, die die komprimierten Daten konstruiert oder decodiert, um Unterschiede zwischen den rekonstruierten Daten und dem Originalvideo zu bestimmen, die als Reste bezeichnet werden. Diese Reste können dann zu einem entfernten Decodierer gesendet werden, um das Video im Decodierer genau zu rekonstruieren. Bei der Videocodierung werden gewöhnlich Schleifen-(oder In-Schleife-)Filter in der Decodierungsschleife eines Codierers verwendet, um die Qualität (sowohl objektiv als auch subjektiv) von rekonstruiertem Video zu verbessern. Die Schleifenfilter werden auch im Decodierer verwendet. Die Schleifenfilter werden typischerweise am Ende eines Einzelbild-Rekonstruktionsprozesses angewandt und umfassen ein Entblockungsfilter (DBF), ein Filter mit abtastadaptivem Offset (SAO) und ein adaptives Schleifenfilter (ALF), das verschiedene Aspekte von Videorekonstruktionsartefakten behandelt, um die Endqualität von rekonstruiertem Video zu verbessern. Die Filter können linear oder nichtlinear und fest oder adaptiv sein. Es können mehrere Filter alleine oder zusammen verwendet werden.
  • Zusätzlich zu diesen drei Filtern werden Faltungsneuronalnetzwerke (CNN) als nichtlineares Schleifenfilter verwendet, um die Qualität von rekonstruiertem Video oder die Videocodierungseffizienz wesentlich zu verbessern. In diesem Fall wird ein CNN als eine In-Schleifenfilterstufe angewandt, die als Faltungsneuronalnetzwerk-Schleifenfilter (CNNLF) bezeichnet wird. Die Eingabe in ein CNNLF kann drei Arten von Daten umfassen: rekonstruierte Abtastwerte, Prädiktionsabtastwerte und/oder Restabtastwerte. Die rekonstruierten Abtastwerte sind ALF-Ausgangsabtastwerte; die Prädiktionsabtastwerte sind Inter- oder Intra-Prädiktionsabtastwerte und die Restabtastwerte sind Abtastwerte, die nach inverser Quantisierung und inverser Transformation erhalten werden. Die Ausgabe eines CNNLF sind die verfeinerten und wiederhergestellten rekonstruierten Abtastwerte.
  • Schwierigkeiten entstehen bei dem herkömmlichen CNNLF jedoch, weil der Betrieb des herkömmlichen CNNLF gewöhnlich eine große Anzahl von Parametern erfordert, wodurch ein übermäßig komplexes neuronales Netzwerk erzeugt wird, das die Decodierungskomplexität und die rechnerische Last und damit auch Größe und Kosten der Decodiererhardware, Stromverbrauch und Speicheranforderungen vergrößert. Dies vergrößert auch die Verarbeitungsverzögerung, was zu geringerer Leistungsfähigkeit führt.
  • Figurenliste
  • Das hier beschriebene Material wird in den beigefügten Figuren anhand von Beispielen und nicht zur Beschränkung dargestellt. Der Einfachheit und Klarheit der Darstellung halber sind in den Figuren dargestellte Elemente nicht unbedingt maßstabsgetreu gezeichnet. Zum Beispiel können die Abmessungen einiger Elemente der Klarheit halber relativ zu anderen Elementen übertrieben sein. Ferner wurden, wenn es als angemessen betrachtet wird, Bezugszeichen in den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben. Es zeigen:
    • 1 eine schematische Darstellung eines herkömmlichen Schleifenfilterungs-Neuronalnetzwerks, das zur Videocodierung verwendet wird;
    • 1A eine weitere schematische Darstellung des herkömmlichen neuronalen Netzwerks von 1;
    • 2A eine schematische Darstellung eines Codierers gemäß mindestens einer der vorliegenden Implementierungen;
    • 2B eine schematische Darstellung eines Decodierers gemäß mindestens einer der vorliegenden Implementierungen;
    • 3 ein Flussdiagramm eines Verfahrens der Neuronalnetzwerk-Schleifenfilterung zur Videocodierung gemäß mindestens einer der vorliegenden Implementierungen;
    • 4 ein schematisches Flussdiagramm eines neuronalen Netzwerks gemäß mindestens einer der vorliegenden Implementierungen;
    • 5 ein weiteres schematisches Flussdiagramm eines neuronalen Netzwerks gemäß mindestens einer der vorliegenden Implementierungen;
    • 6A ein ausführliches Flussdiagramm eines Verfahrens zur Neuronalnetzwerk-Schleifenfilterung zur Videocodierung in einem Codierer gemäß mindestens einer der vorliegenden Implementierungen;
    • 6B ein ausführliches Flussdiagramm eines Verfahrens zur Neuronalnetzwerk-Schleifenfilterung zur Videocodierung in einem Codierer gemäß mindestens einer der vorliegenden Implementierungen;
    • 7A eine Menge von Eingangsbildern zum Trainieren eines Schleifenfilter-Neuronalnetzwerks für eine erste Neuronalnetzwerk-Trainingsalternative gemäß mindestens einer der vorliegenden Implementierungen;
    • 7B eine schematische Darstellung einer beispielhaften Einzelbildsequenz für die erste Neuronalnetzwerk-Trainingsalternative gemäß mindestens einer der vorliegenden Implementierungen;
    • 7C eine weitere schematische Darstellung einer beispielhaften Einzelbildsequenz für die erste Neuronalnetzwerk-Trainingsalternative gemäß mindestens einer der vorliegenden Implementierungen;
    • 8 ein schematisches Flussdiagramm einer zweiten Neuronalnetzwerk-Trainingsalternative gemäß mindestens einer der vorliegenden Implementierungen;
    • 9A-9B ein schematisches Flussdiagramm eines Prozesses des Trainings mehrerer neuronaler Netzwerke für ein Verfahren der Neuronalnetzwerk-Schleifenfilterung zur Videocodierung gemäß mindestens einer der vorliegenden Implementierungen;
    • 10 eine veranschaulichende Darstellung eines beispielhaften Systems;
    • 11 eine veranschaulichende Darstellung eines anderen beispielhaften Systems;
    • 12 eine beispielhafte Vorrichtung, durchweg ausgelegt gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Es werden nun eine oder mehrere Implementierungen unter Bezugnahme auf die beigefügten Figuren beschrieben. Obwohl spezifische Konfigurationen und Anordnungen besprochen werden, versteht sich, dass dies lediglich zu Anschauungszwecken erfolgt. Für Fachleute auf dem relevanten Gebiet ist erkennbar, dass andere Konfigurationen und Anordnungen verwendet werden können, ohne vom Gedanken und Schutzumfang der Beschreibung abzuweichen. Für Fachleute auf dem relevanten Gebiet ist ersichtlich, dass hier beschriebene Techniken und/oder Anordnungen auch in vielfältigen anderen Systemen und Anwendungen als den hier beschriebenen verwendet werden können.
  • Obwohl die folgende Beschreibung verschiedene Implementierungen darlegt, die zum Beispiel in Architekturen wie SoC-Architekturen (System auf einem Chip) manifestiert werden können, ist die Implementierung der hier beschriebenen Techniken und/oder Anordnungen nicht auf bestimmte Architekturen und/oder Datenverarbeitungssysteme beschränkt und kann durch eine beliebige Architektur und/oder ein beliebiges Datenverarbeitungssystem für ähnliche Zwecke implementiert werden, sofern es nicht hier anders vorgegeben wird. Zum Beispiel können verschiedene Architekturen, die zum Beispiel mehrere Chips und/oder Kapselungen integrierter Schaltungen (IC) verwenden, und/oder verschiedene Datenverarbeitungsvorrichtungen und/oder Vorrichtungen der Verbraucherelektronik (CE), wie etwa Set-Top-Boxes, Smartphones, Tablets, Fernseher usw. die hier beschriebenen Techniken und/oder Anordnungen implementieren. Die hier erwähnten neuronalen Netzwerke können durch Hardware mit spezifischer Funktion, wie etwa Grafikverarbeitungseinheiten (GPU), Bildsignalprozessoren (ISP) usw. betrieben werden oder nicht. Obwohl die folgende Beschreibung zahlreiche spezifische Einzelheiten darlegt, wie etwa Logikimplementierungen, Arten und Beziehungen von Systemkomponenten, Logikpartitionierungs-/-integrationswahlmöglichkeiten usw., kann der beanspruchte Gegenstand ferner ohne solche spezifischen Einzelheiten praktiziert werden. In anderen Fällen kann bestimmtes Material, wie zum Beispiel Steuerstrukturen und volle Softwareanweisungssequenzen, nicht im Detail gezeigt sein, um das hier offenbarte Material nicht zu verschleiern.
  • Das hier offenbarte Material kann in Hardware, Firmware, Software oder einer beliebigen Kombination davon implementiert werden. Das hier offenbarte Material kann auch als Anweisungen implementiert werden, die auf einem maschinenlesbaren Medium gespeichert werden, das gelesen und durch einen oder mehrere Prozessoren ausgeführt werden kann. Ein maschinenlesbares Medium wäre ein beliebiges Medium und/oder ein beliebiger Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die durch eine Maschine (z.B. eine Datenverarbeitungsvorrichtung) lesbar ist. Ein maschinenlesbares Medium kann zum Beispiel Festwertspeicher (ROM); Direktzugriffsspeicher (RAM); magnetische Disk-Speicherungsmedien; optische Speicherungsmedien; Flash-Speichervorrichtungen; elektrische, optische, akustische oder andere Formen von ausgebreiteten Signalen (z.B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) und anderes umfassen. In einer anderen Form kann ein nichttransitorischer Artikel, wie etwa ein nichttransitorisches computerlesbares Medium, mit beliebigen der oben erwähnten Beispiele oder anderen Beispielen verwendet werden, mit der Ausnahme, dass er per se kein transitorisches Signal umfasst. Er umfasst diejenigen Elemente außer einem Signal per se, die Daten vorübergehend auf „transitorische“ Weise halten können, wie etwa RAM und so weiter.
  • Erwähnungen von „einer Implementierung“, „eine Implementierung“, „einer beispielhaften Implementierung“ usw. in der Patentschrift geben an, dass die beschriebene Implementierung ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum umfassen kann, aber nicht unbedingt jede Implementierung das konkrete Merkmal, die konkrete Struktur oder das konkrete Charakteristikum umfasst. Außerdem beziehen sich solche Ausdrücke nicht unbedingt auf dieselbe Implementierung. Wenn ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum in Verbindung mit einer Implementierung beschrieben wird, versteht sich ferner, dass es innerhalb des Wissens von Fachleuten liegt, ein solches Merkmal, eine solche Struktur oder ein solches Charakteristikum in Verbindung mit anderen Implementierungen zu bewirken, gleichgültig, ob es hier ausdrücklich beschrieben wird oder nicht.
  • Im Folgenden werden Systeme, Artikel und Verfahren in Bezug auf Neuronalnetzwerk-Schleifenfilterung zur Videocodierung beschrieben.
  • Das JVET (Joint Video Experts Team), das der ITU (International Telecommunication Union) zugeordnet ist, hat einen Standard der vielseitigen Videocodierung (VVC) zur Verbesserung der Komprimierungsleistungsfähigkeit entwickelt. In aktueller Software des WC-Testmodells (VTM) werden mehrere In-Schleife-Filter, wie Entblockungsfilter (DBF), Filter mit abtastadaptivem Offset (SAO) und adaptive Schleifenfilter (ALF) in einer der letzten Phasen eines Decodierungsprozesses angewandt, um die Qualität rekonstruierter Einzelbilder zu verbessern. Das DBF glättet Blockkanten zur Entfernung einer sichtbaren Blockhaftigkeit, die während der Codierung eingeführt worden sein könnte. Das SAO-Filter stellt Offsets zur Addition zu Pixelwerten bereit, um falsche Intensitätsverschiebungen zu justieren. Das ALF verwendet eine oder mehrere Mengen oder Muster von Filterkoeffizienten, die bei Anwendung auf decodierte Pixel von rekonstruierten Referenzeinzelbildern, Slices und/oder Blöcken zu modifizierten Bilddaten führen, die den entsprechenden Pixeln des Original-Einzelbildes, -Slice und/oder der Original-Blockdaten viel näher kommen, um dadurch ein genaueres, qualitativ hochwertiges decodiertes Einzelbild bereitzustellen. Dies kann durch Verwendung von adaptiven Filtern auf Weiner-Basis oder von anderen Arten von Filtern zur Minimierung des mittleren quadratischen Fehlers zwischen Originalabtastwerten und decodierten Abtastwerten durchgeführt werden. Diese Filter werden sowohl in der Decodierungsschleife des Codierers als auch im Decodierer verwendet.
  • Wie erwähnt ist ein Faltungsneuronalnetzwerk-Schleifenfilter (CNNLF) eine andere Art von In-Schleife-Filter, die Faltungsneuronalnetzwerke (CNN) benutzt, die die Bilddaten weiter verfeinert und Komprimierungsartefakte entfernt. Ein CNNLF hat vielversprechende Leistungsfähigkeitsvorteile demonstriert. Siehe Hsiao, Y.L. et al.,, „AHG9: Convolutional neural network loop filter," JVET-K0222, Media Tek Inc., 2018; Wang, Y. et al., „AHG9: Dense residual convolutional neural network based in-loop filter," JVET-L0242, Wuhan University, Tencent, 2018; Hashimoto, T. et al., „AHG9: Separable convolutional neural network filter with squeeze and excitation block," JVET-K0158, Sharp Corporation, 2018; und Kawamura, K. et al., „AHG9: Convolutional neural network filter," JVET L0383, KDDI Corp., 2018.
  • Mit Bezug auf 1 und 1A verwendet das oben erwähnte herkömmliche CNNLF von Hsiao, Y.L. et al. ein vierschichtiges CNNLF 100 und stellt sowohl Luma- als auch Chromafiltrierung mit Luma- und Chroma-Neuronalnetzwerken (NN) 102 bzw. 104 bereit. Bei dieser Anordnung befindet sich die Syntax von CNNLF-Parametern in einem Intra-Slice- bzw. I-Slice-Header. Das Luma-NN-Filter oder die Neuronalnetzwerkstruktur 102 empfängt sowohl Luma- als auch Chroma-Daten 106 und paketiert die Daten zur Bildung einer sechskanäligen 16x16-Eingabe 108, die Blöcke sowohl von Luma- als auch von Chroma-Daten umfasst. Die Eingabe 106 wird durch ein vierschichtiges NN empfangen, das Schichten L1 bis L4 (110 bis 116 gleichmäßig nummeriert) umfasst. Die Eingabe 108 wird zuerst einer sechskanäligen verborgenen 1×1-Faltungsschicht L1 104 zugeführt, die 16 Kanäle ausgibt, dann einer 16-kanäligen verborgenen 3x3-Faltungsschicht L2 112, die auch 16 Kanäle ausgibt, als Nächstes einer 16-kanäligen verborgenen 1×1-Faltungsschicht L3 114, die acht Kanäle ausgibt, und einer achtkanäligen verborgenen 3x3-Faltungsschicht L4 116, die vier Kanäle ausgibt. Diese von der letzten Schicht ausgegebenen resultierenden Daten liegen in Form von Luma-Werten vor, die durch eine Entpaketierungsschicht 118 in vier 16x16-Kanäle gelegt werden, um dadurch eine vierkanälige 16x16-Ausgabe 119 (1A) von Luma-Werten zur Bildung eines letztendlichen rekonstruierten Einzelbildes bereitzustellen.
  • Die herkömmliche Struktur 100 weist auch das Chroma-Neuronalnetzwerk 104 auf, das sowohl Luma- als auch Chroma-Eingabe 120 empfängt. Dieses Chroma-NN 104 weist ähnliche Paketierungs- und Entpaketierungsoperationen 122 und 132 auf, sowie verglichen mit dem Luma-NN 102 Schichten L1 bis L4, die hier gleichmäßig von 124 bis 130 nummeriert sind. Die Schicht L1 124 empfängt hier jedoch die Eingangsdaten in 12 Kanälen, statt 6 Kanälen, um die 1×1-Filterung durchzuführen, und dies bildet 16 Ausgangskanäle. Die 12 Kanäle stellen kleinere 8x8-Blöcke (8 Luma-Y-Blöcke und jeweils 2 von U- und V-Chroma-Blöcken) von Daten bereit.
  • Wie hier für das herkömmliche CNNLF 100 relevant ist, werden nur rekonstruierte Abtastwerte als Eingabe in das CNNLF verwendet. Einzelbilder mit einer zeitlichen ID gleich 0 oder 1, die sich auf den Einzelbildort in einer Gruppe von Einzelbildern (GOP) bezieht, sind die einzigen zum Training verwendeten Einzelbilder. Die zeitliche ID ist die Querverweisschicht, die in Videocodec-Standards (zum Beispiel H.263, H.264, H.265 und H.266) definiert wird. Somit handelt es sich bei der 0-Schicht um I-Einzelbilder, während es sich bei der 1-Schicht um P-Einzelbilder zwischen den I-Einzelbildern handelt.
  • Diese zum Training verwendeten Einzelbilder müssen jedoch zweimal verarbeitet werden, was bei der Filterung Verzögerung verursachen kann, so dass keine Echtzeitfilterung verwendet werden kann. Speziell werden in einer ersten oder Trainingsphase die Einzelbilder zuerst codiert, wenn das Videocodierungssystem für den CNNLF-Trainingsprozess erforderliche Daten erzeugt und CNNLF-Parameter ableitet. In einer zweiten oder Schlussfolgerungsphase werden die Einzelbilder nochmals codiert, wenn das System wieder Originalbilddaten verwendet, um einen End-Bitstrom zu erzeugen, aber nun während des Ausführens des CNNLF mit den aus dem Training abgeleiteten Parametern.
  • Die Anzahl der Parameter für dieses CNNLF 100 in Hsiao, Y.L. et al. wird verglichen mit vorbekannten Techniken als Reduktion betrachtet (vier Schichten, 2860 Parameters, die 2816 Gewichte plus 44 Biaswerte umfassen). Dies wird durch adaptives CNN-Training mit Videodaten erreicht, die selbst zu komprimieren sind (oder anders ausgedrückt, Online-Training), weil Videoinhalt oft von Einzelbild zu Einzelbild ähnlich ist, so dass relevante Merkmale in einem Video mit einer kleineren Anzahl von Parametern erfasst werden können. Ein vierschichtiges CNNLF ist jedoch verglichen mit einem ALF-Filter immer noch relativ komplex. Trotz der wesentlich verringerten Größe eines CNN-Netzwerks (von 8 Schichten auf 4 Schichten) weist es somit immer noch die relativ große Anzahl von 2860 Parametern auf. Dies wirkt sich auf den Codec, insbesondere die Decodiererkomplexität, aus. Dieses CNNLF erfordert auch eine große Menge Trainingsdaten, um gute Leistungsfähigkeit zu erreichen. Deshalb ist es naturgemäß speicher- und datenverarbeitungsintensiv und kann zu wesentlich höherer Codec-Komplexität führen, was zu einer größeren Menge und größeren Kosten von Hardware und Speicher und/oder rechnerischen Verzögerungen und niedrigerer Leistungsfähigkeit führt.
  • Außerdem ist bei dem Trainingsprozess von Hsiao, Y.L. et al., da in einem Direktzugriffssegment (RAS) Einzelbilder mit zeitlicher ID (0, 1) zweimal verarbeitet werden müssen, einmal zum CNNLF-Training und einmal zur CNNLF-Schlussfolgerung, die Anwendung des CNNLF deshalb nur auf Nicht-Echtzeitcodierung beschränkt. Es ist somit wünschenswert, die CNNLF-Komplexität weiter zu verringern.
  • Hinsichtlich ALF-Filterung gibt es typischerweise viele Klassen von Filtern, siehe Zhang, K. et al., „CE2: Summary report on in-loop filters,“ JVET-K0022, CE2 coordinators, 2018. In jeder Klasse gibt es mehrere Filter mit festen oder trainierten Gewichten. In Betrieb wird zuerst eine Klassifizierung angewandt, um mehrere Klassen zu erhalten, was eine Partition einer Menge aller Pixelorte ergibt. Danach wird eine Menge von Filtern für jede dieser Klassen angewandt. Die Leistungsfähigkeit des ALF beruht somit nicht nur darauf, wie Filter konfiguriert sind, sondern auch darauf, wie sich eine Klassifizierung verhält. Bei VTM 3.0 wird die folgende ALF-Konfiguration unterstützt: Klassifikation 4x4, Luma: 5x5 und 7x7, Vorgabe 7x7, Chroma: 5x5. In einigen Formen kann das ALF-Filter als ein spezielles einschichtiges CNN mit linearer Aktivierung betrachtet werden. Die Anzahl der Filterkoeffizienten in einem ALF-Filter ist jedoch gewöhnlich zu klein, um alle relevanten Merkmale im Video zu erfassen. Zur Anpassung an verschiedenen Videoinhalt werden viele ALF-Filter verwendet. Deshalb kompensiert ALF die Unzulänglichkeit der kleinen Anzahl von Filterkoeffizienten durch Vergrößern der Anzahl verwendeter Filterklassen.
  • Um diese Probleme zu lösen, wird hier ein adaptives Faltungs-Neuronalnetzwerk-Schleifenfilter (ACNNLF) offenbart, und mit einer signifikant verringerten Komplexität und geringeren rechnerischen Last, so dass das ACNNLF in Echtzeit betrieben werden kann und Hardware, Speicher und Stromverbrauch ohne Aufopferung der Leistungsfähigkeit und Qualität verringert werden. Insbesondere werden mehrere alternative oder infragekommende auf CNN basierende Schleifenneuronalnetzwerke oder Filter adaptiv für Luma- und Chroma-Daten aus der aktuellen Videosequenz trainiert. Jedes Filter kann ein kleines verborgenes zweischichtiges CNN mit insgesamt 692 Parametern aufweisen, was verglichen mit dem herkömmlichen CNNLF weniger als ein Viertel der Anzahl der Parameter beträgt. Die verringerte Anzahl von Parametern auf 692 kann 672 Gewichte plus 20 Biasse umfassen, wie nachfolgend beschrieben, um dadurch die Verarbeitungskomplexität und Speicheranforderung zu verringern.
  • Die Struktur des ACNNLF ermöglicht auch Echtzeitbetrieb, da das Training ohne Verwendung von zukünftigen Einzelbildern durchgeführt werden kann.
  • Ein Codierer wählt aus den mehreren ACNNLF, wie etwa drei, für Luma und Chroma einzelner Blöcke der Codierungsbaumeinheit (CTU) (oder hier einfach CTB oder einfach Blöcke) aus, um Codierung durchzuführen. Da die Anzahl der ACNNLF-Filter (wie etwa drei) klein ist, ist es durch einen beispielhaften Ansatz möglich, eine erschöpfende Suche nach dem optimalen ACNNLF bei dem Codierungsprozess durchzuführen. Dann wählt der Codierer das beste ACNNLF für jeden Luma- und jeden Chroma-Block aus der trainierten Menge mehrerer ACNNLF aus, um Codierung durchzuführen.
  • Die ACNNLF-Auswahl kann dann im codierten Strom zum Decodierer angegeben werden. Die Gewichte der trainierten Menge von ACNNLF werden im Slice-Header von I-Bildern signalisiert, und der Index des ausgewählten ACNNLF wird für jeden oder einzelne CTB signalisiert. Die Einzelheiten der Signalisierungsanordnung werden nachfolgend beschrieben. Ein Decodierer kann ACNNLF-Gewichte (zum Beispiel drei alternative Mengen für Luma und drei alternative Mengen für Chroma) und den Index dafür, welches ACNNLF zur Codierung und Decodierung ausgewählt wurde, empfangen. Der Decodierer muss dann nur das ausgewählte ACNNLF verwenden, um den Filterungsprozess für jeden Luma- und Chroma-Block während der Einzelbildrekonstruktion auszuführen.
  • Die Verwendung mehrerer kleiner CNN, die im Codierer trainiert werden, erzielt bessere Leistungsfähigkeit als ein großes CNN, wie durch Simulationsergebnisse gezeigt wird. Die CNN kleiner Größe werden in dem Codierer verwendet, um dort Komplexität und auch Speicheranforderungen zu verringern. Während die Anzahl der ACNNLF-Parameter verringert wird, kann die Anzahl der ACNNLF, aus denen ausgewählt wird, vergrößert werden, um sicherzustellen, dass sich die ACNNLF-Konfiguration an diversem Videoinhalt anpassen kann, ohne Leistungsfähigkeit aufzuopfern.
  • Im Vergleich kann eine ALF-Struktur einschichtige lineare Aktivierung umfassen, wodurch relativ geringe Komplexität gewährleistet wird, aber mit über 100 Filterparametern und etwa 100 Filtern, wobei in jedem gegebenen Block nur ein Filter verwendet wird. Ähnlich weist die bekannte CNNLF-Struktur (hier beschriebene 1 und 1) mehrschichtige nichtlineare Aktivierung mit nur einem Filter auf, die die Leistungsfähigkeit steigert, aber über 1000 Filterparameter verwendet, um dadurch die rechnerische Last zu vergrößern. Dagegen verwendet das offenbarte ACNNLF, wie etwa das nachfolgend beschriebene, zweischichtige Nichtlinearaktivierung mit weniger als 1000 Filterparametern auf sogar nur drei Filtern, um eine signifikant geringere Decodiererkomplexität zu gewährleisten, während sehr gut Leistungsfähigkeit aufrechterhalten wird.
  • Eine Kurzfassung einiger der experimentellen Ergebnisse ist wie folgt. Verglichen mit VTM-3.0-RA (wobei sich RA auf Direktzugriff bezieht) erzielt das vorgeschlagene ACNNLF Bjontegaard-Deltaraten (oder BD-Raten) von -2,37%, -1,34% und -2,77% für Y, U bzw. V für Klasse -A1-Videosequenzen; 0,45%, -10,92% und -6,19% BD-Raten für Y, U bzw. V für Klasse-A2-Videosequenzen; -0,49%, -11,29% und -10,73% BD-Raten für Y, U bzw. V für Klasse-B-Videosequenzen und 0,12%, -3,31% und -1,62% BD-Raten für Y, U bzw. V für Klasse-C-Videosequenzen. Weitere Einzelheiten werden nachfolgend bereitgestellt..
  • Mit Bezug auf 2A wird zum besseren Verständnis der Implementierungen der Neuronalnetzwerk-Filterungsverfahren zur Videocodierung, die hier beschrieben werden, ein Videocodierungssystem (oder Bildverarbeitungssystem oder -codierer) 200 beschrieben und ist ausgelegt zum Ausführen mindestens einer oder mehrerer der hier beschriebenen Implementierungen. Bei verschiedenen Implementierungen kann das Videocodierungssystem 200 dafür ausgelegt sein, gemäß einem oder mehreren Standards Videocodierung zu unternehmen und/oder Videocodecs zu implementieren. Ferner kann das Videocodierungssystem 200 in verschiedenen Formen als Teil eines Bildprozessors, Videoprozessors und/oder Medienprozessors implementiert werden und unternimmt Inter-Prädiktion, Intra-Prädiktion, prädiktive Codierung und Restprädiktion. Bei verschiedenen Implementierungen kann das System 200 gemäß einem oder mehreren Standards oder Spezifikationen, zum Beispiel H.264 (MPEG-4), AVC (Advanced Video Coding), VP8, H.265 (High Efficiency Video Coding oder HEVC), VP9, Alliance Open Media Version 1(AV1) und andere Videokomprimierung und -dekomprimierung unternehmen und/oder Videocodecs implementieren. Obwohl hier das System 200 und/oder andere Systeme, Methoden oder Prozesse beschrieben werden können, ist die vorliegende Offenbarung nicht unbedingt immer auf irgendeinen bestimmten Videocodierungsstandard oder irgendeine bestimmte Spezifikation oder Erweiterung davon beschränkt.
  • Im vorliegenden Gebrauch kann sich der Ausdruck „Coder“ auf einen Codierer und/oder einen Decodierer beziehen. Ähnlich kann sich der Ausdruck „Codierung“ im vorliegenden Gebrauch auch auf Codierung über einen Codierer und/oder Decodierung über einen Decodierer beziehen. Ein Coder, Codierer oder Decodierer kann Komponenten sowohl eines Codierers als auch eines Decodierers aufweisen.
  • Für das beispielhafte Videocodierungssystem 200 kann das System ein Codierer sein, wobei aktuelle Videoinformationen in Form von Daten in Bezug auf eine Sequenz von Videoeinzelbildern zur Komprimierung empfangen werden können. Das System 200 kann jedes Einzelbild in kleinere handlichere Einheiten aufteilen und die Einzelbilder dann vergleichen, um eine Prädiktion zu berechnen. Wenn ein Unterschied oder Rest zwischen einem Originalblock und der Prädiktion bestimmt wird, wird dieser resultierende Rest transformiert und quantisiert und dann entropiecodiert und in einem Bitstrom zu Decodierern oder Speicherung ausgesendet. Um diese Operationen auszuführen, kann das System 200 Eingangsbilder 202 (die hier austauschbar auch als Bilder oder Einzelbilder bezeichnet werden) aufweisen, die durch eine Partitionseinheit 201 umgeordnet und aufgeteilt werden können, um Codierungsbaumeinheiten (CTU) von Originaleinzelbilddaten zu bilden, bevor sie einer Subtraktionseinheit 204 und auch einer Prädiktionseinheit 218 zugeführt werden. Die CTU werden auch einer Neuronalnetzwerk-Schleifenfiltereinheit 230 zugeführt, die blockweise Filterung durchführt, wie nachfolgend beschrieben.
  • Das System 200 kann auch eine Transformier- und Quantisierereinheit 206 aufweisen, die sich aus dem Subtrahierer 204 ergebende Reste unter Verwendung von Techniken der diskreten Kosinustransformation (DCT) oder ähnlichen Techniken in Koeffizienten transformiert und die Koeffizienten dann quantisiert, um verlustbehaftete Komprimierung durchzuführen. Die Transformier- und Quantisierungskoeffizienten werden dann zur verlustlosen Komprimierung und Übertragung einem Entropiecodierer 208 zugeführt.
  • Die Ausgabe des Quantisierers 206 kann auch einer im Codierer vorgesehenen Decodierungs- oder Prädiktionsschleife 240 zugeführt werden, um dieselben Referenz- oder Rekonstruktionsblöcke, -einzelbilder oder andere Einheiten zu erzeugen, die im Decodierer 250 (2D) erzeugt wurden. Somit kann die Decodierungsschleife 240 die Inverse-Quantisierungs- und Inverse-Transformiereinheit 210 zur Rekonstruktion der Einzelbilder verwenden. Andere Assembler, wie etwa ein Restassembler und Prädiktionseinheit-Assembler, sind der Klarheit halber in der Schleife nicht gezeigt. Ein Addierer 212 und die Assembler dienen zur Rekonstruktion der in jedem Einzelbild verwendeten Einheiten.
  • Die Decodierungsschleife 240 stellt dann eine Filtereinheit 214 bereit, um die Qualität der rekonstruierten Bilder zu vergrößern, um besser mit dem entsprechenden Originaleinzelbild übereinzustimmen. Diese kann ein Entblockungsfilter (DBF) 224, ein Filter mit abtastadaptivem Offset (SAO) 226, ein adaptives Schleifenfilter (ALF) 228 und eine Einheit 230 eines NN-Schleifenfilters (NNLF) wie oben beschrieben umfassen. Die NNLF-Einheit 230 stellt ein hier beschriebenes ACNNLF bereit, um die Bilddaten durch Arbeiten als nichtlineares Filter weiter zu verfeinern. Durch eine Form werden die Schleifenfilter auf Neuronalnetzwerkbasis auf die Ausgabe des ALF angewandt, wie in der Filtereinheit 214 gezeigt.
  • Außerdem kann eine Filtersteuerung 232 vorgesehen werden und führt Filtersteueroperationen aus, die hier ausführlich beschrieben werden, und zur Verfeinerung der Bilddaten eines rekonstruierten Einzelbildes. Durch eine Form bildet eine Online-Trainingsphase des ACNNLF mehrere alternative Filter. Die Filtersteuerung 232 kann die Filter testen und unter ihnen das Filter mit den besten Ergebnissen auswählen. Dies kann eine Auswahl auf der Basis von Bitkosten, Bildqualität zum Beispiel auf der Basis von Rauschen und/oder andere Faktoren umfassen. Wie nachfolgend beschrieben können die Filterauswahl, wenn sie vorgesehen ist, sowie Filterkoeffizienten und andere Filterdaten dem Entropiecodierer 208 zugeführt werden, um die Filterdaten zusammen mit den Bilddaten zu übertragen.
  • Die Decodierungsschleife 240 kann auch einen (nicht gezeigten) Decodiertes-Bild-Puffer zum Halten von Referenzeinzelbildern 216 aufweisen. Ansonsten führt die Filtereinheit 214 die nun rekonstruierten und verfeinerten (durch die Filter) Einzelbilder 216 zur Verwendung als Referenzeinzelbilder zur Inter-Prädiktion der Prädiktionseinheit 218 zu.
  • Somit weist der Codierer 200 auch die Prädiktionseinheit 218 mit einer Intra-Prädiktoreinheit 220 und einer Inter-Prädiktoreinheit 222 zur Auswahl von Prädiktionsmodi und Bildung von Prädiktionsblöcken auf. Die Prädiktionsblöcke werden dann sowohl der Subtraktionseinheit 204 zur Erzeugung eines Rests als auch in der Decodierungsschleife dem Addierer 212 zum Addieren der Prädiktion zu dem Rest aus der Invers-Transformiereinheit 210 zur Rekonstruktion eines Einzelbildes zugeführt. Der Prädiktionsmodus und andere Prädiktionsdaten können auch dem Entropiecodierer 208 zur Komprimierung und Übertragung zugeführt werden.
  • In einigen Beispielen kann das Videocodierungssystem 200 zusätzliche Posten aufweisen, die in 2A der Klarheit halber nicht gezeigt wurden. Zum Beispiel kann das Videocodierungssystem 200 einen Prozessor, einen Hochfrequenztyp- bzw. HF-Sendeempfänger, einen Splitter und/oder Multiplexer, eine Anzeige und/oder eine Antenne umfassen. Ferner kann das Videocodierungssystem 200 zusätzliche Posten umfassen, wie etwa einen Lautsprecher, ein Mikrofon, einen Beschleunigungsmesser, einen Speicher, einen Router, Netzwerkschnittstellenlogik und so weiter. Einige dieser Komponenten sind in anderen hier beschriebenen Implementierungen gezeigt.
  • Mit Bezug auf 2B kann ein System 250 einen Decodierer aufweisen oder ein solcher sein und kann codierte Videodaten in Form eines Bitstroms empfangen, der die Bilddaten (Chroma- und Luma-Pixelwerte) sowie Kontextdaten aufweist, wie Reste in Form von quantisierten Transformationskoeffizienten, Prädiktionsdaten wie Bewegungsvektoren, Identität von Referenzblöcken und Prädiktionsmodi für einzelne Blöcke, Filterkoeffizienten und Filterauswahl, die angibt, welches Filter (oder neuronales Netzwerk oder ACNNLF) tatsächlich verwendet wurde, wenn die Filterauswahl im Codierer durchgeführt wird. Das System 250 kann den Bitstrom mit einem Entropiedecodierungsmodul 252 verarbeiten, um Chroma- und Luma-Pixeldaten und die anderen übertragenen Daten, einschließlich der Filterdaten, zu extrahieren. Der Entropiedecodierer 252 kann eines oder mehrere der nachfolgend beschriebenen Verfahren verwenden, um die Filterung durchzuführen, und wenn die Filterauswahl im Bitstrom bereitgestellt wird, kann der Decodierer nur die Filterung des ausgewählten Filtermodus durchführen, statt die Filterung mit allen der mehreren oben erwähnten Filter durchzuführen.
  • Nachdem die Daten extrahiert sind, kann das System 250 dann ein Invers-Quantisierermodul 252 und ein Invers-Transformiermodul 256 zum Rekonstruieren der Restpixeldaten verwenden. Das System 200 kann dann (nicht gezeigte) Assembler und einen Addierer 258 verwenden, um den Rest zu einem rekonstruierten vorhergesagten Block zu addieren und ein gesamtes Einzelbild zu rekonstruieren. Das rekonstruierte Einzelbild wird dann der Filtereinheit 260 zugeführt, die auch eine DBF-Einheit 262, eine SAO-Einheit 264, eine ALF-Einheit 266 und eine oder mehrere NNLF-Einheiten 268 aufweist, wie bei der hier beschriebenen Codierer-NNLF-Einheit 230. Die Filtereinheit 200 kann die Filtrierung in der gerade aufgelisteten Reihenfolge durchführen, oder in einer anderen Reihenfolge, je nach Wunsch und wie für die Codiererseite erwähnt. Wie auch erwähnt wird, muss, wenn die Filtermodusauswahl im Bitstrom bereitgestellt wird, auch nur dieses Filter betrieben werden, zum Beispiel wenn es eine Wahl zwischen den mehreren ACNNLF-Filtern gibt, die während des Online-Trainings der ACNNLF wie bei dem Codierer 200 beschrieben erzeugt werden. Das verfeinerte Einzelbild wird dann einer Prädiktionseinheit 270 zugeführt.
  • Die Prädiktionseinheit 270 kann die resultierenden Daten unter Verwendung einer Decodierungsprädiktionstechnik decodieren, die abhängig von dem Codierungsmodus verwendet wird, der in der Syntax des Bitstroms angegeben und über den Prädiktionsmodusschalter oder -selektor 276 implementiert wird. Entweder wurde ein erster Pfad verwendet, der ein Intra-Prädiktionsmodul 274 umfasst, oder ein zweiter Pfad, der ein Inter-Prädiktionsdecodierungspfad ist, der ein oder mehrere Filter der Filtereinheit 260 umfasst. Der zweite Pfad kann einen Decodiertes-Bild-Puffer zum Speichern der rekonstruierten und gefilterten Einzelbilder zur Verwendung als Referenzeinzelbilder sowie zum Aussenden der rekonstruierten Einzelbilder zur Anzeige oder Speicherung zur späteren Betrachtung oder für eine andere Anwendung oder Vorrichtung aufweisen. Ein bewegungskompensierter Prädiktor 272 benutzt rekonstruierte Einzelbilder aus der Filtereinheit sowie Bewegungsvektoren aus dem Bitstrom zur Rekonstruktion eines vorhergesagten Blocks. Der Prädiktionsmodi-Selektor 276 setzt wie erwähnt den korrekten Modus für jeden Block, wobei der Prädiktionsmodus aus dem komprimierten Bitstrom extrahiert und dekomprimiert werden kann. Die Prädiktionsblöcke aus der Prädiktionseinheit 270 werden dann dem Addierer 258 zugeführt. Die Funktionalität von hier beschriebenen Modulen für die Systeme 200 und 250 sind mit Ausnahme der Filtereinheit als Beispiel und hier ausführlich beschrieben in der Technik wohlbekannt und werden hier nicht ausführlicher beschrieben.
  • Nunmehr mit Bezug auf 3 ist ein beispielhafter Prozess 300 zur Neuronalnetzwerk-Schleifenfilterung zur Videocodierung gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung ausgelegt. Der Prozess 300 kann eine oder mehrere Operationen 302-310 umfassen, die im Allgemeinen gleichmäßig beziffert werden und zum Beispiel durch Neuronalnetzwerke 400 oder 500 und das System 200, 250 oder 1000 von 4, 5, 2A-2B bzw. 10 und bei Relevanz ausgeführt werden.
  • Der Prozess 300 kann „Erhalten von komprimierten Bilddaten mindestens eines Einzelbildes einer Videosequenz“ 302 umfassen. Im Codierer bezieht sich dies auf das Erhalten von komprimierten Daten in der Decodiererschleife. Im Decodierer bezieht sich dies auf die aus einem übertragenen Bitstrom empfangenen komprimierten Daten. In jedem Fall umfasst dies sowohl Luma- als auch Chroma-Daten (oder Daten Y, U und V), die in die neuronalen Netzwerke einzugeben sind.
  • Der Prozess 300 kann „Decodieren des mindestens einen Einzelbildes zur Bildung einer rekonstruierten Version des Einzelbildes“ 304 umfassen. Im Codierer wie auch im Decodierer bezieht sich dies auf Rekonstruieren der Einzelbilder und als ein Beispiel durch inverse Transduktion und inverse Quantisierung und so weiter, bis das rekonstruierte Einzelbild bereit zur Neuronalnetzwerkfilterung ist. Dies kann die Operation der anderen In-Schleife-Filter, wie zum Beispiel DBF, SAO und ALF, umfassen oder auch nicht. Durch eine Form wurden mindestens diese drei Filter angewandt, und das ALF-Filter stellt rekonstruierte Bilddaten eines Einzelbildes einer hier beschriebenen Neuronalnetzwerk- oder ACNNLF-Filtereinheit bereit.
  • Der Prozess 300 kann „Anwenden mehrerer alternativer Faltungsneuronalnetzwerke auf mindestens denselben Teil der rekonstruierten Version mindestens eines Einzelbildes“ 306 umfassen. Wie nachfolgend ausführlich beschrieben wird und in der Decodierungsschleife des Codierers können mehrere Faltungs-Neuronalnetzwerke auf dieselbe Region oder denselben Block eines Einzelbildes angewandt werden, und das ACNNLF kann blockweise angewandt werden. Durch eine Form weisen die neuronalen Netzwerke jeweils oder einzeln nur zwei Faltungsschichten auf, um ein neuronales Netzwerk niedriger Komplexität bereitzustellen, das Verzögerung, rechnerische Last, Hardwareanforderungen, Stromverbrauch und so weiter verringern wird und das auch dabei hilft, Echtzeitbetrieb zu ermöglichen. Die Einzelheiten der Struktur werden nachfolgend bereitgestellt.
  • Die neuronalen Netzwerke können während der Laufzeit auf einer aktuellen Videosequenz, die codiert wird, trainiert werden. Daran können auch Eingangstrainingsmengen beteiligt sein, die Bilddaten von bereits decodierten rekonstruierten Einzelbildern umfassen, wodurch Echtzeit- oder nahezu Echtzeitbetrieb ermöglicht wird, wie etwa eine bestimmte Anzahl aufeinanderfolgender Einzelbilder vor einem aktuellen Einzelbild, das decodiert wird, oder nur an zuvor decodierten I-Einzelbildern. Durch ein Beispiel können die Bilddaten für die Trainingsmenge aus derselben Gruppe von Bildern oder demselben Direktzugriffssegment erhalten werden oder auch nicht. Das Training wird durch Aufteilen der Neuronalnetzwerk-Ausgabe in Gewinne, ausgegebene rekonstruierte Bilddaten, die den Originaldatenwerten näher als die Eingangsdaten kommen, und Verluste, ausgegebene rekonstruierte Bilddaten, die den Werten der Originalbilddaten weiter entfernt sind als die Eingangsdaten, durchgeführt. Durch eine Form wird nur die Verlustteilmenge verwendet, um zusätzliche neuronale Netzwerke hinzuzufügen, sobald zwei neuronale Netzwerke gebildet sind. Die Einzelheiten werden nachfolgend bereitgestellt.
  • Der Prozess 300 kann „Auswählen eines der neuronalen Netzwerke auf der Basis mindestens eines Kriteriums“ 308 umfassen. Im Codierer umfasst dies einfach Vergleichen der Ausgabe der alternativen neuronalen Netzwerke, um zu bestimmen, welches die beste Bilddatenwertausgabe aufweist, um das rekonstruierte Einzelbild zu verfeinern, und dies kann blockweise durchgeführt werden, könnte aber auch auf anderen Regionen wie Slices oder dem gesamten Einzelbild basieren. Dies kann auch eine Auswahl auf der Grundlage von Bitkosten, Bildqualität zum Beispiel auf der Basis von Rauschen, Unterschieden auf Blockebene oder einer anderen Ebene mit den Originalbilddaten des aktuellen rekonstruierten Einzelbildes, wie etwa Summe aller Differenzen (SAD), mittlerer quadratischer Fehler (MSE), strukturelles Ähnlichkeitsindexmaß (SSIM), Spitzen-Rauschabstand (PSNR), Video-Mehrfachverfahren-Bewertungsfusion (VMAF) und/oder anderen Unterschieden oder anderen Faktoren umfassen, wobei viele dieser Vergleiche Vergleiche mit den oder unter Verwendung der Originalbilddaten sind.
  • Der Codierer kann auch mindestens das ausgewählte neuronale Netzwerk in den codierten Bitstrom zur Bereitstellung für einen Decodierer legen. Durch eine Form stellt der Codierer das ausgewählte neuronale Netzwerk und die Identität des ausgewählten neuronalen Netzwerks bereit, so dass der Decodierer einfach das ausgewählte neuronale Netzwerk verwenden kann, ohne die Auswahl selbst durchführen zu müssen. In diesem Fall können alle alternativen neuronalen Netzwerke dem Decodierer bereitgestellt werden oder nicht. Andernfalls kann der Decodierer alle alternativen neuronalen Netzwerke und die Identifikation des ausgewählten neuronalen Netzwerks empfangen, so dass der Decodierer über alle NN-Filterdaten verfügt, die für eine beliebige NN-Auswahl für einen beliebigen Block in einem Einzelbilder notwendig sind.
  • Der Prozess 300 kann „Verfeinern der Bilddaten des Teils, einschließlich Verwendung der Ausgabe des ausgewählten Faltungs-Neuronalnetzwerks“ 310 umfassen. Durch eine Form sind die Ausgabe der neuronalen Netzwerke Bilddatenwerte, und zwar Luma oder Chroma, aber nicht davon, welche Art von Daten analysiert wird, und wenn ein alternatives neuronales Netzwerk (oder Filter oder ACNNLF) ausgewählt wird, ersetzt die Ausgabe des neuronalen Netzwerks oder Filters das eingegebene rekonstruierte Einzelbild oder die Blockbilddaten. Bei einem anderen Ansatz können die Ausgabe der neuronalen Netzwerke Delta- oder Änderungswerte sein, die zu den Originaldatenwerten zu addieren sind. Die verfeinerten Bilddaten in Form von Referenzeinzelbildern werden dann zur Inter-Prädiktion im Codierer bereitgestellt. In diesem Fall werden alle Operationen des Prozesses 300 im Codierer ausgeführt. Die Identifikation des ausgewählten Faltungs-Neuronalnetzwerks sowie die alternativen neuronalen Netzwerke können auch zum Decodierer übertragen werden, um die Verfeinerungsoperation auszuführen. Bei dieser Alternative führt der Codierer die Operationen des Prozesses 300 aus, mit Ausnahme der Verfeinerungsoperation 310, die im Decodierer ausgeführt wird.
  • Mit Bezug auf 6A ist ein beispielhafter Prozess 600 zur Neuronalnetzwerk-Schleifenfilterung zur Videocodierung gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung ausgelegt und wird durch einen Codierer betrieben. Der Prozess 600 kann eine oder mehrere Operationen 602-624 umfassen, die im Allgemeinen gleichmäßig beziffert sind und zum Beispiel durch die neuronalen Netzwerke 400 oder 500 und das System 200, 250 oder 1000 von 4, 5, 2A-2B bzw. 10 und bei Relevanz ausgeführt werden.
  • Der Prozess 600 kann „anfängliche Neuronalnetzwerkstruktur einrichten“ 602 umfassen. Dies bezieht sich auf offline-Operationen zum Vorbereiten und Speichern der Neuronalnetzwerk-Vorlagen oder der Struktur, die in der Laufzeit zu füllen oder während dieser trainiert wird, könnte aber auch offline ausgeführt werden. Durch eine Form kann dies zur Verringerung der rechnerischen Last „Verwenden von nur zwei Faltungsschichten pro CNN“ 604 umfassen. Die Einzelheiten sind wie folgt.
  • Mit Bezug auf 4 wird eine beispielhafte Struktur eines adaptiven Neuronalnetzwerk-Schleifenfilters (ACNNLF) 400 für Luma (Y) mit geringer Komplexität bereitgestellt. Das ACNNLF 400 weist zwei verborgene Neuronalnetzwerkschichten 404 und 406 zwischen einer Eingangsschicht 402 und einer Ausgangsschicht 408 auf. In der Eingangs- und Ausgangsschicht 402 und 408 werden Packungs- und/oder Entpackungsoperationen ausgeführt. Zur Packung von Subblöcken von Luma (Y) zum Beispiel zur Bildung der Eingangsschicht 402 wird, wenn ein zu verarbeitender Block eine Breite x Höhe aufweist, dann 2x2-Unterabtastung angewandt, um vier gestapelte Subblöcke mit der Größe Breite/2xHöhe/2 zu erzeugen, so dass jeder Subblock einen der Lumawerte aus jedem 2x2-Abtastwert aufweist. Obwohl das ACNNLF 400 für Luma-Daten ist, werden auch Chroma-Eingaben sowie andere Faktoren oder Parameter verwendet, um die Genauigkeit der Ausgangs-Luma-Daten zu vergrößern. Somit werden zwei Chroma-Blöcke, die ursprünglich ein Viertel der Größe des entsprechenden Luma-Blocks für dieselbe Fläche eines Einzelbildes betrugen, auf dieselbe Größe wie die Luma-Subblöcke eingestellt, indem aus jedem 2x2-Abtastwert ein einziger Chroma-Wert erhalten wird. Die vier Luma-Subblöcke und die zwei Chroma-Subblöcke werden zusammengestapelt, um sechs gestapelte Subblöcke der Größe Breite/2xHöhe/2 als Filtereingabe zu erzeugen, und werden als sechs Eingangskanäle beschrieben.
  • In der Ausgangs- oder Entpackungsschicht 408 wird die Entpackung durch Verwendung eines Rests oder Unterschieds zwischen den Ausgangsbilddaten aus der Schicht 406 und den Eingangsbilddaten der anfänglichen Schicht 402 als die Eingabe in die Entpackungs-Neuronalnetzwerke durchgeführt, was durch den Pfeil und das Zeichen + 412 angegeben ist. Die resultierende Ausgabe ist ein Stapel 410 von vier Luma-Subblöcken, die als vier Ausgangskanäle beschrieben werden, und die Ausgangswerte sind Luma-Werte, die eingegebene rekonstruierte Luma-Daten entsprechend der Pixelorte ersetzen können, wie nachfolgend beschrieben wird. Einzelheiten für die Schichten sind wie folgt.
  • Für die Eingangsschicht 402 und die Ausgangsschicht 408 sind Bildblock- (oder Kanal-) Größen N x N Pixel. Die Vorgabe für N ist 32. N kann mit der Einzelbildgröße variieren. Zum Beispiel kann Video mit großer Einzelbildgröße (wie etwa 2K, 4K oder 1080P) N=32 oder 16 verwenden, während ein Video mit kleiner Einzelbildgröße N=16 oder 8 verwenden kann.
  • Für eine erste CNN-Schicht 1 404 ist L1×L1 die Filtergröße, wobei L1 1 oder 3 sein kann, mit einem Vorgabewert von 1. Eine ReLU(Rectified Linear Unit)-Schicht wird nach der ersten CNN-Schicht 404 als nichtlineare Aktivierungsfunktion und insbesondere nach jedem Filter angewandt. Vorliegende Beispiele verwenden L1 = 1.
  • Für die zweite CNN-Schicht 2 406 ist L2×L2 eine Filtergröße, wobei L2 1, 3, 4 oder 5 sein kann, mit einem Vorgabewert von 4. Durch eine Form ist keine ReLU-Schicht nach der zweiten CNN-Schicht 406 vorhanden und die Ausgaben können direkt der nächsten Schicht zugeführt werden. In den vorliegenden Beispielen wird 3 verwendet, während in nachfolgend beschriebenen Experimenten L2 = 3 verwendet wurde.
  • Für Ausgangskanäle der ersten CNN-Schicht 404 ist M die Anzahl der Kanäle, Merkmale oder Ausgangswerte, und auf einer Pixelebene für ein 1 × 1-Filter, wenn L1 =1 ist, so dass M mit der Einzelbildgröße variieren kann, mit 16 oder 42 für eine große Einzelbildgröße (wie etwa 2K, 4K oder 1080P) und 8 oder 16 für eine kleine Einzelbildgröße. Der Vorgabewert ist M = 16.
  • Die Eingangs- und inneren Schichten des ACNNLF 400 sind für Luma und Chroma gleich. Somit wäre das ACNNLF 400 für Chroma dasselbe, mit der Ausnahme, dass die Entpackungs- oder Ausgangsschicht 408 und der Ausgangsstapel 410 zwei Chroma-Blöcke (zwei Kanäle) aufweisen, statt vier Luma-Blöcken. Die Eingabe für ein Chroma-ACNNLF ist immer noch vier Luma-Subblöcke und zwei Chroma-Subblöcke, wie oben für das Luma-ACNNLF beschrieben. Der Unterschied ist das Training in den neuronalen Netzwerken, wie nachfolgend beschrieben, wobei die Chroma-CNN zur Ausgabe von Chroma-Werten, statt Luma-Werten, trainiert werden.
  • Mit Bezug auf 1A und 5 steht die herkömmliche Struktur 100 im Kontrast zu den offenbarten Verfahren, die ein Filter oder Netzwerk 500 mit Eingabe 50 und den Schichten 504, 506, 508 und 510 verwenden, ähnlich wie bei den Schichten in dem Netzwerk 400, mit der Ausnahme, dass hier M = 16, L1 = 1 und L2 = 3 ist. Im Gegensatz zu der herkömmlichen Struktur 100 (1A) können sogar nur zwei verborgene Faltungsschichten 504 und 506 verwendet werden, während das bekannte Filter 100 vier Faltungsschichten 110, 112, 114 und 116 verwendet. Wie gezeigt werden somit die bekannten CNNLF-Schichten von vier auf zwei Schichten verringert, wodurch die Komplexität des neuronalen Netzwerks signifikant verringert wird.
  • Wieder mit Bezug auf den Prozess 600 kann eine Online-Trainingstechnik zum Trainieren der ACNNLF verwendet werden. Eine anfängliche Operation ist „Bilden einer anfänglichen vollen Trainingsdatenmenge“ 606. Um Laufzeit- oder Online-Training zu ermöglichen, kann der Prozess 600 „Verwenden von Daten der Menge von zuvor decodierten Einzelbildern“ 608 umfassen. Die Trainingsdaten können somit direkt aus Videosequenzen kommen, die zu komprimieren sind. Dies kann auf eine Anzahl von Weisen erreicht werden.
  • Mit Bezug auf 7A-8 umfasst dies für eine Alternative die Operation „Verwenden aufeinanderfolgender Einzelbilder“ 610 und insbesondere Bereitstellung der Bilddaten für die anfängliche oder volle Trainingsmenge (oder Datenmenge). In einem spezifischen Beispiel kann die Trainingsmenge 700 (7A) aus Bilddaten einer Videosequenz von Einzelbildern gebildet werden. Diese Trainingsmenge 700 wurde in den nachfolgend erwähnten Experimenten als Klasse-B-Testmenge verwendet. Das Training erfolgt für eine Sequenz von Einzelbildern 724 jeweils oder einer einzelner Direktzugriffssequenz (RAS) oder Gruppe von Bildern (GOP) 1-01 722, wie hier in einer Reihe 720 (7B) von zu komprimierenden RAS gezeigt, wobei jede RAS eine bestimmte Anzahl von Einzelbildern 726 aufweist, wie etwa die hier gezeigten 63.
  • Um die Trainingsmenge zum Komprimieren von Daten eines aktuellen Einzelbildes zu bilden, werden F Einzelbilder von Videodaten verwendet, die das aktuelle Einzelbild und die vorherigen F-1 Einzelbilder umfassen. Wie in 7C gezeigt, werden insgesamt F Einzelbilder 750 von Daten als Trainingsdatenmenge 750 für RAS-Daten aus einer oder mehreren der RAS 722 gesammelt, die zum Beispiel die vorherigen F-1 Einzelbilder (in Codierungsreihenfolge) und das aktuelle Einzelbild F umfassen. In dem vorliegenden Beispiel und durchgeführten Experimenten wurde F = 8 verwendet, wie hier in der Trainingseinzelbildsequenz 750 gezeigt.
  • Durch eine Form ist das aktuelle Einzelbild in einer aktuellen RAS und die vorherigen Einzelbilder F-1 zum Training sind aus einer vorherigen RAS. In diesem Beispiel, und da das Training Einzelbilder einer vorherigen RAS erfordert, ist ACNNLF für RAS#0 gesperrt. In diesem Fall ist das Training nicht auf eine einzige RAS oder GOP beschränkt und kann sich mehreren RAS überlappen. Durch eine Option müssen die vorherigen F-1 Einzelbilder immer noch alle im selben Einzelbild sein, wenn auch ohne das aktuelle Einzelbild. Durch einen anderen Ansatz bleibt die gesamte Trainingssequenz einschließlich der aktuellen und vorherigen Einzelbilder in derselben einzelnen RAS oder GOP. Bei beliebigen dieser Optionen muss die Sequenz 750 von F Einzelbildern zur Verwendung zum Training für ein aktuelles Einzelbilder aufeinanderfolgend in Codierungsreihenfolge sein, obwohl es andere Optionen gibt, wie etwa Intervalle nach Anzahl von Einzelbildern oder nach Einzelbildtyp oder beidem.
  • Mit Bezug auf 8 kann der Prozess 600 somit als Alternative „Aufbauen der Trainingsmenge abhängig von I-Einzelbildern“ 612 und für das Training umfassen. Im Allgemeinen können Einzelbilder (oder Bilder oder Abbilder) einer Videosequenz danach klassifiziert werden, welcher Modus verwendet werden kann, um das Einzelbild zu rekonstruieren, und wenn Inter-Prädiktion verwendet wird, welche Referenzeinzelbilder für eine solche Rekonstruktion verfügbar sein können. Typischerweise verwenden I-Einzelbilder keine Inter-Prädiktion, oder anders ausgedrückt werden Referenzeinzelbilder oder zeitliche Blockanpassung für I-Einzelbilder nicht verwendet, und I-Einzelbilder verwenden nur Intra-Prädiktion, die räumliche Blockanpassung im Einzelbild selbst verwenden. Dadurch wird sichergestellt, dass die I-Einzelbilder genauer sind, auf Kosten von weniger Komprimierung des I-Einzelbildes. I-Einzelbilder bilden somit oft die wichtigsten Einzelbilder einer Videosequenz, wie etwa das erste Einzelbilder jeder Szene, und werden als Referenzeinzelbilder verwendet, um viele der anderen Einzelbilder in der Videosequenz zu rekonstruieren. Hier kann ein I-Einzelbild pro RAS oder GOP verwendet werden. Oft kann die RAS nur eine RAS aufweisen, aber dies ist nicht immer wahr. Wenn es mehr als eine RAS gibt, kann das Training auf das erste I-Einzelbild in der RAS oder ein anderes solches Intervall beschränkt werden. Die I-Einzelbilder werden als Referenzeinzelbilder für P-Einzelbilder, die nur vorherige Einzelbilder als Referenzeinzelbilder verwenden, und/oder B-Einzelbilder, die sowohl vorherige als nachfolgende Einzelbilder als Referenzeinzelbilder verwenden können, verwendet.
  • Im Betrieb kann der Trainingsprozess 800 Erhalten einer Videosequenz 802 einer Szene und umfassend ein I-Einzelbild-Abbild einer Szene umfassen. Der Prozess 800 codiert 814 dann das I-Einzelbild 802 und rekonstruiert es nur durch Verwendung der Intra-Bilddaten oder anders ausgedrückt der Daten in dem Abbild selbst. Das rekonstruiere Einzelbild 804 wird entlang der Videosequenz, von der es ein Teil ist, mit der zeitlichen Identifikation (TID) null (TID = 0) designiert. Dann kann rekonstruierte I-Einzelbilder TID = 0 als Referenzbild 820 zur Codierung 812 anderer Einzelbilder zum Beispiel TID = 1, 2, 3 und 4 der Videosequenz 802 verwendet werden. Alle rekonstruierten Bilder werden in eine Datenbank gelegt 818 und 822, um einen Teil der Trainingsdatenmenge 808 zu bilden.
  • Durch diese Form umfassen die Trainingsdaten nur das I-Einzelbild und eine designierte Anzahl anderer Einzelbilder (wie zum Beispiel P-Einzelbilder und/oder B-Einzelbilder), die das I-Einzelbild direkt als Referenzeinzelbild verwendet haben. Dies könnte auf eine einzige RAS beschränkt werden, könnte aber andernfalls mehr als ein I-Einzelbild und seine abhängigen Einzelbilder umfassen, und wenn mehrere I-Einzelbilder verwendet werden, kann die Trainingsmenge aus Einzelbildern aus mehr als einer RAS erhalten werden. Durch eine andere Option könnten auch indirekte Referenzeinzelbilder genommen werden, wobei zum Beispiel ein I-Einzelbild für ein P-Einzelbild sein kann und das P-Einzelbild Referenz für ein B-Einzelbild sein kann. In diesem Fall könnte das B-Einzelbild auch Bilddaten für die anfängliche oder volle Trainingsmenge bereitstellen.
  • Durch eine andere Option werden nur I-Einzelbilder zum Training verwendet. Die I-Einzelbilder werden aus mehreren RAS erhalten, wenn nur ein I-Einzelbild für jede RAS bereitgestellt wird, aber andernfalls auch wenn es nicht genug I-Einzelbilder in einer einzelnen RAS zum Füllen der Trainingsdatenmenge gibt.
  • Beide Trainingsalternativen können das Online-Trainingsverfahren unterstützen. Die Alternative mit aufeinanderfolgenden Einzelbildern kann die existierenden Daten im Codierungsprozess verwenden, um das rechnerische Overhead zu verringern, kann aber mehr Speicher zum Abspeichern dieser Daten benötigen. Die I-Einzelbild-Alternative kann die Daten erzeugen, während der Trainingsprozess verwendet wird, und kann diese Daten freigeben, nachdem das Training abgeschlossen ist, um die Speicheranforderung relativ zu der Option mit aufeinanderfolgenden Rahmen zu verringern, weil die Verwendung aufeinanderfolgender Einzelbilder hauptsächlich dem Zwecke des Vergrößerns der Größe der Trainingsdatenmenge ohne Auswirkung auf die Echtzeit-Leistungsfähigkeit dient. Das rechnerische Overhead für diese I-Einzelbild-Alternative ist jedoch höher als bei der Alternative mit aufeinanderfolgenden Einzelbildern.
  • Für alle oder einzelne Trainingsvideoeinzelbilder werden sowohl die Luma- als auch die Chroma-Daten von Originaleinzelbildern und den rekonstruierten Einzelbildern (vor ACNNLF-Verarbeitung) gesammelt und zu einer Datenbank für den Online-Trainingsprozess geformt. Jedes Einzelbild wird in kleine Bildblöcke der Größe NxN zum Training der CNNLF aufgeteilt, zum Beispiel für Kompatibilität mit der CNN-Struktur 400 oder 500.
  • Der Prozess 600 kann „Trainieren des neuronalen Netzwerks zur Bildung mehrerer alternativer neuronaler Netzwerke“ 614 umfassen. Mit Bezug auf 9A-9B für das Training ist ein Prozess 900 zum Training mehrerer alternativer CNN für Neuronalnetzwerk-Schleifenfilterung zur Videocodierung gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung ausgelegt. Der Prozess 900 kann eine oder mehrere Operationen 960 bis 992 umfassen, die im Allgemeinen gleichmäßig beziffert sind. Die anderen bezifferten Posten in dem Diagramm des Prozesses 900 sind Trainingsmengen oder -daten oder neuronale Netzwerke, die während des Prozesses verwendet werden.
  • Der Prozess 900 kann mit dem Training 960 eines ACNNLF (oder eines anfänglichen neuronalen Netzwerks oder CNN Nr. 1) 904 beginnen, indem das CNN 904 auf eine anfängliche volle Trainingsmenge 902 angewandt wird. Das CNN 904 hat die in NN 400 (4) beschriebene Struktur, und die anfängliche oder volle Trainingsmenge 902 ist wie oben beschrieben und kann Bilddaten von mehreren Einzelbildern umfassen, wie bei Operation 606 beschrieben. Wie oben erwähnt und durch eine Form können in der anfänglichen Trainingsmenge 902 acht Rahmen von rekonstruierten Luma- und Chroma-Bilddaten verwendet werden und können Bilddaten von Blöcken (CTU) aufweisen, die in den sechs Eingangsblöcken oder -kanälen angeordnet werden, die oben beschrieben wurden. Rückwärts gesehen kann jede Generation einer Spalte von einem oder mehreren neuronalen Netzwerken in dem Diagramm des Prozesses 900 und nach einer Trainingsoperation als Ende einer weiteren Iteration der neuronalen Netzwerke betrachtet werden.
  • Der Prozess 900 kann dann Klassifizieren 962 der Ausgangsdaten aus dem anfänglichen neuronalen Netzwerk 904 umfassen. Somit kann das erste trainierte ACNNLF 904 als Teil eines Klassifizierers betrachtet werden, da es Ausgaben bereitstellt, die in Teilmengen klassifiziert werden können. Die Aufteilung der Ausgangsdaten aus dem neuronalen Netzwerk 904 kann durch Verwendung einer Anzahl verschiedener Kriterien erreicht werden. Durch ein Beispiel werden die Ausgangsdaten in Gewinnblöcke und Verlustblöcke aufgeteilt oder getrennt. Gewinn bezieht sich auf Ausgangsbilddaten, deren Wert Originalbilddaten desselben Pixelorts verglichen mit rekonstruierten Eingangsbilddaten näher kommen, und Verlust bezieht sich auf Ausgangsbilddaten, deren Wert sich verglichen mit den eingegebenen rekonstruierten Bilddaten weiter von Originalbilddaten desselben Pixelorts entfernen. Die Eingabe hier zwischen der ersten und zweiten Iteration bezieht sich auf die Daten, die die anfängliche volle Trainingsmenge 902 bilden. Der Nettoratengewinn (oder einfach nur Gewinn) und der Netto-Coderatenverlust (oder einfach nur Verlust) kann folgendermaßen berechnet werden. { I m   F a l l   | O R i n | > | O R o u t | ,   i s t   N e t t o e r g e b n i s   e i n   G e w i n n A n d e r n   f a l l s   i s t   N e t t o e r g e b n i s   e i n   V e r l u s t
    Figure DE102019218837A1_0001
    wobei O einen Block von Originalbilddaten repräsentieren kann, Rin eine Repräsentation eines Blocks rekonstruierter Bilddaten sein kann, die in das neuronale Netzwerk eingegeben werden, das wie hier beschrieben trainiert wird, und Rout eine Repräsentation eines Blocks rekonstruierter Bilddaten sein kann, die die Ausgabe des neuronalen Netzwerks sind, das trainiert wird. Die Repräsentationen O, Rin und Rout können einfach die Summe von Luma- oder Chroma-Bilddaten in dem designierten Block oder einem anderen Einzelbildteil sein, könnten aber ein Mittelwert oder eine andere Kombination der Bilddaten sein, oder eine einzige Repräsentation, wie etwa ein Minimum- oder Maximum-Bilddatenwert eines einzelnen Pixels im Block. Durch eine andere Form ist jeder | |-Term eine Summe von Absolutdifferenzen (SAD) einzelner entsprechender Pixelorte im Block, und diese zwei SAD werden verglichen, um zu bestimmen, ob ein Block ein Gewinnblock oder ein Verlustblock ist. Während dies blockweise durchgeführt wird, könnten die Variablen oder Repräsentationen O, Rin und Rout Slices, Einzelbilder oder andere Einzelbildteile repräsentieren.
  • Die Gewinnblöcke werden gesammelt, um eine Gewinnmenge oder Teilmenge rekonstruierter und nun verfeinerter Bilddaten zu bilden, und die Verlustblöcke werden gesammelt, um eine Verlustmenge oder Teilmenge der verfeinerten rekonstruierten Bilddaten zu bilden. Die Blöcke rekonstruierter Ausgangsbilddaten, die einen Netto-Coderatengewinn ergeben, werden somit einer Gewinnmenge, CNN Nr. 1, Trainingsmenge (906) zugewiesen, und die Blöcke rekonstruierter Ausgangsbilddaten, die einen Nettoverlust ergeben, werden einer Verlustmenge, CNN Nr. 2, Trainingsmenge (908) zugewiesen.
  • Der Prozess 900 kann dann weiteres Trainieren 964 und 966 des neuronalen Netzwerks 904 durch getrenntes Anwenden des neuronalen Netzwerks 904 sowohl auf die Gewinnteilmenge 906 als auch die Verlustteilmenge 908 umfassen, um ein trainiertes Gewinn-Neuronalnetzwerk (ein modifiziertes CNN Nr. 1) 910 und ein trainiertes Verlust-Neuronalnetzwerk (ein modifiziertes CNN Nr. 2) 912 zum Abschluss einer zweiten Iteration zu erzeugen.
  • Der Prozess 900 kann dann die Ausgabe des trainierten Gewinn-Neuronalnetzwerks und des trainierten Verlust-Neuronalnetzwerks 912 kombinieren, um eine neue gesamte Trainingsmenge 914 zu bilden. Das trainierte Gewinn-Neuronalnetzwerk 910 und das trainierte Verlust-Neuronalnetzwerk 912 werden dann auf die gesamte Trainingsmenge 914 angewandt oder damit laufengelassen (968 und 970). Es wird eine Klassifizierungsoperation 972 ausgeführt, um die Ausgabe sowohl des trainierten Gewinn-Neuronalnetzwerks 910 als auch des trainierten Verlust-Neuronalnetzwerks 912 wieder in Gewinnblöcke und Verlustblöcke neu aufzuteilen oder zu trennen. Die letzten Gewinnblöcke oder -daten jedes der trainierten neuronalen Netzwerke 910 und 912 werden getrennt gehalten und bilden eine aktualisierte Gewinnteilmenge (Trainingsmenge CNN Nr. 1) 974 und (Trainingsmenge CNN Nr. 2) 976, während die Verlustblöcke oder -daten aus beiden trainierten neuronalen Netzwerken 910 und 912 zu einer einzigen Verlustteilmenge (Trainingsmenge CNN Nr. 3) 920 zusammengestellt werden.
  • Danach kann der Prozess 900 Training 974 und 976 der neuronalen Netzwerke 910 und 912 mit den Gewinn-Trainingsmengen 974 bzw. 976 umfassen, resultierend in trainierten neuronalen Netzwerken (CNN Nr. 1) und (CNN Nr. 2) 922 und 924 jeweils für eine dritte Iteration dieser neuronalen Netzwerke. Durch Trainieren eines neuen neuronalen Netzwerks 926 (oder vorherige Iterationen) mit der letzten Verlusttrainingsmenge 920 wird ein neues Verlust-Neuronalnetzwerk gebildet.
  • Der Prozess 900 kann diese Iterationen wiederholen, bis eine gewünschte Anzahl von ACNNLF erzeugt ist und/oder die Trainingsdaten erschöpft sind. Die Trainingsdaten werden als erschöpft betrachtet, wenn jeder Trainingsblock mindestens ein trainiertes Filter aufweist, das einen Gewinn ergeben kann, und keine signifikante Verlustmenge zum Trainieren eines anderen Filters verfügbar ist. Dazu kann es kommen, wenn eine Verlustmenge nicht über eine ausreichende Anzahl von Trainingsblöcken verfügt. Wenn die gewünschte Anzahl neuronaler Netzwerke erreicht ist, aber die Trainingsdatenmenge nicht erschöpft ist, kann das letzte CNN (oder die letzten ACNNLF) Nr. 1 (922), 2 (924) und 3 (926) die Operationen des Klassifizierens und Trainings wiederholen, aber durch Aufteilen der Ausgangsdaten, die durch Anwendung der neuronalen Netzwerke auf eine neue gesamte Trainingsmenge erzeugt werden, auf dieselbe Anzahl von neuronalen Netzwerken (43) wie zuvor.
  • Ungeachtet der Anzahl der Iterationen und alternativen neuronalen Netzwerke, die bis zu diesem Punkt erzeugt werden, kann der Prozess 900 dann eine letzte Iteration oder End-Trainingsschleife umfassen. Bei der letzten Iteration werden die Ausgangsdaten aller trainierten neuronalen Netzwerke (oder ACNNLF) 922, 924 und 926 zu einer einzigen gesamten Trainingsmenge 928 zusammengestellt und die ACNNLF 922, 924 und 926 werden mit der gesamten Trainingsmenge 928 laufengelassen 980, 982 und 984 oder darauf angewandt.
  • Der Prozess 900 umfasst dann Klassifizieren 986 der Ausgangsdaten. Die Ausgabe jedes der ACNNLF 922, 924 und 926 wird somit dann wie oben für jedes ACNNLF beschrieben anfänglich in Gewinn- und Verlusttrainingsteilmengen klassifiziert 986. Die Verlustdaten oder Verlustmengen werden zu einer einzigen Kein-Gewinn-Teilmenge 936 zusammengestellt.
  • In dieser Phase wird jedoch die Gewinnteilmenge jedes Filters oder neuronalen Netzwerks (oder ACNNLF) 922, 924, 926 nochmals gegenüber allen anderen Filtern 922, 924 oder 926 evaluiert (oder durch diese laufengelassen), so dass jede Gewinnteilmenge durch jedes Filter 922, 924 und 926 laufengelassen wurde. Das entsprechende neuronale Netzwerk 938, 940 bzw. 942, das den Filtern oder neuronalen Netzwerken 922, 924 und 926 entspricht, wurde der Gewinnteilmenge zugewiesen, die demselben Filter zugeordnet ist, das unter den Gewinnteilmengen den höchsten Gewinn ergeben hat. Somit wird zum Beispiel die von ACNNLF Nr. 1 922 ausgegebene Gewinnteilmenge auch durch die ACNNLF Nr. 2 und 3 (924 und 926) laufengelassen. Dies wird für die anderen zwei Gewinnteilmengen wiederholt, so dass die ACNNLF Nr. 1, 2 und 3 jeweils drei verschiedene Gewinnteilmengen ausgeben. Unter diesen ausgegebenen Gewinnteilmengen von einem einzelnen ACNNLF, wie etwa dem ACNNLF Nr. 1 922, wird dann das ACNNLF Nr. 1 922 seiner eigenen Gewinnteilmenge mit dem höchsten Gewinn zugewiesen, und diese Teilmenge mit dem höchsten Gewinn ist die Eingabe zum Training des entsprechenden End-ACNNLF Nr. 1 938. Dies wird für alle der anderen Filter und hier die Filter (oder neuronalen Netzwerke) 924 und 926 wiederholt. Dadurch wird somit die Ausgabe aus der Anwendung der gesamten Trainingsmenge in vier Teilmengen aufgeteilt: die Teilmenge mit dem höchsten Gewinn für ACNNLF Nr. 1 930, die Teilmenge mit dem höchsten Gewinn für ACNNLF Nr. 2 932, die Teilmenge mit dem höchsten Gewinn für ACNNLF Nr. 3 934 und wie erwähnt die Teilmenge 936 mit keinem Gewinn für irgendein ACNNLF.
  • Dementsprechend kann der Prozess 900 als Nächstes Trainieren 988, 990 und 992 der neuronalen Netzwerke (oder ACNNLF) 922, 924 und 926 durch Anwendung der ACNNLF auf die Datenteilmenge mit dem höchsten Gewinn 930, 932 bzw. 934 umfassen, wodurch trainierte alternative End-Neuronalnetzwerke 938, 940 und 942 erzeugt werden.
  • Wieder mit Bezug auf den Prozess 600 kann der Prozess 600 „Anwenden alternativer neuronaler Netzwerke zur NN-Filterung am aktuellen Einzelbild im Codierer“ 616 umfassen, und insbesondere kann dann der Schlussfolgerungsmodus durchgeführt werden, wobei die drei Filter (oder eine andere Anzahl, so wie sie während des Trainings gebildet wird) auf die rekonstruierten Bilder angewandt werden. Durch eine Form empfangen die alternativen neuronalen Netzwerke rekonstruierte Bilddaten, die bereits durch die anderen drei In-Schleife-Filter, ALF, SAO-Filter und DBF, modifiziert wurden. Außerdem kann wie erwähnt die Neuronalnetzwerkfilterung Block für Block an einem Einzelbild angewandt werden, und dann Einzelbild für Einzelbild.
  • Der Prozess 600 kann „Auswählen eines alternativen neuronalen Netzwerks zur Neuronalnetzwerk-Schleifenfilter abhängig von der Ausgabe der alternativen neuronalen Netzwerke“ 618 umfassen. Eine Filtersteuerung kann dann die Ergebnisse der drei Filter testen und die Bilddaten mit dem besten Ergebnis auswählen. Dies kann eine Auswahl auf der Grundlage von Bitkosten, der Bildqualität zum Beispiel auf der Grundlage von Rauschen, Unterschiede auf Blockebene (oder Unterschiede auf anderen Ebenen) mit Originalbilddaten des aktuellen rekonstruierten Einzelbildes, wie etwa durch die Summe von Absolutdifferenzen (SAD), den mittleren quadratischen Fehler (MSE), das strukturelle Ähnlichkeitsindexmaß (SSIM), den Spitzen-Rauschabstand (PSNR), der Video-Mehrfachverfahren-Bewertungsfusion (VMAF) und so weiter umfassen.
  • Der Prozess 600 kann „Bereitstellen eines verfeinerten rekonstruierten Einzelbildes“ 620 umfassen. Gleichgültig ob im Decodierer oder im Codierer werden das verfeinerte rekonstruierte Einzelbild oder Blöcke des Einzelbildes dann einer Prädiktionseinheit oder einem Referenzeinzelbildpuffer zur Verwendung als Referenzeinzelbild zugeführt. Wenn der Decodierer die Neuronalnetzwerkfilterung durchführt, können die rekonstruierten Einzelbilder zur weiteren Verwendung in Speicher gelegt werden oder einer Vorrichtung zur Anzeige zugeführt werden.
  • Gegebenenfalls kann der Prozess 600 „Senden mindestens der Identifikation eines mindestens ausgewählten neuronalen Netzwerks zum Decodierer“ 622 umfassen, und so dass der Decodierer einfach das identifizierte neuronale Netzwerk verwenden kann, statt eine Auswahloperation unter den alternativen neuronalen Netzwerken auszuführen. Dies kann durch Verwendung von Syntax in einem oder mehreren Headern der Bilddaten, wie etwa I-Slice-Headern, durchgeführt werden. Die Syntax wird nachfolgend ausführlich beschrieben.
  • Außerdem kann der Prozess 600 gegebenenfalls „Senden mindestens eines der mehreren alternativen neuronalen Netzwerke zum Decodierer“ 624 umfassen. Bei dieser Operation können eines oder alle der alternativen neuronalen Netzwerke zum Decodierer gesendet werden, möglicherweise einschließlich der Syntax, die die Neuronalnetzwerkstruktur angibt, sowie der Filterparameter, die die Gewichte und Biase für das Neuronalnetzwerk umfassen. Einige der Einzelheiten für die Syntax der Neuronalnetzwerkstruktur werden auch nachfolgend angegeben.
  • Der Prozess 600 kann für jedes der Einzelbilder in einer Videosequenz, die zu decodieren ist und die eine ausreichende Menge an Bilddaten vorheriger Einzelbilder für das Training aufweist, wenn Online- oder Echtzeittraining erwünscht ist, wiederholt werden.
  • Mit Bezug auf 6B ist ein beispielhafter Prozess 650 zur Neuronalnetzwerk-Schleifenfilterung zur Videocodierung gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung und insbesondere für einen Decodierer ausgelegt. Der Prozess 600 kann eine oder mehrere Operationen 602-624 umfassen, die im Allgemeinen gleichmäßig beziffert sind und zum Beispiel durch die neuronalen Netzwerke 400 oder 500 und das System 200, 250 oder 1000 von 4, 5, 2A-2B bzw. 10 und bei Relevanz ausgeführt werden.
  • Der Prozess 650 kann „Erhalten mindestens eines alternativen neuronalen Netzwerks“ 652 umfassen und dies kann Erhalten der Struktur und Daten aus dem Bitstrom und gegebenenfalls durch ein Beispiel aus der Syntax umfassen. Durch andere Formen kann der Decodierer eine vorbestimmte Neuronalnetzwerkstruktur aufweisen und der Bitstrom stellt die Daten lediglich zur Auffüllung der Strukturvorlage bereit. Dies kann auch „Erhalten des ausgewählten neuronalen Netzwerks“ 654 umfassen, wenn der Bitstrom angibt, welches neuronale Netzwerk das ausgewählte alternative neuronale Netzwerk ist, und dann könnte nur dieses einzige neuronale Netzwerk bereitgestellt werden. Als Alternative erfolgt jedoch keine Bestimmung, welche Alternativen für Übertragung zum Decodierer ausgewählt wurden, und diese Operation kann dann „Erhalten mehrerer alternativer neuronaler Netzwerke“ 656 umfassen. Durch diese Form werden alle oder mehrere alternative neuronale Netzwerke im Decodierer auf der Basis der Annahme übertragen und abgerufen, dass verschiedene ACNNLF in verschiedenen CTU ausgewählt werden können, so dass alle ACNNLF-Koeffizienten dem Decodierer zur Verfügung gestellt werden sollten.
  • Dementsprechend kann der Prozess 600 gegebenenfalls „Erhalten der Identifikation mindestens eines ausgewählten neuronalen Netzwerks vom Codierer“ 658 umfassen, und bei Bereitstellung im Bitstrom. Die Identität kann in Metadaten oder Syntax von Datenheadern, wie zum Beispiel eines I-Slice-Headers, bereitgestellt werden. Die nachfolgende Syntax gibt ein Beispiel für eine solche Identifikation.
  • Der Prozess 600 kann „Anwenden von Neuronalnetzwerk(en) zur NN-Filterung am aktuellen rekonstruierten Einzelbild im Decodierer“ 660 umfassen, und dies kann abhängig davon, welche alternativen neuronalen Netzwerke durch den Decodierer empfangen wurden und ob die Identität des ausgewählten neuronalen Netzwerks auch empfangen wurde, unterschiedlich durchgeführt werden. Somit kann der Prozess 600 zum Beispiel „Anwenden des identifizierten NN“ 662 umfassen, wenn Identität und Daten des ausgewählten neuronalen Netzwerks zum Decodierer übertragen wurden. In diesem Fall kann der Prozess 600, sobald das ACNNLF angewandt ist und die rekonstruierten Daten verfeinert sind, „Bereitstellen des verfeinerten rekonstruierten Einzelbildes“ 664 umfassen. Das verfeinerte rekonstruierte Einzelbild kann als Referenzeinzelbild zur Bewegungskompensation bereitgestellt werden, um die Decodierung anderer Einzelbilder zu vervollständigen. Außerdem kann das verfeinerte rekonstruierte Einzelbild für etwaige Nachverarbeitung bereitgestellt werden, wie etwa Farbraumumsetzung, Skalierung usw., und kann dann zur weiteren Verwendung Speicher oder einer Vorrichtung zur Wiedergabe und Anzeige zugeführt werden. Dieser Prozess kann für jeden der Blöcke in einem Einzelbild und jedes der Einzelbilder in einer Videosequenz, die zu decodieren ist, wiederholt werden.
  • Syntaxentwurf. ACNNLF-Syntax
  • Die Parameter des ACNNLF können im Slice-Header signalisiert werden. Durch ein Beispiel weist bei einer Direktzugriffs- bzw. RA-Konfiguration nur ein I-Slice ACNNLF-Parameter der RAS auf. Die Steuerung von Mehrebenen-Ein/Aus (oder Freigabe) kann auf einer Slice-Ebene und CTB-Ebene für Luma- und Chroma-Komponenten angewandt werden. Im Slice-Header kann ein Syntaxelement (acnnlf_luma_slice_freigabe_flag und acnnlf_chroma_slice_freigabe _flag) verwendet werden, um ACNNLF-Freigabe/Sperrung anzugeben. Auf der CTB-Ebene existieren sowohl für Luma als auch für Chroma Zwei-Bit-Indikatoren (oder Identifikationscodes (IDC)), die angeben, dass das ACNNLF im aktuellen CTB unterstützt wird, wie als acnnlf_luma_ctb _idc und acnnlf_chroma__ctb _idc gezeigt. In der nachfolgenden Syntaxliste gibt ein Stern [*] entweder eine hinzugefügte Syntax an oder Syntax, die für das hier beschriebene anpassbare CNN-Schleifenfilterverfahren verwendet wird. Definitionen der Syntaxausdrücke können sich bereits in der Liste befinden, können aber unter der Liste angeführt werden, wenn sie nicht bereits enthalten sind. Diejenige Syntax mit Definitionen oder Verwendungen, die aus dem Namen der Syntax klar sein sollte, oder die nicht mit der hier beschriebenen NN-Filterung zusammenhängt, wird weggelassen. Eine beispielhafte Syntaxliste ist wie folgt, obwohl hier stattdessen auch andere Syntaxstrukturen verwendet werden könnten.
    Figure DE102019218837A1_0002
    sps_acnnlf_freigabe_flag gibt an, ob das anpassbare neuronale Netzwerk für die gesamte RAS oder Gruppe von Bildern freigegeben ist.
    Figure DE102019218837A1_0003
    acnnlf_luma_params_anwesend_flag gleich 1 spezifiziert, dass die acnnlf_luma_koeff ()-Syntaxstruktur anwesend sein wird. acnnlf_luma_params_anwesend_flag gleich 0 spezifiziert, dass die acnnlf luma_koeff ()-Syntaxstruktur nicht anwesend sein wird.
  • acnnlf_chroma_params_anwesend_flag gleich 1 spezifiziert, dass die acnnlf_chroma_koeff ()-Syntaxstruktur anwesend sein wird. acnnlf_chroma_params_anwesend_flag gleich 0 spezifiziert, dass die acnnlf_chroma_koeff()-Sytnaxstruktur nicht anwesend sein wird.
    Figure DE102019218837A1_0004
    Figure DE102019218837A1_0005
    Figure DE102019218837A1_0006
    Figure DE102019218837A1_0007
    Figure DE102019218837A1_0008
    Figure DE102019218837A1_0009
  • Experimentelle Ergebnisse
  • Die folgenden Abschnitte beschreiben die Einstellungen und Ergebnisse für die Experimente unter Verwendung von VTM 3.0 und andere experimentelle Parameter aus Li, Y. et al., „Methodology and reporting template for neural network coding tool testing“, JVET-L1006,2018.
  • Trainingsphase
  • Online-Training auf der Basis der Videosequenz selbst wurde für jedes Direktzugriffssegment durchgeführt. Das anfängliche I-Einzelbild und die vorherigen F-1-Einzelbilder wurden zum Training verwendet, wobei in den Experimenten F = 8 verwendet wurde. Es wurden QP-Werte {22, 27, 32, 37} verwendet. Die Neuronalnetzwerkstruktur ist die des oben beschriebenen Filters 400 oder 500 (4-5), und mit L1= 1 und L2 = 3. Tabelle 1. ACNNLF-Trainingseinstellung
    Information in Trainingsphase
    Lernrate: 0,0055
    Optimierer: ADAM
    Batch-Größe: 128
    Epoche: 148*
    Verlustfunktion: L1
    Trainings-GPU: GTX 1080 Ti
    Trainingszeit: 15 Minuten*
    Rahmen: TensorFlow
    * Gemessen mit A1/A2-Videoströmen pro RAS mit in 2 definierter Trainingsprozedur
  • Schluss folgerungsphase während Experimenten
  • In einer Schlussfolgerungsphase verwendet der Codec die Modellparameter zur Prädiktion. Im Codierer werden alle drei ACNNLF getestet, um das beste ACNNLF zu wählen. Im Decodierer wird nun das signalisierte ACNNLF für jeden CTB zur Rekonstruktion des Einzelbildes verwendet. Derzeit wird das ACNNLF-Schlussfolgerungsmodul in TensorFlow in 8 Bit Festkomma implementiert. Der Verlusttrainingsmenge-3.0-Codierer und -Decodierer ruft für Schlussfolgerungsoperationen die TensorFlow-c++-Bibliothek auf. Es werden einige zusätzliche Kosten für Speicherkopie und API-Aufrufen pro Aufruf anfallen. Somit umfasst die VTM-3.0-Laufzeit nicht ACNNLF-Trainingszeit, umfasst aber zusätzliche Verzögerung beim Aufrufen des TensorFlow-Schlussfolgerungsmoduls. Tabelle 2. ACNNLF-Schlussfolgerungsphasen-Einstellung
    Netzwerkdetails
    Ges. Ums.-Schichten Ges.-FC-Schich -ten Rahmen Param.-Num. GFLOPs Sp.P (MB) Sp.T (MB)
    Ein ACNNL F 2 0 Durch Verlusttrainingsmeng e 3.0 aufgerufenes TensorFlow-Modul 0 692×3 (Luma) Multip.: 264/Pixel 0,002 8 0,0448
    402×3 (Chroma ) Add:
    265,5/Pixe 1
  • Experimentelle Ergebnisse
  • Die Simulationen wurden gemäß gewöhnlichen JVET-Testbedingungen durchgeführt. Siehe J. Boyce, et al., „JVET common test conditions and Software reference configuration", Joint Video Expert Team, JVET-J1010. Es werden nur RA-Videosequenzen getestet, Tabelle 3 zeigt die Ergebnisse des vorgeschlagenen Schemas an Direktzugriff für Klasse A1/A2, B und C. Tabelle 3: Experimentelle Ergebnisse des vorgeschlagenen Schemas (Direktzugriff)
    Direktzugriff-Haupt 10
    Y U V CodT DecT
    Klasse A1 -2,37% -1,34% -2,77% 102% 529%
    Klasse A2 -0,45% -10,92% -6,19% 99% 355%
    Klasse B -0,49% -11,29% -10,73% 101% 384%
    Klasse C 0,12% -3,31% -1,62% 98% 254%
    Klasse E
    Insgesamt -0,70% -7,10% -5,80% 100% 361%
  • Dieses IDF präsentiert einen ACNNLF-Entwurf mit drei Klassen von auf CNN basierenden Schleifenfiltern, wobei jedes Filter nur zwei CNN-Schichten und 692 Parameter aufweist. Die drei ACNNLF werden adaptiv mit Videosequenzdaten trainiert. Für jeden CTB wird in einem Codierer das beste ACNNLF für Luma bzw. Chroma ausgewählt und einem Decodierer im codierten Strom mit einem 2-Bit-Indikator auf der CTB-Ebene angegeben. Dies wird in dem obigen CTU-Syntaxdiagramm offenbart.
  • Verglichen mit VTM-3.0-RA erzielt das vorgeschlagene ACNNLF BD-Raten von - 2,37%, -1,34% und -2,77% für Y, U bzw. V für Klasse-A1-Videosequenzen; BD-Raten von - 0,45%, -10,92% und -6,19% für Y, U bzw. V für Klasse-A2-Videosequenzen; BD-Raten von - 0,49%, -11,29% und -10,73% für Y, U bzw. V für Klasse-B-Videosequenzen und BD-Raten von 0,12%, -3,31% und -1,62% für Y, U bzw. V für Klasse-C-Videosequenzen.
  • Obwohl jede Implementierung des Beispiels der vorliegenden Prozesse oder Systeme umfassen kann, dass alle gezeigten Operationen in der dargestellten Reihenfolge unternommen werden, ist die vorliegende Offenbarung in dieser Hinsicht nicht beschränkt und in verschiedenen Beispielen kann die Implementierung beliebiger der vorliegenden Prozesse umfassen, nur eine Teilmenge der gezeigten Operationen zu unternehmen und/oder in einer anderen Reihenfolge als dargestellt.
  • Bei Implementierungen können hier beschriebene Merkmale als Reaktion auf Anweisungen unternommen werden, die durch ein oder mehrere Computerprogrammprodukte bereitgestellt werden. Solche Programmprodukte können signaltragende Medien umfassen, die Anweisungen bereitstellen, die, wenn sie zum Beispiel durch einen Prozessor ausgeführt werden, die hier beschriebene Funktionalität bereitstellen können. Die Computerprogrammprodukte können in einer beliebigen Form von einem oder mehreren maschinenlesbaren Medien bereitgestellt werden. Somit kann zum Beispiel ein Prozessor, der einen oder mehrere Prozessorkerne umfasst, ein oder mehrere hier beschriebene Merkmale als Reaktion auf Programmcode und/oder Anweisungen oder Anweisungssätze unternehmen, die dem Prozessor durch ein oder mehrere maschinenlesbare Medien zugeführt werden. Im Allgemeinen kann ein maschinenlesbares Medium Software in Form von Programmcode und/oder Anweisungen oder Anweisungssätzen zuführen, die bewirken können, dass beliebige der hier beschriebenen Vorrichtungen und/oder Systeme mindestens Teile der hier beschriebenen Merkmale implementieren. Wie bereits erwähnt kann in einer anderen Form ein nichttransitorischer Artikel, wie etwa ein nichttransitorisches computerlesbares Medium, mit beliebigen der oben erwähnten Beispiele oder anderen Beispielen verwendet werden, mit der Ausnahme, dass es nicht ein transitorisches Signal per se umfasst. Es umfasst aber andere Elemente als ein Signal per se, die Daten vorübergehend auf „transitorische“ Weise halten können, wie etwa RAM und so weiter.
  • Wie bei jeder hier beschriebenen Implementierung verwendet, bezieht sich der Ausdruck „Modul“ auf eine beliebige Kombination von Softwarelogik, Firmwarelogik und/oder Hardwarelogik, die dafür ausgelegt ist, die hier beschriebene Funktionalität bereitzustellen. Die Software kann als Softwarepaket, Code und/oder Anweisungssatz oder Anweisungen realisiert werden, und „Hardware“, so wie sie in beliebigen hier beschriebenen Implementierungen verwendet wird, kann zum Beispiel einzeln oder Kombination fest verdrahtete Schaltkreise, programmierbare Schaltkreise, Automatenschaltkreise und/oder Firmware umfassen, die durch programmierbare Schaltkreise ausgeführte Anweisungen speichert. Die Module können zusammen oder individuell als Schaltkreise realisiert werden, die einen Teil eines größeren Systems bilden, zum Beispiel einer integrierten Schaltung (IC), eines System auf einem Chip (SoC) und so weiter. Zum Beispiel kann ein Modul für die Implementierung über Software, Firmware oder Hardware der hier besprochenen Codierungssysteme in Logikschaltkreisen realisiert werden.
  • Wie in einer beliebigen hier beschriebenen Implementierung verwendet, bezieht sich der Ausdruck „Logikeinheit“ auf eine beliebige Kombination von Firmwarelogik und/oder Hardwarelogik, die dafür ausgelegt ist, die hier beschriebene Funktionalität bereitzustellen. Die „Hardware“, so wie sie in einer beliebigen hier beschriebenen Implementierung verwendet wird, wäre zum Beispiel einzeln oder in Kombination fest verdrahtete Schaltkreise, Automatenschaltkreise und/oder Firmware, die durch programmierbare Schaltkreise ausgeführte Anweisungen speichert. Die Logikeinheiten können zusammen oder individuell als Schaltkreise realisiert werden, die einen Teil eines größeren Systems bilden, zum Beispiel einer integrierten Schaltung (IC), eines System auf einem Chip (SoC) und so weiter. Zum Beispiel kann ein Modul für die Implementierung über Software, Firmware oder Hardware der hier besprochenen Codierungssysteme in Logikschaltkreisen realisiert werden. Für Durchschnittsfachleute ist erkennbar, dass durch Hardware und/oder Firmware ausgeführte Operationen als Alternative über Software implementiert werden können, die als ein Softwarepaket, Code und/oder Anweisungssatz oder Anweisungen realisiert werden kann, und auch erkennbar, dass die Logikeinheit auch einen Teil von Software zur Implementierung ihrer Funktionalität benutzen kann.
  • So wie er in einer beliebigen hier beschriebenen Implementierung verwendet wird, kann sich der Ausdruck „Komponente“ auf ein Modul oder auf eine Logikeinheit beziehen, so wie diese Ausdrücke oben beschrieben werden. Dementsprechend kann sich der Ausdruck „Komponente“ auf eine beliebige Kombination von Softwarelogik, Firmwarelogik und/oder Hardwarelogik beziehen, die dafür ausgelegt ist, die hier beschriebene Funktionalität bereitzustellen. Zum Beispiel ist für Durchschnittsfachleute erkennbar, dass durch Hardware und/oder Firmware ausgeführte Operationen als Alternative über ein Softwaremodul implementiert werden können, das als ein Softwarepaket, Code und/oder Anweisungssatz realisiert werden kann, und auch erkennbar, dass eine Logikeinheit auch einen Teil von Software zur Implementierung ihrer Funktionalität verwenden kann.
  • Mit Bezug auf 10 kann ein beispielhaftes Bildverarbeitungssystem (oder Videocodierungssystem) 1000 zur Bereitstellung von Neuronalnetzwerk-Schleifenfiltern zur Videocodierung gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung ausgelegt werden. Bei der dargestellten Implementierung kann das System 1000 einen oder mehrere Prozessoren 1003, eine oder mehrere Verarbeitungseinheiten 1030 zur Bereitstellung des hier besprochenen Codierers und Decodierers, eine oder mehrere Bildgebungsvorrichtungen 1001 zum Aufnehmen von Bildern, eine Antenne 1002 zum Empfangen oder Senden von Bilddaten, eine Anzeigevorrichtung 1005 und einen oder mehrere Speicher-Speicherungen 1004 umfassen. Prozessor(en) 1003, Speicher-Speicherung 1004 und/oder die Anzeigevorrichtung 1005 können in der Lage sein, zum Beispiel über einen Bus, Drähte oder anderen Zugriff miteinander zu kommunizieren. Bei verschiedenen Implementierungen kann die Anzeigevorrichtung 1005 in dem System 1000 integriert sein oder getrennt von dem System 1000 implementiert werden.
  • Wie in 10 gezeigt und oben besprochen, kann die Verarbeitungseinheit bzw. können die Verarbeitungseinheiten 1030 Logikmodule oder Schaltkreise 1050 mit einer Vorverarbeitungseinheit 1052, die unverarbeitete Bilddaten zur Codierung modifiziert, und einen Codierer 1054, der der Codierer 200 oder Decodierer 250 sein könnte, oder eine bestimmte Kombination dieser aufweisen. Hier ist relevant, dass der Codierer 1054 eine Decodiererschleifen(Decodierer)-Filtereinheit 1056 aufweisen kann, die eine Neuronalnetzwerkeinheit 1058 mit einer CNNLF-Einheit 1060 (verwendet, wenn das ACNNLF nicht freigegeben ist), eine ACNNLF-Einheit 1061, eine Trainingseinheit 1062 und eine Neuronalnetzwerkauswahl- (oder Ausgabe-) Auswahleinheit 1063 aufweist. Die Filtereinheit 1056 kann auch eine DBF-Einheit 1064, eine ALF-Einheit 1066, eine SAO-Einheit 1068 und eine Filtersteuerung 1063 aufweisen. Der Codierer 1054 kann auch andere Codierungseinheiten 1069 aufweisen, die nicht erwähnte Videocodierungseinheiten umfassen können, aber dennoch beliebige oder alle der anderen Einheiten des oben zum Beispiel beschriebenen Codierers 200 oder Decodierers 250 umfasst. Diese führen alle die oben ausführlich beschriebenen Aufgaben aus und wie es der Titel der Einheit nahelegt.
  • Es versteht sich, dass die in 10 dargestellten Module vielfältige Software - und/oder Hardwaremodule und/oder Module, die über Software oder Hardware oder Kombinationen davon implementiert werden können, umfassen können. Zum Beispiel können die Module als Software über Verarbeitungseinheiten 1020 implementiert werden, oder die Module können über einen dedizierten Hardwareteil implementiert werden. Außerdem kann das System 1000 auf vielfältige Weisen implementiert werden. Zum Beispiel kann das System 1000 (ausschließlich der Anzeigevorrichtung 1005) als ein einziger Chip oder eine Vorrichtung mit einem Beschleuniger oder einer Grafikprozessoreinheit (GPU) implementiert werden, die Bildsignalprozessoren (ISP), eine Quad-Kern-Zentralverarbeitungseinheit und/oder ein Modul für Speichercontrollereingabe/-ausgabe (E/A) aufweisen kann oder nicht. In anderen Beispielen kann das System 1000 (wieder ausschließlich der Anzeigevorrichtung 1005) als ein Chipsatz oder ein System auf einem Chip (SoC) implementiert werden. Es versteht sich, dass die Antenne 1002 verwendet werden könnte, um auch Bilddaten zur Codierung zu empfangen.
  • Andernfalls kann der Prozessor bzw. können die Prozessoren 1003 eine beliebige geeignete Implementierung umfassen, darunter zum Beispiel Zentralverarbeitungseinheiten (CPU), Mikroprozessor(en), Mehrkernprozessoren, anwendungsspezifische integrierte Schaltungen, Chip(s), Chipsätze, programmierbare Logikvorrichtungen, Grafikkarten, integrierte Grafik, Vielzweck-Grafikverarbeitungseinheit(en), Festfunktions-GPU, SoC, andere Beschleuniger oder dergleichen. Dies kann auch eine Pipeline umfassen oder definieren, die mehrere parallele Pipeline-Einheiten aufweist, die jeweils einen anderen großen Block verarbeiten können. Die Implementierung ist nicht auf die Ausführung von Videocodierungsaufgaben beschränkt und speziell die Neuronalnetzwerkfilter, und die Software, Firmware und/oder Hardware verwenden können, darunter Festfunktionshardware, um die sich wiederholenden Berechnungen der Neuronalnetzwerkfilter oder andere Aufgaben und vereinbar mit der obigen Beschreibung effizient ausführen können.
  • Außerdem können die Speicher-Speicherungen 1004 eine beliebige Art von Speicher sein, wie etwa flüchtiger Speicher (z. B. statischer Direktzugriffsspeicher (SRAM), dynamischer Direktzugriffsspeicher (DRAM) usw.) oder nichtflüchtiger Speicher (Flash-Speicher usw.) und so weiter. In einem nichteinschränkenden Beispiel können die Speicher-Speicherungen 1004 auch über Cache-Speicher implementiert werden.
  • Bei verschiedenen Implementierungen kann das beispielhafte Videocodierungssystem 1000 die Bildgebungsvorrichtung 1001 zum Bilden oder Empfangen aufgenommener Bilddaten verwenden. Dies kann auf verschiedene Weisen implementiert werden. Somit kann es sich in einer Form bei dem Bildverarbeitungssystem 1000 um eine oder mehrere Digitalkameras oder andere Bildaufnahmevorrichtungen handeln, und die Bildgebungsvorrichtung 1001 kann in diesem Fall die Kamerahardware und Kamerasensorsoftware, ein Modul oder eine Komponente davon sein. In anderen Beispielen kann das Videocodierungssystem 1000 eine Bildgebungsvorrichtung 1001 aufweisen, die eine oder mehrere Kameras umfasst oder sein kann, und die Logikmodule 1050 können zur weiteren Verarbeitung der Bilddaten aus der Ferne mit der Bildgebungsvorrichtung 1001 kommunizieren oder anderweitig kommunikativ damit gekoppelt sein.
  • Somit kann das Videocodierungssystem 1000 Folgendes oder ein Teil davon sein oder sich in Kommunikation damit befinden: ein Smartphone, Tablet, Laptop oder eine andere mobile Vorrichtung, wie etwa Wearables, darunter intelligente Brillen, intelligente Kopfhörer, Übungsbänder und so weiter. In beliebigen dieser Fälle kann eine solche Technologie Folgendes umfassen: eine Kamera, wie etwa ein Digitalkamerasystem, eine dedizierte Kameravorrichtung oder ein bildgebendes Telefon oder Tablet, gleichgültig, ob für Standbilder oder Videokamera, eine Kamera, die einen Vorschaubildschirm bereitstellt, oder eine bestimmte Kombination dieser. Somit kann die Bildgebungsvorrichtung 1001 in einer Form Kamerahardware und -optik umfassen, darunter einen oder mehrere Sensoren, sowie Autofokus-, Zoom-, Verschluss-, ND-Filter-, Auto-Belichtungs-, Blitz- und Betätigungssteuerelemente. Die Bildgebungsvorrichtung 1001 kann auch eine Linse, einen Bildsensor mit einem RGB-Bayer-Farbfilter, einen analogen Verstärker, einen A/D-Umsetzer, andere Komponenten zum Umsetzen von einfallendem Licht in ein Digitalsignal, dergleichen und/oder Kombinationen davon aufweisen. Das Digitalsignal kann hier auch als die unverarbeiteten Bitdaten bezeichnet werden.
  • Andere Formen wären eine Bildgebungsvorrichtung des Kamerasensortyps oder dergleichen (zum Beispiel eine Webcam oder ein Webcam-Sensor oder ein anderer Bildsensor des Typs CMOS (Complementary Metal-Oxide-Semiconductor)), ohne Verwendung einer Rot-Grün-Blau- bzw. RGB-Kamera und/oder eines Mikrofonarrays, um zu finden, wer spricht. In anderen Beispielen könnten zusätzlich zu oder als Alternative zu einem Kamerasensor eine RGB-Tiefenkamera und/oder ein Mikrofonarray verwendet werden. In einigen Beispielen kann die Bildgebungsvorrichtung 1001 mit einer Augenverfolgungskamera ausgestattet sein. Ansonsten kann die Bildgebungsvorrichtung 1001 eine beliebige andere Vorrichtung sein, die Digitalbilder aufzeichnet, anzeigt oder verarbeitet, wie etwa Videospiel-Kernels oder -Konsolen, Set-Top-Boxes und so weiter.
  • Wie dargestellt können beliebige dieser Komponenten zu Kommunikation miteinander und/oder Kommunikation mit Teilen der Logikmodule 1050 und/oder der Bildgebungsvorrichtung 1001 fähig sein. Die Prozessoren 1003 können somit kommunikativ sowohl mit der Bildgebungsvorrichtung 1001 als auch den Logikmodulen 1050 gekoppelt sein, um diese Komponenten zu betreiben. Obwohl das Bildverarbeitungssystem 1000 wie in 10 gezeigt eine bestimmte Menge von Blöcken oder Schritten umfassen kann, die bestimmten Komponenten oder Modulen zugeordnet sind, können diese Blöcke oder Schritte anderen Komponenten oder Modulen als der hier dargestellten konkreten Komponente oder dem hier dargestellten konkreten Modul zugeordnet sein.
  • Mit Bezug auf 11 kann ein beispielhaftes System 1100 gemäß der vorliegenden Offenbarung und verschiedener Implementierungen das System 1100 realisieren, und es kann ein Mediensystem sein, obwohl das System 1100 in diesem Kontext nicht beschränkt ist. Das System 1100 kann zum Beispiel in einen Personal Computer (PC), einen Laptop-Computer, einen Ultra-Laptop-Computer, ein Tablet, ein Touchpad, einen tragbaren Computer, einen Handheld-Computer, einen Palmtop-Computer, einen Personal Digital Assistant (PDA), ein Mobiltelefon, eine Kombination aus Mobiltelefon/PDA, einen Fernseher, eine intelligente Vorrichtung (z.B. ein intelligentes Telefon, ein intelligentes Tablet oder einen intelligenten Fernseher), eine mobile Internet-Vorrichtung (MID), eine Messaging-Vorrichtung, eine Datenkommunikationsvorrichtung und so weiter integriert werden.
  • In verschiedenen Implementierungen enthält das System 1100 eine Plattform 1102, die mit einer Anzeigevorrichtung 1120 gekoppelt ist. Die Plattform 1102 kann Inhalt von einer Inhaltsvorrichtung wie z. B. (einer) Inhaltsdienstvorrichtung(en) 1130 oder Inhaltszustellungsvorrichtung(en) 1140 oder anderen ähnlichen Inhaltsquellen empfangen. Eine Navigationssteuereinheit 1150, die ein oder mehrere Navigationsmerkmale enthält, kann verwendet werden, um beispielsweise mit der Plattform 1102 und/oder der Anzeigevorrichtung 1120 zusammenzuwirken. Jede dieser Komponenten ist nachstehend genauer beschrieben.
  • In verschieden Implementierungen kann die Plattform 1102 irgendeine Kombination aus einem Chipsatz 1105, einem Prozessor 1110, einem Speicher 1112, einer Speichereinrichtung 1114, und/oder Funkvorrichtung 1118 enthalten. Der Chipsatz 1105 kann die Kommunikation zwischen dem Prozessor 1110, dem Speicher 1112, der Speichervorrichtung 1114, dem Grafikteilsystem 1115, den Anwendungen 1116 und/oder der Funkvorrichtung 1118 bereitstellen. Beispielsweise kann der Chipsatz 1105 einen Speicheradapter (nicht abgebildet) enthalten, der zum Bereitstellen von Kommunikation mit der Speichereinrichtung 1114 fähig ist.
  • Der Prozessor 1110 kann als „Complex Instruction Set Computer“- (CISC-) oder „Reduced Instruction Set Computer“- (RISC-) Prozessoren, mit dem x86-Befehlssatz kompatible Prozessoren, Mehrkern- oder irgendein anderer Mikroprozessor oder zentrale Verarbeitungseinheit (CPU) implementiert sein. In verschiedenen Implementierungen kann der Prozessor 1110 ein ein oder mehrere Zweikern-Prozessoren, ein oder mehrere mobile Zweikern-Prozessoren und so weiter sein.
  • Der Speicher 1112 kann als eine flüchtige Speichervorrichtung wie z. B., ohne darauf beschränkt zu sein, ein Direktzugriffsspeicher (RAM), dynamischer Direktzugriffsspeicher (DRAM) oder statischer RAM (SRAM) implementiert sein.
  • Die Speichereinrichtung 1114 kann als eine nichtflüchtige Speichereinrichtung wie z. B., ohne darauf beschränkt zu sein, ein Magnetplattenlaufwerk, ein optisches Plattenlaufwerk, ein Bandlaufwerk, eine interne Speichervorrichtung, eine angeschlossene Speichervorrichtung, Flash-Speicher, batteriegestützter SDRAM (synchroner DRAM) und/oder über ein Netz zugängliche Speichervorrichtung implementiert sein. In verschiedenen Implementierungen kann die Speichereinrichtung 1114 Technologie enthalten, um den durch Speicherleistung verbesserten Schutz für wertvolle digitale Medien zu erhöhen, beispielsweise wenn mehrere Festplattenlaufwerke enthalten sind.
  • Das Grafikteilsystem 1115 kann Verarbeitung von Bildern wie z. B. Standbild oder Video zur Anzeige ausführen. Das Grafikteilsystem 1115 kann beispielsweise eine Grafikverarbeitungseinheit (GPU) oder eine visuelle Verarbeitungseinheit (VPU) sein. Eine analoge oder digitale Schnittstelle kann verwendet werden, um das Grafikteilsystem 1115 und die Anzeigevorrichtung 1120 kommunikationstechnisch zu koppeln. Beispielsweise kann die Schnittstelle irgendeine aus einer hochauflösenden Multimedia-Schnittstelle, DisplayPort, drahtloses HDMI und/oder drahtlose HD-konforme Techniken sein. Das Grafikteilsystem 1115 kann in den Prozessor 1110 oder den Chipsatz 1105 integriert sein. In einigen Implementierungen kann das Grafikteilsystem 1115 eine eigenständige Vorrichtung sein, die mit dem Chipsatz 1105 kommunikationstechnisch gekoppelt ist.
  • Die Grafik- und/oder Videoverarbeitungstechniken, die hier beschrieben sind, können in verschiedenen Hardware-Architekturen implementiert sein. Beispielsweise kann die Grafik- und/oder Videofunktionalität innerhalb eines Chipsatzes integriert sein. Alternativ kann ein diskreter Grafik- und/oder Videoprozessor verwendet werden. In noch einer weiteren Implementierung können die Grafik- und/oder Videofunktionen durch einen Allzweckprozessor, der einen Mehrkernprozessor enthält, bereitgestellt sein. In weiteren Ausführungsformen können die Funktionen in einem Unterhaltungsgerät implementiert sein.
  • Die Funkvorrichtung 1118 kann eine oder mehrere Funkvorrichtungen enthalten, die zum Senden und Empfangen von Signalen unter Verwendung verschiedener geeigneter drahtloser Kommunikationstechniken fähig sind. Solche Techniken können die Kommunikation über ein oder mehrere drahtlose Netze einbeziehen. Beispielhafte drahtlose Netze enthalten (ohne jedoch darauf beschränkt zu sein) drahtlose lokale Netze (WLANs), drahtlose persönliche Netze (WPANs), drahtlose Regionalnetze (WMANs), Mobilfunknetze und Satellitennetze. Beim Kommunizieren über solche Netze kann die Funkvorrichtung 1118 in Übereinstimmung mit einem oder mehreren anwendbaren Standards in irgendeiner Version arbeiten.
  • In verschiedenen Implementierungen kann die Anzeigevorrichtung 1120 irgendeine/n Monitor vom Fernsehtyp oder Anzeigevorrichtung enthalten. Die Anzeigevorrichtung 1120 kann beispielsweise einen Computer-Anzeigebildschirm, eine Anzeigevorrichtung mit berührungssensitivem Bildschirm, einen Videomonitor, eine fernsehgerätähnliche Vorrichtung und/oder ein Fernsehgerät enthalten. Die Anzeigevorrichtung 1120 kann digital und/oder analog sein. In verschiedenen Implementierungen kann die Anzeigevorrichtung 1120 eine holografische Anzeigevorrichtung sein. Außerdem kann die Anzeigevorrichtung 1120 eine transparente Oberfläche sein, die eine visuelle Projektion empfangen kann. Solche Projektionen können verschiedene Formen von Informationen, Bildern und/oder Objekten transportieren. Beispielsweise können solche Projektionen eine visuelle Überlagerung für eine Anwendung für mobile erweiterte Realität (MAR) sein. Unter der Steuerung einer oder mehrerer Software-Anwendungen 1116 kann die Plattform 1102 eine Anwenderschnittstelle 1122 auf der Anzeigevorrichtung 1120 anzeigen.
  • In verschiedenen Implementierungen können Inhaltsdienstvorrichtung(en) 1130 durch irgendeinen nationalen, internationalen und/oder unabhängigen Dienst gehostet sein und somit für die Plattform 1102 beispielsweise über das Internet zugänglich sein. Inhaltsdienstvorrichtung(en) 1130 können mit der Plattform 1102 und/oder mit der Anzeigevorrichtung 1120 gekoppelt sein. Die Plattform 1102 und/oder die Inhaltsdienstvorrichtung(en) 1130 können mit einem Netz 1160 gekoppelt sein, um Medieninformationen zu und von dem Netz 1160 zu kommunizieren (z. B. zu senden und/oder zu empfangen). Inhaltszustellungsvorrichtung(en) 1140 können auch mit der Plattform 1102 und/oder mit der Anzeigevorrichtung 1120 gekoppelt sein.
  • In verschiedenen Implementierungen können Inhaltsdienstvorrichtung(en) 1130 eine Kabelfernseh-Box, einen Personalcomputer, Netz-, Telefon-, Internet-unterstützte Vorrichtungen oder Geräte, die zum Zustellen digitaler Informationen und/oder Inhalt fähig sind, und irgendeine andere ähnliche Vorrichtung, die zum unidirektionalen oder bidirektionalen Kommunizieren von Inhalt zwischen Inhaltsanbietern und der Plattform 1102 und/oder der Anzeigevorrichtung 1120 über das Netz 1160 oder direkt fähig sind, enthalten. Es ist zu verstehen, dass der Inhalt unidirektional und/oder bidirektional zu und von irgendeiner der Komponenten in dem System 1100 und einem Inhaltsanbieter über das Netz 1160 kommuniziert werden kann. Beispiele für den Inhalt können irgendwelche Medieninformationen enthalten, die beispielsweise Video, Musik, medizinische und Spiele-Informationen und so weiter enthalten.
  • Inhaltsdienstvorrichtung(en) 1130 können den Inhalt wie z. B. ein Kabelfernsehprogramm, das Medieninformationen enthält, digitale Informationen und/oder anderen Inhalt empfangen. Beispiele für Inhaltsanbieter können irgendwelche Kabel- oder Satellitenfernsehen- oder Radio- oder Internet-Inhaltsanbieter enthalten. Die bereitgestellten Beispiele bedeuten nicht, dass sie die Implementierungen in Übereinstimmung mit der vorliegenden Offenbarung auf irgendeine Weise einschränken.
  • In verschiedenen Implementierungen kann die Plattform 1102 Steuersignale von der Navigationssteuereinheit 1150 empfangen, die eine oder mehrere Navigationsmerkmale aufweisen. Die Navigationsmerkmale der Navigationssteuereinheit 1150 können beispielsweise verwendet werden, um mit der Anwenderschnittstelle 1122 zusammenzuwirken. In verschiedenen Ausführungsformen kann die Navigationssteuereinheit 1150 eine Zeigevorrichtung sein, die eine Computer-Hardware-Komponente (insbesondere eine Vorrichtung für eine menschliche Schnittstelle) sein kann, die es einem Anwender ermöglicht, räumliche (z. B. kontinuierliche und mehrdimensionale) Daten in einen Computer einzugeben. Viele Systeme wie z. B. grafische Anwenderschnittstellen (GUI) und Fernsehgeräte und Monitore ermöglichen es dem Anwender, den Computer oder das Fernsehgerät unter Verwendung physischer Gesten zu steuern und Daten dafür bereitzustellen.
  • Bewegungen der Navigationsmerkmale der Navigationssteuereinheit 1150 können auf einer Anzeigevorrichtung (z. B. der Anzeigevorrichtung 1120) durch Bewegungen eines Zeigers, eines Cursors, eines Fokusrings oder anderer visueller Kennzeichen, die auf der Anzeigevorrichtung angezeigt werden, repliziert werden. Beispielsweise können beispielsweise unter der Steuerung von Software-Anwendungen 1116 die Navigationsmerkmale, die sich auf der Navigationssteuereinheit 1150 befinden, auf virtuelle Navigationsmerkmale, die auf der Anwenderschnittstelle 1122 angezeigt werden, abgebildet sein. In verschiedenen Ausführungsformen, kann die Navigationssteuereinheit 1150 keine separate Komponente sein, sondern kann in die Plattform 1102 und/oder die Anzeigevorrichtung 1120 integriert sein. Die vorliegende Offenbarung ist jedoch nicht auf die Elemente oder auf den Kontext, die hier gezeigt oder beschrieben sind, beschränkt.
  • In verschiedenen Implementierungen können Treiber (nicht gezeigt) Technologie enthalten, die es beispielsweise Anwendern ermöglichen, die Plattform 1102 wie z. B. ein Fernsehgerät mit dem Berühren einer Taste nach dem initialen Hochlaufen sofort an- und abschalten, wenn das aktiviert ist. Programmlogik kann es ermöglichen, dass die Plattform 1002 Inhalt zu Medienadaptern oder anderen Inhaltsdienstvorrichtung(en) 1130 oder Inhaltszustellungsvorrichtung(en) 1140 streamt, selbst wenn die Plattform „abgeschaltet“ ist. Zusätzlich kann der Chipsatz 1105 kann beispielsweise Hardware und/oder Software-Unterstützung für 5.1-Raumklang-Audio und/oder hochauflösendes 7.1-Raumklang-Audio enthalten. Treiber können einen Grafiktreiber für integrierte Grafikplattformen enthalten. In verschiedenen Ausführungsformen kann der Grafiktreiber eine „Peripheral Component Interconnect“- (PCI-) Express-Grafikkarte enthalten.
  • In verschiedenen Implementierungen können irgendeine oder mehrere der Komponenten, die in dem System 1100 gezeigt sind, integriert sein. Beispielsweise können die Plattform 1102 und die Inhaltsdienstvorrichtung(en) 1130 integriert sein, oder die Plattform 1102 und die Inhaltszustellungsvorrichtung(en) 1140 können integriert sein, oder die Plattform 1102, die Inhaltsdienstvorrichtung(en) 1130 und die Inhaltszustellungsvorrichtung(en) 1140 können beispielsweise integriert sein. In verschiedenen Ausführungsformen können die Plattform 1102 und die Anzeigevorrichtung 1120 eine integrierte Einheit sein. Die Anzeigevorrichtung 1120 und die Inhaltsdienstvorrichtung(en) 1130 können integriert sein, oder die Anzeigevorrichtung 1120 und die Inhaltszustellungsvorrichtung(en) 1140 können beispielsweise integriert sein. Diese Beispiele bedeuten nicht, dass sie die vorliegende Offenbarung einschränken.
  • In verschiedenen Ausführungsformen kann das System 1100 als ein drahtloses System, ein drahtgebundenes System oder eine Kombination aus beiden implementiert sein. Wenn es als ein drahtloses System implementiert ist, kann das System 1100 Komponenten und Schnittstellen enthalten, die zum Kommunizieren über ein drahtloses gemeinsam verwendetes Medium geeignet sind, wie z. B. eine oder mehrere Antennen, Sender, Empfänger, Sender/Empfänger, Verstärker, Filter, Steuerlogik und so weiter. Ein Beispiel für drahtlose gemeinsam verwendete Medien kann Abschnitte eines drahtlosen Spektrums, wie z. B. des RF-Spektrums, und so weiter enthalten. Wenn es als ein drahtgebundenes System implementiert ist, kann das System 1100 Komponenten und Schnittstellen enthalten, die zum Kommunizieren über drahtgebundene Kommunikationsmedien geeignet sind, wie z. B. Eingabe/Ausgabe- (I/O-) Adapter, physikalische Verbindungselemente zum Verbinden des I/O-Adapters mit einem entsprechenden drahtgebundenen Kommunikationsmedium, eine Netzschnittstellenkarte (NIC), eine Plattensteuereinheit, eine Videosteuereinheit, eine Audiosteuereinheit und dergleichen. Beispiele für drahtgebundene Kommunikationsmedien können eine Leitung, ein Kabel, Metallleitungen, eine Leiterplatte (PCB), eine Rückwandplatine, ein Schalt-Fabric, Halbleitermaterial, eine Zweidrahtleitung, ein Koaxialkabel, Lichtwellenleiter und so weiter enthalten.
  • Die Plattform 1102 kann einen oder mehrere logische oder physikalische Kanäle aufbauen, um Informationen zu kommunizieren. Die Informationen können Medieninformationen und Steuerinformationen enthalten. Medieninformationen können sich auf irgendwelche Daten beziehen, die für einen Anwender bestimmten Inhalt repräsentieren. Beispiele für Inhalt können beispielsweise Daten aus einer Sprachkonversation, einer Videokonferenz, einem Streaming-Video, einer Nachricht der elektronischen Post („Email“), einer Sprachnachricht, alphanumerische Symbole, Grafik, Bild, Video, Text und so weiter enthalten. Daten aus einer Sprachkonversation können beispielsweise Sprachinformationen, Sprechpausen, Hintergrundgeräusche, Beruhigungsgeräusche, Töne und so weiter sein. Steuerinformationen können sich auf irgendwelche Daten beziehen, die Befehle, Anweisungen und Steuerwörter, die für ein automatisiertes System bestimmt sind, repräsentieren. Beispielsweise können die Steuerinformationen verwendet werden, um Medieninformationen durch das System zu leiten oder einen Knoten anzuweisen, die Medieninformationen auf eine vorbestimmte Weise zu verarbeiten. Die Ausführungsformen sind jedoch nicht auf die Elemente oder den Kontext, die in 11 gezeigt oder beschrieben sind, beschränkt.
  • Mit Bezug auf 12 und wie oben beschrieben können die Systeme 1000 und 1100 in variierenden physikalischen Bauarten oder Formfaktoren verwirklicht sein, die eine beispielhafte Vorrichtung 1200 mit kleinem Formfaktor enthalten, die in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung ausgelegt ist. In einigen Beispielen können die Systeme 1000 oder 1100 über die Vorrichtung 1200 implementiert sein. In anderen Beispielen können andere hier diskutierte Systeme oder Abschnitte davon über die Vorrichtung 1200 implementiert sein. In verschiedenen Ausführungsformen kann beispielsweise die Vorrichtung 1200 als eine mobile Berechnungsvorrichtung, die Drahtlosfähigkeiten aufweist, implementiert sein. Eine mobile Berechnungsvorrichtung kann sich auf irgendeine Vorrichtung beziehen, die ein Verarbeitungssystem und eine mobile Energiequelle oder -versorgung, wie beispielsweise eine oder mehrere Batterien, aufweist.
  • Beispiele einer mobilen Berechnungsvorrichtung können einen Personalcomputer (PC), einen Laptop-Computer, einen Ultra-Laptop-Computer, ein Tablet, ein Touchpad, einen tragbaren Computer, einen Hand-Computer, einen Palmtop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Kombination Mobiltelefon/PDA, eine intelligente Vorrichtung (z. B. Smartphone, Smart-Tablet oder intelligentes mobiles Fernsehgerät), eine Vorrichtung für mobiles Internet (MID), eine Nachrichtenübermittlungsvorrichtung, eine Datenkommunikationsvorrichtung, Kameras und so weiter enthalten.
  • Beispiele für eine mobile Berechnungsvorrichtung können ebenfalls Computer enthalten, die ausgelegt sind, um von einer Person getragen zu werden, wie z. B. Handgelenk-Computer, Finger-Computer, Brillen-Computer, Gürtelklip-Computer, Armband-Computer, Schuh-Computer, Kleidungs-Computer und andere tragbare Computer. In verschiedenen Ausführungsformen kann beispielsweise eine mobile Berechnungsvorrichtung als ein Smartphone implementiert sein, das sowohl zum Ausführen von Computer-Anwendungen als auch zur Sprachkommunikation und/oder Datenkommunikation fähig ist. Obwohl einige Ausführungsformen mit einer mobilen Berechnungsvorrichtung, die als ein Smartphone implementiert ist, als Beispiel beschrieben sein können, ist zu erkennen, dass andere Ausführungsformen auch unter Verwendung anderer drahtloser mobiler Berechnungsvorrichtungen implementiert sein können. Die Ausführungsformen sind in diesem Kontext nicht eingeschränkt.
  • Wie in 12 gezeigt ist, kann die Vorrichtung 1200 ein Gehäuse mit einer Vorderseite 1201 und einer Rückseite 1202 enthalten. Die Vorrichtung 1200 enthält eine Anzeigevorrichtung 1204, eine Eingabe/Ausgabe- (I/O-) Vorrichtung 1206 und eine integrierte Antenne 1208. Die Vorrichtung 1200 kann außerdem Navigationsmerkmale 1212 oder ein oder mehrere Mikrofone 1214 enthalten. Die I/O-Vorrichtung 1206 kann irgendeine geeignete I/O-Vorrichtung zum Eingeben von Informationen in eine mobile Berechnungsvorrichtung enthalten. Beispiele für die I/O-Vorrichtung 1206 können eine alphanumerische Tastatur, ein numerisches Tastenfeld, ein Touchpad, Eingabetasten, Knöpfe, Schalter, Mikrofone, Lautsprecher, eine Spracherkennungsvorrichtung und Software und so weiter enthalten. Informationen können außerdem mit Hilfe eines Mikrofons 201 in die Vorrichtung 1200 eingegeben werden oder können durch eine Spracherkennungsvorrichtung digitalisiert werden. Wie gezeigt kann die Vorrichtung 1200 eine Kamera 1205 (z. B. einschließlich einer Linse, einer Blende und eines Bildsensors) und einen Blitz 1210, die in die Rückseite 1202 (oder an anderer Stelle) der Vorrichtung 1200 integriert sind, enthalten.
  • Verschiedene Ausführungsformen können unter Verwendung von Hardware-Elementen und einschließlich der oben spezifizierten, die als Neuronalnetzwerk-Beschleuniger (NNA) implementiert sind, implementiert werden. Andernfalls können die Implementierungen, wenn sie nicht spezifiziert werden, als Hardware-Elemente, Software-Elemente oder eine Kombination beider implementiert werden, von Hardware-Elementen, Software-Elementen oder einer Kombination aus beiden implementiert sein. Beispiele für Hardware-Elemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten und so weiter), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD), digitale Signalprozessoren (DSP), feldprogrammierbares Gatter-Array (FPGA), Logik-Gatter, Register, Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter enthalten. Beispiele für Software können Software-Komponenten, Programme Anwendungen, Computerprogramme Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystem-Software, Middleware, Firmware, Software-Module, Routinen, Subroutinen, Funktionen, Methoden, Prozeduren, Software-Schnittstellen, Anwendungsprogrammschnittstellen (API), Befehlssätze, Rechencode, Berechnungscode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination daraus enthalten. Das Bestimmen, ob eine Ausführungsform unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert wird, kann in Übereinstimmung mit einer Anzahl von Faktoren variieren, wie z. B. der gewünschten Rechengeschwindigkeit, Leistungspegeln, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgabedatenraten, Speicherbetriebsmittel, Datenbusgeschwindigkeiten und anderen Konstruktions- oder Leistungsfähigkeitseinschränkungen.
  • Ein oder mehrere Aspekte wenigstens einer Ausführungsform können durch repräsentative Anweisungen implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die dann, wenn sie durch eine Maschine gelesen werden, bewirken, dass die Maschine Logik zum Ausführen der hier beschriebenen Techniken herstellt. Solche Repräsentationen, als IP-Kerne bezeichnet, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und verschiedenen Kunden oder Produktionsanlagen zugeführt werden, um in die Herstellungsmaschinen geladen zu werden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Obwohl hier dargelegte Merkmale mit Bezug auf verschiedene Implementierungen beschrieben wurden, soll die Beschreibung nicht im einschränkenden Sinne aufgefasst werden. Daher wird in Betracht gezogen, dass verschiedene Modifikationen der hier beschriebenen Implementierungen sowie anderer Implementierungen, die für Fachleute auf dem Gebiet, das die vorliegende Offenbarung betrifft, ersichtlich sind, in den Gedanken und Schutzumfang der vorliegenden Offenbarung fallen.
  • Die folgenden Beispiele betreffen zusätzliche Implementierungen.
  • Durch eine beispielhafte erste Implementierung umfasst ein computerimplementiertes Verfahren zur Videocodierung Erhalten von komprimierten Bilddaten mindestens eines Einzelbildes einer Videosequenz; Decodieren des mindestens einen Einzelbildes zur Bildung einer rekonstruierten Version des Einzelbildes; Anwenden mehrerer alternativer Faltungs-Neuronalnetzwerke auf mindestens denselben Teil der rekonstruierten Version des mindestens einen Einzelbildes; Auswählen eines der Faltungs-Neuronalnetzwerke auf der Basis mindestens eines Kriteriums und Verfeinern der Bilddaten des Teils, umfassend Verwendung der Ausgabe des ausgewählten Faltungs-Neuronalnetzwerks.
  • Weiterhin bezüglich der ersten Implementierung umfasst das Verfahren, dass mehrere alternative Faltungs-Neuronalnetzwerke mindestens teilweise ein anpassbares Neuronalnetzwerk-in-Schleife-Filter in einer Decodierungsschleife eines Codierers herstellen.
  • Weiterhin bezüglich der ersten Implementierung umfasst das Verfahren Angeben einer Auswahl der alternativen Faltungs-Neuronalnetzwerke in von einem Codierer zu einem entfernten Decodierer gesendeten Syntaxdaten.
  • Weiterhin bezüglich der ersten Implementierung umfasst das Verfahren, dass das Verfeinern in einem von einem Codierer entfernten Decodierer und gemäß einer durch den Codierer angegebenen Auswahl erfolgt, so dass der Decodierer das Auswählen nicht durchführen muss.
  • Weiterhin bezüglich der ersten Implementierung umfasst das Verfahren Empfangen der mehreren alternativen Faltungs-Neuronalnetzwerke und der Identifikation des ausgewählten Faltungs-Neuronalnetzwerks in einem von einem Codierer entfernten Decodierer, und dass der Decodierer das Verfeinern durchführt.
  • Weiterhin bezüglich der ersten Implementierung umfasst das Verfahren Empfangen der mehreren alternativen Faltungs-Neuronalnetzwerke und der Identifikation des ausgewählten Faltungs-Neuronalnetzwerks in einem von einem Codierer entfernten Decodierer, und dass der Decodierer das Verfeinern durchführt und dass das Verfahren umfasst, dass der Codierer alle alternativen Faltungs-Neuronalnetzwerke zu einem Decodierer sendet, ohne zu prüfen, welche alternativen neuronalen Netzwerke für einen Block ausgewählt wurden.
  • Weiterhin bezüglich der ersten Implementierung umfasst das Verfahren, dass der Codierer die mehreren alternativen Faltungs-Neuronalnetzwerke vor dem Senden der mehreren alternativen Faltungs-Neuronalnetzwerke zum Decodierer trainiert.
  • Weiterhin bezüglich der ersten Implementierung umfasst das Verfahren, dass jedes der mehreren alternativen Faltungs-Neuronalnetzwerke nur zwei Faltungsschichten aufweist.
  • Weiterhin bezüglich der ersten Implementierung umfasst das Verfahren, dass jedes der mehreren alternativen Faltungs-Neuronalnetzwerke nur zwei Faltungsschichten aufweist und dass eine Rectified-Linear-Operation an der Ausgabe der ersten Schicht der zwei Faltungsschichten ausgeführt wird.
  • Weiterhin bezüglich der ersten Implementierung umfasst das Verfahren, dass die zwei Faltungsschichten eine erste 1x1-Filterschicht und eine zweite 3x3-Filterschicht umfassen.
  • Weiterhin bezüglich der ersten Implementierung umfasst das Verfahren, dass das Auswählen während einer Laufzeit zum Abschließen eines Codierens oder Decodierens des mindestens einen Einzelbildes durchgeführt wird, umfassend Bilden einer Datenmenge zum Trainieren der Faltungs-Neuronalnetzwerke mit Bilddaten einer Menge von bereits rekonstruierten vorherigen Einzelbildern.
  • Weiterhin bezüglich der ersten Implementierung umfasst das Verfahren Erzeugen und Trainieren der mehreren alternativen Faltungs-Neuronalnetzwerke während einer Laufzeit eines Codierers und vor dem Anwenden der mehreren alternativen Faltungs-Neuronalnetzwerke auf die rekonstruierte Version des mindestens einen Einzelbildes, umfassend Anwenden eines anfänglichen neuronalen Netzwerks auf eine volle Trainingsdatenmenge zum Erhalten einer Ausgangsdatenmenge; und Aufteilen der Ausgangsdatenmenge durch mindestens ein Kriterium zur Bildung getrennter Datenmengen zum Trainieren getrennter neuronaler Netzwerke.
  • Bei einer Variante der ersten Implementierung umfasst ein computerimplementiertes Verfahren zur Videocodierung Erhalten von komprimierten Bilddaten mindestens eines Einzelbildes einer Videosequenz; Decodieren des mindestens einen Einzelbildes zur Bildung eine rekonstruierten Version des Einzelbildes und Verfeinern der Bilddaten mindestens eines Teils des mindestens einen Einzelbildes, umfassend (a) Empfangen einer Identifikation eines ausgewählten alternativen Faltungs-Neuronalnetzwerks und das unter mehreren alternativen Faltungs-Neuronalnetzwerken in einem Codierer ausgewählt und auf mindestens denselben Teil der rekonstruierten Version des mindestens einen Einzelbildes angewandt wurde, und (b) Anwenden des ausgewählten Faltungs-Neuronalnetzwerks auf den mindestens einen Teil.
  • Durch eine beispielhafte zweite Implementierung weist ein computerimplementiertes System Folgendes auf: mindestens eine Anzeige; Speicher zum Speichern von Bilddaten mindestens eines Einzelbildes einer Videosequenz; mindestens einen kommunikativ mit dem Speicher und der Anzeige gekoppelten Prozessor, wobei der mindestens eine Prozessor arbeiten soll durch: Erhalten komprimierter Bilddaten mindestens eines aktuellen Einzelbildes einer Videosequenz; Decodieren des mindestens einen aktuellen Einzelbildes zur Bildung einer rekonstruierten Version des aktuellen Einzelbildes; Trainieren mehrerer alternativer Faltungs-Neuronalnetzwerke während einer Laufzeit eines Codierers zur Ausgabe von Daten, mit denen Bilddaten der rekonstruierten Version des Einzelbildes verfeinert werden, und umfassend Herstellen einer anfänglichen Trainingsdatenmenge, die Bilddaten einer Menge von zuvor decodierten Einzelbildern umfasst, für das Decodieren des aktuellen Einzelbildes; und Anwenden der mehreren alternativen Faltungs-Neuronalnetzwerke auf die rekonstruierte Version des aktuellen Einzelbildes zur Verfeinerung der Bilddaten des aktuellen Einzelbildes.
  • Weiterhin mit Bezug auf die zweite Implementierung umfasst das System Anwenden der mehreren alternativen Faltungs-Neuronalnetzwerke auf mindestens denselben Teil der rekonstruierten Version des mindestens einen Einzelbildes; Auswählen eines der Faltungs-Neuronalnetzwerke auf der Basis mindestens eines Kriteriums und Verfeinern der Bilddaten des Teils, umfassend Verwendung der Ausgabe des ausgewählten Faltungs-Neuronalnetzwerks.
  • Weiterhin mit Bezug auf die zweite Implementierung umfasst das System, dass die Trainingsdatenmenge Daten nur von einem oder mehreren I-Einzelbildern und Einzelbilder, die das I-Einzelbild als Referenzeinzelbild verwenden, umfasst.
  • Weiterhin mit Bezug auf die zweite Implementierung umfasst das System, dass die Trainingsdatenmenge Daten nur von demselben Direktzugriffssegment oder derselben Gruppe von Bildern umfasst.
  • Weiterhin mit Bezug auf die zweite Implementierung umfasst das System, dass die Trainingsdatenmenge Daten einer vorbestimmten Anzahl von Einzelbildern vor dem aktuellen Einzelbild umfasst, ungeachtet des Einzelbildorts in einem bestimmten Direktzugriffssegment und einer bestimmten Gruppe von Bildern.
  • Weiterhin mit Bezug auf die zweite Implementierung umfasst das System, dass der mindestens eine Prozessor arbeiten soll durch Trainieren der mehreren alternativen Faltungs-Neuronalnetzwerke vor dem Anwenden der mehreren alternativen Faltungs-Neuronalnetzwerke auf die rekonstruierte Version des mindestens einen Einzelbildes, umfassend Anwenden eines anfänglichen neuronalen Netzwerks auf eine volle Trainingsdatenmenge zum Erhalten einer Ausgangsdatenmenge; und Aufteilen der Ausgangsdatenmenge durch mindestens ein Kriterium zur Bildung getrennter Datenmengen zum Trainieren getrennter neuronaler Netzwerke.
  • Als eine beispielhafte dritte Implementierung mindestens ein nichttransitorisches computerlesbares Medium, auf dem Anweisungen gespeichert sind, die wenn sie ausgeführt werden, bewirken, dass eine Datenverarbeitungsvorrichtung arbeitet durch: Erhalten komprimierter Bilddaten mindestens eines aktuellen Einzelbildes einer Videosequenz; Decodieren des mindestens einen aktuellen Einzelbildes zur Bildung einer rekonstruierten Version des aktuellen Einzelbildes; Trainieren mehrerer alternativer Faltungs-Neuronalnetzwerke während einer Laufzeit eines Codierers zur Ausgabe von Daten, mit denen Bilddaten der rekonstruierten Version des Einzelbildes verfeinert werden, und umfassend Herstellen einer anfänglichen Trainingsdatenmenge, die Bilddaten einer Menge von zuvor decodierten Einzelbildern umfasst, für das Decodieren des aktuellen Einzelbildes; und Anwenden der mehreren alternativen Faltungs-Neuronalnetzwerke auf die rekonstruierte Version des aktuellen Einzelbildes zur Verfeinerung der Bilddaten des aktuellen Einzelbildes.
  • Weiterhin mit Bezug auf die dritte Implementierung umfasst das Training Anwenden eines anfänglichen neuronalen Netzwerks auf die anfängliche Trainingsdatenmenge, Aufteilen der Ausgangsdaten des anfänglichen neuronalen Netzwerks in Teilmengen auf der Basis mindestens eines Kriteriums, Verwenden mindestens einer der Teilmengen zum Trainieren eines getrennten neuronalen Netzwerks und Wiederholen des Aufteilens und Verwendens von Teilmengen, bis eine gewünschte Anzahl von mehreren alternativen neuronalen Netzwerken erreicht ist.
  • Weiterhin mit Bezug auf die dritte Implementierung umfasst das Training Anwenden eines anfänglichen neuronalen Netzwerks auf die anfängliche Trainingsdatenmenge, Aufteilen der Ausgangsdaten des anfänglichen neuronalen Netzwerks in Teilmengen auf der Basis mindestens eines Kriteriums, Verwenden mindestens einer der Teilmengen zum Trainieren eines getrennten neuronalen Netzwerks und Wiederholen des Aufteilens und Verwendens von Teilmengen, bis eine gewünschte Anzahl von mehreren alternativen neuronalen Netzwerken erreicht ist, und wobei das Kriterium darin besteht, ob Werte der Ausgangsdaten einen Gewinn oder einen Verlust angeben, wobei sich Gewinn darauf bezieht, dass Ausgangsbilddaten bezüglich ihres Werts Originalbilddaten desselben Pixels oder Blockorts näher kommen als die eingegebenen rekonstruierten Bilddaten, und wobei sich Verlust darauf bezieht, dass sich die Ausgangsbilddaten bezüglich ihres Werts von Originalbilddaten desselben Pixels oder Blockorts weiter entfernen als die eingegebenen rekonstruierten Bilddaten.
  • Weiterhin mit Bezug auf die dritte Implementierung umfasst das Training Anwenden eines anfänglichen neuronalen Netzwerks auf die anfängliche Trainingsdatenmenge, Aufteilen der Ausgangsdaten des anfänglichen neuronalen Netzwerks in Teilmengen auf der Basis mindestens eines Kriteriums, Verwenden mindestens einer der Teilmengen zum Trainieren eines getrennten neuronalen Netzwerks und Wiederholen des Aufteilens und Verwendens von Teilmengen, bis eine gewünschte Anzahl von mehreren alternativen neuronalen Netzwerken erreicht ist, und wobei das Kriterium darin besteht, ob Werte der Ausgangsdaten einen Gewinn oder einen Verlust angeben, wobei sich Gewinn darauf bezieht, dass Ausgangsbilddaten bezüglich ihres Werts Originalbilddaten desselben Pixels oder Blockorts näher kommen als die eingegebenen rekonstruierten Bilddaten, und wobei sich Verlust darauf bezieht, dass sich die Ausgangsbilddaten bezüglich ihres Werts von Originalbilddaten desselben Pixels oder Blockorts weiter entfernen als die eingegebenen rekonstruierten Bilddaten, und nur eine verlustzugeordnete Teilmenge zum Trainieren eines neuen alternativen neuronalen Netzwerks verwendet wird, nachdem zwei alternative neuronale Netzwerke mindestens einmal trainiert sind.
  • Weiterhin mit Bezug auf die dritte Implementierung umfasst das Training Anwenden eines anfänglichen neuronalen Netzwerks auf die anfängliche Trainingsdatenmenge, Aufteilen der Ausgangsdaten des anfänglichen neuronalen Netzwerks in Teilmengen auf der Basis mindestens eines Kriteriums, Verwenden mindestens einer der Teilmengen zum Trainieren eines getrennten neuronalen Netzwerks und Wiederholen des Aufteilens und Verwendens von Teilmengen, bis eine gewünschte Anzahl von mehreren alternativen neuronalen Netzwerken erreicht ist und nachdem drei oder mehr neuronale Netzwerke hergestellt sind, wobei die Anweisungen bewirken, dass die Datenverarbeitungsvorrichtung arbeitet durch Trainieren der neuronalen Netzwerke an der Ausgangsdatenteilmenge mit dem höchsten Gewinn unter Ausgangsteilmengen von den drei neuronalen Netzwerken, die aus Anwendung der drei oder mehr neuronalen Netzwerke auf die anfängliche Trainingsmenge resultieren.
  • Weiterhin mit Bezug auf die dritte Implementierung bewirken die Anweisungen, dass die Datenverarbeitungsvorrichtung arbeitet durch Anwenden mehrerer alternativer Faltungs-Neuronalnetzwerke auf mindestens denselben Teil der rekonstruierten Version des mindestens einen Einzelbildes; Auswählen eines der Faltungs-Neuronalnetzwerke auf der Basis mindestens eines Kriteriums und Verfeinern der Bilddaten des Teils umfassend Verwendung der Ausgabe des ausgewählten Faltungs-Neuronalnetzwerks.
  • Weiterhin mit Bezug auf die dritte Implementierung umfasst die anfängliche Trainingsdatenmenge Daten einer vorbestimmten Anzahl von Einzelbildern vor einem aktuellen Einzelbild und nicht nach dem aktuellen Einzelbild, das rekonstruiert wird, und in Codierungsreihenfolge.
  • In einem weiteren Beispiel kann mindestens ein maschinenlesbares Medium, das mehrere Anweisungen umfasst, die, wenn sie auf einer Datenverarbeitungsvorrichtung ausgeführt werden, bewirken, dass die Datenverarbeitungsvorrichtung das Verfahren nach einem der obigen Beispiele ausführt.
  • In einem weiteren Beispiel kann eine Vorrichtung Mittel zum Ausführen des Verfahrens nach einem der obigen Beispiele umfassen.
  • Die obigen Beispiele können eine spezifische Kombination von Merkmalen umfassen. Die obigen Beispiele sind in dieser Hinsicht jedoch nicht beschränkt, und bei verschiedenen Implementierungen können die obigen Beispiele Unternehmen nur einer Teilmenge solcher Merkmale, Unternehmen einer anderen Reihenfolge solcher Merkmale, Unternehmen einer andere Kombination solcher Merkmale und/oder Unternehmen zusätzlicher Merkmale außer den explizit aufgelisteten Merkmalen umfassen. Zum Beispiel können alle mit Bezug auf die beispielhaften Verfahren beschriebenen Merkmale mit Bezug auf die beispielhafte Vorrichtung, das beispielhafte System und/oder die beispielhaften Artikel implementiert werden und umgekehrt.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62789952 [0001]
    • US 16/418803 [0001]
  • Zitierte Nicht-Patentliteratur
    • Siehe Hsiao, Y.L. et al.,, „AHG9: Convolutional neural network loop filter,“ JVET-K0222, Media Tek Inc., 2018; Wang, [0012]
    • Y. et al., „AHG9: Dense residual convolutional neural network based in-loop filter,“ JVET-L0242, Wuhan University, Tencent, 2018; Hashimoto [0012]
    • T. et al., „AHG9: Separable convolutional neural network filter with squeeze and excitation block,“ JVET-K0158, Sharp Corporation, 2018; und Kawamura [0012]
    • K. et al., „AHG9: Convolutional neural network filter,“ JVET L0383, KDDI Corp., 2018 [0012]
    • Siehe J. Boyce, et al., „JVET common test conditions and Software reference configuration“, Joint Video Expert Team, JVET-J1010 [0095]

Claims (25)

  1. Computerimplementiertes Verfahren zur Videocodierung, umfassend: Erhalten von komprimierten Bilddaten mindestens eines Einzelbildes einer Videosequenz; Decodieren des mindestens einen Einzelbildes zur Bildung einer rekonstruierten Version des Einzelbildes; Anwenden mehrerer alternativer Faltungs-Neuronalnetzwerke auf mindestens denselben Teil der rekonstruierten Version des mindestens einen Einzelbildes; Auswählen eines der Faltungs-Neuronalnetzwerke auf der Basis mindestens eines Kriteriums und Verfeinern der Bilddaten des Teils, umfassend Verwendung der Ausgabe des ausgewählten Faltungs-Neuronalnetzwerks.
  2. Verfahren nach Anspruch 1, wobei die mehreren alternativen Faltungs-Neuronalnetzwerke mindestens teilweise ein anpassbares Neuronalnetzwerk-in-Schleife-Filter in einer Decodierungsschleife eines Codierers darstellen.
  3. Verfahren nach Anspruch 1, umfassend: Angeben einer Auswahl unter den alternativen Faltungs-Neuronalnetzwerken in von einem Codierer zu einem entfernten Decodierer übertragenen Syntaxdaten.
  4. Verfahren nach Anspruch 1, wobei das Verfeinern in einem von einem Codierer entfernten Decodierer und gemäß einer durch den Codierer angegebenen Auswahl erfolgt, so dass der Decodierer das Auswählen nicht durchführen muss.
  5. Verfahren nach Anspruch 1, umfassend: Empfangen der mehreren alternativen Faltungs-Neuronalnetzwerke und der Identifikation des ausgewählten Faltungs-Neuronalnetzwerks in einem von einem Codierer entfernten Decodierer, und dass der Decodierer das Verfeinern durchführt.
  6. Verfahren nach Anspruch 5, wobei der Codierer alle alternativen Faltungs-Neuronalnetzwerke zu einem Decodierer sendet, ohne zu prüfen, welche alternativen neuronalen Netzwerke für einen Block ausgewählt wurden.
  7. Verfahren nach Anspruch 1, wobei der Codierer die mehreren alternativen Faltungs-Neuronalnetzwerke vor dem Senden der mehreren alternativen Faltungs-Neuronalnetzwerke zum Decodierer trainiert.
  8. Verfahren nach Anspruch 1, wobei jedes der mehreren alternativen Faltungs-Neuronalnetzwerke nur zwei Faltungsschichten aufweist.
  9. Verfahren nach Anspruch 8, wobei eine Rectified-Linear-Operation an der Ausgabe einer ersten Schicht der zwei Faltungsschichten ausgeführt wird.
  10. Verfahren nach Anspruch 1, wobei die zwei Faltungsschichten eine erste 1x1-Filterschicht und eine zweite 3x3-Filterschicht umfassen.
  11. Verfahren nach Anspruch 1, wobei das Auswählen während einer Laufzeit zum Abschließen eines Codierens oder Decodierens des mindestens einen Einzelbildes durchgeführt wird, umfassend Bilden einer Datenmenge zum Trainieren der Faltungs-Neuronalnetzwerke mit Bilddaten einer Menge von bereits rekonstruierten vorherigen Einzelbildern.
  12. Verfahren nach Anspruch 1, umfassend: Erzeugen und Trainieren der mehreren alternativen Faltungs-Neuronalnetzwerke während einer Laufzeit eines Codierers und vor dem Anwenden der mehreren alternativen Faltungs-Neuronalnetzwerke auf die rekonstruierte Version des mindestens einen Einzelbildes, umfassend Anwenden eines anfänglichen neuronalen Netzwerks auf eine volle Trainingsdatenmenge zum Erhalten einer Ausgangsdatenmenge; und Aufteilen der Ausgangsdatenmenge durch mindestens ein Kriterium zur Bildung getrennter Datenmengen zum Trainieren getrennter neuronaler Netzwerke.
  13. Computerimplementiertes System, umfassend: mindestens eine Anzeige; Speicher zum Speichern von Bilddaten mindestens eines Einzelbildes einer Videosequenz; mindestens einen kommunikativ mit dem Speicher und der Anzeige gekoppelten Prozessor, wobei der mindestens eine Prozessor arbeiten soll durch: Erhalten komprimierter Bilddaten mindestens eines aktuellen Einzelbildes einer Videosequenz; Decodieren des mindestens einen aktuellen Einzelbildes zur Bildung einer rekonstruierten Version des aktuellen Einzelbildes; Trainieren mehrerer alternativer Faltungs-Neuronalnetzwerke während einer Laufzeit eines Codierers zur Ausgabe von Daten, mit denen Bilddaten der rekonstruierten Version des Einzelbildes verfeinert werden, und umfassend Herstellen einer anfänglichen Trainingsdatenmenge, die Bilddaten einer Menge von zuvor decodierten Einzelbildern umfasst, für das Decodieren des aktuellen Einzelbildes; und Anwenden der mehreren alternativen Faltungs-Neuronalnetzwerke auf die rekonstruierte Version des aktuellen Einzelbildes zur Verfeinerung der Bilddaten des aktuellen Einzelbildes.
  14. System nach Anspruch 13, umfassend: Anwenden der mehreren alternativen Faltungs-Neuronalnetzwerke auf mindestens denselben Teil der rekonstruierten Version des mindestens einen Einzelbildes; Auswählen eines der Faltungs-Neuronalnetzwerke auf der Basis mindestens eines Kriteriums und Verfeinern der Bilddaten des Teils, umfassend Verwendung der Ausgabe des ausgewählten Faltungs-Neuronalnetzwerks.
  15. System nach Anspruch 13, wobei die Trainingsdatenmenge Daten nur von einem oder mehreren I-Einzelbildern und Einzelbilder, die das I-Einzelbild als Referenzeinzelbild verwenden, umfasst.
  16. System nach Anspruch 13, wobei die Trainingsdatenmenge Daten nur von demselben Direktzugriffssegment oder derselben Gruppe von Bildern umfasst.
  17. System nach Anspruch 13, wobei die Trainingsdatenmenge Daten einer vorbestimmten Anzahl von Einzelbildern vor dem aktuellen Einzelbild umfasst, ungeachtet des Einzelbildorts in einem bestimmten Direktzugriffssegment und einer bestimmten Gruppe von Bildern.
  18. System nach Anspruch 13, wobei der mindestens eine Prozessor arbeiten soll durch Trainieren der mehreren alternativen Faltungs-Neuronalnetzwerke vor dem Anwenden der mehreren alternativen Faltungs-Neuronalnetzwerke auf die rekonstruierte Version des mindestens einen Einzelbildes, umfassend Anwenden eines anfänglichen neuronalen Netzwerks auf eine volle Trainingsdatenmenge zum Erhalten einer Ausgangsdatenmenge; und Aufteilen der Ausgangsdatenmenge durch mindestens ein Kriterium zur Bildung getrennter Datenmengen zum Trainieren getrennter neuronaler Netzwerke.
  19. Mindestens ein nichttransitorisches computerlesbares Medium, auf dem Anweisungen gespeichert sind, die, wenn sie ausgeführt werden, bewirken, dass eine Datenverarbeitungsvorrichtung arbeitet durch: Erhalten komprimierter Bilddaten mindestens eines aktuellen Einzelbildes einer Videosequenz; Decodieren des mindestens einen aktuellen Einzelbildes zur Bildung einer rekonstruierten Version des aktuellen Einzelbildes; Trainieren mehrerer alternativer Faltungs-Neuronalnetzwerke während einer Laufzeit eines Codierers zur Ausgabe von Daten, mit denen Bilddaten der rekonstruierten Version des Einzelbildes verfeinert werden, und umfassend Herstellen einer anfänglichen Trainingsdatenmenge, die Bilddaten einer Menge von zuvor decodierten Einzelbildern umfasst, für das Decodieren des aktuellen Einzelbildes; und Anwenden der mehreren alternativen Faltungs-Neuronalnetzwerke auf die rekonstruierte Version des aktuellen Einzelbildes zur Verfeinerung der Bilddaten des aktuellen Einzelbildes.
  20. Medium nach Anspruch 19, wobei das Trainieren Folgendes umfasst: Anwenden eines anfänglichen neuronalen Netzwerks auf die anfängliche Trainingsdatenmenge, Aufteilen der Ausgangsdaten des anfänglichen neuronalen Netzwerks in Teilmengen auf der Basis mindestens eines Kriteriums, Verwenden mindestens einer der Teilmengen zum Trainieren eines getrennten neuronalen Netzwerks und Wiederholen des Aufteilens und Verwendens von Teilmengen, bis eine gewünschte Anzahl von mehreren alternativen neuronalen Netzwerken erreicht ist.
  21. Medium nach Anspruch 20, wobei das Kriterium darin besteht, ob Werte der Ausgangsdaten einen Gewinn oder einen Verlust angeben, wobei sich Gewinn darauf bezieht, dass Ausgangsbilddaten bezüglich ihres Werts Originalbilddaten desselben Pixels oder Blockorts näher kommen als die eingegebenen rekonstruierten Bilddaten, und wobei sich Verlust darauf bezieht, dass sich die Ausgangsbilddaten bezüglich ihres Werts von Originalbilddaten desselben Pixels oder Blockorts weiter entfernen als die eingegebenen rekonstruierten Bilddaten.
  22. Medium nach Anspruch 21, wobei nur eine verlustzugeordnete Teilmenge zum Trainieren eines neuen alternativen neuronalen Netzwerks verwendet wird, nachdem zwei alternative neuronale Netzwerke mindestens einmal trainiert sind.
  23. Medium nach Anspruch 20, wobei, nachdem drei oder mehr neuronale Netzwerke hergestellt sind, die Anweisungen bewirken, dass die Datenverarbeitungsvorrichtung arbeitet durch Trainieren der neuronalen Netzwerke an der Ausgangsdatenteilmenge mit dem höchsten Gewinn unter Ausgangsteilmengen von den drei neuronalen Netzwerken, die aus Anwendung der drei oder mehr neuronalen Netzwerke auf die anfängliche Trainingsmenge resultieren.
  24. Mindestens ein maschinenlesbares Medium, das mehrere Anweisungen umfasst, die, wenn sie auf einer Datenverarbeitungsvorrichtung ausgeführt werden, bewirken, dass die Datenverarbeitungsvorrichtung das Verfahren nach einem der Ansprüche 1-12 ausführt.
  25. Vorrichtung mit Mitteln zum Ausführen des Verfahrens nach einem der Ansprüche 1-12.
DE102019218837.0A 2019-01-08 2019-12-04 VERFAHREN UND SYSTE M ZUR NEURONALNETZ WERK-SCHLEIFENFILTERUNG ZUR VlDEOCODIERUNG Pending DE102019218837A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962789952P 2019-01-08 2019-01-08
US62/789,952 2019-01-08
US16/418,803 US10999606B2 (en) 2019-01-08 2019-05-21 Method and system of neural network loop filtering for video coding
US16/418,803 2019-05-21

Publications (1)

Publication Number Publication Date
DE102019218837A1 true DE102019218837A1 (de) 2020-07-09

Family

ID=67767833

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019218837.0A Pending DE102019218837A1 (de) 2019-01-08 2019-12-04 VERFAHREN UND SYSTE M ZUR NEURONALNETZ WERK-SCHLEIFENFILTERUNG ZUR VlDEOCODIERUNG

Country Status (2)

Country Link
US (2) US10999606B2 (de)
DE (1) DE102019218837A1 (de)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11197013B2 (en) * 2017-07-06 2021-12-07 Samsung Electronics Co., Ltd. Method and device for encoding or decoding image
CN108419094B (zh) 2018-03-05 2021-01-29 腾讯科技(深圳)有限公司 视频处理方法、视频检索方法、装置、介质及服务器
DE102019206621A1 (de) * 2019-05-08 2020-11-12 Robert Bosch Gmbh Maschinelles Lernsystem, sowie ein Verfahren, ein Computerprogramm und eine Vorrichtung zum Erstellen des maschinellen Lernsystems
DE102019125000A1 (de) * 2019-09-17 2021-03-18 Basler Ag Verfahren zur bildverarbeitung durch ein neuronales netzwerk und verfahren zum trainieren eines neuronalen netzwerks
CN114208203A (zh) * 2019-09-20 2022-03-18 英特尔公司 基于分类器的卷积神经网络环路滤波器
JP2021061501A (ja) * 2019-10-04 2021-04-15 シャープ株式会社 動画像変換装置及び方法
WO2021073747A1 (en) * 2019-10-18 2021-04-22 Huawei Technologies Co., Ltd. Raw to rgb image transformation
CN110971784B (zh) * 2019-11-14 2022-03-25 北京达佳互联信息技术有限公司 一种视频处理方法、装置、电子设备及存储介质
KR20210067783A (ko) 2019-11-29 2021-06-08 삼성전자주식회사 전자 장치, 그 제어 방법 및 시스템
US20230052774A1 (en) * 2019-12-05 2023-02-16 Electronics And Telecommunications Research Institute Method, apparatus, and recording medium for region-based differential image encoding/decoding
CN111083498B (zh) * 2019-12-18 2021-12-21 杭州师范大学 用于视频编码帧间环路滤波的模型训练方法和使用方法
US20210192019A1 (en) * 2019-12-18 2021-06-24 Booz Allen Hamilton Inc. System and method for digital steganography purification
CN111126407B (zh) * 2019-12-23 2022-07-01 昆明理工大学 一种基于单独编码网络的机械零件语义分割方法
CN111223160A (zh) * 2020-01-02 2020-06-02 苏州瑞派宁科技有限公司 图像重建方法、装置、设备、系统及计算机可读存储介质
CN111260719B (zh) * 2020-01-09 2022-10-25 上海交通大学 一种基于神经网络算法的碰撞时间计算系统和方法
KR102126197B1 (ko) * 2020-01-29 2020-06-24 주식회사 카카오뱅크 비식별화된 이미지를 이용한 신경망 학습 방법 및 이를 제공하는 서버
CN113259671B (zh) * 2020-02-10 2022-07-15 腾讯科技(深圳)有限公司 视频编解码中的环路滤波方法、装置、设备及存储介质
CN111405283B (zh) * 2020-02-20 2022-09-02 北京大学 基于深度学习的端到端视频压缩方法、系统及存储介质
WO2021170901A1 (en) * 2020-02-24 2021-09-02 Nokia Technologies Oy A method, an apparatus and a computer program product for video encoding and video decoding
CN111476131B (zh) * 2020-03-30 2021-06-11 北京微播易科技股份有限公司 一种视频处理方法和装置
CN111652038B (zh) * 2020-04-13 2023-03-03 上海海洋大学 基于卷积神经网络的遥感的海冰图像分类方法
JP2021170727A (ja) * 2020-04-15 2021-10-28 エスゼット ディージェイアイ テクノロジー カンパニー リミテッドSz Dji Technology Co., Ltd 装置、画像処理装置、撮像装置、移動体、プログラム及び方法
US20210329306A1 (en) * 2020-04-15 2021-10-21 Nvidia Corporation Video compression using neural networks
CN111541894B (zh) * 2020-04-21 2021-04-20 电子科技大学 一种基于边缘增强残差网络的环路滤波方法
CN111523592B (zh) * 2020-04-21 2023-05-09 易元数字(北京)科技集团有限公司 一种基于深度学习的文物艺术品领域图像相似度度量方法
CN113727103B (zh) * 2020-05-25 2022-08-12 腾讯科技(深圳)有限公司 视频编码、解码方法、装置、电子设备及存储介质
CN113727106B (zh) * 2020-05-25 2024-03-26 腾讯科技(深圳)有限公司 视频编码、解码方法、装置、电子设备及存储介质
US11205077B1 (en) * 2020-05-29 2021-12-21 Arm Limited Operating on a video frame to generate a feature map of a neural network
CN113766249B (zh) * 2020-06-01 2022-05-13 腾讯科技(深圳)有限公司 视频编解码中的环路滤波方法、装置、设备及存储介质
CN111754445B (zh) * 2020-06-02 2022-03-18 国网湖北省电力有限公司宜昌供电公司 隐藏信息的光纤标签的编码解码方法及系统
CN111814548B (zh) * 2020-06-03 2022-12-09 中铁第四勘察设计院集团有限公司 一种异常行为检测方法和装置
US11949858B2 (en) * 2020-06-08 2024-04-02 Qualcomm Incorporated Video throughput improvement using long term referencing, deep learning, and load balancing
CN115918074A (zh) * 2020-06-10 2023-04-04 华为技术有限公司 基于通道间相关信息的自适应图像增强
US11611355B2 (en) * 2020-06-22 2023-03-21 Tencent America LLC Techniques for parameter set and header design for compressed neural network representation
CN111754480B (zh) * 2020-06-22 2024-04-16 上海华力微电子有限公司 晶背缺陷图检索及预警方法、存储介质及计算机设备
CN112135200B (zh) * 2020-08-13 2022-07-08 南京众智未来人工智能研究院有限公司 一种针对压缩视频的视频描述生成方法
CN114173136A (zh) * 2020-09-10 2022-03-11 Oppo广东移动通信有限公司 编码方法、解码方法、编码器、解码器以及编码系统
US11930215B2 (en) * 2020-09-29 2024-03-12 Qualcomm Incorporated Multiple neural network models for filtering during video coding
US11743459B2 (en) * 2020-09-29 2023-08-29 Qualcomm Incorporated Filtering process for video coding
US20220101095A1 (en) * 2020-09-30 2022-03-31 Lemon Inc. Convolutional neural network-based filter for video coding
US11647212B2 (en) * 2020-09-30 2023-05-09 Qualcomm Incorporated Activation function design in neural network-based filtering process for video coding
CN116250235A (zh) * 2020-10-01 2023-06-09 北京达佳互联信息技术有限公司 具有基于神经网络的环路滤波的视频编解码
US11792438B2 (en) * 2020-10-02 2023-10-17 Lemon Inc. Using neural network filtering in video coding
CN114449296B (zh) * 2020-11-06 2023-07-18 北京大学 基于卷积神经网络的环路滤波方法和装置
WO2022116085A1 (zh) * 2020-12-03 2022-06-09 Oppo广东移动通信有限公司 编码方法、解码方法、编码器、解码器以及电子设备
US11716469B2 (en) * 2020-12-10 2023-08-01 Lemon Inc. Model selection in neural network-based in-loop filter for video coding
US11838522B2 (en) * 2020-12-29 2023-12-05 Tencent America LLC Method and apparatus for video coding
US11652994B2 (en) * 2021-01-19 2023-05-16 Tencent America LLC Neural image compression with adaptive intra-prediction
US20220337824A1 (en) * 2021-04-07 2022-10-20 Beijing Dajia Internet Information Technology Co., Ltd. System and method for applying neural network based sample adaptive offset for video coding
CN113781588A (zh) * 2021-07-01 2021-12-10 杭州未名信科科技有限公司 一种基于神经网络的帧内编码单元尺寸划分方法
EP4383708A1 (de) * 2021-08-06 2024-06-12 Samsung Electronics Co., Ltd. Vorrichtung und verfahren zur ki-basierten filterung eines bildes
CN117981323A (zh) * 2021-09-29 2024-05-03 创峰科技 使用可选的基于神经网络的编码工具的视频编码
CN118077197A (zh) * 2021-10-08 2024-05-24 瑞典爱立信有限公司 组合用于视频编码和/或解码的去块滤波和另一滤波
CN114125449B (zh) * 2021-10-26 2024-06-11 阿里巴巴创新公司 基于神经网络的视频处理方法、系统和计算机可读介质
WO2023090198A1 (ja) * 2021-11-19 2023-05-25 シャープ株式会社 動画像符号化装置、動画像復号装置
WO2023092404A1 (zh) * 2021-11-25 2023-06-01 Oppo广东移动通信有限公司 视频编解码方法、设备、系统、及存储介质
CN114339409B (zh) * 2021-12-09 2023-06-20 腾讯科技(上海)有限公司 视频处理方法、装置、计算机设备及存储介质
CN114501034B (zh) * 2021-12-11 2023-08-04 同济大学 基于离散高斯混合超先验和Mask的图像压缩方法及介质
CN115842914A (zh) * 2021-12-14 2023-03-24 中兴通讯股份有限公司 环路滤波、视频编码、视频解码方法、电子设备及介质
US20230188759A1 (en) * 2021-12-14 2023-06-15 Spectrum Optix Inc. Neural Network Assisted Removal of Video Compression Artifacts
WO2023167514A1 (en) * 2022-03-03 2023-09-07 Samsung Electronics Co., Ltd. System and method for training artificial intelligence models for in-loop filters
CN114842378A (zh) * 2022-04-26 2022-08-02 南京信息技术研究院 一种基于孪生网络的多摄像头单目标追踪方法
CN117412040A (zh) * 2022-07-06 2024-01-16 维沃移动通信有限公司 环路滤波方法、装置及设备
WO2024016156A1 (zh) * 2022-07-19 2024-01-25 Oppo广东移动通信有限公司 滤波方法、编码器、解码器、码流以及存储介质
US20240121443A1 (en) * 2022-10-06 2024-04-11 Sharp Kabushiki Kaisha Systems and methods for signaling neural network post-filter information updates in video coding
WO2024077574A1 (zh) * 2022-10-13 2024-04-18 Oppo广东移动通信有限公司 基于神经网络的环路滤波、视频编解码方法、装置和系统
WO2024078598A1 (en) * 2022-10-13 2024-04-18 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing
CN115497031B (zh) * 2022-11-14 2023-06-13 广东祥利科技有限公司 基于图像处理的pvc护套料的性能检测方法及系统
CN116614637B (zh) * 2023-07-19 2023-09-12 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备以及可读存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402700B2 (en) * 2016-01-25 2019-09-03 Deepmind Technologies Limited Generating images using neural networks
US20200167972A1 (en) * 2017-05-24 2020-05-28 HELLA GmbH & Co. KGaA Method and system for automatically colorizing night-vision images
JP6956803B2 (ja) * 2017-05-26 2021-11-02 グーグル エルエルシーGoogle LLC ニューラルネットワークを使用するタイル型画像圧縮
WO2019009448A1 (ko) * 2017-07-06 2019-01-10 삼성전자 주식회사 영상을 부호화 또는 복호화하는 방법 및 장치
WO2019009449A1 (ko) * 2017-07-06 2019-01-10 삼성전자 주식회사 영상을 부호화/복호화 하는 방법 및 그 장치
US9968257B1 (en) * 2017-07-06 2018-05-15 Halsa Labs, LLC Volumetric quantification of cardiovascular structures from medical imaging
US11188794B2 (en) * 2017-08-10 2021-11-30 Intel Corporation Convolutional neural network framework using reverse connections and objectness priors for object detection
US10635858B2 (en) * 2017-09-11 2020-04-28 Nec Corporation Electronic message classification and delivery using a neural network architecture
US11094043B2 (en) * 2017-09-25 2021-08-17 The Regents Of The University Of California Generation of high dynamic range visual media
US20190289327A1 (en) * 2018-03-13 2019-09-19 Mediatek Inc. Method and Apparatus of Loop Filtering for VR360 Videos
US10736699B2 (en) * 2018-04-27 2020-08-11 Medtronic Navigation, Inc. System and method for a tracked procedure
US11109065B2 (en) * 2018-09-26 2021-08-31 Google Llc Video encoding by providing geometric proxies
EP3857515A1 (de) * 2018-09-28 2021-08-04 Mayo Foundation for Medical Education and Research Systeme und verfahren zur mehrkernsynthese und kernumwandlung in der medizinischen bildgebung
US11126330B2 (en) * 2018-10-29 2021-09-21 Autodesk, Inc. Shaped-based techniques for exploring design spaces
US10803987B2 (en) * 2018-11-16 2020-10-13 Elekta, Inc. Real-time motion monitoring using deep neural network

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
K. et al., „AHG9: Convolutional neural network filter," JVET L0383, KDDI Corp., 2018
Siehe Hsiao, Y.L. et al.,, „AHG9: Convolutional neural network loop filter," JVET-K0222, Media Tek Inc., 2018; Wang,
Siehe J. Boyce, et al., „JVET common test conditions and Software reference configuration", Joint Video Expert Team, JVET-J1010
T. et al., „AHG9: Separable convolutional neural network filter with squeeze and excitation block," JVET-K0158, Sharp Corporation, 2018; und Kawamura
Y. et al., „AHG9: Dense residual convolutional neural network based in-loop filter," JVET-L0242, Wuhan University, Tencent, 2018; Hashimoto

Also Published As

Publication number Publication date
US20210250620A1 (en) 2021-08-12
US20190273948A1 (en) 2019-09-05
US10999606B2 (en) 2021-05-04
US11438632B2 (en) 2022-09-06

Similar Documents

Publication Publication Date Title
DE102019218837A1 (de) VERFAHREN UND SYSTE M ZUR NEURONALNETZ WERK-SCHLEIFENFILTERUNG ZUR VlDEOCODIERUNG
DE102020127627A1 (de) Verfahren und System zum Videocodieren mit Intra-Block-Kopieren
DE69735838T2 (de) Videokodierer mit Transformationskoeffizientenprädiktion
DE112017003212T5 (de) Verfahren und System zur Videocodierung mit Kontextdecodierung und Rekonstruktionsumgehung
DE112018000280T5 (de) Entblockungsfilterung für 360-video
DE112016002026B4 (de) Verfahren und System zum adaptiven Referenz-Frame-Caching für die Videocodierung
DE60309375T2 (de) Parametrisierung für verlauf-kompensation
DE112010004109B4 (de) Verfahren zum Dekodieren eines Bitstroms
DE202016008175U1 (de) Adaptive gerichtete Intra-Prädiktion mit Blockgröße
DE202016008257U1 (de) Bewegungsvektorkodierung mit dynamischen Referenzbewegungsvektoren
DE102019209067A1 (de) Adaptive in-loop filtering for video coding
DE112016005457T5 (de) Effiziente, kompatible und skalierbare Intra-Video/Bild-Codierung unter Verwendung von Wavelets und HEVC-Codierung
DE102013105461A1 (de) Ratensteuerverfahren für mehrschichtige Videocodierung, sowie Videocodiervorrichtung und Videosignalverarbeitungsvorrichtung, welche das Ratensteuerverfahren verwenden
DE102016125094A1 (de) Auswahl des Referenz-Bewegungsvektors über Referenzeinzelbild Puffer-Nachverfolgung
DE102020125206A1 (de) Verfahren und system zur mehrkanalvideocodierung mit frameratenänderung und kanalübergreifender referenzierung
DE102014006433A1 (de) Codierung eines Bildes
DE602004001993T2 (de) Transformations basiertes restbewegungsrahmen kodierungsverfahren mit übervollständiger basis und zugehörige vorrichtung zur videokompression
DE112012006541B4 (de) Verfahren zur Videokompression
DE202016008178U1 (de) Bewegungsvektorvorhersage mittels eines vorhergehenden Einzelbildresiduums
DE102016125604A1 (de) Intelligente Sortierung der rekursiven Blockaufteilung für die erweiterte Intra-Prädiktion bei der Videocodierung
DE69915843T2 (de) Teilbandkodierung/-dekodierung
DE102018129344A1 (de) Bereichsadaptive, dateneffiziente Erzeugung von Partitionierungsentscheidungen und Modusentscheidungen zur Videocodierung
DE102019215911A1 (de) Adaptive inhaltsquantisierung zur videocodierung
DE202016008210U1 (de) Adaptiver direktionaler Schleifenfilter
DE102016125591A1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: HGF EUROPE LLP, DE

Representative=s name: HGF EUROPE LP, DE