How do I use Convolutional Neural Nets to classify if there are rain drops or soil on the camera lens?
So neural nets can be quite powerful for end-to-end training. So if you have a dataset that contains both clean and dirty images, and also the classes you are trying to detect in the first place, it should be fairly straightforward to try to train you net. 

I'd proceed as follows. 


adjust the network to produce a logits vector that outputs not only the object classification but also a binary classifier for whether your image is clean or dirty. 
then adjust the labels for each image to indicate the classification label and the cleanliness of your image.
I'd then train and test on the dataset to see if a model emerges. 


The convolutional parts of your network should converge to features that are good at
A. classifying the subject of the image, and 
B. detecting whether the camera is dirty or not.

Its a good idea and I might use it myself!