| | |
| | | if(count != 1) printf("Too many or too few labels: %d, %s\n", count, path); |
| | | } |
| | | |
| | | matrix load_labels_paths(char **paths, int n, char **labels, int k) |
| | | void fill_hierarchy(float *truth, int k, tree *hierarchy) |
| | | { |
| | | int j; |
| | | for(j = 0; j < k; ++j){ |
| | | if(truth[j]){ |
| | | int parent = hierarchy->parent[j]; |
| | | while(parent >= 0){ |
| | | truth[parent] = 1; |
| | | parent = hierarchy->parent[parent]; |
| | | } |
| | | } |
| | | } |
| | | int i; |
| | | int count = 0; |
| | | for(j = 0; j < hierarchy->groups; ++j){ |
| | | //printf("%d\n", count); |
| | | int mask = 1; |
| | | for(i = 0; i < hierarchy->group_size[j]; ++i){ |
| | | if(truth[count + i]){ |
| | | mask = 0; |
| | | break; |
| | | } |
| | | } |
| | | if (mask) { |
| | | for(i = 0; i < hierarchy->group_size[j]; ++i){ |
| | | truth[count + i] = SECRET_NUM; |
| | | } |
| | | } |
| | | count += hierarchy->group_size[j]; |
| | | } |
| | | } |
| | | |
| | | matrix load_labels_paths(char **paths, int n, char **labels, int k, tree *hierarchy) |
| | | { |
| | | matrix y = make_matrix(n, k); |
| | | int i; |
| | | for(i = 0; i < n && labels; ++i){ |
| | | fill_truth(paths[i], labels, k, y.vals[i]); |
| | | if(hierarchy){ |
| | | fill_hierarchy(y.vals[i], k, hierarchy); |
| | | } |
| | | } |
| | | return y; |
| | | } |
| | |
| | | if (a.type == OLD_CLASSIFICATION_DATA){ |
| | | *a.d = load_data_old(a.paths, a.n, a.m, a.labels, a.classes, a.w, a.h); |
| | | } else if (a.type == CLASSIFICATION_DATA){ |
| | | *a.d = load_data_augment(a.paths, a.n, a.m, a.labels, a.classes, a.min, a.max, a.size, a.angle, a.aspect, a.hue, a.saturation, a.exposure); |
| | | *a.d = load_data_augment(a.paths, a.n, a.m, a.labels, a.classes, a.hierarchy, a.min, a.max, a.size, a.angle, a.aspect, a.hue, a.saturation, a.exposure); |
| | | } else if (a.type == SUPER_DATA){ |
| | | *a.d = load_data_super(a.paths, a.n, a.m, a.w, a.h, a.scale); |
| | | } else if (a.type == WRITING_DATA){ |
| | |
| | | data d = {0}; |
| | | d.shallow = 0; |
| | | d.X = load_image_paths(paths, n, w, h); |
| | | d.y = load_labels_paths(paths, n, labels, k); |
| | | d.y = load_labels_paths(paths, n, labels, k, 0); |
| | | if(m) free(paths); |
| | | return d; |
| | | } |
| | |
| | | return d; |
| | | } |
| | | |
| | | data load_data_augment(char **paths, int n, int m, char **labels, int k, int min, int max, int size, float angle, float aspect, float hue, float saturation, float exposure) |
| | | data load_data_augment(char **paths, int n, int m, char **labels, int k, tree *hierarchy, int min, int max, int size, float angle, float aspect, float hue, float saturation, float exposure) |
| | | { |
| | | if(m) paths = get_random_paths(paths, n, m); |
| | | data d = {0}; |
| | | d.shallow = 0; |
| | | d.X = load_image_augment_paths(paths, n, min, max, size, angle, aspect, hue, saturation, exposure); |
| | | d.y = load_labels_paths(paths, n, labels, k); |
| | | d.y = load_labels_paths(paths, n, labels, k, hierarchy); |
| | | if(m) free(paths); |
| | | return d; |
| | | } |