Solved – Blind deblurring: Can you train a neural network on artificially blurred images

computer visiondeep learningimage processingneural networks

I'm reading the paper "Blind Image Blur Estimation via Deep Learning" which was published in IEEE Transactions on Image Processing in 2016. As I understand it, the blind deblurring algorithm presented in the paper has basically three steps:

  1. Divide the blurry image into patches. For each image patch, use a classification algorithm to determine the type of blur for that patch. Possible types of blur include motion blur, Gaussian blur, and defocus blur.
  2. Once the type of blur for a given patch has been determined, use a regression algorithm (specifically GRNN) to predict the blur model parameters for that region. (Gaussian blur has a single parameter $\sigma$, for example.)
  3. Now that we know the blur kernels for all image patches, we can do a final non-blind deblurring step to recover the sharp image.

My question is about how the GRNN in step 2 is trained. For each type of blur, such as Gaussian blur, the paper trains a GRNN using a training dataset that is created by artifically blurring a lot of sharp image patches using many randomly generated parameters for the given blur model. In this way, the "ground truth" is known for all blurry image patches in the training set. This training procedure is discussed in section IV.A of the paper.

Question: Is it valid to use artificially blurred images to train the neural network? To me this seems to be too easy to be true. The main difficulty in using deep learning successfully is constructing a huge dataset of labeled data, which is often a laborious and expensive process, and the paper seems to have evaded this difficulty entirely by generating a training dataset artificially. Is that valid?

Best Answer

Most of the time training your machine learning model on simulated data is a risky proposition, since any deviation that your generated data has from the real data distribution you're trying to model will result in unwanted bias (and hence lower accuracy) in your final trained model. However here it actually sounds like a reasonable thing to do, since the post-classification deblurring step implicitly assumes that the image patches can be split up into discrete blur types, so therefore generating your data with these different blur types explicitly baked in isn't such a crazy idea.

One potential pitfall however would be, say, generating your sample data such that it contains an equal number of each of the blur types, while the actual test image patches have a highly-skewed distribution of blur types (e.g. 80% Gaussian blur, 20% other).