From fe44d3d0f29e96714de75234e1fd7e40b05b0296 Mon Sep 17 00:00:00 2001 From: AlexeyAB Date: Sat, 3 Mar 2018 18:09:46 +0300 Subject: [PATCH] Fixed reorg_layer. Old reorg can be used as [reorg_old] in the cfg-file. --- Makefile | 2 +- build/darknet/darknet.vcxproj | 2 + build/darknet/darknet_no_gpu.vcxproj | 2 + build/darknet/x64/darknet_voc.cmd | 4 +- build/darknet/x64/dogr.jpg | Bin 0 -> 86810 bytes build/darknet/yolo_cpp_dll.vcxproj | 2 + build/darknet/yolo_cpp_dll_no_gpu.vcxproj | 2 + src/blas.c | 23 +++-- src/layer.h | 1 + src/parser.c | 23 ++++- src/reorg_layer.c | 46 +++++---- src/reorg_old_layer.c | 118 ++++++++++++++++++++++ src/reorg_old_layer.h | 20 ++++ 13 files changed, 211 insertions(+), 34 deletions(-) create mode 100644 build/darknet/x64/dogr.jpg create mode 100644 src/reorg_old_layer.c create mode 100644 src/reorg_old_layer.h diff --git a/Makefile b/Makefile index 8898ba85..41f0e049 100644 --- a/Makefile +++ b/Makefile @@ -74,7 +74,7 @@ CFLAGS+= -DCUDNN -I/usr/local/cudnn/include LDFLAGS+= -L/usr/local/cudnn/lib64 -lcudnn endif -OBJ=http_stream.o gemm.o utils.o cuda.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 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 reorg_layer.o super.o voxel.o tree.o +OBJ=http_stream.o gemm.o utils.o cuda.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 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 reorg_layer.o reorg_old_layer.o super.o voxel.o tree.o ifeq ($(GPU), 1) LDFLAGS+= -lstdc++ OBJ+=convolutional_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 network_kernels.o avgpool_layer_kernels.o diff --git a/build/darknet/darknet.vcxproj b/build/darknet/darknet.vcxproj index a6c2b518..300dd453 100644 --- a/build/darknet/darknet.vcxproj +++ b/build/darknet/darknet.vcxproj @@ -216,6 +216,7 @@ + @@ -269,6 +270,7 @@ + diff --git a/build/darknet/darknet_no_gpu.vcxproj b/build/darknet/darknet_no_gpu.vcxproj index 578a5af3..e1c4c37f 100644 --- a/build/darknet/darknet_no_gpu.vcxproj +++ b/build/darknet/darknet_no_gpu.vcxproj @@ -213,6 +213,7 @@ + @@ -266,6 +267,7 @@ + diff --git a/build/darknet/x64/darknet_voc.cmd b/build/darknet/x64/darknet_voc.cmd index 864bb641..1ee177a6 100644 --- a/build/darknet/x64/darknet_voc.cmd +++ b/build/darknet/x64/darknet_voc.cmd @@ -1,8 +1,8 @@ -darknet.exe detector test data/voc.data yolo-voc.cfg yolo-voc.weights 009460.jpg +rem darknet.exe detector test data/voc.data yolo-voc.cfg yolo-voc.weights 009460.jpg -darknet.exe detector test data/voc.data yolo-voc.cfg yolo-voc.weights -i 0 -thresh 0.1 dogr.jpg +darknet.exe detector test data/voc.data yolo-voc.cfg yolo-voc.weights -i 0 -thresh 0.2 dogr.jpg pause \ No newline at end of file diff --git a/build/darknet/x64/dogr.jpg b/build/darknet/x64/dogr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e9201231bdb19ecc03854facbdbe2430f97b5817 GIT binary patch literal 86810 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
2{#4oO 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

rtbHlyog@46 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 AP*{hT`^3rL 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 B$;JQx literal 0 HcmV?d00001 diff --git a/build/darknet/yolo_cpp_dll.vcxproj b/build/darknet/yolo_cpp_dll.vcxproj index 31699fba..b68c5b4c 100644 --- a/build/darknet/yolo_cpp_dll.vcxproj +++ b/build/darknet/yolo_cpp_dll.vcxproj @@ -218,6 +218,7 @@ + @@ -273,6 +274,7 @@ + diff --git a/build/darknet/yolo_cpp_dll_no_gpu.vcxproj b/build/darknet/yolo_cpp_dll_no_gpu.vcxproj index 03fbd3aa..c1d1d30e 100644 --- a/build/darknet/yolo_cpp_dll_no_gpu.vcxproj +++ b/build/darknet/yolo_cpp_dll_no_gpu.vcxproj @@ -202,6 +202,7 @@ + @@ -256,6 +257,7 @@ + diff --git a/src/blas.c b/src/blas.c index cb6501fd..6d565e96 100644 --- a/src/blas.c +++ b/src/blas.c @@ -6,22 +6,25 @@ #include #include #include -void reorg_cpu(float *x, int w, int h, int c, int batch, int stride, int forward, float *out) +void reorg_cpu(float *x, int out_w, int out_h, int out_c, int batch, int stride, int forward, float *out) { int b,i,j,k; - int out_c = c/(stride*stride); + int in_c = out_c/(stride*stride); + + //printf("\n out_c = %d, out_w = %d, out_h = %d, stride = %d, forward = %d \n", out_c, out_w, out_h, stride, forward); + //printf(" in_c = %d, in_w = %d, in_h = %d \n", in_c, out_w*stride, out_h*stride); for(b = 0; b < batch; ++b){ - for(k = 0; k < c; ++k){ - for(j = 0; j < h; ++j){ - for(i = 0; i < w; ++i){ - int in_index = i + w*(j + h*(k + c*b)); - int c2 = k % out_c; - int offset = k / out_c; + for(k = 0; k < out_c; ++k){ + for(j = 0; j < out_h; ++j){ + for(i = 0; i < out_w; ++i){ + int in_index = i + out_w*(j + out_h*(k + out_c*b)); + int c2 = k % in_c; + int offset = k / in_c; int w2 = i*stride + offset % stride; int h2 = j*stride + offset / stride; - int out_index = w2 + w*stride*(h2 + h*stride*(c2 + out_c*b)); - if(forward) out[out_index] = x[in_index]; + int out_index = w2 + out_w*stride*(h2 + out_h*stride*(c2 + in_c*b)); + if(forward) out[out_index] = x[in_index]; // used by default for forward (i.e. forward = 0) else out[in_index] = x[out_index]; } } diff --git a/src/layer.h b/src/layer.h index 93aca6c7..9bf60570 100644 --- a/src/layer.h +++ b/src/layer.h @@ -34,6 +34,7 @@ typedef enum { XNOR, REGION, REORG, + REORG_OLD, BLANK } LAYER_TYPE; diff --git a/src/parser.c b/src/parser.c index 78036322..1adcd166 100644 --- a/src/parser.c +++ b/src/parser.c @@ -24,6 +24,7 @@ #include "parser.h" #include "region_layer.h" #include "reorg_layer.h" +#include "reorg_old_layer.h" #include "rnn_layer.h" #include "route_layer.h" #include "shortcut_layer.h" @@ -60,6 +61,7 @@ LAYER_TYPE string_to_layer_type(char * type) if (strcmp(type, "[max]")==0 || strcmp(type, "[maxpool]")==0) return MAXPOOL; if (strcmp(type, "[reorg]")==0) return REORG; + if (strcmp(type, "[reorg_old]") == 0) return REORG_OLD; if (strcmp(type, "[avg]")==0 || strcmp(type, "[avgpool]")==0) return AVGPOOL; if (strcmp(type, "[dropout]")==0) return DROPOUT; @@ -358,6 +360,23 @@ layer parse_reorg(list *options, size_params params) return layer; } +layer parse_reorg_old(list *options, size_params params) +{ + printf("\n reorg_old \n"); + int stride = option_find_int(options, "stride", 1); + int reverse = option_find_int_quiet(options, "reverse", 0); + + int batch, h, w, c; + h = params.h; + w = params.w; + c = params.c; + batch = params.batch; + if (!(h && w && c)) error("Layer before reorg layer must output image."); + + layer layer = make_reorg_old_layer(batch, w, h, c, stride, reverse); + return layer; +} + maxpool_layer parse_maxpool(list *options, size_params params) { int stride = option_find_int(options, "stride",1); @@ -657,7 +676,9 @@ network parse_network_cfg_custom(char *filename, int batch) }else if(lt == MAXPOOL){ l = parse_maxpool(options, params); }else if(lt == REORG){ - l = parse_reorg(options, params); + l = parse_reorg(options, params); } + else if (lt == REORG_OLD) { + l = parse_reorg_old(options, params); }else if(lt == AVGPOOL){ l = parse_avgpool(options, params); }else if(lt == ROUTE){ diff --git a/src/reorg_layer.c b/src/reorg_layer.c index 2abca8fa..9c8ea829 100644 --- a/src/reorg_layer.c +++ b/src/reorg_layer.c @@ -77,38 +77,44 @@ void resize_reorg_layer(layer *l, int w, int h) void forward_reorg_layer(const layer l, network_state state) { - if(l.reverse){ - reorg_cpu(state.input, l.w, l.h, l.c, l.batch, l.stride, 1, l.output); - }else { - reorg_cpu(state.input, l.w, l.h, l.c, l.batch, l.stride, 0, l.output); - } + if (l.reverse) { + reorg_cpu(state.input, l.out_w, l.out_h, l.out_c, l.batch, l.stride, 1, l.output); + } + else { + reorg_cpu(state.input, l.out_w, l.out_h, l.out_c, l.batch, l.stride, 0, l.output); + } } void backward_reorg_layer(const layer l, network_state state) { - if(l.reverse){ - reorg_cpu(l.delta, l.w, l.h, l.c, l.batch, l.stride, 0, state.delta); - }else{ - reorg_cpu(l.delta, l.w, l.h, l.c, l.batch, l.stride, 1, state.delta); - } + if (l.reverse) { + reorg_cpu(l.delta, l.out_w, l.out_h, l.out_c, l.batch, l.stride, 0, state.delta); + } + else { + reorg_cpu(l.delta, l.out_w, l.out_h, l.out_c, l.batch, l.stride, 1, state.delta); + } } #ifdef GPU void forward_reorg_layer_gpu(layer l, network_state state) { - if(l.reverse){ - reorg_ongpu(state.input, l.w, l.h, l.c, l.batch, l.stride, 1, l.output_gpu); - }else { - reorg_ongpu(state.input, l.w, l.h, l.c, l.batch, l.stride, 0, l.output_gpu); - } + if (l.reverse) { + reorg_ongpu(state.input, l.out_w, l.out_h, l.out_c, l.batch, l.stride, 1, l.output_gpu); + } + else { + reorg_ongpu(state.input, l.out_w, l.out_h, l.out_c, l.batch, l.stride, 0, l.output_gpu); + } } void backward_reorg_layer_gpu(layer l, network_state state) { - if(l.reverse){ - reorg_ongpu(l.delta_gpu, l.w, l.h, l.c, l.batch, l.stride, 0, state.delta); - }else{ - reorg_ongpu(l.delta_gpu, l.w, l.h, l.c, l.batch, l.stride, 1, state.delta); - } + if (l.reverse) { + reorg_ongpu(l.delta_gpu, l.out_w, l.out_h, l.out_c, l.batch, l.stride, 0, state.delta); + //reorg_ongpu(l.delta_gpu, l.w, l.h, l.c, l.batch, l.stride, 0, state.delta); + } + else { + reorg_ongpu(l.delta_gpu, l.out_w, l.out_h, l.out_c, l.batch, l.stride, 1, state.delta); + //reorg_ongpu(l.delta_gpu, l.w, l.h, l.c, l.batch, l.stride, 1, state.delta); + } } #endif diff --git a/src/reorg_old_layer.c b/src/reorg_old_layer.c new file mode 100644 index 00000000..c55cf7c2 --- /dev/null +++ b/src/reorg_old_layer.c @@ -0,0 +1,118 @@ +#include "reorg_old_layer.h" +#include "cuda.h" +#include "blas.h" +#include + + +layer make_reorg_old_layer(int batch, int w, int h, int c, int stride, int reverse) +{ + layer l = {0}; + l.type = REORG_OLD; + l.batch = batch; + l.stride = stride; + l.h = h; + l.w = w; + l.c = c; + if(reverse){ + l.out_w = w*stride; + l.out_h = h*stride; + l.out_c = c/(stride*stride); + }else{ + l.out_w = w/stride; + l.out_h = h/stride; + l.out_c = c*(stride*stride); + } + l.reverse = reverse; + fprintf(stderr, "reorg_old /%2d %4d x%4d x%4d -> %4d x%4d x%4d\n", stride, w, h, c, l.out_w, l.out_h, l.out_c); + l.outputs = l.out_h * l.out_w * l.out_c; + l.inputs = h*w*c; + int output_size = l.out_h * l.out_w * l.out_c * batch; + l.output = calloc(output_size, sizeof(float)); + l.delta = calloc(output_size, sizeof(float)); + + l.forward = forward_reorg_old_layer; + l.backward = backward_reorg_old_layer; +#ifdef GPU + l.forward_gpu = forward_reorg_old_layer_gpu; + l.backward_gpu = backward_reorg_old_layer_gpu; + + l.output_gpu = cuda_make_array(l.output, output_size); + l.delta_gpu = cuda_make_array(l.delta, output_size); +#endif + return l; +} + +void resize_reorg_old_layer(layer *l, int w, int h) +{ + int stride = l->stride; + int c = l->c; + + l->h = h; + l->w = w; + + if(l->reverse){ + l->out_w = w*stride; + l->out_h = h*stride; + l->out_c = c/(stride*stride); + }else{ + l->out_w = w/stride; + l->out_h = h/stride; + l->out_c = c*(stride*stride); + } + + l->outputs = l->out_h * l->out_w * l->out_c; + l->inputs = l->outputs; + int output_size = l->outputs * l->batch; + + l->output = realloc(l->output, output_size * sizeof(float)); + l->delta = realloc(l->delta, output_size * sizeof(float)); + +#ifdef GPU + cuda_free(l->output_gpu); + cuda_free(l->delta_gpu); + l->output_gpu = cuda_make_array(l->output, output_size); + l->delta_gpu = cuda_make_array(l->delta, output_size); +#endif +} + +void forward_reorg_old_layer(const layer l, network_state state) +{ + if (l.reverse) { + reorg_cpu(state.input, l.w, l.h, l.c, l.batch, l.stride, 1, l.output); + } + else { + reorg_cpu(state.input, l.w, l.h, l.c, l.batch, l.stride, 0, l.output); + } +} + +void backward_reorg_old_layer(const layer l, network_state state) +{ + if (l.reverse) { + reorg_cpu(l.delta, l.w, l.h, l.c, l.batch, l.stride, 0, state.delta); + } + else { + reorg_cpu(l.delta, l.w, l.h, l.c, l.batch, l.stride, 1, state.delta); + } +} + +#ifdef GPU +void forward_reorg_old_layer_gpu(layer l, network_state state) +{ + if (l.reverse) { + reorg_ongpu(state.input, l.w, l.h, l.c, l.batch, l.stride, 1, l.output_gpu); + } + else { + reorg_ongpu(state.input, l.w, l.h, l.c, l.batch, l.stride, 0, l.output_gpu); + } +} + +void backward_reorg_old_layer_gpu(layer l, network_state state) +{ + if (l.reverse) { + reorg_ongpu(l.delta_gpu, l.w, l.h, l.c, l.batch, l.stride, 0, state.delta); + } + else { + reorg_ongpu(l.delta_gpu, l.w, l.h, l.c, l.batch, l.stride, 1, state.delta); + } +} +#endif diff --git a/src/reorg_old_layer.h b/src/reorg_old_layer.h new file mode 100644 index 00000000..e1838202 --- /dev/null +++ b/src/reorg_old_layer.h @@ -0,0 +1,20 @@ +#ifndef REORG_OLD_LAYER_H +#define REORG_OLD_LAYER_H + +#include "image.h" +#include "cuda.h" +#include "layer.h" +#include "network.h" + +layer make_reorg_old_layer(int batch, int h, int w, int c, int stride, int reverse); +void resize_reorg_old_layer(layer *l, int w, int h); +void forward_reorg_old_layer(const layer l, network_state state); +void backward_reorg_old_layer(const layer l, network_state state); + +#ifdef GPU +void forward_reorg_old_layer_gpu(layer l, network_state state); +void backward_reorg_old_layer_gpu(layer l, network_state state); +#endif + +#endif +