conda create -n caffe_env python=3.6
conda activate caffe_env
conda install -c conda-forge numpy scipy matplotlib scikit-image h5py
conda install -c anaconda protobuf
conda install -c conda-forge opencv
有两种主要方式:
conda install -c conda-forge caffe
# 安装编译依赖
conda install -c conda-forge boost boost-cpp cmake gflags glog lmdb snappy leveldb
# 克隆caffe源码
git clone https://github.com/BVLC/caffe.git
cd caffe
# 配置
mkdir build
cd build
cmake -DCPU_ONLY=ON -DBLAS=Open -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX ..
# 编译安装
make -j8
make install
问题1: 缺少hdf5.h头文件
conda install -c conda-forge hdf5
问题2: 链接错误
# 设置环境变量
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
pip install onnx tensorflow
git clone https://github.com/onnx/onnx-tensorflow.git && cd onnx-tensorflow && pip install -e .
import tensorflow as tf
from onnx_tf.backend import prepare
import onnx
# 1. PB转ONNX
with tf.gfile.GFile("model.pb", "rb") as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
tf.import_graph_def(graph_def, name="")
# 2. ONNX转Caffe (需要mmdnn等工具)
# 或使用caffe的python接口手动构建网络
pip install mmdnn
# TensorFlow转ONNX
mmconvert -sf tensorflow -iw model.pb --inNodeName input --inputShape 224,224,3 --dstNodeName output -df onnx -om model.onnx
# ONNX转Caffe
mmconvert -sf onnx -iw model.onnx -df caffe -om model
问题1: 层不兼容 - 解决方案:修改prototxt文件或使用自定义层
问题2: 权重不匹配
# 手动调整权重
import caffe
net = caffe.Net('deploy.prototxt', 'original.caffemodel', caffe.TEST)
# 修改net.params
net.save('new.caffemodel')
问题3: 输入输出维度不匹配 - 检查prototxt中的输入层定义:
input: "data"
input_shape {
dim: 1
dim: 3
dim: 224
dim: 224
}
import caffe
print(caffe.__version__)
import caffe
net = caffe.Net('deploy.prototxt', 'model.caffemodel', caffe.TEST)
print(net.blobs['data'].data.shape)
conda install -c conda-forge caffe-gpu
docker pull bvlc/caffe:gpu
希望以上解决方案能帮助您顺利完成Caffe的安装和模型转换工作。