交代背景:ubuntu18.04新系统,python自带2.7和3.6,想用上kinectV2这个摄像头因此安装libfreenect2,为用上tensorflow-gpu还有pycharm里面运行python写的kinect2驱动做准备。

半小时内包括装系统装好kinectv2
首先重装因为之前装太多东西了
重装18.04ubuntu,联网,在软件和更新那里选最佳服务器选完之后附加驱动选最上面那个我的是NVIDIA-960
装完去github看教程
https://github.com/OpenKinect/libfreenect2
滑到最下看linux教程
然后一步一步装,装到NVIDIA-cuda时候,就去看这个链接
https://www.linuxidc.com/Linux/2016-11/137561.htm
装cuda的教程,装完继续往下
就ok了,就ok了。这个是c++写的

但我是要python的kinectv2驱动,所以未完待续(已经被折磨一天一夜了)

经过折磨三天之后写下此博客,已经拨开云雾见彩虹了。
我要先吐槽这一路走来的崩溃心态:重装五次ubuntu18.04,从docker里面安装pylibfreenect2到本机安装,从尝试删除自带的python3.6和2.7到rm rf /* 跑路到发现sudo pip 和 pip是不一样路径,又发现which python 和 sudo which python 又是不同路径,还有打开摄像头是要加sudo,否则不能发现。 即sudo ./bin/Protonect ,到最后全部完成回来又发现怎么去掉sudo现在又可以了:(

接着被折磨的我来了:
三个参考网址安装pylibfreenect2,其中第一个网址是装c++写的驱动,第二第三是python写的(也要把c++写的先装上):
https://blog.csdn.net/qq_29797957/article/details/77323534 (如果用c写那么直接看这个教程半小时内搞好)
https://blog.csdn.net/qq_31638535/article/details/81069408 (这个是安装pyfreenect2,用这个参考去网上下载或者我的网盘链接下载pylibfreenect2来安装,不要安装pyfreenect2!,这个真的会卡死)
这里也要参考pylibfreenect2网址 http://r9y9.github.io/pylibfreenect2/stable/installation.html ,设置环境变量,用export LIBFREENECT2_INSTALL_PREFIX=/usr/local/到设置环境变量的最下面,命令如下
gedit ~/.bashrc
export LIBFREENECT2_INSTALL_PREFIX=/usr/local/
source ~/.bashrc

后面再聊感想先说流程还有各种各样错误

整理一下装tensorflow-gpu思路

1.我自己电脑成功版本以后我都用这个了不想再折磨第三次了
电脑自带python2.7,python3.6所有东西装在python3.6
先装libfreenect2,c++写的kinect驱动,因为之后的pylibfreenect2都是依赖这个libfreenect2(这里插一句,想直接半小时用内用上tensorflow-gpu那么我会直接告诉你直接用docker,什么cuda,cudnn都不用装,直接帮你集成好,为了这个python的kinectV2驱动我真的重装好多次电脑)
2.版本号
ubunutu18.04,cuda9.0.176,cudnn是7.4.1
先放网盘安装链接 :避免需要翻强注册浪费时间(网盘里面也有链接和要注意的事项)
链接: https://pan.baidu.com/s/1nQi3DMg2hRWEVwiasnsKnw 提取码: 3m8t
下面是对照表,不要以为版本都是7,9就觉得肯定可以了
在这里插入图片描述
按照,anaconda,cuda,cudnn,tensorflow-gpu流程安装(其实我还是觉得安装anaconda没什么用,因为后面我没用上anaconda的conda来装tensorflow-gpu)
anaconda教程
我忘了,百度,安装包在网盘
cuda教程
https://blog.csdn.net/qq_35976351/article/details/79325476
https://www.linuxidc.com/Linux/2016-11/137561.htm (这个是安装时候yes,no,no,同意书那些教程)
cudnn教程
https://blog.csdn.net/qq_33200967/article/details/80689543
在这里插入图片描述

tersorflow-gpu教程(是1.11不要自动装了1.12了,不然你只能卸载再来了,补充:下面是用anaconda虚拟环境来装。也可以直接pip装,所以我才说anaconda并没什么用我都没用cuda装,但是呢老师说了装了anaconda3可以莫名其妙省掉很多python版本问题然后我装了,下次我估计我装不上也会这样装anaconda3先)
https://blog.csdn.net/qq_35976351/article/details/79325476
执行到这句改为:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==1.11

这里千万记住了,我装了cudnn 7.0.15,最后发现版本不行就下载cudnn7.4.1,因为是已安装,所以就不卸载cudnn7.0.15,下载了cudnn7.4.1之后,先去把旧的cudnn.h删除(觉得麻烦就查百度彻底删除cudnn再来)
终端sudo nautilus (这个其实是和你直接打开文件是一样的,只是sudo环境下可以拷贝usr里面文件)
1.找到/usr/local/cuda-9.0/include/cudnn.h 删除
2.去刚刚新装的cudnn7.4.1,解压后进入cuda/include/,把cudnn.h复制到刚刚删除的位置/usr/local/cuda-9.0/include/;再来把cuda/lib64的4个文件复制到/usr/local/cuda-9.0/lib64,这样就可以了。

最后打开你的pycharm,自动检测到tensorflow-gpu,享受这种美妙的感觉吧

后续:遇到之前生成的.h5模型不行了,首先再次训练得到h5,不行就查百度卸载h5,用最新版本的
pip uninstall h5py
sudo pip install h5py==2.8.0rc1
另外还有使用docker报错的
当在linux里面执行pycharm.sh时候出现

还有这种报错docker里面运行pycharm报错的
No protocol specified
Start Failed: Failed to initialize graphics environment

java.awt.AWTError: Can’t connect to X11 window server using ‘:1’ as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:115)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.(X11GraphicsEnvironment.java:74)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:103)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
at sun.awt.X11.XToolkit.(XToolkit.java:128)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at java.awt.Toolkit$2.run(Toolkit.java:860)
at java.awt.Toolkit2.run(Toolkit.java:855)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.awt.Toolkit.getDefaultToolkit(Toolkit.java:854)atcom.intellij.ui.AppUIUtil.updateFrameClass(AppUIUtil.java:161)atcom.intellij.idea.StartupUtil.prepareAndStart(StartupUtil.java:94)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:498)atcom.intellij.idea.MainImpl.start(MainImpl.java:43)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:498)atcom.intellij.ide.plugins.PluginManager.lambda
2.run(Toolkit.java:855)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.awt.Toolkit.getDefaultToolkit(Toolkit.java:854)atcom.intellij.ui.AppUIUtil.updateFrameClass(AppUIUtil.java:161)atcom.intellij.idea.StartupUtil.prepareAndStart(StartupUtil.java:94)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:498)atcom.intellij.idea.MainImpl.start(MainImpl.java:43)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:498)atcom.intellij.ide.plugins.PluginManager.lambdastart$0(PluginManager.java:75)
at java.lang.Thread.run(Thread.java:745)
则本机执行这两条
xhost +local:all
export DISPLAY=:0.0
docker里面执行export DISPLAY=:0.0
再来 bash pycharm.sh即可

**对上面那个错误重新这里哈:
其实是我自己漏了步骤啦看下面这几步解决

gedit ~/.profile

然后输入xhost +local:root
就不用每次都输入那两条语句了**

补充:
CUDA cudnn 版本查看
cuda 版本
cat /usr/local/cuda/version.txt
cudnn 版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

最后就是发牢骚时间:
三天,我服了,上一次装过在ubuntu16.04,nvidia-410的,cudn10.0的,结果到ubuntu18.04就是因为显卡由1080变成1060所以只找到nvidia-390的,一直看教程以为pylibfreenect2只能是python3.5,ubuntu3.6绝对不行,又是很傻去下python3.5了,又折磨自己了,那次重装是尝试删了python3.5然后删python2.7,效果很感人,还有一次重装执行了sudo rm rf /* 效果也很感人,删库到跑路的感觉好美妙,后续我用了一个不用驱动的普通摄像头,写10行python就看到显示了,我XX,还有遇到一个问题,貌似我用了gpu之后,卡得很厉害,我不知道是不是这个原因,还是装太多包的原因,一样的代码,就是装完一堆cuda,cudnn,tensorflow-gpu之后就变成点一个按钮三四秒才显示东西,服了,去docker 里面没装tensorflow-gpu那些东西就是一点就又反应的,再接再厉吧,希望能帮到人,这个实在太折磨人了,这个kinect2我以后不买你了。对了以前ubuntu16.04运行是掉帧的,卡一点点的,在ubuntu18.04居然是顺畅的,这也是我的发现,最后还是看官网安装,csdn的文章我看了那么多才总结了下来,坑人,希望对有需要的人有帮助。转载记得附上地址:)

补充:遇到的错误
我是自己下的pylibfreenect2-0.1.2.tar.gz,解压改名为pylibfreenect,然后运行setup.py,发现35行报错,至于是什么我也忘了,试过n种方法不行。
所以直接编辑文件,把35行改if len(lib_candidates) == 1:就装成功了(这么神奇,到现在也不明白)
libfreenect2_INSTALL_PREFIX(默认环境变量:/usr/local/)这个环境也在不知道哪里export了,记得是和cuda环境变量设置那个文件夹里面的gedit ~/.bashrc 就行,像下面这样
export LIBFREENECT2_INSTALL_PREFIX=/usr/local/
然后source ~/.bashrc #这句话就是为了不用重启可以立即生效。

其他总结:

echo $PATH

让我们来分析一下这是个什么原理:当你输入python之后,linux系统会先去环境变量里面找,看能不能找到,让我们来看一下我电脑目前的环境变量:echo $PATH

这个是环境变量里面添加并且立即生效

gedit ~/.bashrc
source ~/.bashrc
Logo

更多推荐