pull/2897/head
AlexeyAB 6 years ago
parent faf67c9683
commit 8c970498a2
  1. 4
      include/darknet.h
  2. 4
      scripts/README.md
  3. 2
      src/darknet.c
  4. 2
      src/data.c
  5. 11
      src/detector.c
  6. 41
      src/image_opencv.cpp
  7. 15
      src/layer.c
  8. 4
      src/network.c
  9. 2
      src/option_list.h
  10. 5
      src/utils.h

@ -5,6 +5,10 @@
#define inline __inline
#endif
#if defined(DEBUG) && !defined(_CRTDBG_MAP_ALLOC)
#define _CRTDBG_MAP_ALLOC
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

@ -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/
TrackingNet: https://tracking-net.org/
RGB, RGBD, Texture-mapped 3D mesh models: http://www.ycbbenchmarks.com/

@ -1,3 +1,4 @@
#include "darknet.h"
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
@ -5,7 +6,6 @@
#include <crtdbg.h>
#endif
#include "darknet.h"
#include "parser.h"
#include "utils.h"
#include "dark_cuda.h"

@ -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;
}

@ -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);

@ -34,19 +34,26 @@
#include <opencv2/core/version.hpp>
#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

@ -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

@ -1,7 +1,9 @@
#include "darknet.h"
#include <stdio.h>
#include <time.h>
#include <assert.h>
#include "darknet.h"
#include "network.h"
#include "image.h"
#include "data.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;

@ -1,10 +1,11 @@
#ifndef UTILS_H
#define UTILS_H
#include "darknet.h"
#include "list.h"
#include <stdio.h>
#include <time.h>
#include "list.h"
#include "darknet.h"
#ifdef __cplusplus
extern "C" {
#endif

Loading…
Cancel
Save