AlexeyAB
2018-04-23 3df335bb50f890b12fa1a9965e91b0cf46d7902c
src/detector.c
@@ -86,6 +86,7 @@
    args.n = imgs;
    args.m = plist->size;
    args.classes = classes;
    args.flip = net.flip;
    args.jitter = jitter;
    args.num_boxes = l.max_boxes;
   args.small_object = net.small_object;
@@ -846,6 +847,11 @@
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);
   if (width < 0 || height < 0) {
      printf("Usage: darknet detector calc_anchors data/voc.data -num_of_clusters 9 -width 416 -height 416 \n");
      printf("Error: set width and height \n");
      return;
   }
   //float pointsdata[] = { 1,1, 2,2, 6,6, 5,5, 10,10 };
   float *rel_width_height_array = calloc(1000, sizeof(float));
@@ -1043,7 +1049,8 @@
    while(1){
        if(filename){
            strncpy(input, filename, 256);
         if (input[strlen(input) - 1] == 0x0d) input[strlen(input) - 1] = 0;
         if(strlen(input) > 0)
            if (input[strlen(input) - 1] == 0x0d) input[strlen(input) - 1] = 0;
        } else {
            printf("Enter Image Path: ");
            fflush(stdout);
@@ -1106,8 +1113,8 @@
    int cam_index = find_int_arg(argc, argv, "-c", 0);
    int frame_skip = find_int_arg(argc, argv, "-s", 0);
   int num_of_clusters = find_int_arg(argc, argv, "-num_of_clusters", 5);
   int width = find_int_arg(argc, argv, "-width", 13);
   int heigh = find_int_arg(argc, argv, "-heigh", 13);
   int width = find_int_arg(argc, argv, "-width", -1);
   int height = find_int_arg(argc, argv, "-height", -1);
    if(argc < 4){
        fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]);
        return;
@@ -1141,21 +1148,23 @@
    char *cfg = argv[4];
    char *weights = (argc > 5) ? argv[5] : 0;
   if(weights)
      if (weights[strlen(weights) - 1] == 0x0d) weights[strlen(weights) - 1] = 0;
      if(strlen(weights) > 0)
         if (weights[strlen(weights) - 1] == 0x0d) weights[strlen(weights) - 1] = 0;
    char *filename = (argc > 6) ? argv[6]: 0;
    if(0==strcmp(argv[2], "test")) test_detector(datacfg, cfg, weights, filename, thresh, hier_thresh, dont_show);
    else if(0==strcmp(argv[2], "train")) train_detector(datacfg, cfg, weights, gpus, ngpus, clear, dont_show);
    else if(0==strcmp(argv[2], "valid")) validate_detector(datacfg, cfg, weights, outfile);
    else if(0==strcmp(argv[2], "recall")) validate_detector_recall(datacfg, cfg, weights);
   else if(0==strcmp(argv[2], "map")) validate_detector_map(datacfg, cfg, weights, thresh);
   else if(0==strcmp(argv[2], "calc_anchors")) calc_anchors(datacfg, num_of_clusters, width, heigh, show);
   else if(0==strcmp(argv[2], "calc_anchors")) calc_anchors(datacfg, num_of_clusters, width, height, show);
    else if(0==strcmp(argv[2], "demo")) {
        list *options = read_data_cfg(datacfg);
        int classes = option_find_int(options, "classes", 20);
        char *name_list = option_find_str(options, "names", "data/names.list");
        char **names = get_labels(name_list);
      if(filename)
         if (filename[strlen(filename) - 1] == 0x0d) filename[strlen(filename) - 1] = 0;
         if(strlen(filename) > 0)
            if (filename[strlen(filename) - 1] == 0x0d) filename[strlen(filename) - 1] = 0;
        demo(cfg, weights, thresh, hier_thresh, cam_index, filename, names, classes, frame_skip, prefix, out_filename,
         http_stream_port, dont_show);
    }