darknet的cfg文件中的参数
w/h: 最终送入网络的尺寸, 如果输入和这个不符合,则通过crop使之符合
max_crop/min_crop: 输入图的最小边需要在[min_crop,max_crop]区间内,如果输入和这个不符合,则通过缩放使之符合。另外有一对参数max_ratio/min_ratio和一对参数作用是一样的,具体参见源码
net->max_crop = option_find_int_quiet(options, "max_crop",net->w*2);
net->min_crop = option_find_int_quiet(options, "min_crop",net->w);
net->max_ratio = option_find_float_quiet(options, "max_ratio", (float) net->max_crop / net->w);
net->min_ratio = option_find_float_quiet(options, "min_ratio", (float) net->min_crop / net->w);
darknet中先缩放使最小边落到[min_crop, max_crop]区间内,然后再crop到(w,h),具体代码如下
image.c::random_augment_args()
int r = rand_int(low, high); //crop_w/crop_h
int min = (im.h < im.w*aspect) ? im.h : im.w*aspect; //图像最小边
float scale = (float)r / min; //最小边缩放到[min_crop,max_crop]区间
float rad = rand_uniform(-angle, angle) * TWO_PI / 360.;
float dx = (im.w*scale/aspect - w) / 2.; //缩放后再crop
float dy = (im.h*scale - w) / 2.;
如果输入图是(100,100),希望crop到(96,96),可以如下配置
w=96
h=96
min_crop=100
max_crop=100