专栏首页浊酒清味人工智能造假图片可以有多真实

人工智能造假图片可以有多真实

随着人工智能的火速发展,如今人们在图像问题上面有了十足的成果了。给大家看几张图,大家可以猜一猜这些图片中哪些是真实的照片,哪些是程序生成的图片?

答案是这些图片都是程序生成的图片,在真实世界是不存在的。

01

难在哪里

我们先分析一下AI生成一张接近真实的照片的难度在哪里。AI需要从一堆没有信息的照片开始,通过学习,把这些数据改造成一张十分接近真实的照片。我们将没有信息的初始照片画出来,给大家一个直观的感受:

这张图可以理解成你给程序的输入(事实上它的像素点数要大于实际的输入),当你想要把它转变成真实生活的照片的时候,你需要把每一个像素点的值都要安排得当,这就是所谓人工智能领域的“高维”问题:(1)一张图片的像素点很多,大家可以去百度图片或者google图片中查看,一般都是几百乘以几百的图片,那下面这个图举例,它是一个1213*529的图片,也就是说总的像素点是1213*529=641677个。

(2)像素点的颜色选择太多,现在图片所用的RGB色彩模式,是通过红(R),绿(G),蓝(B)三种颜色强度叠加得到各种各样的颜色,这三种基本原色的强度由0到255间的256个整数调节,所以每一个像素点的颜色选择是有256*256*256=16777216个。要将数万甚至几十万的像素点中的每个像素点从一千多万种颜色选择出正确的一个,这无疑是一个大大大大海捞针的难度,比中彩票还要难。即便你说真实的图片不需要每个像素点都那么正确,而且真实的照片也有很多种,我们依然在生成一张照片上有着巨大的难度。直到2018年大家才集合了大量计算资源生成我们在文字最开始给大家的图片,而这种成功不仅得益于电脑强大的计算能力,更是得益于生成对抗网络(generative adversarial networks)的诞生。

02

生成对抗网络

先跟大家提前做一个约定,我们这个生成对抗网络系列中的“网络”就是所谓的人工神经网络(ArtificialNeural Network),它是如今人工智能为什么这么火的根基所在,也是生成对抗网络为什么能成功的一大基石。我们今后会开辟另外一个篇章对它做一个详细的介绍。

顾名思义,生成对抗网络是主打对抗概念和生成(图片)功能的网络。这个网络架构中有两个网络,一个是生成器(generator)另外一个是判别器(discriminator)。

如上图所示,生成器接收一个随机噪声信号(random noise),然后生成假的图片(fake image);判别器通过对比生成器出来的假照片和训练集(trainingset)中真实照片,判断二者之间的差距。刚开始判别器可以轻易分辨生成器中假照片和现实中的真照片,于是生成器开始提高造假水平,而判别器的“眼力”也随之提升。二者在对抗当中不断提升生成器的水平,直到最后生成器产生的图片可以达到蒙混判别器的水准,那么这个时候对于判别器而言,它也不知道哪个真那个假,真的可以假的,假的也可以是真的。这个便是对抗生成网络的主要思想。

从另一个角度而言,两个网络也扮演了合作的角色,就像是老师和学生一样。只不过这里的老师比较特别,是一个光说不练的主,其本身并不会亲自动手做出东西。学生负责学习画,画完之后给老师看,老师负责告诉学生它的画和大师级别画的差距。学生通过不断训练来提升画作水平,而老师则会在学生每前进一步的时候提出来他和大师画作有多少差距,让学生提高。直到最后,学生学会了画画,老师学会了闭嘴。

03

效果如何

文章最开始的照片是目前水平最高的照片之一。我们来看一下2014年,原作当时的效果:

这两个分别是黑白手写数字和彩色真实照片的图片生成,最右边黄色方框中就是生成的图片,而左侧都是学习的对象,虽然跟我们最开始给大家看的照片差距有点大,但是作为开辟者,其已经有者不错的效果了。

本文分享自微信公众号 - 浊酒清味(gh_39aead19f756)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ​21个必须知道的机器学习开源工具

    我喜欢机器学习开源社区,作为一个有抱负且资深的数据科学家,我的大部分学习来自开源的资源和工具。

    磐创AI
  • laya核心API五分钟速记

    大部分的laya UI组件都可以看做节点,可以看做web开发中,使用JavaScript对html节点进行操作。

    算法与编程之美
  • 深入理解位操作( 一)

    上面这些知识应该是大家都已经了解的,那么接下来便问大家这些操作到底有什么作用?难道仅仅是为了做一些简单的位运算?

    算法与编程之美
  • Java实现常见排序算法(一)

    在开发过程中使用得比较多的算法就是排序算法和查找算法了,今天先盘点一下常见的排序算法中的两个大类交换排序和插入排序。

    算法与编程之美
  • 深入理解动态规划算法 - 凑整数

    从初中开始我们就接触了函数的概念,所谓函数指的就是给定自变量x,根据某种映射规则进行运算后,会得到一个值y。

    算法与编程之美
  • 重磅!!!一文总结Pytorch的8张思维导图!

    【磐创AI导读】本文以思维导图的形式,为大家介绍了深度学习的核心内容,主要包括:深度学习与Pytorch简介、词向量、用pytorch处理常见的NLP和CV任务...

    磐创AI
  • 运筹优化的就业前景,你了解多少?

    学习运筹优化的童鞋们在被各种算法代码虐了无数遍后,发出疑问? 学……学它有前途吗?

    用户1621951
  • Python|NumPy中的argmin(),你值得拥有!

    NumPy(Numeric Python)作为Python的一个很重要的扩展程序库,在用来储存和处理大型矩阵的时候显得尤为出色,可以说专为进行严格的数字处理而生...

    算法与编程之美
  • 解决java RabbitMQ初次启动发送端basicPublish阻塞问题

    https://blog.csdn.net/asd1098626303/article/details/77849562

    算法与编程之美
  • 深入理解动态规划算法 - 爬楼梯

    平时大家都喜欢爬楼梯,有时喜欢一次爬一级楼梯,有时喜欢一次爬两级楼梯。接下来考虑当你开始迈出第一步的情况。

    算法与编程之美

扫码关注云+社区

领取腾讯云代金券