(Ubuntu+Tensorflow+CUDA8.0+cudnn,新鲜靠谱版)利用DL学梵高作画---实战记录和心得

本文主要是介绍(Ubuntu+Tensorflow+CUDA8.0+cudnn,新鲜靠谱版)利用DL学梵高作画---实战记录和心得,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:老宅

时间:2017年3月

硬件:Core i7-6700;16GB;Nvidia GeForce GTX1070;500G SSD (PS:搞DL的实战必须用好平台,这里就不多废话了)

平台:台式PC

软件:Linux 对应的GTX1070驱动;cuda8.0;cudnn 5.1;GPU支持的Tensorflow;Linux 14.04 LTS

这里首先要提一句,因为博主写这篇文章的时间是2017年的3月,至今为止,文中的部分连接已经失效,比如,Tensorflow的地址可以改为清华的镜像站:https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/gpu/

前言——网上诸多“教程“的一些个人看法

首先,老宅的这次DL实践,借鉴的教程来自CSDN大神,七月在线的CEO——July在2016带领公司另外两位同事搞出来的,教程原址:

http://blog.csdn.net/v_july_v/article/details/52658965,原文叫做《教你从头到尾利用DL学梵高作画》。

前人栽树,后人乘凉。我的DL实践就是在这篇教程的指导下起步的,本文部分图片借鉴原图。

实验最后成功了,通过1000次迭代,确实,计算机学会了梵高的作画方式,后面会贴出作画的效果图。

在本文的最后,会讲一讲我对使用DL教计算机学习作画的一些理解和考虑日后所要做的一些改进,这个写在最后

————————————————————分割线——————————————————————

再罗嗦一句:个人理解,Linux就是极客们搞出的一个怪胎,如果你是纯小白,那,,,做好心理准备吧,这次起步,我倒腾了好久好久。。。

再再罗嗦一句:一定要按本文的顺序来操作,谦虚、谨慎、客观、老实的操作。。。

再再再罗嗦一句:请认真的体会这句话——如果你想在技术的广度和深度上再上一个层面,良好的英语水平和高等数学的基础都是必选项。不认可?那么往下看!

一、软件下载和准备

操作系统:大企鹅Ubuntu14.04。

安装方式:U盘安装

准备方式:一个8G的空U盘,从ubuntu官网下载ubuntu14.04LTS版。

LTS理解为时 ,long time trusty,所以,本教程强烈推荐,

下载地址:http://www.ubuntu.com/download/alternative-downloads(下载地址,选择64位下载)

这里讲一句:必须用英文版,ubuntu确实有中文版,而且,可以在后面安装的过程中选在安装中文版,但是经本人实践发现:当你选择中文安装界面之后,在安装显卡驱动时,输入相应的命令,系统的反馈时菱形,具体原因这里不解释,借鉴教程的一句话:外来的和尚会念经

 

硬件驱动:Linux版GTX1070驱动

 

下载地址:http://www.geforce.cn/drivers

下图为笔者操作界面:

 

在出现的结果中,笔者使用的是367.44,如图

 

 

CUDA 8.0

只要是了解DL的人,肯定都知道CUDA8.0,所以

官网下载:https://developer.nvidia.com/cuda-toolkit

看图:

点击那个硕大的绿色的 DOWNLOAD,进入如下页面:

然后,页面下部——>依次点击:Linux,x86_64,Ubuntu,14.04,runfile(local),然后,如下图:

点击Download(1.4GB)

后面就不用我多说了,你不可能是连下载都不会的超级小白。

 

 

cudnn准备

首先,心里准备:比之前麻烦一点点,因为他家网站让你注册,然后填写个什么问卷。

地址:https://developer.nvidia.com/cudnn

 点击进入后如下图:

先点击Register,然后是下面的页面:

点击Join now,然后进入下面页面:

然后,就是该填写信息了,这里笔者废句话:为啥他们要求13岁以上呢?

后面就是问答页面了,考验你英语基本读和理解能力的地方到了。所以,如前文所说,英语好一点在技术晋级时是必选项。

 

 

然后:重点来了:本文采用的Tensorflow是网络安装,pip install 方式。经笔者多次实践,诸多tensorflow的安装方式,比如bazel,比如anaconda,安装过程要么需要某种workspace,要么就是哪里设置不小心,导致安装位置不对等等,对于小白的你,使用pip install的方式最靠谱,也入手最快。

 

二、平台搭建

下面,是具体平台搭建过程:

首先,鸣谢百度经验上传者,以及百度经验的最初产品设计者和开发者。

U盘系统盘及安装教程:http://jingyan.baidu.com/article/eb9f7b6d8536a8869364e813.html

这里注意几点:

首先,笔者的台式PC使用华硕主板,该主板有一个UEFI模式,有兴趣的你可以深扒一下该模式的优势。

笔者的实践经验对比表明,UEFI模式比非UEFI模式更快启动安装状态,而且安装时不使用系统自带显卡驱动。

第二:切记!!!使用 英文安装

第三:安装时的具体分区操作请自行百度。

 

驱动需要在字符界面下安装

步骤:

1)进入Ubuntu图形界面

2)插入U盘,将内容拷贝至Desktop文件下

3)点击左上角,输入terminal,如下图

4) 将命令框图标拖动到左边栏里或者桌面,以便使用。

5) 点击Terminal,然后

输入:sudo -i

输入 :开机密码 ,回车

输入  sudo apt-get install vim

          sudo vi /etc/default/grub

(这里的输入,注意必要的空格)

6) 此时系统会进入一个文本页面(这就是传说中的Vim)。

           在第20行前后会出现

           GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"。

           将光标移动到这个命令最前端,

           然后键盘点击Esc键,再点击y键两次,点一下p键。

           就会将本条指令复制一个放到下一行。然后点击i键,就能进行编辑了,

           在本行命令前面添加#号,然后移动到复制出来的那条,

           修改quiet splash为text,按Esc键。

           Shift +:,输入wq,回车。

      此时会调回命令框界面,

      输入sudo update-grub,回车

      输入sudo reboot,回车。

      随后,系统重启,如果你在安装Ubuntu时,计算机原有一个其他系统,那么重启后首先会遇到一个选择界面,

      这时选择*Ubuntu,即可进入系统,由于之前的操作,本次登录Ubuntu是文字界面。

      重启后进入字符界面,

      按照提示输入你的用户名,回车

      输入密码,回车

    输入sudo  -i,回车

    输入密码,回车

    此时,需要使用linux的cd命令,这时需要输入下面命令:

    cd /home/[输入到这里时,可点击Tab键,系统会自动匹配]/Desktop/   回车   (注意:Desktop后面的 / 符号,务必要输入)

    这时输入 ls

    会显示刚才拷贝到桌面上的三个文件名称

    然后,输入

     chmod +x NVIDIA-LIN…(这个按Tab键自动匹配) 回车

     再次输入

     ./NV...(这个按Tab键自动匹配) 回车

刚才的操作如下图:

按回车键后出现

…………………………………………………………………………………………………………………………………………………………………………………………………………………………….

说明开始安装

 

期间会出现数次让你选择的字样,你们看,每次操作请各位仔细看,这里老宅不再多说,只要英语水平够,操作不是问题,基本都是左右方向键+回车。

 

 

下面,以同样操作安装CUDA8.0,在完成了

chmod +x cuda[此时点击Tab键] 回车

./cuda[此时点击Tab键] 回车

之后,系统会先有一段长长的协议,阅读这段协议,需要你按住空格键,系统的提示文字会自动滚屏,直到出现

如下图字样:accept/decline/quit:

此时输入:accept 回车

根据系统提示,并不是一路需要输入y,而是如下图,第一个需要输入

n 回车

这里需要注意其中一个地方需要填写N才行,不能写Y。如图

其余操作如图

然后回车等待就行

 

顺利的话,等待可能不到一分钟就可完成安装。

这时,需要输入

sudo vi /etc/default/grub

出现文本界面,也就是刚才修改quiet splash 为text的地方

如前所示,以相反的操作。

点击 i键

将带有quiet splash那行代码前面的 # 删掉

将刚才复制出来的,修改成带有text的哪行代码前,加 #

然后,点击Esc键,

点击Shift + :   回车

输入 wq 回车

此时,再次输入 sudo update-grub 回车

sudo reboot 回车

等待系统重启

 

下面是将桌面上的cudnn安装进Ubuntu

在系统重新启动后,点击Terminal

输入sudo -i 回车

输入登录密码 回车

输入

cd  /home/***(自己的用户名)/Desktop/  回车

输入

tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz 回车

sudo cp cuda/include/cudnn.h  /usr/local/cuda/include 回车

sudo cp cuda/lib64/libcudnn*  /usr/local/cuda/lib64 回车

sudo chmod a+r /usr/local/cuda/include/cudnn.h/  usr/local/cuda/lib64/libcudnn*  回车

 

至此,前期准备工作都已完成。

下面,输入如下命令:

sudoapt-get install python-pip python-dev Python-scipy Python-numpy Git

 

由于使用Bazel等等其他工具安装Tensorflow总是要事先配置各种各样的环境,博主作为一个懒人,在认真看了Tensorflow的安装提示后,总结了一种安装方法,请务必按照下文的顺序输入代码并及时回车!

 

首先,输入

python --version 回车

然后,输入如下(看清,不要错):

sudo pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.1-cp27-none-linux_x86_64.whl   回车

接下来的等待时间就看你的网速了。。。。。。

待安装完成后,可以测试一下tensorflow是否能够正常使用

测试方法如下:

输入

python  回车

观察一下系统反馈,一般不会出错。如果有error字样,可跟贴本博客,博主会为你解答。

输入如下代码:

import tensorflow as tf  回车

此时,如果安装没有问题,这里有句名言:没有答案就是最好的情况

系统会出现‘>>>’的显示,说明一切正常,效果如下图

说明安装成功,一切正常。

但是,博主曾碰到过这样的问题,如下图:

再然后,操作如下:

在Terminal中输入

sudo vim ~/.bashrc  回车

输入(先点击按键i)

export  LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"   回车

export  CUDA_HOME=/usr/local/cuda  回车

然后,按Esc,

然后,Shift + : ,

输入 wq 回车

在输入  source ~/.bashrc  回车

问题彻底解决。

全部安装过程就到这里了。下面是教计算机学梵高作画的过程:

三、实验:模仿梵高绘画

1.neural-style下载
在这个github网站下载相应代码:https://github.com/anishathalye/neural-style

2.接下来,下载vgg19:
http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat

然后,把vgg放到neural-style的文件夹根目录下

现在,在命令窗口cd  /home/***(你自己的用户名)/Desktop/

   git clone  https://github.com/anishathalye/neural-style.git 

接着你就能在桌面打开这个文件夹了

把你想修改的照片放入example文件夹内,然后在刚才的窗口命令接着输入:

python  neural_style.py   --content  ./examples/***.jpg (此括号内不要复制:***代表你想要使用的图片名称)   --styles  ./examples/ 1-style.jpg (此括号内不要复制:1-style.jpg是梵高星空图片在文件夹内名称,你也可以换其他的风格,改名称就行了) --output  ./examples/$$$.jpg (此括号内不要复制:$$$代表你想要生成的图片名称)

例如我的输入如下python neural_style.py --content  ./examples/1-content.jpg  --styles ./examples/1-style.jpg --output./examples/1-output.jpg

接下来,时博主的实验效果

在计算机学到梵高作品星空的风格之后,让计算机对指定图片进行梵高式处理,在迭代1000次候,计算机成了梵高的徒弟,不过,是个特别实诚的“傻徒弟”,具体原因,先看下面对比图:

首先,是让计算机学习的《星空》

 

然后,是计算机学习之后要修改的我个人的摄影作品《火炬》

最后,迭代1000次候,得到了下面这幅“画作”

 

————————————分割线——————————————

下面是博主对于这次练习的几点体会,也许对于小白的你会有一定的帮助:

1.使用Linux,相比用惯了windows的你来说,上手是需要一定的开发经验的,如果不是抱着对专业学习极大的热爱之情在学习,相信你很快就会对Linux失去兴趣,博主在调试Ubuntu时,翻阅了大量的网上相关“教程”,发现很多敢于吃螃蟹的第一人在初尝整套配置时,有的竟前后折腾了一周之久,来来回回反复安装、调试、测试。。。。。。,相信,初尝Linux的你的世界观一定会在Linux的影响下有所改变。。。。

2.经博主测试,本次“作画”所使用的content文件,即,你需要改变的图片的体积,是对计算机显存有一定要求的,楼主第一次放入的照片体积大于1.0MB,计算机刚刚开始计算及发生了内存溢出。博主完成测试用的图片是经压缩后,体积下降到了100+KB。

3.为什么说计算机是个特别实诚的“傻徒弟”?仔细对比上面三幅图就会直到,《星空》的主色调时蓝色,画面中带有光晕的星星时金黄色,也就是说,虽然历史上传言梵高精神存在问题,他看到的世界与常人不同,但,至少他看到的世界在他眼中的颜色是正常的,即,他在《星空》中描绘的画面,普通人看来,颜色也是正常的。也就是说,如果让梵高本人观察和重画我们要修改的这幅《火炬》,我相信梵高应该采用的描绘《火炬》的主色调应该是红色,而不是蓝色,也就是说,如果计算机是一个“聪明”的徒弟,它看到这幅《火炬》,会按照梵高的绘画方式而不是用色方式,来重画这幅画。从专业角度讲,即:计算机使用这里我们做实验用的DL算法进行学习的时候,不仅学会了《星空》的纹理特征,也学会了《星空》的颜色特征,因此,才出现了带有《星空》的颜色特征的《火炬》。所以,博主认为,这里实验用的DL算法,还有极大的改进空间,具体的修改方法,楼主将在以后的博文中做讲解。

 

完。

PPPS:有问题的,可以跟贴问老宅。

这篇关于(Ubuntu+Tensorflow+CUDA8.0+cudnn,新鲜靠谱版)利用DL学梵高作画---实战记录和心得的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/694318

相关文章

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务