darknet配置参数-w/h/max_crop/min_crop

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

版权声明:本文为z0n1l2原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。