Skip to content

kevinhuang06/Caffe-Data-Augmentation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

@@ -1,2 +1,93 @@

Caffe-Data-Augmentation

Image data augmentation util for Caffe

Introduction

Data augmentation is the best trick when you are training a deep network. the project implements several frequently-used methods for image task. Caffe's prefetching method makes my method costless with time. During training, u can try combinations of multiple diffrent processing , they do boost the performance. the most important things is that it is easy to set up and do any modification by yourself.

Realtime data augmentation utils

Now, the methods in the utils include :

  1. Color

  2. Contrast

  3. Brightness

  4. Rotation

how to setup

1 add two files

1)  data_augment.hpp --> include/caffe/util/

2)  data_augment.cpp --> src/caffe/util/

2 modify include/caffe/data_transformer.hpp

1) + #include "caffe/util/data_augmenter.hpp"

2)  protected: 

    +  DataAugmenter<Dtype> aug_;

3 modify src/caffe/data_transformer.cpp

1)  template<typename Dtype> DataTransformer<Dtype>::
DataTransformer(const TransformationParameter& param,Phase phase) : param_(param), phase_(phase)

    + ,aug_( param) {

2)  template<typename Dtype> void DataTransformer<Dtype>::
 Transform(const cv::Mat& cv_img,Blob<Dtype>* transformed_blob){ 

  ...

  +  if ( phase_ == TRAIN) {

  +  aug_.Transform(cv_cropped_img);

  +  }

CHECK(cv_cropped_img.data);

4 modify src/proto/caffe.proto

1)  message TransformationParameter{

  ...

  +  optional bool color = 9 [default = false];

  +  optional bool contrast = 10 [default = false];

  +  optional bool brightness = 11 [default = false];

  +  optional int32 rotation_angle_interval = 12 [default = 0];

  +  optional bool show_augment_info = 13 [default = false];

  +  optional string dir_to_save_augmented_imgs = 15;

5 compile

1)  cd build

2)  cmake ..

3)  make -j8

how to use

layer {

name: "data"

type: "ImageData"

top:  "data"

top: "label"

include {

  phase: TRAIN
  
}

transform_param
{
  mirror: true

  crop_size: 227

  mean_file: "imagenet_mean.binaryproto"

  color: true

  contrast: true

  brightness: true

  rotation_angle_interval: 10

  # show_augment_info: true

  # dir_to_save_augmented_imgs: "path"

}

image_data_param

{

  source: "/home/your/image/list.txt"

  batch_size: 32

  shuffle:true

  new_height:256

  new_width: 256

}

}

Acknowledgment

the implementation of rotation is based on @kevinlin311tw 's caffe-augmentation

PS:

if u think it's a nice project, just Star it!

About

Image data augmentation util for Caffe

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages