☰
Caffe 模型部署实战:Ubuntu 20.04 环境 5 步完成 ResNet-50 推理
2026/10/24 7:26:13 网站建设 项目流程

Caffe 模型部署实战:Ubuntu 20.04 环境 5 步完成 ResNet-50 推理

在深度学习领域,Caffe 作为一个轻量级且高效的框架,至今仍在许多生产环境中发挥着重要作用。特别是在计算机视觉任务中,ResNet-50 作为经典的卷积神经网络模型,其部署需求依然广泛。本文将带你在 Ubuntu 20.04 系统上,用最简洁的步骤完成从环境配置到性能测试的全流程部署。

1. 环境准备与依赖安装

部署 Caffe 模型的第一步是搭建合适的环境。Ubuntu 20.04 作为长期支持版本,提供了稳定的基础。以下是必须安装的核心组件:

sudo apt update sudo apt install -y build-essential cmake git libatlas-base-dev libboost-all-dev libgflags-dev libgoogle-glog-dev libhdf5-serial-dev libleveldb-dev liblmdb-dev libopencv-dev libprotobuf-dev libsnappy-dev protobuf-compiler python3-dev python3-pip

提示:如果使用 GPU 加速,还需安装对应版本的 CUDA 和 cuDNN。本文以 CPU 模式为例,但会在关键步骤注明 GPU 配置差异。

Python 环境建议使用 virtualenv 隔离:

python3 -m pip install virtualenv python3 -m virtualenv caffe_env source caffe_env/bin/activate

关键 Python 包安装:

pip install numpy scipy matplotlib opencv-python protobuf

2. Caffe 框架编译与安装

从官方仓库获取最新代码并编译:

git clone https://github.com/BVLC/caffe.git cd caffe cp Makefile.config.example Makefile.config

对于 CPU-only 环境,需修改 Makefile.config:

# CPU_ONLY := 1 取消注释 CPU_ONLY := 1

编译命令:

make all -j$(nproc) make pycaffe make test make runtest

验证安装:

python3 -c "import caffe; print(caffe.__version__)"

3. ResNet-50 模型准备与转换

从 Model Zoo 获取预训练模型:

wget http://dl.caffe.berkeleyvision.org/resnet50-19c8e357.caffemodel -P models/resnet50/ wget https://raw.githubusercontent.com/KaimingHe/deep-residual-networks/master/prototxt/ResNet-50-deploy.prototxt -P models/resnet50/

模型测试脚本示例(resnet_inference.py):

import numpy as np import caffe import cv2 # 初始化网络 net = caffe.Net('models/resnet50/ResNet-50-deploy.prototxt', 'models/resnet50/resnet50-19c8e357.caffemodel', caffe.TEST) # 输入预处理 transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape}) transformer.set_transpose('data', (2,0,1)) transformer.set_mean('data', np.array([104, 117, 123])) transformer.set_raw_scale('data', 255) # 加载测试图像 im = caffe.io.load_image('test.jpg', color=False) net.blobs['data'].data[...] = transformer.preprocess('data', im) # 执行推理 output = net.forward() prob = output['prob'][0] print('Predicted class:', prob.argmax())

4. 性能优化技巧

提升推理速度的关键配置:

优化方法CPU 配置GPU 配置效果提升
线程数export OMP_NUM_THREADS=4CUDA 流并行30-50%
内存分配caffe.set_mode_cpu()caffe.set_mode_gpu()2-5x
模型量化convert_to_quantized.pyTensorRT 加速2-3x
批处理net.blobs['data'].reshape(8,3,224,224)相同3-8x

内存优化技巧:

# 释放不必要的中间结果 net.blobs['conv1'].data.fill(0) net.blobs['pool1'].data.fill(0)

5. 完整部署脚本与基准测试

自动化部署脚本(deploy_resnet.sh):

#!/bin/bash # 自动部署 ResNet-50 的完整流程 # 1. 安装依赖 echo "[1/5] 安装系统依赖..." sudo apt update && sudo apt install -y $(cat requirements.txt) # 2. 编译 Caffe echo "[2/5] 编译 Caffe..." cd caffe && make all -j$(nproc) && make pycaffe # 3. 下载模型 echo "[3/5] 下载预训练模型..." mkdir -p models/resnet50 wget -nc http://dl.caffe.berkeleyvision.org/resnet50-19c8e357.caffemodel -P models/resnet50/ wget -nc https://raw.githubusercontent.com/KaimingHe/deep-residual-networks/master/prototxt/ResNet-50-deploy.prototxt -P models/resnet50/ # 4. 测试推理 echo "[4/5] 运行测试推理..." python3 resnet_inference.py # 5. 性能测试 echo "[5/5] 执行基准测试..." python3 -c " import caffe, time net = caffe.Net('models/resnet50/ResNet-50-deploy.prototxt', 'models/resnet50/resnet50-19c8e357.caffemodel', caffe.TEST) net.forward() # 预热 start = time.time() for _ in range(100): net.forward() print(f'平均推理时间: {(time.time()-start)/100:.3f}s') "

基准测试结果示例:

CPU: Intel Xeon E5-2680 v4 @ 2.40GHz (14核) 平均推理时间: 0.842s (batch=1) 内存占用: 1.2GB GPU: NVIDIA Tesla T4 平均推理时间: 0.078s (batch=1) 内存占用: 1.5GB

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询