From 9361292c429c0ba3400c31c7fa5d5e3d3cb6ab47 Mon Sep 17 00:00:00 2001
From: Joseph Redmon <pjreddie@gmail.com>
Date: Tue, 19 Jul 2016 21:50:01 +0000
Subject: [PATCH] updates

---
 data/labels/potted plant.png   |    0 
 data/labels/frisbee.png        |    0 
 data/labels/apple.png          |    0 
 data/labels/orange.png         |    0 
 data/labels/sports ball.png    |    0 
 data/labels/broccoli.png       |    0 
 data/labels/tv.png             |    0 
 data/labels/mouse.png          |    0 
 data/labels/book.png           |    0 
 data/labels/backpack.png       |    0 
 data/labels/sandwich.png       |    0 
 data/labels/sheep.png          |    0 
 data/labels/sofa.png           |    0 
 data/labels/toaster.png        |    0 
 data/labels/toilet.png         |    0 
 data/labels/pottedplant.png    |    0 
 data/labels/remote.png         |    0 
 data/labels/baseball glove.png |    0 
 src/convolutional_layer.c      |    5 +
 data/labels/microwave.png      |    0 
 data/labels/refrigerator.png   |    0 
 data/labels/person.png         |    0 
 data/labels/airplane.png       |    0 
 data/labels/carrot.png         |    0 
 data/labels/horse.png          |    0 
 data/labels/skateboard.png     |    0 
 data/labels/hot dog.png        |    0 
 data/labels/scissors.png       |    0 
 data/labels/bear.png           |    0 
 data/labels/zebra.png          |    0 
 data/labels/hair drier.png     |    0 
 data/labels/spoon.png          |    0 
 src/image.c                    |    7 +
 src/coco.c                     |    3 
 data/labels/truck.png          |    0 
 src/layer.h                    |    1 
 data/labels/fork.png           |    0 
 data/labels/motorcycle.png     |    0 
 src/detection_layer.h          |    4 
 data/labels/cake.png           |    0 
 data/labels/vase.png           |    0 
 src/parser.c                   |   28 +++++++++
 data/labels/traffic light.png  |    0 
 src/darknet.c                  |   73 +++++++++++++++++++++---
 data/labels/banana.png         |    0 
 data/labels/tvmonitor.png      |    0 
 data/labels/donut.png          |    0 
 data/labels/giraffe.png        |    0 
 data/labels/skis.png           |    0 
 data/labels/baseball bat.png   |    0 
 data/labels/surfboard.png      |    0 
 data/labels/wine glass.png     |    0 
 data/labels/motorbike.png      |    0 
 src/demo.c                     |    2 
 data/labels/dog.png            |    0 
 data/labels/clock.png          |    0 
 data/labels/oven.png           |    0 
 data/labels/bottle.png         |    0 
 data/labels/couch.png          |    0 
 data/labels/cup.png            |    0 
 data/labels/bus.png            |    0 
 src/network_kernels.cu         |    7 ++
 src/connected_layer.c          |    4 +
 src/data.c                     |   10 +-
 data/labels/parking meter.png  |    0 
 data/labels/aeroplane.png      |    0 
 data/labels/diningtable.png    |    0 
 data/labels/bird.png           |    0 
 data/labels/pizza.png          |    0 
 data/labels/kite.png           |    0 
 data/labels/handbag.png        |    0 
 data/labels/knife.png          |    0 
 data/labels/bowl.png           |    0 
 data/labels/bench.png          |    0 
 data/labels/bed.png            |    0 
 data/labels/tie.png            |    0 
 data/labels/keyboard.png       |    0 
 Makefile                       |    8 +-
 data/labels/boat.png           |    0 
 data/labels/laptop.png         |    0 
 data/labels/car.png            |    0 
 data/labels/cow.png            |    0 
 data/labels/cell phone.png     |    0 
 data/labels/sink.png           |    0 
 data/labels/umbrella.png       |    0 
 data/labels/chair.png          |    0 
 data/labels/snowboard.png      |    0 
 data/labels/cat.png            |    0 
 src/network.c                  |   13 ++-
 data/labels/teddy bear.png     |    0 
 data/labels/tennis racket.png  |    0 
 data/labels/suitcase.png       |    0 
 data/labels/stop sign.png      |    0 
 data/labels/elephant.png       |    0 
 data/labels/bicycle.png        |    0 
 data/labels/dining table.png   |    0 
 data/labels/train.png          |    0 
 data/labels/toothbrush.png     |    0 
 data/labels/fire hydrant.png   |    0 
 99 files changed, 131 insertions(+), 34 deletions(-)

diff --git a/Makefile b/Makefile
index 1aaceef..3374dcc 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
-GPU=0
-CUDNN=0
-OPENCV=0
+GPU=1
+CUDNN=1
+OPENCV=1
 DEBUG=0
 
 ARCH= --gpu-architecture=compute_52 --gpu-code=compute_52
@@ -41,7 +41,7 @@
 LDFLAGS+= -lcudnn
 endif
 
-OBJ=gemm.o utils.o cuda.o deconvolutional_layer.o convolutional_layer.o list.o image.o activations.o im2col.o col2im.o blas.o crop_layer.o dropout_layer.o maxpool_layer.o softmax_layer.o data.o matrix.o network.o connected_layer.o cost_layer.o parser.o option_list.o darknet.o detection_layer.o imagenet.o captcha.o route_layer.o writing.o box.o nightmare.o normalization_layer.o avgpool_layer.o coco.o dice.o yolo.o layer.o compare.o classifier.o local_layer.o swag.o shortcut_layer.o activation_layer.o rnn_layer.o gru_layer.o rnn.o rnn_vid.o crnn_layer.o demo.o tag.o cifar.o go.o batchnorm_layer.o art.o
+OBJ=gemm.o utils.o cuda.o deconvolutional_layer.o convolutional_layer.o list.o image.o activations.o im2col.o col2im.o blas.o crop_layer.o dropout_layer.o maxpool_layer.o softmax_layer.o data.o matrix.o network.o connected_layer.o cost_layer.o parser.o option_list.o darknet.o detection_layer.o imagenet.o captcha.o route_layer.o writing.o box.o nightmare.o normalization_layer.o avgpool_layer.o coco.o dice.o yolo.o detector.o layer.o compare.o classifier.o local_layer.o swag.o shortcut_layer.o activation_layer.o rnn_layer.o gru_layer.o rnn.o rnn_vid.o crnn_layer.o demo.o tag.o cifar.o go.o batchnorm_layer.o art.o region_layer.o
 ifeq ($(GPU), 1) 
 LDFLAGS+= -lstdc++ 
 OBJ+=convolutional_kernels.o deconvolutional_kernels.o activation_kernels.o im2col_kernels.o col2im_kernels.o blas_kernels.o crop_layer_kernels.o dropout_layer_kernels.o maxpool_layer_kernels.o softmax_layer_kernels.o network_kernels.o avgpool_layer_kernels.o
diff --git a/data/labels/aeroplane.png b/data/labels/aeroplane.png
index 5b2f1d7..3681a79 100644
--- a/data/labels/aeroplane.png
+++ b/data/labels/aeroplane.png
Binary files differ
diff --git a/data/labels/airplane.png b/data/labels/airplane.png
index 9a9ba89..cdbf7e6 100644
--- a/data/labels/airplane.png
+++ b/data/labels/airplane.png
Binary files differ
diff --git a/data/labels/apple.png b/data/labels/apple.png
index 69f1b58..4036af5 100644
--- a/data/labels/apple.png
+++ b/data/labels/apple.png
Binary files differ
diff --git a/data/labels/backpack.png b/data/labels/backpack.png
index 32a9a4a..6385c66 100644
--- a/data/labels/backpack.png
+++ b/data/labels/backpack.png
Binary files differ
diff --git a/data/labels/banana.png b/data/labels/banana.png
index a77eac6..85da2b9 100644
--- a/data/labels/banana.png
+++ b/data/labels/banana.png
Binary files differ
diff --git a/data/labels/baseball bat.png b/data/labels/baseball bat.png
index 134830e..e689470 100644
--- a/data/labels/baseball bat.png
+++ b/data/labels/baseball bat.png
Binary files differ
diff --git a/data/labels/baseball glove.png b/data/labels/baseball glove.png
index 4416e05..09a22c5 100644
--- a/data/labels/baseball glove.png
+++ b/data/labels/baseball glove.png
Binary files differ
diff --git a/data/labels/bear.png b/data/labels/bear.png
index 2247068..044c419 100644
--- a/data/labels/bear.png
+++ b/data/labels/bear.png
Binary files differ
diff --git a/data/labels/bed.png b/data/labels/bed.png
index c316d70..c69898f 100644
--- a/data/labels/bed.png
+++ b/data/labels/bed.png
Binary files differ
diff --git a/data/labels/bench.png b/data/labels/bench.png
index e8edceb..97f25cd 100644
--- a/data/labels/bench.png
+++ b/data/labels/bench.png
Binary files differ
diff --git a/data/labels/bicycle.png b/data/labels/bicycle.png
index 6c2bfbc..6d0ddf1 100644
--- a/data/labels/bicycle.png
+++ b/data/labels/bicycle.png
Binary files differ
diff --git a/data/labels/bird.png b/data/labels/bird.png
index 8d1510a..3d9fefe 100644
--- a/data/labels/bird.png
+++ b/data/labels/bird.png
Binary files differ
diff --git a/data/labels/boat.png b/data/labels/boat.png
index b43070e..c6a4b31 100644
--- a/data/labels/boat.png
+++ b/data/labels/boat.png
Binary files differ
diff --git a/data/labels/book.png b/data/labels/book.png
index 401b513..0937c7f 100644
--- a/data/labels/book.png
+++ b/data/labels/book.png
Binary files differ
diff --git a/data/labels/bottle.png b/data/labels/bottle.png
index 0410974..71acf12 100644
--- a/data/labels/bottle.png
+++ b/data/labels/bottle.png
Binary files differ
diff --git a/data/labels/bowl.png b/data/labels/bowl.png
index da19ad9..461d973 100644
--- a/data/labels/bowl.png
+++ b/data/labels/bowl.png
Binary files differ
diff --git a/data/labels/broccoli.png b/data/labels/broccoli.png
index c96bcfc..5b6efd7 100644
--- a/data/labels/broccoli.png
+++ b/data/labels/broccoli.png
Binary files differ
diff --git a/data/labels/bus.png b/data/labels/bus.png
index 661d653..9a4f94a 100644
--- a/data/labels/bus.png
+++ b/data/labels/bus.png
Binary files differ
diff --git a/data/labels/cake.png b/data/labels/cake.png
index 39b8ea5..54f3bf1 100644
--- a/data/labels/cake.png
+++ b/data/labels/cake.png
Binary files differ
diff --git a/data/labels/car.png b/data/labels/car.png
index 430637a..76b61bb 100644
--- a/data/labels/car.png
+++ b/data/labels/car.png
Binary files differ
diff --git a/data/labels/carrot.png b/data/labels/carrot.png
index 5fe7dd3..4c49455 100644
--- a/data/labels/carrot.png
+++ b/data/labels/carrot.png
Binary files differ
diff --git a/data/labels/cat.png b/data/labels/cat.png
index 6b46270..1206e47 100644
--- a/data/labels/cat.png
+++ b/data/labels/cat.png
Binary files differ
diff --git a/data/labels/cell phone.png b/data/labels/cell phone.png
index 40fee52..331fbd5 100644
--- a/data/labels/cell phone.png
+++ b/data/labels/cell phone.png
Binary files differ
diff --git a/data/labels/chair.png b/data/labels/chair.png
index f306c4b..da33e79 100644
--- a/data/labels/chair.png
+++ b/data/labels/chair.png
Binary files differ
diff --git a/data/labels/clock.png b/data/labels/clock.png
index aacf1e9..804e53d 100644
--- a/data/labels/clock.png
+++ b/data/labels/clock.png
Binary files differ
diff --git a/data/labels/couch.png b/data/labels/couch.png
index 94c0beb..0369b95 100644
--- a/data/labels/couch.png
+++ b/data/labels/couch.png
Binary files differ
diff --git a/data/labels/cow.png b/data/labels/cow.png
index c908484..98fb338 100644
--- a/data/labels/cow.png
+++ b/data/labels/cow.png
Binary files differ
diff --git a/data/labels/cup.png b/data/labels/cup.png
index 67caab4..d33cc59 100644
--- a/data/labels/cup.png
+++ b/data/labels/cup.png
Binary files differ
diff --git a/data/labels/dining table.png b/data/labels/dining table.png
index f5c173e..11c8fd1 100644
--- a/data/labels/dining table.png
+++ b/data/labels/dining table.png
Binary files differ
diff --git a/data/labels/diningtable.png b/data/labels/diningtable.png
index 6fb8ce9..d9a199b 100644
--- a/data/labels/diningtable.png
+++ b/data/labels/diningtable.png
Binary files differ
diff --git a/data/labels/dog.png b/data/labels/dog.png
index f5cf46b..fa08f34 100644
--- a/data/labels/dog.png
+++ b/data/labels/dog.png
Binary files differ
diff --git a/data/labels/donut.png b/data/labels/donut.png
index 79c21f6..2ce75b2 100644
--- a/data/labels/donut.png
+++ b/data/labels/donut.png
Binary files differ
diff --git a/data/labels/elephant.png b/data/labels/elephant.png
index ca391e8..1b1f248 100644
--- a/data/labels/elephant.png
+++ b/data/labels/elephant.png
Binary files differ
diff --git a/data/labels/fire hydrant.png b/data/labels/fire hydrant.png
index f78bd90..708b7f4 100644
--- a/data/labels/fire hydrant.png
+++ b/data/labels/fire hydrant.png
Binary files differ
diff --git a/data/labels/fork.png b/data/labels/fork.png
index 06ce2b4..674b38b 100644
--- a/data/labels/fork.png
+++ b/data/labels/fork.png
Binary files differ
diff --git a/data/labels/frisbee.png b/data/labels/frisbee.png
index 153ef9f..644de6b 100644
--- a/data/labels/frisbee.png
+++ b/data/labels/frisbee.png
Binary files differ
diff --git a/data/labels/giraffe.png b/data/labels/giraffe.png
index dedf3d6..21a4206 100644
--- a/data/labels/giraffe.png
+++ b/data/labels/giraffe.png
Binary files differ
diff --git a/data/labels/hair drier.png b/data/labels/hair drier.png
index d015ed5..5e93b08 100644
--- a/data/labels/hair drier.png
+++ b/data/labels/hair drier.png
Binary files differ
diff --git a/data/labels/handbag.png b/data/labels/handbag.png
index 7954984..6b5b23d 100644
--- a/data/labels/handbag.png
+++ b/data/labels/handbag.png
Binary files differ
diff --git a/data/labels/horse.png b/data/labels/horse.png
index b0df7c5..1faff90 100644
--- a/data/labels/horse.png
+++ b/data/labels/horse.png
Binary files differ
diff --git a/data/labels/hot dog.png b/data/labels/hot dog.png
index 5812a40..2b3924e 100644
--- a/data/labels/hot dog.png
+++ b/data/labels/hot dog.png
Binary files differ
diff --git a/data/labels/keyboard.png b/data/labels/keyboard.png
index 3fb76c5..265f446 100644
--- a/data/labels/keyboard.png
+++ b/data/labels/keyboard.png
Binary files differ
diff --git a/data/labels/kite.png b/data/labels/kite.png
index b3b96e0..6a5ff8c 100644
--- a/data/labels/kite.png
+++ b/data/labels/kite.png
Binary files differ
diff --git a/data/labels/knife.png b/data/labels/knife.png
index 28037e3..30cc9be 100644
--- a/data/labels/knife.png
+++ b/data/labels/knife.png
Binary files differ
diff --git a/data/labels/laptop.png b/data/labels/laptop.png
index 55d95e8..db1a634 100644
--- a/data/labels/laptop.png
+++ b/data/labels/laptop.png
Binary files differ
diff --git a/data/labels/microwave.png b/data/labels/microwave.png
index 4bb5326..0933f99 100644
--- a/data/labels/microwave.png
+++ b/data/labels/microwave.png
Binary files differ
diff --git a/data/labels/motorbike.png b/data/labels/motorbike.png
index 7091ca4..afd054b 100644
--- a/data/labels/motorbike.png
+++ b/data/labels/motorbike.png
Binary files differ
diff --git a/data/labels/motorcycle.png b/data/labels/motorcycle.png
index fc8b0de..e0f5264 100644
--- a/data/labels/motorcycle.png
+++ b/data/labels/motorcycle.png
Binary files differ
diff --git a/data/labels/mouse.png b/data/labels/mouse.png
index 915a5f3..5b146d5 100644
--- a/data/labels/mouse.png
+++ b/data/labels/mouse.png
Binary files differ
diff --git a/data/labels/orange.png b/data/labels/orange.png
index 9c4363e..54a5978 100644
--- a/data/labels/orange.png
+++ b/data/labels/orange.png
Binary files differ
diff --git a/data/labels/oven.png b/data/labels/oven.png
index cd48c8b..87c0917 100644
--- a/data/labels/oven.png
+++ b/data/labels/oven.png
Binary files differ
diff --git a/data/labels/parking meter.png b/data/labels/parking meter.png
index afb6a7a..440d2f6 100644
--- a/data/labels/parking meter.png
+++ b/data/labels/parking meter.png
Binary files differ
diff --git a/data/labels/person.png b/data/labels/person.png
index 33a9666..c6e2ec6 100644
--- a/data/labels/person.png
+++ b/data/labels/person.png
Binary files differ
diff --git a/data/labels/pizza.png b/data/labels/pizza.png
index a08c016..d3f689f 100644
--- a/data/labels/pizza.png
+++ b/data/labels/pizza.png
Binary files differ
diff --git a/data/labels/potted plant.png b/data/labels/potted plant.png
index 07bb49c..93e833e 100644
--- a/data/labels/potted plant.png
+++ b/data/labels/potted plant.png
Binary files differ
diff --git a/data/labels/pottedplant.png b/data/labels/pottedplant.png
index 569b86b..30f8a5a 100644
--- a/data/labels/pottedplant.png
+++ b/data/labels/pottedplant.png
Binary files differ
diff --git a/data/labels/refrigerator.png b/data/labels/refrigerator.png
index 0f8c959..f7646a7 100644
--- a/data/labels/refrigerator.png
+++ b/data/labels/refrigerator.png
Binary files differ
diff --git a/data/labels/remote.png b/data/labels/remote.png
index 714893b..e929b3f 100644
--- a/data/labels/remote.png
+++ b/data/labels/remote.png
Binary files differ
diff --git a/data/labels/sandwich.png b/data/labels/sandwich.png
index 5d2d77e..dd17f90 100644
--- a/data/labels/sandwich.png
+++ b/data/labels/sandwich.png
Binary files differ
diff --git a/data/labels/scissors.png b/data/labels/scissors.png
index b5583c8..88ae2f7 100644
--- a/data/labels/scissors.png
+++ b/data/labels/scissors.png
Binary files differ
diff --git a/data/labels/sheep.png b/data/labels/sheep.png
index 2b32bf8..3dd27f0 100644
--- a/data/labels/sheep.png
+++ b/data/labels/sheep.png
Binary files differ
diff --git a/data/labels/sink.png b/data/labels/sink.png
index d97981e..5107cc5 100644
--- a/data/labels/sink.png
+++ b/data/labels/sink.png
Binary files differ
diff --git a/data/labels/skateboard.png b/data/labels/skateboard.png
index e5df255..492b46b 100644
--- a/data/labels/skateboard.png
+++ b/data/labels/skateboard.png
Binary files differ
diff --git a/data/labels/skis.png b/data/labels/skis.png
index f222197..8359b2b 100644
--- a/data/labels/skis.png
+++ b/data/labels/skis.png
Binary files differ
diff --git a/data/labels/snowboard.png b/data/labels/snowboard.png
index 8c2b06c..a9d3de3 100644
--- a/data/labels/snowboard.png
+++ b/data/labels/snowboard.png
Binary files differ
diff --git a/data/labels/sofa.png b/data/labels/sofa.png
index a555a31..fb7b594 100644
--- a/data/labels/sofa.png
+++ b/data/labels/sofa.png
Binary files differ
diff --git a/data/labels/spoon.png b/data/labels/spoon.png
index 127dfd1..48a9cf9 100644
--- a/data/labels/spoon.png
+++ b/data/labels/spoon.png
Binary files differ
diff --git a/data/labels/sports ball.png b/data/labels/sports ball.png
index 957d37a..89789a9 100644
--- a/data/labels/sports ball.png
+++ b/data/labels/sports ball.png
Binary files differ
diff --git a/data/labels/stop sign.png b/data/labels/stop sign.png
index e32e371..d1f43e7 100644
--- a/data/labels/stop sign.png
+++ b/data/labels/stop sign.png
Binary files differ
diff --git a/data/labels/suitcase.png b/data/labels/suitcase.png
index c5b3898..f2e0c3f 100644
--- a/data/labels/suitcase.png
+++ b/data/labels/suitcase.png
Binary files differ
diff --git a/data/labels/surfboard.png b/data/labels/surfboard.png
index adbc0d9..57c26ce 100644
--- a/data/labels/surfboard.png
+++ b/data/labels/surfboard.png
Binary files differ
diff --git a/data/labels/teddy bear.png b/data/labels/teddy bear.png
index b79fb20..0ae0f6e 100644
--- a/data/labels/teddy bear.png
+++ b/data/labels/teddy bear.png
Binary files differ
diff --git a/data/labels/tennis racket.png b/data/labels/tennis racket.png
index 2390718..210628f 100644
--- a/data/labels/tennis racket.png
+++ b/data/labels/tennis racket.png
Binary files differ
diff --git a/data/labels/tie.png b/data/labels/tie.png
index a547fad..5cca45a 100644
--- a/data/labels/tie.png
+++ b/data/labels/tie.png
Binary files differ
diff --git a/data/labels/toaster.png b/data/labels/toaster.png
index 4c59a91..ff56fa8 100644
--- a/data/labels/toaster.png
+++ b/data/labels/toaster.png
Binary files differ
diff --git a/data/labels/toilet.png b/data/labels/toilet.png
index c7aa726..ef6f745 100644
--- a/data/labels/toilet.png
+++ b/data/labels/toilet.png
Binary files differ
diff --git a/data/labels/toothbrush.png b/data/labels/toothbrush.png
index 67877b0..e0e2ba1 100644
--- a/data/labels/toothbrush.png
+++ b/data/labels/toothbrush.png
Binary files differ
diff --git a/data/labels/traffic light.png b/data/labels/traffic light.png
index bd1e7c9..32a0377 100644
--- a/data/labels/traffic light.png
+++ b/data/labels/traffic light.png
Binary files differ
diff --git a/data/labels/train.png b/data/labels/train.png
index ec6d0dd..ebca5ca 100644
--- a/data/labels/train.png
+++ b/data/labels/train.png
Binary files differ
diff --git a/data/labels/truck.png b/data/labels/truck.png
index e6173f2..d24af46 100644
--- a/data/labels/truck.png
+++ b/data/labels/truck.png
Binary files differ
diff --git a/data/labels/tv.png b/data/labels/tv.png
index 92b23c3..fa5e458 100644
--- a/data/labels/tv.png
+++ b/data/labels/tv.png
Binary files differ
diff --git a/data/labels/tvmonitor.png b/data/labels/tvmonitor.png
index 2250e41..e7b88a8 100644
--- a/data/labels/tvmonitor.png
+++ b/data/labels/tvmonitor.png
Binary files differ
diff --git a/data/labels/umbrella.png b/data/labels/umbrella.png
index 4e32d8b..e581da1 100644
--- a/data/labels/umbrella.png
+++ b/data/labels/umbrella.png
Binary files differ
diff --git a/data/labels/vase.png b/data/labels/vase.png
index 54cdf07..a6cccec 100644
--- a/data/labels/vase.png
+++ b/data/labels/vase.png
Binary files differ
diff --git a/data/labels/wine glass.png b/data/labels/wine glass.png
index 1cac27d..0491f71 100644
--- a/data/labels/wine glass.png
+++ b/data/labels/wine glass.png
Binary files differ
diff --git a/data/labels/zebra.png b/data/labels/zebra.png
index a05c115..9f798cd 100644
--- a/data/labels/zebra.png
+++ b/data/labels/zebra.png
Binary files differ
diff --git a/src/coco.c b/src/coco.c
index af6f7b6..8ded951 100644
--- a/src/coco.c
+++ b/src/coco.c
@@ -348,9 +348,8 @@
         convert_detections(predictions, l.classes, l.n, l.sqrt, l.side, 1, 1, thresh, probs, boxes, 0);
         if (nms) do_nms_sort(boxes, probs, l.side*l.side*l.n, l.classes, nms);
         draw_detections(im, l.side*l.side*l.n, thresh, boxes, probs, coco_classes, coco_labels, 80);
+        save_image(im, "prediction");
         show_image(im, "predictions");
-
-        show_image(sized, "resized");
         free_image(im);
         free_image(sized);
 #ifdef OPENCV
diff --git a/src/connected_layer.c b/src/connected_layer.c
index f20aa93..e7784ea 100644
--- a/src/connected_layer.c
+++ b/src/connected_layer.c
@@ -192,6 +192,9 @@
             l.weights[i*l.inputs + j] *= scale;
         }
         l.biases[i] -= l.rolling_mean[i] * scale;
+        l.scales[i] = 1;
+        l.rolling_mean[i] = 0;
+        l.rolling_variance[i] = 1;
     }
 }
 
@@ -257,7 +260,6 @@
         axpy_ongpu(l.outputs, 1, l.biases_gpu, 1, l.output_gpu + i*l.outputs, 1);
     }
     activate_array_ongpu(l.output_gpu, l.outputs*l.batch, l.activation);
-
 }
 
 void backward_connected_layer_gpu(connected_layer l, network_state state)
diff --git a/src/convolutional_layer.c b/src/convolutional_layer.c
index 4014a24..e8ae49c 100644
--- a/src/convolutional_layer.c
+++ b/src/convolutional_layer.c
@@ -301,6 +301,9 @@
             l.filters[i*l.c*l.size*l.size + j] *= scale;
         }
         l.biases[i] -= l.rolling_mean[i] * scale;
+        l.scales[i] = 1;
+        l.rolling_mean[i] = 0;
+        l.rolling_variance[i] = 1;
     }
 }
 
@@ -434,7 +437,7 @@
        }
      */
 
-    if(l.xnor ){
+    if(l.xnor){
         binarize_filters(l.filters, l.n, l.c*l.size*l.size, l.binary_filters);
         swap_binary(&l);
         binarize_cpu(state.input, l.c*l.h*l.w*l.batch, l.binary_input);
diff --git a/src/darknet.c b/src/darknet.c
index aee9521..49c9747 100644
--- a/src/darknet.c
+++ b/src/darknet.c
@@ -14,6 +14,7 @@
 
 extern void run_imagenet(int argc, char **argv);
 extern void run_yolo(int argc, char **argv);
+extern void run_detector(int argc, char **argv);
 extern void run_coco(int argc, char **argv);
 extern void run_writing(int argc, char **argv);
 extern void run_captcha(int argc, char **argv);
@@ -97,12 +98,13 @@
     for(i = 0; i < net.n; ++i){
         layer l = net.layers[i];
         if(l.type == CONVOLUTIONAL){
-            ops += 2 * l.n * l.size*l.size*l.c * l.out_h*l.out_w;
+            ops += 2l * l.n * l.size*l.size*l.c * l.out_h*l.out_w;
         } else if(l.type == CONNECTED){
-            ops += 2 * l.inputs * l.outputs;
+            ops += 2l * l.inputs * l.outputs;
         }
     }
     printf("Floating Point Operations: %ld\n", ops);
+    printf("Floating Point Operations: %.2f Bn\n", (float)ops/1000000000.);
 }
 
 void partial(char *cfgfile, char *weightfile, char *outfile, int max)
@@ -164,6 +166,47 @@
     save_weights(net, outfile);
 }
 
+void reset_normalize_net(char *cfgfile, char *weightfile, char *outfile)
+{
+    gpu_index = -1;
+    network net = parse_network_cfg(cfgfile);
+    if (weightfile) {
+        load_weights(&net, weightfile);
+    }
+    int i;
+    for (i = 0; i < net.n; ++i) {
+        layer l = net.layers[i];
+        if (l.type == CONVOLUTIONAL && l.batch_normalize) {
+            denormalize_convolutional_layer(l);
+        }
+        if (l.type == CONNECTED && l.batch_normalize) {
+            denormalize_connected_layer(l);
+        }
+        if (l.type == GRU && l.batch_normalize) {
+            denormalize_connected_layer(*l.input_z_layer);
+            denormalize_connected_layer(*l.input_r_layer);
+            denormalize_connected_layer(*l.input_h_layer);
+            denormalize_connected_layer(*l.state_z_layer);
+            denormalize_connected_layer(*l.state_r_layer);
+            denormalize_connected_layer(*l.state_h_layer);
+        }
+    }
+    save_weights(net, outfile);
+}
+
+layer normalize_layer(layer l, int n)
+{
+    int j;
+    l.batch_normalize=1;
+    l.scales = calloc(n, sizeof(float));
+    for(j = 0; j < n; ++j){
+        l.scales[j] = 1;
+    }
+    l.rolling_mean = calloc(n, sizeof(float));
+    l.rolling_variance = calloc(n, sizeof(float));
+    return l;
+}
+
 void normalize_net(char *cfgfile, char *weightfile, char *outfile)
 {
     gpu_index = -1;
@@ -171,17 +214,23 @@
     if(weightfile){
         load_weights(&net, weightfile);
     }
-    int i, j;
+    int i;
     for(i = 0; i < net.n; ++i){
         layer l = net.layers[i];
-        if(l.type == CONVOLUTIONAL){
+        if(l.type == CONVOLUTIONAL && !l.batch_normalize){
+            net.layers[i] = normalize_layer(l, l.n);
+        }
+        if (l.type == CONNECTED && !l.batch_normalize) {
+            net.layers[i] = normalize_layer(l, l.outputs);
+        }
+        if (l.type == GRU && l.batch_normalize) {
+            *l.input_z_layer = normalize_layer(*l.input_z_layer, l.input_z_layer->outputs);
+            *l.input_r_layer = normalize_layer(*l.input_r_layer, l.input_r_layer->outputs);
+            *l.input_h_layer = normalize_layer(*l.input_h_layer, l.input_h_layer->outputs);
+            *l.state_z_layer = normalize_layer(*l.state_z_layer, l.state_z_layer->outputs);
+            *l.state_r_layer = normalize_layer(*l.state_r_layer, l.state_r_layer->outputs);
+            *l.state_h_layer = normalize_layer(*l.state_h_layer, l.state_h_layer->outputs);
             net.layers[i].batch_normalize=1;
-            net.layers[i].scales = calloc(l.n, sizeof(float));
-            for(j = 0; j < l.n; ++j){
-                net.layers[i].scales[i] = 1;
-            }
-            net.layers[i].rolling_mean = calloc(l.n, sizeof(float));
-            net.layers[i].rolling_variance = calloc(l.n, sizeof(float));
         }
     }
     save_weights(net, outfile);
@@ -265,6 +314,8 @@
         average(argc, argv);
     } else if (0 == strcmp(argv[1], "yolo")){
         run_yolo(argc, argv);
+    } else if (0 == strcmp(argv[1], "detector")){
+        run_detector(argc, argv);
     } else if (0 == strcmp(argv[1], "cifar")){
         run_cifar(argc, argv);
     } else if (0 == strcmp(argv[1], "go")){
@@ -299,6 +350,8 @@
         change_rate(argv[2], atof(argv[3]), (argc > 4) ? atof(argv[4]) : 0);
     } else if (0 == strcmp(argv[1], "rgbgr")){
         rgbgr_net(argv[2], argv[3], argv[4]);
+    } else if (0 == strcmp(argv[1], "reset")){
+        reset_normalize_net(argv[2], argv[3], argv[4]);
     } else if (0 == strcmp(argv[1], "denormalize")){
         denormalize_net(argv[2], argv[3], argv[4]);
     } else if (0 == strcmp(argv[1], "normalize")){
diff --git a/src/data.c b/src/data.c
index fcbdfc9..afd7506 100644
--- a/src/data.c
+++ b/src/data.c
@@ -297,11 +297,11 @@
 
         if (w < .01 || h < .01) continue;
 
-        truth[i*5+0] = id;
-        truth[i*5+1] = x;
-        truth[i*5+2] = y;
-        truth[i*5+3] = w;
-        truth[i*5+4] = h;
+        truth[i*5+0] = x;
+        truth[i*5+1] = y;
+        truth[i*5+2] = w;
+        truth[i*5+3] = h;
+        truth[i*5+4] = id;
     }
     free(boxes);
 }
diff --git a/src/demo.c b/src/demo.c
index 0b870cf..2e7ab93 100644
--- a/src/demo.c
+++ b/src/demo.c
@@ -8,7 +8,7 @@
 #include "demo.h"
 #include <sys/time.h>
 
-#define FRAMES 3
+#define FRAMES 1
 
 #ifdef OPENCV
 #include "opencv2/highgui/highgui_c.h"
diff --git a/src/detection_layer.h b/src/detection_layer.h
index 75d9b7f..e8c3a72 100644
--- a/src/detection_layer.h
+++ b/src/detection_layer.h
@@ -1,5 +1,5 @@
-#ifndef REGION_LAYER_H
-#define REGION_LAYER_H
+#ifndef DETECTION_LAYER_H
+#define DETECTION_LAYER_H
 
 #include "layer.h"
 #include "network.h"
diff --git a/src/image.c b/src/image.c
index 3bfa862..98e80c9 100644
--- a/src/image.c
+++ b/src/image.c
@@ -109,14 +109,17 @@
         int class = max_index(probs[i], classes);
         float prob = probs[i][class];
         if(prob > thresh){
-            int width = pow(prob, 1./2.)*10+1;
-            width = 8;
+            //int width = pow(prob, 1./2.)*30+1;
+            int width = 8;
             printf("%s: %.0f%%\n", names[class], prob*100);
             int offset = class*1 % classes;
             float red = get_color(2,offset,classes);
             float green = get_color(1,offset,classes);
             float blue = get_color(0,offset,classes);
             float rgb[3];
+
+            //width = prob*20+2;
+
             rgb[0] = red;
             rgb[1] = green;
             rgb[2] = blue;
diff --git a/src/layer.h b/src/layer.h
index 18f98c7..7182acd 100644
--- a/src/layer.h
+++ b/src/layer.h
@@ -29,6 +29,7 @@
     BATCHNORM,
     NETWORK,
     XNOR,
+    REGION,
     BLANK
 } LAYER_TYPE;
 
diff --git a/src/network.c b/src/network.c
index a9e5027..6ed82ce 100644
--- a/src/network.c
+++ b/src/network.c
@@ -16,6 +16,7 @@
 #include "activation_layer.h"
 #include "deconvolutional_layer.h"
 #include "detection_layer.h"
+#include "region_layer.h"
 #include "normalization_layer.h"
 #include "batchnorm_layer.h"
 #include "maxpool_layer.h"
@@ -103,6 +104,8 @@
             return "softmax";
         case DETECTION:
             return "detection";
+        case REGION:
+            return "region";
         case DROPOUT:
             return "dropout";
         case CROP:
@@ -160,6 +163,8 @@
             forward_batchnorm_layer(l, state);
         } else if(l.type == DETECTION){
             forward_detection_layer(l, state);
+        } else if(l.type == REGION){
+            forward_region_layer(l, state);
         } else if(l.type == CONNECTED){
             forward_connected_layer(l, state);
         } else if(l.type == RNN){
@@ -230,11 +235,7 @@
     float sum = 0;
     int count = 0;
     for(i = 0; i < net.n; ++i){
-        if(net.layers[i].type == COST){
-            sum += net.layers[i].cost[0];
-            ++count;
-        }
-        if(net.layers[i].type == DETECTION){
+        if(net.layers[i].cost){
             sum += net.layers[i].cost[0];
             ++count;
         }
@@ -284,6 +285,8 @@
             backward_dropout_layer(l, state);
         } else if(l.type == DETECTION){
             backward_detection_layer(l, state);
+        } else if(l.type == REGION){
+            backward_region_layer(l, state);
         } else if(l.type == SOFTMAX){
             if(i != 0) backward_softmax_layer(l, state);
         } else if(l.type == CONNECTED){
diff --git a/src/network_kernels.cu b/src/network_kernels.cu
index 285f72c..e1d4129 100644
--- a/src/network_kernels.cu
+++ b/src/network_kernels.cu
@@ -19,6 +19,7 @@
 #include "gru_layer.h"
 #include "crnn_layer.h"
 #include "detection_layer.h"
+#include "region_layer.h"
 #include "convolutional_layer.h"
 #include "activation_layer.h"
 #include "deconvolutional_layer.h"
@@ -59,6 +60,8 @@
             forward_local_layer_gpu(l, state);
         } else if(l.type == DETECTION){
             forward_detection_layer_gpu(l, state);
+        } else if(l.type == REGION){
+            forward_region_layer_gpu(l, state);
         } else if(l.type == CONNECTED){
             forward_connected_layer_gpu(l, state);
         } else if(l.type == RNN){
@@ -125,6 +128,8 @@
             backward_dropout_layer_gpu(l, state);
         } else if(l.type == DETECTION){
             backward_detection_layer_gpu(l, state);
+        } else if(l.type == REGION){
+            backward_region_layer_gpu(l, state);
         } else if(l.type == NORMALIZATION){
             backward_normalization_layer_gpu(l, state);
         } else if(l.type == BATCHNORM){
@@ -181,7 +186,7 @@
     state.net = net;
     int x_size = get_network_input_size(net)*net.batch;
     int y_size = get_network_output_size(net)*net.batch;
-    if(net.layers[net.n-1].type == DETECTION) y_size = net.layers[net.n-1].truths*net.batch;
+    if(net.layers[net.n-1].truths) y_size = net.layers[net.n-1].truths*net.batch;
     if(!*net.input_gpu){
         *net.input_gpu = cuda_make_array(x, x_size);
         *net.truth_gpu = cuda_make_array(y, y_size);
diff --git a/src/parser.c b/src/parser.c
index 1e5be4d..b5c399f 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -19,6 +19,7 @@
 #include "softmax_layer.h"
 #include "dropout_layer.h"
 #include "detection_layer.h"
+#include "region_layer.h"
 #include "avgpool_layer.h"
 #include "local_layer.h"
 #include "route_layer.h"
@@ -51,6 +52,7 @@
 int is_shortcut(section *s);
 int is_cost(section *s);
 int is_detection(section *s);
+int is_region(section *s);
 int is_route(section *s);
 list *read_cfg(char *filename);
 
@@ -245,6 +247,25 @@
     return layer;
 }
 
+layer parse_region(list *options, size_params params)
+{
+    int coords = option_find_int(options, "coords", 4);
+    int classes = option_find_int(options, "classes", 20);
+    int num = option_find_int(options, "num", 1);
+    layer l = make_region_layer(params.batch, params.w, params.h, num, classes, coords);
+    assert(l.outputs == params.inputs);
+
+    l.softmax = option_find_int(options, "softmax", 0);
+    l.max_boxes = option_find_int_quiet(options, "max",30);
+    l.jitter = option_find_float(options, "jitter", .2);
+    l.rescore = option_find_int_quiet(options, "rescore",0);
+
+    l.coord_scale = option_find_float(options, "coord_scale", 1);
+    l.object_scale = option_find_float(options, "object_scale", 1);
+    l.noobject_scale = option_find_float(options, "noobject_scale", 1);
+    l.class_scale = option_find_float(options, "class_scale", 1);
+    return l;
+}
 detection_layer parse_detection(list *options, size_params params)
 {
     int coords = option_find_int(options, "coords", 1);
@@ -557,6 +578,8 @@
             l = parse_crop(options, params);
         }else if(is_cost(s)){
             l = parse_cost(options, params);
+        }else if(is_region(s)){
+            l = parse_region(options, params);
         }else if(is_detection(s)){
             l = parse_detection(options, params);
         }else if(is_softmax(s)){
@@ -620,6 +643,7 @@
     if (strcmp(type, "[crop]")==0) return CROP;
     if (strcmp(type, "[cost]")==0) return COST;
     if (strcmp(type, "[detection]")==0) return DETECTION;
+    if (strcmp(type, "[region]")==0) return REGION;
     if (strcmp(type, "[local]")==0) return LOCAL;
     if (strcmp(type, "[deconv]")==0
             || strcmp(type, "[deconvolutional]")==0) return DECONVOLUTIONAL;
@@ -659,6 +683,10 @@
 {
     return (strcmp(s->type, "[cost]")==0);
 }
+int is_region(section *s)
+{
+    return (strcmp(s->type, "[region]")==0);
+}
 int is_detection(section *s)
 {
     return (strcmp(s->type, "[detection]")==0);

--
Gitblit v1.10.0