A method for enhancing visual data when communicating visual data over a network from a first node to a second node, the method at the first node comprising the steps of: reducing the quality at least one section of higher-quality visual data to provide at least one section of lower-quality visual data; selecting a first neural network model having a first set of parameters from a library of pre-trained neural network models; developing a second neural network model having a second set of parameters different to the first set of parameters, wherein developing the second neural network model comprises further training the first neural network model to substantially recreate the at least one section of higher-quality visual data by increasing the resolution of the at least one corresponding section of lower-quality visual data, wherein said further training comprises calculating an error between the at least one section of higher-quality visual data and an output obtained with the first neural network model, the error being quantified by a pre-defined cost function, and adjusting the first set of parameters to minimise the error; determining a set of modifications, which when made to the first neural network model, produce the second neural network model, wherein determining the set of modifications comprises comparing the first neural network model to the second neural network model; transmitting one or more references to the first neural network model from which the second neural network model was developed; and transmitting the set of modifications, which when made to the first neural network model, produce the second neural network model, wherein the second node is able to receive the one or more references to the first neural network model, and the set of modifications, and to recreate substantially the higher-quality visual data from the lower-quality visual data using the second neural network model, and wherein the visual data comprises video or image data. reducing the quality at least one section of higher-quality visual data to provide at least one section of lower-quality visual data; selecting a first neural network model having a first set of parameters from a library of pre-trained neural network models; developing a second neural network model having a second set of parameters different to the first set of parameters, wherein developing the second neural network model comprises further training the first neural network model to substantially recreate the at least one section of higher-quality visual data by increasing the resolution of the at least one corresponding section of lower-quality visual data, wherein said further training comprises calculating an error between the at least one section of higher-quality visual data and an output obtained with the first neural network model, the error being quantified by a pre-defined cost function, and adjusting the first set of parameters to minimise the error; determining a set of modifications, which when made to the first neural network model, produce the second neural network model, wherein determining the set of modifications comprises comparing the first neural network model to the second neural network model; transmitting one or more references to the first neural network model from which the second neural network model was developed; and transmitting the set of modifications, which when made to the first neural network model, produce the second neural network model, wherein the second node is able to receive the one or more references to the first neural network model, and the set of modifications, and to recreate substantially the higher-quality visual data from the lower-quality visual data using the second neural network model, and wherein the visual data comprises video or image data.