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