mirror of
https://github.com/opencv/opencv.git
synced 2024-12-22 23:28:00 +08:00
613 lines
8.3 KiB
Plaintext
613 lines
8.3 KiB
Plaintext
#
|
|
# This prototxt is based on voc-fcn8s/val.prototxt file from
|
|
# https://github.com/shelhamer/fcn.berkeleyvision.org, which is distributed under
|
|
# Caffe (BSD) license:
|
|
# http://caffe.berkeleyvision.org/model_zoo.html#bvlc-model-license
|
|
#
|
|
name: "voc-fcn8s"
|
|
input: "data"
|
|
input_dim: 1
|
|
input_dim: 3
|
|
input_dim: 500
|
|
input_dim: 500
|
|
layer {
|
|
name: "conv1_1"
|
|
type: "Convolution"
|
|
bottom: "data"
|
|
top: "conv1_1"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 64
|
|
pad: 100
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu1_1"
|
|
type: "ReLU"
|
|
bottom: "conv1_1"
|
|
top: "conv1_1"
|
|
}
|
|
layer {
|
|
name: "conv1_2"
|
|
type: "Convolution"
|
|
bottom: "conv1_1"
|
|
top: "conv1_2"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 64
|
|
pad: 1
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu1_2"
|
|
type: "ReLU"
|
|
bottom: "conv1_2"
|
|
top: "conv1_2"
|
|
}
|
|
layer {
|
|
name: "pool1"
|
|
type: "Pooling"
|
|
bottom: "conv1_2"
|
|
top: "pool1"
|
|
pooling_param {
|
|
pool: MAX
|
|
kernel_size: 2
|
|
stride: 2
|
|
}
|
|
}
|
|
layer {
|
|
name: "conv2_1"
|
|
type: "Convolution"
|
|
bottom: "pool1"
|
|
top: "conv2_1"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 128
|
|
pad: 1
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu2_1"
|
|
type: "ReLU"
|
|
bottom: "conv2_1"
|
|
top: "conv2_1"
|
|
}
|
|
layer {
|
|
name: "conv2_2"
|
|
type: "Convolution"
|
|
bottom: "conv2_1"
|
|
top: "conv2_2"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 128
|
|
pad: 1
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu2_2"
|
|
type: "ReLU"
|
|
bottom: "conv2_2"
|
|
top: "conv2_2"
|
|
}
|
|
layer {
|
|
name: "pool2"
|
|
type: "Pooling"
|
|
bottom: "conv2_2"
|
|
top: "pool2"
|
|
pooling_param {
|
|
pool: MAX
|
|
kernel_size: 2
|
|
stride: 2
|
|
}
|
|
}
|
|
layer {
|
|
name: "conv3_1"
|
|
type: "Convolution"
|
|
bottom: "pool2"
|
|
top: "conv3_1"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 256
|
|
pad: 1
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu3_1"
|
|
type: "ReLU"
|
|
bottom: "conv3_1"
|
|
top: "conv3_1"
|
|
}
|
|
layer {
|
|
name: "conv3_2"
|
|
type: "Convolution"
|
|
bottom: "conv3_1"
|
|
top: "conv3_2"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 256
|
|
pad: 1
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu3_2"
|
|
type: "ReLU"
|
|
bottom: "conv3_2"
|
|
top: "conv3_2"
|
|
}
|
|
layer {
|
|
name: "conv3_3"
|
|
type: "Convolution"
|
|
bottom: "conv3_2"
|
|
top: "conv3_3"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 256
|
|
pad: 1
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu3_3"
|
|
type: "ReLU"
|
|
bottom: "conv3_3"
|
|
top: "conv3_3"
|
|
}
|
|
layer {
|
|
name: "pool3"
|
|
type: "Pooling"
|
|
bottom: "conv3_3"
|
|
top: "pool3"
|
|
pooling_param {
|
|
pool: MAX
|
|
kernel_size: 2
|
|
stride: 2
|
|
}
|
|
}
|
|
layer {
|
|
name: "conv4_1"
|
|
type: "Convolution"
|
|
bottom: "pool3"
|
|
top: "conv4_1"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 512
|
|
pad: 1
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu4_1"
|
|
type: "ReLU"
|
|
bottom: "conv4_1"
|
|
top: "conv4_1"
|
|
}
|
|
layer {
|
|
name: "conv4_2"
|
|
type: "Convolution"
|
|
bottom: "conv4_1"
|
|
top: "conv4_2"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 512
|
|
pad: 1
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu4_2"
|
|
type: "ReLU"
|
|
bottom: "conv4_2"
|
|
top: "conv4_2"
|
|
}
|
|
layer {
|
|
name: "conv4_3"
|
|
type: "Convolution"
|
|
bottom: "conv4_2"
|
|
top: "conv4_3"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 512
|
|
pad: 1
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu4_3"
|
|
type: "ReLU"
|
|
bottom: "conv4_3"
|
|
top: "conv4_3"
|
|
}
|
|
layer {
|
|
name: "pool4"
|
|
type: "Pooling"
|
|
bottom: "conv4_3"
|
|
top: "pool4"
|
|
pooling_param {
|
|
pool: MAX
|
|
kernel_size: 2
|
|
stride: 2
|
|
}
|
|
}
|
|
layer {
|
|
name: "conv5_1"
|
|
type: "Convolution"
|
|
bottom: "pool4"
|
|
top: "conv5_1"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 512
|
|
pad: 1
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu5_1"
|
|
type: "ReLU"
|
|
bottom: "conv5_1"
|
|
top: "conv5_1"
|
|
}
|
|
layer {
|
|
name: "conv5_2"
|
|
type: "Convolution"
|
|
bottom: "conv5_1"
|
|
top: "conv5_2"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 512
|
|
pad: 1
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu5_2"
|
|
type: "ReLU"
|
|
bottom: "conv5_2"
|
|
top: "conv5_2"
|
|
}
|
|
layer {
|
|
name: "conv5_3"
|
|
type: "Convolution"
|
|
bottom: "conv5_2"
|
|
top: "conv5_3"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 512
|
|
pad: 1
|
|
kernel_size: 3
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu5_3"
|
|
type: "ReLU"
|
|
bottom: "conv5_3"
|
|
top: "conv5_3"
|
|
}
|
|
layer {
|
|
name: "pool5"
|
|
type: "Pooling"
|
|
bottom: "conv5_3"
|
|
top: "pool5"
|
|
pooling_param {
|
|
pool: MAX
|
|
kernel_size: 2
|
|
stride: 2
|
|
}
|
|
}
|
|
layer {
|
|
name: "fc6"
|
|
type: "Convolution"
|
|
bottom: "pool5"
|
|
top: "fc6"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 4096
|
|
pad: 0
|
|
kernel_size: 7
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu6"
|
|
type: "ReLU"
|
|
bottom: "fc6"
|
|
top: "fc6"
|
|
}
|
|
layer {
|
|
name: "fc7"
|
|
type: "Convolution"
|
|
bottom: "fc6"
|
|
top: "fc7"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 4096
|
|
pad: 0
|
|
kernel_size: 1
|
|
stride: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "relu7"
|
|
type: "ReLU"
|
|
bottom: "fc7"
|
|
top: "fc7"
|
|
}
|
|
layer {
|
|
name: "score_fr"
|
|
type: "Convolution"
|
|
bottom: "fc7"
|
|
top: "score_fr"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 21
|
|
pad: 0
|
|
kernel_size: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "upscore2"
|
|
type: "Deconvolution"
|
|
bottom: "score_fr"
|
|
top: "upscore2"
|
|
param {
|
|
lr_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 21
|
|
bias_term: false
|
|
kernel_size: 4
|
|
stride: 2
|
|
}
|
|
}
|
|
layer {
|
|
name: "score_pool4"
|
|
type: "Convolution"
|
|
bottom: "pool4"
|
|
top: "score_pool4"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 21
|
|
pad: 0
|
|
kernel_size: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "score_pool4c"
|
|
type: "Crop"
|
|
bottom: "score_pool4"
|
|
bottom: "upscore2"
|
|
top: "score_pool4c"
|
|
crop_param {
|
|
axis: 2
|
|
offset: 5
|
|
}
|
|
}
|
|
layer {
|
|
name: "fuse_pool4"
|
|
type: "Eltwise"
|
|
bottom: "upscore2"
|
|
bottom: "score_pool4c"
|
|
top: "fuse_pool4"
|
|
eltwise_param {
|
|
operation: SUM
|
|
}
|
|
}
|
|
layer {
|
|
name: "upscore_pool4"
|
|
type: "Deconvolution"
|
|
bottom: "fuse_pool4"
|
|
top: "upscore_pool4"
|
|
param {
|
|
lr_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 21
|
|
bias_term: false
|
|
kernel_size: 4
|
|
stride: 2
|
|
}
|
|
}
|
|
layer {
|
|
name: "score_pool3"
|
|
type: "Convolution"
|
|
bottom: "pool3"
|
|
top: "score_pool3"
|
|
param {
|
|
lr_mult: 1
|
|
decay_mult: 1
|
|
}
|
|
param {
|
|
lr_mult: 2
|
|
decay_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 21
|
|
pad: 0
|
|
kernel_size: 1
|
|
}
|
|
}
|
|
layer {
|
|
name: "score_pool3c"
|
|
type: "Crop"
|
|
bottom: "score_pool3"
|
|
bottom: "upscore_pool4"
|
|
top: "score_pool3c"
|
|
crop_param {
|
|
axis: 2
|
|
offset: 9
|
|
}
|
|
}
|
|
layer {
|
|
name: "fuse_pool3"
|
|
type: "Eltwise"
|
|
bottom: "upscore_pool4"
|
|
bottom: "score_pool3c"
|
|
top: "fuse_pool3"
|
|
eltwise_param {
|
|
operation: SUM
|
|
}
|
|
}
|
|
layer {
|
|
name: "upscore8"
|
|
type: "Deconvolution"
|
|
bottom: "fuse_pool3"
|
|
top: "upscore8"
|
|
param {
|
|
lr_mult: 0
|
|
}
|
|
convolution_param {
|
|
num_output: 21
|
|
bias_term: false
|
|
kernel_size: 16
|
|
stride: 8
|
|
}
|
|
}
|
|
layer {
|
|
name: "score"
|
|
type: "Crop"
|
|
bottom: "upscore8"
|
|
bottom: "data"
|
|
top: "score"
|
|
crop_param {
|
|
axis: 2
|
|
offset: 31
|
|
}
|
|
}
|