pull/1466/head
AlexeyAB 7 years ago
parent c2a8cc2ad3
commit 552207d6f0
  1. 15
      src/data.c
  2. 6
      src/region_layer.c
  3. 4
      src/yolo_layer.c

@ -320,6 +320,7 @@ void fill_truth_detection(char *path, int num_boxes, float *truth, int classes,
if (count > num_boxes) count = num_boxes;
float x, y, w, h;
int id;
int sub = 0;
for (i = 0; i < count; ++i) {
x = boxes[i].x;
@ -337,23 +338,27 @@ void fill_truth_detection(char *path, int num_boxes, float *truth, int classes,
sprintf(buff, "echo %s \"Wrong annotation: class_id = %d. But class_id should be [from 0 to %d]\" >> bad_label.list", labelpath, id, classes);
system(buff);
getchar();
++sub;
continue;
}
if ((w < lowest_w || h < lowest_h)) {
//sprintf(buff, "echo %s \"Very small object: w < lowest_w OR h < lowest_h\" >> bad_label.list", labelpath);
//system(buff);
++sub;
continue;
}
if (x == 999999 || y == 999999) {
printf("\n Wrong annotation: x = 0, y = 0 \n");
sprintf(buff, "echo %s \"Wrong annotation: x = 0 or y = 0\" >> bad_label.list", labelpath);
system(buff);
++sub;
continue;
}
if (x <= 0 || x > 1 || y <= 0 || y > 1) {
printf("\n Wrong annotation: x = %f, y = %f \n", x, y);
sprintf(buff, "echo %s \"Wrong annotation: x = %f, y = %f\" >> bad_label.list", labelpath, x, y);
system(buff);
++sub;
continue;
}
if (w > 1) {
@ -371,11 +376,11 @@ void fill_truth_detection(char *path, int num_boxes, float *truth, int classes,
if (x == 0) x += lowest_w;
if (y == 0) y += lowest_h;
truth[i*5+0] = x;
truth[i*5+1] = y;
truth[i*5+2] = w;
truth[i*5+3] = h;
truth[i*5+4] = id;
truth[(i-sub)*5+0] = x;
truth[(i-sub)*5+1] = y;
truth[(i-sub)*5+2] = w;
truth[(i-sub)*5+3] = h;
truth[(i-sub)*5+4] = id;
}
free(boxes);
}

@ -224,7 +224,7 @@ void forward_region_layer(const region_layer l, network_state state)
int onlyclass_id = 0;
for(t = 0; t < l.max_boxes; ++t){
box truth = float_to_box(state.truth + t*5 + b*l.truths);
if(!truth.x) break;
if(!truth.x) break; // continue;
int class_id = state.truth[t*5 + b*l.truths + 4];
float maxp = 0;
int maxi = 0;
@ -258,7 +258,7 @@ void forward_region_layer(const region_layer l, network_state state)
box truth = float_to_box(state.truth + t*5 + b*l.truths);
int class_id = state.truth[t * 5 + b*l.truths + 4];
if (class_id >= l.classes) continue; // if label contains class_id more than number of classes in the cfg-file
if(!truth.x) break;
if(!truth.x) break; // continue;
float iou = box_iou(pred, truth);
if (iou > best_iou) {
best_class_id = state.truth[t*5 + b*l.truths + 4];
@ -302,7 +302,7 @@ void forward_region_layer(const region_layer l, network_state state)
continue; // if label contains class_id more than number of classes in the cfg-file
}
if(!truth.x) break;
if(!truth.x) break; // continue;
float best_iou = 0;
int best_index = 0;
int best_n = 0;

@ -206,7 +206,7 @@ void forward_yolo_layer(const layer l, network_state state)
getchar();
continue; // if label contains class_id more than number of classes in the cfg-file
}
if(!truth.x) break;
if(!truth.x) break; // continue;
float iou = box_iou(pred, truth);
if (iou > best_iou) {
best_iou = iou;
@ -237,7 +237,7 @@ void forward_yolo_layer(const layer l, network_state state)
int class_id = state.truth[t*(4 + 1) + b*l.truths + 4];
if (class_id >= l.classes) continue; // if label contains class_id more than number of classes in the cfg-file
if(!truth.x) break;
if(!truth.x) break; // continue;
float best_iou = 0;
int best_n = 0;
i = (truth.x * l.w);

Loading…
Cancel
Save