mirror of
https://github.com/Tencent/ncnn.git
synced 2026-10-28 20:12:35 +08:00
convolution pad_value param
This commit is contained in:
@@ -388,7 +388,7 @@ int Convolution_arm::forwardDilation(const Mat& bottom_blob, Mat& top_blob, conv
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, pad_value, opt_b);
|
||||
if (bottom_blob_bordered.empty())
|
||||
return -100;
|
||||
|
||||
@@ -403,7 +403,7 @@ int Convolution_arm::forwardDilation(const Mat& bottom_blob, Mat& top_blob, conv
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
if (bottom_blob_bordered.empty())
|
||||
return -100;
|
||||
}
|
||||
@@ -419,7 +419,7 @@ int Convolution_arm::forwardDilation(const Mat& bottom_blob, Mat& top_blob, conv
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
if (bottom_blob_bordered.empty())
|
||||
return -100;
|
||||
}
|
||||
@@ -521,7 +521,7 @@ int Convolution_arm::forward(const Mat& bottom_blob, Mat& top_blob, const Option
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
else if (pad_left == -233 && pad_right == -233 && pad_top == -233 && pad_bottom == -233)
|
||||
{
|
||||
@@ -531,7 +531,7 @@ int Convolution_arm::forward(const Mat& bottom_blob, Mat& top_blob, const Option
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
}
|
||||
else if (pad_left == -234 && pad_right == -234 && pad_top == -234 && pad_bottom == -234)
|
||||
@@ -542,7 +542,7 @@ int Convolution_arm::forward(const Mat& bottom_blob, Mat& top_blob, const Option
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
}
|
||||
if (bottom_blob_bordered.empty())
|
||||
@@ -1027,7 +1027,7 @@ int Convolution_arm::forward(const Mat& bottom_blob, Mat& top_blob, const Option
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
else if (pad_left == -233 && pad_right == -233 && pad_top == -233 && pad_bottom == -233)
|
||||
{
|
||||
@@ -1037,7 +1037,7 @@ int Convolution_arm::forward(const Mat& bottom_blob, Mat& top_blob, const Option
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
}
|
||||
else if (pad_left == -234 && pad_right == -234 && pad_top == -234 && pad_bottom == -234)
|
||||
@@ -1048,7 +1048,7 @@ int Convolution_arm::forward(const Mat& bottom_blob, Mat& top_blob, const Option
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
}
|
||||
if (bottom_blob_bordered.empty())
|
||||
|
||||
@@ -439,7 +439,7 @@ int ConvolutionDepthWise_arm::forward(const Mat& bottom_blob, Mat& top_blob, con
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
else if (pad_left == -233 && pad_right == -233 && pad_top == -233 && pad_bottom == -233)
|
||||
{
|
||||
@@ -449,7 +449,7 @@ int ConvolutionDepthWise_arm::forward(const Mat& bottom_blob, Mat& top_blob, con
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
}
|
||||
else if (pad_left == -234 && pad_right == -234 && pad_top == -234 && pad_bottom == -234)
|
||||
@@ -460,7 +460,7 @@ int ConvolutionDepthWise_arm::forward(const Mat& bottom_blob, Mat& top_blob, con
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
}
|
||||
if (bottom_blob_bordered.empty())
|
||||
|
||||
@@ -42,6 +42,7 @@ int Convolution::load_param(const ParamDict& pd)
|
||||
pad_right = pd.get(15, pad_left);
|
||||
pad_top = pd.get(14, pad_left);
|
||||
pad_bottom = pd.get(16, pad_top);
|
||||
pad_value = pd.get(18, 0.f);
|
||||
bias_term = pd.get(5, 0);
|
||||
weight_data_size = pd.get(6, 0);
|
||||
int8_scale_term = pd.get(8, 0);
|
||||
@@ -335,7 +336,7 @@ int Convolution::forward(const Mat& bottom_blob, Mat& top_blob, const Option& op
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
else if (pad_left == -233 && pad_right == -233 && pad_top == -233 && pad_bottom == -233)
|
||||
{
|
||||
@@ -346,7 +347,7 @@ int Convolution::forward(const Mat& bottom_blob, Mat& top_blob, const Option& op
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
}
|
||||
else if (pad_left == -234 && pad_right == -234 && pad_top == -234 && pad_bottom == -234)
|
||||
@@ -358,7 +359,7 @@ int Convolution::forward(const Mat& bottom_blob, Mat& top_blob, const Option& op
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
}
|
||||
if (bottom_blob_bordered.empty())
|
||||
|
||||
@@ -48,6 +48,7 @@ public:
|
||||
int pad_right;
|
||||
int pad_top;
|
||||
int pad_bottom;
|
||||
float pad_value;
|
||||
int bias_term;
|
||||
|
||||
int weight_data_size;
|
||||
|
||||
@@ -41,6 +41,7 @@ int ConvolutionDepthWise::load_param(const ParamDict& pd)
|
||||
pad_right = pd.get(15, pad_left);
|
||||
pad_top = pd.get(14, pad_left);
|
||||
pad_bottom = pd.get(16, pad_top);
|
||||
pad_value = pd.get(18, 0.f);
|
||||
bias_term = pd.get(5, 0);
|
||||
weight_data_size = pd.get(6, 0);
|
||||
group = pd.get(7, 1);
|
||||
@@ -328,7 +329,7 @@ int ConvolutionDepthWise::forward(const Mat& bottom_blob, Mat& top_blob, const O
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
else if (pad_left == -233 && pad_right == -233 && pad_top == -233 && pad_bottom == -233)
|
||||
{
|
||||
@@ -339,7 +340,7 @@ int ConvolutionDepthWise::forward(const Mat& bottom_blob, Mat& top_blob, const O
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
}
|
||||
else if (pad_left == -234 && pad_right == -234 && pad_top == -234 && pad_bottom == -234)
|
||||
@@ -351,7 +352,7 @@ int ConvolutionDepthWise::forward(const Mat& bottom_blob, Mat& top_blob, const O
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
}
|
||||
}
|
||||
if (bottom_blob_bordered.empty())
|
||||
|
||||
@@ -48,6 +48,7 @@ public:
|
||||
int pad_right;
|
||||
int pad_top;
|
||||
int pad_bottom;
|
||||
float pad_value;
|
||||
int bias_term;
|
||||
|
||||
int weight_data_size;
|
||||
|
||||
@@ -57,7 +57,7 @@ int Convolution_vulkan::create_pipeline(const Option& opt)
|
||||
pd.set(2, pad_left);
|
||||
pd.set(3, pad_right);
|
||||
pd.set(4, 0);
|
||||
pd.set(5, 0.f);
|
||||
pd.set(5, pad_value);
|
||||
|
||||
padding->load_param(pd);
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ int ConvolutionDepthWise_vulkan::create_pipeline(const Option& opt)
|
||||
pd.set(2, pad_left);
|
||||
pd.set(3, pad_right);
|
||||
pd.set(4, 0);
|
||||
pd.set(5, 0.f);
|
||||
pd.set(5, pad_value);
|
||||
|
||||
padding->load_param(pd);
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ int Convolution_x86::forwardDilation(const Mat& bottom_blob, Mat& top_blob, conv
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, pad_value, opt_b);
|
||||
if (bottom_blob_bordered.empty())
|
||||
return -100;
|
||||
|
||||
@@ -166,7 +166,7 @@ int Convolution_x86::forwardDilation(const Mat& bottom_blob, Mat& top_blob, conv
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
if (bottom_blob_bordered.empty())
|
||||
return -100;
|
||||
}
|
||||
@@ -182,7 +182,7 @@ int Convolution_x86::forwardDilation(const Mat& bottom_blob, Mat& top_blob, conv
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
if (bottom_blob_bordered.empty())
|
||||
return -100;
|
||||
}
|
||||
@@ -496,7 +496,7 @@ int Convolution_x86::forward(const Mat& bottom_blob, Mat& top_blob, const Option
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, pad_value, opt_b);
|
||||
if (bottom_blob_bordered.empty())
|
||||
return -100;
|
||||
|
||||
@@ -511,7 +511,7 @@ int Convolution_x86::forward(const Mat& bottom_blob, Mat& top_blob, const Option
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
if (bottom_blob_bordered.empty())
|
||||
return -100;
|
||||
}
|
||||
@@ -527,7 +527,7 @@ int Convolution_x86::forward(const Mat& bottom_blob, Mat& top_blob, const Option
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
if (bottom_blob_bordered.empty())
|
||||
return -100;
|
||||
}
|
||||
|
||||
@@ -236,7 +236,7 @@ int ConvolutionDepthWise_x86::forward(const Mat& bottom_blob, Mat& top_blob, con
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, pad_top, pad_bottom, pad_left, pad_right, BORDER_CONSTANT, pad_value, opt_b);
|
||||
if (bottom_blob_bordered.empty())
|
||||
return -100;
|
||||
|
||||
@@ -251,7 +251,7 @@ int ConvolutionDepthWise_x86::forward(const Mat& bottom_blob, Mat& top_blob, con
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad / 2, hpad - hpad / 2, wpad / 2, wpad - wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
if (bottom_blob_bordered.empty())
|
||||
return -100;
|
||||
}
|
||||
@@ -267,7 +267,7 @@ int ConvolutionDepthWise_x86::forward(const Mat& bottom_blob, Mat& top_blob, con
|
||||
{
|
||||
Option opt_b = opt;
|
||||
opt_b.blob_allocator = opt.workspace_allocator;
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, 0.f, opt_b);
|
||||
copy_make_border(bottom_blob_unbordered, bottom_blob_bordered, hpad - hpad / 2, hpad / 2, wpad - wpad / 2, wpad / 2, BORDER_CONSTANT, pad_value, opt_b);
|
||||
if (bottom_blob_bordered.empty())
|
||||
return -100;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user