A computer implemented method of producing a system comprising a neural network for detecting attributes of electrocardiogram, ECG, signals, comprising: providing the neural network, the neural network configured to: perform at least two layers of convolution operations; determine a confidence map for the location of each of a plurality of points; and determine, from the respective confidence map, a position of each of the plurality of points or the absence thereof, the plurality of points comprising each of a P, Q, R, S and T feature in each beat of the ECG signal; providing synthetic training data for the neural network by: extracting a plurality of single ECG beats from ECG data; clustering the beats based on their similarity using a k-means algorithm, thereby defining clusters; sampling the beats uniformly across the clusters; labelling the sampled beats to provide a set of labelled beats, each labelled beat comprising a position for each of a P, Q, R, S, and T feature present in the sampled beat; and producing an expanded set of labelled beats by synthetically modifying the set of labelled beats; and training the neural network using the expanded set of labelled beats, based on an error between an output of the neural network and the position of the labels in the expanded set of labelled beats. providing the neural network, the neural network configured to: perform at least two layers of convolution operations; determine a confidence map for the location of each of a plurality of points; and determine, from the respective confidence map, a position of each of the plurality of points or the absence thereof, the plurality of points comprising each of a P, Q, R, S and T feature in each beat of the ECG signal; perform at least two layers of convolution operations; determine a confidence map for the location of each of a plurality of points; and determine, from the respective confidence map, a position of each of the plurality of points or the absence thereof, the plurality of points comprising each of a P, Q, R, S and T feature in each beat of the ECG signal; providing synthetic training data for the neural network by: extracting a plurality of single ECG beats from ECG data; clustering the beats based on their similarity using a k-means algorithm, thereby defining clusters; sampling the beats uniformly across the clusters; labelling the sampled beats to provide a set of labelled beats, each labelled beat comprising a position for each of a P, Q, R, S, and T feature present in the sampled beat; and producing an expanded set of labelled beats by synthetically modifying the set of labelled beats; and extracting a plurality of single ECG beats from ECG data; clustering the beats based on their similarity using a k-means algorithm, thereby defining clusters; sampling the beats uniformly across the clusters; labelling the sampled beats to provide a set of labelled beats, each labelled beat comprising a position for each of a P, Q, R, S, and T feature present in the sampled beat; and producing an expanded set of labelled beats by synthetically modifying the set of labelled beats; and training the neural network using the expanded set of labelled beats, based on an error between an output of the neural network and the position of the labels in the expanded set of labelled beats.