功能描述
对输入的图片进行转换处理
proto文件中描述
message TransformationParameter {
optional float scale = 1 [default = 1];
optional bool mirror = 2 [default = false];
optional uint32 crop_size = 3 [default = 0];
optional string mean_file = 4;
repeated float mean_value = 5;
optional bool force_color = 6 [default = false];
optional bool force_gray = 7 [default = false];
}
描述:
scale:对输入图片的像素值做缩放的系数。例如输入图像的某一像素(RGB)值为(255,255,255),如果scale值为1/255,则缩放后变为(1,1,1)。
mirror:以图像中线为轴,进行左右反转。
crop_size:对输入图片进行随机切割。如果输入图片的大小比crop_size大,则从图片中随机剪裁crop_size大小的图片作为网络输入。
mean_file:保存要训练的图片集的均值的文件。如果是RGB就是训练集图片全部像素的R、G、B相加除训练集全部图片的像素数,结果为(Rm,Gm,Bm)。图片scale前先减该均值。
mean_vale:要训练的图片集均值。如果只配置一次,则该值被所有通道使用(各通道都减该值);如果针对每个通道要配置不同的均值,需要重复配置n次(n表示通道数)。mean_value和mean_file不能同时设定。
force_color:输入图片是否为3通道的彩色图片。
force_gray:输入图片是否为1通道的灰度图(force_gray和force_color不能同时设定为true)。
注:如果输入mean_value/mean_file,在进行scale前图片先进行减mean操作,然后进行scale。
源文件解析
src/caffe/data_transformer.cpp
include/caffe/data_transformer.hpp
代码解析
class属性描述:
TransformationParameter param_; //transform描述信息
shared_ptr<Caffe::RNG> rng_; //crop使用的随数生成器
Phase phase_; //训练or预测信息描述
Blob<Dtype> data_mean_; //存储mean_file中读取的数据
vector<Dtype> mean_values_; //存储meal_value值
class方法描述:
Transform(...) //根据param_描述的transform信息对图像进行变换
InferBlobShap(...)//根据输入的数据,推断图像转换后产生的blob形状
InitRand(...) //初始化随机数生成器