Ubuntu 16.04深度学习环境搭建:Caffe+OpenCV+CUDA配置指南

发布时间:2026/7/19 4:11:54
Ubuntu 16.04深度学习环境搭建:Caffe+OpenCV+CUDA配置指南 1. 项目概述与环境准备在深度学习研究领域Caffe框架因其高效的执行速度和模块化设计而广受欢迎。本文将详细介绍在Ubuntu 16.04系统上搭建完整深度学习开发环境的全过程包括Caffe框架、Matlab2017a、OpenCV3.1、CUDA8.0和cuDNN6.0的安装与配置。这个环境特别适合需要进行计算机视觉和深度学习算法开发的科研人员和工程师。重要提示在开始安装前请确保你的NVIDIA显卡支持CUDA 8.0。可以通过运行lspci | grep -i nvidia查看显卡型号并在NVIDIA官网确认兼容性。1.1 系统基础配置首先更新系统软件包并安装必要的依赖项sudo apt-get update sudo apt-get upgrade -y sudo apt-get install -y build-essential cmake git unzip安装显卡驱动以GTX 1080 Ti为例sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get install nvidia-384 nvidia-modprobe安装完成后需要重启系统使驱动生效。重启后可以通过nvidia-smi命令验证驱动是否安装成功。2. CUDA 8.0与cuDNN 6.0安装2.1 CUDA 8.0安装从NVIDIA官网下载CUDA 8.0的runfile安装包注意选择Ubuntu 16.04版本wget http://developer.download.nvidia.com/compute/cuda/8.0/secure/Prod2/local_installers/cuda_8.0.61_375.26_linux.run执行安装注意不安装自带的驱动sudo sh cuda_8.0.61_375.26_linux.run --override在安装界面中接受许可协议取消勾选Install NVIDIA Accelerated Graphics Driver确保勾选CUDA Toolkit使用默认安装路径(/usr/local/cuda-8.0)安装完成后配置环境变量echo export PATH/usr/local/cuda-8.0/bin:$PATH ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc验证CUDA安装nvcc -V2.2 cuDNN 6.0安装下载cuDNN 6.0需要NVIDIA开发者账号后解压并复制文件tar -xzvf cudnn-8.0-linux-x64-v6.0.tgz sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ sudo chmod ar /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*3. OpenCV 3.1编译安装3.1 依赖项安装首先安装OpenCV的编译依赖sudo apt-get install -y libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev \ libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \ libxvidcore-dev libx264-dev libgtk-3-dev libatlas-base-dev \ gfortran python2.7-dev python3.5-dev3.2 源码编译下载OpenCV 3.1.0源码并解压wget https://github.com/opencv/opencv/archive/3.1.0.zip unzip 3.1.0.zip cd opencv-3.1.0创建编译目录并配置mkdir build cd build cmake -D CMAKE_BUILD_TYPERELEASE \ -D CMAKE_INSTALL_PREFIX/usr/local \ -D INSTALL_PYTHON_EXAMPLESON \ -D INSTALL_C_EXAMPLESOFF \ -D WITH_CUDAON \ -D CUDA_ARCH_BIN3.5 5.2 6.1 \ -D CUDA_ARCH_PTX \ -D WITH_TBBON \ -D WITH_V4LON \ -D WITH_QTON \ -D WITH_OPENGLON \ -D ENABLE_FAST_MATH1 \ -D CUDA_FAST_MATH1 \ -D WITH_CUBLAS1 ..解决GraphCut算法兼容性问题sed -i s/#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)/#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION 8000)/ ../modules/cudalegacy/src/graphcuts.cpp编译并安装make -j$(nproc) sudo make install sudo ldconfig4. Matlab 2017a安装4.1 准备安装文件下载Matlab 2017a Linux版本ISO文件后挂载mkdir ~/matlab sudo mount -o loop R2017a_glnxa64.iso ~/matlab4.2 执行安装启动安装程序cd ~/matlab sudo ./install在安装界面中选择使用文件安装密钥并输入许可证文件中的密钥。选择安装路径为/usr/local/MATLAB/R2017a。4.3 激活与配置安装完成后执行激活cd /usr/local/MATLAB/R2017a/bin ./activate_matlab.sh创建符号链接以便全局访问sudo ln -s /usr/local/MATLAB/R2017a/bin/matlab /usr/local/bin/matlab5. Caffe框架编译与配置5.1 依赖项安装安装Caffe所需依赖sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev \ libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev \ liblmdb-dev libboost-all-dev libatlas-base-dev5.2 源码获取与配置克隆Caffe源码cd ~ git clone https://github.com/BVLC/caffe.git cd caffe cp Makefile.config.example Makefile.config修改Makefile.config关键配置USE_CUDNN : 1 OPENCV_VERSION : 3 CUDA_DIR : /usr/local/cuda-8.0 BLAS : atlas MATLAB_DIR : /usr/local/MATLAB/R2017a PYTHON_INCLUDE : /usr/include/python2.7 \ /usr/lib/python2.7/dist-packages/numpy/core/include INCLUDE_DIRS : $(PYTHON_INCLUDE) /usr/local/include /usr/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include LIBRARY_DIRS : $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial LINKFLAGS : -Wl,-rpath,$(HOME)/anaconda2/lib5.3 编译与测试执行编译make all -j$(nproc) make test -j$(nproc) make runtest -j$(nproc)编译Python接口make pycaffe echo export PYTHONPATH~/caffe/python:$PYTHONPATH ~/.bashrc source ~/.bashrc编译Matlab接口make matcaffe6. 常见问题与解决方案6.1 编译错误排查问题1找不到hdf5库/usr/bin/ld: 找不到 -lhdf5_hl /usr/bin/ld: 找不到 -lhdf5解决方案确保Makefile.config中正确设置了HDF5的路径INCLUDE_DIRS : $(PYTHON_INCLUDE) /usr/local/include /usr/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include LIBRARY_DIRS : $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial问题2cuDNN链接错误/usr/bin/ld: 找不到 -lcudnn解决方案确认cuDNN文件已正确复制到CUDA目录并创建符号链接sudo ln -s /usr/local/cuda/lib64/libcudnn.so.6 /usr/local/cuda/lib64/libcudnn.so6.2 Python接口问题问题ImportError: No module named google.protobuf.internal解决方案安装Python protobuf模块pip install protobuf # 或使用conda conda install protobuf6.3 Matlab接口问题问题GCC版本不兼容警告: 您使用的 gcc 版本为 5.4.0。不支持该版本的 gcc。解决方案在Makefile.config中添加CXXFLAGS -stdc117. 环境验证与测试7.1 Caffe测试运行MNIST示例测试cd ~/caffe ./data/mnist/get_mnist.sh ./examples/mnist/create_mnist.sh ./examples/mnist/train_lenet.sh7.2 OpenCV测试创建测试脚本test_opencv.pyimport cv2 print(OpenCV版本:, cv2.__version__) img cv2.imread(test.jpg) if img is not None: print(图像加载成功) else: print(图像加载失败)7.3 Matlab接口测试在Matlab中运行addpath(~/caffe/matlab); caffe.set_mode_gpu(); fprintf(Caffe Matlab接口测试通过\n);8. 性能优化建议BLAS优化考虑使用OpenBLAS或Intel MKL替代默认的ATLASsudo apt-get install -y libopenblas-dev然后在Makefile.config中设置BLAS : openIO性能优化使用LMDB或LevelDB作为数据存储格式可以显著提高数据读取速度。GPU利用率优化在solver.prototxt中适当调整batch size确保GPU利用率接近100%但不会导致内存不足。多GPU训练如果系统有多个GPU可以启用NCCL进行多GPU训练USE_NCCL : 1这套环境配置虽然过程复杂但一旦搭建完成将为深度学习研究和开发提供强大的支持平台。建议将整个环境配置过程记录成文档并定期备份重要配置文件以便在系统重装时快速恢复工作环境。