Caffe 模型部署实战:Ubuntu 20.04 环境 5 步完成 ResNet-50 推理
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 protobuf2. 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.pyimport 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, colorFalse) 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_THREADS4CUDA 流并行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 (batch1) 内存占用: 1.2GB GPU: NVIDIA Tesla T4 平均推理时间: 0.078s (batch1) 内存占用: 1.5GB