mirror of
https://github.com/pjreddie/darknet.git
synced 2023-08-10 21:13:14 +03:00
Fixed training with rand_s()
This commit is contained in:
36
src/data.c
36
src/data.c
@ -29,7 +29,7 @@ char **get_random_paths_indexes(char **paths, int n, int m, int *indexes)
|
|||||||
int i;
|
int i;
|
||||||
pthread_mutex_lock(&mutex);
|
pthread_mutex_lock(&mutex);
|
||||||
for(i = 0; i < n; ++i){
|
for(i = 0; i < n; ++i){
|
||||||
int index = rand()%m;
|
int index = random_gen()%m;
|
||||||
indexes[i] = index;
|
indexes[i] = index;
|
||||||
random_paths[i] = paths[index];
|
random_paths[i] = paths[index];
|
||||||
if(i == 0) printf("%s\n", paths[index]);
|
if(i == 0) printf("%s\n", paths[index]);
|
||||||
@ -39,23 +39,25 @@ char **get_random_paths_indexes(char **paths, int n, int m, int *indexes)
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int mt_seed = 0;
|
inline unsigned int random_gen()
|
||||||
|
{
|
||||||
|
unsigned int Num = 0;
|
||||||
|
rand_s(&Num);
|
||||||
|
return Num;
|
||||||
|
}
|
||||||
|
|
||||||
char **get_random_paths(char **paths, int n, int m)
|
char **get_random_paths(char **paths, int n, int m)
|
||||||
{
|
{
|
||||||
char **random_paths = calloc(n, sizeof(char*));
|
char **random_paths = calloc(n, sizeof(char*));
|
||||||
int i;
|
int i;
|
||||||
pthread_mutex_lock(&mutex);
|
pthread_mutex_lock(&mutex);
|
||||||
if (mt_seed == 0) mt_seed = time(0);
|
|
||||||
srand(mt_seed);
|
|
||||||
//printf("n = %d \n", n);
|
//printf("n = %d \n", n);
|
||||||
for(i = 0; i < n; ++i){
|
for(i = 0; i < n; ++i){
|
||||||
int index = rand()%m;
|
int index = random_gen() % m;
|
||||||
random_paths[i] = paths[index];
|
random_paths[i] = paths[index];
|
||||||
//if(i == 0) printf("%s\n", paths[index]);
|
//if(i == 0) printf("%s\n", paths[index]);
|
||||||
//printf("grp: %s\n", paths[index]);
|
//printf("grp: %s\n", paths[index]);
|
||||||
}
|
}
|
||||||
mt_seed = rand();
|
|
||||||
pthread_mutex_unlock(&mutex);
|
pthread_mutex_unlock(&mutex);
|
||||||
return random_paths;
|
return random_paths;
|
||||||
}
|
}
|
||||||
@ -120,7 +122,7 @@ matrix load_image_augment_paths(char **paths, int n, int min, int max, int size,
|
|||||||
for(i = 0; i < n; ++i){
|
for(i = 0; i < n; ++i){
|
||||||
image im = load_image_color(paths[i], 0, 0);
|
image im = load_image_color(paths[i], 0, 0);
|
||||||
image crop = random_augment_image(im, angle, aspect, min, max, size);
|
image crop = random_augment_image(im, angle, aspect, min, max, size);
|
||||||
int flip = rand()%2;
|
int flip = random_gen()%2;
|
||||||
if (flip) flip_image(crop);
|
if (flip) flip_image(crop);
|
||||||
random_distort_image(crop, hue, saturation, exposure);
|
random_distort_image(crop, hue, saturation, exposure);
|
||||||
|
|
||||||
@ -168,7 +170,7 @@ void randomize_boxes(box_label *b, int n)
|
|||||||
int i;
|
int i;
|
||||||
for(i = 0; i < n; ++i){
|
for(i = 0; i < n; ++i){
|
||||||
box_label swap = b[i];
|
box_label swap = b[i];
|
||||||
int index = rand()%n;
|
int index = random_gen()%n;
|
||||||
b[i] = b[index];
|
b[i] = b[index];
|
||||||
b[index] = swap;
|
b[index] = swap;
|
||||||
}
|
}
|
||||||
@ -529,7 +531,7 @@ data load_data_region(int n, char **paths, int m, int w, int h, int size, int cl
|
|||||||
float sx = (float)swidth / ow;
|
float sx = (float)swidth / ow;
|
||||||
float sy = (float)sheight / oh;
|
float sy = (float)sheight / oh;
|
||||||
|
|
||||||
int flip = rand()%2;
|
int flip = random_gen()%2;
|
||||||
image cropped = crop_image(orig, pleft, ptop, swidth, sheight);
|
image cropped = crop_image(orig, pleft, ptop, swidth, sheight);
|
||||||
|
|
||||||
float dx = ((float)pleft/ow)/sx;
|
float dx = ((float)pleft/ow)/sx;
|
||||||
@ -615,7 +617,7 @@ data load_data_compare(int n, char **paths, int m, int classes, int w, int h)
|
|||||||
|
|
||||||
data load_data_swag(char **paths, int n, int classes, float jitter)
|
data load_data_swag(char **paths, int n, int classes, float jitter)
|
||||||
{
|
{
|
||||||
int index = rand()%n;
|
int index = random_gen()%n;
|
||||||
char *random_path = paths[index];
|
char *random_path = paths[index];
|
||||||
|
|
||||||
image orig = load_image_color(random_path, 0, 0);
|
image orig = load_image_color(random_path, 0, 0);
|
||||||
@ -648,7 +650,7 @@ data load_data_swag(char **paths, int n, int classes, float jitter)
|
|||||||
float sx = (float)swidth / w;
|
float sx = (float)swidth / w;
|
||||||
float sy = (float)sheight / h;
|
float sy = (float)sheight / h;
|
||||||
|
|
||||||
int flip = rand()%2;
|
int flip = random_gen()%2;
|
||||||
image cropped = crop_image(orig, pleft, ptop, swidth, sheight);
|
image cropped = crop_image(orig, pleft, ptop, swidth, sheight);
|
||||||
|
|
||||||
float dx = ((float)pleft/w)/sx;
|
float dx = ((float)pleft/w)/sx;
|
||||||
@ -698,7 +700,7 @@ data load_data_detection(int n, char **paths, int m, int w, int h, int boxes, in
|
|||||||
float sx = (float)swidth / ow;
|
float sx = (float)swidth / ow;
|
||||||
float sy = (float)sheight / oh;
|
float sy = (float)sheight / oh;
|
||||||
|
|
||||||
int flip = rand()%2;
|
int flip = random_gen()%2;
|
||||||
image cropped = crop_image(orig, pleft, ptop, swidth, sheight);
|
image cropped = crop_image(orig, pleft, ptop, swidth, sheight);
|
||||||
|
|
||||||
float dx = ((float)pleft/ow)/sx;
|
float dx = ((float)pleft/ow)/sx;
|
||||||
@ -722,7 +724,7 @@ data load_data_detection(int n, char **paths, int m, int w, int h, int boxes, in
|
|||||||
void *load_thread(void *ptr)
|
void *load_thread(void *ptr)
|
||||||
{
|
{
|
||||||
srand(time(0));
|
srand(time(0));
|
||||||
//printf("Loading data: %d\n", rand());
|
//printf("Loading data: %d\n", random_gen());
|
||||||
load_args a = *(struct load_args*)ptr;
|
load_args a = *(struct load_args*)ptr;
|
||||||
if(a.exposure == 0) a.exposure = 1;
|
if(a.exposure == 0) a.exposure = 1;
|
||||||
if(a.saturation == 0) a.saturation = 1;
|
if(a.saturation == 0) a.saturation = 1;
|
||||||
@ -860,7 +862,7 @@ data load_data_super(char **paths, int n, int m, int w, int h, int scale)
|
|||||||
for(i = 0; i < n; ++i){
|
for(i = 0; i < n; ++i){
|
||||||
image im = load_image_color(paths[i], 0, 0);
|
image im = load_image_color(paths[i], 0, 0);
|
||||||
image crop = random_crop_image(im, w*scale, h*scale);
|
image crop = random_crop_image(im, w*scale, h*scale);
|
||||||
int flip = rand()%2;
|
int flip = random_gen()%2;
|
||||||
if (flip) flip_image(crop);
|
if (flip) flip_image(crop);
|
||||||
image resize = resize_image(crop, w, h);
|
image resize = resize_image(crop, w, h);
|
||||||
d.X.vals[i] = resize.data;
|
d.X.vals[i] = resize.data;
|
||||||
@ -982,7 +984,7 @@ void get_random_batch(data d, int n, float *X, float *y)
|
|||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
for(j = 0; j < n; ++j){
|
for(j = 0; j < n; ++j){
|
||||||
int index = rand()%d.X.rows;
|
int index = random_gen()%d.X.rows;
|
||||||
memcpy(X+j*d.X.cols, d.X.vals[index], d.X.cols*sizeof(float));
|
memcpy(X+j*d.X.cols, d.X.vals[index], d.X.cols*sizeof(float));
|
||||||
memcpy(y+j*d.y.cols, d.y.vals[index], d.y.cols*sizeof(float));
|
memcpy(y+j*d.y.cols, d.y.vals[index], d.y.cols*sizeof(float));
|
||||||
}
|
}
|
||||||
@ -1095,7 +1097,7 @@ void randomize_data(data d)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for(i = d.X.rows-1; i > 0; --i){
|
for(i = d.X.rows-1; i > 0; --i){
|
||||||
int index = rand()%i;
|
int index = random_gen()%i;
|
||||||
float *swap = d.X.vals[index];
|
float *swap = d.X.vals[index];
|
||||||
d.X.vals[index] = d.X.vals[i];
|
d.X.vals[index] = d.X.vals[i];
|
||||||
d.X.vals[i] = swap;
|
d.X.vals[i] = swap;
|
||||||
@ -1159,7 +1161,7 @@ data get_random_data(data d, int num)
|
|||||||
|
|
||||||
int i;
|
int i;
|
||||||
for(i = 0; i < num; ++i){
|
for(i = 0; i < num; ++i){
|
||||||
int index = rand()%d.X.rows;
|
int index = random_gen()%d.X.rows;
|
||||||
r.X.vals[i] = d.X.vals[index];
|
r.X.vals[i] = d.X.vals[index];
|
||||||
r.y.vals[i] = d.y.vals[index];
|
r.y.vals[i] = d.y.vals[index];
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user