From 1e9d1fcedf1a361bcdb384f15b5b14bdb526576d Mon Sep 17 00:00:00 2001
From: AlexeyAB <alexeyab84@gmail.com>
Date: Sat, 30 Jun 2018 20:12:25 +0000
Subject: [PATCH] Fixed arch=compute_53,code=[sm_53,compute_53] for Jetson TX1
---
src/detector.c | 22 ++++++++++++++++++----
1 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/src/detector.c b/src/detector.c
index 228647a..0a0ecda 100644
--- a/src/detector.c
+++ b/src/detector.c
@@ -61,10 +61,14 @@
srand(time(0));
network net = nets[0];
- if ((net.batch * net.subdivisions) == 1) {
+ const int actual_batch_size = net.batch * net.subdivisions;
+ if (actual_batch_size == 1) {
printf("\n Error: You set incorrect value batch=1 for Training! You should set batch=64 subdivision=64 \n");
getchar();
}
+ else if (actual_batch_size < 64) {
+ printf("\n Warning: You set batch=%d lower than 64! It is recommended to set batch=64 subdivision=64 \n", actual_batch_size);
+ }
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 +920,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;
@@ -1000,8 +1014,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 || box_w > width || box_h > height) {
- 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;
@@ -1082,7 +1096,7 @@
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);
+ name_list, names_size, net.layers[net.n - 1].classes, cfgfile);
if(net.layers[net.n - 1].classes > names_size) getchar();
}
srand(2222222);
--
Gitblit v1.10.0