程序员编程培训(程序员至死是少年)

程序员编程培训(程序员至死是少年) 最近,我身边的朋友,突然一个个都变成了圣斗士! 像这种比较炫酷的“飞天”黄金圣斗士,连影子都惟妙惟肖的: 还有这种在办公室偷偷变身双子座圣斗士,想要拯救世界的: 又或者是在自家小花园里变成处女座圣斗士,打破次元壁的: 还有白羊座、天秤座、射手座圣斗士……怎么回事? 原来,这是一群程序员做出的移动端3D圣衣特效,现在只用一部手机,就能随时随地“变身”圣斗士。 又一童年梦想被实现了有木有! 如果不想打开摄像头,也可以只用一张照片,就能成功“变装”: 不过,要实现这样贴合的效果并不容易,单从技术本身来看,就充满了挑战性。 在他们之前,甚至根本就没有人将这类技术应用到手机上。 而整个项目也是联合渲染、设计两个团队,一鼓作气耗时10个月才完成。 毕竟要守护心中的雅典娜,多少付出都是值得。 电影游戏界的“重金特效师” 这项耗时10个月打造的技术,就是好莱坞大片和3A(高开发成本)游戏大作中才会用到的动作捕捉。 说到这项技术,或许有的人还会感到陌生,但像《阿凡达》《指环王》这样的好莱坞电影、或是《刺客信条》《生化危机》这样的3A游戏,你一定听说过。 没错,这其中的许多经典特效、角色动作设计,都采用了动作捕捉技术。 由于能直接记录动作,这项技术能大幅缩短制作特效的时间,同时能让角色表情、动作看起来更真实。 对手K动画设计师来说,能降低设计工作量;对虚拟直播(Vtuber)、体育和医疗等领域来说,动作捕捉不仅能实现逼真的动作还原,还能实现实时动作记录。 听起来非常诱人,但这其实是一项高门槛技术。 首先,要想实现逼真的动作还原效果,就必须对硬件提出高要求,主流的惯性和光学动作捕捉技术,基本都需要传感器,便宜的效果还不好。 以(惯性动捕)游戏《舞力全开》为例,虽然硬件成本低廉(甚至能用手机当传感器),但由于只有手部传感器,无法检测腿部活动,体验并不好,还诞生出了像“轮椅舞王”这样的梗。 其次,为了将干扰、延迟降至最低,需要预留空间。以专业的Vtuber(虚拟主播)为例,他们直播所采用的动作捕捉技术,基本都需要10×10米的大房间来降低干扰。 最后,数据计算量大。动作捕捉系统获得的只是一大堆坐标数据,后期不仅要进行专业数据处理,同时还需要高性能计算机显卡来实现。 集硬件成本、环境、计算量等限制为一身的动作捕捉,要是之前说要把它用到手机上,可能立刻会有人说这是痴人说梦。 然而科技的发展总能给我们带来意想不到的效果。 微视团队中一群做计算机视觉的程序员,就只用一部手机将黄金圣斗士的铠甲贴合在人物身上,而且确实成功了,实现了实时的处理效果。 但手机端动作捕捉技术,并不好做。 自研移动端算法,筛选7k+顶点 只用一部普通的手机,意味着两个难点:计算量受限、坐标深度只能靠预测。

相机生成的照片,通常只有2D信息。要想从2D中还原出3D信息,需要找到一个能够预测坐标深度的函数,使之预测的3D信息尽可能逼近真实值。

对于真实度要求很高的动作捕捉技术而言,这意味着精度和实时性都要受到挑战。 目前已有的移动端AI技术,只能实现实时动作捕捉的一部分功能,包括人体/人脸检测、和基于2D/3D骨骼关键点的姿态估计技术,也就是我们常见的“火柴人”算法。 但“火柴人”算法显然没有3D Mesh贴合度高,因此团队决定,将3D Mesh搬到移动端上,自研一套基于3D Mesh的移动端姿态估计算法。 这套算法相当于重建人体表面的7000多个特征点,以及15000多个三角面片,不仅能够还原人体的基本动作,还能预测出人体的高矮胖瘦。 除此之外,团队还从3个方面,对模型进行了整体优化。 其一,从动作捕捉精度和模型大小两方面,对自研模型进行调试。 据微视团队表示,移动端已有的基于3D骨骼关键点的驱动阀,虽然可以驱动虚拟人体,在同一场景下做各种动作,但这套算法存在一些不足,需要自行调整。 例如,算法偶尔会出现不正常的抖动,包括虚拟人物突然“形变”的情况,如下图脚掌翻转。为此,团队还给算法加上了平滑滤波,使得人物动作看起来更真实,进一步提升模型精度,避免像下面这种抖动。 △脚掌不正常的翻转抖动 同时,在精度以外,团队还要保证在移动端实现3D Mesh。为了做到这一点,除了在其他模型方面尽可能整合压缩以外,团队也对模型本身进行了一个简化。 其二,从数据采集来看,团队也下了不少功夫。 由于移动端3D Mesh数据需针对性采集,微视团队搭建了自动化的数据采集系统,帮助快速采集到高质量动捕数据。 虽然Kinect的实时动作捕捉效果一般,但用于数据采集还是非常不错的,三台结合起来就能获得完整的深度信息。 为了确保模型的泛化性,除了尽可能多找18~60岁的不同人物数据进行采集以外,程序员们还采用了数据增强和半监督学习来增强模型的泛化能力。 在数据增强这块,为了加强模型辨认人体与周围环境的能力,程序员们将获取到人体的mask信息进行提取,随机贴到其他背景的图片上,创造出更多不同背景信息的图片;同时,团队也采用了神经渲染、GAN等技术,来生成更多的训练数据。 在半监督学习上,程序员们结合辅助任务,对2D关键点模型进行训练、提升模型的泛化能力。 其三,就是团队对实时性和特效渲染做的兼顾。 模型结构的整体设计和优化都只是“基本操作”,例如将串联运行的模型改成并联运行等;在推理上,团队还基于优图的TNN移动端深度推理框架,实现了模型的高效推理,最终将模型的推理时间从15ms降低到了11ms。 这里面的一个难点,就是要确保渲染效果和移动端性能(实时性)的兼顾,既要让画面看起来比较精致,又不能让软件运行速度太慢。 因此,团队先采用了自研3D渲染引擎增强光影效果,并利用SSAO、IBL等技术增强阴暗角落处的阴影质量,使得整体渲染效果与目前主流手游非常接近; 同时又进一步适配不同机型,采取分级策略,确保在各种手机上都能取得不错的运行性能。 显然,要想实现上面这些技术,呈现出最终的圣斗士特效,微视的设计师们同样功不可没。 甚至可以说,微视团队中,就连设计师也都是“技术硬核”的存在。 设计师也学代码? 从最初产生想法、打磨研发,一直到最终呈现,10个月的时间,对于一个研发团队来说并不短。 当中,除了技术本身的实现难度之外,还牵涉到整个系统的协同配合。 从最开始的CV技术研发、到移动端的部署,以及渲染,最后制作成一个特效工具……整个技术生产链条的打通需要各个团队充分合作。 就比如,像把盔甲穿在人身上,这样一个看似简单的动作,就需要开发、算法、设计三个组的同学协同调整。 一位设计组的旁友直呼:这部分的钻研和调整超过了制作模型的时间。 但即便如此,他们也有自己的制胜法宝。 首先,目标一致。 大概也是因为围绕圣斗士这一主题,团队内部也有很多的年轻人,所以整个技术磨合阶段并没有出现过什么Battle。 嗯,为了同一个梦想,各自都在燃烧自己的小宇宙! 另外小小剧透一下,由于整个链条已经打通,接下来团队会用技术做一些发散,尝试其他IP角色。 (疯狂暗示) 其次,就是技术思维。 即便是与核心技术没有那么强关系的设计组,也坦言前沿技术的更迭很快。

可能去年学的新技术,可能到今年就已经过时了,要多花时间一些时间钻研前沿技术。

尤其是在被问到给当前要毕业的设计同学建议时,更是言简意赅: 学点代码,很有帮助。 确实很技术,很硬核。 一边不断接触各种前沿技术,享受着从研发到落地整个链条,另一边还能完成“拯救世界”和“守护女神”的梦想,这是团队内部提及最多的成就感。 也唯因如此,才能将硬核技术攻克下来,成为每个人都能触达的好玩特效。 最后还想再替相信「光」的年轻人问一句: 奥特曼,真的不打算安排上么? (PS:想要变身黄金圣斗士的朋友,带上照片戳下方地址即可玩耍~) — 完 — 量子位 QbitAI · 头条号签约

原创文章,作者:搜够小编,如若转载,请注明出处:http://www.sogoubaike.cn/archives/70750