晓查发自凹非寺 

  量子位报道公众号 QbitAI

  一个低调的 AI 开发者,凭什么登上B站首页、一个视频百万播放,并且外行内行看了都服气?

  凭的是硬核纯手工作品——一台“套娃”小电视。

  而且这可能是史上最硬核的一次“套娃”:在纯手工制作的电视里成功播放了B站小电视。

这个up主太硬核了!纯手工打造AI小电视:焊接硬件,手写驱动代码-编程之家

  如果你以为它只能播放B站视频的开发板+显示屏,那就大错特错了。

  这可是一台从零开始制造的 AI 助手“贾维斯”。

  不仅能当语音助手,还能处理实时图像,甚至能当 web 服务器。。。

这个up主太硬核了!纯手工打造AI小电视:焊接硬件,手写驱动代码-编程之家

  up 主和钢铁侠一样,自己画设计图、手工焊接组成。就像钢铁侠当年在山洞里造出第一代战衣。

  整个小电视除了芯片外,几乎全是 up 主自行设计完成。不知道 up 主看到小电视正常开机的一瞬间,会不会有斯塔克冲出山洞的感觉。

  打造这个套娃小电视的 up 主“稚晖君”本名彭志辉,现在是一名 OPPO 的 AI 工程师。

这个up主太硬核了!纯手工打造AI小电视:焊接硬件,手写驱动代码-编程之家

  之前稚晖君就在B站分享过很多 DIY 硬件视频,虽硬核却不温不火,直到自制小电视的出现,他的作品第一次登上B站推荐首页,收获了超过 100 万的播放量。

  所谓外行看热闹,内行看门道。他的视频到底厉害在哪里呢?一位专业网友表示:

其实有些东西吧,外行看起来很牛X,但其实我这种内行看起来,还是很牛X。

这个up主太硬核了!纯手工打造AI小电视:焊接硬件,手写驱动代码-编程之家

  从手工画 PCB 到写 C++ 代码

  稚晖君用简短的 3 分钟视频,展示了他制造“B站小电视”的全过程。

  先在纸上画草图。

  没有开发板?不要紧,稚晖君自己造。

  电路板怎么做?用Altium Designer绘制 PCB 板,求助万能的淘宝,找商家印刷和制造钢网。

这个up主太硬核了!纯手工打造AI小电视:焊接硬件,手写驱动代码-编程之家

  然后给 PCB 刷上焊锡膏,把芯片、电阻、电容等器件一个个贴上去,热风枪加热完成回流焊。

这个up主太硬核了!纯手工打造AI小电视:焊接硬件,手写驱动代码-编程之家

  至于外壳,稚晖君用Rhinoceros绘制小电视的外壳的 3D 模型,再用自己的 3D 打印机造出来。

这个up主太硬核了!纯手工打造AI小电视:焊接硬件,手写驱动代码-编程之家

  加上买到的液晶面板,小电视的硬件部分制作完成。

这个up主太硬核了!纯手工打造AI小电视:焊接硬件,手写驱动代码-编程之家

  硬件制作完成仅仅是个开始,接下来是让稚晖君头秃的软件开发环节。

  因为这是一套完整自己设计的板子,他还要从底层开发软件,包括 uboot/kernel 配置、设备驱动、应用层 App 开发、算法模型部署等,都是自己用 C++ 一行行敲出的代码。

  视频过程中,你看到代码一行行快速通过,但实际上稚晖君熬了好几个令人头秃的夜,甚至还重新设计了电路板。

  最终稚晖君给小电视装上了 Linux 的 Xfce 桌面环境,如果你不介意屏幕太小,连接鼠标操作是没有问题的,另外还能通过 VNC、RDP 远程访问。

这个up主太硬核了!纯手工打造AI小电视:焊接硬件,手写驱动代码-编程之家

  有了 Linux,再把 TensorFlow 装上去,接上摄像头实现图像识别,又或是接上话筒实现语音识别,还能把小电视当成自己博客的 web 服务器。

这个up主太硬核了!纯手工打造AI小电视:焊接硬件,手写驱动代码-编程之家

  小电视也能自己播放自己,实现“套娃”视频。

  技术大佬的知识体系

  看到上面一些列骚操作,你是不是已经目瞪口呆?

  根据一个技术大佬的统计,稚晖君掌握的技能有:

电子基础,电子元器件选型,电路原理图设计,高速电路 PCB 设计,电子元器件焊接技术,电路板调试,启动程序 UBOOT 裁剪移植,linux 内核裁剪移植,文件系统,低层驱动程序(C语言,ARM 架构汇编,linux 内核架构),上层应用程序(C++、Qt、JAVA、Python 等,深度学习,机器学习,OpenCV,神经网络,自然语言处理),静态博客服务器搭建,高等数学,线性代数,概率论,离散数学,3D 建模,3D 打印,雕刻机,视频拍摄后期制作,防脱发技术。

  其中,最难的莫过于最后一项技术。

  稚晖君也表示赞同,当我们问他整个开发过程中最难的问题是什么,他说是“如何在保持熬夜学这么多东西的情况下不会脱发”。

  现在不脱发的技术我们已经掌握了,求求大佬能不能传授一点秘籍。

这个up主太硬核了!纯手工打造AI小电视:焊接硬件,手写驱动代码-编程之家

  不要急,稚晖君说了今后会出一系列详细教程,希望大家关注一下他的空间和最新动态。

  那还说什么,都已经明示投币了,这次一定三连支持。

这个up主太硬核了!纯手工打造AI小电视:焊接硬件,手写驱动代码-编程之家

  软硬件两开花的大佬

  最后,让我们隆重认识下大佬吧。

  稚晖君毕业于电子科技大学,目前就职于 OPPO 上海研究院。

  他从 2015 年就开始更新自己的技术博客,笔耕不辍。最初他只是把B站当做自己的视频存储服务器,没想到却收获了一批稳定的粉丝,才开始转型做 up 主,没想到半年时间就让自己火了。

  稚晖君本人可谓硬件软件两开花,当年去面试 OPPO 的时候拿到了两份 Super Special 的 offer,一个是硬件岗、一个是算法岗。

  不过他强调现在在公司并没有同时拿两份工资,只是一名 AI 算法工程师。

  稚晖君还是 Arduino 中文社区版主,爱好吉他和口琴。

  在这次硬核手工火爆后,我们也联系到了稚晖君,他分享了自己的开发经验。

  量子位:听说你本科学的是生物,后来才选择计算机专业,为什么?

  稚晖君:是的,本科是生物医学工程专业,研究生是信息与通信系统专业,所以其实不算 CS 科班。选择专业的原因也是各种机缘巧合啦,总之我后来发现生物专业并没有我想象中的有很多女同学哈哈。

  CS 专业在我看来和英语一样是一门基础技能,是一门研究“怎么高效地解决问题”的学科,很容易和其他学科交叉结合,所以在我读生物专业的时候,其实就已经开始自己学习计算机了。

  EE 方面也是同样的情况,因为可以看到对于像这次这个小电视这样的作品所涉及的专业面,是在高校里的任何一个专业都无法完全覆盖的;学习的方法有一个分支,叫做 Problem-Based Learning,就是以问题为导向的学习,通过自学寻找解决问题的方法和问题的答案。

  量子位:你对嵌入式和 AI 的兴趣是何时培养起来的?

  稚晖君:对嵌入式的热爱始于我小时候学会拆家电的那个阶段。大学阶段入门了模数电、单片机、Linux、自控原理之类的课程之后,就开始放飞自我了。

  对 AI 的兴趣的话,是源于深度学习最近一次重新崛起的那几年,“当你造出了一个会开车的 AI 司机之后,你就得到了无数个会开车的司机”。这样的想法非常地吸引我。

  量子位:对于有志学习嵌入式开发的软件工程师,你有哪些建议?

  稚晖君:想做嵌入式开发的话,一定不要只关注自己眼前技术的一亩三分地,否则很难有好果汁吃。去学 RTOS,去学 RISC-V,去学异构…永远没有完全准备好的人才,年轻时要边打仗边学习。

  知识面一多之后,很难面面俱到,要学会拎清楚重点,剩下的知识只需要在用到的时候会查阅工具书就行。厉害的工程师不是可以背下来多少语法标准和手册资料,而是在有全局观的同时能有能力解决核心问题。知识分为两种,一种是你知道的,一种是你知道可以在哪里找到的。

  多了解和思考一下嵌入式和前沿领域的交叉点,边缘计算、嵌入式 AI、物联网、端云融合等等。

  量子位:当初为什么想到做B站小电视这个项目?

  稚晖君:一个人一旦脱离了高级趣味,做各种沙雕项目也就会变得游刃有余了(笑)。我的乐趣就是周末宅在家里折腾这些既没用又有用的东西。

  做这个小电视项目的初衷在我之前发的一个视频里有提及,其实就是不满意于目前市面上能买到的小型个人服务器,有一些痛点,所以就打算自己动手造一个。

  还有一个原因是,我个人比较喜欢在积累了一定程度的新知识和技能之后,构思一个项目把这些知识都用上并呈现出来。一方面通过这种方式可以及时巩固学习效果,另一方面“学以致用”是技术发展的永恒归宿。

  所以大家可以期待一下,我最近业余也在学习一些机器人高级控制和优化理论,未来可能会有很有意思的项目作品分享的。

  量子位:你是怎么平衡兴趣爱好和工作的关系的?

  稚晖君:很幸运的一点是,我的兴趣爱好就是我的工作。

  我认为的理想工作状态就是:工作是源于自己的意愿, 每天做自己喜欢的事情而积累经验,在适当的压力下积极创新,收获自身成长的同时顺便收获可观的报酬。简单地说,就是当个人爱好、公司价值、与时代趋势相统一的时候。我认为目前正在朝着这个方向努力,虽然还有很多东西要学习。

  我给自己的信条是:十年饮冰,难凉热血。

  量子位:平时做的事情对你现在的工作有哪些启发?

  稚晖君:前面提到了 Problem-Based Learning,以解决问题为导向进行学习,未来是终身学习的时代,不存在大学毕业之后就不学习了。

  人工智能也是一样的,它是一种学习的过程,如果你去问有实际工程经验的人工智能专家,他们大都会在谈及算法之前问两个基本问题:

  第一、你要解决什么问题;第二、你有没有与这个问题相应的可供学习的数据。

  另外,知识是大体相通的,在不同学科之间的迁移学习可以带来事半功倍的效果,比如软件设计里的高内聚低耦合模块复用理念,也是可以应用到电路设计里面的;比如嵌入式开发的经验在优化深度学习模型推理实现的过程中提供了意想不到的帮助。

  传送门

  稚晖君的个人主页:

  http://www.pengzhihui.xyz

  稚晖君的B站:

  https://space.bilibili.com/20259914