机器学习 + NFT,跨界联合可以擦出什么火花?
前几天在Github上看到一个用SN-GAN技术生成punk的项目,项目地址:https://github.com/teddykoker/cryptopunks-gan,跑了一遍感觉很有趣,所以就研究了一下生成对抗网络(GAN)的相关内容,详见下文:
一、GAN原理介绍
想要了解GAN,推荐首先阅读IanGoodfellow写的paper:“Generative Adversarial Networks”(PDF:https://arxiv.org/pdf/1406.2661.pdf),这篇paper算是这个领域的开山之作。
接下来以图片(NFT常见的表现形式)为例,解释一下GAN的基本原理。假设我们有两个网络,G(Generator)和D(Discriminator)。正如它的名字所暗示的那样,它们的功能分别是:
G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记作G(z)。
D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。
最后博弈的结果是什么?在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。
这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片。
以上只是大致说了一下GAN的核心原理,如何用数学语言描述呢?这里直接摘录论文里的公式:
简单分析一下这个公式:
整个式子由两项构成。x表示真实图片,z表示输入G网络的噪声,而G(z)表示G网络生成的图片。
D(x)表示D网络判断真实图片是否真实的概率(因为x就是真实的,所以对于D来说,这个值越接近1越好)。而D(G(z))是D网络判断G生成的图片的是否真实的概率。
G的目的:上面提到过,D(G(z))是D网络判断G生成的图片是否真实的概率,G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此我们看到式子的最前面的记号是min_G。
D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大(max_D)。
那么如何用随机梯度下降法训练D和G?论文中也给出了算法:
可以看到绿色框中是两步计算的具体算法,红色框内是两步的不同之处。第一步我们训练D,D是希望V(G, D)越大越好,所以是加上梯度(ascending)。第二步训练G时,V(G, D)越小越好,所以是减去梯度(descending)。整个训练过程交替进行。
二、 GAN的改进DCGAN原理介绍
深度学习中对图像处理应用最好的模型是CNN,那么将GAN和CNN结合最好的尝试就是DCGAN。
DCGAN的原理和GAN是一样的,这里就不在赘述。它只是把上述的G和D换成了两个卷积神经网络(CNN)。但不是直接换就可以了,DCGAN对卷积神经网络的结构做了一些改变,以提高样本的质量和收敛的速度,这些改变有:
取消所有pooling层。G网络中使用转置卷积(transposed convolutional layer)进行上采样,D网络中用加入stride的卷积代替pooling。
在D和G中均使用batchnormalization
去掉FC层,使网络变为全卷积网络
G网络中使用ReLU作为激活函数,最后一层使用tanh
D网络中使用LeakyReLU作为激活函数
DCGAN中的G网络示意:
三、 DCGAN实践
这一节咱们就用DCGAN做一个自动生成动漫人物头像的实践:
首先要获取用于数据训练的原始图片,之前punk的例子用的1817个punk的图片并存储于cryptopunks-gan/data/,这里咱们再用另一个例子:https://github.com/carpedm20/DCGAN-tensorflow。直接使用它的源码,在data文件夹中再新建一个anime文件夹,把图片直接放到这个文件夹里,运行时指定–datasetanime即可。这里的原数据使用从https://konachan.net/ 上爬取的动漫图片,截取头像后如下图所示:
之后运行程序进行训练:
以下分别是跑完第1、10、200个epoch的结果:
四、 conditional GAN
上面的程序可以生成无数随机组合的图片,但那只是完全的随机生成,你无法控制生成出的人物的属性。而使用conditional GAN,我们可以指定生成人物的属性,如发色、眼睛的颜色、发型,甚至是服装、装饰物,从而生成具有指定属性的图像。基本原理可以详见论文:https://arxiv.org/abs/1605.05396。
我们的目标实际上是通过“文字”生成“图像”。为此我们需要解决以下两个问题:
如何把文字描述表示成合适的向量。
如何利用这个描述向量生成合适的图片。
为达成以上目的,论文作者分别对D和G做了改进,即GAN-CLS和GAN-INT,这里就不展开将技术细节了,可以在论文里看详细的推导过程。
对于深度学习,样本数量越多,效果就会越好,所以这里的GAN-INT是对效果的提升有帮助的,实验中验证了这一点。
作者把上面的两种改进合在一起,就成了GAN-INT-CLS,也是这篇文章的最终方法。
放一张论文作者实验的图,他是做了花的生成,最上面一行是Ground Truth,下面依次是GAN,GAN-CLS,GAN-INT,GAN-INT-CLS:
五、 conditional GAN 实践
大家可以试一下这个使用了CGAN的网站:https://hiroshiba.github.io/girl_friend_factory/index.html
点击上方的“無限ガチャ”,开始生成,选择属性,先生成金发+碧眼(左),再生成黑发+碧眼(右),多次点击生成按钮可以生成多个:
网站还有很多功能,大家可以自己探索。
六、 进一步升级的实践
前面咱们举的例子输出的图片都不是特别真实,这里的要讲的实践做的更加完善,直接上
网站:https://make.girls.moe/#/
Github:https://github.com/makegirlsmoe
论文:https://makegirlsmoe.github.io/assets/pdf/technical_report.pdf
下图左侧为通过属性blonde hair, twin tails, blush, smile, ribbon, red eyes生成的人物,右侧是通过属性silver hair, long hair,blush, smile, open mouth, blue eyes生成的人物,都表现得非常自然,完全看不出是机器自动生成的:
进入网站:
点击生成:
这里会随机生成一个图片,我们选择属性,比如粉色长发,蓝眼睛:
其他属性也可以自行实践,这里就不多演示,最后你所有生成的图片会在历史中保存:
这里再谈一下支撑以上网站的论文中对GAN的改进之处:
改进一:更高质量的图像库之前使用的训练数据集大多数是使用爬虫从Danbooru或Safebooru这类网站爬下来的,这类网站的图片大多由用户自行上传,因此质量、画风参差不齐,同时还有不同的背景。这篇文章的数据来源于getchu,这本身是一个游戏网站,但是在网站上有大量的人物立绘,图像质量高,基本出于专业画师之手,同时背景统一。
除了图像外,为了训练cGAN,还需要图像的属性,如头发颜色、眼睛的颜色等。作者使用Illustration2Vec,一个预训练的CNN模型来产生这些标签。
改进二:GAN结构此外,作者采取了和原始的GAN不同的结构和训练方法。总的训练框架来自于DRAGAN(arxiv:https://arxiv.org/pdf/1705.07215.pdf),经过实验发现这种训练方法收敛更快并且能产生更稳定的结果。生成器G的结构类似于SRResNet(arxiv:https://arxiv.org/pdf/1609.04802.pdf):
判别器也要做一点改动,因为人物的属性相当于是一种多分类问题,所以要把最后的Softmax改成多个Sigmoid:
七、 总结
这里总结一下主要的资源:
生成punk Github:https://github.com/teddykoker/cryptopunks-gan
《深度学习框架PyTorch:入门与实践》没来得及整理这部分,很好的学习资源,讲解跟明确:Github:https://github.com/chenyuntc/pytorch-book
DCGAN测试源码:https://github.com/carpedm20/DCGAN-tensorflow
makegirls网站:https://make.girls.moe/#/
Girlfriend网站:https://hiroshiba.github.io/girl_friend_factory/index.html
这类技术可以在一定程度上代替插画师类的职业了,或者NFT的创作也可以用此来做某项目的plus(原理上只要有训练图库,就可以自动生成新的NFT)。更多使用方案还需要继续探索。
机器学习 + NFT,跨界联合可以擦出什么火花?相关推荐
- 雀友腾讯跨界联合 北京打造全球顶级麻将锦标赛
北京2018年7月30日电 /美通社/ -- 7月28-29日,雀友.腾讯强强联手举办的2018TMT腾讯麻将锦标赛国标夏季赛在首都北京举行,麻将锦标赛是由腾讯游戏与腾讯棋牌主办,腾讯欢乐麻将.麻将机 ...
- 重庆华侨城跨界联合潮牌T.M.D PCP发财潮流文化艺术聚会国庆开档
随着95后"Z世代"的逐渐崛起,潮流文化艺术逐渐火热,开始为当代年轻人的生活状态和品质代言,成为年轻人彰显独特个性与品位的一种生活方式.由此,不少知名品牌和企业纷纷玩起了联合跨界, ...
- 【品牌跨界联合营销方案合集】房地产、快消品、电商平台、短视频跨界品牌联合营销活动方案(20份)
品牌之间如何联合营销,营销策划活动方案该怎么做? 我是 左木杨,我的营销知识库已经收集了10000+品牌营销方案,欢迎全国对营销感兴趣的朋友一起加入进来. 今天为大家精选了20份品牌跨界联合营销策划方 ...
- c语言修仙受控可看吗,强推三本神奇到爆的小说,c语言修仙,程序员与修真会擦出什么火花...
大家好,我是小龙.今天我给大家推荐三本神奇到爆的小说,c语言修仙,程序员与修真会擦出什么火花! 一<c语言修仙>[一十四洲] [简介]: 林浔是一个程序员,通宵编代码后发现自己身体内多了一 ...
- 华为鸿蒙热水器,美的华为跨界联合!搭载鸿蒙OS的美的产品双11上市
[宅秘新闻]在前段时间的华为开发者大会上,华为正式发布了鸿蒙OS 2.0.华为消费者业务软件部总裁王成录当时表示,美的等家电品牌很快就会推出基于鸿蒙OS 2.0的家电产品.11月11日,美的集团官方宣 ...
- 光明日报:当教育遇上区块链,会擦出什么火花
说起现在最火的新兴技术,区块链必是处在风口上的答案之一.日前,京津冀大数据教育区块链试验区成立,为"区块链+教育"的融合发展之路,提供了一个新的窗口. 当传统的教育行业与区块链相遇 ...
- 鸿蒙系统联合,跨界联合 华为鸿蒙系统赋能厨电业
2020 年华为开发者大会近日召开,华为鸿蒙系统正式升级至 2.0 版本. (图片来源:IT之家,侵删) 会上华为消费者业务软件部总裁王成录表示,鸿蒙 2.0 已经与国内包括美的,九阳,老板等头部厂商 ...
- 5G,上天了!卫星和基站擦出了火花?
大家好,我是无线深海,我们好久不见. 本期我们来聊聊卫星通信,以及卫星通信和地面通信的融合:非地面网络的故事. 对于5G来说,这可能只是后半场的锦上添花:但对仍处于畅想中的6G来说,空天地海一体化通信 ...
- Golang 和 lua 相遇会擦出什么火花?
在 GitHub 玩耍时,偶然发现了 gopher-lua ,这是一个纯 Golang 实现的 Lua 虚拟机.我们知道 Golang 是静态语言,而 Lua 是动态语言,Golang 的性能和效率各 ...
最新文章
- Java 事件适配器 Adapter
- [bzoj3670][2014湖北省队互测week2]似乎在梦中见过的样子
- Go加密解密之DES
- c语言 字符转int型,C语言—类型之间的转换
- vue-router vue路由
- sql删除主键_产品经理的第一节SQL课——ID到底是干什么的?!
- shell的单引号与双引号
- axure9数据统计插件_数据分析太棘手?常用8大统计软件解决难题!
- 宁波市中学生计算机程序设计,宁波市第26届中小学生计算机程序设计竞赛初赛试题(小学组)...
- 如何在 Windows 下像 Mac 一样优雅开发
- 高速列车运行调度控制仿真软件SimTrain
- 信鸽推送接收通知点击打开相应Activity
- 什么表示计算机的存储容量,计算机的存储容量是指它具有的什么
- Command CompileAssetCatalog emitted errors but did not return a nonzero exit code to indicate failur
- 深度学习图像标注软件LabelMe使用方法
- 这就是你日日夜夜想要的docker!!!---------三分钟带你玩转docker命令
- 易语言零基础入门视频教程 易语言自学全套教程
- 数字生活场景升级,智能音箱进入“存量战”
- 教你使用ppt制作图文并茂的课件
- PCB信号完整性分析--干货!(电子工程专辑微信公众号)
热门文章
- Java爬取京东商品数据
- 北大信管系师生到访百分点科技 共同交流数字经济人才培养建设
- html往WPS粘贴格式乱,WPS文档怎么清除格式解决复制粘贴格式错乱的问题
- 华为S7900产品概述
- 【数据结构】折半查找及其二叉判定树画法
- HTML5期末大作业:个人空间网站设计——个人主页介绍(6页) HTML+CSS+JavaScript web课程设计网页规划与设计 web学生网页设计作业源码 学生DW网页设计作业成品
- 记录第一天工作--Java时间类型转换:Date转换为时间戳
- Vue 版sticker 贴纸实现
- 猜出这些程序猿专属灯谜,2019全年无BUG!
- 消失的封建怪现象 中国古代之六大奇异