驱动自己的机器人

DJI RoboMaster EP 年初我打算花半年时间研究自动驾驶,以及计算机图形学,于是开始调研开发自动驾驶系统的硬件,最先考虑的是nvidia在2019年发布jetson nano平台时开放的jetbot,基本是一台玩具小车,配备3D打印车身,两个小轮子以及一块jetson nano developer kit,一个camera,官方项目地址,考虑搭建整个车子的硬件平台所需要的成本以及可玩性,我决定不考虑类似玩具方案的car robot,最后我瞄准了DJI robomaster EP,因为它开放了完整的SDK,并且整个机器人平台是用于教育比赛而设计的,可玩性非常丰富,自己也不需要过多的去考虑底层硬件的装配。这样我就可以借鉴jetbot的自动驾驶设计,将其移植到robomaster EP上,打造最原始的自动驾驶开发平台。 Coral Edge TPU As Robot Brain 经过一段时间的动手测试,我决定在robomaster EP上采用的硬件方案是raspberry pi 4 + google edge tpu,具体架构如下: 左边是自动驾驶会用到的一些工具,视觉加速芯片我使用的是google edge tpu,相比nvidia Jetson GPU,它的功耗更低,这样在做视觉运算时不会大量消耗机器人有限的电池电量。 右边是需要自己搭建的一个机器学习运维平台,从数据的收集,模型训练以及测试,最后模型部署,都是自动化的。

March 30, 2023

AI Is Not AI

OpenAI ChatGPT Reference DeepMind Reference InstructGPT Reference 最近看到推特上聊的最多的话题是ChatGPT,很多人对它赞不绝口。对于一个创作者而言将人工智能用于自己的创作流程中,能够快速实现作品的原型,这在商业领域当然是一件很好的事情。chatGPT可以给编剧增加灵感,给找问题的人提供解决思路,给翻译人员提供更精准的语言翻译帮助。那么ChatGPT算不算真正意义上的AI,也就是说它能否通过图灵测试。虽然我们不知道答案,但我们可以确定ChatGPT肯定收集了海量的互联网数据来进行模型训练,最后模型的参数也是惊人的巨大。 首先参考OpenAI官网,我们看下OpenAI模型训练的过程: 训练模型采用了Reinforcement Learning From Human Feedback,首先OpenAI从题词数据库里面抽取样本,标记者会解释该问题的预期答案,然后将样本和预期答案通过GPT-3.5模型进行监督学习(A模型),然后收集对比数据,通过人工的方式将问题得到的多个答案进行排序打分,以此训练奖励模型(B模型),最后输入新的词条到A模型,其输出进入B模型中得到奖励评分,采用PPO方法优化A模型的参数。 我门再来看下OpenAI的DALL-E 2,通过语言描述来生成照片级的图像,当然还有开源版本的Stable Diffusion v2,也是类似的功能。其中采用的机器学习模型是diffusion models,通过连接语言描述与图像之间的关系,从无到有生成一张符合描述的完整的高分辨率图像,这也许在2D图像处理和3D模型制作中给创作者提供很大的帮助。 受到DALL-E工具的启发,Baker Lab的研究人员使用diffusion models来生成新的蛋白质结构,A diffusion model for protein design,通过新的方法研究人员能够快速的组装出具有功能性的蛋白质结构,而在使用diffusion models之前需要通过数以万计的分子进行测试。从文本生成,到文本图像生成,再到蛋白质结构生成,这里面涵盖了通用的模型设计,那么这些模型能否被称之为通用AI,不谈论创造性,我们可以将chatGPT理解为狭义通用AI,因为它的目标就是模仿人类,给出的答案尽量接近人类,比如一个智能搜索引擎,一个开放式的智能数据库,那么能否通过图灵测试,我猜测是不可能。 有了这么多具有启发性的应用之后,我们想象建立一个DeepL-Ops领域,为了保证生产环境的稳定性,我们会有一个chaos agent一直在搞破坏,比如关闭集群的某些服务,极度消耗服务器的网络流量,假装破坏硬盘,之后如果系统还可以正常对外工作,那么这个系统就是可靠的,这项工作我们称之为混沌工程。这里会出现一个问题,工程师无法100%去列举出哪些问题会导致服务异常,需要不断的依靠实际经验去积累,这样我们也就引入了DeepL-Ops训练机制。系统中存在一个chaos agent和一个order agent,前者是搞破坏使得系统故障,后者是修复系统使得系统正常工作,我们设计了一个机器学习模型,当chaos agent搞破坏的时候,order agent去努力修复系统,同时chaos agent也在进化,尽可能的破坏系统让order agent无法修复,如果order agent无法修复系统,agent会根据环境给予的反馈调整order rules generator模型,如果order agent修复了系统,chaos agent会根据现有环境更新chaos rules generator模型。当该模型训练完成之后我们把order agent放到系统中,当系统出现故障时,我们将故障信息输入到order rules generator模型中,从而让order agent去修复系统问题。

December 7, 2022

ETH 主网合并 - 从PoW到PoS

Ethereum 主网合并 在今年的八月份,ETH goerli测试网进行了2.0的合并,我也参与了测试网的合并,整个合并过程是成功的,我采用lighthouse做为ETH Consensus layer,geth做为Execution layer,目前测试网运行的validator节点状态是good。在接下来的九月份,ETH主网将进行2.0的合并,我也单独运行了Consensue Layer和Execution Layer,希望这次重大的合并能够顺利完成。 goerli testnet validator 状态 合并过程 ETH 2.0 Beacon Chain 将首先进行一次Bellatrix升级,从而激活两条链的合并,时间大概会在UTC 2022-09-06,之后当PoW链达到一定工作量难度时,会启动合并程序,PoW的链上数据将合并到PoS Beacon Chain上,PoW到达终止难度的日期大概在2022-09-10 - 2022-09-20。文章最开始的第一张图,可以很直观的看出当开始合并之后,PoW将被废弃,整个网络都将由validator来维护。 Bellatrix升级将在beacon chain epoch 144896开启,Paris升级将在Terminal Total Difficulty (TTD) 58750000000000000000000 开启,当难度到达TTD时,之后的块都将由beacon chain validator生成,生成第一个Post TTD 块大概需要13分钟,当beacon chain能敲定validator生成的新块时,意味着合并成功了。 问题 node ops 节点运维 节点维护者需要运行consensus layer(CL)和execution layer(EL),并且EL需要开启Engine API,然后CL通过JWT认证接入EL。 Staker Validator 质押者 在post merge阶段,validator 需要独立运行EL,并且配置fee recipient地址来获得收益。 contracts 合约#### post merge对合约的影响非常小,几乎所有的接口都是保持稳定的状态。 ETH holder 持有者 合并之后,ETH持有者不需要做任何处理。 Miner 矿工 合并之后,PoW已经被移除,Miner无法再将算力贡献到PoS中。

August 31, 2022

My Web Content Platform

这是我目前使用的内容管理平台的架构,前端的两台google comput engine 用于连接全球互联网以及托管静态站点,后端的集群全部运行在自己托管的ARM64系统平台上,集群内部运行着Cloudflared隧道,当用户请求invisibleart时,请求会通过cloudflare edge network发送到隧道中,cloudflared会将请求发往目标地址wordpress engine,后端的数据库采用的是vitess mysql集群,前期使用过tidb,发现与wordpress存在兼容性问题,最后决定使用vitess,在备份,扩容,和灾难恢复中,vitess还是非常可靠的。

July 29, 2022

The Invisible Art the Legends of Movie Matte Painting Book

我终于在ebay上买到了四年前就想买的书《The Invisible Art》,因为是极其稀缺的书,并且大部分的国外二手书店的物流并不支持直接发往中国,所以我等了很久一直再寻找机会希望能够买到一本比较新的The Invisible Art,最后我找到了ebay上一个商家,通过美国的一家转运中心将书本寄往中国,所有运费以及购买书本的费用加起来是1700RMB。购买这本书的缘由是我想建立自己的一个世界观,不可见的艺术有很多,音乐,计算机,绘画,同样投资也可以称为艺术,这本书虽然主要讲的是电影创作中的Matte Painting技术,但是就如同我们坐在电影院里面看电影一样,我们是感觉不到幕后有这么一群艺术家在为这个电影的故事服务,我们的思绪都是随着故事前行。同样在其他领域,我们使用技术来完成整体之后,我们应该让使用者或者欣赏者感受到的是艺术本身,而不是技巧,技巧是服务于艺术的,通过学习Matte Painting,我们时刻需要记住一点Matte Painting是为故事服务的,当抛开故事通过绚丽的技术去表达你的想法时,没有人可以理解你,因为观赏者已经从作品中看到你了,他已经知道这个是绚丽的特效。做一些思维发散,像演奏音乐,刚开始我们注重的是技巧,最后才是音乐性,我们要让音乐讲故事,这个时候我们要学会其中的Invisible Art技巧,要让听的人被你的音乐吸引进去,而不是做为一个旁观者听你的演奏,优秀的Matte Painting作品就是创造物理真实的场景,同样优秀的音乐家就是让你听懂每一个音符里面的意义。Invisible Art就是把每一个细节做到极致,然后构建出一个宏伟的世界,而在这个宏伟的世界里面,艺术家的每一个雕刻细节都隐藏在其中,这就是我创建invisibleart.pro的原因,学习一个领域,首先要喜欢这个领域,然后就去探索这个领域里的细节。

July 11, 2022

DisneyPlus Light and Magic Lucasfilm

Disney+宣布在7月27号上线关于关于Lucasfilm的纪录片-‘Light && Magic’,总共6集,主要讲述的是工业光魔目前采用的电影特效拍摄技术,让我们更多的了解电影特效的幕后拍摄是如何完成的,从而促进全世界电影制作人创作艺术的发展。感兴趣的同学不要错过,只有在Disney+才能观看这一系列的纪录片。 最后再向大家推荐一部正在筹备阶段的短片《The Monster》,关于反家庭暴力的电影题材,创作者向社会发起了拍摄资金的筹集计划,总共需要筹集到$18000,看了短片介绍之后,我为这部短片投资了$25,以自己的一点点力量希望这部短片能够顺利的筹集到需要的资金并完成拍摄。

July 8, 2022

Invisibleart Workshop 上线

不可见 我建立了一个以invisibleart命名的线上工作室,其灵感来自于一本讲述Matte Painting的书《The Invisible Art: The Legends of Movie Matte Painting》。 因为我对Matte Painting特别感兴趣,并且这本书及其稀缺,在Amazon上价格已经卖到1600RMB,我在五月份的时候通过ebay购买了一本,希望六月份我能正常收到书籍。我主要关注的是其中的invisibleart,电影视效创作就是让你看不出来作品含有人工处理过的痕迹,就像直接用摄影机对着原始场景直接拍摄一样,要做到这一点,我们必须对我们周围的事物特别关注,尤其是细节方面,破旧的楼宇,杂乱的树木丛林,微风吹拂下的花朵,要在数字世界创造这些影像,需要我们训练自己的眼睛,辨别其中的真实细节。从宏伟的角度讲,艺术家每一件艺术品都是以真实性为根基的,从绘画,音乐中我们就可以得知,古人在创作中首先就是向大自然模仿学习,艺术品的特性越接近大自然,就越能让我们感受到艺术的真实感。基于这个理念,我建立了invisibleart.pro网站,网站的目的就是讲述最新的电影技术,包括专业论文和文章的解读,以及作品的发布,invisibleart.pro与blog.cineneural.com的区别在于前者专注于技术领域的细节,而后者主要是集中个人生活和思考的归纳总结。 invisibleart.pro采用wordpress搭建,运行在云端的Raspberry Pi上,后端的数据库使用了TiDB,之后关于技术细节的文章将全部发布到invisibleart.pro,而本博客将继续保持个人生活和思考的更新,因为网站是运行在非IDC机房,所以我也在考虑invisibleart.pro的备份站点,防止因网络原因导致invisibleart.pro无法访问。

June 3, 2022

维塔数码的技术

记录 Weta workshop Weta Digital 最近我花了一个月的时间看完了weta digital && weta workshop的两本书,其中weta digital主要是从事计算机三维图像创作,而weta workshop主要是从事电影前期概念创作,像是生物以及人物的雕刻,武器道具的设计,场景的实际概念设计,这些都是由weta workshop来完成的,随后weta digital根据workshop的概念设计来制作CG人物和生物,并且让这些CG动起来,关于workshop我比较感兴趣的是他们的特效化妆以及精细的生物雕刻技术,而weta digital我们需要学习他们的全部技术,本文主要关注的就是digital部分,我已经将关注的技术点截图粘贴到本文中,因为每一个关键的技术点在时间以及成本上的突破就会给电影后期制作带来质的飞跃,我所指的突破是指该项技术能够以低成本来实现以前未能达到的高度。 第一部分,如何制作The Hobbit: The Desolation of smaug 主要介绍制作过程中的基本流程,首先是概念图设计,接下来就是建模,贴图,材质,光照,Matte Painting,然后动画制作,为了制作逼真的CG,艺术人员通过拍摄自然界的真实照片做为参考,在CG图像里面不断添加细节,从而达到真实的效果。在我看来这些技术都是非常关键的,没有精细的雕刻,是无法完成这些艺术品的。 第二部分,主要介绍影片中龙的塑造以及表演,也是最基本的影视制作流程,其中龙的表情动画采用了动作捕捉技术,建模,动画,特效,光照,每一步的细节都非常到位。 最后就是weta digital在数字图像方面的创新技术。因为自己也准备学习Houdini,节点式的制作流程,让我对Weta技术中的Massive,CityBot,Facial Animation,Deep Compositing,Mari,Tissue特别感兴趣。 Massive: 全称为Multiple Agent Simulation System in Virtual System,用来生成大场景的生物交互,比如成千上百万的军队士兵奔跑以及相互攻击,每一个士兵都由一个AI Agent进行代理控制行为,从而使得场景看上去是真实的,没有人工伪造的痕迹。 CityBot: 顾名思义就是生成城市三维模型。 Facial Animation: 面部表情捕捉技术。 Deep Compositing: 深度合成技术,在CG渲染输出时保存像素的深度信息,然后在合成阶段,这些深度信息会被用于视觉深度上的合成,可以类似的认为是一个2.5D的合成,像体积雾,直接采用深度合成,看上去将更加真实立体。 ...

May 23, 2022

聊聊OpenEXR

小插曲 早一个月以前,我在找寻关于工业光魔的书籍时,发现了一本宝藏书《The Art of Film Magic》,里面主要讲述了Weta Workshop最近20年的电影特效成果,我想通过国内的购买渠道购买这一套书籍,最后发现书中部分内容因为和中国法律有冲突,书中冲突部分的内容被第三方做了撕页处理,于是我找到了Weta Workshop的官方商店,直接从欧洲购买这套书籍,然后经过UPS的转运,昨天顺利到达。 是的,电影工业确实是一门魔术,是一门具有艺术性的魔术,艺术与科技相结合才有了呈现在大银幕上的电影。那么今天我想介绍一款工具OpenEXR,它是工业光魔在1999年开发的数字图片存储格式,存储具有高动态范围场景数据。 设计 OpenEXR的特点: 高动态范围,我们也可以表示为High Dynamic Range,EXR图像中的像素数据以16bit或者32bit的浮点数存储。 相比于8bit数据存储的图像,EXR对于调色更加友好,尤其是进行大幅度的色彩调整,使用EXR的图像不会出现条带化现象。 无损压缩,EXR提供很多的压缩算法,降低存储成本,同时像素数据不会随之流失。 多通道存储,EXR可以存储图像的多通道数据,除了常见的Red Green Blue Alpha,还有场景的深度信息,物体表面法线方向,高光通道等等。 能够更好的与C C++进行交互,EXR提供C C++接口,方便外部应用读写EXR文件。 EXR色彩管理 OpenEXR图像通常是Scene-referred(场景参考),相对于Display-referred,我们做一个简单的介绍,显示参考我们是以某个显示标准为图像的色彩显示,比如使用相机拍摄sRGB图片,那么在100%sRGB的显示器上,我们看到的图像色彩和现实场景中的是一样的,但是拿到Rec709的显示器上,图像会与我们的sRGB显示器有区别,这就是显示参考,我们依据显示的标准来标定图像的正确色彩,场景参考就是不管我们用什么摄影机拍摄,用什么样的显示器显示,最终对于同一个场景,所得到的图像结果都是一致的,场景参考的色彩存储都是和现实世界的光照成线性比例的,在有关ACES色彩管理的文章中我们介绍过这一点。OpenEXR只是一个数据存储的容器,不论你用什么摄影机拍摄,整个场景的信息都能够存储在EXR文件中,为了后期能够方便的显示和处理图像,我们需要对OpenEXR进行色彩管理,不像Jpeg,PNG格式的图像,他们都是内嵌色彩信息,比如图像的色彩空间是sRGB或者Rec709,Gamma是sRGB或者Gamma2.2,这些数据在OpenEXR里面都是不存在的,因为后者都是依赖于显示参考,而EXR是场景参考。以下是我根据2004年工业光魔发表的一篇文章《A Proposal for OpenEXR Color Management》做为参考来理解OpenEXR的色彩管理科学。 将摄影数据存储在OpenEXR之前,我们都要进行场景线性化的转换,数字电影机的RAW就是摄影机所能看到的场景中的所有数据,已经是场景线性参考了,所以存储到OpenEXR不需要进行线性转换,当在OpenEXR中处理完成图像数据之后,我们需要将场景参考转换到显示参考,这样我们就能在各种显示器上正确查看图像的色彩。

April 15, 2022