From 11c72b1132feca7c1252ea01d02da4cb497e723f Mon Sep 17 00:00:00 2001
From: Joseph Redmon <pjreddie@gmail.com>
Date: Thu, 11 Jun 2015 22:38:58 +0000
Subject: [PATCH] testing on one image
---
src/detection.c | 45 ++++++++++++++++++++++++++++-----------------
1 files changed, 28 insertions(+), 17 deletions(-)
diff --git a/src/detection.c b/src/detection.c
index ac93efb..e21e120 100644
--- a/src/detection.c
+++ b/src/detection.c
@@ -7,18 +7,18 @@
char *class_names[] = {"aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"};
-void draw_detection(image im, float *box, int side, int bg, char *label)
+void draw_detection(image im, float *box, int side, char *label)
{
int classes = 20;
- int elems = 4+classes+bg;
+ int elems = 4+classes;
int j;
int r, c;
for(r = 0; r < side; ++r){
for(c = 0; c < side; ++c){
- j = (r*side + c) * elems + bg;
+ j = (r*side + c) * elems;
int class = max_index(box+j, classes);
- if(box[j+class] > .2){
+ if(box[j+class] > 0.2){
printf("%f %s\n", box[j+class], class_names[class]);
float red = get_color(0,class,classes);
float green = get_color(1,class,classes);
@@ -67,6 +67,7 @@
int classes = layer.classes;
int background = (layer.background || layer.objectness);
+ printf("%d\n", background);
int side = sqrt(get_detection_layer_locations(layer));
char **paths;
@@ -77,9 +78,9 @@
//plist = get_paths("/home/pjreddie/data/voc/no_2012_val.txt");
//plist = get_paths("/home/pjreddie/data/voc/no_2007_test.txt");
//plist = get_paths("/home/pjreddie/data/voc/val_2012.txt");
- plist = get_paths("/home/pjreddie/data/voc/no_2007_test.txt");
+ //plist = get_paths("/home/pjreddie/data/voc/no_2007_test.txt");
//plist = get_paths("/home/pjreddie/data/coco/trainval.txt");
- //plist = get_paths("/home/pjreddie/data/voc/all2007-2012.txt");
+ plist = get_paths("/home/pjreddie/data/voc/all2007-2012.txt");
}
paths = (char **)list_to_array(plist);
pthread_t load_thread = load_data_detection_thread(imgs, paths, plist->size, classes, net.w, net.h, side, side, background, &buffer);
@@ -205,34 +206,43 @@
fprintf(stderr, "Total Detection Time: %f Seconds\n", (double)(time(0) - start));
}
-void test_detection(char *cfgfile, char *weightfile)
+void test_detection(char *cfgfile, char *weightfile, char *filename)
{
+
network net = parse_network_cfg(cfgfile);
if(weightfile){
load_weights(&net, weightfile);
}
detection_layer layer = get_network_detection_layer(net);
+ if (!layer.joint) fprintf(stderr, "Detection layer should use joint prediction to draw correctly.\n");
int im_size = 448;
set_batch_network(&net, 1);
srand(2222222);
clock_t time;
- char filename[256];
+ char input[256];
while(1){
- fgets(filename, 256, stdin);
- strtok(filename, "\n");
- image im = load_image_color(filename,0,0);
+ if(filename){
+ strncpy(input, filename, 256);
+ } else {
+ printf("Enter Image Path: ");
+ fflush(stdout);
+ fgets(input, 256, stdin);
+ strtok(input, "\n");
+ }
+ image im = load_image_color(input,0,0);
image sized = resize_image(im, im_size, im_size);
- printf("%d %d %d\n", im.h, im.w, im.c);
float *X = sized.data;
time=clock();
float *predictions = network_predict(net, X);
- printf("%s: Predicted in %f seconds.\n", filename, sec(clock()-time));
- draw_detection(im, predictions, 7, layer.background || layer.objectness, "predictions");
+ printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time));
+ draw_detection(im, predictions, 7, "predictions");
free_image(im);
free_image(sized);
- #ifdef OPENCV
+#ifdef OPENCV
cvWaitKey(0);
- #endif
+ cvDestroyAllWindows();
+#endif
+ if (filename) break;
}
}
@@ -245,7 +255,8 @@
char *cfg = argv[3];
char *weights = (argc > 4) ? argv[4] : 0;
- if(0==strcmp(argv[2], "test")) test_detection(cfg, weights);
+ char *filename = (argc > 5) ? argv[5]: 0;
+ if(0==strcmp(argv[2], "test")) test_detection(cfg, weights, filename);
else if(0==strcmp(argv[2], "train")) train_detection(cfg, weights);
else if(0==strcmp(argv[2], "valid")) validate_detection(cfg, weights);
}
--
Gitblit v1.10.0