Ubuntu 20.04 + RTX 3070 显卡下 OpenPose 环境搭建全攻略(含 Conda 虚拟环境避坑指南)
最近在折腾一个基于人体姿态估计的项目,手头正好有一台搭载了 RTX 3070 显卡、运行 Ubuntu 20.04 的机器。OpenPose 作为这个领域的经典工具,自然是首选。但说实话,在 30 系显卡和较新的 CUDA 版本上,尤其是在 Conda 虚拟环境里配置 OpenPose,踩的坑比预想的多得多。官方文档对 Conda 的态度有些“暧昧”,社区里各种教程也说法不一。经过几天的折腾和反复验证,我终于梳理出了一条相对顺畅的路径。这篇文章,就是把我从系统准备到最终成功运行 OpenPose 的完整过程,以及那些让人头疼的“坑”和解决方案,毫无保留地分享出来。如果你也正拿着一块 30 系显卡,想在 Ubuntu 的 Conda 虚拟环境里搞定 OpenPose,希望这篇攻略能让你少走弯路。
1. 环境准备与基础依赖安装
在开始编译 OpenPose 之前,一个干净、正确的基础环境是成功的一半。对于 RTX 30 系列显卡,CUDA 版本的选择至关重要,因为它直接决定了与显卡驱动、cuDNN 以及后续 Caffe 框架的兼容性。
我的硬件配置是 NVIDIA GeForce RTX 3070,系统为 Ubuntu 20.04.6 LTS。首先,通过 nvidia-smi 命令确认驱动版本和可用的最高 CUDA 版本。对于 30 系显卡,CUDA 11.x 是起点。经过测试,CUDA 11.1 配合 cuDNN 8.0.4 是一个比较稳定的组合,既能保证显卡性能发挥,又能与 OpenPose 依赖的 Caffe 框架有较好的兼容性(尽管仍有挑战)。
注意:强烈建议在物理机或虚拟机中操作,而非 WSL/WSL2,因为后者在 GPU 直通和内核模块支持上可能带来额外复杂度。
接下来是 Conda 虚拟环境的创建。官方文档曾警告 Anaconda 可能与 Caffe 的 Protobuf 冲突,建议禁用或卸载。但实践证明,在一个独立的 Conda 虚拟环境中操作是完全可行的,这能完美隔离项目依赖,避免污染系统环境。我们创建一个名为 openpose 的 Python 3.6 环境(OpenPose 的 Python 接口对 3.6 支持较好):
conda create -n openpose python=3.6 -y
conda activate openpose
进入虚拟环境后,我们先安装一些基础的编译工具和库。这里我整理了一个脚本 install_basic_deps.sh,你可以直接运行:
#!/bin/bash
# 更新包列表并安装基础编译工具
sudo apt-get update
sudo apt-get install -y build-essential cmake git unzip
# 安装 OpenCV 开发库
sudo apt-get install -y libopencv-dev
# 安装 Caffe 及 OpenPose 所需的一系列依赖
sudo apt-get install -y libatlas-base-dev libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
# 安装 CMake 图形界面(可选,但便于配置检查)
sudo apt-get install -y cmake-qt-gui
将上述内容保存后,赋予执行权限并运行:chmod +x install_basic_deps.sh && ./install_basic_deps.sh。这一步确保了系统层面拥有所有必要的编译器和库文件。
2. 关键组件:CUDA、cuDNN 与 Protobuf 的配置
这是整个搭建过程中最核心也最容易出错的环节。我们需要在 Conda 虚拟环境中管理 Python 包,同时又要确保系统级的 CUDA 和 cuDNN 能被正确找到并链接。
CUDA 11.1 安装:从 NVIDIA 官网下载对应版本的 runfile 本地安装包。在安装时,一个关键的步骤是不要安装驱动,因为我们已经有了合适的显卡驱动。在安装选项中,取消勾选 Driver,只安装 CUDA Toolkit。
sudo sh cuda_11.1.0_455.23.05_linux.run --toolkit --silent --override
安装完成后,将 CUDA 路径添加到环境

962

被折叠的 条评论
为什么被折叠?



