康凯 360云计算git
女主宣言github
在中央美院2019届研究生毕业做品展中,迎来了一位特殊的毕业生,她的年龄只有1岁零10个月,可是她的画做却同其余同窗的做品一道参加了展览。这是什么状况呢?下来跟随做者一块儿去认识下夏语冰同窗,同时学习下快速成为一名有艺术水准画家的妙招吧。算法
PS:丰富的一线技术、多元化的表现形式,尽在“360云计算”,点关注哦!docker
1ubuntu
一个画家的诞生bash
在艺术领域,尤为是绘画中,人类经过在图像的内容和风格之间构成复杂的相互做用,掌握了创造独特视觉体验的技能。到目前为止,该过程的算法基础仍然是未知的,而且不存在具备相似能力的工程项目。然而在其余视觉感知的相关领域,例如物体检测和人脸识别,由深度神经网络为基础的计算机视觉模型带来了近乎甚至超越人类的表现。为了更快的运行起服务,咱们会使用一些预训练好的深度神经网络模型和一台已经安装配置好 NVIDIA driver, CUDA Toolkit 10 和 nvidia-docker2 的 GPU 工做站。Style Transfer 能够帮助咱们创造出和艺术家做品相比几乎肉眼没法区分的艺术图像,模型会将一幅肖像或风景画与一副或几幅艺术家做品图像的风格相结合,从而获得一张风格迁移的全新艺术做品。具体效果如上所示,以 Figure 1 莫奈的《日出·印象》为例,Figure 3 的内容和原始图像 Figure 2 相近,除此以外天空中还呈现了 Figure 1 中的橙黄色和草绿色,而绘画笔法上也继承了莫奈的笔触,画面的总体色调和 Figure 1 一致。能够看出,算法对提供绘画素材的风景图片和提供绘画风格素材的《日出·印象》二者的处理方式是不一样的,对前者着重保留画面内容,对后者则是要剔除掉其内容而保留绘画风格。服务器
2网络
绘画面临的问题框架
在咱们正式开始以前,咱们还须要完成工做环境的准备和安装,包括运行软件所须要的类库,框架和软硬件依赖。首先,由于咱们不想花费数小时甚至数周来进行训练和测试。咱们会将图形处理单元 GPU 与传统 CPU 一块儿使用,以加速咱们的深度学习算法并将等待时间缩短到几分钟。先简单介绍下 nvidia-docker , nvidia-docker2.0 是一个简单的包,它主要经过修改 docker 的配置文件来让 docker 使用 NVIDIA Container runtime; nvidia-container-runtime 才是真正的核心部分,它在原有的 docker 容器运行时 runc 的基础上增长一个 prestart hook, 用于调用 libnvidia-container 库。curl
它们之间的关系能够经过下面这张图关联起来:
工具介绍完毕,如今咱们只须要安装 Docker,nvidia-docker2 和相应的 GPU 驱动程序。其他的依赖项将包含在 Docker 镜像中,经过编辑 Dockerfile 以完成镜像构建,并保证启动的不一样容器的环境一致性。
3
准备绘画工具
如今咱们只须要一个地方来运行咱们的项目。公司线上的全部 GPU 资源都是由几个不一样区域的 k8s 集群统一管理,经过编辑 yml 配置文件来完成 Pod 正常的调度到 GPU 机器上的需求。可是开发环境我更倾向于选择云主机,好比私有云的 GPU 服务器,公有云 P2 AWS EC2 实例,开发环境里的 GPU 工做站,不管哪一种实例,都能帮助咱们在几个小时以内快速落地应用。接下来咱们须要安装 NVIDIA 驱动程序和 nvidia-docker2, 我整理了一个安装脚本:#!/bin/bash
# Install NVIDIA drivers 418.87sudo apt-get install --no-install-recommends -y gcc make libc-devwget -P /tmp http://cn.download.nvidia.com/tesla/418.87/NVIDIA-Linux-x86_64-418.87.00.runsudo sh /tmp/NVIDIA-Linux-x86_64-418.87.00.run --silent
# Install nvidia-docker2curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -distribution=$(. /etc/os-release;echo $ID$VERSION_ID)curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.listapt update && apt install nvidia-docker2sudo pkill -SIGHUP dockerd
# Testdocker run --runtime=nvidia --rm nvidia/cuda:9.0-devel-ubuntu16.04 nvidia-smi
若是一切正常,您将得到如下输出:
4
To Draw You Must Close Your Eyes And Sing
没错,这又是一句毕加索说过的话, 想要画画你必须学会闭眼歌唱。
终于到最后一步部署机器学习算法了,演示项目地址在这里:
https://github.com/albarji/neural-style-docker.git
构建镜像
docker build . -t neural-style:dev-0.0.1
开始画图
./scripts/fake-it.sh goldengate.jpg monat.jpg如今,您只需将生成的图像下载下来欣赏,或者将不一样 stage 生成的做品组装成 GIF。Eurek!
5
References and Notes