From 8c970498a296ed129ffef7d872ccc25d42d1afda Mon Sep 17 00:00:00 2001 From: AlexeyAB Date: Thu, 11 Apr 2019 02:47:19 +0300 Subject: [PATCH] Minor fix --- include/darknet.h | 4 ++++ scripts/README.md | 4 +++- src/darknet.c | 2 +- src/data.c | 2 +- src/detector.c | 11 +++-------- src/image_opencv.cpp | 41 +++++++++++++++++++++++------------------ src/layer.c | 15 ++++++++++++--- src/network.c | 4 +++- src/option_list.h | 2 +- src/utils.h | 5 +++-- 10 files changed, 54 insertions(+), 36 deletions(-) diff --git a/include/darknet.h b/include/darknet.h index 0e404f47..82f033e3 100644 --- a/include/darknet.h +++ b/include/darknet.h @@ -5,6 +5,10 @@ #define inline __inline #endif +#if defined(DEBUG) && !defined(_CRTDBG_MAP_ALLOC) +#define _CRTDBG_MAP_ALLOC +#endif + #include #include #include diff --git a/scripts/README.md b/scripts/README.md index 5debe7f9..273ed2a7 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -56,4 +56,6 @@ Another list of datasets: http://homepages.inf.ed.ac.uk/rbf/CVonline/Imagedbase. Pedestrian DATASETs for Vision based Detection and Tracking: https://hemprasad.wordpress.com/2014/11/08/pedestrian-datasets-for-vision-based-detection-and-tracking/ -TrackingNet: https://tracking-net.org/ \ No newline at end of file +TrackingNet: https://tracking-net.org/ + +RGB, RGBD, Texture-mapped 3D mesh models: http://www.ycbbenchmarks.com/ \ No newline at end of file diff --git a/src/darknet.c b/src/darknet.c index 1c5c08b6..06092d48 100644 --- a/src/darknet.c +++ b/src/darknet.c @@ -1,3 +1,4 @@ +#include "darknet.h" #include #include #include @@ -5,7 +6,6 @@ #include #endif -#include "darknet.h" #include "parser.h" #include "utils.h" #include "dark_cuda.h" diff --git a/src/data.c b/src/data.c index 6d885b10..5de9e92e 100644 --- a/src/data.c +++ b/src/data.c @@ -68,7 +68,7 @@ char **get_sequential_paths(char **paths, int n, int m, int mini_batch, int augm if (strlen(sequentia_paths[i]) <= 4) printf(" Very small path to the image: %s \n", sequentia_paths[i]); } while (strlen(sequentia_paths[i]) == 0); } - //free(start_time_indexes); + free(start_time_indexes); pthread_mutex_unlock(&mutex); return sequentia_paths; } diff --git a/src/detector.c b/src/detector.c index a1995ab3..b1a612cb 100644 --- a/src/detector.c +++ b/src/detector.c @@ -29,7 +29,6 @@ void train_detector(char *datacfg, char *cfgfile, char *weightfile, int *gpus, i char *valid_images = option_find_str(options, "valid", train_images); char *backup_directory = option_find_str(options, "backup", "/backup/"); - int train_images_num = 0; network net_map; if (calc_map) { FILE* valid_file = fopen(valid_images, "r"); @@ -39,18 +38,14 @@ void train_detector(char *datacfg, char *cfgfile, char *weightfile, int *gpus, i exit(-1); } else fclose(valid_file); - list *plist = get_paths(train_images); - train_images_num = plist->size; - free_list(plist); cuda_set_device(gpus[0]); printf(" Prepare additional network for mAP calculation...\n"); net_map = parse_network_cfg_custom(cfgfile, 1, 1); - int k; // free memory unnecessary arrays for (k = 0; k < net_map.n; ++k) { - free_layer(net_map.layers[k]); + free_layer(net_map.layers[k]); } } @@ -97,7 +92,7 @@ void train_detector(char *datacfg, char *cfgfile, char *weightfile, int *gpus, i float jitter = l.jitter; list *plist = get_paths(train_images); - //int N = plist->size; + int train_images_num = plist->size; char **paths = (char **)list_to_array(plist); int init_w = net.w; @@ -1225,7 +1220,7 @@ void calc_anchors(char *datacfg, int num_of_clusters, int width, int height, int if (show) { #ifdef OPENCV - show_acnhors(number_of_boxes, num_of_clusters, rel_width_height_array, anchors_data, width, height); + //show_acnhors(number_of_boxes, num_of_clusters, rel_width_height_array, anchors_data, width, height); #endif // OPENCV } free(rel_width_height_array); diff --git a/src/image_opencv.cpp b/src/image_opencv.cpp index 29fc2453..a227db10 100644 --- a/src/image_opencv.cpp +++ b/src/image_opencv.cpp @@ -34,19 +34,26 @@ #include #endif -using namespace cv; +//using namespace cv; using std::cerr; using std::endl; +#ifdef DEBUG +#define OCV_D "d" +#else +#define OCV_D +#endif//DEBUG + + // OpenCV libraries #ifndef CV_VERSION_EPOCH -#define OPENCV_VERSION CVAUX_STR(CV_VERSION_MAJOR)"" CVAUX_STR(CV_VERSION_MINOR)"" CVAUX_STR(CV_VERSION_REVISION) +#define OPENCV_VERSION CVAUX_STR(CV_VERSION_MAJOR)"" CVAUX_STR(CV_VERSION_MINOR)"" CVAUX_STR(CV_VERSION_REVISION) OCV_D #ifndef USE_CMAKE_LIBS #pragma comment(lib, "opencv_world" OPENCV_VERSION ".lib") #endif // USE_CMAKE_LIBS #else // CV_VERSION_EPOCH -#define OPENCV_VERSION CVAUX_STR(CV_VERSION_EPOCH)"" CVAUX_STR(CV_VERSION_MAJOR)"" CVAUX_STR(CV_VERSION_MINOR) +#define OPENCV_VERSION CVAUX_STR(CV_VERSION_EPOCH)"" CVAUX_STR(CV_VERSION_MAJOR)"" CVAUX_STR(CV_VERSION_MINOR) OCV_D #ifndef USE_CMAKE_LIBS #pragma comment(lib, "opencv_core" OPENCV_VERSION ".lib") #pragma comment(lib, "opencv_imgproc" OPENCV_VERSION ".lib") @@ -118,10 +125,10 @@ mat_cv *load_image_mat_cv(const char *filename, int flag) cv::Mat load_image_mat(char *filename, int channels) { - int flag = IMREAD_UNCHANGED; - if (channels == 0) flag = IMREAD_COLOR; - else if (channels == 1) flag = IMREAD_GRAYSCALE; - else if (channels == 3) flag = IMREAD_COLOR; + int flag = cv::IMREAD_UNCHANGED; + if (channels == 0) flag = cv::IMREAD_COLOR; + else if (channels == 1) flag = cv::IMREAD_GRAYSCALE; + else if (channels == 3) flag = cv::IMREAD_COLOR; else { fprintf(stderr, "OpenCV can't force load with %d channels\n", channels); } @@ -288,7 +295,7 @@ IplImage *mat_to_ipl(cv::Mat mat) // ---------------------------------------- */ -Mat image_to_mat(image img) +cv::Mat image_to_mat(image img) { int channels = img.c; int width = img.w; @@ -389,12 +396,12 @@ int wait_until_press_key_cv() void make_window(char *name, int w, int h, int fullscreen) { try { - cv::namedWindow(name, WINDOW_NORMAL); + cv::namedWindow(name, cv::WINDOW_NORMAL); if (fullscreen) { #ifdef CV_VERSION_EPOCH // OpenCV 2.x - cv::setWindowProperty(name, WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN); + cv::setWindowProperty(name, cv::WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN); #else - cv::setWindowProperty(name, WND_PROP_FULLSCREEN, cv::WINDOW_FULLSCREEN); + cv::setWindowProperty(name, cv::WND_PROP_FULLSCREEN, cv::WINDOW_FULLSCREEN); #endif } else { @@ -423,7 +430,7 @@ void show_image_cv(image p, const char *name) cv::Mat mat = image_to_mat(copy); cv::cvtColor(mat, mat, cv::COLOR_RGB2BGR); - cv::namedWindow(name, WINDOW_NORMAL); + cv::namedWindow(name, cv::WINDOW_NORMAL); cv::imshow(name, mat); free_image(copy); } @@ -450,7 +457,7 @@ void show_image_mat(mat_cv *mat_ptr, const char *name) try { if (mat_ptr == NULL) return; cv::Mat &mat = *(cv::Mat *)mat_ptr; - cv::namedWindow(name, WINDOW_NORMAL); + cv::namedWindow(name, cv::WINDOW_NORMAL); cv::imshow(name, mat); } catch (...) { @@ -483,9 +490,7 @@ void write_frame_cv(write_cv *output_video_writer, mat_cv *mat) { try { cv::VideoWriter *out = (cv::VideoWriter *)output_video_writer; - //out->write(ipl_to_mat(show_img)); out->write(*mat); - show_image_mat(mat, "mat"); } catch (...) { cerr << "OpenCV exception: write_frame_cv \n"; @@ -615,7 +620,7 @@ int get_stream_fps_cpp_cv(cap_cv *cap) try { cv::VideoCapture &cpp_cap = *(cv::VideoCapture *)cap; #ifndef CV_VERSION_EPOCH // OpenCV 3.x - fps = cpp_cap.get(CAP_PROP_FPS); + fps = cpp_cap.get(cv::CAP_PROP_FPS); #else // OpenCV 2.x fps = cpp_cap.get(CV_CAP_PROP_FPS); #endif @@ -645,7 +650,7 @@ double get_capture_frame_count_cv(cap_cv *cap) try { cv::VideoCapture &cpp_cap = *(cv::VideoCapture *)cap; #ifndef CV_VERSION_EPOCH // OpenCV 3.x - return cpp_cap.get(CAP_PROP_FRAME_COUNT); + return cpp_cap.get(cv::CAP_PROP_FRAME_COUNT); #else // OpenCV 2.x return cpp_cap.get(CV_CAP_PROP_FRAME_COUNT); #endif @@ -675,7 +680,7 @@ int set_capture_position_frame_cv(cap_cv *cap, int index) try { cv::VideoCapture &cpp_cap = *(cv::VideoCapture *)cap; #ifndef CV_VERSION_EPOCH // OpenCV 3.x - return cpp_cap.set(CAP_PROP_POS_FRAMES, index); + return cpp_cap.set(cv::CAP_PROP_POS_FRAMES, index); #else // OpenCV 2.x return cpp_cap.set(CV_CAP_PROP_POS_FRAMES, index); #endif diff --git a/src/layer.c b/src/layer.c index ae87065f..a6097848 100644 --- a/src/layer.c +++ b/src/layer.c @@ -6,9 +6,18 @@ void free_layer(layer l) { // free layers: input_layer, self_layer, output_layer, ... if (l.type == CRNN) { - if (l.input_layer) free_layer(*l.input_layer); - if (l.self_layer) free_layer(*l.self_layer); - if (l.output_layer) free_layer(*l.output_layer); + if (l.input_layer) { + free_layer(*l.input_layer); + free(l.input_layer); + } + if (l.self_layer) { + free_layer(*l.self_layer); + free(l.self_layer); + } + if (l.output_layer) { + free_layer(*l.output_layer); + free(l.output_layer); + } l.output = NULL; l.delta = NULL; #ifdef GPU diff --git a/src/network.c b/src/network.c index 89d97b45..248b93ff 100644 --- a/src/network.c +++ b/src/network.c @@ -1,7 +1,9 @@ +#include "darknet.h" + #include #include #include -#include "darknet.h" + #include "network.h" #include "image.h" #include "data.h" diff --git a/src/option_list.h b/src/option_list.h index a9e3e0b7..9efa274a 100644 --- a/src/option_list.h +++ b/src/option_list.h @@ -1,7 +1,7 @@ #ifndef OPTION_LIST_H #define OPTION_LIST_H -#include "list.h" #include "darknet.h" +#include "list.h" typedef struct{ char *key; diff --git a/src/utils.h b/src/utils.h index 0db4f919..183bb641 100644 --- a/src/utils.h +++ b/src/utils.h @@ -1,10 +1,11 @@ #ifndef UTILS_H #define UTILS_H +#include "darknet.h" +#include "list.h" + #include #include -#include "list.h" -#include "darknet.h" #ifdef __cplusplus extern "C" { #endif