Joseph Redmon
2014-12-22 4ab366a805a7678642539465d68ef906b4599aeb
src/data.c
@@ -81,6 +81,18 @@
    return X;
}
char **get_random_paths(char **paths, int n, int m)
{
    char **random_paths = calloc(n, sizeof(char*));
    int i;
    for(i = 0; i < n; ++i){
        int index = rand()%m;
        random_paths[i] = paths[index];
        if(i == 0) printf("%s\n", paths[index]);
    }
    return random_paths;
}
matrix load_labels_paths(char **paths, int n, char **labels, int k)
{
    matrix y = make_matrix(n, k);
@@ -138,13 +150,8 @@
data load_data_detection_jitter_random(int n, char **paths, int m, int h, int w, int nh, int nw, float scale)
{
    char **random_paths = calloc(n, sizeof(char*));
    char **random_paths = get_random_paths(paths, n, m);
    int i;
    for(i = 0; i < n; ++i){
        int index = rand()%m;
        random_paths[i] = paths[index];
        if(i == 0) printf("%s\n", paths[index]);
    }
    data d;
    d.shallow = 0;
    d.X = load_image_paths(random_paths, n, h, w);
@@ -154,10 +161,11 @@
        int dx = rand()%32;
        int dy = rand()%32;
        fill_truth_detection(random_paths[i], d.y.vals[i], 224, 224, nh, nw, scale, dx, dy);
        image a = float_to_image(h, w, 3, d.X.vals[i]);
        jitter_image(a,224,224,dy,dx);
    }
    d.X.cols = 224*224*3;
   // print_matrix(d.y);
    free(random_paths);
    return d;
}
@@ -165,13 +173,7 @@
data load_data_detection_random(int n, char **paths, int m, int h, int w, int nh, int nw, float scale)
{
    char **random_paths = calloc(n, sizeof(char*));
    int i;
    for(i = 0; i < n; ++i){
        int index = rand()%m;
        random_paths[i] = paths[index];
        if(i == 0) printf("%s\n", paths[index]);
    }
    char **random_paths = get_random_paths(paths, n, m);
    data d;
    d.shallow = 0;
    d.X = load_image_paths(random_paths, n, h, w);
@@ -180,32 +182,20 @@
    return d;
}
data load_data(char **paths, int n, char **labels, int k, int h, int w)
data load_data(char **paths, int n, int m, char **labels, int k, int h, int w)
{
    if(m) paths = get_random_paths(paths, n, m);
    data d;
    d.shallow = 0;
    d.X = load_image_paths(paths, n, h, w);
    d.y = load_labels_paths(paths, n, labels, k);
    return d;
}
data load_data_random(int n, char **paths, int m, char **labels, int k, int h, int w)
{
    char **random_paths = calloc(n, sizeof(char*));
    int i;
    for(i = 0; i < n; ++i){
        int index = rand()%m;
        random_paths[i] = paths[index];
        if(i == 0) printf("%s\n", paths[index]);
    }
    data d = load_data(random_paths, n, labels, k, h, w);
    free(random_paths);
    if(m) free(paths);
    return d;
}
struct load_args{
    int n;
    char **paths;
    int n;
    int m;
    char **labels;
    int k;
@@ -217,11 +207,11 @@
void *load_in_thread(void *ptr)
{
    struct load_args a = *(struct load_args*)ptr;
    *a.d = load_data_random(a.n, a.paths, a.m, a.labels, a.k, a.h, a.w);
    *a.d = load_data(a.paths, a.n, a.m, a.labels, a.k, a.h, a.w);
    return 0;
}
pthread_t load_data_random_thread(int n, char **paths, int m, char **labels, int k, int h, int w, data *d)
pthread_t load_data_thread(char **paths, int n, int m, char **labels, int k, int h, int w, data *d)
{
    pthread_t thread;
    struct load_args *args = calloc(1, sizeof(struct load_args));