Joseph Redmon
2015-03-30 6553b3f0e3e55fc30a99c7d4b5798aa86d18a114
src/data.c
@@ -66,6 +66,7 @@
typedef struct box{
    int id;
    float x,y,w,h;
    float left, right, top, bottom;
} box;
box *read_boxes(char *filename, int *n)
@@ -83,6 +84,10 @@
        boxes[count].y = y;
        boxes[count].h = h;
        boxes[count].w = w;
        boxes[count].left   = x - w/2;
        boxes[count].right  = x + w/2;
        boxes[count].top    = y - h/2;
        boxes[count].bottom = y + h/2;
        ++count;
    }
    fclose(file);
@@ -112,7 +117,12 @@
    randomize_boxes(boxes, count);
    float x, y, h, w;
    int id;
    int i, j;
    int i;
    if(background){
        for(i = 0; i < num_height*num_width*(4+classes+background); i += 4+classes+background){
            truth[i] = 1;
        }
    }
    for(i = 0; i < count; ++i){
        x = boxes[i].x;
        y = boxes[i].y;
@@ -132,26 +142,22 @@
        if(j < 0) j = 0;
        if(j >= num_height) j = num_height-1;
        
        float dw = (x - i*box_width)/box_width;
        float dh = (y - j*box_height)/box_height;
        float dw = constrain(0,1, (x - i*box_width)/box_width );
        float dh = constrain(0,1, (y - j*box_height)/box_height );
        float th = constrain(0,1, h*(height+jitter)/height );
        float tw = constrain(0,1, w*(width+jitter)/width );
        int index = (i+j*num_width)*(4+classes+background);
        if(truth[index+classes+background]) continue;
        if(truth[index+classes+background+2]) continue;
        if(background) truth[index++] = 0;
        truth[index+id] = 1;
        index += classes+background;
        index += classes;
        truth[index++] = dh;
        truth[index++] = dw;
        truth[index++] = h*(height+jitter)/height;
        truth[index++] = w*(width+jitter)/width;
        truth[index++] = th;
        truth[index++] = tw;
    }
    free(boxes);
    if(background){
        for(i = 0; i < num_height*num_width*(4+classes+background); i += 4+classes+background){
            int object = 0;
            for(j = i; j < i+classes; ++j) if (truth[j]) object = 1;
            truth[i+classes] = !object;
        }
    }
}
#define NUMCHARS 37
@@ -202,6 +208,7 @@
    data d;
    d.shallow = 0;
    d.X = load_image_paths(paths, n, h, w);
    d.X.cols = 17100;
    d.y = d.X;
    if(m) free(paths);
    return d;