Joseph Redmon
2015-12-18 9802287b5890d9b2cc250adba1b9810657a95c9c
src/classifier.c
@@ -143,7 +143,7 @@
    clock_t time;
    float avg_acc = 0;
    float avg_topk = 0;
    int splits = 50;
    int splits = m/1000;
    int num = (i+1)*m/splits - i*m/splits;
    data val, buffer;
@@ -201,7 +201,7 @@
    int i = 0;
    char **names = get_labels(name_list);
    clock_t time;
    int indexes[10];
    int *indexes = calloc(top, sizeof(int));
    char buff[256];
    char *input = buff;
    while(1){
@@ -214,7 +214,7 @@
            if(!input) return;
            strtok(input, "\n");
        }
        image im = load_image_color(input, 256, 256);
        image im = load_image_color(input, net.w, net.h);
        float *X = im.data;
        time=clock();
        float *predictions = network_predict(net, X);
@@ -229,10 +229,10 @@
    }
}
void test_classifier(char *datacfg, char *cfgfile, char *weightfile, char *filename, int target_layer)
void test_classifier(char *datacfg, char *cfgfile, char *weightfile, int target_layer)
{
    int curr = 0;
    network net = parse_network_cfg(filename);
    network net = parse_network_cfg(cfgfile);
    if(weightfile){
        load_weights(&net, weightfile);
    }
@@ -241,10 +241,8 @@
    list *options = read_data_cfg(datacfg);
    char *test_list = option_find_str(options, "test", "data/test.list");
    char *label_list = option_find_str(options, "labels", "data/labels.list");
    int classes = option_find_int(options, "classes", 2);
    char **labels = get_labels(label_list);
    list *plist = get_paths(test_list);
    char **paths = (char **)list_to_array(plist);
@@ -262,7 +260,7 @@
    args.classes = classes;
    args.n = net.batch;
    args.m = 0;
    args.labels = labels;
    args.labels = 0;
    args.d = &buffer;
    args.type = CLASSIFICATION_DATA;
@@ -283,13 +281,17 @@
        time=clock();
        matrix pred = network_predict_data(net, val);
        
        int i;
        int i, j;
        if (target_layer >= 0){
            //layer l = net.layers[target_layer];
        }
        for(i = 0; i < val.X.rows; ++i){
        for(i = 0; i < pred.rows; ++i){
            printf("%s", paths[curr-net.batch+i]);
            for(j = 0; j < pred.cols; ++j){
                printf("\t%g", pred.vals[i][j]);
            }
            printf("\n");
        }
        free_matrix(pred);
@@ -315,7 +317,7 @@
    int layer = layer_s ? atoi(layer_s) : -1;
    if(0==strcmp(argv[2], "predict")) predict_classifier(data, cfg, weights, filename);
    else if(0==strcmp(argv[2], "train")) train_classifier(data, cfg, weights);
    else if(0==strcmp(argv[2], "test")) test_classifier(data, cfg, weights,filename, layer);
    else if(0==strcmp(argv[2], "test")) test_classifier(data, cfg, weights, layer);
    else if(0==strcmp(argv[2], "valid")) validate_classifier(data, cfg, weights);
}