From c53e03348c65462bcba33f6352087dd6b9268e8f Mon Sep 17 00:00:00 2001
From: Joseph Redmon <pjreddie@gmail.com>
Date: Wed, 16 Sep 2015 21:12:10 +0000
Subject: [PATCH] yolo working w/ regions

---
 src/yolo.c |   24 +++++-------------------
 1 files changed, 5 insertions(+), 19 deletions(-)

diff --git a/src/yolo.c b/src/yolo.c
index 13f0824..9b229e2 100644
--- a/src/yolo.c
+++ b/src/yolo.c
@@ -66,19 +66,14 @@
         load_weights(&net, weightfile);
     }
     detection_layer layer = get_network_detection_layer(net);
-    printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net.learning_rate, net.momentum, net.decay);
     int imgs = 128;
-    int i = net.seen/imgs;
+    int i = *net.seen/imgs;
 
     char **paths;
     list *plist = get_paths(train_images);
     int N = plist->size;
     paths = (char **)list_to_array(plist);
 
-    if(i*imgs > N*80){
-        net.layers[net.n-1].joint = 1;
-        net.layers[net.n-1].objectness = 0;
-    }
     if(i*imgs > N*120){
         net.layers[net.n-1].rescore = 1;
     }
@@ -102,7 +97,7 @@
 
     pthread_t load_thread = load_data_in_thread(args);
     clock_t time;
-    while(i*imgs < N*130){
+    while(get_current_batch(net) < net.max_batches){
         i += 1;
         time=clock();
         pthread_join(load_thread, 0);
@@ -112,23 +107,13 @@
         printf("Loaded: %lf seconds\n", sec(clock()-time));
         time=clock();
         float loss = train_network(net, train);
-        net.seen += imgs;
         if (avg_loss < 0) avg_loss = loss;
         avg_loss = avg_loss*.9 + loss*.1;
 
-        printf("%d: %f, %f avg, %lf seconds, %d images, epoch: %f\n", i, loss, avg_loss, sec(clock()-time), i*imgs, ((float)i)*imgs/N);
-
-        if((i-1)*imgs <= N && i*imgs > N){
-            fprintf(stderr, "First stage done\n");
-            net.learning_rate *= 10;
-            char buff[256];
-            sprintf(buff, "%s/%s_first_stage.weights", backup_directory, base);
-            save_weights(net, buff);
-        }
+        printf("%d: %f, %f avg, %lf seconds, %f rate, %d images, epoch: %f\n", get_current_batch(net), loss, avg_loss, sec(clock()-time), get_current_rate(net), *net.seen, (float)*net.seen/N);
 
         if((i-1)*imgs <= 80*N && i*imgs > N*80){
             fprintf(stderr, "Second stage done.\n");
-            net.learning_rate *= .1;
             char buff[256];
             sprintf(buff, "%s/%s_second_stage.weights", backup_directory, base);
             save_weights(net, buff);
@@ -138,6 +123,7 @@
 
             pthread_join(load_thread, 0);
             free_data(buffer);
+            args.background = background;
             load_thread = load_data_in_thread(args);
         }
 
@@ -283,7 +269,7 @@
             int w = val[t].w;
             int h = val[t].h;
             convert_yolo_detections(predictions, classes, objectness, background, num_boxes, w, h, thresh, probs, boxes);
-            if (nms) do_nms(boxes, probs, num_boxes, classes, iou_thresh);
+            if (nms) do_nms(boxes, probs, num_boxes*num_boxes, classes, iou_thresh);
             print_yolo_detections(fps, id, boxes, probs, num_boxes, classes, w, h);
             free(id);
             free_image(val[t]);

--
Gitblit v1.10.0