细心的同学会发现Intellij IDEA每次发版本的时候都会有不同的启动界面背景,都很比较抽象的艺术图像。

JetBrains的其它产品也有自己独特的设计。

但是这背后是怎么实现的、有什么寓意却很少有人知道。今天让胖哥来带你解开这个答案。

编码的艺术

编码是一门艺术。说到这里你会很容易想到这肯定是利用编程实现的。是的,这里的图像生成器技术用了到机器学习中的神经网络技术。这些生成的图像本质上是前馈神经网络映射函数描绘的!基于传递给网络的确切数据,加上一些预设的生成算法(遗传算法),让这些图片看上去很“顺眼”。目前JetBrains提供了可视生成器,你可以根据自己的喜好来生成桌面背景。

神经网络图片生成体验

只需访问Desktop Art页面或直接转到code2art.jetbrains.com,就可以自己设计上述风格的桌面。打开后在在下拉列表中选择IntelliJ IDEAMPS之类的产品后,只需单击Prescribed按钮,它将以该产品的所有动画效果创建初始屏幕。

选择Mixer,稍等片刻我们可以看到9张不同的图像,每个图像都是由神经网络分别生成的。 你可以在其中混合随意的想法,调整色彩,选取目标,并根据你自己的设定创作出反映内在自我的艺术色彩。

如果这9张图像都不符合您的口味,你可以点击Regenerate获取9张新的新图像,这些图像在某种程度上都与以前的图像有所不同。如果您已经喜欢某些现有图像,你可以点击选中它们,然后按Crossbreed按钮将选中的图像混合生成一些新图像,重复多次,直到找到理想的图像。通过其它一些选项,你可以导出静态图片、动图甚至MP4视频。

技术细节

从技术上讲,该图片生成器的服务器端分为几个部分:

  • 使用TensorFlow构建的基于神经网络的图像生成引擎。
  • 视频渲染引擎,可从图像生成视频。
  • 场景存储服务。
  • 任务队列,用于在服务器组件之间分配CPU和GPU密集型计算任务。
  • 混合器Mixer–通过遗传算法演化生成图像的工具。
    • Mixer模式和图像生成引擎之上还建立了另一个神经网络,该神经网络可以汇总用户的偏好来预测哪些图像更可能是美丽的,这也是神经网络能够越来越了解人类喜好的根本。

有兴趣的可以了解一下。

有时候不得不感叹一下一些伟大的产品的设计思维都是具有创造性和艺术性的,什么时候我们中国的程序员能有这种外部环境,没有KPI,没有996,什么时候我们才能做出伟大的产品。

关注公众号:Felordcn 获取更多资讯

个人博客:https://felord.cn

IntelliJ IDEA启动界面的秘密:当编程遇到艺术的更多相关文章

  1. Android 设置启动界面

    启动界面的意义是为了让后台处理耗时的复杂工作,当工作处理完成后,即可进入主界面.相比让用户等待布局加载完成,使用一张图片作为启动背景,会带来更好的体验. 首先,需要建立一个简单的布局: <?xm ...

  2. 写启动界面Splash的正确姿势,解决启动白屏(转)

    原文链接:http://www.jianshu.com/p/cd6ef8d3d74d 从我学习写第一个android项目以来,我都是这样写着启动界面: 在里面做一些事,比如:第一次启动时拷贝数据. 然 ...

  3. 【No.5 Ionic】修改 应用名,icon,启动界面

    修改 应用名 直接 修改 config.xml中的name 修改icon 和 启动界面 在resources目录有个 icon.png  和 splash.png 文件,直接把文件覆盖执行重新生成命令 ...

  4. iOS-APP中添加启动界面

    iOS,非常高兴的又回到了这个领域.纠结的就业之路...找工作的这段时间里,原本以为是iOS的游戏开发,却一直只有后台的offer,到Android,最后正式上班的时候却被告知调到了iOS开发,当然不 ...

  5. Android应用--新浪微博客户端新特性滚动视图和启动界面实现

    新浪微博客户端新特性滚动视图和启动界面实现 2013年8月20日新浪微博客户端开发之启动界面实现 前言: 使用过新浪微博客户端的童鞋都清楚,客户端每一次升级之后第一次启动界面就会有新特性的介绍,用户通 ...

  6. 开源中国安卓client源代码学习(一) 渐变启动界面

    开源中国安卓client源代码学习(一) 渐变启动界面 准备学习安卓开发, 看到网上有人推荐开源中国安卓client的源代码, 说里面包括了大部分技术, 于是准备好好研究研究. 特开通此系列博客来记录 ...

  7. Qt带进度条的启动界面(继承QSplashScreen,然后使用定时器)

    通过继承QSplashScreen类,得到CMySplashScreen类,然后在CMySplashScreen中定义QProgressBar变量,该变量以CMySplashScreen为父类,这样就 ...

  8. Android开发(25)--framebyframe帧动画并实现启动界面到主界面的跳转

    Drawable animation可以加载Drawable资源实现帧动画.AnimationDrawable是实现Drawable animations的基本类.推荐用XML文件的方法实现Drawa ...

  9. 启动Apache出现问题:一直停留在启动界面

    问题描述:  由于需要php_curl模块,因此直接在php.ini文件将前面的分号去掉  ,但是重启Apache时出现:一直停留在启动界面,Apache无法正常启动,查看错误日志,显示如下: 解决方 ...

随机推荐

  1. 深度剖析目标检测算法YOLOV4

    深度剖析目标检测算法YOLOV4 目录 简述 yolo 的发展历程 介绍 yolov3 算法原理 介绍 yolov4 算法原理(相比于 yolov3,有哪些改进点) YOLOV4 源代码日志解读 yo ...

  2. demo集合

    demos的github地址:https://github.com/zy0628/demos 包含以下demo: 1.图片上传.编辑.合成一张图 需求:1.1.拍照或上传本地相册. 2.2.可以截取图 ...

  3. WebService-问题

    1.引用问题 在用C#对接webservice的时候,常用的方法是下载vs中引用webservice的地址.然后,new对应的client就可以使用了.但在,实际应用中往往会遇到webservice访 ...

  4. 【WHash】更有空间感的感知哈希

    转载请注明出处 背景 在重复图识别领域,对于识别肉眼相同图片,感知哈希效果是很鲁棒的.上一篇文章 [PHash]更懂人眼的感知哈希 介绍的PHash识别效果很好,但是它有一个缺点,只关注低频信息,并没 ...

  5. 1.pipeline原理

    redis基本语法:https://www.cnblogs.com/xiaonq/p/7919111.html redis四篇:https://www.cnblogs.com/xiaonq/categ ...

  6. oracle 11g调优常用语句

    1.查询表的基数及选择性 select a.column_name,       b.num_rows,       a.num_distinct cardinality,       round( ...

  7. Linux查看、开启、关闭防火墙操作

    一.防火墙区别 CentOS6自带的防火墙是iptables,CentOS7自带的防火墙是firewall. iptables:用于过滤数据包,属于网络层防火墙. firewall:底层还是使用 ip ...

  8. IntelliJ IDEA(十二) :IDEA常用配置

    idea版本 2019.3.4 配置JDK File--> Project Structure... 修改项目 jdk和项目语言等级 修改jdk版本 File--> Ohter Setti ...

  9. python3.6连接数据库 小微工作笔记

    连接141 老虎钱包数据库方法,可以连接成功(MYSQL)1 import pymysql 2 conn = pymysql.connect(host='192.168.1.141', port=33 ...

  10. MybatisPlus_01

    目录 1.1 简介 1.1.1 特性 1.1.2 框架结构 2.1 快速开始 2.1.1 2.1.2 yaml文件配置 2.1.3 编码 2.1.4 测试 3.1 思考 1.1 简介 MyBatis- ...