Ubuntu16.04安装Cuda10.0/cudnn/openpose及出现的问题(显卡GTX1660 SUPER)
一、安装CUDA10.0、CUDNN7.6.5
安装教程请按照下面的博文
ubuntu16.04安装CUDA、cuDNN GTX 1660Ti
注意:显卡安装和电脑显卡适配的最新版本
安装显卡驱动的时候,台式机一定要用这条命令,不要添加no-opengl-files
,注意和下图命令的区分
sudo ./NVIDIA-Linux-x86_64-384.59.run –no-x-check -no-nouveau-check
二、CUDA卸载步骤
显卡驱动无需卸载
sudo apt-get remove cuda*
sudo apt-get remove --purge cuda*
sudo apt-get update
执行完上面三步后无法删除CUDA的文件夹,需要切换到安装目录下手动删除,默认位置为: /usr/local/
,因此执行以下命令:
cd /usr/local/
sudo rm -r cuda-10.0
注意:10.0是版本号,要删除哪个版本就替换成哪个版本号(Cudnn安装在Cuda文件夹中,因此需要手动删除)
三、openpose安装过程
根据实验室师兄的安装经验,在实验室工作站上安装测试完成
安装前准备工作
1、 克隆openpose源码:
git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose
或者直接在github中下载,解压后cd到openpose源码文件夹下
后续操作默认已经cd到openpose源码文件夹下
2、提前下载好openpose预训练模型,放入指定的文件夹中(其实源码中自带了小模型,但是替换为这种大型预训练模型效果更好),避免cmake时下载太慢(总共800多M)。
1、BODY_25 model: download in models/pose/body_25/.
http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/body_25/pose_iter_584000.caffemodel
2、COCO model: download in models/pose/coco/.
http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/coco/pose_iter_440000.caffemodel
3、MPI model: download in models/pose/mpi/.
http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/mpi/pose_iter_160000.caffemodel
4、Face model: download in models/face/.
http://posefs1.perception.cs.cmu.edu/OpenPose/models/face/pose_iter_116000.caffemodel
5、Hands model: download in models/hand/.
http://posefs1.perception.cs.cmu.edu/OpenPose/models/hand/pose_iter_102000.caffemodel
上述链接已失效,可从此下载
3、安装cmake-gui(非必须,可以使用命令行替代):
sudo apt-get install cmake-qt-gui
4、安装第三方库的依赖(不是第三方库本身):
sudo bash ./scripts/ubuntu/install_deps.sh
5、安装Python:官方建议python3,python2也可,需要以下python组件(不装也行)
(1)Python 3 (default and recommended)
sudo apt-get install python3-dev
sudo pip3 install numpy opencv-python
(2)Python 2
sudo apt-get install python-dev
sudo pip install numpy opencv-python
安装
1、git拉取第三方库到本地
git submodule update --init --recursive --remote
2、cmake配置(下列命令仅适用于未安装caffe和apt安装opencv,如果是其他情况请参照openpose官网)
先进入openpose/build文件夹下,再进行cmake配置
mkdir build/
cd build/
cmake-gui ..
输入上述命令后弹出下面的对话框
在cmake-gui中点击configure,再点击新窗口中的finish,出现下图一些选项,把BUILD_PYTHON勾上(如果后续要使用Python调用的话),再点击一次configure(另外在其中也可设置是GPU模式还是纯CPU)。随后点击generate,关闭该窗口。
注意:这一步可能由于CUDA版本变化或者cudnn版本等问题出错需要重新配置,请先进入openpose/build中删除所有内容后再执行上述步骤。
3、编译
make -j8
如果不报错,需要编译几分钟时间,如果出现错误,请参照第四部分的解决方法
4、 安装头文件(必须,与ROS连接所需)
sudo make install
至此二维的openpose已安装完成
安装测试
1、官方非ROS Demo测试
测试预设视频骨架点识别
cd openpose
./build/examples/openpose/openpose.bin --video examples/media/video.avi
2、测试图片集骨架点识别
./build/examples/openpose/openpose.bin --image_dir examples/media/
3、测试实时摄像头骨架点识别(不加参数即可,或者通过参数指定摄像头,普通摄像头即可)
./build/examples/openpose/openpose.bin
./build/examples/openpose/openpose.bin --camera 0
3、测试面部或手部识别(与上类似,通过不同的参数来区分):
./build/examples/openpose/openpose.bin --image_dir examples\media\ --face
./build/examples/openpose/openpose.bin --video examples\media\video.avi --hand
./build/examples/openpose/openpose.bin --face
4、其他样例见官方链接
5、 OpenPose显卡算力表(需要fq)
与ROS连接
1、 官方并未推出ROS Wrapper,但推荐了两个非官方ROS示例。分别为:
https://github.com/ravijo/ros_openpose.git
https://github.com/firephinx/openpose_ros.git
2、综合效果和易用程度,选择第一个ROS包(Demo介绍最高支持到1.6.0,但实测最新版1.7.0o penpose没有问题),可以直接求解3D空间骨骼点,避免手动计算,并可集成进RVIZ显示,下为1.7.0下的 安装步骤:
(1)克隆该包到ros工作空间/src下
git clone https://github.com/ravijo/ros_openpose.git
(2)编译
catkin_make
(3) 修改launch文件中部分参数适应realsense相机(假设使用realsense,其他RGBD相机是一样)
- 顶层run.launch中,将31行中openpose网络模型文件夹改为自己电脑上的对应文件夹
- run.luanch所调用的congfig_realsense.launch中,将10行和13行rgb和深度图像话题改为实际realsense话题,对于我们的realsense而言,需要把相机名字camera改为rs(如果没有改过realsense相机默认launch的话不用改),如下图
(4) 改好之后运行,该launch会自动启动相机、openpose、以及RVIZ。
roslaunch ros_openpose run.launch
(5)在RVIZ中可以观察到骨架点,也可echo到相机坐标系下骨架点3D空间坐标(从而避免了手动在深度图像取深度来获取骨骼点3D坐标)
四、安装过程中出现的错误
GTX1660显卡安装完nvidia驱动后开机永远在登录界面,按ctrl+alt+F1出现下图错误
问题说明:nvidia显卡驱动和系统不兼容
解决方法:
1、在开机登入界面按CTRL+ALT+F1 # 切换到命令行
2、输入用户名和密码登入(即使一直打印上图错误输入一直有效,可以忽略)
3、输入sudo service lightdm stop
关闭桌面显示管理器
4、输入sudo apt-get remove --purge nvidia*
卸载所有nvidia驱动
5、输入reboot
重启
注意:在第二步输入用户名和密码的时候,用户名全都是小写字母,密码要注意NumLock有没有打开)
如果不知道自己的用户名或者密码,参考下面的步骤查找用户名,修改密码。
-
开机时选择“高级启动”中的“recovery mode”模式,再按e进入
-
进入如下界面,将红色框中的ro(只读)改成rw(读写)后按F10
-
进入下一个选择界面。选择root-Drop to root shell prompt。
-
此时电脑会从启动进入到shell,当出现命令提示符的时候输入"passwd username"这里的username就是您的用户名,如果您连用户名都忘了的话,不急有办法,您可以先输入
ls /home
查看用户名,再输入以上命令。 -
输入
passwd username
后,出现提示符时就可以直接输入您的新密码了,再确认一次。 -
reboot
重启即可完成
安装时编译步骤出现的错误
错误1:
nvcc fatal : Value 'c++14' is not defined for option 'std'
出错原因:在openpose CMakelists.txt文件第508行(也许后续更新后不是这一行了),如下位置处指定了c++14,用于在CUDA11以上版本编译Thrust库(见注释)。然而在cuda8.0下不支持c++14,因此需要将该选项改为:c++11。如下图:
修改前:
修改后:
修改后重新配置CMAKE,即可编译成功。
错误2:
nvcc fatal : Unsupported gpu architecture 'compute_75'
出错原因:CUDA10.0以下版本不支持75,如果显卡更新报75以上错误,请使用更新的CUDA版本
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_60,code=sm_60 \
-gencode arch=compute_61,code=sm_61 \
-gencode arch=compute_62,code=sm_62 \
-gencode arch=compute_70,code=sm_70 \
-gencode arch=compute_72,code=sm_72 \
-gencode arch=compute_75,code=sm_75 \
-gencode arch=compute_75,code=compute_75