作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
到目前为止,我使用的是 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 的方法?
new_net_file.cfg
下面作为引用。
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
最佳答案
您可以使用以下库之一:
Usage
Conversion
python caffe2pth_convertor.py \
--prototxt=YOUT_PROTOTXT_PATH \
--caffemodel=YOUT_CAFFEMODEL_PATH \
--pthmodel=OUTPUT_PTHMODEL_PATHUse the model in Pytorch
from caffe2pth.caffenet import *
net = CaffeNet(YOUT_PROTOTXT_PATH)
net.load_state_dict(torch.load(OUTPUT_PTHMODEL_PATH))
关于python - 如何将caffe prototxt转换为pytorch模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47690871/
我是一名优秀的程序员,十分优秀!