Autoencoder for cleaning outliers in a surface

2

I have been looking at autoencoders from the keras blog here: https://blog.keras.io/building-autoencoders-in-keras.html

I was wondering, what motifications would be necessary in order to be able to give it different surfaces i.e. 2-dimensional vectors, of which some of them have large spikes.

For example here we see a surface that looks clean:

enter image description here

How could a neural network look like, if I wanted to remove individual spikes from this surface?

Am I right in thinking that a normal fully connected feed forward propagation would be sufficient? If so, is there any way to control thresholds when spikes are should be eliminated?

Also, would you agree that the training principle would still be the same as show in the keras blog? Would it work if I simply trained it with many good examples of clean surfaces to recognize themselves?

Nickpick

Posted 2017-08-09T16:00:45.103

Reputation: 601

Answers

5

A possible approach would be a denoising autoencoder. It is like a normal autoencoder but instead of training it using the same input and output, you inject noise on the input while keeping the expected output clean. Hence, the autoencoder learns to remove it. This kind of autoencoders are also described in the blog post you linked to.

In your case, you could just train your denoising autoencoder injecting to the inputs spikes of the height you expect to be removed.

About what kind of architecture (e.g. fully connected, convolutional), only actual tests can tell you what is appropriate and what is not.

noe

Posted 2017-08-09T16:00:45.103

Reputation: 10 494