“万事开头难”,搭建开发调试环境既是垫脚石,也是拦路虎,不管是一气呵成,还是费尽周章,事后做好记录都是明智之举,可以避免不必要的重复劳动。这篇博客主要记录在win10_64位下基于CPU或者GPU搭建Udacity无人车开发环境的大致过程。
安装Anaconda
开发python程序经常要涉及第三方库,很容易出现版本混乱和各种不兼容的问题,因此可以安装conda来帮我们管理软件包和依赖,使项目开展更加顺利。由于我只需要最基本的功能,所以选择了安装miniconda,下载地址如下:
https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86_64.exe
常用的conda命令可以参考官方的用户指南官方的用户指南。
conda换源
为了提高conda安装的速度,我们可以将conda的源换成科大或是清华的:
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
conda config --set show_channel_urls yes
然后把.condarc中channels下面的-defaults这一行删掉,正确的结果如下:
channels:
- https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
- https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
- https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
- https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
- https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
show_channel_urls: true
此外还要做点准备,将CarND-Term1-Starter-Kit仓库下载到本地,进入项目目录,将meta_windows_patch.yml重命名为meta.yml:
git clone https://github.com/udacity/CarND-Term1-Starter-Kit.git
cd CarND-Term1-Starter-Kit
基于CPU搭建
基于CPU搭建Udacity无人车开发环境比较简单, 只要根据environment.yml创建carnd-term1就行了:
conda env create -f environment.yml
conda info --envs 查看是否创建成功
conda env remove -n carnd-term1 卸载环境
environment.yml文件具体内容如下,我在测试中发现缺少requests模块,所以添加了一行’- requests’,也可以之后用conda install requests来单独安装:
name: carnd-term1
channels:
- https://conda.anaconda.org/menpo
- conda-forge
dependencies:
- python==3.5.2
- numpy
- matplotlib
- jupyter
- opencv3
- pillow
- scikit-learn
- scikit-image
- scipy
- h5py
- eventlet
- flask-socketio
- seaborn
- pandas
- ffmpeg
- imageio=2.1.2
- pyqt=4.11.4
- requests
- pip:
- moviepy
- tensorflow==1.3.0
- keras==2.0.9
基于GPU搭建
基于GPU搭建Udacity无人车开发环境需要考虑的问题较多,但“工欲善其事,必先利其器”,使用GPU来训练神经网络模型相比CPU在速度上至少有几十倍的提升,因此该折腾还得折腾。我这里使用的GPU是Nvidia的GTX 1060 6G,在安装tensorflow-gpu之前,需要先安装CUDA Toolkit、cuDNN和必要的显卡驱动。CUDA Toolkit 和cuDNN的版本要与tensorflow-gpu相适应,可以参照Tensorflow官网经过测试的源代码配置来选择适合你的版本。我这里选择的是tensorflow_gpu-1.3.0,cuDNN v6.0和CUDA Toolkit 8.0,需要注册登陆Nvidia开发者账号才能下载。
# cuDNN v6.0 下载地址
https://developer.nvidia.com/rdp/cudnn-archive#a-collapse6-8
# CUDA Toolkit 8.0 下载地址
https://developer.nvidia.com/compute/cuda/8.0/Prod2/network_installers/cuda_8.0.61_win10_network-exe
Visual Studio 2012 安装
需要注意的是, 在安装CUDA Toolkit之前,还需要先安装Visual Studio,通过运行一些例程来测试GPU是否已经准备就绪。我这里下的是体积适中的Visual Studio 2012,参考博客Microsoft Visual Studio 2012旗舰版(VS2012中文版下载)官方中文版,比较杯具的是C盘空间不够,只能从D盘腾挪了几十G过来,呵呵!
# Microsoft Visual Studio 2012 下载地址
http://download.microsoft.com/download/B/0/F/B0F589ED-F1B7-478C-849A-02C8395D0995/VS2012_ULT_chs.iso
# 序列号:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC
CUDA Toolkit 8.0 安装
CUDA Toolkit 8.0 安装比较简单,按照提示一步步操作就可以,我下载的是网络版的,只要确保电脑能上网就行。安装驱动过程中画面会出现几次闪烁熄屏,是正常现象。
cuDNN v6.0 安装
把下载下来的安装包解压到CUDA的安装路径(默认C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0)的目录下,然后在Windows环境变量Path中添加动态链接库cudnn64_6.dll的路径(默认是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\cudnn-8.0-windows10-x64-v6.0\cuda\bin), 重启生效就可以了。
GPU环境测试
Visual Studio 2012、CUDA Toolkit 8.0、cuDNN v6.0都安装好后,可以用Visual Studio 2012打开(默认路径C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0)下的Samples_vs2012.sln工程,将1_Utilities文件夹下的deviceQuery右键设为启动项目,然后直接开始执行不调试,得到下图结果就可以了。其它例程有兴趣也可以运行看看效果。
安装tensorflow-gpu
根据environment-gpu.yml创建carnd-term1:
conda env create -f environment-gpu.yml
由于安装过程中报错:
tensorflow_gpu-1.3.0-cp35-cp35m-linux_x86_64.whl is not a supported wheel on this platform.
发现tensorflow_gpu-1.3.0-cp35-cp35m-linux_x86_64.whl不是为windows系统准备的,所以将environment-gpu.yml中替换成了tensorflow_gpu-1.3.0-cp35-cp35m-win_amd64.whl,由于是要访问国外的网站,需要翻墙并开启全局代理,网速可能不太稳定,有时候还会连不上,做好心理准备。
environment.yml文件具体内容如下:
name: carnd-term1
channels:
- https://conda.anaconda.org/menpo
- conda-forge
dependencies:
- python==3.5.2
- numpy
- matplotlib
- jupyter
- opencv3
- pillow
- scikit-learn
- scikit-image
- scipy
- h5py
- eventlet
- flask-socketio
- seaborn
- pandas
- ffmpeg
- imageio=2.1.2
- pyqt=4.11.4
- requests
- pip:
- moviepy
- https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.3.0-cp35-cp35m-win_amd64.whl
- keras==2.0.9
终极测试
基于CPU或者GPU搭建好无人车开发环境carnd-term1后,可以进行最后的测试。首先,下载我们要运行的测试环境的仓库:
git clone https://github.com/udacity/CarND-Term1-Starter-Kit-Test.git
cd CarND-Term1-Starter-Kit-Test
然后激活conda的carnd-term1环境后运行jupyter notebook:
activate carnd-term1
jupyter notebook test.ipynb
浏览器会自动跳转到 http://localhost:8888/notebooks/test.ipynb 网址,经测试,jupyter notebook的每个单元都能够正常执行,没有错误,说明Windows环境下的carnd-term1已经完全ok了。效果图如下:
总结
“好的开始是成功的一半”,搭建好开发环境后,我们就可以专注于学习无人车相关的知识和编程实现上了。Perfect!