Training with Data Augmentation
Training on images with data augmentation
Deep models for image classification and object recognition are often not robust enough for production. In practice they can easily be fooled, on purpose (e.g. via adversarial samples), or not (e.g. by noisy user generated content).
DeepDetect supports strong data augmentation for its Caffe backend and training of images.
User-Generated Content (UGC)
In the real-world, user-generated content such as images from mobile phones, can be of variable quality. A deep neural network can be taught to handle such noise at training time. A common way is to add noise to the images while training. DeepDetect supports a wide range of on-the-fly transforms to accomodate UGC. Data augmentation is a common commodity to deep learning tools, some of which are detailed below.
Augmented datasets
Deep learning generalizes well from large masses of data. Data augmentation is especially useful in the situations below:
Small dataset: can be artifially augmented through data augmentation and data generation. DeepDetect supports on-the-fly data augmentation.
User Generated Content: data augmentation injects a variety of noise and distortions at training time in order to strengthen the model.
DeepDetect supports the following transforms: crop, rotation, decolorization, histogram equalization, inverse image, Gaussian blur, posterization, erosion, salt & pepper, contrast limited adaptive histogram equalization, conversion to HSV and LAB, brightness distortion, contrast distortion, saturation, HUE distortion, random permutations, perspective transforms, horizontal, vertical, zoom.
Training robust models with DeepDetect
Training a robust image model is made easy via the API. Controls are for noise
and distort
objects of the mllib
object. Both noise
and distort
can be used independently or in common.
The general control is through the selection of effects to be applied and the probability of their occurence:
Effect selection: use
all_effects:true
to select all effects, or selected effects, e.g.decolorize:true
,brightness
: true.Probability of occurence: a single
prob
parameter controls the occurence of transforms within thenoise
ordistort
objects. I.e. the effects occurence cannot be controled individually. This also means that the value ofprob
needs to be set according to the number of activated effects. Typically, fornoise
, withall_effects:true
, a good value isprob:0.01
: since they are 10 transforms in thenoise
category, there are 10 sampling steps per image, yielding a transformation every 10 images.
Note that training will of course take longer with data augmentation.
Noise augmentation
Examples of settings for noise
augmentation:
all effects
"mllib":{"noise":{"all_effects":true, "prob":0.01}}
selected effects
"mllib":{"noise":{"decolorize":true, "saltpepper":true, "prob":0.1}}
Distortions
all effects
"mllib":{"distort":{"all_effects":true, "prob":0.01}}
selected effects
"mllib":{"distort":{"brightness":true, "contrast":true, "prob":0.1}}
Perspective transforms
all effects
"mllib":{"geometry":{"all_effects":true}}
selected effects
"mllib": {"geometry": {"all_effects":false, "persp_horizontal":true, "persp_vertical":false, "zoom_in":true, "zoom_out":true", "persp_factor":0.2, "zoom_factor":0.1, "pad_mode":"mirrored", "prob":0.1}}