A method for enhancing at least a section of low-quality visual data generated by a decoding process, the method comprising steps of: training a plurality of neural networks, wherein each of the plurality of neural networks is trained on training visual data comprising low-quality training visual data with a known compression and/or quantization artefacts severity and scene classification and corresponding high-quality training visual data to substantially reproduce the training high quality visual data from the training low-quality visual data; storing the plurality of neural networks in a library along with metric data relating to the scene type classification and an artefact grade of the visual data used to train each of the neural networks; subsequently receiving, at a receiving network node, at least a section of the low-quality visual data that has been transmitted across a network; and subsequent to receiving the low quality visual data: determining a classification of a scene in the section of low quality visual data; determining a compression and/or quantization artefacts severity of the scene in the low quality visual data using an artefact grading algorithm; selecting a neural network from the plurality of neural networks stored in the library based on the classification and the determined artefact severity of the low-quality visual data; and applying the selected neural network to the low quality visual data to increase the quality of the low-quality visual data to create a section of higher-quality visual data with fewer compression and/or quantisation artefacts. training a plurality of neural networks, wherein each of the plurality of neural networks is trained on training visual data comprising low-quality training visual data with a known compression and/or quantization artefacts severity and scene classification and corresponding high-quality training visual data to substantially reproduce the training high quality visual data from the training low-quality visual data; storing the plurality of neural networks in a library along with metric data relating to the scene type classification and an artefact grade of the visual data used to train each of the neural networks; subsequently receiving, at a receiving network node, at least a section of the low-quality visual data that has been transmitted across a network; and subsequent to receiving the low quality visual data: determining a classification of a scene in the section of low quality visual data; determining a compression and/or quantization artefacts severity of the scene in the low quality visual data using an artefact grading algorithm; selecting a neural network from the plurality of neural networks stored in the library based on the classification and the determined artefact severity of the low-quality visual data; and applying the selected neural network to the low quality visual data to increase the quality of the low-quality visual data to create a section of higher-quality visual data with fewer compression and/or quantisation artefacts. determining a classification of a scene in the section of low quality visual data; determining a compression and/or quantization artefacts severity of the scene in the low quality visual data using an artefact grading algorithm; selecting a neural network from the plurality of neural networks stored in the library based on the classification and the determined artefact severity of the low-quality visual data; and applying the selected neural network to the low quality visual data to increase the quality of the low-quality visual data to create a section of higher-quality visual data with fewer compression and/or quantisation artefacts.