Skip to content
Snippets Groups Projects
Commit 178b1a56 authored by Joseph Redmon's avatar Joseph Redmon
Browse files

more demo stuff

parent 926e6ccc
No related branches found
No related tags found
No related merge requests found
......@@ -371,6 +371,7 @@ void run_coco(int argc, char **argv)
}
float thresh = find_float_arg(argc, argv, "-thresh", .2);
int cam_index = find_int_arg(argc, argv, "-c", 0);
int frame_skip = find_int_arg(argc, argv, "-s", 0);
if(argc < 4){
fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]);
......@@ -384,5 +385,5 @@ void run_coco(int argc, char **argv)
else if(0==strcmp(argv[2], "train")) train_coco(cfg, weights);
else if(0==strcmp(argv[2], "valid")) validate_coco(cfg, weights);
else if(0==strcmp(argv[2], "recall")) validate_coco_recall(cfg, weights);
else if(0==strcmp(argv[2], "demo")) demo(cfg, weights, thresh, cam_index, filename, coco_classes, coco_labels, 80);
else if(0==strcmp(argv[2], "demo")) demo(cfg, weights, thresh, cam_index, filename, coco_classes, coco_labels, 80, frame_skip);
}
......@@ -15,8 +15,8 @@
#include "opencv2/imgproc/imgproc_c.h"
void convert_detections(float *predictions, int classes, int num, int square, int side, int w, int h, float thresh, float **probs, box *boxes, int only_objectness);
#define DELAY 5
static int delay = DELAY;
static int skip = 0;
static int skipped = 0;
static char **demo_names;
static image *demo_labels;
......@@ -44,7 +44,7 @@ void *fetch_in_thread(void *ptr)
in = get_image_from_stream(cap);
if(!in.data){
in = disp;
if(delay == DELAY) error("Stream closed.");
if(skipped == skip) error("Stream closed.");
}else{
if(disp.data){
free_image(disp);
......@@ -63,7 +63,7 @@ void *detect_in_thread(void *ptr)
float *prediction = network_predict(net, X);
memcpy(predictions[demo_index], prediction, l.outputs*sizeof(float));
if(delay == DELAY){
if(skipped == skip){
mean_arrays(predictions, FRAMES, l.outputs, avg);
}
......@@ -80,16 +80,14 @@ void *detect_in_thread(void *ptr)
demo_index = (demo_index + 1)%FRAMES;
draw_detections(det, l.side*l.side*l.n, demo_thresh, boxes, probs, demo_names, demo_labels, demo_classes);
if(delay == 0){
delay = DELAY;
} else {
--delay;
}
skipped = (skipped + 1)%skip;
return 0;
}
void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, image *labels, int classes)
void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, image *labels, int classes, int frame_skip)
{
skip = frame_skip;
demo_names = names;
demo_labels = labels;
demo_classes = classes;
......@@ -176,7 +174,7 @@ void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const ch
}
}
#else
void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, image *labels, int classes)
void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, image *labels, int classes, int frame_skip)
{
fprintf(stderr, "Demo needs OpenCV for webcam images.\n");
}
......
......@@ -2,6 +2,6 @@
#define DEMO
#include "image.h"
void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, image *labels, int classes);
void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, image *labels, int classes, int frame_skip);
#endif
......@@ -372,6 +372,7 @@ void run_yolo(int argc, char **argv)
float thresh = find_float_arg(argc, argv, "-thresh", .2);
int cam_index = find_int_arg(argc, argv, "-c", 0);
int frame_skip = find_int_arg(argc, argv, "-s", 0);
if(argc < 4){
fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]);
return;
......@@ -384,5 +385,5 @@ void run_yolo(int argc, char **argv)
else if(0==strcmp(argv[2], "train")) train_yolo(cfg, weights);
else if(0==strcmp(argv[2], "valid")) validate_yolo(cfg, weights);
else if(0==strcmp(argv[2], "recall")) validate_yolo_recall(cfg, weights);
else if(0==strcmp(argv[2], "demo")) demo(cfg, weights, thresh, cam_index, filename, voc_names, voc_labels, 20);
else if(0==strcmp(argv[2], "demo")) demo(cfg, weights, thresh, cam_index, filename, voc_names, voc_labels, 20, frame_skip);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment