The present disclosure relates to a computer-implemented method of identifying a neural network for processing data. A related non-transitory computer-readable storage medium, a system, and a device, are also disclosed.
Neural networks are employed in a wide range of applications such as image classification, speech recognition, character recognition, image analysis, natural language processing, gesture recognition and so forth. Many different types of neural network such as Convolutional Neural Networks “CNN”, Recurrent Neural Networks “RNN”, Generative Adversarial Networks “GAN”, and Autoencoders have been developed and tailored to such applications.
Neurons are the basic unit of a neural network. A neuron has one or more inputs and generates an output based on the input(s). The value of data applied to each input(s) is typically multiplied by a “weight” and the result is summed. The summed result is input into an “activation function” in order to determine the output of the neuron. The activation function also has a “bias” that controls the output of the neuron by providing a threshold to the neuron's activation. The neurons are typically arranged in layers, which may include an input layer, an output layer, and one or more hidden layers arranged between the input layer and the output layer. The weights determine the strength of the connections between the neurons in the network. The weights, the biases, and the neuron connections are examples of “trainable parameters” of the neural network that are “learnt”, or in other words, capable of being trained, during a neural network “training” process. Another example of a trainable parameter of a neural network, found particularly in neural networks that include a normalization layer, is the (batch) normalization parameter(s). During training, the (batch) normalization parameter(s) are learnt from the statistics of data flowing through the normalization layer.
A neural network also includes “hyperparameters” that are used to control the neural network training process. Depending on the type of neural network concerned, the hyperparameters may for example include one or more of: a learning rate, a decay rate, momentum, a learning schedule and a batch size. The learning rate controls the magnitude of the weight adjustments that are made during training. The batch size is defined herein as the number of data points used to train a neural network model in each iteration. Together, the hyperparameters and the trainable parameters of the neural network are defined herein as the “parameters” of the neural network.
The process of training a neural network includes adjusting the weights that connect the neurons in the neural network, as well as adjusting the biases of activation functions controlling the outputs of the neurons. There are two main approaches to training: supervised learning and unsupervised learning. Supervised learning involves providing a neural network with a training dataset that includes input data and corresponding output data. The training dataset is representative of the input data that the neural network will likely be used to analyse after training. During supervised learning the weights and the biases are automatically adjusted such that when presented with the input data, the neural network accurately provides the corresponding output data. The input data is said to be “labelled” or “classified” with the corresponding output data. In unsupervised learning the neural network decides itself how to classify or generate another type of prediction from a training dataset that includes un-labelled input data based on common features in the input data by likewise automatically adjusting the weights, and the biases. Semi-supervised learning is another approach to training wherein the training dataset includes a combination of labelled and un-labelled data. Typically the training dataset includes a minor portion of labelled data. During training the weights and biases of the neural network are automatically adjusted using guidance from the labelled data.
Whichever training process is used, training a neural network typically involves inputting a large training dataset, and making numerous of iterations of adjustments to the neural network parameters until the trained neural network provides an accurate output. As may be appreciated, significant processing resources are typically required in order to perform training. Training is usually performed using a Graphics Processing Unit “GPU” or a dedicated neural processor such as a Neural Processing Unit “NPU” or a Tensor Processing Unit “TPU”. Training therefore typically employs a centralized approach wherein cloud-based or mainframe-based neural processors are used to train a neural network. Following its training with the training dataset, the trained neural network may be deployed to a device for analysing new data; a process termed “inference”. Inference may be performed by a Central Processing Unit “CPU”, a GPU, an NPU, on a server, or in the cloud.
However, there remains a need to provide improved neural networks.
According to a first aspect of the present disclosure, there is provided a computer-implemented method of identifying a neural network for processing data.
The method includes:
According to a second aspect of the present disclosure, providing a data classifier neural network, comprises:
A non-transitory computer-readable storage medium, a system, and a device, are provided in accordance with other aspects of the disclosure. The functionality disclosed in relation to the computer-implemented method may also be implemented in the non-transitory computer-readable storage medium, and in the system, and in the device, in a corresponding manner.
Further features and advantages of the disclosure will become apparent from the following description of preferred implementations of the disclosure, given by way of example only, which is made with reference to the accompanying drawings.
Examples of the present application are provided with reference to the following description and the figures. In this description, for the purposes of explanation, numerous specific details of certain examples are set forth. Reference in the specification to “an example”, “an implementation” or similar language means that a feature, structure, or characteristic described in connection with the example is included in at least that one example. It is also to be appreciated that features described in relation to one example may also be used in another example and that all features are not necessarily duplicated for the sake of brevity. For instance, features described in relation to a computer-implemented method may be implemented in a system, and in a device, in a corresponding manner.
In the present disclosure, reference is made to examples of a neural network in the form of a Deep Feed Forward neural network. It is however to be appreciated that the disclosed method is not limited to use with this particular neural network architecture, and that the method may be used with other neural network architectures, such as for example a CNN, a RNN, a GAN, an Autoencoder, and so forth. Reference is also made to operations in which the neural network processes input data in the form of image data, and uses the image data to generate output data in the form of a predicted classification. It is to be appreciated that these example operations serve for the purpose of explanation only, and that the disclosed method is not limited to use in classifying image data. The disclosed method may be used to generate predictions in general, and the method may process other forms of input data such as audio data, motion data, vibration data, video data, text data, numerical data, financial data, light detection and ranging “LiDAR” data, and so forth.
As illustrated in
Variations of the example Feed Forward Deep neural network described above with reference to
As outlined above, the process of training a neural network includes automatically adjusting the above-described weights that connect the neurons in the neural network, as well as the biases of activation functions controlling the outputs of the neurons. In supervised learning, the neural network is presented with (training) input data that has a known classification. The input data might for instance include images of animals that have been classified with an animal “type”, such as cat, dog, horse, etc. In supervised learning, the training process automatically adjusts the weights and the biases, such that when presented with the input data, the neural network accurately provides the corresponding output data. The neural network may for example be presented with a variety of images corresponding to each class. The neural network analyses each image and predicts its classification. A difference between the predicted classification and the known classification, is used to “backpropagate” adjustments to the weights and biases in the neural network such that the predicted classification is closer to the known classification. The adjustments are made by starting from the output layer and working backwards in the network until the input layer is reached. In the first training iteration the initial weights and biases, of the neurons are often randomized. The neural network then predicts the classification, which is essentially random. Backpropagation is then used to adjust the weights and the biases. The teaching process is terminated when the difference, or error, between the predicted classification and the known classification is within an acceptable range for the training data. In a later deployment phase, the trained neural network is presented with new images without any classification. If the training process was successful, the trained neural network accurately predicts the classification of the new images.
Various algorithms are known for use in the backpropagation stage of training. Algorithms such as Stochastic Gradient Descent “SGD”, Momentum, Adam, Nadam, Adagrad, Adadelta, RMSProp, and Adamax “optimizers” have been developed specifically for this purpose. Essentially, the value of a loss function, such as the mean squared error, or the Huber loss, or the cross entropy, is determined based on a difference between the predicted classification and the known classification. The backpropagation algorithm uses the value of this loss function to adjust the weights and biases. In SGD, for example, the derivative of the loss function with respect to each weight is computed using the activation function and this is used to adjust each weight.
With reference to
After a neural network such as that described with reference to
Compression is defined herein as pruning and/or weight clustering and/or quantisation and/or performing a neural architecture search. Pruning a neural network is defined herein as the removal of one or more connections in a neural network. Pruning involves removing one or more neurons from the neural network, or removing one or more connections defined by the weights of the neural network. This may involve removing one or more of its weights entirely, or setting one or more of its weights to zero. Pruning permits a neural network to be processed faster due to the reduced number of connections, or due to the reduced computation time involved in processing zero value weights. Quantisation of a neural network involves reducing a precision of one or more of its weights or biases. Quantization may involve reducing the number of bits that are used to represent the weights—for example from 32 to 16, or changing the representation of the weights from floating point to fixed point. Quantization permits the quantized weights to be processed faster, or by a less complex processor. Weight clustering in a neural network involves identifying groups of shared weight values in the neural network and storing a common weight for each group of shared weight value. Weight clustering permits the weights to be stored with less bits, and reduces the storage requirements of the weights as well as the amount of data transferred when processing the weights. Each of the above-mentioned compression techniques act independently to accelerate or otherwise alleviate the processing requirements of the neural network. Examples techniques for pruning, quantization and weight clustering are described in a document by Han, Song et al. (2016) entitled “Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding”, arXiv:1510.00149v5, published as a conference paper at ICLR 2016. Another form of compression is to perform a neural architecture search. This involves training several neural networks having different architectures, and selecting the neural network that has the best performance. The performance may for example be defined in terms of processing throughput time, memory requirements, or another criterion.
A key factor affecting the performance of a neural network during inference is the training dataset that was used to train the neural network. A neural network programmer typically tries to provide a training dataset that provides a trained neural network that is neither under-fitted, nor over-fitted for the data classes it is intended to classify during inference. An under-fitted neural network results from the use of a training dataset that is too general for the intended data classes, and leads to inaccurate classifications during inference. An over-fitted neural network results from the use of a training dataset that is too specific to the intended data classes, and leads to inaccurate classifications of data that differs significantly from the training dataset. Increasing the size of the training dataset such that it encompasses a broad range of classes, with multiple specific examples within each class, can lead to impractical training period and/or a complex neural network model that has impractical processing requirements.
The inventors have found an improved method of identifying a neural network for processing data. The method may be used to provide a neural network such as the Deep Feed Forward neural network described above with reference to
With reference to
By clustering the training dataset 103, and using each data cluster 1041 . . . n to train a student neural network 1061 . . . n in the above manner, each trained neural network 1061 . . . n is well-suited to performing inference with data that is similar to that from its data cluster 1041 . . . n. By providing a data classifier neural network 107 that is able to identify one or more of the student neural networks 1061 . . . n to process data based on data cluster of the data, the method may be used to select a student neural network 1061 . . . n to perform inference that is suited to the data.
With reference to
The teacher neural network 105 may be any neural network that is trained to classify data. The teacher neural network may for example be a Deep Feed Forward neural network such as that described with reference to
With reference to
Various distance metrics may be used in operation S100 to determine similarities in the activation patterns in order to assign each training dataset data element to a data cluster 1041 . . . n. Distance metrics such as the sum of absolute difference “SAD”, the Sum of Squared Difference “SSD”, the Mean-Absolute Error “MAE”, the Mean-Squared Error “MSE”, the Minkowski Distance, the Euclidean Distance, and so forth may be used.
In some examples, the training datsaset 103 includes a plurality of groups of data elements, each group having a source label identifying an origin of the data elements in the group. In these examples the clustering operation S100 comprises combining the groups of data elements to provide the data clusters 1041 . . . n based on similarities in the activation patterns generated in the neurons of the teacher neural network 105 in response to inputting the data elements of each group into the teacher neural network 105. By way of a few non-limiting examples, if the training dataset 103 includes audio data from multiple speakers, the data elements might represent the words spoken by the speakers, and the source label might represent the speaker, i.e. the origin of the data elements. The words spoken by one speaker might be grouped and labelled with the source label A, i.e. representing speaker A, and the words spoken by another speaker might be grouped and labelled with the source label B, i.e. representing speaker B. In the clustering operation S100, the words spoken by each speaker would be inputted to the teacher neural network 105. The activation patterns of the words spoken by speaker A would then be collected together, and compared with the activation patterns of the words spoken by speaker B. If the activation patterns are similar, perhaps because the speakers have a similar accent, the group of words spoken by speaker A would be combined with the words spoken by speaker B to provide a data cluster, e.g. data cluster 1041. Groups of words spoken by another speaker, e.g. speaker C, would be added to the data cluster 1041 if they also have similar activation patterns to the activation patterns of the words spoken by speaker A and speaker B. Further data clusters 1042 . . . n would also be generated based on the same principles by likewise combining, from the training dataset 103, the groups of words spoken by further speakers. In this example, the clustering S100 provides a way of generating the data clusters 1041 . . . n using the source labels. The clustering operation S100 results in clusters of words spoken by speakers whose voices activate the teacher neural network 105 in similar ways, and might, for example results in a data cluster representing Scottish accents, a data cluster representing Australian accents, and so forth. Using the source labels in combination with the neural network's activation patterns to define the data clusters 1041 . . . n, in this manner therefore influences the selection of data that is used to train each student neural network 1061 . . . n. Consequently, a student network that is trained on one of the clusters may be simpler, or more accurate, in analyzing data that is similar to the data in that specific cluster than a neural network that is trained on the same amount of data from multiple clusters. In another example, if the training dataset 103 includes image data, the data elements would be the images, and the source label might represent a location of the images, e.g. a country, a county, a zip code, etc. In this example, the clustering operation S100 results in data clusters that include images from a plurality of locations, wherein the images within a data cluster activate the teacher neural network in similar ways. It might, for example, result in a data cluster 1041 with zip codes for city areas, another data cluster 1042 with zip codes for beaches, another data cluster 1043 with zip codes for party areas, another data cluster 1044 with zip codes for famous statues, and so forth. In another example, if the training dataset 103 includes video data from an autonomous vehicle camera, a source label of the data might be a country in which the car is being driven. In this example, the clustering operation S100 would cluster the video data from different countries together, and might for example result in data clusters of video data wherein each cluster includes video data from countries having a similar climate. Other source labels may alternatively be provided, and their data elements combined based on the same principles in clustering operation S100 in order to provide the data clusters 1041 . . . n. It is noted that source labels may in general be provided manually, e.g. by a user classification process, or automatically, e.g. as a property of the data collection process, and include e.g. timestamps, location stamps, user identifiers, IP geolocation data, and so forth.
In operation S110, each of a plurality of student neural networks 1061 . . . n are then trained using the teacher neural network 105. The student neural networks may be any type of neural network. In some examples the student neural networks have an architecture similar to or the same as those described above with reference to
Each student neural network 1061 . . . n is associated with a data cluster, and trained by inputting the data from the data cluster into the student neural network 1061 . . . n. In one example, the student neural network 1061 . . . n is trained by using the corresponding output that is obtained by inputting the data for its data cluster into the teacher neural network 105. The training of each student neural network 1061 . . . n in this example involves optimising parameters of the student neural network based on the output of the teacher neural network 105. In another example, the training dataset 103 includes labelled data, and the student neural network 1061 . . . n is trained using the labels of the data in the data cluster. The training of each student neural network 1061 . . . n in this example involves optimising parameters of the student neural network 1061 . . . n based on a corresponding label of the data in the data cluster. The parameters of the student neural network that are optimised in this process may include the weights, the biases, the neuron connections, and the (batch) normalization parameter(s), or in other words the “trainable parameters” of the student neural network. In more detail, in some examples, optimising the parameters of the student neural network 1061 . . . n based on the output of the teacher neural network 105, comprises adjusting parameters of the student neural network 1061 . . . n until a loss function based on a difference between the output of the student neural network 1061 . . . n and the output of the teacher neural network 105, satisfies a stopping criterion. The stopping criterion may for example be that the difference between the output generated by the teacher neural network 105 and the output of the student neural network, is within a predetermined margin. Various loss functions may be used for this purpose, including the mean squared error, the Huber loss, or the cross entropy.
In operation S120, a data classifier neural network 107 is provided for identifying S200 one or more of the trained student neural networks 1061 . . . n to process data based on a data cluster 1041 . . . n of the data. Using the above example of training data 103 in the form of audio data from multiple speakers, if the data classifier neural network 107 generates data clusters that represent e.g. Scottish accents, the operation S120 identifies a student neural network that is suited to processing audio data with Scottish accents, as the student neural network for processing the data.
In one example, providing S120 a data classifier neural network 107, comprises: inputting the training dataset 103 into the data classifier neural network 107, and training the data classifier neural network 107 to identify each data cluster 1041 . . . n in the training dataset 103 based on the corresponding data cluster 1041 . . . n provided by the clustering S100. The training of the data classifier neural network 107 to identify each data cluster 1041 . . . n in the training dataset 103, may include adjusting parameters of the data classifier neural network 107 until a loss function based on a difference between the output of the data classifier neural network 107 and the corresponding data cluster 1041 . . . n provided by the clustering S100, satisfies a stopping criterion. The stopping criterion may for example be that the difference between the output of the data classifier neural network 107 and the corresponding data cluster 1041 . . . n provided by the clustering S100, is within a predetermined margin. Various loss functions may be used for this purpose, including the mean squared error, the Huber loss, or the cross entropy.
In the first example of the method described above, the various operations, including the clustering S100 a training dataset 103, and the training S110 a student neural network 1061 . . . n, and the providing S120 a data classifier neural network 107, and the training the data classifier neural network 107, may, as illustrated in
In addition to the operations described above in relation to the first example method, the second example of a method of identifying a neural network for processing data includes the operations:
In one example, both deploying operations S130 and S150 are carried out. In another example, the second processing system may receive the data classifier neural network 107, or the one or more of the trained student neural networks 1061 . . . n via another means. For example the second processing system may be pre-installed with the data classifier neural network 107 or the one or more trained student neural networks 1061 . . . n. Alternatively, the second processing system may receive the data classifier neural network 107 or the one or more trained student neural networks 1061 . . . n from another source, such as via the internet, from a computer-readable storage medium, and so forth. The data classifier neural network 107 may be executed intermittently in order to deploy neural networks that are suited to the data clusters 1041 . . . n that are received by the second processing system 1021 . . . k, thereby permitting it to accurately perform inference when there are changes in the type of data that is processed by the second processing system. In so doing, in the second example method, the first processing system 101 deploys to each second processing system 1021 . . . k, a student neural network 1061 . . . n that is suited to the data clusters 1041 . . . n that are received by the second processing system 1021 . . . k. The second example method may therefore provide a more accurate classification of the data clusters 1041 . . . n that are received by the second processing system 1021 . . . k. The second example method permits each second processing system 1021 . . . k to operate in a secure manner. Each second processing system 1021 . . . k requests a student neural network for performing inference on data without necessarily having to send to the data on which the inference is performed to the first processing system 101. The method may therefore be used to manage the updating, and deployment of neural networks to the second processing systems 1021 . . . k with neural networks that are suited to the data in which each second processing system 1021 . . . k performs inference, in a secure way.
The deployment of the neural networks in operations S130 and S150 may take place by any means of data communication, including via wired and wireless data communication, and may be via the internet, an ethernet, or by transferring the data by means of a portable computer-readable storage medium such as a USB memory device, an optical or magnetic disk, and so forth.
The deployment of the neural networks in operations S130 and S150 in accordance with the second example method is illustrated in the system 100 of
The received data may be any type of data, such as image data and/or audio data and/or vibration data and/or video data and/or text data and/or LiDAR data, and/or numerical data. In some examples, the second processing system 1021 records a history of data clusters 1041 . . . n that are identified by the deployed data classifier neural network 107. The history may be recorded and stored in one or more computer-readable storage media in communication with the processor(s) of the second processing system 1021. The history is representative of the data clusters 1041 . . . n that a neural network operating on the second processing system 1021 will likely be used to process. In operation S140, the request is made to the first processing system 101, for the first processing system 101 to deploy to the second processing system 1021, one or more of the student neural networks depending on the history of data clusters 1041 . . . n. As an example, the second processing system 1021 may identify through its recorded history of data clusters that a neural network is likely to be used to analyse the data cluster “human faces”. Consequently, the second processing system may request, in operation S140, that first processing system deploys, in operation S150, a student neural network 1061 . . . n that is trained on the data cluster “human faces”. In so doing, the first processing device 101 deploys one or more neural networks that are suited to the data clusters 1041 . . . n that the second processing system 1021 will likely be used to process. Each second processing systems 1021 . . . k illustrated in
One or more additional processes may also be carried out in the second example method. For example, in the second example method, the deployed data classifier neural network 107 and/or each trained student neural network 1061 . . . n may be compressed prior to deployment. The second example method may therefore include compressing, using one or more processors of the first processing system 101, the data classifier neural network 107 and/or each trained student neural network 1061 . . . n, such that the one or more processors of the first processing system 101 deploy the compressed data classifier neural network 107 to the one or more processors of the second processing system 102, and/or such that responsive the request S140 from the one or more processors of the second processing system 102, the one or more processors of the first processing system 101 deploy S150 the one or more compressed trained student neural networks 1061 . . . n to the one or more processors of the second processing system 102, respectively. The compression may include performing a neural architecture search and/or pruning and/or weight clustering and/or quantisation of the respective neural network.
The compressing operation may reduce the bandwidth required by the deployment, and/or alleviate the processing requirements of the deployed data classifier neural network 107 and trained student neural network 1061 . . . n.
With reference to
In operation S170 the received data is inputted into the data classifier neural network 107. In operation S180 the received data is classified as belonging to one or more of the data clusters 1041 . . . n using the data classifier neural network 107. In operation S190, a history of the data clusters classified by the data classifier neural network 107 is recorded. The history may be recorded on a computer-readable storage medium in communication with the processor(s) of the second processing system 1021. In operation S200, one or more of the trained student neural networks 1061 . . . n are identified for processing further data received by the one or more processors of the second processing system 1021, based on the recorded history of the data clusters classified by the data classifier neural network 107.
Operation S200 results in the identification of a student neural network that is suited to processing the data cluster(s) that the second processing system 1021 is expected to process. The other example second processing systems 1022 . . . k illustrated in
The optional operations of the third example method that are illustrated with dashed outlines in
In on example, in the optional operation S210, the initial neural network 1061 . . . n, 105 that is deployed is a trained student neural network 1061 . . . n. In another example the initial neural network 1061 . . . n, 105 that is deployed in the optional operation S210 is the teacher neural network 105. Another neural network may alternatively be deployed in S210 to use as the initial neural network. The deployed initial neural network 1061 . . . n, 105 may be used to perform inference on the received data whilst the data classifier neural network 107 determines which of the trained student neural networks 1061 . . . n to identify for processing further data received by the second processing system 1021.
The third example method may also include:
The student neural network that is deployed in this manner may be periodically updated in the same manner in order to ensure that the second processing system 1021 continues to process data with a suitable neural network. This may improve the accuracy of the inference performed with the second processing system 1021, particularly when there is a change to the data that is typically inputted to the second processing system 1021.
Optionally, the initial neural network 1061 . . . n, 105 and/or the data classifier neural network 107 and/or each trained student neural network 1061 . . . n may be compressed using the processor(s) of the first processing system 101 prior to their deployment to the second processing system 1021 in operations S210, S130, S150. The compression may include performing a neural architecture search and/or pruning and/or weight clustering and/or quantisation of the respective neural network.
As mentioned above with reference to the example methods, various example systems are also provided for performing the method steps described above. With reference to FIG. 4, a first example of a system 100 for identifying a neural network for processing data, includes a first processing system 101 comprising one or more processors configured to carry out a method comprising:
The method steps carried out by the first example system are also illustrated in
With reference to
Any of the method features described above in relation to the example methods may also be carried out by the first example system or the second example system in a corresponding manner, such as for example S220 and S230 in
In accordance with a fifth example method, a method for use with a second processing system 1021 . . . k is provided. The second processing system 1021 . . . k may for example be, or be included within a so-called “edge computing” device or an Internet of Things “IOT” device, such as a laptop computer, a tablet, a mobile telephone, or a “Smart appliance” such as a smart doorbell, a smart fridge, a home assistant, a security camera, a sound detector, or a vibration detector, or an atmospheric sensors, or an “Autonomous device” such as a vehicle, or a drone, or a robot and so forth.
The fifth example method is described with reference to
In the fifth example method, a computer-implemented method of identifying, from a plurality of student neural networks 1061 . . . n trained by clustering S100 a training dataset 103 into a plurality of data clusters 1041 . . . n based on similarities in activation patterns generated in neurons of a teacher neural network 105 in response to inputting the training dataset 103 into the teacher neural network 105, and by, for each data cluster 1041 . . . n, inputting data from the data cluster into a student neural network 1061 . . . n and into the teacher neural network 105, and optimising parameters of the student neural network 1061 . . . n based on the output of the teacher neural network 105; a student neural network 1061 . . . n for processing data using one or more processors of a second processing system 1021 . . . k based on a data cluster 1041 . . . n of the data identified by a data classifier neural network 107 trained by inputting the training dataset 103 into the data classifier neural network 107, and training the data classifier neural network 107 to identify each data cluster 1041 . . . n in the training dataset 103 based on the corresponding data cluster 1041 . . . n provided by the clustering S100. The method comprises:
The fifth example method may optionally also include the steps of:
The operations in the fifth example method correspond to those described for the examples above.
With reference to
One or more non-transitory storage media 108 may be used to store in instructions to carry out the method and/or to store the history of data clusters 1041 . . . n classified by the data classifier neural network 107. The additional method steps described in relation to the fifth example method may also be carried out by the device 110.
Examples of the above-described methods may be provided by a non-transitory computer-readable storage medium comprising a set of computer-readable instructions stored thereon which, when executed by at least one processor, cause the at least one processor to perform the method. In other words, examples of the above-described methods may be provided by a computer program product. The computer program product can be provided by dedicated hardware or hardware capable of running the software in association with appropriate software. When provided by a processor, these operations can be provided by a single dedicated processor, a single shared processor, or multiple individual processors that some of the processors can share. Moreover, the explicit use of the terms “processor” or “controller” should not be interpreted as exclusively referring to hardware capable of running software, and can implicitly include, but is not limited to, digital signal processor “DSP” hardware, GPU hardware, NPU hardware, read only memory “ROM” for storing software, random access memory “RAM”, NVRAM, and the like. Furthermore, implementations of the present disclosure can take the form of a computer program product accessible from a computer usable storage medium or a computer readable storage medium, the computer program product providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable storage medium or computer-readable storage medium can be any apparatus that can comprise, store, communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system or device or device or propagation medium. Examples of computer readable media include semiconductor or solid state memories, magnetic tape, removable computer disks, random access memory “RAM”, read only memory “ROM”, rigid magnetic disks, and optical disks. Current examples of optical disks include compact disk-read only memory “CD-ROM”, optical disk-read/write “CD-R/W”, Blu-Ray™, and DVD.
The above example implementations are to be understood as illustrative examples of the present disclosure. Further implementations are also envisaged. For example, implementations described in relation to a method may also be implemented in a computer program product, in a computer readable storage medium, in a system, or in a device. It is therefore to be understood that a feature described in relation to any one implementation may be used alone, or in combination with other features described, and may also be used in combination with one or more features of another of the implementation, or a combination of other the implementations. Furthermore, equivalents and modifications not described above may also be employed without departing from the scope of the disclosure, which is defined in the accompanying claims. Any reference signs in the claims should not be construed as limiting the scope of the disclosure.