| | |
| | | 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); |
| | |
| | | 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; |
| | |
| | | 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; |