From 4403e71b330b42d3cda1e0721fb645cf41bac14f Mon Sep 17 00:00:00 2001 From: AlexeyAB Date: Sun, 20 May 2018 18:43:15 +0300 Subject: [PATCH] Supported files for training: jpg, jpeg, bmp, png, ppm - and UPPER CASE extensions --- src/coco.c | 6 +----- src/data.c | 31 ++++++------------------------- src/detector.c | 49 +++---------------------------------------------- src/utils.c | 15 +++++++++++++++ src/utils.h | 1 + src/yolo.c | 6 +----- 6 files changed, 27 insertions(+), 81 deletions(-) diff --git a/src/coco.c b/src/coco.c index b8fc3464..86da5b50 100644 --- a/src/coco.c +++ b/src/coco.c @@ -281,11 +281,7 @@ void validate_coco_recall(char *cfgfile, char *weightfile) if (nms) do_nms(boxes, probs, side*side*l.n, 1, nms_thresh); char labelpath[4096]; - find_replace(path, "images", "labels", labelpath); - find_replace(labelpath, "JPEGImages", "labels", labelpath); - find_replace(labelpath, ".jpg", ".txt", labelpath); - find_replace(labelpath, ".JPEG", ".txt", labelpath); - find_replace(labelpath, ".ppm", ".txt", labelpath); + replace_image_to_label(path, labelpath); int num_labels = 0; box_label *truth = read_boxes(labelpath, &num_labels); diff --git a/src/data.c b/src/data.c index 8da12341..a4298628 100644 --- a/src/data.c +++ b/src/data.c @@ -213,12 +213,7 @@ void correct_boxes(box_label *boxes, int n, float dx, float dy, float sx, float void fill_truth_swag(char *path, float *truth, int classes, int flip, float dx, float dy, float sx, float sy) { char labelpath[4096]; - find_replace(path, "images", "labels", labelpath); - find_replace(labelpath, "JPEGImages", "labels", labelpath); - find_replace(labelpath, ".jpg", ".txt", labelpath); - find_replace(labelpath, ".JPG", ".txt", labelpath); - find_replace(labelpath, ".JPEG", ".txt", labelpath); - find_replace(labelpath, ".ppm", ".txt", labelpath); + replace_image_to_label(path, labelpath); int count = 0; box_label *boxes = read_boxes(labelpath, &count); @@ -252,15 +247,9 @@ void fill_truth_swag(char *path, float *truth, int classes, int flip, float dx, void fill_truth_region(char *path, float *truth, int classes, int num_boxes, int flip, float dx, float dy, float sx, float sy) { char labelpath[4096]; - find_replace(path, "images", "labels", labelpath); - find_replace(labelpath, "JPEGImages", "labels", labelpath); - - find_replace(labelpath, ".jpg", ".txt", labelpath); - find_replace(labelpath, ".png", ".txt", labelpath); - find_replace(labelpath, ".JPG", ".txt", labelpath); - find_replace(labelpath, ".JPEG", ".txt", labelpath); - find_replace(labelpath, ".ppm", ".txt", labelpath); - int count = 0; + replace_image_to_label(path, labelpath); + + int count = 0; box_label *boxes = read_boxes(labelpath, &count); randomize_boxes(boxes, count); correct_boxes(boxes, count, dx, dy, sx, sy, flip); @@ -302,16 +291,8 @@ void fill_truth_detection(char *path, int num_boxes, float *truth, int classes, int small_object, int net_w, int net_h) { char labelpath[4096]; - find_replace(path, "images", "labels", labelpath); - find_replace(labelpath, "JPEGImages", "labels", labelpath); - - find_replace(labelpath, "raw", "labels", labelpath); - find_replace(labelpath, ".jpg", ".txt", labelpath); - find_replace(labelpath, ".png", ".txt", labelpath); - find_replace(labelpath, ".bmp", ".txt", labelpath); - find_replace(labelpath, ".JPG", ".txt", labelpath); - find_replace(labelpath, ".JPEG", ".txt", labelpath); - find_replace(labelpath, ".ppm", ".txt", labelpath); + replace_image_to_label(path, labelpath); + int count = 0; int i; box_label *boxes = read_boxes(labelpath, &count); diff --git a/src/detector.c b/src/detector.c index bbe60cfd..f9cfdae5 100644 --- a/src/detector.c +++ b/src/detector.c @@ -36,17 +36,6 @@ void draw_train_loss(IplImage* img, int img_size, float avg_loss, float max_img_ static int coco_ids[] = {1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,67,70,72,73,74,75,76,77,78,79,80,81,82,84,85,86,87,88,89,90}; -void replace_image_to_label(char *input_path, char *output_path) { - find_replace(input_path, "images", "labels", output_path); - find_replace(output_path, "JPEGImages", "labels", output_path); - find_replace(output_path, ".jpg", ".txt", output_path); - find_replace(output_path, ".png", ".txt", output_path); - find_replace(output_path, ".bmp", ".txt", output_path); - find_replace(output_path, ".JPG", ".txt", output_path); - find_replace(output_path, ".JPEG", ".txt", output_path); - find_replace(output_path, ".ppm", ".txt", output_path); -} - void train_detector(char *datacfg, char *cfgfile, char *weightfile, int *gpus, int ngpus, int clear, int dont_show) { list *options = read_data_cfg(datacfg); @@ -486,14 +475,6 @@ void validate_detector_recall(char *datacfg, char *cfgfile, char *weightfile) char labelpath[4096]; replace_image_to_label(path, labelpath); - //find_replace(path, "images", "labels", labelpath); - //find_replace(labelpath, "JPEGImages", "labels", labelpath); - //find_replace(labelpath, ".jpg", ".txt", labelpath); - //find_replace(labelpath, ".png", ".txt", labelpath); - //find_replace(labelpath, ".bmp", ".txt", labelpath); - //find_replace(labelpath, ".JPG", ".txt", labelpath); - //find_replace(labelpath, ".JPEG", ".txt", labelpath); - //find_replace(labelpath, ".ppm", ".txt", labelpath); int num_labels = 0; box_label *truth = read_boxes(labelpath, &num_labels); @@ -645,14 +626,6 @@ void validate_detector_map(char *datacfg, char *cfgfile, char *weightfile, float char labelpath[4096]; replace_image_to_label(path, labelpath); - //find_replace(path, "images", "labels", labelpath); - //find_replace(labelpath, "JPEGImages", "labels", labelpath); - //find_replace(labelpath, ".jpg", ".txt", labelpath); - //find_replace(labelpath, ".png", ".txt", labelpath); - //find_replace(labelpath, ".bmp", ".txt", labelpath); - //find_replace(labelpath, ".JPG", ".txt", labelpath); - //find_replace(labelpath, ".JPEG", ".txt", labelpath); - //find_replace(labelpath, ".ppm", ".txt", labelpath); int num_labels = 0; box_label *truth = read_boxes(labelpath, &num_labels); int i, j; @@ -668,11 +641,8 @@ void validate_detector_map(char *datacfg, char *cfgfile, char *weightfile, float char *path_dif = paths_dif[image_index]; char labelpath_dif[4096]; - find_replace(path_dif, "images", "labels", labelpath_dif); - find_replace(labelpath_dif, "JPEGImages", "labels", labelpath_dif); - find_replace(labelpath_dif, ".jpg", ".txt", labelpath_dif); - find_replace(labelpath_dif, ".JPEG", ".txt", labelpath_dif); - find_replace(labelpath_dif, ".png", ".txt", labelpath_dif); + replace_image_to_label(path_dif, labelpath_dif); + truth_dif = read_boxes(labelpath_dif, &num_labels_dif); } @@ -910,14 +880,7 @@ void calc_anchors(char *datacfg, int num_of_clusters, int width, int height, int char *path = paths[i]; char labelpath[4096]; replace_image_to_label(path, labelpath); - //find_replace(path, "images", "labels", labelpath); - //find_replace(labelpath, "JPEGImages", "labels", labelpath); - //find_replace(labelpath, ".jpg", ".txt", labelpath); - //find_replace(labelpath, ".png", ".txt", labelpath); - //find_replace(labelpath, ".bmp", ".txt", labelpath); - //find_replace(labelpath, ".JPG", ".txt", labelpath); - //find_replace(labelpath, ".JPEG", ".txt", labelpath); - //find_replace(labelpath, ".ppm", ".txt", labelpath); + int num_labels = 0; box_label *truth = read_boxes(labelpath, &num_labels); //printf(" new path: %s \n", labelpath); @@ -1133,12 +1096,6 @@ void test_detector(char *datacfg, char *cfgfile, char *weightfile, char *filenam { char labelpath[4096]; replace_image_to_label(input, labelpath); - //find_replace(input, ".jpg", ".txt", labelpath); - //find_replace(labelpath, ".png", ".txt", labelpath); - //find_replace(labelpath, ".bmp", ".txt", labelpath); - //find_replace(labelpath, ".JPG", ".txt", labelpath); - //find_replace(labelpath, ".JPEG", ".txt", labelpath); - //find_replace(labelpath, ".ppm", ".txt", labelpath); FILE* fw = fopen(labelpath, "wb"); int i; diff --git a/src/utils.c b/src/utils.c index 8b1dcf52..d9d796e1 100644 --- a/src/utils.c +++ b/src/utils.c @@ -183,6 +183,21 @@ void find_replace(char *str, char *orig, char *rep, char *output) sprintf(output, "%s%s%s", buffer, rep, p+strlen(orig)); } +void replace_image_to_label(char *input_path, char *output_path) { + find_replace(input_path, "images", "labels", output_path); + find_replace(output_path, "JPEGImages", "labels", output_path); + find_replace(output_path, ".jpg", ".txt", output_path); + find_replace(output_path, ".JPG", ".txt", output_path); + find_replace(output_path, ".jpeg", ".txt", output_path); + find_replace(output_path, ".JPEG", ".txt", output_path); + find_replace(output_path, ".png", ".txt", output_path); + find_replace(output_path, ".PNG", ".txt", output_path); + find_replace(output_path, ".bmp", ".txt", output_path); + find_replace(output_path, ".BMP", ".txt", output_path); + find_replace(output_path, ".ppm", ".txt", output_path); + find_replace(output_path, ".PPM", ".txt", output_path); +} + float sec(clock_t clocks) { return (float)clocks/CLOCKS_PER_SEC; diff --git a/src/utils.h b/src/utils.h index 8e8e1c75..e2afba45 100644 --- a/src/utils.h +++ b/src/utils.h @@ -40,6 +40,7 @@ void write_all(int fd, char *buffer, size_t bytes); int read_all_fail(int fd, char *buffer, size_t bytes); int write_all_fail(int fd, char *buffer, size_t bytes); void find_replace(char *str, char *orig, char *rep, char *output); +void replace_image_to_label(char *input_path, char *output_path); void error(const char *s); void malloc_error(); void file_error(char *s); diff --git a/src/yolo.c b/src/yolo.c index 44811658..28f905f0 100644 --- a/src/yolo.c +++ b/src/yolo.c @@ -252,11 +252,7 @@ void validate_yolo_recall(char *cfgfile, char *weightfile) if (nms) do_nms(boxes, probs, side*side*l.n, 1, nms); char labelpath[4096]; - find_replace(path, "images", "labels", labelpath); - find_replace(labelpath, "JPEGImages", "labels", labelpath); - find_replace(labelpath, ".jpg", ".txt", labelpath); - find_replace(labelpath, ".JPEG", ".txt", labelpath); - find_replace(labelpath, ".ppm", ".txt", labelpath); + replace_image_to_label(path, labelpath); int num_labels = 0; box_label *truth = read_boxes(labelpath, &num_labels);