插件窝 干货文章 Linux下conda安装caffe与pb转caffe问题怎么解决

Linux下conda安装caffe与pb转caffe问题怎么解决

Caffe Conda install 安装 276    来源:    2025-04-24

Linux下Conda安装Caffe与PB转Caffe问题解决方案

一、Conda安装Caffe

1. 创建conda环境

conda create -n caffe_env python=3.6
conda activate caffe_env

2. 安装基础依赖

conda install -c conda-forge numpy scipy matplotlib scikit-image h5py
conda install -c anaconda protobuf
conda install -c conda-forge opencv

3. 安装Caffe

有两种主要方式:

方法一:从conda-forge安装(推荐)

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

4. 常见问题解决

问题1: 缺少hdf5.h头文件

conda install -c conda-forge hdf5

问题2: 链接错误

# 设置环境变量
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH

二、PB转Caffe问题

1. 安装转换工具

pip install onnx tensorflow
git clone https://github.com/onnx/onnx-tensorflow.git && cd onnx-tensorflow && pip install -e .

2. 转换流程

TensorFlow PB转Caffe

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接口手动构建网络

使用MMdnn工具转换

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

3. 常见问题解决

问题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
}

三、验证安装

测试Caffe安装

import caffe
print(caffe.__version__)

测试转换结果

import caffe
net = caffe.Net('deploy.prototxt', 'model.caffemodel', caffe.TEST)
print(net.blobs['data'].data.shape)

四、补充建议

  1. 对于GPU版本,安装时添加CUDA和cuDNN支持:
conda install -c conda-forge caffe-gpu
  1. 使用Docker简化环境配置:
docker pull bvlc/caffe:gpu
  1. 复杂模型转换建议分步进行,先转ONNX再转Caffe

希望以上解决方案能帮助您顺利完成Caffe的安装和模型转换工作。