Merge pull request #10746 from dkurt:dnn_batch_norm_from_nvidia_caffe

pull/10758/head
Vadim Pisarevsky 7 years ago
commit 713ec7be45
  1. 708
      modules/dnn/misc/caffe/opencv-caffe.pb.cc
  2. 46
      modules/dnn/misc/caffe/opencv-caffe.pb.h
  3. 2
      modules/dnn/src/caffe/opencv-caffe.proto
  4. 6
      modules/dnn/src/layers/batch_norm_layer.cpp

@ -2538,9 +2538,11 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::opencv_caffe::BatchNormParameter, use_global_stats_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::opencv_caffe::BatchNormParameter, use_global_stats_),
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::opencv_caffe::BatchNormParameter, moving_average_fraction_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::opencv_caffe::BatchNormParameter, moving_average_fraction_),
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::opencv_caffe::BatchNormParameter, eps_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::opencv_caffe::BatchNormParameter, eps_),
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::opencv_caffe::BatchNormParameter, scale_bias_),
0, 0,
1,
2, 2,
3,
1,
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::opencv_caffe::BiasParameter, _has_bits_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::opencv_caffe::BiasParameter, _has_bits_),
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::opencv_caffe::BiasParameter, _internal_metadata_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::opencv_caffe::BiasParameter, _internal_metadata_),
~0u, // no _extensions_ ~0u, // no _extensions_
@ -3363,56 +3365,56 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROT
{ 490, 498, sizeof(::opencv_caffe::AccuracyParameter)}, { 490, 498, sizeof(::opencv_caffe::AccuracyParameter)},
{ 501, 509, sizeof(::opencv_caffe::ArgMaxParameter)}, { 501, 509, sizeof(::opencv_caffe::ArgMaxParameter)},
{ 512, 519, sizeof(::opencv_caffe::ConcatParameter)}, { 512, 519, sizeof(::opencv_caffe::ConcatParameter)},
{ 521, 529, sizeof(::opencv_caffe::BatchNormParameter)}, { 521, 530, sizeof(::opencv_caffe::BatchNormParameter)},
{ 532, 540, sizeof(::opencv_caffe::BiasParameter)}, { 534, 542, sizeof(::opencv_caffe::BiasParameter)},
{ 543, 550, sizeof(::opencv_caffe::ContrastiveLossParameter)}, { 545, 552, sizeof(::opencv_caffe::ContrastiveLossParameter)},
{ 552, 575, sizeof(::opencv_caffe::ConvolutionParameter)}, { 554, 577, sizeof(::opencv_caffe::ConvolutionParameter)},
{ 593, 600, sizeof(::opencv_caffe::CropParameter)}, { 595, 602, sizeof(::opencv_caffe::CropParameter)},
{ 602, 617, sizeof(::opencv_caffe::DataParameter)}, { 604, 619, sizeof(::opencv_caffe::DataParameter)},
{ 627, 635, sizeof(::opencv_caffe::NonMaximumSuppressionParameter)}, { 629, 637, sizeof(::opencv_caffe::NonMaximumSuppressionParameter)},
{ 638, 649, sizeof(::opencv_caffe::SaveOutputParameter)}, { 640, 651, sizeof(::opencv_caffe::SaveOutputParameter)},
{ 655, 662, sizeof(::opencv_caffe::DropoutParameter)}, { 657, 664, sizeof(::opencv_caffe::DropoutParameter)},
{ 664, 675, sizeof(::opencv_caffe::DummyDataParameter)}, { 666, 677, sizeof(::opencv_caffe::DummyDataParameter)},
{ 681, 689, sizeof(::opencv_caffe::EltwiseParameter)}, { 683, 691, sizeof(::opencv_caffe::EltwiseParameter)},
{ 692, 698, sizeof(::opencv_caffe::ELUParameter)}, { 694, 700, sizeof(::opencv_caffe::ELUParameter)},
{ 699, 709, sizeof(::opencv_caffe::EmbedParameter)}, { 701, 711, sizeof(::opencv_caffe::EmbedParameter)},
{ 714, 722, sizeof(::opencv_caffe::ExpParameter)}, { 716, 724, sizeof(::opencv_caffe::ExpParameter)},
{ 725, 732, sizeof(::opencv_caffe::FlattenParameter)}, { 727, 734, sizeof(::opencv_caffe::FlattenParameter)},
{ 734, 742, sizeof(::opencv_caffe::HDF5DataParameter)}, { 736, 744, sizeof(::opencv_caffe::HDF5DataParameter)},
{ 745, 751, sizeof(::opencv_caffe::HDF5OutputParameter)}, { 747, 753, sizeof(::opencv_caffe::HDF5OutputParameter)},
{ 752, 758, sizeof(::opencv_caffe::HingeLossParameter)}, { 754, 760, sizeof(::opencv_caffe::HingeLossParameter)},
{ 759, 776, sizeof(::opencv_caffe::ImageDataParameter)}, { 761, 778, sizeof(::opencv_caffe::ImageDataParameter)},
{ 788, 794, sizeof(::opencv_caffe::InfogainLossParameter)}, { 790, 796, sizeof(::opencv_caffe::InfogainLossParameter)},
{ 795, 806, sizeof(::opencv_caffe::InnerProductParameter)}, { 797, 808, sizeof(::opencv_caffe::InnerProductParameter)},
{ 812, 818, sizeof(::opencv_caffe::InputParameter)}, { 814, 820, sizeof(::opencv_caffe::InputParameter)},
{ 819, 827, sizeof(::opencv_caffe::LogParameter)}, { 821, 829, sizeof(::opencv_caffe::LogParameter)},
{ 830, 841, sizeof(::opencv_caffe::LRNParameter)}, { 832, 843, sizeof(::opencv_caffe::LRNParameter)},
{ 847, 856, sizeof(::opencv_caffe::MemoryDataParameter)}, { 849, 858, sizeof(::opencv_caffe::MemoryDataParameter)},
{ 860, 868, sizeof(::opencv_caffe::MVNParameter)}, { 862, 870, sizeof(::opencv_caffe::MVNParameter)},
{ 871, 877, sizeof(::opencv_caffe::ParameterParameter)}, { 873, 879, sizeof(::opencv_caffe::ParameterParameter)},
{ 878, 896, sizeof(::opencv_caffe::PoolingParameter)}, { 880, 898, sizeof(::opencv_caffe::PoolingParameter)},
{ 909, 917, sizeof(::opencv_caffe::PowerParameter)}, { 911, 919, sizeof(::opencv_caffe::PowerParameter)},
{ 920, 929, sizeof(::opencv_caffe::PythonParameter)}, { 922, 931, sizeof(::opencv_caffe::PythonParameter)},
{ 933, 943, sizeof(::opencv_caffe::RecurrentParameter)}, { 935, 945, sizeof(::opencv_caffe::RecurrentParameter)},
{ 948, 956, sizeof(::opencv_caffe::ReductionParameter)}, { 950, 958, sizeof(::opencv_caffe::ReductionParameter)},
{ 959, 966, sizeof(::opencv_caffe::ReLUParameter)}, { 961, 968, sizeof(::opencv_caffe::ReLUParameter)},
{ 968, 976, sizeof(::opencv_caffe::ReshapeParameter)}, { 970, 978, sizeof(::opencv_caffe::ReshapeParameter)},
{ 979, 989, sizeof(::opencv_caffe::ScaleParameter)}, { 981, 991, sizeof(::opencv_caffe::ScaleParameter)},
{ 994, 1000, sizeof(::opencv_caffe::SigmoidParameter)}, { 996, 1002, sizeof(::opencv_caffe::SigmoidParameter)},
{ 1001, 1009, sizeof(::opencv_caffe::SliceParameter)}, { 1003, 1011, sizeof(::opencv_caffe::SliceParameter)},
{ 1012, 1019, sizeof(::opencv_caffe::SoftmaxParameter)}, { 1014, 1021, sizeof(::opencv_caffe::SoftmaxParameter)},
{ 1021, 1027, sizeof(::opencv_caffe::TanHParameter)}, { 1023, 1029, sizeof(::opencv_caffe::TanHParameter)},
{ 1028, 1035, sizeof(::opencv_caffe::TileParameter)}, { 1030, 1037, sizeof(::opencv_caffe::TileParameter)},
{ 1037, 1043, sizeof(::opencv_caffe::ThresholdParameter)}, { 1039, 1045, sizeof(::opencv_caffe::ThresholdParameter)},
{ 1044, 1062, sizeof(::opencv_caffe::WindowDataParameter)}, { 1046, 1064, sizeof(::opencv_caffe::WindowDataParameter)},
{ 1075, 1083, sizeof(::opencv_caffe::SPPParameter)}, { 1077, 1085, sizeof(::opencv_caffe::SPPParameter)},
{ 1086, 1134, sizeof(::opencv_caffe::V1LayerParameter)}, { 1088, 1136, sizeof(::opencv_caffe::V1LayerParameter)},
{ 1177, 1220, sizeof(::opencv_caffe::V0LayerParameter)}, { 1179, 1222, sizeof(::opencv_caffe::V0LayerParameter)},
{ 1258, 1265, sizeof(::opencv_caffe::PReLUParameter)}, { 1260, 1267, sizeof(::opencv_caffe::PReLUParameter)},
{ 1267, 1280, sizeof(::opencv_caffe::NormalizedBBox)}, { 1269, 1282, sizeof(::opencv_caffe::NormalizedBBox)},
{ 1288, 1296, sizeof(::opencv_caffe::ROIPoolingParameter)}, { 1290, 1298, sizeof(::opencv_caffe::ROIPoolingParameter)},
{ 1299, 1312, sizeof(::opencv_caffe::ProposalParameter)}, { 1301, 1314, sizeof(::opencv_caffe::ProposalParameter)},
{ 1320, 1328, sizeof(::opencv_caffe::PSROIPoolingParameter)}, { 1322, 1330, sizeof(::opencv_caffe::PSROIPoolingParameter)},
}; };
static ::google::protobuf::Message const * const file_default_instances[] = { static ::google::protobuf::Message const * const file_default_instances[] = {
@ -3709,282 +3711,282 @@ void AddDescriptorsImpl() {
"abel\030\003 \001(\005\"M\n\017ArgMaxParameter\022\032\n\013out_max" "abel\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\004a" "_val\030\001 \001(\010:\005false\022\020\n\005top_k\030\002 \001(\r:\0011\022\014\n\004a"
"xis\030\003 \001(\005\"9\n\017ConcatParameter\022\017\n\004axis\030\002 \001" "xis\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\022BatchNor" "(\005:\0011\022\025\n\nconcat_dim\030\001 \001(\r:\0011\"\205\001\n\022BatchNo"
"mParameter\022\030\n\020use_global_stats\030\001 \001(\010\022&\n\027" "rmParameter\022\030\n\020use_global_stats\030\001 \001(\010\022&\n"
"moving_average_fraction\030\002 \001(\002:\0050.999\022\022\n\003" "\027moving_average_fraction\030\002 \001(\002:\0050.999\022\022\n"
"eps\030\003 \001(\002:\0051e-05\"d\n\rBiasParameter\022\017\n\004axi" "\003eps\030\003 \001(\002:\0051e-05\022\031\n\nscale_bias\030\007 \001(\010:\005f"
"s\030\001 \001(\005:\0011\022\023\n\010num_axes\030\002 \001(\005:\0011\022-\n\006fille" "alse\"d\n\rBiasParameter\022\017\n\004axis\030\001 \001(\005:\0011\022\023"
"r\030\003 \001(\0132\035.opencv_caffe.FillerParameter\"L" "\n\010num_axes\030\002 \001(\005:\0011\022-\n\006filler\030\003 \001(\0132\035.op"
"\n\030ContrastiveLossParameter\022\021\n\006margin\030\001 \001" "encv_caffe.FillerParameter\"L\n\030Contrastiv"
"(\002:\0011\022\035\n\016legacy_version\030\002 \001(\010:\005false\"\221\004\n" "eLossParameter\022\021\n\006margin\030\001 \001(\002:\0011\022\035\n\016leg"
"\024ConvolutionParameter\022\022\n\nnum_output\030\001 \001(" "acy_version\030\002 \001(\010:\005false\"\221\004\n\024Convolution"
"\r\022\027\n\tbias_term\030\002 \001(\010:\004true\022\013\n\003pad\030\003 \003(\r\022" "Parameter\022\022\n\nnum_output\030\001 \001(\r\022\027\n\tbias_te"
"\023\n\013kernel_size\030\004 \003(\r\022\016\n\006stride\030\006 \003(\r\022\020\n\010" "rm\030\002 \001(\010:\004true\022\013\n\003pad\030\003 \003(\r\022\023\n\013kernel_si"
"dilation\030\022 \003(\r\022\020\n\005pad_h\030\t \001(\r:\0010\022\020\n\005pad_" "ze\030\004 \003(\r\022\016\n\006stride\030\006 \003(\r\022\020\n\010dilation\030\022 \003"
"w\030\n \001(\r:\0010\022\020\n\010kernel_h\030\013 \001(\r\022\020\n\010kernel_w" "(\r\022\020\n\005pad_h\030\t \001(\r:\0010\022\020\n\005pad_w\030\n \001(\r:\0010\022\020"
"\030\014 \001(\r\022\020\n\010stride_h\030\r \001(\r\022\020\n\010stride_w\030\016 \001" "\n\010kernel_h\030\013 \001(\r\022\020\n\010kernel_w\030\014 \001(\r\022\020\n\010st"
"(\r\022\020\n\005group\030\005 \001(\r:\0011\0224\n\rweight_filler\030\007 " "ride_h\030\r \001(\r\022\020\n\010stride_w\030\016 \001(\r\022\020\n\005group\030"
"\001(\0132\035.opencv_caffe.FillerParameter\0222\n\013bi" "\005 \001(\r:\0011\0224\n\rweight_filler\030\007 \001(\0132\035.opencv"
"as_filler\030\010 \001(\0132\035.opencv_caffe.FillerPar" "_caffe.FillerParameter\0222\n\013bias_filler\030\010 "
"ameter\022B\n\006engine\030\017 \001(\0162).opencv_caffe.Co" "\001(\0132\035.opencv_caffe.FillerParameter\022B\n\006en"
"nvolutionParameter.Engine:\007DEFAULT\022\017\n\004ax" "gine\030\017 \001(\0162).opencv_caffe.ConvolutionPar"
"is\030\020 \001(\005:\0011\022\036\n\017force_nd_im2col\030\021 \001(\010:\005fa" "ameter.Engine:\007DEFAULT\022\017\n\004axis\030\020 \001(\005:\0011\022"
"lse\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n" "\036\n\017force_nd_im2col\030\021 \001(\010:\005false\"+\n\006Engin"
"\005CUDNN\020\002\"0\n\rCropParameter\022\017\n\004axis\030\001 \001(\005:" "e\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"0\n\r"
"\0012\022\016\n\006offset\030\002 \003(\r\"\253\002\n\rDataParameter\022\016\n\006" "CropParameter\022\017\n\004axis\030\001 \001(\005:\0012\022\016\n\006offset"
"source\030\001 \001(\t\022\022\n\nbatch_size\030\004 \001(\r\022\024\n\trand" "\030\002 \003(\r\"\253\002\n\rDataParameter\022\016\n\006source\030\001 \001(\t"
"_skip\030\007 \001(\r:\0010\0228\n\007backend\030\010 \001(\0162\036.opencv" "\022\022\n\nbatch_size\030\004 \001(\r\022\024\n\trand_skip\030\007 \001(\r:"
"_caffe.DataParameter.DB:\007LEVELDB\022\020\n\005scal" "\0010\0228\n\007backend\030\010 \001(\0162\036.opencv_caffe.DataP"
"e\030\002 \001(\002:\0011\022\021\n\tmean_file\030\003 \001(\t\022\024\n\tcrop_si" "arameter.DB:\007LEVELDB\022\020\n\005scale\030\002 \001(\002:\0011\022\021"
"ze\030\005 \001(\r:\0010\022\025\n\006mirror\030\006 \001(\010:\005false\022\"\n\023fo" "\n\tmean_file\030\003 \001(\t\022\024\n\tcrop_size\030\005 \001(\r:\0010\022"
"rce_encoded_color\030\t \001(\010:\005false\022\023\n\010prefet" "\025\n\006mirror\030\006 \001(\010:\005false\022\"\n\023force_encoded_"
"ch\030\n \001(\r:\0014\"\033\n\002DB\022\013\n\007LEVELDB\020\000\022\010\n\004LMDB\020\001" "color\030\t \001(\010:\005false\022\023\n\010prefetch\030\n \001(\r:\0014\""
"\"[\n\036NonMaximumSuppressionParameter\022\032\n\rnm" "\033\n\002DB\022\013\n\007LEVELDB\020\000\022\010\n\004LMDB\020\001\"[\n\036NonMaxim"
"s_threshold\030\001 \001(\002:\0030.3\022\r\n\005top_k\030\002 \001(\005\022\016\n" "umSuppressionParameter\022\032\n\rnms_threshold\030"
"\003eta\030\003 \001(\002:\0011\"\252\001\n\023SaveOutputParameter\022\030\n" "\001 \001(\002:\0030.3\022\r\n\005top_k\030\002 \001(\005\022\016\n\003eta\030\003 \001(\002:\001"
"\020output_directory\030\001 \001(\t\022\032\n\022output_name_p" "1\"\252\001\n\023SaveOutputParameter\022\030\n\020output_dire"
"refix\030\002 \001(\t\022\025\n\routput_format\030\003 \001(\t\022\026\n\016la" "ctory\030\001 \001(\t\022\032\n\022output_name_prefix\030\002 \001(\t\022"
"bel_map_file\030\004 \001(\t\022\026\n\016name_size_file\030\005 \001" "\025\n\routput_format\030\003 \001(\t\022\026\n\016label_map_file"
"(\t\022\026\n\016num_test_image\030\006 \001(\r\"I\n\020DropoutPar" "\030\004 \001(\t\022\026\n\016name_size_file\030\005 \001(\t\022\026\n\016num_te"
"ameter\022\032\n\rdropout_ratio\030\001 \001(\002:\0030.5\022\031\n\013sc" "st_image\030\006 \001(\r\"I\n\020DropoutParameter\022\032\n\rdr"
"ale_train\030\002 \001(\010:\004true\"\256\001\n\022DummyDataParam" "opout_ratio\030\001 \001(\002:\0030.5\022\031\n\013scale_train\030\002 "
"eter\0222\n\013data_filler\030\001 \003(\0132\035.opencv_caffe" "\001(\010:\004true\"\256\001\n\022DummyDataParameter\0222\n\013data"
".FillerParameter\022&\n\005shape\030\006 \003(\0132\027.opencv" "_filler\030\001 \003(\0132\035.opencv_caffe.FillerParam"
"_caffe.BlobShape\022\013\n\003num\030\002 \003(\r\022\020\n\010channel" "eter\022&\n\005shape\030\006 \003(\0132\027.opencv_caffe.BlobS"
"s\030\003 \003(\r\022\016\n\006height\030\004 \003(\r\022\r\n\005width\030\005 \003(\r\"\254" "hape\022\013\n\003num\030\002 \003(\r\022\020\n\010channels\030\003 \003(\r\022\016\n\006h"
"\001\n\020EltwiseParameter\022@\n\toperation\030\001 \001(\0162(" "eight\030\004 \003(\r\022\r\n\005width\030\005 \003(\r\"\254\001\n\020EltwisePa"
".opencv_caffe.EltwiseParameter.EltwiseOp" "rameter\022@\n\toperation\030\001 \001(\0162(.opencv_caff"
":\003SUM\022\r\n\005coeff\030\002 \003(\002\022\036\n\020stable_prod_grad" "e.EltwiseParameter.EltwiseOp:\003SUM\022\r\n\005coe"
"\030\003 \001(\010:\004true\"\'\n\tEltwiseOp\022\010\n\004PROD\020\000\022\007\n\003S" "ff\030\002 \003(\002\022\036\n\020stable_prod_grad\030\003 \001(\010:\004true"
"UM\020\001\022\007\n\003MAX\020\002\" \n\014ELUParameter\022\020\n\005alpha\030\001" "\"\'\n\tEltwiseOp\022\010\n\004PROD\020\000\022\007\n\003SUM\020\001\022\007\n\003MAX\020"
" \001(\002:\0011\"\272\001\n\016EmbedParameter\022\022\n\nnum_output" "\002\" \n\014ELUParameter\022\020\n\005alpha\030\001 \001(\002:\0011\"\272\001\n\016"
"\030\001 \001(\r\022\021\n\tinput_dim\030\002 \001(\r\022\027\n\tbias_term\030\003" "EmbedParameter\022\022\n\nnum_output\030\001 \001(\r\022\021\n\tin"
" \001(\010:\004true\0224\n\rweight_filler\030\004 \001(\0132\035.open" "put_dim\030\002 \001(\r\022\027\n\tbias_term\030\003 \001(\010:\004true\0224"
"cv_caffe.FillerParameter\0222\n\013bias_filler\030" "\n\rweight_filler\030\004 \001(\0132\035.opencv_caffe.Fil"
"\005 \001(\0132\035.opencv_caffe.FillerParameter\"D\n\014" "lerParameter\0222\n\013bias_filler\030\005 \001(\0132\035.open"
"ExpParameter\022\020\n\004base\030\001 \001(\002:\002-1\022\020\n\005scale\030" "cv_caffe.FillerParameter\"D\n\014ExpParameter"
"\002 \001(\002:\0011\022\020\n\005shift\030\003 \001(\002:\0010\"9\n\020FlattenPar" "\022\020\n\004base\030\001 \001(\002:\002-1\022\020\n\005scale\030\002 \001(\002:\0011\022\020\n\005"
"ameter\022\017\n\004axis\030\001 \001(\005:\0011\022\024\n\010end_axis\030\002 \001(" "shift\030\003 \001(\002:\0010\"9\n\020FlattenParameter\022\017\n\004ax"
"\005:\002-1\"O\n\021HDF5DataParameter\022\016\n\006source\030\001 \001" "is\030\001 \001(\005:\0011\022\024\n\010end_axis\030\002 \001(\005:\002-1\"O\n\021HDF"
"(\t\022\022\n\nbatch_size\030\002 \001(\r\022\026\n\007shuffle\030\003 \001(\010:" "5DataParameter\022\016\n\006source\030\001 \001(\t\022\022\n\nbatch_"
"\005false\"(\n\023HDF5OutputParameter\022\021\n\tfile_na" "size\030\002 \001(\r\022\026\n\007shuffle\030\003 \001(\010:\005false\"(\n\023HD"
"me\030\001 \001(\t\"e\n\022HingeLossParameter\0227\n\004norm\030\001" "F5OutputParameter\022\021\n\tfile_name\030\001 \001(\t\"e\n\022"
" \001(\0162%.opencv_caffe.HingeLossParameter.N" "HingeLossParameter\0227\n\004norm\030\001 \001(\0162%.openc"
"orm:\002L1\"\026\n\004Norm\022\006\n\002L1\020\001\022\006\n\002L2\020\002\"\227\002\n\022Imag" "v_caffe.HingeLossParameter.Norm:\002L1\"\026\n\004N"
"eDataParameter\022\016\n\006source\030\001 \001(\t\022\025\n\nbatch_" "orm\022\006\n\002L1\020\001\022\006\n\002L2\020\002\"\227\002\n\022ImageDataParamet"
"size\030\004 \001(\r:\0011\022\024\n\trand_skip\030\007 \001(\r:\0010\022\026\n\007s" "er\022\016\n\006source\030\001 \001(\t\022\025\n\nbatch_size\030\004 \001(\r:\001"
"huffle\030\010 \001(\010:\005false\022\025\n\nnew_height\030\t \001(\r:" "1\022\024\n\trand_skip\030\007 \001(\r:\0010\022\026\n\007shuffle\030\010 \001(\010"
"\0010\022\024\n\tnew_width\030\n \001(\r:\0010\022\026\n\010is_color\030\013 \001" ":\005false\022\025\n\nnew_height\030\t \001(\r:\0010\022\024\n\tnew_wi"
"(\010:\004true\022\020\n\005scale\030\002 \001(\002:\0011\022\021\n\tmean_file\030" "dth\030\n \001(\r:\0010\022\026\n\010is_color\030\013 \001(\010:\004true\022\020\n\005"
"\003 \001(\t\022\024\n\tcrop_size\030\005 \001(\r:\0010\022\025\n\006mirror\030\006 " "scale\030\002 \001(\002:\0011\022\021\n\tmean_file\030\003 \001(\t\022\024\n\tcro"
"\001(\010:\005false\022\025\n\013root_folder\030\014 \001(\t:\000\"\'\n\025Inf" "p_size\030\005 \001(\r:\0010\022\025\n\006mirror\030\006 \001(\010:\005false\022\025"
"ogainLossParameter\022\016\n\006source\030\001 \001(\t\"\331\001\n\025I" "\n\013root_folder\030\014 \001(\t:\000\"\'\n\025InfogainLossPar"
"nnerProductParameter\022\022\n\nnum_output\030\001 \001(\r" "ameter\022\016\n\006source\030\001 \001(\t\"\331\001\n\025InnerProductP"
"\022\027\n\tbias_term\030\002 \001(\010:\004true\0224\n\rweight_fill" "arameter\022\022\n\nnum_output\030\001 \001(\r\022\027\n\tbias_ter"
"er\030\003 \001(\0132\035.opencv_caffe.FillerParameter\022" "m\030\002 \001(\010:\004true\0224\n\rweight_filler\030\003 \001(\0132\035.o"
"2\n\013bias_filler\030\004 \001(\0132\035.opencv_caffe.Fill" "pencv_caffe.FillerParameter\0222\n\013bias_fill"
"erParameter\022\017\n\004axis\030\005 \001(\005:\0011\022\030\n\ttranspos" "er\030\004 \001(\0132\035.opencv_caffe.FillerParameter\022"
"e\030\006 \001(\010:\005false\"8\n\016InputParameter\022&\n\005shap" "\017\n\004axis\030\005 \001(\005:\0011\022\030\n\ttranspose\030\006 \001(\010:\005fal"
"e\030\001 \003(\0132\027.opencv_caffe.BlobShape\"D\n\014LogP" "se\"8\n\016InputParameter\022&\n\005shape\030\001 \003(\0132\027.op"
"arameter\022\020\n\004base\030\001 \001(\002:\002-1\022\020\n\005scale\030\002 \001(" "encv_caffe.BlobShape\"D\n\014LogParameter\022\020\n\004"
"\002:\0011\022\020\n\005shift\030\003 \001(\002:\0010\"\306\002\n\014LRNParameter\022" "base\030\001 \001(\002:\002-1\022\020\n\005scale\030\002 \001(\002:\0011\022\020\n\005shif"
"\025\n\nlocal_size\030\001 \001(\r:\0015\022\020\n\005alpha\030\002 \001(\002:\0011" "t\030\003 \001(\002:\0010\"\306\002\n\014LRNParameter\022\025\n\nlocal_siz"
"\022\022\n\004beta\030\003 \001(\002:\0040.75\022K\n\013norm_region\030\004 \001(" "e\030\001 \001(\r:\0015\022\020\n\005alpha\030\002 \001(\002:\0011\022\022\n\004beta\030\003 \001"
"\0162%.opencv_caffe.LRNParameter.NormRegion" "(\002:\0040.75\022K\n\013norm_region\030\004 \001(\0162%.opencv_c"
":\017ACROSS_CHANNELS\022\014\n\001k\030\005 \001(\002:\0011\022:\n\006engin" "affe.LRNParameter.NormRegion:\017ACROSS_CHA"
"e\030\006 \001(\0162!.opencv_caffe.LRNParameter.Engi" "NNELS\022\014\n\001k\030\005 \001(\002:\0011\022:\n\006engine\030\006 \001(\0162!.op"
"ne:\007DEFAULT\"5\n\nNormRegion\022\023\n\017ACROSS_CHAN" "encv_caffe.LRNParameter.Engine:\007DEFAULT\""
"NELS\020\000\022\022\n\016WITHIN_CHANNEL\020\001\"+\n\006Engine\022\013\n\007" "5\n\nNormRegion\022\023\n\017ACROSS_CHANNELS\020\000\022\022\n\016WI"
"DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"Z\n\023Memor" "THIN_CHANNEL\020\001\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n"
"yDataParameter\022\022\n\nbatch_size\030\001 \001(\r\022\020\n\010ch" "\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"Z\n\023MemoryDataParamet"
"annels\030\002 \001(\r\022\016\n\006height\030\003 \001(\r\022\r\n\005width\030\004 " "er\022\022\n\nbatch_size\030\001 \001(\r\022\020\n\010channels\030\002 \001(\r"
"\001(\r\"d\n\014MVNParameter\022 \n\022normalize_varianc" "\022\016\n\006height\030\003 \001(\r\022\r\n\005width\030\004 \001(\r\"d\n\014MVNPa"
"e\030\001 \001(\010:\004true\022\036\n\017across_channels\030\002 \001(\010:\005" "rameter\022 \n\022normalize_variance\030\001 \001(\010:\004tru"
"false\022\022\n\003eps\030\003 \001(\002:\0051e-09\"<\n\022ParameterPa" "e\022\036\n\017across_channels\030\002 \001(\010:\005false\022\022\n\003eps"
"rameter\022&\n\005shape\030\001 \001(\0132\027.opencv_caffe.Bl" "\030\003 \001(\002:\0051e-09\"<\n\022ParameterParameter\022&\n\005s"
"obShape\"\311\003\n\020PoolingParameter\022<\n\004pool\030\001 \001" "hape\030\001 \001(\0132\027.opencv_caffe.BlobShape\"\311\003\n\020"
"(\0162).opencv_caffe.PoolingParameter.PoolM" "PoolingParameter\022<\n\004pool\030\001 \001(\0162).opencv_"
"ethod:\003MAX\022\016\n\003pad\030\004 \001(\r:\0010\022\020\n\005pad_h\030\t \001(" "caffe.PoolingParameter.PoolMethod:\003MAX\022\016"
"\r:\0010\022\020\n\005pad_w\030\n \001(\r:\0010\022\023\n\013kernel_size\030\002 " "\n\003pad\030\004 \001(\r:\0010\022\020\n\005pad_h\030\t \001(\r:\0010\022\020\n\005pad_"
"\001(\r\022\020\n\010kernel_h\030\005 \001(\r\022\020\n\010kernel_w\030\006 \001(\r\022" "w\030\n \001(\r:\0010\022\023\n\013kernel_size\030\002 \001(\r\022\020\n\010kerne"
"\021\n\006stride\030\003 \001(\r:\0011\022\020\n\010stride_h\030\007 \001(\r\022\020\n\010" "l_h\030\005 \001(\r\022\020\n\010kernel_w\030\006 \001(\r\022\021\n\006stride\030\003 "
"stride_w\030\010 \001(\r\022>\n\006engine\030\013 \001(\0162%.opencv_" "\001(\r:\0011\022\020\n\010stride_h\030\007 \001(\r\022\020\n\010stride_w\030\010 \001"
"caffe.PoolingParameter.Engine:\007DEFAULT\022\035" "(\r\022>\n\006engine\030\013 \001(\0162%.opencv_caffe.Poolin"
"\n\016global_pooling\030\014 \001(\010:\005false\022\027\n\tceil_mo" "gParameter.Engine:\007DEFAULT\022\035\n\016global_poo"
"de\030\r \001(\010:\004true\".\n\nPoolMethod\022\007\n\003MAX\020\000\022\007\n" "ling\030\014 \001(\010:\005false\022\027\n\tceil_mode\030\r \001(\010:\004tr"
"\003AVE\020\001\022\016\n\nSTOCHASTIC\020\002\"+\n\006Engine\022\013\n\007DEFA" "ue\".\n\nPoolMethod\022\007\n\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\nST"
"ULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"F\n\016PowerPara" "OCHASTIC\020\002\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAF"
"meter\022\020\n\005power\030\001 \001(\002:\0011\022\020\n\005scale\030\002 \001(\002:\001" "FE\020\001\022\t\n\005CUDNN\020\002\"F\n\016PowerParameter\022\020\n\005pow"
"1\022\020\n\005shift\030\003 \001(\002:\0010\"g\n\017PythonParameter\022\016" "er\030\001 \001(\002:\0011\022\020\n\005scale\030\002 \001(\002:\0011\022\020\n\005shift\030\003"
"\n\006module\030\001 \001(\t\022\r\n\005layer\030\002 \001(\t\022\023\n\tparam_s" " \001(\002:\0010\"g\n\017PythonParameter\022\016\n\006module\030\001 \001"
"tr\030\003 \001(\t:\000\022 \n\021share_in_parallel\030\004 \001(\010:\005f" "(\t\022\r\n\005layer\030\002 \001(\t\022\023\n\tparam_str\030\003 \001(\t:\000\022 "
"alse\"\316\001\n\022RecurrentParameter\022\025\n\nnum_outpu" "\n\021share_in_parallel\030\004 \001(\010:\005false\"\316\001\n\022Rec"
"t\030\001 \001(\r:\0010\0224\n\rweight_filler\030\002 \001(\0132\035.open" "urrentParameter\022\025\n\nnum_output\030\001 \001(\r:\0010\0224"
"cv_caffe.FillerParameter\0222\n\013bias_filler\030" "\n\rweight_filler\030\002 \001(\0132\035.opencv_caffe.Fil"
"\003 \001(\0132\035.opencv_caffe.FillerParameter\022\031\n\n" "lerParameter\0222\n\013bias_filler\030\003 \001(\0132\035.open"
"debug_info\030\004 \001(\010:\005false\022\034\n\rexpose_hidden" "cv_caffe.FillerParameter\022\031\n\ndebug_info\030\004"
"\030\005 \001(\010:\005false\"\264\001\n\022ReductionParameter\022D\n\t" " \001(\010:\005false\022\034\n\rexpose_hidden\030\005 \001(\010:\005fals"
"operation\030\001 \001(\0162,.opencv_caffe.Reduction" "e\"\264\001\n\022ReductionParameter\022D\n\toperation\030\001 "
"Parameter.ReductionOp:\003SUM\022\017\n\004axis\030\002 \001(\005" "\001(\0162,.opencv_caffe.ReductionParameter.Re"
":\0010\022\020\n\005coeff\030\003 \001(\002:\0011\"5\n\013ReductionOp\022\007\n\003" "ductionOp:\003SUM\022\017\n\004axis\030\002 \001(\005:\0010\022\020\n\005coeff"
"SUM\020\001\022\010\n\004ASUM\020\002\022\t\n\005SUMSQ\020\003\022\010\n\004MEAN\020\004\"\224\001\n" "\030\003 \001(\002:\0011\"5\n\013ReductionOp\022\007\n\003SUM\020\001\022\010\n\004ASU"
"\rReLUParameter\022\031\n\016negative_slope\030\001 \001(\002:\001" "M\020\002\022\t\n\005SUMSQ\020\003\022\010\n\004MEAN\020\004\"\224\001\n\rReLUParamet"
"0\022;\n\006engine\030\002 \001(\0162\".opencv_caffe.ReLUPar" "er\022\031\n\016negative_slope\030\001 \001(\002:\0010\022;\n\006engine\030"
"ameter.Engine:\007DEFAULT\"+\n\006Engine\022\013\n\007DEFA" "\002 \001(\0162\".opencv_caffe.ReLUParameter.Engin"
"ULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"a\n\020ReshapePa" "e:\007DEFAULT\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAF"
"rameter\022&\n\005shape\030\001 \001(\0132\027.opencv_caffe.Bl" "FE\020\001\022\t\n\005CUDNN\020\002\"a\n\020ReshapeParameter\022&\n\005s"
"obShape\022\017\n\004axis\030\002 \001(\005:\0010\022\024\n\010num_axes\030\003 \001" "hape\030\001 \001(\0132\027.opencv_caffe.BlobShape\022\017\n\004a"
"(\005:\002-1\"\263\001\n\016ScaleParameter\022\017\n\004axis\030\001 \001(\005:" "xis\030\002 \001(\005:\0010\022\024\n\010num_axes\030\003 \001(\005:\002-1\"\263\001\n\016S"
"\0011\022\023\n\010num_axes\030\002 \001(\005:\0011\022-\n\006filler\030\003 \001(\0132" "caleParameter\022\017\n\004axis\030\001 \001(\005:\0011\022\023\n\010num_ax"
"\035.opencv_caffe.FillerParameter\022\030\n\tbias_t" "es\030\002 \001(\005:\0011\022-\n\006filler\030\003 \001(\0132\035.opencv_caf"
"erm\030\004 \001(\010:\005false\0222\n\013bias_filler\030\005 \001(\0132\035." "fe.FillerParameter\022\030\n\tbias_term\030\004 \001(\010:\005f"
"opencv_caffe.FillerParameter\"\177\n\020SigmoidP" "alse\0222\n\013bias_filler\030\005 \001(\0132\035.opencv_caffe"
"arameter\022>\n\006engine\030\001 \001(\0162%.opencv_caffe." ".FillerParameter\"\177\n\020SigmoidParameter\022>\n\006"
"SigmoidParameter.Engine:\007DEFAULT\"+\n\006Engi" "engine\030\001 \001(\0162%.opencv_caffe.SigmoidParam"
"ne\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"L\n"
"\016SliceParameter\022\017\n\004axis\030\003 \001(\005:\0011\022\023\n\013slic"
"e_point\030\002 \003(\r\022\024\n\tslice_dim\030\001 \001(\r:\0011\"\220\001\n\020"
"SoftmaxParameter\022>\n\006engine\030\001 \001(\0162%.openc"
"v_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\"y\n\rTanHParameter\022"
";\n\006engine\030\001 \001(\0162\".opencv_caffe.TanHParam"
"eter.Engine:\007DEFAULT\"+\n\006Engine\022\013\n\007DEFAUL" "eter.Engine:\007DEFAULT\"+\n\006Engine\022\013\n\007DEFAUL"
"T\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"/\n\rTileParamet" "T\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"L\n\016SliceParame"
"er\022\017\n\004axis\030\001 \001(\005:\0011\022\r\n\005tiles\030\002 \001(\005\"*\n\022Th" "ter\022\017\n\004axis\030\003 \001(\005:\0011\022\023\n\013slice_point\030\002 \003("
"resholdParameter\022\024\n\tthreshold\030\001 \001(\002:\0010\"\301" "\r\022\024\n\tslice_dim\030\001 \001(\r:\0011\"\220\001\n\020SoftmaxParam"
"\002\n\023WindowDataParameter\022\016\n\006source\030\001 \001(\t\022\020" "eter\022>\n\006engine\030\001 \001(\0162%.opencv_caffe.Soft"
"\n\005scale\030\002 \001(\002:\0011\022\021\n\tmean_file\030\003 \001(\t\022\022\n\nb" "maxParameter.Engine:\007DEFAULT\022\017\n\004axis\030\002 \001"
"atch_size\030\004 \001(\r\022\024\n\tcrop_size\030\005 \001(\r:\0010\022\025\n" "(\005:\0011\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022"
"\006mirror\030\006 \001(\010:\005false\022\031\n\014fg_threshold\030\007 \001" "\t\n\005CUDNN\020\002\"y\n\rTanHParameter\022;\n\006engine\030\001 "
"(\002:\0030.5\022\031\n\014bg_threshold\030\010 \001(\002:\0030.5\022\031\n\013fg" "\001(\0162\".opencv_caffe.TanHParameter.Engine:"
"_fraction\030\t \001(\002:\0040.25\022\026\n\013context_pad\030\n \001" "\007DEFAULT\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE"
"(\r:\0010\022\027\n\tcrop_mode\030\013 \001(\t:\004warp\022\033\n\014cache_" "\020\001\022\t\n\005CUDNN\020\002\"/\n\rTileParameter\022\017\n\004axis\030\001"
"images\030\014 \001(\010:\005false\022\025\n\013root_folder\030\r \001(\t" " \001(\005:\0011\022\r\n\005tiles\030\002 \001(\005\"*\n\022ThresholdParam"
":\000\"\371\001\n\014SPPParameter\022\026\n\016pyramid_height\030\001 " "eter\022\024\n\tthreshold\030\001 \001(\002:\0010\"\301\002\n\023WindowDat"
"\001(\r\0228\n\004pool\030\002 \001(\0162%.opencv_caffe.SPPPara" "aParameter\022\016\n\006source\030\001 \001(\t\022\020\n\005scale\030\002 \001("
"meter.PoolMethod:\003MAX\022:\n\006engine\030\006 \001(\0162!." "\002:\0011\022\021\n\tmean_file\030\003 \001(\t\022\022\n\nbatch_size\030\004 "
"opencv_caffe.SPPParameter.Engine:\007DEFAUL" "\001(\r\022\024\n\tcrop_size\030\005 \001(\r:\0010\022\025\n\006mirror\030\006 \001("
"T\".\n\nPoolMethod\022\007\n\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\nSTO" "\010:\005false\022\031\n\014fg_threshold\030\007 \001(\002:\0030.5\022\031\n\014b"
"CHASTIC\020\002\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFF" "g_threshold\030\010 \001(\002:\0030.5\022\031\n\013fg_fraction\030\t "
"E\020\001\022\t\n\005CUDNN\020\002\"\334\025\n\020V1LayerParameter\022\016\n\006b" "\001(\002:\0040.25\022\026\n\013context_pad\030\n \001(\r:\0010\022\027\n\tcro"
"ottom\030\002 \003(\t\022\013\n\003top\030\003 \003(\t\022\014\n\004name\030\004 \001(\t\022+" "p_mode\030\013 \001(\t:\004warp\022\033\n\014cache_images\030\014 \001(\010"
"\n\007include\030 \003(\0132\032.opencv_caffe.NetStateR" ":\005false\022\025\n\013root_folder\030\r \001(\t:\000\"\371\001\n\014SPPPa"
"ule\022+\n\007exclude\030! \003(\0132\032.opencv_caffe.NetS" "rameter\022\026\n\016pyramid_height\030\001 \001(\r\0228\n\004pool\030"
"tateRule\0226\n\004type\030\005 \001(\0162(.opencv_caffe.V1" "\002 \001(\0162%.opencv_caffe.SPPParameter.PoolMe"
"LayerParameter.LayerType\022&\n\005blobs\030\006 \003(\0132" "thod:\003MAX\022:\n\006engine\030\006 \001(\0162!.opencv_caffe"
"\027.opencv_caffe.BlobProto\022\016\n\005param\030\351\007 \003(\t" ".SPPParameter.Engine:\007DEFAULT\".\n\nPoolMet"
"\022E\n\017blob_share_mode\030\352\007 \003(\0162+.opencv_caff" "hod\022\007\n\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\nSTOCHASTIC\020\002\"+\n"
"e.V1LayerParameter.DimCheckMode\022\020\n\010blobs" "\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN"
"_lr\030\007 \003(\002\022\024\n\014weight_decay\030\010 \003(\002\022\023\n\013loss_" "\020\002\"\334\025\n\020V1LayerParameter\022\016\n\006bottom\030\002 \003(\t\022"
"weight\030# \003(\002\0227\n\016accuracy_param\030\033 \001(\0132\037.o" "\013\n\003top\030\003 \003(\t\022\014\n\004name\030\004 \001(\t\022+\n\007include\030 "
"pencv_caffe.AccuracyParameter\0223\n\014argmax_" "\003(\0132\032.opencv_caffe.NetStateRule\022+\n\007exclu"
"param\030\027 \001(\0132\035.opencv_caffe.ArgMaxParamet" "de\030! \003(\0132\032.opencv_caffe.NetStateRule\0226\n\004"
"er\0223\n\014concat_param\030\t \001(\0132\035.opencv_caffe." "type\030\005 \001(\0162(.opencv_caffe.V1LayerParamet"
"ConcatParameter\022F\n\026contrastive_loss_para" "er.LayerType\022&\n\005blobs\030\006 \003(\0132\027.opencv_caf"
"m\030( \001(\0132&.opencv_caffe.ContrastiveLossPa" "fe.BlobProto\022\016\n\005param\030\351\007 \003(\t\022E\n\017blob_sha"
"rameter\022=\n\021convolution_param\030\n \001(\0132\".ope" "re_mode\030\352\007 \003(\0162+.opencv_caffe.V1LayerPar"
"ncv_caffe.ConvolutionParameter\022/\n\ndata_p" "ameter.DimCheckMode\022\020\n\010blobs_lr\030\007 \003(\002\022\024\n"
"aram\030\013 \001(\0132\033.opencv_caffe.DataParameter\022" "\014weight_decay\030\010 \003(\002\022\023\n\013loss_weight\030# \003(\002"
"5\n\rdropout_param\030\014 \001(\0132\036.opencv_caffe.Dr" "\0227\n\016accuracy_param\030\033 \001(\0132\037.opencv_caffe."
"opoutParameter\022:\n\020dummy_data_param\030\032 \001(\013" "AccuracyParameter\0223\n\014argmax_param\030\027 \001(\0132"
"2 .opencv_caffe.DummyDataParameter\0225\n\rel" "\035.opencv_caffe.ArgMaxParameter\0223\n\014concat"
"twise_param\030\030 \001(\0132\036.opencv_caffe.Eltwise" "_param\030\t \001(\0132\035.opencv_caffe.ConcatParame"
"Parameter\022-\n\texp_param\030) \001(\0132\032.opencv_ca" "ter\022F\n\026contrastive_loss_param\030( \001(\0132&.op"
"ffe.ExpParameter\0228\n\017hdf5_data_param\030\r \001(" "encv_caffe.ContrastiveLossParameter\022=\n\021c"
"\0132\037.opencv_caffe.HDF5DataParameter\022<\n\021hd" "onvolution_param\030\n \001(\0132\".opencv_caffe.Co"
"f5_output_param\030\016 \001(\0132!.opencv_caffe.HDF" "nvolutionParameter\022/\n\ndata_param\030\013 \001(\0132\033"
"5OutputParameter\022:\n\020hinge_loss_param\030\035 \001" ".opencv_caffe.DataParameter\0225\n\rdropout_p"
"(\0132 .opencv_caffe.HingeLossParameter\022:\n\020" "aram\030\014 \001(\0132\036.opencv_caffe.DropoutParamet"
"image_data_param\030\017 \001(\0132 .opencv_caffe.Im" "er\022:\n\020dummy_data_param\030\032 \001(\0132 .opencv_ca"
"ageDataParameter\022@\n\023infogain_loss_param\030" "ffe.DummyDataParameter\0225\n\reltwise_param\030"
"\020 \001(\0132#.opencv_caffe.InfogainLossParamet" "\030 \001(\0132\036.opencv_caffe.EltwiseParameter\022-\n"
"er\022@\n\023inner_product_param\030\021 \001(\0132#.opencv" "\texp_param\030) \001(\0132\032.opencv_caffe.ExpParam"
"_caffe.InnerProductParameter\022-\n\tlrn_para" "eter\0228\n\017hdf5_data_param\030\r \001(\0132\037.opencv_c"
"m\030\022 \001(\0132\032.opencv_caffe.LRNParameter\022<\n\021m" "affe.HDF5DataParameter\022<\n\021hdf5_output_pa"
"emory_data_param\030\026 \001(\0132!.opencv_caffe.Me" "ram\030\016 \001(\0132!.opencv_caffe.HDF5OutputParam"
"moryDataParameter\022-\n\tmvn_param\030\" \001(\0132\032.o" "eter\022:\n\020hinge_loss_param\030\035 \001(\0132 .opencv_"
"pencv_caffe.MVNParameter\0225\n\rpooling_para" "caffe.HingeLossParameter\022:\n\020image_data_p"
"m\030\023 \001(\0132\036.opencv_caffe.PoolingParameter\022" "aram\030\017 \001(\0132 .opencv_caffe.ImageDataParam"
"1\n\013power_param\030\025 \001(\0132\034.opencv_caffe.Powe" "eter\022@\n\023infogain_loss_param\030\020 \001(\0132#.open"
"rParameter\022/\n\nrelu_param\030\036 \001(\0132\033.opencv_" "cv_caffe.InfogainLossParameter\022@\n\023inner_"
"caffe.ReLUParameter\0225\n\rsigmoid_param\030& \001" "product_param\030\021 \001(\0132#.opencv_caffe.Inner"
"(\0132\036.opencv_caffe.SigmoidParameter\0225\n\rso" "ProductParameter\022-\n\tlrn_param\030\022 \001(\0132\032.op"
"ftmax_param\030\' \001(\0132\036.opencv_caffe.Softmax" "encv_caffe.LRNParameter\022<\n\021memory_data_p"
"Parameter\0221\n\013slice_param\030\037 \001(\0132\034.opencv_" "aram\030\026 \001(\0132!.opencv_caffe.MemoryDataPara"
"caffe.SliceParameter\022/\n\ntanh_param\030% \001(\013" "meter\022-\n\tmvn_param\030\" \001(\0132\032.opencv_caffe."
"2\033.opencv_caffe.TanHParameter\0229\n\017thresho" "MVNParameter\0225\n\rpooling_param\030\023 \001(\0132\036.op"
"ld_param\030\031 \001(\0132 .opencv_caffe.ThresholdP" "encv_caffe.PoolingParameter\0221\n\013power_par"
"arameter\022<\n\021window_data_param\030\024 \001(\0132!.op" "am\030\025 \001(\0132\034.opencv_caffe.PowerParameter\022/"
"encv_caffe.WindowDataParameter\022>\n\017transf" "\n\nrelu_param\030\036 \001(\0132\033.opencv_caffe.ReLUPa"
"orm_param\030$ \001(\0132%.opencv_caffe.Transform" "rameter\0225\n\rsigmoid_param\030& \001(\0132\036.opencv_"
"ationParameter\022/\n\nloss_param\030* \001(\0132\033.ope" "caffe.SigmoidParameter\0225\n\rsoftmax_param\030"
"ncv_caffe.LossParameter\022-\n\005layer\030\001 \001(\0132\036" "\' \001(\0132\036.opencv_caffe.SoftmaxParameter\0221\n"
".opencv_caffe.V0LayerParameter\"\330\004\n\tLayer" "\013slice_param\030\037 \001(\0132\034.opencv_caffe.SliceP"
"Type\022\010\n\004NONE\020\000\022\n\n\006ABSVAL\020#\022\014\n\010ACCURACY\020\001" "arameter\022/\n\ntanh_param\030% \001(\0132\033.opencv_ca"
"\022\n\n\006ARGMAX\020\036\022\010\n\004BNLL\020\002\022\n\n\006CONCAT\020\003\022\024\n\020CO" "ffe.TanHParameter\0229\n\017threshold_param\030\031 \001"
"NTRASTIVE_LOSS\020%\022\017\n\013CONVOLUTION\020\004\022\010\n\004DAT" "(\0132 .opencv_caffe.ThresholdParameter\022<\n\021"
"A\020\005\022\021\n\rDECONVOLUTION\020\'\022\013\n\007DROPOUT\020\006\022\016\n\nD" "window_data_param\030\024 \001(\0132!.opencv_caffe.W"
"UMMY_DATA\020 \022\022\n\016EUCLIDEAN_LOSS\020\007\022\013\n\007ELTWI" "indowDataParameter\022>\n\017transform_param\030$ "
"SE\020\031\022\007\n\003EXP\020&\022\013\n\007FLATTEN\020\010\022\r\n\tHDF5_DATA\020" "\001(\0132%.opencv_caffe.TransformationParamet"
"\t\022\017\n\013HDF5_OUTPUT\020\n\022\016\n\nHINGE_LOSS\020\034\022\n\n\006IM" "er\022/\n\nloss_param\030* \001(\0132\033.opencv_caffe.Lo"
"2COL\020\013\022\016\n\nIMAGE_DATA\020\014\022\021\n\rINFOGAIN_LOSS\020" "ssParameter\022-\n\005layer\030\001 \001(\0132\036.opencv_caff"
"\r\022\021\n\rINNER_PRODUCT\020\016\022\007\n\003LRN\020\017\022\017\n\013MEMORY_" "e.V0LayerParameter\"\330\004\n\tLayerType\022\010\n\004NONE"
"DATA\020\035\022\035\n\031MULTINOMIAL_LOGISTIC_LOSS\020\020\022\007\n" "\020\000\022\n\n\006ABSVAL\020#\022\014\n\010ACCURACY\020\001\022\n\n\006ARGMAX\020\036"
"\003MVN\020\"\022\013\n\007POOLING\020\021\022\t\n\005POWER\020\032\022\010\n\004RELU\020\022" "\022\010\n\004BNLL\020\002\022\n\n\006CONCAT\020\003\022\024\n\020CONTRASTIVE_LO"
"\022\013\n\007SIGMOID\020\023\022\036\n\032SIGMOID_CROSS_ENTROPY_L" "SS\020%\022\017\n\013CONVOLUTION\020\004\022\010\n\004DATA\020\005\022\021\n\rDECON"
"OSS\020\033\022\013\n\007SILENCE\020$\022\013\n\007SOFTMAX\020\024\022\020\n\014SOFTM" "VOLUTION\020\'\022\013\n\007DROPOUT\020\006\022\016\n\nDUMMY_DATA\020 \022"
"AX_LOSS\020\025\022\t\n\005SPLIT\020\026\022\t\n\005SLICE\020!\022\010\n\004TANH\020" "\022\n\016EUCLIDEAN_LOSS\020\007\022\013\n\007ELTWISE\020\031\022\007\n\003EXP\020"
"\027\022\017\n\013WINDOW_DATA\020\030\022\r\n\tTHRESHOLD\020\037\"*\n\014Dim" "&\022\013\n\007FLATTEN\020\010\022\r\n\tHDF5_DATA\020\t\022\017\n\013HDF5_OU"
"CheckMode\022\n\n\006STRICT\020\000\022\016\n\nPERMISSIVE\020\001\"\240\010" "TPUT\020\n\022\016\n\nHINGE_LOSS\020\034\022\n\n\006IM2COL\020\013\022\016\n\nIM"
"\n\020V0LayerParameter\022\014\n\004name\030\001 \001(\t\022\014\n\004type" "AGE_DATA\020\014\022\021\n\rINFOGAIN_LOSS\020\r\022\021\n\rINNER_P"
"\030\002 \001(\t\022\022\n\nnum_output\030\003 \001(\r\022\026\n\010biasterm\030\004" "RODUCT\020\016\022\007\n\003LRN\020\017\022\017\n\013MEMORY_DATA\020\035\022\035\n\031MU"
" \001(\010:\004true\0224\n\rweight_filler\030\005 \001(\0132\035.open" "LTINOMIAL_LOGISTIC_LOSS\020\020\022\007\n\003MVN\020\"\022\013\n\007PO"
"cv_caffe.FillerParameter\0222\n\013bias_filler\030" "OLING\020\021\022\t\n\005POWER\020\032\022\010\n\004RELU\020\022\022\013\n\007SIGMOID\020"
"\006 \001(\0132\035.opencv_caffe.FillerParameter\022\016\n\003" "\023\022\036\n\032SIGMOID_CROSS_ENTROPY_LOSS\020\033\022\013\n\007SIL"
"pad\030\007 \001(\r:\0010\022\022\n\nkernelsize\030\010 \001(\r\022\020\n\005grou" "ENCE\020$\022\013\n\007SOFTMAX\020\024\022\020\n\014SOFTMAX_LOSS\020\025\022\t\n"
"p\030\t \001(\r:\0011\022\021\n\006stride\030\n \001(\r:\0011\022<\n\004pool\030\013 " "\005SPLIT\020\026\022\t\n\005SLICE\020!\022\010\n\004TANH\020\027\022\017\n\013WINDOW_"
"\001(\0162).opencv_caffe.V0LayerParameter.Pool" "DATA\020\030\022\r\n\tTHRESHOLD\020\037\"*\n\014DimCheckMode\022\n\n"
"Method:\003MAX\022\032\n\rdropout_ratio\030\014 \001(\002:\0030.5\022" "\006STRICT\020\000\022\016\n\nPERMISSIVE\020\001\"\240\010\n\020V0LayerPar"
"\025\n\nlocal_size\030\r \001(\r:\0015\022\020\n\005alpha\030\016 \001(\002:\0011" "ameter\022\014\n\004name\030\001 \001(\t\022\014\n\004type\030\002 \001(\t\022\022\n\nnu"
"\022\022\n\004beta\030\017 \001(\002:\0040.75\022\014\n\001k\030\026 \001(\002:\0011\022\016\n\006so" "m_output\030\003 \001(\r\022\026\n\010biasterm\030\004 \001(\010:\004true\0224"
"urce\030\020 \001(\t\022\020\n\005scale\030\021 \001(\002:\0011\022\020\n\010meanfile" "\n\rweight_filler\030\005 \001(\0132\035.opencv_caffe.Fil"
"\030\022 \001(\t\022\021\n\tbatchsize\030\023 \001(\r\022\023\n\010cropsize\030\024 " "lerParameter\0222\n\013bias_filler\030\006 \001(\0132\035.open"
"\001(\r:\0010\022\025\n\006mirror\030\025 \001(\010:\005false\022&\n\005blobs\0302" "cv_caffe.FillerParameter\022\016\n\003pad\030\007 \001(\r:\0010"
" \003(\0132\027.opencv_caffe.BlobProto\022\020\n\010blobs_l" "\022\022\n\nkernelsize\030\010 \001(\r\022\020\n\005group\030\t \001(\r:\0011\022\021"
"r\0303 \003(\002\022\024\n\014weight_decay\0304 \003(\002\022\024\n\trand_sk" "\n\006stride\030\n \001(\r:\0011\022<\n\004pool\030\013 \001(\0162).opencv"
"ip\0305 \001(\r:\0010\022\035\n\020det_fg_threshold\0306 \001(\002:\0030" "_caffe.V0LayerParameter.PoolMethod:\003MAX\022"
".5\022\035\n\020det_bg_threshold\0307 \001(\002:\0030.5\022\035\n\017det" "\032\n\rdropout_ratio\030\014 \001(\002:\0030.5\022\025\n\nlocal_siz"
"_fg_fraction\0308 \001(\002:\0040.25\022\032\n\017det_context_" "e\030\r \001(\r:\0015\022\020\n\005alpha\030\016 \001(\002:\0011\022\022\n\004beta\030\017 \001"
"pad\030: \001(\r:\0010\022\033\n\rdet_crop_mode\030; \001(\t:\004war" "(\002:\0040.75\022\014\n\001k\030\026 \001(\002:\0011\022\016\n\006source\030\020 \001(\t\022\020"
"p\022\022\n\007new_num\030< \001(\005:\0010\022\027\n\014new_channels\030= " "\n\005scale\030\021 \001(\002:\0011\022\020\n\010meanfile\030\022 \001(\t\022\021\n\tba"
"\001(\005:\0010\022\025\n\nnew_height\030> \001(\005:\0010\022\024\n\tnew_wid" "tchsize\030\023 \001(\r\022\023\n\010cropsize\030\024 \001(\r:\0010\022\025\n\006mi"
"th\030\? \001(\005:\0010\022\035\n\016shuffle_images\030@ \001(\010:\005fal" "rror\030\025 \001(\010:\005false\022&\n\005blobs\0302 \003(\0132\027.openc"
"se\022\025\n\nconcat_dim\030A \001(\r:\0011\022=\n\021hdf5_output" "v_caffe.BlobProto\022\020\n\010blobs_lr\0303 \003(\002\022\024\n\014w"
"_param\030\351\007 \001(\0132!.opencv_caffe.HDF5OutputP" "eight_decay\0304 \003(\002\022\024\n\trand_skip\0305 \001(\r:\0010\022"
"arameter\".\n\nPoolMethod\022\007\n\003MAX\020\000\022\007\n\003AVE\020\001" "\035\n\020det_fg_threshold\0306 \001(\002:\0030.5\022\035\n\020det_bg"
"\022\016\n\nSTOCHASTIC\020\002\"^\n\016PReLUParameter\022-\n\006fi" "_threshold\0307 \001(\002:\0030.5\022\035\n\017det_fg_fraction"
"ller\030\001 \001(\0132\035.opencv_caffe.FillerParamete" "\0308 \001(\002:\0040.25\022\032\n\017det_context_pad\030: \001(\r:\0010"
"r\022\035\n\016channel_shared\030\002 \001(\010:\005false\"\207\001\n\016Nor" "\022\033\n\rdet_crop_mode\030; \001(\t:\004warp\022\022\n\007new_num"
"malizedBBox\022\014\n\004xmin\030\001 \001(\002\022\014\n\004ymin\030\002 \001(\002\022" "\030< \001(\005:\0010\022\027\n\014new_channels\030= \001(\005:\0010\022\025\n\nne"
"\014\n\004xmax\030\003 \001(\002\022\014\n\004ymax\030\004 \001(\002\022\r\n\005label\030\005 \001" "w_height\030> \001(\005:\0010\022\024\n\tnew_width\030\? \001(\005:\0010\022"
"(\005\022\021\n\tdifficult\030\006 \001(\010\022\r\n\005score\030\007 \001(\002\022\014\n\004" "\035\n\016shuffle_images\030@ \001(\010:\005false\022\025\n\nconcat"
"size\030\010 \001(\002\"Y\n\023ROIPoolingParameter\022\023\n\010poo" "_dim\030A \001(\r:\0011\022=\n\021hdf5_output_param\030\351\007 \001("
"led_h\030\001 \001(\r:\0010\022\023\n\010pooled_w\030\002 \001(\r:\0010\022\030\n\rs" "\0132!.opencv_caffe.HDF5OutputParameter\".\n\n"
"patial_scale\030\003 \001(\002:\0011\"\310\001\n\021ProposalParame" "PoolMethod\022\007\n\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\nSTOCHAST"
"ter\022\027\n\013feat_stride\030\001 \001(\r:\00216\022\025\n\tbase_siz" "IC\020\002\"^\n\016PReLUParameter\022-\n\006filler\030\001 \001(\0132\035"
"e\030\002 \001(\r:\00216\022\024\n\010min_size\030\003 \001(\r:\00216\022\r\n\005rat" ".opencv_caffe.FillerParameter\022\035\n\016channel"
"io\030\004 \003(\002\022\r\n\005scale\030\005 \003(\002\022\032\n\014pre_nms_topn\030" "_shared\030\002 \001(\010:\005false\"\207\001\n\016NormalizedBBox\022"
"\006 \001(\r:\0046000\022\032\n\rpost_nms_topn\030\007 \001(\r:\003300\022" "\014\n\004xmin\030\001 \001(\002\022\014\n\004ymin\030\002 \001(\002\022\014\n\004xmax\030\003 \001("
"\027\n\nnms_thresh\030\010 \001(\002:\0030.7\"V\n\025PSROIPooling" "\002\022\014\n\004ymax\030\004 \001(\002\022\r\n\005label\030\005 \001(\005\022\021\n\tdiffic"
"Parameter\022\025\n\rspatial_scale\030\001 \002(\002\022\022\n\noutp" "ult\030\006 \001(\010\022\r\n\005score\030\007 \001(\002\022\014\n\004size\030\010 \001(\002\"Y"
"ut_dim\030\002 \002(\005\022\022\n\ngroup_size\030\003 \002(\005*=\n\004Type" "\n\023ROIPoolingParameter\022\023\n\010pooled_h\030\001 \001(\r:"
"\022\n\n\006DOUBLE\020\000\022\t\n\005FLOAT\020\001\022\013\n\007FLOAT16\020\002\022\007\n\003" "\0010\022\023\n\010pooled_w\030\002 \001(\r:\0010\022\030\n\rspatial_scale"
"INT\020\003\022\010\n\004UINT\020\004*\034\n\005Phase\022\t\n\005TRAIN\020\000\022\010\n\004T" "\030\003 \001(\002:\0011\"\310\001\n\021ProposalParameter\022\027\n\013feat_"
"EST\020\001" "stride\030\001 \001(\r:\00216\022\025\n\tbase_size\030\002 \001(\r:\00216\022"
"\024\n\010min_size\030\003 \001(\r:\00216\022\r\n\005ratio\030\004 \003(\002\022\r\n\005"
"scale\030\005 \003(\002\022\032\n\014pre_nms_topn\030\006 \001(\r:\0046000\022"
"\032\n\rpost_nms_topn\030\007 \001(\r:\003300\022\027\n\nnms_thres"
"h\030\010 \001(\002:\0030.7\"V\n\025PSROIPoolingParameter\022\025\n"
"\rspatial_scale\030\001 \002(\002\022\022\n\noutput_dim\030\002 \002(\005"
"\022\022\n\ngroup_size\030\003 \002(\005*=\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\004UIN"
"T\020\004*\034\n\005Phase\022\t\n\005TRAIN\020\000\022\010\n\004TEST\020\001"
}; };
::google::protobuf::DescriptorPool::InternalAddGeneratedFile( ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
descriptor, 18805); descriptor, 18833);
::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
"opencv-caffe.proto", &protobuf_RegisterTypes); "opencv-caffe.proto", &protobuf_RegisterTypes);
} }
@ -18451,6 +18453,7 @@ void BatchNormParameter::InitAsDefaultInstance() {
const int BatchNormParameter::kUseGlobalStatsFieldNumber; const int BatchNormParameter::kUseGlobalStatsFieldNumber;
const int BatchNormParameter::kMovingAverageFractionFieldNumber; const int BatchNormParameter::kMovingAverageFractionFieldNumber;
const int BatchNormParameter::kEpsFieldNumber; const int BatchNormParameter::kEpsFieldNumber;
const int BatchNormParameter::kScaleBiasFieldNumber;
#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 #endif // !defined(_MSC_VER) || _MSC_VER >= 1900
BatchNormParameter::BatchNormParameter() BatchNormParameter::BatchNormParameter()
@ -18475,7 +18478,9 @@ BatchNormParameter::BatchNormParameter(const BatchNormParameter& from)
void BatchNormParameter::SharedCtor() { void BatchNormParameter::SharedCtor() {
_cached_size_ = 0; _cached_size_ = 0;
use_global_stats_ = false; ::memset(&use_global_stats_, 0, static_cast<size_t>(
reinterpret_cast<char*>(&scale_bias_) -
reinterpret_cast<char*>(&use_global_stats_)) + sizeof(scale_bias_));
moving_average_fraction_ = 0.999f; moving_average_fraction_ = 0.999f;
eps_ = 1e-05f; eps_ = 1e-05f;
} }
@ -18517,9 +18522,11 @@ void BatchNormParameter::Clear() {
// Prevent compiler warnings about cached_has_bits being unused // Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits; (void) cached_has_bits;
::memset(&use_global_stats_, 0, static_cast<size_t>(
reinterpret_cast<char*>(&scale_bias_) -
reinterpret_cast<char*>(&use_global_stats_)) + sizeof(scale_bias_));
cached_has_bits = _has_bits_[0]; cached_has_bits = _has_bits_[0];
if (cached_has_bits & 7u) { if (cached_has_bits & 12u) {
use_global_stats_ = false;
moving_average_fraction_ = 0.999f; moving_average_fraction_ = 0.999f;
eps_ = 1e-05f; eps_ = 1e-05f;
} }
@ -18579,6 +18586,20 @@ bool BatchNormParameter::MergePartialFromCodedStream(
break; break;
} }
// optional bool scale_bias = 7 [default = false];
case 7: {
if (static_cast< ::google::protobuf::uint8>(tag) ==
static_cast< ::google::protobuf::uint8>(56u /* 56 & 0xFF */)) {
set_has_scale_bias();
DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
input, &scale_bias_)));
} else {
goto handle_unusual;
}
break;
}
default: { default: {
handle_unusual: handle_unusual:
if (tag == 0) { if (tag == 0) {
@ -18612,15 +18633,20 @@ void BatchNormParameter::SerializeWithCachedSizes(
} }
// optional float moving_average_fraction = 2 [default = 0.999]; // optional float moving_average_fraction = 2 [default = 0.999];
if (cached_has_bits & 0x00000002u) { if (cached_has_bits & 0x00000004u) {
::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->moving_average_fraction(), output); ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->moving_average_fraction(), output);
} }
// optional float eps = 3 [default = 1e-05]; // optional float eps = 3 [default = 1e-05];
if (cached_has_bits & 0x00000004u) { if (cached_has_bits & 0x00000008u) {
::google::protobuf::internal::WireFormatLite::WriteFloat(3, this->eps(), output); ::google::protobuf::internal::WireFormatLite::WriteFloat(3, this->eps(), output);
} }
// optional bool scale_bias = 7 [default = false];
if (cached_has_bits & 0x00000002u) {
::google::protobuf::internal::WireFormatLite::WriteBool(7, this->scale_bias(), output);
}
if (_internal_metadata_.have_unknown_fields()) { if (_internal_metadata_.have_unknown_fields()) {
::google::protobuf::internal::WireFormat::SerializeUnknownFields( ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
_internal_metadata_.unknown_fields(), output); _internal_metadata_.unknown_fields(), output);
@ -18642,15 +18668,20 @@ void BatchNormParameter::SerializeWithCachedSizes(
} }
// optional float moving_average_fraction = 2 [default = 0.999]; // optional float moving_average_fraction = 2 [default = 0.999];
if (cached_has_bits & 0x00000002u) { if (cached_has_bits & 0x00000004u) {
target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->moving_average_fraction(), target); target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->moving_average_fraction(), target);
} }
// optional float eps = 3 [default = 1e-05]; // optional float eps = 3 [default = 1e-05];
if (cached_has_bits & 0x00000004u) { if (cached_has_bits & 0x00000008u) {
target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(3, this->eps(), target); target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(3, this->eps(), target);
} }
// optional bool scale_bias = 7 [default = false];
if (cached_has_bits & 0x00000002u) {
target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->scale_bias(), target);
}
if (_internal_metadata_.have_unknown_fields()) { if (_internal_metadata_.have_unknown_fields()) {
target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
_internal_metadata_.unknown_fields(), target); _internal_metadata_.unknown_fields(), target);
@ -18668,12 +18699,17 @@ size_t BatchNormParameter::ByteSizeLong() const {
::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
_internal_metadata_.unknown_fields()); _internal_metadata_.unknown_fields());
} }
if (_has_bits_[0 / 32] & 7u) { if (_has_bits_[0 / 32] & 15u) {
// optional bool use_global_stats = 1; // optional bool use_global_stats = 1;
if (has_use_global_stats()) { if (has_use_global_stats()) {
total_size += 1 + 1; total_size += 1 + 1;
} }
// optional bool scale_bias = 7 [default = false];
if (has_scale_bias()) {
total_size += 1 + 1;
}
// optional float moving_average_fraction = 2 [default = 0.999]; // optional float moving_average_fraction = 2 [default = 0.999];
if (has_moving_average_fraction()) { if (has_moving_average_fraction()) {
total_size += 1 + 4; total_size += 1 + 4;
@ -18715,14 +18751,17 @@ void BatchNormParameter::MergeFrom(const BatchNormParameter& from) {
(void) cached_has_bits; (void) cached_has_bits;
cached_has_bits = from._has_bits_[0]; cached_has_bits = from._has_bits_[0];
if (cached_has_bits & 7u) { if (cached_has_bits & 15u) {
if (cached_has_bits & 0x00000001u) { if (cached_has_bits & 0x00000001u) {
use_global_stats_ = from.use_global_stats_; use_global_stats_ = from.use_global_stats_;
} }
if (cached_has_bits & 0x00000002u) { if (cached_has_bits & 0x00000002u) {
moving_average_fraction_ = from.moving_average_fraction_; scale_bias_ = from.scale_bias_;
} }
if (cached_has_bits & 0x00000004u) { if (cached_has_bits & 0x00000004u) {
moving_average_fraction_ = from.moving_average_fraction_;
}
if (cached_has_bits & 0x00000008u) {
eps_ = from.eps_; eps_ = from.eps_;
} }
_has_bits_[0] |= cached_has_bits; _has_bits_[0] |= cached_has_bits;
@ -18754,6 +18793,7 @@ void BatchNormParameter::Swap(BatchNormParameter* other) {
void BatchNormParameter::InternalSwap(BatchNormParameter* other) { void BatchNormParameter::InternalSwap(BatchNormParameter* other) {
using std::swap; using std::swap;
swap(use_global_stats_, other->use_global_stats_); swap(use_global_stats_, other->use_global_stats_);
swap(scale_bias_, other->scale_bias_);
swap(moving_average_fraction_, other->moving_average_fraction_); swap(moving_average_fraction_, other->moving_average_fraction_);
swap(eps_, other->eps_); swap(eps_, other->eps_);
swap(_has_bits_[0], other->_has_bits_[0]); swap(_has_bits_[0], other->_has_bits_[0]);

@ -5958,6 +5958,13 @@ class BatchNormParameter : public ::google::protobuf::Message /* @@protoc_insert
bool use_global_stats() const; bool use_global_stats() const;
void set_use_global_stats(bool value); void set_use_global_stats(bool value);
// optional bool scale_bias = 7 [default = false];
bool has_scale_bias() const;
void clear_scale_bias();
static const int kScaleBiasFieldNumber = 7;
bool scale_bias() const;
void set_scale_bias(bool value);
// optional float moving_average_fraction = 2 [default = 0.999]; // optional float moving_average_fraction = 2 [default = 0.999];
bool has_moving_average_fraction() const; bool has_moving_average_fraction() const;
void clear_moving_average_fraction(); void clear_moving_average_fraction();
@ -5980,11 +5987,14 @@ class BatchNormParameter : public ::google::protobuf::Message /* @@protoc_insert
void clear_has_moving_average_fraction(); void clear_has_moving_average_fraction();
void set_has_eps(); void set_has_eps();
void clear_has_eps(); void clear_has_eps();
void set_has_scale_bias();
void clear_has_scale_bias();
::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
::google::protobuf::internal::HasBits<1> _has_bits_; ::google::protobuf::internal::HasBits<1> _has_bits_;
mutable int _cached_size_; mutable int _cached_size_;
bool use_global_stats_; bool use_global_stats_;
bool scale_bias_;
float moving_average_fraction_; float moving_average_fraction_;
float eps_; float eps_;
friend struct ::protobuf_opencv_2dcaffe_2eproto::TableStruct; friend struct ::protobuf_opencv_2dcaffe_2eproto::TableStruct;
@ -22720,13 +22730,13 @@ inline void BatchNormParameter::set_use_global_stats(bool value) {
// optional float moving_average_fraction = 2 [default = 0.999]; // optional float moving_average_fraction = 2 [default = 0.999];
inline bool BatchNormParameter::has_moving_average_fraction() const { inline bool BatchNormParameter::has_moving_average_fraction() const {
return (_has_bits_[0] & 0x00000002u) != 0; return (_has_bits_[0] & 0x00000004u) != 0;
} }
inline void BatchNormParameter::set_has_moving_average_fraction() { inline void BatchNormParameter::set_has_moving_average_fraction() {
_has_bits_[0] |= 0x00000002u; _has_bits_[0] |= 0x00000004u;
} }
inline void BatchNormParameter::clear_has_moving_average_fraction() { inline void BatchNormParameter::clear_has_moving_average_fraction() {
_has_bits_[0] &= ~0x00000002u; _has_bits_[0] &= ~0x00000004u;
} }
inline void BatchNormParameter::clear_moving_average_fraction() { inline void BatchNormParameter::clear_moving_average_fraction() {
moving_average_fraction_ = 0.999f; moving_average_fraction_ = 0.999f;
@ -22744,13 +22754,13 @@ inline void BatchNormParameter::set_moving_average_fraction(float value) {
// optional float eps = 3 [default = 1e-05]; // optional float eps = 3 [default = 1e-05];
inline bool BatchNormParameter::has_eps() const { inline bool BatchNormParameter::has_eps() const {
return (_has_bits_[0] & 0x00000004u) != 0; return (_has_bits_[0] & 0x00000008u) != 0;
} }
inline void BatchNormParameter::set_has_eps() { inline void BatchNormParameter::set_has_eps() {
_has_bits_[0] |= 0x00000004u; _has_bits_[0] |= 0x00000008u;
} }
inline void BatchNormParameter::clear_has_eps() { inline void BatchNormParameter::clear_has_eps() {
_has_bits_[0] &= ~0x00000004u; _has_bits_[0] &= ~0x00000008u;
} }
inline void BatchNormParameter::clear_eps() { inline void BatchNormParameter::clear_eps() {
eps_ = 1e-05f; eps_ = 1e-05f;
@ -22766,6 +22776,30 @@ inline void BatchNormParameter::set_eps(float value) {
// @@protoc_insertion_point(field_set:opencv_caffe.BatchNormParameter.eps) // @@protoc_insertion_point(field_set:opencv_caffe.BatchNormParameter.eps)
} }
// optional bool scale_bias = 7 [default = false];
inline bool BatchNormParameter::has_scale_bias() const {
return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void BatchNormParameter::set_has_scale_bias() {
_has_bits_[0] |= 0x00000002u;
}
inline void BatchNormParameter::clear_has_scale_bias() {
_has_bits_[0] &= ~0x00000002u;
}
inline void BatchNormParameter::clear_scale_bias() {
scale_bias_ = false;
clear_has_scale_bias();
}
inline bool BatchNormParameter::scale_bias() const {
// @@protoc_insertion_point(field_get:opencv_caffe.BatchNormParameter.scale_bias)
return scale_bias_;
}
inline void BatchNormParameter::set_scale_bias(bool value) {
set_has_scale_bias();
scale_bias_ = value;
// @@protoc_insertion_point(field_set:opencv_caffe.BatchNormParameter.scale_bias)
}
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// BiasParameter // BiasParameter

@ -672,6 +672,8 @@ message BatchNormParameter {
// Small value to add to the variance estimate so that we don't divide by // Small value to add to the variance estimate so that we don't divide by
// zero. // zero.
optional float eps = 3 [default = 1e-5]; optional float eps = 3 [default = 1e-5];
// It true, scale and add biases. Source: https://github.com/NVIDIA/caffe/
optional bool scale_bias = 7 [default = false];
} }
message BiasParameter { message BiasParameter {

@ -32,6 +32,8 @@ public:
hasWeights = params.get<bool>("has_weight", false); hasWeights = params.get<bool>("has_weight", false);
hasBias = params.get<bool>("has_bias", false); hasBias = params.get<bool>("has_bias", false);
if(params.get<bool>("scale_bias", false))
hasWeights = hasBias = true;
epsilon = params.get<float>("eps", 1E-5); epsilon = params.get<float>("eps", 1E-5);
size_t n = blobs[0].total(); size_t n = blobs[0].total();
@ -47,8 +49,8 @@ public:
varMeanScale = 1/varMeanScale; varMeanScale = 1/varMeanScale;
} }
const int weightsBlobIndex = 2; const int biasBlobIndex = blobs.size() - 1;
const int biasBlobIndex = weightsBlobIndex + hasWeights; const int weightsBlobIndex = biasBlobIndex - hasBias;
if( hasWeights ) if( hasWeights )
{ {

Loading…
Cancel
Save