20分钟+1080显卡,能跑多复杂的模型?

news/2024/7/5 8:03:13

点击上方“视学算法”,选择加"星标"或“置顶

重磅干货,第一时间送达

贾浩楠 发自 凹非寺
量子位 报道 | 公众号 QbitAI

20分钟生成复杂的艺术作品,而且还是用英伟达上上代的1080显卡?

现在神经网络上手门槛这么亲民了吗?

没错,这是一个叫做neural-style-pt的风格迁移模型,基于Pytorch实现,而且刚刚开源!

有关这个算法模型的话题在Reddit上才发布一天,热度接近2000。

neural-style-pt,真的酷炫又亲民吗?

丰富的融合方式

neural-style-pt是论文A Neural Algorithm of Artistic Style的Pytorch实现。

论文介绍了一种利用卷积神经网络将一张图片的内容,与另一张图片的风格相结合的算法,就是我们熟知的“风格迁移”网络。

比如,将《星空》的艺术风格映射到一张斯坦福校园的夜景照片上:

或者根据给定图像的不同艺术风格,分别融合进目标图片:

除了“分别”融合,还能把多个艺术风格融进一张图片:

从左上角顺时针开始风格分别为”星空 “+”呐喊”、”呐喊 “+”构图七(瓦西里·康定斯基油画)“、”坐着的裸女(莫蒂里安尼油画) “+”构图七”、”坐着的裸体 “+”星空”。

在进行风格迁移时,添加“-original_colors 1”指令,还可以只改变风格,不改变原图颜色:

1080卡就能跑?

根据后台和优化器的不同,算法运行速度会有很大差异。

在Tesla K80上使用512像素图片迭代500次时间参考:

  • 后台nn、优化器L-BFGS: 117秒

  • 后台nn、优化器 ADAM: 100秒

  • 后台cudnn -优化器L-BFGS: 124秒

  • 后台cudnn -优化器ADAM:107秒

  • 后台cudnn -cudnn_autotune -优化器L-BFGS: 109秒

  • 后台cudnn -cudnn_autotune -优化器ADAM: 91秒

而在GTX 1080上,相同基准下时间更快:

  • 后端nn -优化器L-BFGS: 56秒

  • 后台nn -优化器 ADAM: 38秒

  • 后台cudnn -优化器L-BFGS: 40秒

  • 后台cudnn -优化器ADAM:40秒

  • 后台cudnn -cudnn_autotune -优化器 lbfgs: 23秒

  • 后台cudnn -cudnn_autotune -优化器ADAM: 24秒

结合当下1080卡的售价,不得不说,这样的门槛,对于机器学习来说,已经很香了。

默认情况下,neural-style-pt使用后端进行卷积,L-BFGS进行优化。但会使用大量的内存,可以通过以下方法来减少内存的使用。

使用cuDNN,添加-backend cudnn来使用cuDNN后端。而使用ADAM时,添加-optimizer adam来使用ADAM而不是L-BFGS。

在默认设置下,neural-style-pt在系统上使用了大约3.7GB的GPU内存;切换到ADAM和cuDNN可以将GPU内存占用减少到大约1GB。

如何上手试玩

安装neural-style-pt,首先要准备好Pytorch。

然后,使用下方一句话指令就能安装已经训练好的模型:

python models/download_models.py

安装完以后,上手试玩也很简单,一行代码就能实现:

python neural_style.py -style_image-content_image

如果要载入多种风格,需要分隔不同的图片文件名:

-style_image starry_night.jpg,the_scream.jpg

注意,图片名称要包含完整的地址路径。

基本操作就是这些。

neural-style-pt还有一点强大的功能,就是可以使用多个不同的计算设备来处理高分辨率图像。

不同的设备会输出不同网络层的计算结果。

你可以用-gpu指令控制使用哪些GPU和CPU设备,你也可以用-multidevice_strategy控制如何在不同设备上分割层。

例如,在一个有四个GPU的服务器中,指令“-gpu 0,1,2,3”,指按顺序在GPU 0、1、2和3上进行处理。

同时给出 -multidevice_strategy 3,6,12指令,表示前两层应该在GPU 0上计算,第3到5层应该在GPU 1上计算,第6到11层应该在GPU 2上计算,其余的层应该在GPU 3上计算。

根据你的需求调整-multidevice_strategy,可以达到输出的最大分辨率。

下面是一张4016x2213分辨率图像,是在使用8个Tesla K80 GPU的服务器上生成的:

1080显卡入门,还能“分布式”计算,这么酷炫好玩低门槛的风格迁移网络,赶快来试试吧~

传送门:
https://github.com/ProGamerGov/neural-style-pt

—  —

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

点个在看 paper不断!


http://lihuaxi.xjx100.cn/news/272474.html

相关文章

综述:持续感知系统在边缘计算的应用

作者 | 李桂宏、乔飞来源 | 《微纳电子与智能制造》随着边缘计算技术的兴起,各种各样的感知系统给人类带来了便捷高效的生活。以日常使用的手机为例,工程师为其置入了各种各样的传感器,并通过运行其上的机器学习算法,部署了很多便…

WinForm 实现验证码

private void CheckIdentifyingCode() { Random r new Random(); string str ""; for (int i 0; i < 5; i) { int a r.Next(0, 10); str a;//将数字连接到一块 } Bitmap bm new Bitmap(150, 90);//创建位图对象 Graphics g Graphics.FromImage(bm);//在bm中…

今日宇宙最热科技:人工智能可预测死亡时间,马斯克拿下美空军1.3亿合同!...

今日全宇宙最热科技有&#xff1a;SpaceX拿下1.3亿美空军合同&#xff0c;马斯克又双叒叕要搞事情&#xff01;人工智能可以预测死亡时间了&#xff0c;就问你怕不怕&#xff01;英特尔CEO因曾与员工恋爱被调查发现而主动辞职&#xff0c;自由恋爱也是很不容易&#xff01;阿里…

5行代码,快速实现图像分割,代码逐行详解,手把手教你处理图像 | 开源

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达图像分割&#xff0c;作为计算机视觉的基础&#xff0c;是图像理解的重要组成部分&#xff0c;也是图像处理的难点之一。那么&#xff0c;如何优雅且体面的图像分割&#…

Python人工智能完整学习路线

Python 是人工智能&#xff08;机器学习&#xff09;的首选编程语言&#xff0c;它拥有众多模块&#xff0c;能完成人工智能开发的所有环节&#xff0c;没有任何一种语言使用起来如此顺手。 Python 人工智能的学习路线如下所示&#xff1a; 爬虫 要学用 Python 如何爬取数据…

java项目_JNPF快速开发平台-简单快速高效开发java项目

◆JNPF快速开发平台JNPF快速开发平台采用前后端分离技术、采用B/S架构开发&#xff0c;形成一站式开发多端&#xff08;APPPC&#xff09;使用。使用JNPF开发平台可以简单、快速、高效的构建各种类型java项目。◆JAVA版介绍JNPF.java版采用前后端分离&#xff0c;可将代码直接导…

IronPython系列:Composite Pattern及其实现

最近挺经常做鱼的。对于做鱼的步骤算是熟悉。以烤制为例&#xff0c;主要有三步&#xff1a;洗&#xff08;Clean&#xff09;、切&#xff08;Cut&#xff09;和烤&#xff08;Bake&#xff09;。烤鱼&#xff08;Bake&#xff09;又有两个小步&#xff1a;加热(Heat)和烤(Bak…

学术论文投稿与Rebuttal经验分享

点击上方“视学算法”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达作者丨叶茫知乎&#xff08;已授权&#xff09;来源丨https://zhuanlan.zhihu.com/p/344008879编辑丨极市平台讲座内容&#xff1a; 本文内容主要是基于笔者在学院内部一次分…