From e18a303d1c17acd30c21162826c554ee770cf35a Mon Sep 17 00:00:00 2001 From: AlexeyAB Date: Sat, 21 Apr 2018 15:19:58 +0300 Subject: [PATCH] Fixed utils.c for short lines. --- src/detector.c | 9 ++++++--- src/network.c | 4 ++-- src/parser.c | 4 ++-- src/utils.c | 7 +++++-- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/detector.c b/src/detector.c index 407c8beb..86f6afc6 100644 --- a/src/detector.c +++ b/src/detector.c @@ -1048,7 +1048,8 @@ void test_detector(char *datacfg, char *cfgfile, char *weightfile, char *filenam while(1){ if(filename){ strncpy(input, filename, 256); - if (input[strlen(input) - 1] == 0x0d) input[strlen(input) - 1] = 0; + if(strlen(input) > 0) + if (input[strlen(input) - 1] == 0x0d) input[strlen(input) - 1] = 0; } else { printf("Enter Image Path: "); fflush(stdout); @@ -1146,7 +1147,8 @@ void run_detector(int argc, char **argv) char *cfg = argv[4]; char *weights = (argc > 5) ? argv[5] : 0; if(weights) - if (weights[strlen(weights) - 1] == 0x0d) weights[strlen(weights) - 1] = 0; + if(strlen(weights) > 0) + if (weights[strlen(weights) - 1] == 0x0d) weights[strlen(weights) - 1] = 0; char *filename = (argc > 6) ? argv[6]: 0; if(0==strcmp(argv[2], "test")) test_detector(datacfg, cfg, weights, filename, thresh, hier_thresh, dont_show); else if(0==strcmp(argv[2], "train")) train_detector(datacfg, cfg, weights, gpus, ngpus, clear, dont_show); @@ -1160,7 +1162,8 @@ void run_detector(int argc, char **argv) char *name_list = option_find_str(options, "names", "data/names.list"); char **names = get_labels(name_list); if(filename) - if (filename[strlen(filename) - 1] == 0x0d) filename[strlen(filename) - 1] = 0; + if(strlen(filename) > 0) + if (filename[strlen(filename) - 1] == 0x0d) filename[strlen(filename) - 1] = 0; demo(cfg, weights, thresh, hier_thresh, cam_index, filename, names, classes, frame_skip, prefix, out_filename, http_stream_port, dont_show); } diff --git a/src/network.c b/src/network.c index 03ad5eb3..ce6d28ac 100644 --- a/src/network.c +++ b/src/network.c @@ -800,14 +800,14 @@ void fuse_conv_batchnorm(network net) int f; for (f = 0; f < l->n; ++f) { - l->biases[f] = l->biases[f] - l->scales[f] * l->rolling_mean[f] / (sqrtf(l->rolling_variance[f]) + .000001f); + l->biases[f] = l->biases[f] - (double)l->scales[f] * l->rolling_mean[f] / (sqrt((double)l->rolling_variance[f]) + .000001f); const size_t filter_size = l->size*l->size*l->c; int i; for (i = 0; i < filter_size; ++i) { int w_index = f*filter_size + i; - l->weights[w_index] = l->weights[w_index] * l->scales[f] / (sqrtf(l->rolling_variance[f]) + .000001f); + l->weights[w_index] = (double)l->weights[w_index] * l->scales[f] / (sqrt((double)l->rolling_variance[f]) + .000001f); } } diff --git a/src/parser.c b/src/parser.c index 319235a7..568e5409 100644 --- a/src/parser.c +++ b/src/parser.c @@ -291,7 +291,7 @@ layer parse_yolo(list *options, size_params params) for (i = 0; i < len; ++i) { if (a[i] == ',') ++n; } - for (i = 0; i < n; ++i) { + for (i = 0; i < n && i < total*2; ++i) { float bias = atof(a); l.biases[i] = bias; a = strchr(a, ',') + 1; @@ -344,7 +344,7 @@ layer parse_region(list *options, size_params params) for(i = 0; i < len; ++i){ if (a[i] == ',') ++n; } - for(i = 0; i < n; ++i){ + for(i = 0; i < n && i < num*2; ++i){ float bias = atof(a); l.biases[i] = bias; a = strchr(a, ',')+1; diff --git a/src/utils.c b/src/utils.c index 615d8369..8c14fb6e 100644 --- a/src/utils.c +++ b/src/utils.c @@ -297,8 +297,11 @@ char *fgetl(FILE *fp) fgets(&line[curr], readsize, fp); curr = strlen(line); } - if(line[curr-2] == 0x0d) line[curr-2] = 0x00; - if(line[curr-1] == 0x0a) line[curr-1] = 0x00; + if(curr >= 2) + if(line[curr-2] == 0x0d) line[curr-2] = 0x00; + + if(curr >= 1) + if(line[curr-1] == 0x0a) line[curr-1] = 0x00; return line; }