Darknet多尺度尺寸简单例子剖析

#include<iostream>
#include<random>

unsigned int random_gen()
{
	unsigned int rnd = 0;
#ifdef WIN32
	rand_s(&rnd);
#else   // WIN32
	rnd = rand();
#if (RAND_MAX < 65536)
	rnd = rand()*(RAND_MAX + 1) + rnd;
#endif  //(RAND_MAX < 65536)
#endif  // WIN32
	return rnd;
}

float random_float()
{
	unsigned int rnd = 0;
#ifdef WIN32
	rand_s(&rnd);
	return ((float)rnd / (float)UINT_MAX);
#else   // WIN32

	rnd = rand();
#if (RAND_MAX < 65536)
	rnd = rand()*(RAND_MAX + 1) + rnd;
	return((float)rnd / (float)(RAND_MAX*RAND_MAX));
#endif  //(RAND_MAX < 65536)
	return ((float)rnd / (float)RAND_MAX);

#endif  // WIN32
}

float rand_uniform_strong(float min, float max)
{
	if (max < min) {
		float swap = min;
		min = max;
		max = swap;
	}
	return (random_float() * (max - min)) + min;
}

float rand_scale(float s)
{
	float scale = rand_uniform_strong(1, s);
	if (random_gen() % 2) return scale;
	return 1. / scale;
}


int main() {
	float rand_coef = 1.33;
	
	int init_w = 224;
	int init_h = 224;
	for (int i = 0; i < 20; i++)
	{
		float random_val = rand_scale(rand_coef);
		//printf("%.6f \n" , (random_val));
		int dim_w = roundl(random_val * init_w / 32 + 1) * 32;
		int dim_h = roundl(random_val * init_h / 32 + 1) * 32;
		if (random_val < 1 && (dim_w > init_w || dim_h > init_h)) dim_w = init_w, dim_h = init_h;
		printf("dim_w %d dim_h %d \n", dim_w,dim_h);
		int max_dim_w = roundl(rand_coef*init_w / 32 + 1) * 32;
		int max_dim_h = roundl(rand_coef*init_h / 32 + 1) * 32;

		//int dim_w = 
	}




	system("pause");
	return 0;
}

 输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值