AI也能「抽象派」作画,圆形+方块组合,可微2D渲染下生成抽象人脸

Nvidia发布基于插值光栅化的微分渲染器(DIB-R)生成3D对象模型 Nvidia研究人员将于本月在温哥华举行的年度神经信息处理系统会议(NeurIPS)上介绍他们的模型。 他们提出了一个完整的基于光栅化的微分渲染器,可以通过分析来计算梯度。当包裹在神经网络周围时,他们的框架学会了从单个图像预测形状,纹理和光线,并且展示了他们的框架“以学习3D纹理形状的生成器。 应用非常的广泛,比如从摄像机的实时视频流中提取的静止图像可以立即转换为3-D模型,从而使自动驾驶汽车... 阅读详情

机器之心报道

编辑:杜伟、陈萍

有人将一张方块图、圆形图的组合生成了抽象的人脸!还有人将帆布油画《阿尼埃尔的浴场》还原为直线。

绘画,尤其是草图可以说是传达概念、对象和故事的一种方式。计算机视觉和人机交互方面的草图研究历史悠久,可追溯到 1960 年代。近年来,由于深度学习技术的快速发展,草图应用越来越多,这些技术可以成功地处理草图识别、生成、基于草图的检索、语义分割、分组、解析和抽象等任务。

关于草图的研究也不时的被网友顶上热搜,近日新闻网站 reddit 上就有一篇帖子热度爆表,短短十几个小时热度就达到 800+,原贴内容为:从形状到「脸」- 使用神经网络进行形状抽象的可微 2D 渲染。

c557cdd729cd87cb50fce1f314721c48.png

它的效果是这样的:从动图展示效果来看,一开始输入为 4x4 不同形状的图像,最后生成了人脸轮廓(尽管生成的人脸轮廓有些抽象,但我们还是可以看出是人脸):

a9ed74a4bf37eeb57e3a8e0d3d123400.gif

‍

针对这一展示效果,网友纷纷表示惊艳,但可惜的是,原贴作者并没有给出更多的技术细节,但在评论区中,我们可以从原贴作者的回答中得出一些信息:

原贴作者即项目作者表示:「这是我用于神经渲染的 POC。该模型只是试图最小化输出与真值图像(在本例中为 celeb 数据集)之间的 L2 距离。动图中展示的是训练运行期间验证过程,遵循单一形状收敛。输入形状可以以任何形式开始,但 4x4 网格输入应该是最有趣的, 这一实现效果可扩展到很多应用。我正在考虑写一篇简短的文章,把自己的想法表达出来。」

60b6e6d2a8991eea5622af32cc12a841.png

上面的回复中,项目作者提到了自己并没有写技术文档,不过,也有网友分享了一篇今年 7 月的文章《 Differentiable Drawing and Sketching 》。项目作者表示:「这真的很酷!其实我一直在找类似的东西,但找不到,所以做了这个。」

49f1fddc859bfb92a1faecd6215dbeb5.png

具体而言:这篇文章是来自南安普敦大学的研究者提出了一种自底向上的可微松弛(relaxation)过程:即将点、线和曲线绘制到一个像素光栅(pixel raster)。这种松弛过程允许模型学习和优化端到端的可微程序和深度网络,此外,松弛过程还为网络提供了几个构建块,以控制如何对组合绘图过程建模。值得注意的是,该研究所提方法是自底向上的,这一特性允许绘图操作以能够模拟绘图的物理现实而不是被束缚的方式组成,例如,现代计算机图形学的方法。

d550d5386778b15c07c5d9a5fb7b236a.png

  • 论文地址:https://arxiv.org/pdf/2103.16194.pdf

  • GitHub 地址:https://github.com/jonhare/DifferentiableSketching

论文展示了如何通过直接优化照片生成草图,以及在没有监督的情况下如何构建自动编码器将栅格化手写数字转换为矢量。

520dda926a03f74bc3b4a11ffb6bd5d4.png

虽然论文与reddit项目作者的最终实现效果不同,论文是将图像抽象为点或线段的草图,项目则是将方块和圆形最终生成抽象人脸,但论文采用的方法对项目具有借鉴意义。因此,机器之心对论文《 Differentiable Drawing and Sketching 》中的技术细节进行了介绍。

技术解读:可微光栅化松弛

在这部分内容中,研究者讨论了如何将连续世界空间(continuous world space) W 中定义的点、线和曲线绘制或光栅化到图像空间2f48f1a901c875bb8a152d55183bfc5b.png中。 

他们的目标是提出一种形式化方法(formalisation),使得最终可以定义相对于世界空间参数(如点坐标或线段起点和终点的坐标)可微的光栅化函数。

一维光栅化

研究者首先考虑了对一维点 p ϵ W 进行光栅化的问题,其中 W = R。具体来讲,点 p 的光栅化过程可以由函数 f(n; p) 来定义,该函数为图像空间9ff90eb96870655d8f03c166262f28a7.png中的每个像素计算一个值(通常为 [0 , 1])。这个图像空间的位置又由e4c57881d00ae08171e486d571599164.png给出。

先来看看简单的最近像素(closest-pixel)光栅化函数。如果假设第 0 个像素覆盖点 p 的世界空间中的域 [0, 1),第一个像素覆盖 [1, 2) ,如此类推。然后,最近邻光栅化将真值点 p 映射到一个图像,如下等式(1)所示:

f22b1cb89fe3a0379e5d6d91e413cae6.png

这一过程如下图 2a 所示。2b 则是另一种光栅化方案,其中在两个最近的像素上进行插值。

485ffe1a9cbee64dc7d4930ceadb2812.png

假设当被光栅化的点位于中点(midpoint)时,像素具有最大值,则如下等式(2)所示:

bf8fc1f5e3011811ac9f99d291419fba.png

实际上,这些可以扩展至 2D 的函数在很多计算机图形系统中得到隐式地使用,但很少以我们编写它们的形式出现。

接下来是可微松弛。理想情况下,研究者希望能够定义一个相对于点 p 可微的光栅化函数,这允许 p 优化。等式(1)给出的光栅化函数对于 p 是分段可微的,但梯度几乎在所有地方都为零,这是没有用的。等式 (2) 在最邻近 p 的两个像素中具有一定的梯度,但总体而言它的梯度也几乎处处为零。

因此,研究者想定义一个光栅化函数,它对所有(或至少大部分)可能的 n 值都具有梯度。这个函数几乎在任何地方都应该是连续的和可微的。抗锯齿光栅化方法对如何实现这一点给出了一些提示:该函数可以根据 n 和 p 之间的距离为每个 n 计算一个值。

N 维中的松弛光栅化

以往定义的所有一维光栅化函数都可以简单地扩展为「在二维或更多维度上对一个点进行光栅化」。

线段可以通过其起始坐标 s = [s_x, s_y] 和结束坐标 e = [e_x, e_y] 来定义。为了开发一组通用、潜在可微的光栅化函数,研究者需要考虑光栅的形式化,就像在一维情况下所做的那样:找到一个函数,该函数在给定线段 f (n; s, e) 的情况下,能够在图像中所有像素位置集合 n 上定义一个标量场。

光栅化线段需要考虑像素与线段的接近程度。研究者高效地计算了任意像素 n 到线段上最近点的平方欧几里德距离,如下所示:

e9c1005dc5aa75279ea0eb2ce8d97617.png

在最近邻光栅化的情况下,有人会问「这条线段是否穿过谈论中的像素」。只有在以下这种情况下才填充:

ecfbaeb6e45130d787c56e0dd0808bdb.png

为了以相对于参数可微的方式光栅化曲线(与参数化无关),研究者遵循了与线段相同的通用方法:计算每个坐标ddbfe0d7f9ccdb8c6d0f6a674474a5d8.png与曲线之间的最小平方欧几里德距离 :

与线段的情况一样,接下来这一距离变换(distance transform)能够与「根据距离运行的光栅化函数」相结合:

1f26ecf41a5eb8bc034e91e2d04114d5.png

扩展至多条线段

为了光栅化多条线段,研究者考虑论了将不同线段的光栅化组合成单个图像。具体而言,他们将光栅化不同线段 {s_1, e_1}, {s_2, e_2}, . . . , {s_i, e_i} 生成的图像表示为在相同图像空间3926a4c2e59e54a6843a5a476687ddab.png上定义的矩阵 I ^(1) , I^ (2) , . . . , I^ (n)。

在最简单的二进制光栅化情况下,研究者认为相应像素的逻辑或(logical-or)可能会产生所需的效果,即将单个光栅化中着色的任何像素作为最终输出中的着色,如下等式(9)所示:

049046d0c964e1af6fe41aaf1a627858.png

研究者还将这种 composition 松弛为可微的,并允许像素值为非二进制(但限于 [0, 1]),如下等式(10)所示:

8d8291edd7d84d200b30006d0498ddf4.png

最终,研究者得到了点或线段构图所需要的全部组件。 

 图像优化示例

为了证明针对真实图像优化原语(primitives)方法的有效性,该研究提供了许多示例。例如图 4 和图 5 利用图 3a 中大小为 200 × 266 输入图像作为目标图像进行优化。

图 4 显示了使用模糊 MSE 损失优化 1000 个点和 1000 条线的结果,并展示了可以实现的整体效果。图 5 显示了使用一系列不同损失从同一起点优化 500 条线段的效果。

此外,该研究还将自动生成的草图与人类绘制的图像进行了比较。图 3b 是用笔(pen and ink)绘制的草图,用于生成图 4 和 5。很明显,草图广泛地捕捉了场景的整体结构和明暗区域。

2e5b33cdc9bec0f4c5ea624f2d6cfb1f.png

最后推荐一下我们的星球,想玩服务器编程的可以加入我们,我们一年会带大家玩7个项目,大家可以修改我们的代码来扩展它的功能,比如监控股票的可以改成监控基金的,或者是多个金融数据产品,然后根据一些均线策略来提醒你的交易策略等等。

目前星球的价格是一年88元(算下来一个月6块多),还有12元的优惠券限时领取。有兴趣的加入我们的,速来。

ac560440bb7aa7adea0e603dc1495187.png

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看200个Python案例!

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情

相关推荐

如何处理动态语言(Python / JS)的“隐形”调用链?

本文揭示动态语言(Python/JS)中静态AST解析导致调用链“断链”的核心问题,提出通过运行时追踪补全图谱的解决方案。基于Code-Graph-RAG的cgr trace机制,分别利用pytest插件与V8 Profiler捕获真实调用路径,将动态边合并至静态图谱,并在权重体系中提升动态边优先级。实践表明,该方法可显著提升图谱覆盖率,实现“结构+行为”双视角理解代码,为MCP与Rerank系统提供可靠支持。

xianyinsuifeng的博客 411

AAAI 2023 | 文字引导的图像编辑,可微矢量渲染器CLIPVG

本文来源 机器之心 作者:网易互娱 AI Lab2022 年是人工智能生成内容(AI Generated Content,AIGC)爆发的一年,其中一个热门方向就是通过文字描述(text prompt)来对图片进行编辑。已有方法通常需要依赖在大规模数据集上训练的生成模型,不仅数据采集和训练成本高昂,且会导致模型尺寸较大。这些因素给技术落地于实际开发和应用带来了较高的门槛,限制了 AIGC 的...

idol24的博客 803

nvdiffmodeling:可微分栅格化应用于3D模型简化任务

nvdiffmodeling 如本文所述,可微分栅格化应用于3D模型简化任务: 外观驱动的自动3D模型简化乔恩·哈塞尔格伦(Jon Hasselgren),雅各布·蒙克伯格(Jacob Munkberg),雅克·莱蒂宁(Jaakko Lehtinen),米卡·艾塔塔(Miika Aittala)和萨穆利·莱恩 执照 NVIDIA Corporation版权所有:copyright:2021。 版权所有。 这项工作在。 如有业务咨询,请联系 安装 需要VS2019 +,Cuda 10.2+和PyTorch 1.6+ 在Anaconda3中使用Python 3.6和PyTorch 1.8进行了测试 一次设置(Windows) 安装Cuda工具包(用于构建PyTorch扩展)。 我们支持Cuda 10.2及更高版本。 选择与已安装的Cuda工具包兼容的PyTorch版本。 以下是Cuda 11.1的示

一张照片,AI生成抽象画(CLIPasso项目安装使用) | 机器学习

最近看到一个比较有意思的项目,可以将照片生成对应的抽象画。AI帮你一键生成一张抽象画。

阿良的博客 1万+

Dify插件实战:实时渲染AI生成的HTML/SVG/Canvas代码

在现代Web开发与AI应用集成中,前端渲染技术是实现动态内容展示的核心。其原理在于浏览器引擎解析HTML、CSS、JavaScript等代码,并将其转换为可视化的用户界面。这项技术的价值在于极大提升了开发效率与用户体验,允许开发者快速构建和迭代交互式应用。在AI应用开发领域,尤其是大语言模型(LLM)集成场景,如何将模型生成的**结构化代码**(如描述UI的HTML或数据图表的SVG)实时转化为可视化组件,成为一个关键需求。这直接关系到**Dify**等低代码AI平台能否提供流畅的、所见即所得的交互体验。本

weixin_42545664的博客 499

SAP BTP开发入门:从PaaS到CAP/UI5的30天学习路线

在云计算与数字化转型的大背景下,企业系统集成与云端扩展需求激增,传统的单点开发模式正面临深刻变革。PaaS(平台即服务)作为云原生的核心概念,将基础设施、开发环境与应用服务统一封装,为企业提供了灵活的扩展能力。SAP BTP正是SAP生态中的PaaS平台,它承载着系统集成、低代码开发、AI服务与数据管理,成为连接S/4HANA等核心业务系统与创新应用的桥梁。对于ABAP开发者而言,掌握BTP不仅是技能升级,更是应对从传统部署向云端订阅模式转型的必由之路。本文从平台基础出发,梳理BTP的核心服务与开发模型(如

weixin_31766003的博客 284

java 自动生成抽象的图片

下载链接:https://pan.baidu.com/s/1PnhjScVj57vv99l5CMp70Q 运行后自动生成抽象的图片,一次生成六张。 效果大致如下图 这次做的是图片生成,以后会持续更新。以后想做游戏开发。希望能用上自动生成的技术。源码有点混乱,希望交流的可以联系。 ...

weixin_44273469的博客 670

FPGA实战:用Verilog实现Costas环载波同步(附Vivado2019.2仿真步骤)

本文详细介绍了如何在FPGA上使用Verilog实现Costas环载波同步,包括核心原理、Vivado2019.2工程配置、代码实现及仿真验证。通过正交下变频、相位误差检测和环路滤波等关键模块的设计,帮助开发者掌握数字通信系统中的载波同步技术,并提供了实用的调试和优化技巧。

k0l1m2n3o的博客 134

特效图片的在线生成

双色图生成器 https://duotone.shapefactory.co/ 炫光效果随机生成器:https://codepen.io/tsuhre/full/BYbjyg PHOTOMOSH(故障效果生成器):https://photomosh.com/ 科技感炫光随机生成器:https://codepen.io/tsuhre/pen/VmdqKL 镜像炫光生成器:http://wea...

有的话没说出来之前,你是他的主人,一旦说出来你就成了他的奴隶||想要干好事,别太把自己当人,别把别人太不当人||认识这个人就是开了一扇窗户,就能看到不一样的东西,听到不一样的声音,能让你思考、觉悟,这已经够了 3508

STM32按键中断切换红绿蓝灯

通过以上步骤,我们实现了使用STM32的按键中断来切换红绿蓝LED灯的功能。在实际应用中,可能还需要考虑更多的细节,如按键消抖、更精确的延时实现等。但上述代码提供了一个基本的框架和思路,可以根据具体需求进行扩展和优化。希望这篇博客对您有所帮助!

2301_79865940的博客 952

Keil5实战:如何高效导出变量数据并实现可视化分析

本文详细介绍了在Keil5开发环境中,如何利用调试脚本高效导出程序运行时变量数据的方法。通过编写脚本自动捕获数据并保存为文件,再结合Excel或Python进行可视化分析,为嵌入式调试与算法优化提供了数据支撑,显著提升开发效率。

silver的专栏 1105

Java实现的图片生成器

一、本图片生成器具有以下功能特性:      1、可以设置图片的宽度、高度、外框颜色、背景色;      2、可以设置图片字体的大小、名称、颜色;      3、可以设置输出图片的格式,如JPEG、GIF等;    &nbsp

程序员的天堂 1270

NTC热敏电阻选型快速指南

NTC(Negative Temperature Coefficient Thermistor)负温度系数热敏电阻器,是由锰Mn,镍Ni,铜Cu,一氧化碳Co等烧结而成的氧化物。其电阻值随温度的升高而减小,即具有复温度系数,故被称为负温度系数热敏电阻。本文对热敏电阻的应用场景,结构特点和选型参数进行总结。

fydar的博客 1295

可微分渲染:Learning to Predict 3D Objects with an Interpolation-based Differentiable Renderer

目录1. 可微渲染简介2. DIB-R原理3. 可微渲染进行三维重建流程 1. 可微渲染简介 三维的物体渲染成二维图像的时候,其实本质上是进行了一系列矩阵变换,插值等操作,这和神经网络有一定的相似之处,渲染相当于前向传播,得到渲染图,而渲染图和输入图像相比较可以定义loss,从而进行反向传播,去优化三维物体的形状与纹理,从而实现基于单张图像的三维重建,并且不再受3D数据集依赖。 当然渲染的过程实现方法有很多,可以自己写shader,也有很多优化,并且是不支持可微操作的,因此可微分渲染的主要难点是去定义一个整

qq_43420530的博客 8620

14、Java 中 TAF 和 FCF 的使用及 Oracle 数据库升级与迁移指南

本文详细介绍了Java中实现高可用性的TAF(透明应用故障转移)和FCF(快速连接故障转移)技术,以及如何将Oracle 9iR2 RAC环境升级到10gR2 RAC,并将数据从OCFS迁移到ASM。通过示例代码和操作步骤,帮助开发者和数据库管理员更好地应对数据库故障和数据迁移问题,提升系统的可用性和性能。

egg99的博客 110

03 - AMDGPU驱动架构概览

本文介绍了AMDGPU驱动的整体架构,重点分析其图形驱动(AMDGPU)和计算驱动(KFD)的双重结构。KFD驱动作为HSA架构的核心组件,包含进程管理、设备管理等模块,其中SVM功能在kfd_svm.c实现。文章详细解析了KFD的核心组件、初始化流程及字符设备接口,并阐述了TTM框架在GPU内存管理中的作用。通过架构图和代码片段展示了AMDGPU与KFD的协作机制,为后续深入理解SVM实现奠定基础。

图形/计算GPU的驱动与虚拟化技术分享园地 3371

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 411

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 235

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 427

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 208

Python3 协程:异步编程的核心机制与实战

协程是解决I/O密集型任务等待瓶颈的高效机制,相比线程更轻量、无锁开销。从yield到async/await的演进,使异步编程语义清晰、易于理解。通过async/await可实现并发执行多个任务(如gather、create_task),显著提升网络请求、爬虫等场景性能。关键在于使用异步库(如aiohttp)替代同步库,避免阻塞事件循环。合理控制超时与并发数,才能发挥协程最大优势。

Lxn2zh的博客 159

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 268

torch.compile 差异仅 1e-6,边界样本预测为何翻转

torch.compile 加速后输出与 eager 不一致,部分预测翻转。逐层对比与 graph break 分析定位到动态分支翻转根因。容差回归仅适用于无分支翻转场景,零容忍场景应禁用编译。

昨日种种,皆成今我。今日种种,皆成新我。 159
上一篇: 5 行 Python 代码就能让你的电脑永不息屏!
下一篇: Python神器!只需一行代码,纯文本秒变Markdown!
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值