From 050916fd6b1957a025d22f05d1dbafee0f77e9dd Mon Sep 17 00:00:00 2001 From: Vladislav Sovrasov Date: Tue, 10 Oct 2017 12:03:05 +0300 Subject: [PATCH] dnn: modify priorBox layer --- modules/dnn/misc/caffe/caffe.pb.cc | 883 +++++++++++---------- modules/dnn/misc/caffe/caffe.pb.h | 34 + modules/dnn/src/caffe/caffe.proto | 2 + modules/dnn/src/layers/prior_box_layer.cpp | 47 ++ 4 files changed, 555 insertions(+), 411 deletions(-) diff --git a/modules/dnn/misc/caffe/caffe.pb.cc b/modules/dnn/misc/caffe/caffe.pb.cc index 8f5327e32a..02605e1d49 100644 --- a/modules/dnn/misc/caffe/caffe.pb.cc +++ b/modules/dnn/misc/caffe/caffe.pb.cc @@ -347,7 +347,7 @@ void protobuf_AssignDesc_caffe_2eproto() { sizeof(NormalizeBBoxParameter), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(NormalizeBBoxParameter, _internal_metadata_)); PriorBoxParameter_descriptor_ = file->message_type(5); - static const int PriorBoxParameter_offsets_[13] = { + static const int PriorBoxParameter_offsets_[14] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PriorBoxParameter, min_size_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PriorBoxParameter, max_size_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PriorBoxParameter, aspect_ratio_), @@ -361,6 +361,7 @@ void protobuf_AssignDesc_caffe_2eproto() { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PriorBoxParameter, step_h_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PriorBoxParameter, step_w_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PriorBoxParameter, offset_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PriorBoxParameter, additional_y_offset_), }; PriorBoxParameter_reflection_ = ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection( @@ -2130,418 +2131,419 @@ void protobuf_AddDesc_caffe_2eproto_impl() { "(\r\"\226\001\n\026NormalizeBBoxParameter\022\034\n\016across_" "spatial\030\001 \001(\010:\004true\022,\n\014scale_filler\030\002 \001(" "\0132\026.caffe.FillerParameter\022\034\n\016channel_sha" - "red\030\003 \001(\010:\004true\022\022\n\003eps\030\004 \001(\002:\0051e-10\"\243\002\n\021" + "red\030\003 \001(\010:\004true\022\022\n\003eps\030\004 \001(\002:\0051e-10\"\307\002\n\021" "PriorBoxParameter\022\020\n\010min_size\030\001 \001(\002\022\020\n\010m" "ax_size\030\002 \001(\002\022\024\n\014aspect_ratio\030\003 \003(\002\022\022\n\004f" "lip\030\004 \001(\010:\004true\022\022\n\004clip\030\005 \001(\010:\004true\022\020\n\010v" "ariance\030\006 \003(\002\022\020\n\010img_size\030\007 \001(\r\022\r\n\005img_h" "\030\010 \001(\r\022\r\n\005img_w\030\t \001(\r\022\014\n\004step\030\n \001(\002\022\016\n\006s" "tep_h\030\013 \001(\002\022\016\n\006step_w\030\014 \001(\002\022\023\n\006offset\030\r " - "\001(\002:\0030.5\"\'\n\010CodeType\022\n\n\006CORNER\020\001\022\017\n\013CENT" - "ER_SIZE\020\002\"\375\002\n\030DetectionOutputParameter\022\023" - "\n\013num_classes\030\001 \001(\r\022\034\n\016share_location\030\002 " - "\001(\010:\004true\022\036\n\023background_label_id\030\003 \001(\005:\001" - "0\0228\n\tnms_param\030\004 \001(\0132%.caffe.NonMaximumS" - "uppressionParameter\0225\n\021save_output_param" - "\030\005 \001(\0132\032.caffe.SaveOutputParameter\022<\n\tco" - "de_type\030\006 \001(\0162!.caffe.PriorBoxParameter." - "CodeType:\006CORNER\022)\n\032variance_encoded_in_" - "target\030\010 \001(\010:\005false\022\026\n\nkeep_top_k\030\007 \001(\005:" - "\002-1\022\034\n\024confidence_threshold\030\t \001(\002\"\201\001\n\005Da" - "tum\022\020\n\010channels\030\001 \001(\005\022\016\n\006height\030\002 \001(\005\022\r\n" - "\005width\030\003 \001(\005\022\014\n\004data\030\004 \001(\014\022\r\n\005label\030\005 \001(" - "\005\022\022\n\nfloat_data\030\006 \003(\002\022\026\n\007encoded\030\007 \001(\010:\005" - "false\"\212\002\n\017FillerParameter\022\026\n\004type\030\001 \001(\t:" - "\010constant\022\020\n\005value\030\002 \001(\002:\0010\022\016\n\003min\030\003 \001(\002" - ":\0010\022\016\n\003max\030\004 \001(\002:\0011\022\017\n\004mean\030\005 \001(\002:\0010\022\016\n\003" - "std\030\006 \001(\002:\0011\022\022\n\006sparse\030\007 \001(\005:\002-1\022B\n\rvari" - "ance_norm\030\010 \001(\0162#.caffe.FillerParameter." - "VarianceNorm:\006FAN_IN\"4\n\014VarianceNorm\022\n\n\006" - "FAN_IN\020\000\022\013\n\007FAN_OUT\020\001\022\013\n\007AVERAGE\020\002\"\216\002\n\014N" - "etParameter\022\014\n\004name\030\001 \001(\t\022\r\n\005input\030\003 \003(\t" - "\022%\n\013input_shape\030\010 \003(\0132\020.caffe.BlobShape\022" - "\021\n\tinput_dim\030\004 \003(\005\022\035\n\016force_backward\030\005 \001" - "(\010:\005false\022\036\n\005state\030\006 \001(\0132\017.caffe.NetStat" - "e\022\031\n\ndebug_info\030\007 \001(\010:\005false\022$\n\005layer\030d " - "\003(\0132\025.caffe.LayerParameter\022\'\n\006layers\030\002 \003" - "(\0132\027.caffe.V1LayerParameter\"\242\n\n\017SolverPa" - "rameter\022\013\n\003net\030\030 \001(\t\022&\n\tnet_param\030\031 \001(\0132" - "\023.caffe.NetParameter\022\021\n\ttrain_net\030\001 \001(\t\022" - "\020\n\010test_net\030\002 \003(\t\022,\n\017train_net_param\030\025 \001" - "(\0132\023.caffe.NetParameter\022+\n\016test_net_para" - "m\030\026 \003(\0132\023.caffe.NetParameter\022$\n\013train_st" - "ate\030\032 \001(\0132\017.caffe.NetState\022#\n\ntest_state" - "\030\033 \003(\0132\017.caffe.NetState\022\021\n\ttest_iter\030\003 \003" - "(\005\022\030\n\rtest_interval\030\004 \001(\005:\0010\022 \n\021test_com" - "pute_loss\030\023 \001(\010:\005false\022!\n\023test_initializ" - "ation\030 \001(\010:\004true\022\017\n\007base_lr\030\005 \001(\002\022\017\n\007di" - "splay\030\006 \001(\005\022\027\n\014average_loss\030! \001(\005:\0011\022\020\n\010" - "max_iter\030\007 \001(\005\022\024\n\titer_size\030$ \001(\005:\0011\022\021\n\t" - "lr_policy\030\010 \001(\t\022\r\n\005gamma\030\t \001(\002\022\r\n\005power\030" - "\n \001(\002\022\020\n\010momentum\030\013 \001(\002\022\024\n\014weight_decay\030" - "\014 \001(\002\022\037\n\023regularization_type\030\035 \001(\t:\002L2\022\020" - "\n\010stepsize\030\r \001(\005\022\021\n\tstepvalue\030\" \003(\005\022\032\n\016c" - "lip_gradients\030# \001(\002:\002-1\022\023\n\010snapshot\030\016 \001(" - "\005:\0010\022\027\n\017snapshot_prefix\030\017 \001(\t\022\034\n\rsnapsho" - "t_diff\030\020 \001(\010:\005false\022K\n\017snapshot_format\030%" - " \001(\0162%.caffe.SolverParameter.SnapshotFor" - "mat:\013BINARYPROTO\022;\n\013solver_mode\030\021 \001(\0162!." - "caffe.SolverParameter.SolverMode:\003GPU\022\024\n" - "\tdevice_id\030\022 \001(\005:\0010\022\027\n\013random_seed\030\024 \001(\003" - ":\002-1\022\021\n\004type\030( \001(\t:\003SGD\022\024\n\005delta\030\037 \001(\002:\005" - "1e-08\022\030\n\tmomentum2\030\' \001(\002:\0050.999\022\027\n\trms_d" - "ecay\030& \001(\002:\0040.99\022\031\n\ndebug_info\030\027 \001(\010:\005fa" - "lse\022\"\n\024snapshot_after_train\030\034 \001(\010:\004true\022" - ";\n\013solver_type\030\036 \001(\0162!.caffe.SolverParam" - "eter.SolverType:\003SGD\"+\n\016SnapshotFormat\022\010" - "\n\004HDF5\020\000\022\017\n\013BINARYPROTO\020\001\"\036\n\nSolverMode\022" - "\007\n\003CPU\020\000\022\007\n\003GPU\020\001\"U\n\nSolverType\022\007\n\003SGD\020\000" - "\022\014\n\010NESTEROV\020\001\022\013\n\007ADAGRAD\020\002\022\013\n\007RMSPROP\020\003" - "\022\014\n\010ADADELTA\020\004\022\010\n\004ADAM\020\005\"l\n\013SolverState\022" - "\014\n\004iter\030\001 \001(\005\022\023\n\013learned_net\030\002 \001(\t\022!\n\007hi" - "story\030\003 \003(\0132\020.caffe.BlobProto\022\027\n\014current" - "_step\030\004 \001(\005:\0010\"N\n\010NetState\022!\n\005phase\030\001 \001(" - "\0162\014.caffe.Phase:\004TEST\022\020\n\005level\030\002 \001(\005:\0010\022" - "\r\n\005stage\030\003 \003(\t\"s\n\014NetStateRule\022\033\n\005phase\030" - "\001 \001(\0162\014.caffe.Phase\022\021\n\tmin_level\030\002 \001(\005\022\021" - "\n\tmax_level\030\003 \001(\005\022\r\n\005stage\030\004 \003(\t\022\021\n\tnot_" - "stage\030\005 \003(\t\"\243\001\n\tParamSpec\022\014\n\004name\030\001 \001(\t\022" - "1\n\nshare_mode\030\002 \001(\0162\035.caffe.ParamSpec.Di" - "mCheckMode\022\022\n\007lr_mult\030\003 \001(\002:\0011\022\025\n\ndecay_" - "mult\030\004 \001(\002:\0011\"*\n\014DimCheckMode\022\n\n\006STRICT\020" - "\000\022\016\n\nPERMISSIVE\020\001\"\335\025\n\016LayerParameter\022\014\n\004" - "name\030\001 \001(\t\022\014\n\004type\030\002 \001(\t\022\016\n\006bottom\030\003 \003(\t" - "\022\013\n\003top\030\004 \003(\t\022\033\n\005phase\030\n \001(\0162\014.caffe.Pha" - "se\022\023\n\013loss_weight\030\005 \003(\002\022\037\n\005param\030\006 \003(\0132\020" - ".caffe.ParamSpec\022\037\n\005blobs\030\007 \003(\0132\020.caffe." - "BlobProto\022\026\n\016propagate_down\030\013 \003(\010\022$\n\007inc" - "lude\030\010 \003(\0132\023.caffe.NetStateRule\022$\n\007exclu" - "de\030\t \003(\0132\023.caffe.NetStateRule\0227\n\017transfo" - "rm_param\030d \001(\0132\036.caffe.TransformationPar" - "ameter\022(\n\nloss_param\030e \001(\0132\024.caffe.LossP" - "arameter\0220\n\016accuracy_param\030f \001(\0132\030.caffe" - ".AccuracyParameter\022,\n\014argmax_param\030g \001(\013" - "2\026.caffe.ArgMaxParameter\0224\n\020batch_norm_p" - "aram\030\213\001 \001(\0132\031.caffe.BatchNormParameter\022)" - "\n\nbias_param\030\215\001 \001(\0132\024.caffe.BiasParamete" - "r\022,\n\014concat_param\030h \001(\0132\026.caffe.ConcatPa" - "rameter\022\?\n\026contrastive_loss_param\030i \001(\0132" - "\037.caffe.ContrastiveLossParameter\0226\n\021conv" - "olution_param\030j \001(\0132\033.caffe.ConvolutionP" - "arameter\022)\n\ncrop_param\030\220\001 \001(\0132\024.caffe.Cr" - "opParameter\022(\n\ndata_param\030k \001(\0132\024.caffe." - "DataParameter\022@\n\026detection_output_param\030" - "\223\001 \001(\0132\037.caffe.DetectionOutputParameter\022" - ".\n\rdropout_param\030l \001(\0132\027.caffe.DropoutPa" - "rameter\0223\n\020dummy_data_param\030m \001(\0132\031.caff" - "e.DummyDataParameter\022.\n\reltwise_param\030n " - "\001(\0132\027.caffe.EltwiseParameter\022\'\n\telu_para" - "m\030\214\001 \001(\0132\023.caffe.ELUParameter\022+\n\013embed_p" - "aram\030\211\001 \001(\0132\025.caffe.EmbedParameter\022&\n\tex" - "p_param\030o \001(\0132\023.caffe.ExpParameter\022/\n\rfl" - "atten_param\030\207\001 \001(\0132\027.caffe.FlattenParame" - "ter\0221\n\017hdf5_data_param\030p \001(\0132\030.caffe.HDF" - "5DataParameter\0225\n\021hdf5_output_param\030q \001(" - "\0132\032.caffe.HDF5OutputParameter\0223\n\020hinge_l" - "oss_param\030r \001(\0132\031.caffe.HingeLossParamet" - "er\0223\n\020image_data_param\030s \001(\0132\031.caffe.Ima" - "geDataParameter\0229\n\023infogain_loss_param\030t" - " \001(\0132\034.caffe.InfogainLossParameter\0229\n\023in" - "ner_product_param\030u \001(\0132\034.caffe.InnerPro" - "ductParameter\022+\n\013input_param\030\217\001 \001(\0132\025.ca" - "ffe.InputParameter\022\'\n\tlog_param\030\206\001 \001(\0132\023" - ".caffe.LogParameter\022&\n\tlrn_param\030v \001(\0132\023" - ".caffe.LRNParameter\0225\n\021memory_data_param" - "\030w \001(\0132\032.caffe.MemoryDataParameter\022&\n\tmv" - "n_param\030x \001(\0132\023.caffe.MVNParameter\0222\n\nno" - "rm_param\030\225\001 \001(\0132\035.caffe.NormalizeBBoxPar" - "ameter\022/\n\rpermute_param\030\224\001 \001(\0132\027.caffe.P" - "ermuteParameter\0223\n\017parameter_param\030\221\001 \001(" - "\0132\031.caffe.ParameterParameter\022.\n\rpooling_" - "param\030y \001(\0132\027.caffe.PoolingParameter\022*\n\013" - "power_param\030z \001(\0132\025.caffe.PowerParameter" - "\022+\n\013prelu_param\030\203\001 \001(\0132\025.caffe.PReLUPara" - "meter\0222\n\017prior_box_param\030\226\001 \001(\0132\030.caffe." - "PriorBoxParameter\022-\n\014python_param\030\202\001 \001(\013" - "2\026.caffe.PythonParameter\0223\n\017recurrent_pa" - "ram\030\222\001 \001(\0132\031.caffe.RecurrentParameter\0223\n" - "\017reduction_param\030\210\001 \001(\0132\031.caffe.Reductio" - "nParameter\022(\n\nrelu_param\030{ \001(\0132\024.caffe.R" - "eLUParameter\022/\n\rreshape_param\030\205\001 \001(\0132\027.c" - "affe.ReshapeParameter\022+\n\013scale_param\030\216\001 " - "\001(\0132\025.caffe.ScaleParameter\022.\n\rsigmoid_pa" - "ram\030| \001(\0132\027.caffe.SigmoidParameter\022.\n\rso" - "ftmax_param\030} \001(\0132\027.caffe.SoftmaxParamet" - "er\022\'\n\tspp_param\030\204\001 \001(\0132\023.caffe.SPPParame" - "ter\022*\n\013slice_param\030~ \001(\0132\025.caffe.SlicePa" - "rameter\022(\n\ntanh_param\030\177 \001(\0132\024.caffe.TanH" - "Parameter\0223\n\017threshold_param\030\200\001 \001(\0132\031.ca" - "ffe.ThresholdParameter\022)\n\ntile_param\030\212\001 " - "\001(\0132\024.caffe.TileParameter\0226\n\021window_data" - "_param\030\201\001 \001(\0132\032.caffe.WindowDataParamete" - "r\"\266\001\n\027TransformationParameter\022\020\n\005scale\030\001" - " \001(\002:\0011\022\025\n\006mirror\030\002 \001(\010:\005false\022\024\n\tcrop_s" - "ize\030\003 \001(\r:\0010\022\021\n\tmean_file\030\004 \001(\t\022\022\n\nmean_" - "value\030\005 \003(\002\022\032\n\013force_color\030\006 \001(\010:\005false\022" - "\031\n\nforce_gray\030\007 \001(\010:\005false\"\302\001\n\rLossParam" - "eter\022\024\n\014ignore_label\030\001 \001(\005\022D\n\rnormalizat" - "ion\030\003 \001(\0162&.caffe.LossParameter.Normaliz" - "ationMode:\005VALID\022\021\n\tnormalize\030\002 \001(\010\"B\n\021N" - "ormalizationMode\022\010\n\004FULL\020\000\022\t\n\005VALID\020\001\022\016\n" - "\nBATCH_SIZE\020\002\022\010\n\004NONE\020\003\"L\n\021AccuracyParam" - "eter\022\020\n\005top_k\030\001 \001(\r:\0011\022\017\n\004axis\030\002 \001(\005:\0011\022" - "\024\n\014ignore_label\030\003 \001(\005\"M\n\017ArgMaxParameter" - "\022\032\n\013out_max_val\030\001 \001(\010:\005false\022\020\n\005top_k\030\002 " - "\001(\r:\0011\022\014\n\004axis\030\003 \001(\005\"9\n\017ConcatParameter\022" - "\017\n\004axis\030\002 \001(\005:\0011\022\025\n\nconcat_dim\030\001 \001(\r:\0011\"" - "j\n\022BatchNormParameter\022\030\n\020use_global_stat" - "s\030\001 \001(\010\022&\n\027moving_average_fraction\030\002 \001(\002" - ":\0050.999\022\022\n\003eps\030\003 \001(\002:\0051e-05\"]\n\rBiasParam" - "eter\022\017\n\004axis\030\001 \001(\005:\0011\022\023\n\010num_axes\030\002 \001(\005:" - "\0011\022&\n\006filler\030\003 \001(\0132\026.caffe.FillerParamet" - "er\"L\n\030ContrastiveLossParameter\022\021\n\006margin" - "\030\001 \001(\002:\0011\022\035\n\016legacy_version\030\002 \001(\010:\005false" - "\"\374\003\n\024ConvolutionParameter\022\022\n\nnum_output\030" - "\001 \001(\r\022\027\n\tbias_term\030\002 \001(\010:\004true\022\013\n\003pad\030\003 " - "\003(\r\022\023\n\013kernel_size\030\004 \003(\r\022\016\n\006stride\030\006 \003(\r" - "\022\020\n\010dilation\030\022 \003(\r\022\020\n\005pad_h\030\t \001(\r:\0010\022\020\n\005" - "pad_w\030\n \001(\r:\0010\022\020\n\010kernel_h\030\013 \001(\r\022\020\n\010kern" - "el_w\030\014 \001(\r\022\020\n\010stride_h\030\r \001(\r\022\020\n\010stride_w" - "\030\016 \001(\r\022\020\n\005group\030\005 \001(\r:\0011\022-\n\rweight_fille" - "r\030\007 \001(\0132\026.caffe.FillerParameter\022+\n\013bias_" - "filler\030\010 \001(\0132\026.caffe.FillerParameter\022;\n\006" - "engine\030\017 \001(\0162\".caffe.ConvolutionParamete" - "r.Engine:\007DEFAULT\022\017\n\004axis\030\020 \001(\005:\0011\022\036\n\017fo" - "rce_nd_im2col\030\021 \001(\010:\005false\"+\n\006Engine\022\013\n\007" - "DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"0\n\rCropP" - "arameter\022\017\n\004axis\030\001 \001(\005:\0012\022\016\n\006offset\030\002 \003(" - "\r\"\244\002\n\rDataParameter\022\016\n\006source\030\001 \001(\t\022\022\n\nb" - "atch_size\030\004 \001(\r\022\024\n\trand_skip\030\007 \001(\r:\0010\0221\n" - "\007backend\030\010 \001(\0162\027.caffe.DataParameter.DB:" - "\007LEVELDB\022\020\n\005scale\030\002 \001(\002:\0011\022\021\n\tmean_file\030" - "\003 \001(\t\022\024\n\tcrop_size\030\005 \001(\r:\0010\022\025\n\006mirror\030\006 " - "\001(\010:\005false\022\"\n\023force_encoded_color\030\t \001(\010:" - "\005false\022\023\n\010prefetch\030\n \001(\r:\0014\"\033\n\002DB\022\013\n\007LEV" - "ELDB\020\000\022\010\n\004LMDB\020\001\"[\n\036NonMaximumSuppressio" - "nParameter\022\032\n\rnms_threshold\030\001 \001(\002:\0030.3\022\r" - "\n\005top_k\030\002 \001(\005\022\016\n\003eta\030\003 \001(\002:\0011\"\252\001\n\023SaveOu" - "tputParameter\022\030\n\020output_directory\030\001 \001(\t\022" - "\032\n\022output_name_prefix\030\002 \001(\t\022\025\n\routput_fo" - "rmat\030\003 \001(\t\022\026\n\016label_map_file\030\004 \001(\t\022\026\n\016na" - "me_size_file\030\005 \001(\t\022\026\n\016num_test_image\030\006 \001" - "(\r\".\n\020DropoutParameter\022\032\n\rdropout_ratio\030" - "\001 \001(\002:\0030.5\"\240\001\n\022DummyDataParameter\022+\n\013dat" - "a_filler\030\001 \003(\0132\026.caffe.FillerParameter\022\037" - "\n\005shape\030\006 \003(\0132\020.caffe.BlobShape\022\013\n\003num\030\002" - " \003(\r\022\020\n\010channels\030\003 \003(\r\022\016\n\006height\030\004 \003(\r\022\r" - "\n\005width\030\005 \003(\r\"\245\001\n\020EltwiseParameter\0229\n\top" - "eration\030\001 \001(\0162!.caffe.EltwiseParameter.E" - "ltwiseOp:\003SUM\022\r\n\005coeff\030\002 \003(\002\022\036\n\020stable_p" - "rod_grad\030\003 \001(\010:\004true\"\'\n\tEltwiseOp\022\010\n\004PRO" - "D\020\000\022\007\n\003SUM\020\001\022\007\n\003MAX\020\002\" \n\014ELUParameter\022\020\n" - "\005alpha\030\001 \001(\002:\0011\"\254\001\n\016EmbedParameter\022\022\n\nnu" - "m_output\030\001 \001(\r\022\021\n\tinput_dim\030\002 \001(\r\022\027\n\tbia" - "s_term\030\003 \001(\010:\004true\022-\n\rweight_filler\030\004 \001(" - "\0132\026.caffe.FillerParameter\022+\n\013bias_filler" - "\030\005 \001(\0132\026.caffe.FillerParameter\"D\n\014ExpPar" - "ameter\022\020\n\004base\030\001 \001(\002:\002-1\022\020\n\005scale\030\002 \001(\002:" - "\0011\022\020\n\005shift\030\003 \001(\002:\0010\"9\n\020FlattenParameter" - "\022\017\n\004axis\030\001 \001(\005:\0011\022\024\n\010end_axis\030\002 \001(\005:\002-1\"" - "O\n\021HDF5DataParameter\022\016\n\006source\030\001 \001(\t\022\022\n\n" - "batch_size\030\002 \001(\r\022\026\n\007shuffle\030\003 \001(\010:\005false" - "\"(\n\023HDF5OutputParameter\022\021\n\tfile_name\030\001 \001" - "(\t\"^\n\022HingeLossParameter\0220\n\004norm\030\001 \001(\0162\036" - ".caffe.HingeLossParameter.Norm:\002L1\"\026\n\004No" - "rm\022\006\n\002L1\020\001\022\006\n\002L2\020\002\"\227\002\n\022ImageDataParamete" - "r\022\016\n\006source\030\001 \001(\t\022\025\n\nbatch_size\030\004 \001(\r:\0011" - "\022\024\n\trand_skip\030\007 \001(\r:\0010\022\026\n\007shuffle\030\010 \001(\010:" - "\005false\022\025\n\nnew_height\030\t \001(\r:\0010\022\024\n\tnew_wid" - "th\030\n \001(\r:\0010\022\026\n\010is_color\030\013 \001(\010:\004true\022\020\n\005s" - "cale\030\002 \001(\002:\0011\022\021\n\tmean_file\030\003 \001(\t\022\024\n\tcrop" - "_size\030\005 \001(\r:\0010\022\025\n\006mirror\030\006 \001(\010:\005false\022\025\n" - "\013root_folder\030\014 \001(\t:\000\"\'\n\025InfogainLossPara" - "meter\022\016\n\006source\030\001 \001(\t\"\313\001\n\025InnerProductPa" - "rameter\022\022\n\nnum_output\030\001 \001(\r\022\027\n\tbias_term" - "\030\002 \001(\010:\004true\022-\n\rweight_filler\030\003 \001(\0132\026.ca" - "ffe.FillerParameter\022+\n\013bias_filler\030\004 \001(\013" - "2\026.caffe.FillerParameter\022\017\n\004axis\030\005 \001(\005:\001" - "1\022\030\n\ttranspose\030\006 \001(\010:\005false\"1\n\016InputPara" - "meter\022\037\n\005shape\030\001 \003(\0132\020.caffe.BlobShape\"D" - "\n\014LogParameter\022\020\n\004base\030\001 \001(\002:\002-1\022\020\n\005scal" - "e\030\002 \001(\002:\0011\022\020\n\005shift\030\003 \001(\002:\0010\"\270\002\n\014LRNPara" - "meter\022\025\n\nlocal_size\030\001 \001(\r:\0015\022\020\n\005alpha\030\002 " - "\001(\002:\0011\022\022\n\004beta\030\003 \001(\002:\0040.75\022D\n\013norm_regio" - "n\030\004 \001(\0162\036.caffe.LRNParameter.NormRegion:" - "\017ACROSS_CHANNELS\022\014\n\001k\030\005 \001(\002:\0011\0223\n\006engine" - "\030\006 \001(\0162\032.caffe.LRNParameter.Engine:\007DEFA" - "ULT\"5\n\nNormRegion\022\023\n\017ACROSS_CHANNELS\020\000\022\022" - "\n\016WITHIN_CHANNEL\020\001\"+\n\006Engine\022\013\n\007DEFAULT\020" - "\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"Z\n\023MemoryDataPar" - "ameter\022\022\n\nbatch_size\030\001 \001(\r\022\020\n\010channels\030\002" - " \001(\r\022\016\n\006height\030\003 \001(\r\022\r\n\005width\030\004 \001(\r\"d\n\014M" - "VNParameter\022 \n\022normalize_variance\030\001 \001(\010:" - "\004true\022\036\n\017across_channels\030\002 \001(\010:\005false\022\022\n" - "\003eps\030\003 \001(\002:\0051e-09\"5\n\022ParameterParameter\022" - "\037\n\005shape\030\001 \001(\0132\020.caffe.BlobShape\"\242\003\n\020Poo" - "lingParameter\0225\n\004pool\030\001 \001(\0162\".caffe.Pool" - "ingParameter.PoolMethod:\003MAX\022\016\n\003pad\030\004 \001(" - "\r:\0010\022\020\n\005pad_h\030\t \001(\r:\0010\022\020\n\005pad_w\030\n \001(\r:\0010" - "\022\023\n\013kernel_size\030\002 \001(\r\022\020\n\010kernel_h\030\005 \001(\r\022" - "\020\n\010kernel_w\030\006 \001(\r\022\021\n\006stride\030\003 \001(\r:\0011\022\020\n\010" - "stride_h\030\007 \001(\r\022\020\n\010stride_w\030\010 \001(\r\0227\n\006engi" - "ne\030\013 \001(\0162\036.caffe.PoolingParameter.Engine" - ":\007DEFAULT\022\035\n\016global_pooling\030\014 \001(\010:\005false" - "\".\n\nPoolMethod\022\007\n\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\nSTOC" - "HASTIC\020\002\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE" - "\020\001\022\t\n\005CUDNN\020\002\"F\n\016PowerParameter\022\020\n\005power" - "\030\001 \001(\002:\0011\022\020\n\005scale\030\002 \001(\002:\0011\022\020\n\005shift\030\003 \001" - "(\002:\0010\"g\n\017PythonParameter\022\016\n\006module\030\001 \001(\t" - "\022\r\n\005layer\030\002 \001(\t\022\023\n\tparam_str\030\003 \001(\t:\000\022 \n\021" - "share_in_parallel\030\004 \001(\010:\005false\"\300\001\n\022Recur" - "rentParameter\022\025\n\nnum_output\030\001 \001(\r:\0010\022-\n\r" - "weight_filler\030\002 \001(\0132\026.caffe.FillerParame" - "ter\022+\n\013bias_filler\030\003 \001(\0132\026.caffe.FillerP" - "arameter\022\031\n\ndebug_info\030\004 \001(\010:\005false\022\034\n\re" - "xpose_hidden\030\005 \001(\010:\005false\"\255\001\n\022ReductionP" - "arameter\022=\n\toperation\030\001 \001(\0162%.caffe.Redu" - "ctionParameter.ReductionOp:\003SUM\022\017\n\004axis\030" - "\002 \001(\005:\0010\022\020\n\005coeff\030\003 \001(\002:\0011\"5\n\013ReductionO" - "p\022\007\n\003SUM\020\001\022\010\n\004ASUM\020\002\022\t\n\005SUMSQ\020\003\022\010\n\004MEAN\020" - "\004\"\215\001\n\rReLUParameter\022\031\n\016negative_slope\030\001 " - "\001(\002:\0010\0224\n\006engine\030\002 \001(\0162\033.caffe.ReLUParam" - "eter.Engine:\007DEFAULT\"+\n\006Engine\022\013\n\007DEFAUL" - "T\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"Z\n\020ReshapePara" - "meter\022\037\n\005shape\030\001 \001(\0132\020.caffe.BlobShape\022\017" - "\n\004axis\030\002 \001(\005:\0010\022\024\n\010num_axes\030\003 \001(\005:\002-1\"\245\001" - "\n\016ScaleParameter\022\017\n\004axis\030\001 \001(\005:\0011\022\023\n\010num" - "_axes\030\002 \001(\005:\0011\022&\n\006filler\030\003 \001(\0132\026.caffe.F" - "illerParameter\022\030\n\tbias_term\030\004 \001(\010:\005false" - "\022+\n\013bias_filler\030\005 \001(\0132\026.caffe.FillerPara" - "meter\"x\n\020SigmoidParameter\0227\n\006engine\030\001 \001(" - "\0162\036.caffe.SigmoidParameter.Engine:\007DEFAU" - "LT\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005" - "CUDNN\020\002\"L\n\016SliceParameter\022\017\n\004axis\030\003 \001(\005:" - "\0011\022\023\n\013slice_point\030\002 \003(\r\022\024\n\tslice_dim\030\001 \001" - "(\r:\0011\"\211\001\n\020SoftmaxParameter\0227\n\006engine\030\001 \001" - "(\0162\036.caffe.SoftmaxParameter.Engine:\007DEFA" - "ULT\022\017\n\004axis\030\002 \001(\005:\0011\"+\n\006Engine\022\013\n\007DEFAUL" - "T\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"r\n\rTanHParamet" - "er\0224\n\006engine\030\001 \001(\0162\033.caffe.TanHParameter" - ".Engine:\007DEFAULT\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022" - "\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"/\n\rTileParameter\022\017" - "\n\004axis\030\001 \001(\005:\0011\022\r\n\005tiles\030\002 \001(\005\"*\n\022Thresh" - "oldParameter\022\024\n\tthreshold\030\001 \001(\002:\0010\"\301\002\n\023W" - "indowDataParameter\022\016\n\006source\030\001 \001(\t\022\020\n\005sc" - "ale\030\002 \001(\002:\0011\022\021\n\tmean_file\030\003 \001(\t\022\022\n\nbatch" - "_size\030\004 \001(\r\022\024\n\tcrop_size\030\005 \001(\r:\0010\022\025\n\006mir" - "ror\030\006 \001(\010:\005false\022\031\n\014fg_threshold\030\007 \001(\002:\003" - "0.5\022\031\n\014bg_threshold\030\010 \001(\002:\0030.5\022\031\n\013fg_fra" - "ction\030\t \001(\002:\0040.25\022\026\n\013context_pad\030\n \001(\r:\001" - "0\022\027\n\tcrop_mode\030\013 \001(\t:\004warp\022\033\n\014cache_imag" - "es\030\014 \001(\010:\005false\022\025\n\013root_folder\030\r \001(\t:\000\"\353" - "\001\n\014SPPParameter\022\026\n\016pyramid_height\030\001 \001(\r\022" - "1\n\004pool\030\002 \001(\0162\036.caffe.SPPParameter.PoolM" - "ethod:\003MAX\0223\n\006engine\030\006 \001(\0162\032.caffe.SPPPa" - "rameter.Engine:\007DEFAULT\".\n\nPoolMethod\022\007\n" - "\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\nSTOCHASTIC\020\002\"+\n\006Engin" - "e\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"\340\023\n" - "\020V1LayerParameter\022\016\n\006bottom\030\002 \003(\t\022\013\n\003top" - "\030\003 \003(\t\022\014\n\004name\030\004 \001(\t\022$\n\007include\030 \003(\0132\023." - "caffe.NetStateRule\022$\n\007exclude\030! \003(\0132\023.ca" - "ffe.NetStateRule\022/\n\004type\030\005 \001(\0162!.caffe.V" - "1LayerParameter.LayerType\022\037\n\005blobs\030\006 \003(\013" - "2\020.caffe.BlobProto\022\016\n\005param\030\351\007 \003(\t\022>\n\017bl" - "ob_share_mode\030\352\007 \003(\0162$.caffe.V1LayerPara" - "meter.DimCheckMode\022\020\n\010blobs_lr\030\007 \003(\002\022\024\n\014" - "weight_decay\030\010 \003(\002\022\023\n\013loss_weight\030# \003(\002\022" - "0\n\016accuracy_param\030\033 \001(\0132\030.caffe.Accuracy" - "Parameter\022,\n\014argmax_param\030\027 \001(\0132\026.caffe." - "ArgMaxParameter\022,\n\014concat_param\030\t \001(\0132\026." - "caffe.ConcatParameter\022\?\n\026contrastive_los" - "s_param\030( \001(\0132\037.caffe.ContrastiveLossPar" - "ameter\0226\n\021convolution_param\030\n \001(\0132\033.caff" - "e.ConvolutionParameter\022(\n\ndata_param\030\013 \001" - "(\0132\024.caffe.DataParameter\022.\n\rdropout_para" - "m\030\014 \001(\0132\027.caffe.DropoutParameter\0223\n\020dumm" - "y_data_param\030\032 \001(\0132\031.caffe.DummyDataPara" - "meter\022.\n\reltwise_param\030\030 \001(\0132\027.caffe.Elt" - "wiseParameter\022&\n\texp_param\030) \001(\0132\023.caffe" - ".ExpParameter\0221\n\017hdf5_data_param\030\r \001(\0132\030" - ".caffe.HDF5DataParameter\0225\n\021hdf5_output_" - "param\030\016 \001(\0132\032.caffe.HDF5OutputParameter\022" - "3\n\020hinge_loss_param\030\035 \001(\0132\031.caffe.HingeL" - "ossParameter\0223\n\020image_data_param\030\017 \001(\0132\031" - ".caffe.ImageDataParameter\0229\n\023infogain_lo" - "ss_param\030\020 \001(\0132\034.caffe.InfogainLossParam" - "eter\0229\n\023inner_product_param\030\021 \001(\0132\034.caff" - "e.InnerProductParameter\022&\n\tlrn_param\030\022 \001" - "(\0132\023.caffe.LRNParameter\0225\n\021memory_data_p" - "aram\030\026 \001(\0132\032.caffe.MemoryDataParameter\022&" - "\n\tmvn_param\030\" \001(\0132\023.caffe.MVNParameter\022." - "\n\rpooling_param\030\023 \001(\0132\027.caffe.PoolingPar" - "ameter\022*\n\013power_param\030\025 \001(\0132\025.caffe.Powe" - "rParameter\022(\n\nrelu_param\030\036 \001(\0132\024.caffe.R" - "eLUParameter\022.\n\rsigmoid_param\030& \001(\0132\027.ca" - "ffe.SigmoidParameter\022.\n\rsoftmax_param\030\' " - "\001(\0132\027.caffe.SoftmaxParameter\022*\n\013slice_pa" - "ram\030\037 \001(\0132\025.caffe.SliceParameter\022(\n\ntanh" - "_param\030% \001(\0132\024.caffe.TanHParameter\0222\n\017th" - "reshold_param\030\031 \001(\0132\031.caffe.ThresholdPar" - "ameter\0225\n\021window_data_param\030\024 \001(\0132\032.caff" - "e.WindowDataParameter\0227\n\017transform_param" - "\030$ \001(\0132\036.caffe.TransformationParameter\022(" - "\n\nloss_param\030* \001(\0132\024.caffe.LossParameter" - "\022&\n\005layer\030\001 \001(\0132\027.caffe.V0LayerParameter" - "\"\330\004\n\tLayerType\022\010\n\004NONE\020\000\022\n\n\006ABSVAL\020#\022\014\n\010" - "ACCURACY\020\001\022\n\n\006ARGMAX\020\036\022\010\n\004BNLL\020\002\022\n\n\006CONC" - "AT\020\003\022\024\n\020CONTRASTIVE_LOSS\020%\022\017\n\013CONVOLUTIO" - "N\020\004\022\010\n\004DATA\020\005\022\021\n\rDECONVOLUTION\020\'\022\013\n\007DROP" - "OUT\020\006\022\016\n\nDUMMY_DATA\020 \022\022\n\016EUCLIDEAN_LOSS\020" - "\007\022\013\n\007ELTWISE\020\031\022\007\n\003EXP\020&\022\013\n\007FLATTEN\020\010\022\r\n\t" - "HDF5_DATA\020\t\022\017\n\013HDF5_OUTPUT\020\n\022\016\n\nHINGE_LO" - "SS\020\034\022\n\n\006IM2COL\020\013\022\016\n\nIMAGE_DATA\020\014\022\021\n\rINFO" - "GAIN_LOSS\020\r\022\021\n\rINNER_PRODUCT\020\016\022\007\n\003LRN\020\017\022" - "\017\n\013MEMORY_DATA\020\035\022\035\n\031MULTINOMIAL_LOGISTIC" - "_LOSS\020\020\022\007\n\003MVN\020\"\022\013\n\007POOLING\020\021\022\t\n\005POWER\020\032" - "\022\010\n\004RELU\020\022\022\013\n\007SIGMOID\020\023\022\036\n\032SIGMOID_CROSS" - "_ENTROPY_LOSS\020\033\022\013\n\007SILENCE\020$\022\013\n\007SOFTMAX\020" - "\024\022\020\n\014SOFTMAX_LOSS\020\025\022\t\n\005SPLIT\020\026\022\t\n\005SLICE\020" - "!\022\010\n\004TANH\020\027\022\017\n\013WINDOW_DATA\020\030\022\r\n\tTHRESHOL" - "D\020\037\"*\n\014DimCheckMode\022\n\n\006STRICT\020\000\022\016\n\nPERMI" - "SSIVE\020\001\"\375\007\n\020V0LayerParameter\022\014\n\004name\030\001 \001" - "(\t\022\014\n\004type\030\002 \001(\t\022\022\n\nnum_output\030\003 \001(\r\022\026\n\010" - "biasterm\030\004 \001(\010:\004true\022-\n\rweight_filler\030\005 " + "\001(\002:\0030.5\022\"\n\023additional_y_offset\030\016 \001(\010:\005f" + "alse\"\'\n\010CodeType\022\n\n\006CORNER\020\001\022\017\n\013CENTER_S" + "IZE\020\002\"\375\002\n\030DetectionOutputParameter\022\023\n\013nu" + "m_classes\030\001 \001(\r\022\034\n\016share_location\030\002 \001(\010:" + "\004true\022\036\n\023background_label_id\030\003 \001(\005:\0010\0228\n" + "\tnms_param\030\004 \001(\0132%.caffe.NonMaximumSuppr" + "essionParameter\0225\n\021save_output_param\030\005 \001" + "(\0132\032.caffe.SaveOutputParameter\022<\n\tcode_t" + "ype\030\006 \001(\0162!.caffe.PriorBoxParameter.Code" + "Type:\006CORNER\022)\n\032variance_encoded_in_targ" + "et\030\010 \001(\010:\005false\022\026\n\nkeep_top_k\030\007 \001(\005:\002-1\022" + "\034\n\024confidence_threshold\030\t \001(\002\"\201\001\n\005Datum\022" + "\020\n\010channels\030\001 \001(\005\022\016\n\006height\030\002 \001(\005\022\r\n\005wid" + "th\030\003 \001(\005\022\014\n\004data\030\004 \001(\014\022\r\n\005label\030\005 \001(\005\022\022\n" + "\nfloat_data\030\006 \003(\002\022\026\n\007encoded\030\007 \001(\010:\005fals" + "e\"\212\002\n\017FillerParameter\022\026\n\004type\030\001 \001(\t:\010con" + "stant\022\020\n\005value\030\002 \001(\002:\0010\022\016\n\003min\030\003 \001(\002:\0010\022" + "\016\n\003max\030\004 \001(\002:\0011\022\017\n\004mean\030\005 \001(\002:\0010\022\016\n\003std\030" + "\006 \001(\002:\0011\022\022\n\006sparse\030\007 \001(\005:\002-1\022B\n\rvariance" + "_norm\030\010 \001(\0162#.caffe.FillerParameter.Vari" + "anceNorm:\006FAN_IN\"4\n\014VarianceNorm\022\n\n\006FAN_" + "IN\020\000\022\013\n\007FAN_OUT\020\001\022\013\n\007AVERAGE\020\002\"\216\002\n\014NetPa" + "rameter\022\014\n\004name\030\001 \001(\t\022\r\n\005input\030\003 \003(\t\022%\n\013" + "input_shape\030\010 \003(\0132\020.caffe.BlobShape\022\021\n\ti" + "nput_dim\030\004 \003(\005\022\035\n\016force_backward\030\005 \001(\010:\005" + "false\022\036\n\005state\030\006 \001(\0132\017.caffe.NetState\022\031\n" + "\ndebug_info\030\007 \001(\010:\005false\022$\n\005layer\030d \003(\0132" + "\025.caffe.LayerParameter\022\'\n\006layers\030\002 \003(\0132\027" + ".caffe.V1LayerParameter\"\242\n\n\017SolverParame" + "ter\022\013\n\003net\030\030 \001(\t\022&\n\tnet_param\030\031 \001(\0132\023.ca" + "ffe.NetParameter\022\021\n\ttrain_net\030\001 \001(\t\022\020\n\010t" + "est_net\030\002 \003(\t\022,\n\017train_net_param\030\025 \001(\0132\023" + ".caffe.NetParameter\022+\n\016test_net_param\030\026 " + "\003(\0132\023.caffe.NetParameter\022$\n\013train_state\030" + "\032 \001(\0132\017.caffe.NetState\022#\n\ntest_state\030\033 \003" + "(\0132\017.caffe.NetState\022\021\n\ttest_iter\030\003 \003(\005\022\030" + "\n\rtest_interval\030\004 \001(\005:\0010\022 \n\021test_compute" + "_loss\030\023 \001(\010:\005false\022!\n\023test_initializatio" + "n\030 \001(\010:\004true\022\017\n\007base_lr\030\005 \001(\002\022\017\n\007displa" + "y\030\006 \001(\005\022\027\n\014average_loss\030! \001(\005:\0011\022\020\n\010max_" + "iter\030\007 \001(\005\022\024\n\titer_size\030$ \001(\005:\0011\022\021\n\tlr_p" + "olicy\030\010 \001(\t\022\r\n\005gamma\030\t \001(\002\022\r\n\005power\030\n \001(" + "\002\022\020\n\010momentum\030\013 \001(\002\022\024\n\014weight_decay\030\014 \001(" + "\002\022\037\n\023regularization_type\030\035 \001(\t:\002L2\022\020\n\010st" + "epsize\030\r \001(\005\022\021\n\tstepvalue\030\" \003(\005\022\032\n\016clip_" + "gradients\030# \001(\002:\002-1\022\023\n\010snapshot\030\016 \001(\005:\0010" + "\022\027\n\017snapshot_prefix\030\017 \001(\t\022\034\n\rsnapshot_di" + "ff\030\020 \001(\010:\005false\022K\n\017snapshot_format\030% \001(\016" + "2%.caffe.SolverParameter.SnapshotFormat:" + "\013BINARYPROTO\022;\n\013solver_mode\030\021 \001(\0162!.caff" + "e.SolverParameter.SolverMode:\003GPU\022\024\n\tdev" + "ice_id\030\022 \001(\005:\0010\022\027\n\013random_seed\030\024 \001(\003:\002-1" + "\022\021\n\004type\030( \001(\t:\003SGD\022\024\n\005delta\030\037 \001(\002:\0051e-0" + "8\022\030\n\tmomentum2\030\' \001(\002:\0050.999\022\027\n\trms_decay" + "\030& \001(\002:\0040.99\022\031\n\ndebug_info\030\027 \001(\010:\005false\022" + "\"\n\024snapshot_after_train\030\034 \001(\010:\004true\022;\n\013s" + "olver_type\030\036 \001(\0162!.caffe.SolverParameter" + ".SolverType:\003SGD\"+\n\016SnapshotFormat\022\010\n\004HD" + "F5\020\000\022\017\n\013BINARYPROTO\020\001\"\036\n\nSolverMode\022\007\n\003C" + "PU\020\000\022\007\n\003GPU\020\001\"U\n\nSolverType\022\007\n\003SGD\020\000\022\014\n\010" + "NESTEROV\020\001\022\013\n\007ADAGRAD\020\002\022\013\n\007RMSPROP\020\003\022\014\n\010" + "ADADELTA\020\004\022\010\n\004ADAM\020\005\"l\n\013SolverState\022\014\n\004i" + "ter\030\001 \001(\005\022\023\n\013learned_net\030\002 \001(\t\022!\n\007histor" + "y\030\003 \003(\0132\020.caffe.BlobProto\022\027\n\014current_ste" + "p\030\004 \001(\005:\0010\"N\n\010NetState\022!\n\005phase\030\001 \001(\0162\014." + "caffe.Phase:\004TEST\022\020\n\005level\030\002 \001(\005:\0010\022\r\n\005s" + "tage\030\003 \003(\t\"s\n\014NetStateRule\022\033\n\005phase\030\001 \001(" + "\0162\014.caffe.Phase\022\021\n\tmin_level\030\002 \001(\005\022\021\n\tma" + "x_level\030\003 \001(\005\022\r\n\005stage\030\004 \003(\t\022\021\n\tnot_stag" + "e\030\005 \003(\t\"\243\001\n\tParamSpec\022\014\n\004name\030\001 \001(\t\0221\n\ns" + "hare_mode\030\002 \001(\0162\035.caffe.ParamSpec.DimChe" + "ckMode\022\022\n\007lr_mult\030\003 \001(\002:\0011\022\025\n\ndecay_mult" + "\030\004 \001(\002:\0011\"*\n\014DimCheckMode\022\n\n\006STRICT\020\000\022\016\n" + "\nPERMISSIVE\020\001\"\335\025\n\016LayerParameter\022\014\n\004name" + "\030\001 \001(\t\022\014\n\004type\030\002 \001(\t\022\016\n\006bottom\030\003 \003(\t\022\013\n\003" + "top\030\004 \003(\t\022\033\n\005phase\030\n \001(\0162\014.caffe.Phase\022\023" + "\n\013loss_weight\030\005 \003(\002\022\037\n\005param\030\006 \003(\0132\020.caf" + "fe.ParamSpec\022\037\n\005blobs\030\007 \003(\0132\020.caffe.Blob" + "Proto\022\026\n\016propagate_down\030\013 \003(\010\022$\n\007include" + "\030\010 \003(\0132\023.caffe.NetStateRule\022$\n\007exclude\030\t" + " \003(\0132\023.caffe.NetStateRule\0227\n\017transform_p" + "aram\030d \001(\0132\036.caffe.TransformationParamet" + "er\022(\n\nloss_param\030e \001(\0132\024.caffe.LossParam" + "eter\0220\n\016accuracy_param\030f \001(\0132\030.caffe.Acc" + "uracyParameter\022,\n\014argmax_param\030g \001(\0132\026.c" + "affe.ArgMaxParameter\0224\n\020batch_norm_param" + "\030\213\001 \001(\0132\031.caffe.BatchNormParameter\022)\n\nbi" + "as_param\030\215\001 \001(\0132\024.caffe.BiasParameter\022,\n" + "\014concat_param\030h \001(\0132\026.caffe.ConcatParame" + "ter\022\?\n\026contrastive_loss_param\030i \001(\0132\037.ca" + "ffe.ContrastiveLossParameter\0226\n\021convolut" + "ion_param\030j \001(\0132\033.caffe.ConvolutionParam" + "eter\022)\n\ncrop_param\030\220\001 \001(\0132\024.caffe.CropPa" + "rameter\022(\n\ndata_param\030k \001(\0132\024.caffe.Data" + "Parameter\022@\n\026detection_output_param\030\223\001 \001" + "(\0132\037.caffe.DetectionOutputParameter\022.\n\rd" + "ropout_param\030l \001(\0132\027.caffe.DropoutParame" + "ter\0223\n\020dummy_data_param\030m \001(\0132\031.caffe.Du" + "mmyDataParameter\022.\n\reltwise_param\030n \001(\0132" + "\027.caffe.EltwiseParameter\022\'\n\telu_param\030\214\001" + " \001(\0132\023.caffe.ELUParameter\022+\n\013embed_param" + "\030\211\001 \001(\0132\025.caffe.EmbedParameter\022&\n\texp_pa" + "ram\030o \001(\0132\023.caffe.ExpParameter\022/\n\rflatte" + "n_param\030\207\001 \001(\0132\027.caffe.FlattenParameter\022" + "1\n\017hdf5_data_param\030p \001(\0132\030.caffe.HDF5Dat" + "aParameter\0225\n\021hdf5_output_param\030q \001(\0132\032." + "caffe.HDF5OutputParameter\0223\n\020hinge_loss_" + "param\030r \001(\0132\031.caffe.HingeLossParameter\0223" + "\n\020image_data_param\030s \001(\0132\031.caffe.ImageDa" + "taParameter\0229\n\023infogain_loss_param\030t \001(\013" + "2\034.caffe.InfogainLossParameter\0229\n\023inner_" + "product_param\030u \001(\0132\034.caffe.InnerProduct" + "Parameter\022+\n\013input_param\030\217\001 \001(\0132\025.caffe." + "InputParameter\022\'\n\tlog_param\030\206\001 \001(\0132\023.caf" + "fe.LogParameter\022&\n\tlrn_param\030v \001(\0132\023.caf" + "fe.LRNParameter\0225\n\021memory_data_param\030w \001" + "(\0132\032.caffe.MemoryDataParameter\022&\n\tmvn_pa" + "ram\030x \001(\0132\023.caffe.MVNParameter\0222\n\nnorm_p" + "aram\030\225\001 \001(\0132\035.caffe.NormalizeBBoxParamet" + "er\022/\n\rpermute_param\030\224\001 \001(\0132\027.caffe.Permu" + "teParameter\0223\n\017parameter_param\030\221\001 \001(\0132\031." + "caffe.ParameterParameter\022.\n\rpooling_para" + "m\030y \001(\0132\027.caffe.PoolingParameter\022*\n\013powe" + "r_param\030z \001(\0132\025.caffe.PowerParameter\022+\n\013" + "prelu_param\030\203\001 \001(\0132\025.caffe.PReLUParamete" + "r\0222\n\017prior_box_param\030\226\001 \001(\0132\030.caffe.Prio" + "rBoxParameter\022-\n\014python_param\030\202\001 \001(\0132\026.c" + "affe.PythonParameter\0223\n\017recurrent_param\030" + "\222\001 \001(\0132\031.caffe.RecurrentParameter\0223\n\017red" + "uction_param\030\210\001 \001(\0132\031.caffe.ReductionPar" + "ameter\022(\n\nrelu_param\030{ \001(\0132\024.caffe.ReLUP" + "arameter\022/\n\rreshape_param\030\205\001 \001(\0132\027.caffe" + ".ReshapeParameter\022+\n\013scale_param\030\216\001 \001(\0132" + "\025.caffe.ScaleParameter\022.\n\rsigmoid_param\030" + "| \001(\0132\027.caffe.SigmoidParameter\022.\n\rsoftma" + "x_param\030} \001(\0132\027.caffe.SoftmaxParameter\022\'" + "\n\tspp_param\030\204\001 \001(\0132\023.caffe.SPPParameter\022" + "*\n\013slice_param\030~ \001(\0132\025.caffe.SliceParame" + "ter\022(\n\ntanh_param\030\177 \001(\0132\024.caffe.TanHPara" + "meter\0223\n\017threshold_param\030\200\001 \001(\0132\031.caffe." + "ThresholdParameter\022)\n\ntile_param\030\212\001 \001(\0132" + "\024.caffe.TileParameter\0226\n\021window_data_par" + "am\030\201\001 \001(\0132\032.caffe.WindowDataParameter\"\266\001" + "\n\027TransformationParameter\022\020\n\005scale\030\001 \001(\002" + ":\0011\022\025\n\006mirror\030\002 \001(\010:\005false\022\024\n\tcrop_size\030" + "\003 \001(\r:\0010\022\021\n\tmean_file\030\004 \001(\t\022\022\n\nmean_valu" + "e\030\005 \003(\002\022\032\n\013force_color\030\006 \001(\010:\005false\022\031\n\nf" + "orce_gray\030\007 \001(\010:\005false\"\302\001\n\rLossParameter" + "\022\024\n\014ignore_label\030\001 \001(\005\022D\n\rnormalization\030" + "\003 \001(\0162&.caffe.LossParameter.Normalizatio" + "nMode:\005VALID\022\021\n\tnormalize\030\002 \001(\010\"B\n\021Norma" + "lizationMode\022\010\n\004FULL\020\000\022\t\n\005VALID\020\001\022\016\n\nBAT" + "CH_SIZE\020\002\022\010\n\004NONE\020\003\"L\n\021AccuracyParameter" + "\022\020\n\005top_k\030\001 \001(\r:\0011\022\017\n\004axis\030\002 \001(\005:\0011\022\024\n\014i" + "gnore_label\030\003 \001(\005\"M\n\017ArgMaxParameter\022\032\n\013" + "out_max_val\030\001 \001(\010:\005false\022\020\n\005top_k\030\002 \001(\r:" + "\0011\022\014\n\004axis\030\003 \001(\005\"9\n\017ConcatParameter\022\017\n\004a" + "xis\030\002 \001(\005:\0011\022\025\n\nconcat_dim\030\001 \001(\r:\0011\"j\n\022B" + "atchNormParameter\022\030\n\020use_global_stats\030\001 " + "\001(\010\022&\n\027moving_average_fraction\030\002 \001(\002:\0050." + "999\022\022\n\003eps\030\003 \001(\002:\0051e-05\"]\n\rBiasParameter" + "\022\017\n\004axis\030\001 \001(\005:\0011\022\023\n\010num_axes\030\002 \001(\005:\0011\022&" + "\n\006filler\030\003 \001(\0132\026.caffe.FillerParameter\"L" + "\n\030ContrastiveLossParameter\022\021\n\006margin\030\001 \001" + "(\002:\0011\022\035\n\016legacy_version\030\002 \001(\010:\005false\"\374\003\n" + "\024ConvolutionParameter\022\022\n\nnum_output\030\001 \001(" + "\r\022\027\n\tbias_term\030\002 \001(\010:\004true\022\013\n\003pad\030\003 \003(\r\022" + "\023\n\013kernel_size\030\004 \003(\r\022\016\n\006stride\030\006 \003(\r\022\020\n\010" + "dilation\030\022 \003(\r\022\020\n\005pad_h\030\t \001(\r:\0010\022\020\n\005pad_" + "w\030\n \001(\r:\0010\022\020\n\010kernel_h\030\013 \001(\r\022\020\n\010kernel_w" + "\030\014 \001(\r\022\020\n\010stride_h\030\r \001(\r\022\020\n\010stride_w\030\016 \001" + "(\r\022\020\n\005group\030\005 \001(\r:\0011\022-\n\rweight_filler\030\007 " "\001(\0132\026.caffe.FillerParameter\022+\n\013bias_fill" - "er\030\006 \001(\0132\026.caffe.FillerParameter\022\016\n\003pad\030" - "\007 \001(\r:\0010\022\022\n\nkernelsize\030\010 \001(\r\022\020\n\005group\030\t " - "\001(\r:\0011\022\021\n\006stride\030\n \001(\r:\0011\0225\n\004pool\030\013 \001(\0162" - "\".caffe.V0LayerParameter.PoolMethod:\003MAX" - "\022\032\n\rdropout_ratio\030\014 \001(\002:\0030.5\022\025\n\nlocal_si" - "ze\030\r \001(\r:\0015\022\020\n\005alpha\030\016 \001(\002:\0011\022\022\n\004beta\030\017 " - "\001(\002:\0040.75\022\014\n\001k\030\026 \001(\002:\0011\022\016\n\006source\030\020 \001(\t\022" - "\020\n\005scale\030\021 \001(\002:\0011\022\020\n\010meanfile\030\022 \001(\t\022\021\n\tb" - "atchsize\030\023 \001(\r\022\023\n\010cropsize\030\024 \001(\r:\0010\022\025\n\006m" - "irror\030\025 \001(\010:\005false\022\037\n\005blobs\0302 \003(\0132\020.caff" - "e.BlobProto\022\020\n\010blobs_lr\0303 \003(\002\022\024\n\014weight_" - "decay\0304 \003(\002\022\024\n\trand_skip\0305 \001(\r:\0010\022\035\n\020det" - "_fg_threshold\0306 \001(\002:\0030.5\022\035\n\020det_bg_thres" - "hold\0307 \001(\002:\0030.5\022\035\n\017det_fg_fraction\0308 \001(\002" - ":\0040.25\022\032\n\017det_context_pad\030: \001(\r:\0010\022\033\n\rde" - "t_crop_mode\030; \001(\t:\004warp\022\022\n\007new_num\030< \001(\005" - ":\0010\022\027\n\014new_channels\030= \001(\005:\0010\022\025\n\nnew_heig" - "ht\030> \001(\005:\0010\022\024\n\tnew_width\030\? \001(\005:\0010\022\035\n\016shu" - "ffle_images\030@ \001(\010:\005false\022\025\n\nconcat_dim\030A" - " \001(\r:\0011\0226\n\021hdf5_output_param\030\351\007 \001(\0132\032.ca" - "ffe.HDF5OutputParameter\".\n\nPoolMethod\022\007\n" - "\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\nSTOCHASTIC\020\002\"W\n\016PReLU" - "Parameter\022&\n\006filler\030\001 \001(\0132\026.caffe.Filler" - "Parameter\022\035\n\016channel_shared\030\002 \001(\010:\005false" - "\"\207\001\n\016NormalizedBBox\022\014\n\004xmin\030\001 \001(\002\022\014\n\004ymi" - "n\030\002 \001(\002\022\014\n\004xmax\030\003 \001(\002\022\014\n\004ymax\030\004 \001(\002\022\r\n\005l" - "abel\030\005 \001(\005\022\021\n\tdifficult\030\006 \001(\010\022\r\n\005score\030\007" - " \001(\002\022\014\n\004size\030\010 \001(\002*=\n\004Type\022\n\n\006DOUBLE\020\000\022\t" - "\n\005FLOAT\020\001\022\013\n\007FLOAT16\020\002\022\007\n\003INT\020\003\022\010\n\004UINT\020" - "\004*\034\n\005Phase\022\t\n\005TRAIN\020\000\022\010\n\004TEST\020\001", 16991); + "er\030\010 \001(\0132\026.caffe.FillerParameter\022;\n\006engi" + "ne\030\017 \001(\0162\".caffe.ConvolutionParameter.En" + "gine:\007DEFAULT\022\017\n\004axis\030\020 \001(\005:\0011\022\036\n\017force_" + "nd_im2col\030\021 \001(\010:\005false\"+\n\006Engine\022\013\n\007DEFA" + "ULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"0\n\rCropParam" + "eter\022\017\n\004axis\030\001 \001(\005:\0012\022\016\n\006offset\030\002 \003(\r\"\244\002" + "\n\rDataParameter\022\016\n\006source\030\001 \001(\t\022\022\n\nbatch" + "_size\030\004 \001(\r\022\024\n\trand_skip\030\007 \001(\r:\0010\0221\n\007bac" + "kend\030\010 \001(\0162\027.caffe.DataParameter.DB:\007LEV" + "ELDB\022\020\n\005scale\030\002 \001(\002:\0011\022\021\n\tmean_file\030\003 \001(" + "\t\022\024\n\tcrop_size\030\005 \001(\r:\0010\022\025\n\006mirror\030\006 \001(\010:" + "\005false\022\"\n\023force_encoded_color\030\t \001(\010:\005fal" + "se\022\023\n\010prefetch\030\n \001(\r:\0014\"\033\n\002DB\022\013\n\007LEVELDB" + "\020\000\022\010\n\004LMDB\020\001\"[\n\036NonMaximumSuppressionPar" + "ameter\022\032\n\rnms_threshold\030\001 \001(\002:\0030.3\022\r\n\005to" + "p_k\030\002 \001(\005\022\016\n\003eta\030\003 \001(\002:\0011\"\252\001\n\023SaveOutput" + "Parameter\022\030\n\020output_directory\030\001 \001(\t\022\032\n\022o" + "utput_name_prefix\030\002 \001(\t\022\025\n\routput_format" + "\030\003 \001(\t\022\026\n\016label_map_file\030\004 \001(\t\022\026\n\016name_s" + "ize_file\030\005 \001(\t\022\026\n\016num_test_image\030\006 \001(\r\"." + "\n\020DropoutParameter\022\032\n\rdropout_ratio\030\001 \001(" + "\002:\0030.5\"\240\001\n\022DummyDataParameter\022+\n\013data_fi" + "ller\030\001 \003(\0132\026.caffe.FillerParameter\022\037\n\005sh" + "ape\030\006 \003(\0132\020.caffe.BlobShape\022\013\n\003num\030\002 \003(\r" + "\022\020\n\010channels\030\003 \003(\r\022\016\n\006height\030\004 \003(\r\022\r\n\005wi" + "dth\030\005 \003(\r\"\245\001\n\020EltwiseParameter\0229\n\toperat" + "ion\030\001 \001(\0162!.caffe.EltwiseParameter.Eltwi" + "seOp:\003SUM\022\r\n\005coeff\030\002 \003(\002\022\036\n\020stable_prod_" + "grad\030\003 \001(\010:\004true\"\'\n\tEltwiseOp\022\010\n\004PROD\020\000\022" + "\007\n\003SUM\020\001\022\007\n\003MAX\020\002\" \n\014ELUParameter\022\020\n\005alp" + "ha\030\001 \001(\002:\0011\"\254\001\n\016EmbedParameter\022\022\n\nnum_ou" + "tput\030\001 \001(\r\022\021\n\tinput_dim\030\002 \001(\r\022\027\n\tbias_te" + "rm\030\003 \001(\010:\004true\022-\n\rweight_filler\030\004 \001(\0132\026." + "caffe.FillerParameter\022+\n\013bias_filler\030\005 \001" + "(\0132\026.caffe.FillerParameter\"D\n\014ExpParamet" + "er\022\020\n\004base\030\001 \001(\002:\002-1\022\020\n\005scale\030\002 \001(\002:\0011\022\020" + "\n\005shift\030\003 \001(\002:\0010\"9\n\020FlattenParameter\022\017\n\004" + "axis\030\001 \001(\005:\0011\022\024\n\010end_axis\030\002 \001(\005:\002-1\"O\n\021H" + "DF5DataParameter\022\016\n\006source\030\001 \001(\t\022\022\n\nbatc" + "h_size\030\002 \001(\r\022\026\n\007shuffle\030\003 \001(\010:\005false\"(\n\023" + "HDF5OutputParameter\022\021\n\tfile_name\030\001 \001(\t\"^" + "\n\022HingeLossParameter\0220\n\004norm\030\001 \001(\0162\036.caf" + "fe.HingeLossParameter.Norm:\002L1\"\026\n\004Norm\022\006" + "\n\002L1\020\001\022\006\n\002L2\020\002\"\227\002\n\022ImageDataParameter\022\016\n" + "\006source\030\001 \001(\t\022\025\n\nbatch_size\030\004 \001(\r:\0011\022\024\n\t" + "rand_skip\030\007 \001(\r:\0010\022\026\n\007shuffle\030\010 \001(\010:\005fal" + "se\022\025\n\nnew_height\030\t \001(\r:\0010\022\024\n\tnew_width\030\n" + " \001(\r:\0010\022\026\n\010is_color\030\013 \001(\010:\004true\022\020\n\005scale" + "\030\002 \001(\002:\0011\022\021\n\tmean_file\030\003 \001(\t\022\024\n\tcrop_siz" + "e\030\005 \001(\r:\0010\022\025\n\006mirror\030\006 \001(\010:\005false\022\025\n\013roo" + "t_folder\030\014 \001(\t:\000\"\'\n\025InfogainLossParamete" + "r\022\016\n\006source\030\001 \001(\t\"\313\001\n\025InnerProductParame" + "ter\022\022\n\nnum_output\030\001 \001(\r\022\027\n\tbias_term\030\002 \001" + "(\010:\004true\022-\n\rweight_filler\030\003 \001(\0132\026.caffe." + "FillerParameter\022+\n\013bias_filler\030\004 \001(\0132\026.c" + "affe.FillerParameter\022\017\n\004axis\030\005 \001(\005:\0011\022\030\n" + "\ttranspose\030\006 \001(\010:\005false\"1\n\016InputParamete" + "r\022\037\n\005shape\030\001 \003(\0132\020.caffe.BlobShape\"D\n\014Lo" + "gParameter\022\020\n\004base\030\001 \001(\002:\002-1\022\020\n\005scale\030\002 " + "\001(\002:\0011\022\020\n\005shift\030\003 \001(\002:\0010\"\270\002\n\014LRNParamete" + "r\022\025\n\nlocal_size\030\001 \001(\r:\0015\022\020\n\005alpha\030\002 \001(\002:" + "\0011\022\022\n\004beta\030\003 \001(\002:\0040.75\022D\n\013norm_region\030\004 " + "\001(\0162\036.caffe.LRNParameter.NormRegion:\017ACR" + "OSS_CHANNELS\022\014\n\001k\030\005 \001(\002:\0011\0223\n\006engine\030\006 \001" + "(\0162\032.caffe.LRNParameter.Engine:\007DEFAULT\"" + "5\n\nNormRegion\022\023\n\017ACROSS_CHANNELS\020\000\022\022\n\016WI" + "THIN_CHANNEL\020\001\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n" + "\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"Z\n\023MemoryDataParamet" + "er\022\022\n\nbatch_size\030\001 \001(\r\022\020\n\010channels\030\002 \001(\r" + "\022\016\n\006height\030\003 \001(\r\022\r\n\005width\030\004 \001(\r\"d\n\014MVNPa" + "rameter\022 \n\022normalize_variance\030\001 \001(\010:\004tru" + "e\022\036\n\017across_channels\030\002 \001(\010:\005false\022\022\n\003eps" + "\030\003 \001(\002:\0051e-09\"5\n\022ParameterParameter\022\037\n\005s" + "hape\030\001 \001(\0132\020.caffe.BlobShape\"\242\003\n\020Pooling" + "Parameter\0225\n\004pool\030\001 \001(\0162\".caffe.PoolingP" + "arameter.PoolMethod:\003MAX\022\016\n\003pad\030\004 \001(\r:\0010" + "\022\020\n\005pad_h\030\t \001(\r:\0010\022\020\n\005pad_w\030\n \001(\r:\0010\022\023\n\013" + "kernel_size\030\002 \001(\r\022\020\n\010kernel_h\030\005 \001(\r\022\020\n\010k" + "ernel_w\030\006 \001(\r\022\021\n\006stride\030\003 \001(\r:\0011\022\020\n\010stri" + "de_h\030\007 \001(\r\022\020\n\010stride_w\030\010 \001(\r\0227\n\006engine\030\013" + " \001(\0162\036.caffe.PoolingParameter.Engine:\007DE" + "FAULT\022\035\n\016global_pooling\030\014 \001(\010:\005false\".\n\n" + "PoolMethod\022\007\n\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\nSTOCHAST" + "IC\020\002\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t" + "\n\005CUDNN\020\002\"F\n\016PowerParameter\022\020\n\005power\030\001 \001" + "(\002:\0011\022\020\n\005scale\030\002 \001(\002:\0011\022\020\n\005shift\030\003 \001(\002:\001" + "0\"g\n\017PythonParameter\022\016\n\006module\030\001 \001(\t\022\r\n\005" + "layer\030\002 \001(\t\022\023\n\tparam_str\030\003 \001(\t:\000\022 \n\021shar" + "e_in_parallel\030\004 \001(\010:\005false\"\300\001\n\022Recurrent" + "Parameter\022\025\n\nnum_output\030\001 \001(\r:\0010\022-\n\rweig" + "ht_filler\030\002 \001(\0132\026.caffe.FillerParameter\022" + "+\n\013bias_filler\030\003 \001(\0132\026.caffe.FillerParam" + "eter\022\031\n\ndebug_info\030\004 \001(\010:\005false\022\034\n\rexpos" + "e_hidden\030\005 \001(\010:\005false\"\255\001\n\022ReductionParam" + "eter\022=\n\toperation\030\001 \001(\0162%.caffe.Reductio" + "nParameter.ReductionOp:\003SUM\022\017\n\004axis\030\002 \001(" + "\005:\0010\022\020\n\005coeff\030\003 \001(\002:\0011\"5\n\013ReductionOp\022\007\n" + "\003SUM\020\001\022\010\n\004ASUM\020\002\022\t\n\005SUMSQ\020\003\022\010\n\004MEAN\020\004\"\215\001" + "\n\rReLUParameter\022\031\n\016negative_slope\030\001 \001(\002:" + "\0010\0224\n\006engine\030\002 \001(\0162\033.caffe.ReLUParameter" + ".Engine:\007DEFAULT\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022" + "\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"Z\n\020ReshapeParamete" + "r\022\037\n\005shape\030\001 \001(\0132\020.caffe.BlobShape\022\017\n\004ax" + "is\030\002 \001(\005:\0010\022\024\n\010num_axes\030\003 \001(\005:\002-1\"\245\001\n\016Sc" + "aleParameter\022\017\n\004axis\030\001 \001(\005:\0011\022\023\n\010num_axe" + "s\030\002 \001(\005:\0011\022&\n\006filler\030\003 \001(\0132\026.caffe.Fille" + "rParameter\022\030\n\tbias_term\030\004 \001(\010:\005false\022+\n\013" + "bias_filler\030\005 \001(\0132\026.caffe.FillerParamete" + "r\"x\n\020SigmoidParameter\0227\n\006engine\030\001 \001(\0162\036." + "caffe.SigmoidParameter.Engine:\007DEFAULT\"+" + "\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDN" + "N\020\002\"L\n\016SliceParameter\022\017\n\004axis\030\003 \001(\005:\0011\022\023" + "\n\013slice_point\030\002 \003(\r\022\024\n\tslice_dim\030\001 \001(\r:\001" + "1\"\211\001\n\020SoftmaxParameter\0227\n\006engine\030\001 \001(\0162\036" + ".caffe.SoftmaxParameter.Engine:\007DEFAULT\022" + "\017\n\004axis\030\002 \001(\005:\0011\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022" + "\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"r\n\rTanHParameter\0224" + "\n\006engine\030\001 \001(\0162\033.caffe.TanHParameter.Eng" + "ine:\007DEFAULT\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005C" + "AFFE\020\001\022\t\n\005CUDNN\020\002\"/\n\rTileParameter\022\017\n\004ax" + "is\030\001 \001(\005:\0011\022\r\n\005tiles\030\002 \001(\005\"*\n\022ThresholdP" + "arameter\022\024\n\tthreshold\030\001 \001(\002:\0010\"\301\002\n\023Windo" + "wDataParameter\022\016\n\006source\030\001 \001(\t\022\020\n\005scale\030" + "\002 \001(\002:\0011\022\021\n\tmean_file\030\003 \001(\t\022\022\n\nbatch_siz" + "e\030\004 \001(\r\022\024\n\tcrop_size\030\005 \001(\r:\0010\022\025\n\006mirror\030" + "\006 \001(\010:\005false\022\031\n\014fg_threshold\030\007 \001(\002:\0030.5\022" + "\031\n\014bg_threshold\030\010 \001(\002:\0030.5\022\031\n\013fg_fractio" + "n\030\t \001(\002:\0040.25\022\026\n\013context_pad\030\n \001(\r:\0010\022\027\n" + "\tcrop_mode\030\013 \001(\t:\004warp\022\033\n\014cache_images\030\014" + " \001(\010:\005false\022\025\n\013root_folder\030\r \001(\t:\000\"\353\001\n\014S" + "PPParameter\022\026\n\016pyramid_height\030\001 \001(\r\0221\n\004p" + "ool\030\002 \001(\0162\036.caffe.SPPParameter.PoolMetho" + "d:\003MAX\0223\n\006engine\030\006 \001(\0162\032.caffe.SPPParame" + "ter.Engine:\007DEFAULT\".\n\nPoolMethod\022\007\n\003MAX" + "\020\000\022\007\n\003AVE\020\001\022\016\n\nSTOCHASTIC\020\002\"+\n\006Engine\022\013\n" + "\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"\340\023\n\020V1L" + "ayerParameter\022\016\n\006bottom\030\002 \003(\t\022\013\n\003top\030\003 \003" + "(\t\022\014\n\004name\030\004 \001(\t\022$\n\007include\030 \003(\0132\023.caff" + "e.NetStateRule\022$\n\007exclude\030! \003(\0132\023.caffe." + "NetStateRule\022/\n\004type\030\005 \001(\0162!.caffe.V1Lay" + "erParameter.LayerType\022\037\n\005blobs\030\006 \003(\0132\020.c" + "affe.BlobProto\022\016\n\005param\030\351\007 \003(\t\022>\n\017blob_s" + "hare_mode\030\352\007 \003(\0162$.caffe.V1LayerParamete" + "r.DimCheckMode\022\020\n\010blobs_lr\030\007 \003(\002\022\024\n\014weig" + "ht_decay\030\010 \003(\002\022\023\n\013loss_weight\030# \003(\002\0220\n\016a" + "ccuracy_param\030\033 \001(\0132\030.caffe.AccuracyPara" + "meter\022,\n\014argmax_param\030\027 \001(\0132\026.caffe.ArgM" + "axParameter\022,\n\014concat_param\030\t \001(\0132\026.caff" + "e.ConcatParameter\022\?\n\026contrastive_loss_pa" + "ram\030( \001(\0132\037.caffe.ContrastiveLossParamet" + "er\0226\n\021convolution_param\030\n \001(\0132\033.caffe.Co" + "nvolutionParameter\022(\n\ndata_param\030\013 \001(\0132\024" + ".caffe.DataParameter\022.\n\rdropout_param\030\014 " + "\001(\0132\027.caffe.DropoutParameter\0223\n\020dummy_da" + "ta_param\030\032 \001(\0132\031.caffe.DummyDataParamete" + "r\022.\n\reltwise_param\030\030 \001(\0132\027.caffe.Eltwise" + "Parameter\022&\n\texp_param\030) \001(\0132\023.caffe.Exp" + "Parameter\0221\n\017hdf5_data_param\030\r \001(\0132\030.caf" + "fe.HDF5DataParameter\0225\n\021hdf5_output_para" + "m\030\016 \001(\0132\032.caffe.HDF5OutputParameter\0223\n\020h" + "inge_loss_param\030\035 \001(\0132\031.caffe.HingeLossP" + "arameter\0223\n\020image_data_param\030\017 \001(\0132\031.caf" + "fe.ImageDataParameter\0229\n\023infogain_loss_p" + "aram\030\020 \001(\0132\034.caffe.InfogainLossParameter" + "\0229\n\023inner_product_param\030\021 \001(\0132\034.caffe.In" + "nerProductParameter\022&\n\tlrn_param\030\022 \001(\0132\023" + ".caffe.LRNParameter\0225\n\021memory_data_param" + "\030\026 \001(\0132\032.caffe.MemoryDataParameter\022&\n\tmv" + "n_param\030\" \001(\0132\023.caffe.MVNParameter\022.\n\rpo" + "oling_param\030\023 \001(\0132\027.caffe.PoolingParamet" + "er\022*\n\013power_param\030\025 \001(\0132\025.caffe.PowerPar" + "ameter\022(\n\nrelu_param\030\036 \001(\0132\024.caffe.ReLUP" + "arameter\022.\n\rsigmoid_param\030& \001(\0132\027.caffe." + "SigmoidParameter\022.\n\rsoftmax_param\030\' \001(\0132" + "\027.caffe.SoftmaxParameter\022*\n\013slice_param\030" + "\037 \001(\0132\025.caffe.SliceParameter\022(\n\ntanh_par" + "am\030% \001(\0132\024.caffe.TanHParameter\0222\n\017thresh" + "old_param\030\031 \001(\0132\031.caffe.ThresholdParamet" + "er\0225\n\021window_data_param\030\024 \001(\0132\032.caffe.Wi" + "ndowDataParameter\0227\n\017transform_param\030$ \001" + "(\0132\036.caffe.TransformationParameter\022(\n\nlo" + "ss_param\030* \001(\0132\024.caffe.LossParameter\022&\n\005" + "layer\030\001 \001(\0132\027.caffe.V0LayerParameter\"\330\004\n" + "\tLayerType\022\010\n\004NONE\020\000\022\n\n\006ABSVAL\020#\022\014\n\010ACCU" + "RACY\020\001\022\n\n\006ARGMAX\020\036\022\010\n\004BNLL\020\002\022\n\n\006CONCAT\020\003" + "\022\024\n\020CONTRASTIVE_LOSS\020%\022\017\n\013CONVOLUTION\020\004\022" + "\010\n\004DATA\020\005\022\021\n\rDECONVOLUTION\020\'\022\013\n\007DROPOUT\020" + "\006\022\016\n\nDUMMY_DATA\020 \022\022\n\016EUCLIDEAN_LOSS\020\007\022\013\n" + "\007ELTWISE\020\031\022\007\n\003EXP\020&\022\013\n\007FLATTEN\020\010\022\r\n\tHDF5" + "_DATA\020\t\022\017\n\013HDF5_OUTPUT\020\n\022\016\n\nHINGE_LOSS\020\034" + "\022\n\n\006IM2COL\020\013\022\016\n\nIMAGE_DATA\020\014\022\021\n\rINFOGAIN" + "_LOSS\020\r\022\021\n\rINNER_PRODUCT\020\016\022\007\n\003LRN\020\017\022\017\n\013M" + "EMORY_DATA\020\035\022\035\n\031MULTINOMIAL_LOGISTIC_LOS" + "S\020\020\022\007\n\003MVN\020\"\022\013\n\007POOLING\020\021\022\t\n\005POWER\020\032\022\010\n\004" + "RELU\020\022\022\013\n\007SIGMOID\020\023\022\036\n\032SIGMOID_CROSS_ENT" + "ROPY_LOSS\020\033\022\013\n\007SILENCE\020$\022\013\n\007SOFTMAX\020\024\022\020\n" + "\014SOFTMAX_LOSS\020\025\022\t\n\005SPLIT\020\026\022\t\n\005SLICE\020!\022\010\n" + "\004TANH\020\027\022\017\n\013WINDOW_DATA\020\030\022\r\n\tTHRESHOLD\020\037\"" + "*\n\014DimCheckMode\022\n\n\006STRICT\020\000\022\016\n\nPERMISSIV" + "E\020\001\"\375\007\n\020V0LayerParameter\022\014\n\004name\030\001 \001(\t\022\014" + "\n\004type\030\002 \001(\t\022\022\n\nnum_output\030\003 \001(\r\022\026\n\010bias" + "term\030\004 \001(\010:\004true\022-\n\rweight_filler\030\005 \001(\0132" + "\026.caffe.FillerParameter\022+\n\013bias_filler\030\006" + " \001(\0132\026.caffe.FillerParameter\022\016\n\003pad\030\007 \001(" + "\r:\0010\022\022\n\nkernelsize\030\010 \001(\r\022\020\n\005group\030\t \001(\r:" + "\0011\022\021\n\006stride\030\n \001(\r:\0011\0225\n\004pool\030\013 \001(\0162\".ca" + "ffe.V0LayerParameter.PoolMethod:\003MAX\022\032\n\r" + "dropout_ratio\030\014 \001(\002:\0030.5\022\025\n\nlocal_size\030\r" + " \001(\r:\0015\022\020\n\005alpha\030\016 \001(\002:\0011\022\022\n\004beta\030\017 \001(\002:" + "\0040.75\022\014\n\001k\030\026 \001(\002:\0011\022\016\n\006source\030\020 \001(\t\022\020\n\005s" + "cale\030\021 \001(\002:\0011\022\020\n\010meanfile\030\022 \001(\t\022\021\n\tbatch" + "size\030\023 \001(\r\022\023\n\010cropsize\030\024 \001(\r:\0010\022\025\n\006mirro" + "r\030\025 \001(\010:\005false\022\037\n\005blobs\0302 \003(\0132\020.caffe.Bl" + "obProto\022\020\n\010blobs_lr\0303 \003(\002\022\024\n\014weight_deca" + "y\0304 \003(\002\022\024\n\trand_skip\0305 \001(\r:\0010\022\035\n\020det_fg_" + "threshold\0306 \001(\002:\0030.5\022\035\n\020det_bg_threshold" + "\0307 \001(\002:\0030.5\022\035\n\017det_fg_fraction\0308 \001(\002:\0040." + "25\022\032\n\017det_context_pad\030: \001(\r:\0010\022\033\n\rdet_cr" + "op_mode\030; \001(\t:\004warp\022\022\n\007new_num\030< \001(\005:\0010\022" + "\027\n\014new_channels\030= \001(\005:\0010\022\025\n\nnew_height\030>" + " \001(\005:\0010\022\024\n\tnew_width\030\? \001(\005:\0010\022\035\n\016shuffle" + "_images\030@ \001(\010:\005false\022\025\n\nconcat_dim\030A \001(\r" + ":\0011\0226\n\021hdf5_output_param\030\351\007 \001(\0132\032.caffe." + "HDF5OutputParameter\".\n\nPoolMethod\022\007\n\003MAX" + "\020\000\022\007\n\003AVE\020\001\022\016\n\nSTOCHASTIC\020\002\"W\n\016PReLUPara" + "meter\022&\n\006filler\030\001 \001(\0132\026.caffe.FillerPara" + "meter\022\035\n\016channel_shared\030\002 \001(\010:\005false\"\207\001\n" + "\016NormalizedBBox\022\014\n\004xmin\030\001 \001(\002\022\014\n\004ymin\030\002 " + "\001(\002\022\014\n\004xmax\030\003 \001(\002\022\014\n\004ymax\030\004 \001(\002\022\r\n\005label" + "\030\005 \001(\005\022\021\n\tdifficult\030\006 \001(\010\022\r\n\005score\030\007 \001(\002" + "\022\014\n\004size\030\010 \001(\002*=\n\004Type\022\n\n\006DOUBLE\020\000\022\t\n\005FL" + "OAT\020\001\022\013\n\007FLOAT16\020\002\022\007\n\003INT\020\003\022\010\n\004UINT\020\004*\034\n" + "\005Phase\022\t\n\005TRAIN\020\000\022\010\n\004TEST\020\001", 17027); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "caffe.proto", &protobuf_RegisterTypes); ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_caffe_2eproto); @@ -5141,6 +5143,7 @@ const int PriorBoxParameter::kStepFieldNumber; const int PriorBoxParameter::kStepHFieldNumber; const int PriorBoxParameter::kStepWFieldNumber; const int PriorBoxParameter::kOffsetFieldNumber; +const int PriorBoxParameter::kAdditionalYOffsetFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 PriorBoxParameter::PriorBoxParameter() @@ -5163,8 +5166,8 @@ PriorBoxParameter::PriorBoxParameter(const PriorBoxParameter& from) void PriorBoxParameter::SharedCtor() { _cached_size_ = 0; - ::memset(&min_size_, 0, reinterpret_cast(&step_w_) - - reinterpret_cast(&min_size_) + sizeof(step_w_)); + ::memset(&min_size_, 0, reinterpret_cast(&additional_y_offset_) - + reinterpret_cast(&min_size_) + sizeof(additional_y_offset_)); flip_ = true; clip_ = true; offset_ = 0.5f; @@ -5226,8 +5229,8 @@ void PriorBoxParameter::Clear() { flip_ = true; clip_ = true; } - if (_has_bits_[8 / 32] & 7936u) { - ZR_(img_w_, step_w_); + if (_has_bits_[8 / 32] & 16128u) { + ZR_(img_w_, additional_y_offset_); offset_ = 0.5f; } @@ -5450,6 +5453,21 @@ bool PriorBoxParameter::MergePartialFromCodedStream( } else { goto handle_unusual; } + if (input->ExpectTag(112)) goto parse_additional_y_offset; + break; + } + + // optional bool additional_y_offset = 14 [default = false]; + case 14: { + if (tag == 112) { + parse_additional_y_offset: + set_has_additional_y_offset(); + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &additional_y_offset_))); + } else { + goto handle_unusual; + } if (input->ExpectAtEnd()) goto success; break; } @@ -5546,6 +5564,11 @@ void PriorBoxParameter::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteFloat(13, this->offset(), output); } + // optional bool additional_y_offset = 14 [default = false]; + if (has_additional_y_offset()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(14, this->additional_y_offset(), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -5624,6 +5647,11 @@ void PriorBoxParameter::SerializeWithCachedSizes( target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(13, this->offset(), target); } + // optional bool additional_y_offset = 14 [default = false]; + if (has_additional_y_offset()) { + target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(14, this->additional_y_offset(), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -5672,7 +5700,7 @@ size_t PriorBoxParameter::ByteSizeLong() const { } } - if (_has_bits_[8 / 32] & 7936u) { + if (_has_bits_[8 / 32] & 16128u) { // optional uint32 img_w = 9; if (has_img_w()) { total_size += 1 + @@ -5700,6 +5728,11 @@ size_t PriorBoxParameter::ByteSizeLong() const { total_size += 1 + 4; } + // optional bool additional_y_offset = 14 [default = false]; + if (has_additional_y_offset()) { + total_size += 1 + 1; + } + } // repeated float aspect_ratio = 3; { @@ -5797,6 +5830,9 @@ void PriorBoxParameter::UnsafeMergeFrom(const PriorBoxParameter& from) { if (from.has_offset()) { set_offset(from.offset()); } + if (from.has_additional_y_offset()) { + set_additional_y_offset(from.additional_y_offset()); + } } if (from._internal_metadata_.have_unknown_fields()) { ::google::protobuf::UnknownFieldSet::MergeToInternalMetdata( @@ -5841,6 +5877,7 @@ void PriorBoxParameter::InternalSwap(PriorBoxParameter* other) { std::swap(step_h_, other->step_h_); std::swap(step_w_, other->step_w_); std::swap(offset_, other->offset_); + std::swap(additional_y_offset_, other->additional_y_offset_); std::swap(_has_bits_[0], other->_has_bits_[0]); _internal_metadata_.Swap(&other->_internal_metadata_); std::swap(_cached_size_, other->_cached_size_); @@ -6181,6 +6218,30 @@ void PriorBoxParameter::set_offset(float value) { // @@protoc_insertion_point(field_set:caffe.PriorBoxParameter.offset) } +// optional bool additional_y_offset = 14 [default = false]; +bool PriorBoxParameter::has_additional_y_offset() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +void PriorBoxParameter::set_has_additional_y_offset() { + _has_bits_[0] |= 0x00002000u; +} +void PriorBoxParameter::clear_has_additional_y_offset() { + _has_bits_[0] &= ~0x00002000u; +} +void PriorBoxParameter::clear_additional_y_offset() { + additional_y_offset_ = false; + clear_has_additional_y_offset(); +} +bool PriorBoxParameter::additional_y_offset() const { + // @@protoc_insertion_point(field_get:caffe.PriorBoxParameter.additional_y_offset) + return additional_y_offset_; +} +void PriorBoxParameter::set_additional_y_offset(bool value) { + set_has_additional_y_offset(); + additional_y_offset_ = value; + // @@protoc_insertion_point(field_set:caffe.PriorBoxParameter.additional_y_offset) +} + inline const PriorBoxParameter* PriorBoxParameter::internal_default_instance() { return &PriorBoxParameter_default_instance_.get(); } diff --git a/modules/dnn/misc/caffe/caffe.pb.h b/modules/dnn/misc/caffe/caffe.pb.h index f1b85f0c77..3c86e09fba 100644 --- a/modules/dnn/misc/caffe/caffe.pb.h +++ b/modules/dnn/misc/caffe/caffe.pb.h @@ -1537,6 +1537,13 @@ class PriorBoxParameter : public ::google::protobuf::Message /* @@protoc_inserti float offset() const; void set_offset(float value); + // optional bool additional_y_offset = 14 [default = false]; + bool has_additional_y_offset() const; + void clear_additional_y_offset(); + static const int kAdditionalYOffsetFieldNumber = 14; + bool additional_y_offset() const; + void set_additional_y_offset(bool value); + // @@protoc_insertion_point(class_scope:caffe.PriorBoxParameter) private: inline void set_has_min_size(); @@ -1561,6 +1568,8 @@ class PriorBoxParameter : public ::google::protobuf::Message /* @@protoc_inserti inline void clear_has_step_w(); inline void set_has_offset(); inline void clear_has_offset(); + inline void set_has_additional_y_offset(); + inline void clear_has_additional_y_offset(); ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; ::google::protobuf::internal::HasBits<1> _has_bits_; @@ -1575,6 +1584,7 @@ class PriorBoxParameter : public ::google::protobuf::Message /* @@protoc_inserti float step_; float step_h_; float step_w_; + bool additional_y_offset_; bool flip_; bool clip_; float offset_; @@ -13635,6 +13645,30 @@ inline void PriorBoxParameter::set_offset(float value) { // @@protoc_insertion_point(field_set:caffe.PriorBoxParameter.offset) } +// optional bool additional_y_offset = 14 [default = false]; +inline bool PriorBoxParameter::has_additional_y_offset() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void PriorBoxParameter::set_has_additional_y_offset() { + _has_bits_[0] |= 0x00002000u; +} +inline void PriorBoxParameter::clear_has_additional_y_offset() { + _has_bits_[0] &= ~0x00002000u; +} +inline void PriorBoxParameter::clear_additional_y_offset() { + additional_y_offset_ = false; + clear_has_additional_y_offset(); +} +inline bool PriorBoxParameter::additional_y_offset() const { + // @@protoc_insertion_point(field_get:caffe.PriorBoxParameter.additional_y_offset) + return additional_y_offset_; +} +inline void PriorBoxParameter::set_additional_y_offset(bool value) { + set_has_additional_y_offset(); + additional_y_offset_ = value; + // @@protoc_insertion_point(field_set:caffe.PriorBoxParameter.additional_y_offset) +} + inline const PriorBoxParameter* PriorBoxParameter::internal_default_instance() { return &PriorBoxParameter_default_instance_.get(); } diff --git a/modules/dnn/src/caffe/caffe.proto b/modules/dnn/src/caffe/caffe.proto index abe4bef547..77d5eb1d78 100644 --- a/modules/dnn/src/caffe/caffe.proto +++ b/modules/dnn/src/caffe/caffe.proto @@ -145,6 +145,8 @@ message PriorBoxParameter { optional float step_w = 12; // Offset to the top left corner of each cell. optional float offset = 13 [default = 0.5]; + // If true, two additional boxes for each center will be generated. Their centers will be shifted by y coordinate. + optional bool additional_y_offset = 14 [default = false]; } // Message that store parameters used by DetectionOutputLayer diff --git a/modules/dnn/src/layers/prior_box_layer.cpp b/modules/dnn/src/layers/prior_box_layer.cpp index 75831d0269..3f74472f40 100644 --- a/modules/dnn/src/layers/prior_box_layer.cpp +++ b/modules/dnn/src/layers/prior_box_layer.cpp @@ -216,6 +216,14 @@ public: _stepY = 0; _stepX = 0; } + if(params.has("additional_y_offset")) + { + _additional_y_offset = getParameter(params, "additional_y_offset"); + if(_additional_y_offset) + _numPriors *= 2; + } + else + _additional_y_offset = false; } bool getMemoryShapes(const std::vector &inputs, @@ -289,6 +297,19 @@ public: // ymax outputPtr[idx++] = (center_y + _boxHeight / 2.) / _imageHeight; + if(_additional_y_offset) + { + float center_y_offset_1 = (h + 1.0) * stepY; + // xmin + outputPtr[idx++] = (center_x - _boxWidth / 2.) / _imageWidth; + // ymin + outputPtr[idx++] = (center_y_offset_1 - _boxHeight / 2.) / _imageHeight; + // xmax + outputPtr[idx++] = (center_x + _boxWidth / 2.) / _imageWidth; + // ymax + outputPtr[idx++] = (center_y_offset_1 + _boxHeight / 2.) / _imageHeight; + } + if (_maxSize > 0) { // second prior: aspect_ratio = 1, size = sqrt(min_size * max_size) @@ -301,6 +322,19 @@ public: outputPtr[idx++] = (center_x + _boxWidth / 2.) / _imageWidth; // ymax outputPtr[idx++] = (center_y + _boxHeight / 2.) / _imageHeight; + + if(_additional_y_offset) + { + float center_y_offset_1 = (h + 1.0) * stepY; + // xmin + outputPtr[idx++] = (center_x - _boxWidth / 2.) / _imageWidth; + // ymin + outputPtr[idx++] = (center_y_offset_1 - _boxHeight / 2.) / _imageHeight; + // xmax + outputPtr[idx++] = (center_x + _boxWidth / 2.) / _imageWidth; + // ymax + outputPtr[idx++] = (center_y_offset_1 + _boxHeight / 2.) / _imageHeight; + } } // rest of priors @@ -319,6 +353,18 @@ public: outputPtr[idx++] = (center_x + _boxWidth / 2.) / _imageWidth; // ymax outputPtr[idx++] = (center_y + _boxHeight / 2.) / _imageHeight; + if(_additional_y_offset) + { + float center_y_offset_1 = (h + 1.0) * stepY; + // xmin + outputPtr[idx++] = (center_x - _boxWidth / 2.) / _imageWidth; + // ymin + outputPtr[idx++] = (center_y_offset_1 - _boxHeight / 2.) / _imageHeight; + // xmax + outputPtr[idx++] = (center_x + _boxWidth / 2.) / _imageWidth; + // ymax + outputPtr[idx++] = (center_y_offset_1 + _boxHeight / 2.) / _imageHeight; + } } } } @@ -385,6 +431,7 @@ public: bool _flip; bool _clip; + bool _additional_y_offset; size_t _numPriors;