| | |
| | | args.classes = classes; |
| | | args.jitter = jitter; |
| | | args.num_boxes = l.max_boxes; |
| | | args.small_object = l.small_object; |
| | | args.small_object = net.small_object; |
| | | args.d = &buffer; |
| | | args.type = DETECTION_DATA; |
| | | args.threads = 64; // 8 |
| | |
| | | load_weights(&net, weightfile); |
| | | } |
| | | set_batch_network(&net, 1); |
| | | fuse_conv_batchnorm(net); |
| | | srand(time(0)); |
| | | |
| | | //list *plist = get_paths("data/coco_val_5k.list"); |
| | |
| | | ++total; |
| | | box t = { truth[j].x, truth[j].y, truth[j].w, truth[j].h }; |
| | | float best_iou = 0; |
| | | for (k = 0; k < l.w*l.h*l.n; ++k) { |
| | | for (k = 0; k < nboxes; ++k) { |
| | | float iou = box_iou(dets[k].bbox, t); |
| | | if (dets[k].objectness > thresh && iou > best_iou) { |
| | | best_iou = iou; |
| | |
| | | load_weights(&net, weightfile); |
| | | } |
| | | set_batch_network(&net, 1); |
| | | fuse_conv_batchnorm(net); |
| | | srand(time(0)); |
| | | |
| | | list *plist = get_paths(valid_images); |
| | |
| | | } |
| | | |
| | | #ifdef OPENCV |
| | | typedef struct { |
| | | float w, h; |
| | | } anchors_t; |
| | | |
| | | int anchors_comparator(const void *pa, const void *pb) |
| | | { |
| | | anchors_t a = *(anchors_t *)pa; |
| | | anchors_t b = *(anchors_t *)pb; |
| | | float diff = b.w*b.h - a.w*a.h; |
| | | if (diff < 0) return 1; |
| | | else if (diff > 0) return -1; |
| | | return 0; |
| | | } |
| | | |
| | | void calc_anchors(char *datacfg, int num_of_clusters, int width, int height, int show) |
| | | { |
| | | printf("\n num_of_clusters = %d, width = %d, height = %d \n", num_of_clusters, width, height); |
| | |
| | | cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10000, 0), attemps, |
| | | 0, KMEANS_PP_CENTERS, |
| | | centers, &compactness); |
| | | |
| | | |
| | | // sort anchors |
| | | qsort(centers->data.fl, num_of_clusters, 2*sizeof(float), anchors_comparator); |
| | | |
| | | //orig 2.0 anchors = 1.08,1.19, 3.42,4.41, 6.63,11.38, 9.42,5.11, 16.62,10.52 |
| | | //float orig_anch[] = { 1.08,1.19, 3.42,4.41, 6.63,11.38, 9.42,5.11, 16.62,10.52 }; |
| | | // worse than ours (even for 19x19 final size - for input size 608x608) |
| | |
| | | printf("anchors = "); |
| | | for (i = 0; i < num_of_clusters; ++i) { |
| | | sprintf(buff, "%2.4f,%2.4f", centers->data.fl[i * 2], centers->data.fl[i * 2 + 1]); |
| | | printf("%s, ", buff); |
| | | printf("%s", buff); |
| | | fwrite(buff, sizeof(char), strlen(buff), fw); |
| | | if (i + 1 < num_of_clusters) fwrite(", ", sizeof(char), 2, fw);; |
| | | if (i + 1 < num_of_clusters) { |
| | | fwrite(", ", sizeof(char), 2, fw); |
| | | printf(", "); |
| | | } |
| | | } |
| | | printf("\n"); |
| | | fclose(fw); |
| | |
| | | load_weights(&net, weightfile); |
| | | } |
| | | set_batch_network(&net, 1); |
| | | fuse_conv_batchnorm(net); |
| | | srand(2222222); |
| | | clock_t time; |
| | | char buff[256]; |
| | |
| | | demo(cfg, weights, thresh, hier_thresh, cam_index, filename, names, classes, frame_skip, prefix, out_filename, |
| | | http_stream_port, dont_show); |
| | | } |
| | | else printf(" There isn't such command: %s", argv[2]); |
| | | } |