From 76e258520edb50e8bb897ba15aa9467579e70a6a Mon Sep 17 00:00:00 2001
From: AlexeyAB <alexeyab84@gmail.com>
Date: Wed, 20 Jun 2018 10:28:25 +0000
Subject: [PATCH] Minor fix

---
 src/detector.c |   26 +++++++++++++++++++++++---
 1 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/src/detector.c b/src/detector.c
index e099e91..afb91b2 100644
--- a/src/detector.c
+++ b/src/detector.c
@@ -65,6 +65,9 @@
 		printf("\n Error: You set incorrect value batch=1 for Training! You should set batch=64 subdivision=64 \n");
 		getchar();
 	}
+	else if ((net.batch * net.subdivisions) < 64) {
+			printf("\n Warning: You set batch= lower than 64! It is recommended to set batch=64 subdivision=64 \n");
+	}
 
     int imgs = net.batch * net.subdivisions * ngpus;
     printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net.learning_rate, net.momentum, net.decay);
@@ -916,8 +919,18 @@
 		int num_labels = 0;
 		box_label *truth = read_boxes(labelpath, &num_labels);
 		//printf(" new path: %s \n", labelpath);
+		char buff[1024];
 		for (j = 0; j < num_labels; ++j)
 		{
+			if (truth[j].x > 1 || truth[j].x <= 0 || truth[j].y > 1 || truth[j].y <= 0 ||
+				truth[j].w > 1 || truth[j].w <= 0 || truth[j].h > 1 || truth[j].h <= 0) 
+			{				
+				printf("\n\nWrong label: %s - j = %d, x = %f, y = %f, width = %f, height = %f \n",
+					labelpath, j, truth[j].x, truth[j].y, truth[j].w, truth[j].h);
+				sprintf(buff, "echo \"Wrong label: %s - j = %d, x = %f, y = %f, width = %f, height = %f\" >> bad_label.list", 
+					labelpath, j, truth[j].x, truth[j].y, truth[j].w, truth[j].h);
+				system(buff);				
+			}
 			number_of_boxes++;
 			rel_width_height_array = realloc(rel_width_height_array, 2 * number_of_boxes * sizeof(float));
 			rel_width_height_array[number_of_boxes * 2 - 2] = truth[j].w * width;
@@ -976,6 +989,7 @@
 	//for (i = 0; i < number_of_boxes; ++i)
 	//	printf("%2.2f,%2.2f, ", points->data.fl[i * 2], points->data.fl[i * 2 + 1]);
 
+	printf("\n");
 	float avg_iou = 0;
 	for (i = 0; i < number_of_boxes; ++i) {
 		float box_w = points->data.fl[i * 2];
@@ -999,8 +1013,8 @@
 		float box_intersect = min_w*min_h;
 		float box_union = box_w*box_h + anchor_w*anchor_h - box_intersect;
 		float iou = box_intersect / box_union;
-		if (iou > 1 || iou < 0) {
-			printf(" i = %d, box_w = %d, box_h = %d, anchor_w = %d, anchor_h = %d, iou = %f \n",
+		if (iou > 1 || iou < 0) { // || box_w > width || box_h > height) {
+			printf(" Wrong label: i = %d, box_w = %d, box_h = %d, anchor_w = %d, anchor_h = %d, iou = %f \n",
 				i, box_w, box_h, anchor_w, anchor_h, iou);
 		}
 		else avg_iou += iou;
@@ -1069,7 +1083,8 @@
 {
     list *options = read_data_cfg(datacfg);
     char *name_list = option_find_str(options, "names", "data/names.list");
-    char **names = get_labels(name_list);
+	int names_size = 0;
+	char **names = get_labels_custom(name_list, &names_size); //get_labels(name_list);
 
     image **alphabet = load_alphabet();
     network net = parse_network_cfg_custom(cfgfile, 1); // set batch=1
@@ -1078,6 +1093,11 @@
     }
     //set_batch_network(&net, 1);
 	fuse_conv_batchnorm(net);
+	if (net.layers[net.n - 1].classes != names_size) {
+		printf(" Error: in the file %s number of names %d that isn't equal to classes=%d in the file %s \n", 
+			name_list, names_size, net.layers[net.n - 1].classes, datacfg);
+		if(net.layers[net.n - 1].classes > names_size) getchar();
+	}
     srand(2222222);
     double time;
     char buff[256];

--
Gitblit v1.10.0