交代背景: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就觉得肯定可以了
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即可
**对上面那个错误重新这里哈:
其实是我自己漏了步骤啦看下面这几步解决
然后输入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
其他总结:
让我们来分析一下这是个什么原理:当你输入python之后,linux系统会先去环境变量里面找,看能不能找到,让我们来看一下我电脑目前的环境变量:
这个是环境变量里面添加并且立即生效
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树人工智能深度学习210992 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!