Hobby Projects
Denoising Signals
Methods from Machine Learning can be used in signal processing to improve the quality of noisy signals. A toy example that I have coded in PyTorch suggests that this method works well in situations where the signal has the form of Lorentz peaks. Such signals are commonly found in spectroscopy data. Qualitatively, such signals look like the following image (darker blue or red = real part, brighter blue or red = imaginary part of the signal). In real life, any measured signal will not be given by a clean, smooth line, but by a noisy one, in which the individual peaks can often hardly be seen with the naked eye.
Synthetically generated data like the above can be used to train a neural network: the network receives the noisy signal and is trained to reproduce the clean original (aka “ground truth”). The training architecture is illustrated in the figure below.
My code is openly available as a Colab Notebook here: my_notebook
. Anyone can download the code and (with a Google account) run it in the cloud and test it. The plots below show the result of a convolutional neural net with 6 layers trained to minimize the mean square error of its output and the clean signal. Clearly, the neural net reconstructs the original signal well, as can be seen by plotting the difference of the neural net output and the ground truth (bottom right).
This project is part of an ongoing collaboration (more details here on our recent abstract). A more up-to-date version of our Python code is available on the project’s GitHub page: https://github.com/frank-roesler/MRspecNET (this is still work in progress).