到目前为止,我使用的是pytorch-caffe-darknet-convert存储库。在克服了许多问题(concat 和 eltwise 层不可转换)之后,我最终得到了一个看起来像暗网配置文件的东西:
python caffe2darknet.py my_prototxt.txt my_caffemodel.caffemodel new_net_file.cfg new_model.weights
有人知道如何将输出new_net_file.cfg
转换为 pytorch 吗?或者,还有另一种将 caffe prototxt 文件转换为 pytorch 的方法吗?
我希望具有与caffe-tensorflow相同的行为,
我将发布我的 caffe prototxt 和new_net_file.cfg
下面的输出作为参考。
my_prototxt:
input: "data"
input_shape {
dim: 1
dim: 240
dim: 144
dim: 240
}
layer {
name: "conv1_1"
type: "Convolution"
bottom: "data"
top: "conv1_1"
convolution_param {
num_output: 16
pad: 3
pad: 3
pad: 3
kernel_size: 7
kernel_size: 7
kernel_size: 7
stride: 2
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
engine: CUDNN
axis: 1
}
}
layer {
name: "relu1_1"
type: "ReLU"
bottom: "conv1_1"
top: "conv1_1"
}
layer {
name: "reduction2_1"
type: "Convolution"
bottom: "conv1_1"
top: "reduction2_1"
convolution_param {
num_output: 32
bias_term: false
pad: 0
kernel_size: 1
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "conv2_1"
type: "Convolution"
bottom: "conv1_1"
top: "conv2_1"
convolution_param {
num_output: 32
pad: 1
pad: 1
pad: 1
kernel_size: 3
kernel_size: 3
kernel_size: 3
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
engine: CUDNN
axis: 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"
convolution_param {
num_output: 32
pad: 1
pad: 1
pad: 1
kernel_size: 3
kernel_size: 3
kernel_size: 3
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
axis: 1
}
}
layer {
name: "res2_2"
type: "Eltwise"
bottom: "reduction2_1"
bottom: "conv2_2"
top: "res2_2"
eltwise_param { operation: SUM }
}
layer {
name: "add2_2"
type: "ReLU"
bottom: "res2_2"
top: "res2_2"
}
layer {
name: "pool2"
type: "Pooling"
bottom: "res2_2"
top: "pool2"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
engine: CUDNN
}
}
[...] # I cropped it here, since file is too lengthy
(暗网)配置文件:
[net]
batch=1
channels=240
height=144
width=240
[convolutional]
filters=16
size=['7', '7', '7']
stride=2
pad=1
activation=relu
[convolutional]
filters=32
size=1
stride=1
pad=1
activation=linear
[route]
layers=-2
[convolutional]
filters=32
size=['3', '3', '3']
stride=1
pad=1
activation=relu
[convolutional]
filters=32
size=['3', '3', '3']
stride=1
pad=1
activation=linear
[shortcut]
from=-4
activation=relu
[maxpool]
size=2
stride=2
[...] # I cropped it here, since file is too lengthy