第3章
豆浆与代码------------------------------------------,林晚晚的手机震了一下。,以为是闹钟,拿起来一看——是一条微信好友申请。,昵称叫“鸣”,验证消息只有两个字:“陆一鸣。通过”按钮上停了零点五秒,然后点了同意。,她等了一分钟,对方没说话。她又等了两分钟,还是没说话。,继续背范文。“……Only when we com**ne theory with practice can we truly **ster knowledge……”,手机又震了。。:方案里识别模块的算法框架,你今天能给我吗?。她昨晚才把方案初稿发给他,今天就要算法框架?这人做事也太急了。:不能。算法需要先确定数据集标注方式,最快周日。:周日太晚。我硬件搭建需要知道接口参数,周六之前必须定。,打了一行字又删掉,再打再删。:那周六碰头的时候我带上初步方案,你先做其他模块。
鸣:好。
然后对方就没动静了。
林晚晚把手机放到一边,重新拿起英语范文,但脑子里已经切换到了算法框架的逻辑。她在草稿纸上快速画了一个流程图:数据采集→预处理→特征提取→分类器→输出控制信号。
画完之后她看了一眼,总觉得分类器那部分太粗糙,需要换一种模型。
她把纸翻过来,重新画。
周萌到教室的时候,看到林晚晚面前的草稿纸已经铺了三四张,每一张都画满了乱七八糟的框框和箭头。
“你这是在画电路图?”周萌凑过来看。
“算法框架。”
“你不是学物理的吗?怎么搞起编程了?”
“科技创新大赛要用。”林晚晚头都没抬。
周萌啧啧了两声:“你现在是高三哎,还搞这些乱七八糟的,不怕影响成绩?”
林晚晚的笔尖顿了一下。
“不会。”她说,语气比平时硬了一点。
周萌听出来了,识趣地没再说话,默默拿出自己的英语卷子。
林晚晚知道周萌没有恶意。但“影响成绩”这四个字,她听过太多次了。从她决定参加科技创新大赛开始,就有同学在背后议论:“林晚晚是不是飘了?高三了还搞这些?她以为她是天才吗?又能做题又能搞竞赛?”
她不是天才。
她只是不想让自己的高中三年只有卷子和排名。
她想做出一点什么,一件可以拿给别人看、说“这是我做的”的东西。
这也是为什么她看到陆一鸣的获奖记录时,几乎没有犹豫就同意了组队。因为那个人做出过东西——一个能自动分拣物料的机械臂,在市技能大赛上拿了**。
她能做理论,他能做实物。
她想看看,他们俩合在一起,能做出什么。
周六下午两点,林晚晚准时到了职校的实训楼。
这是她第一次进职校的校园。
和普高不一样,这里没有那种压迫感的安静和紧张。操场上有人在打篮球,实训楼门口停着几辆电动三轮车,墙上贴着各种技能大赛的宣传海报——“技能改变命运匠心铸就未来”。
林晚晚觉得这些标语有点意思。在普高,所有的标语都是关于分数、排名、名校的。而在这里,***是“技能匠心未来”。
她按照陆一鸣发的定位,找到了三楼的一间机电一体化实训室。
推开门,一股金属和润滑油的气味扑面而来。
实训室很大,摆着七八个工作台,每个台子上都有各种各样的设备:PLC控制柜、传感器模组、小型机械臂、传送带模型。墙上挂着工具板,扳手、螺丝刀、钳子整整齐齐地排成几排。
陆一鸣站在最里面的一个工作台前,背对着门,正在拧一个金属支架的螺丝。
他今天没穿工装,穿了一件黑色的短袖,袖子卷到肩膀,露出结实的上臂。手臂上有几道浅浅的旧伤疤,不知道是实训时被什么划的。
“来了?”他听到脚步声,头也没回。
“嗯。”林晚晚走过去,把书包放在旁边的工作台上,“你的实训室挺大的。”
“学校的。”陆一鸣把螺丝拧紧,转过身来,“不是我的。”
林晚晚注意到他手边放着一杯豆浆,还冒着热气。工作台上除了各种零件,还摊着一本翻到中间的程序设计教材,书页被翻得很旧,边角都卷起来了。
“你周六也在学校?”林晚晚问。
“嗯。实训室周末开放,我来得比较多。”陆一鸣擦了擦手,从工作台下抽出一张凳子推给她,“坐吧。你的算法框架呢?”
林晚晚从书包里拿出三页手写的方案,递过去。
陆一鸣接过去,低头看。
林晚晚坐在凳子上,观察他看方案的表情。他的眉头微微皱着,嘴唇抿成一条线,目光从左到右快速扫过每一行。翻到第二页的时候,他的眉头皱得更紧了。
“有问题?”林晚晚问。
陆一鸣没有马上回答。他把三页纸看完,放到工作台上,用手指点了点第二页中间的一段。
“你这个分类器,用的是支持向量机?”他问。
“对。SVM在小样本数据集上表现好,适合我们这个项目。”
“响应速度呢?”
“训练好的模型单次推理在50毫秒以内。”
“50毫秒?”陆一鸣看着她,“你知道我的图像识别模块从采集到输出控制信号,整个链路要求多少毫秒吗?”
林晚晚没说话。
“200毫秒。”陆一鸣说,“你一个分类器就占了50,加上图像采集、预处理、信号传输、电机响应,整体至少300到400毫秒。太慢了。”
林晚晚的眉头也皱起来了。
“你之前说图像识别能提升三倍速度,我按照那个算的。”她说,“如果你能压缩到100毫秒以内,整体就能控制在200左右。”
“图像识别我可以做到80毫秒。”陆一鸣说,“但你的分类器不能超过30毫秒。SVM做不到。”
“那你说用什么?”
“轻量级神经网络。Mo**leNet或者ShuffleNet,推理时间能压到20毫秒以内。”
林晚晚盯着他看了两秒。
“你会部署神经网络到嵌入式设备上?”她的语气里带着一丝怀疑。
“不会。”陆一鸣回答得干脆利落,“但我可以学。”
林晚晚被他这句话堵了一下。她想说“你以为学一个东西那么容易”,但话到嘴边又咽回去了。因为她也经常说“我可以学”这三个字,并且每一次都是认真的。
她深吸一口气。
“神经网络需要大量的标注数据,我们没有。”
“可以自己拍。垃圾图片网上有现成的数据集,不够就自己拍。”
“训练需要GPU资源。”
“我用学校的服务器,晚上跑。”
“模型压缩和量化呢?”
“我不会,但我有三天时间学。”
两人对视了五秒钟。
林晚晚先移开了目光。她重新拿起那三页方案,快速在脑子里过了一遍。如果换神经网络,整个算法架构都要推倒重来,工作量至少翻倍。
但响应速度如果能压到30毫秒以内,项目的技术指标会提升一个档次。
“给我两天时间。”她说,“我重新做一版方案。”
“一天。”陆一鸣说。
“一天半。”
“成交。”
林晚晚把方案收进书包,站起来准备走。她走到门口的时候,忽然想起一件事,转过身来。
“那把刀,”她说,“你那天晚上给我的折叠刀,我一直没还你。”
陆一鸣正在整理工作台上的零件,听到这话手顿了一下。
“不用还了。”他说,声音很淡。
“为什么?”
“那是备用的。我还有一把。”
林晚晚站在门口,看着他。他低着头继续拧螺丝,没有看她。
“那谢谢。”她说。
“嗯。”
林晚晚走了两步,又停下来。这次她没有转身,只是背对着他说了一句:“你的数学笔记,泰勒展开后面那道变式题,你做的那个辅助函数构造,其实还可以再优化。”
“怎么优化?”
“把ln(1+x)展开到二阶,用柯西中值定理,一步到位。”
她说完就走了。
陆一鸣抬起头,看着空荡荡的门口,愣了两秒。
然后他翻开数学笔记,找到那道变式题,按照她说的方法重新做了一遍。
果然一步到位。
他盯着那个简洁到近乎完美的推导过程,嘴角动了一下。
然后他拿起那杯已经凉了的豆浆,喝了一口,继续拧螺丝。
周一早上,林晚晚到教室的时候,发现自己的课桌上多了一样东西。
一杯热豆浆。
杯子上没有任何标签,不是食堂卖的那种。杯子下面压着一张纸条,纸条上的字迹不算好看,但一笔一划写得很认真:
“你的方案我改了一版,你看看。神经网络的部分我跑了几个预训练模型,数据贴在了背面。另外,早饭要吃。你太瘦了。”
没有署名。
但林晚晚知道是谁。
她把纸条翻到背面,上面密密麻麻贴了几张打印的小表格,是不同神经网络模型在嵌入式设备上的推理时间和准确率对比。Mo**leNetV2最优,20毫秒,准确率92.3%。
数据很全,很专业。
林晚晚盯着最后那行字看了很久——“你太瘦了”。
她把纸条折好,放进书包最里层的拉链袋里,和那把折叠刀放在一起。
然后她拿起豆浆,喝了一口。
还是热的。
豆浆很浓,不是那种兑了很多水的稀汤,能喝出来是现磨的。甜度刚刚好,不腻。
她不知道他从哪里弄来的豆浆,也不知道他几点起来弄的。
但她喝完之后,觉得整个人都暖了。
周萌到教室的时候,看到林晚晚面前的豆浆杯子,眼睛一亮。
“哟,谁给你买的?”
“自己买的。”林晚晚面不改色地说。
“不可能,食堂的豆浆杯子不是这样的。”周萌凑过来闻了闻,“这豆浆好香啊,哪家店买的?”
“不知道。”
周萌狐疑地看着她,目光在豆浆杯和她微微泛红的耳朵之间来回扫了两遍,然后露出了一个“我懂了”的笑容。
“林晚晚,你谈恋爱了?”
“没有。”
“那你耳朵红什么?”
“热的。”
“现在才九月份,哪里热了?”
林晚晚没理她,翻开物理卷子,开始做题。
但她发现自己的专注力比平时差了很多。做完一道电磁感应的选择题,她脑子里想的不是*IL和法拉第定律,而是那张纸条上的字迹。
他的字真的不好看。结构松散,笔画僵硬,一看就是很久没好好写过字的人。但每一个字都写得很用力,力透纸背,像是在跟笔较劲。
“你太瘦了。”
这不像是一句关心,更像是一句陈述。语气平淡,没有修饰,就像他说“你的方案我改了一版”一样。
但林晚晚不知道为什么,就是觉得这句话有点重。
重到她一整个上午都在想。
中午吃饭的时候,她做了一个决定。
她拿出手机,打开和“鸣”的对话框,打了一行字:
“方案我看了,神经网络可行。今晚我把算法第一版写好发你。另外,豆浆谢谢。但我有吃早饭,只是吃得少。”
发完之后她盯着屏幕看了十秒。
对方回了一个字:“好。”
然后又过了五秒,又来了一条:“吃得少也不行。”
林晚晚看着那条消息,嘴角不自觉地弯了一下。
她赶紧把笑容收回去,看了看周围——食堂里人来人往,没人注意到她。
她把手机扣在桌上,低头吃饭。
饭吃到一半,她又把手机翻过来,看了一眼那条消息。
“吃得少也不行。”
她把这句话截了个图。
然后犹豫了零点五秒,没有删。
周二晚上,林晚晚在教室里改算法框架改到九点半。
她把SVM换成了Mo**leNetV2,重新写了数据预处理和模型训练的完整流程,还附上了详细的参数说明和预期性能分析。整整写了七页A4纸,手写的,字迹工整得像印刷体。
她拍下来发给陆一鸣,然后收拾书包准备回家。
走到校门口的时候,她愣了一下。
陆一鸣站在校门口的路灯下,穿着校服外套,手里拿着一个文件夹。
“你怎么在这?”林晚晚走过去。
“等你。”陆一鸣把文件夹递给她,“硬件接口的详细参数,你看看算法能不能对上。”
林晚晚接过来翻开,里面是十几页手写的技术文档,从传感器选型到电机驱动,每一个模块都标了详细的接口定义和时序要求。字迹还是不好看,但逻辑清晰得不像是一个职校生写出来的。
“你写的?”她抬头看他。
“嗯。”
“什么时候写的?”
“这两天。”
“你不用上课?”
“上课也在写。”
林晚晚看着他的脸。路灯把他的影子拉得很长,他的黑眼圈比上周见面时更重了,嘴唇也有点干。
“你也没好好吃饭。”她说。
陆一鸣愣了一下,然后嘴角动了动,像是想笑但忍住了。
“吃了。”他说。
“吃得少也不行。”林晚晚把他昨天说的话原封不动地还了回去。
这次陆一鸣没忍住,嘴角确实弯了一下。
只是很轻微的一下,但林晚晚看到了。
路灯下,他的笑容一闪而过,像一颗流星。
林晚晚低下头,假装在看文档,心跳却不受控制地加速了。
“文档我带回去看,”她说,声音比平时轻了一些,“明天给你反馈。”
“嗯。”
“那……我走了。”
“我送你。”陆一鸣说。
“不用,学校门口有——”
“你一个女生走夜路不安全。”他打断她,语气和那天在配电室说“别走楼梯口那个死角”一模一样,不容置疑。
林晚晚张了张嘴,想说什么,最终只是点了点头。
两个人并肩走在人行道上,中间隔着一个人的距离。
九月底的晚风有点凉,吹得路边的梧桐叶沙沙作响。林晚晚抱着文件夹,陆一鸣把手插在裤兜里,两个人都没说话。
但沉默不尴尬。
甚至有点舒服。
走到小区门口的时候,林晚晚停下来。
“到了。”她说。
“嗯。”陆一鸣也停下来,看了她一眼,“明天见。”
“明天见。”
林晚晚走进小区,走了十几步,回头看了一眼。
陆一鸣还站在路灯下,看到她回头,抬手挥了一下,然后转身走了。
他走路的步子很大,很快就消失在了夜色里。
林晚晚站在原地,看着那个方向愣了几秒,然后摸了摸自己发烫的耳朵。
这一次,她没办法骗自己说“是热的”了。
因为晚风明明是凉的。
周三下午,第二次碰头。
林晚晚到实训室的时候,陆一鸣已经在调试一个传送带模型了。
传送带大概一米长,上面放着一个简易的垃圾模型——一个小塑料瓶。传送带尽头是一个摄像头支架,摄像头下面连着一个小小的嵌入式开发板。
“你这么快就把硬件搭起来了?”林晚晚有点惊讶。
“先搭个原型验证。”陆一鸣蹲在地上,手里拿着万用表在测电压,“你那边算法怎么样了?”
“第一版写好了,但需要在你的设备上跑一下看看实际性能。”
“现在就能跑。”
陆一鸣站起来,从工作台上拿了一根数据线,把开发板和一台笔记本电脑连起来。林晚晚把自己写的代码拷进去,配置好环境,按下运行。
摄像头亮了一下,拍到了传送带上的塑料瓶。
屏幕上跳出一个识别结果:“PET塑料瓶,置信度0.94。”
控制信号通过开发板输出,传送带末端的一个小型气缸“噗”地一声弹出来,把塑料瓶推到了旁边的回收盒里。
整个过程不到300毫秒。
林晚晚看着那个被推出去的塑料瓶,心里涌起一种奇怪的感觉。
这不是她第一次做项目,但这是她第一次看到自己的代码在一个真实的物理设备上跑起来,并且产生了一个真实的、看得见摸得着的动作。
“还可以。”陆一鸣说,语气里带着一丝满意,“识别准了。但响应速度还得压,现在是280毫秒,目标200。”
“图像识别那边还能再优化吗?”
“能。我换个驱动,应该能压到70。”
“那算法端我再做模型量化,能压到25左右。”
“加起来95,加上信号传输和气缸响应,总时间能控在150以内。”
“比市面上的同类产品快多少?”林晚晚问。
陆一鸣想了想:“市面上的垃圾分类小设备,响应时间一般在500毫秒以上。我们能快两到三倍。”
林晚晚的嘴角弯了一下。
陆一鸣看到她的笑容,顿了一下。
“你笑起来还挺不一样的。”他说。
林晚晚的笑容瞬间收住了。
“什么不一样?”她问,声音又恢复了平时的冷淡。
“不像做题机器。”陆一鸣说完就转过身去,继续调气缸的参数,好像什么都没发生过。
林晚晚站在原地,盯着他的后背看了三秒。
然后她低下头,假装在看代码,心跳却比代码的运行速度还快。
那天下午,他们一直忙到六点多。
走的时候,陆一鸣从工作台下拿出一个保温袋,递给她。
“什么?”林晚晚接过来。
“豆浆。”陆一鸣说,“你拿走喝。我早上多打了一杯。”
林晚晚打开保温袋,里面是一杯温热的豆浆,还是那个浓稠度,还是那个甜度。
“你每天早上都打豆浆?”她问。
“嗯。”
“用什么打的?”
“宿舍里有个小豆浆机。”陆一鸣说这话的时候语气很平,但耳朵尖有点红。
林晚晚注意到了。
她没有戳穿,只是把保温袋抱在怀里。
“谢谢。”她说。
“嗯。”
两个人一起走出实训楼。职校的校园比普高大,晚风从操场那边吹过来,带着青草和泥土的味道。
“陆一鸣。”林晚晚忽然叫他全名。
“嗯?”
“你为什么想考本科?”
陆一鸣沉默了几步路。
“因为不想被人看不起。”他说,声音很轻,但每个字都很重,“我中考差了六分。六分。如果数学最后一道大题多做对一半,我现在也在普高。”
林晚晚没有说话。
“但我不后悔来职校。”他继续说,“在这里我学到的技术,普高学不到。我只是想证明——职校生也能考上本科,也能做出好东西。”
林晚晚停下脚步,看着他。
“我懂。”她说。
陆一鸣看着她。
路灯的光落在她脸上,她的表情很认真,没有同情,没有怜悯,只有一种“我也是这样”的共鸣。
“我也被人看不起过。”林晚晚说,“他们说我是做题机器,说我除了**什么都不会。我爸妈也不懂我,他们只知道问我考了多少分、排第几名。”
她顿了一下。
“但我知道我在做什么。我想考那所大学,不是因为它的名气,是因为它的物理系有一个实验室,研究的是我真正感兴趣的东西。我想去那里。”
陆一鸣看着她,目光很深。
“你会考上的。”他说。
“你也会。”林晚晚说。
两个人对视了两秒。
然后林晚晚先移开了目光,低下头,抱着保温袋往前走。
“豆浆再不喝就凉了。”她说,声音里带着一点不易察觉的笑意。
陆一鸣跟上来,走在她的左边——靠近马路的那一边。
林晚晚注意到了这个细节,但没有说破。
她只是把保温袋抱得更紧了一点。
那天晚上,林晚晚回到家,把豆浆倒进杯子里,小口小口地喝。
喝完豆浆,她把杯子洗干净,放在书桌上。
然后她打开手机,看到陆一鸣发来一条消息。
鸣:算法第二版的反馈发你了。另,明天早上想喝红豆的还是黄豆的?
林晚晚盯着屏幕看了五秒。
林晚晚:红豆。
鸣:好。
林晚晚把手机扣在桌上,趴在一堆卷子中间,把脸埋进胳膊里。
她的耳朵很烫。
心也很烫。
她知道这不正常。
她是一个从来不在任何无关事情上浪费时间的人。她的每一分钟都被学习填满,她的每一份精力都用来朝那个目标奔跑。
但陆一鸣出现了。
他像一个意外,闯进了她精密运转的日程表,打乱了她所有的计划。
她应该把他赶出去。
但她不想。
她甚至开始期待周三和周六——期待看到他蹲在地上调试设备的样子,期待听到他说“你的方案我改了一版”,期待那一杯永远温度和甜度都刚刚好的豆浆。
林晚晚抬起头,看着窗外的夜空。
九月底的星星不多,但有一颗很亮,挂在正对着她窗户的方向。
她忽然想起他的名字——一鸣,一鸣惊人。
她对着那颗星星,小声说了一句话。
“陆一鸣,你知不知道,你这个人真的很烦。”
然后她笑了。
笑得比那颗星星还亮。
鸣:好。
然后对方就没动静了。
林晚晚把手机放到一边,重新拿起英语范文,但脑子里已经切换到了算法框架的逻辑。她在草稿纸上快速画了一个流程图:数据采集→预处理→特征提取→分类器→输出控制信号。
画完之后她看了一眼,总觉得分类器那部分太粗糙,需要换一种模型。
她把纸翻过来,重新画。
周萌到教室的时候,看到林晚晚面前的草稿纸已经铺了三四张,每一张都画满了乱七八糟的框框和箭头。
“你这是在画电路图?”周萌凑过来看。
“算法框架。”
“你不是学物理的吗?怎么搞起编程了?”
“科技创新大赛要用。”林晚晚头都没抬。
周萌啧啧了两声:“你现在是高三哎,还搞这些乱七八糟的,不怕影响成绩?”
林晚晚的笔尖顿了一下。
“不会。”她说,语气比平时硬了一点。
周萌听出来了,识趣地没再说话,默默拿出自己的英语卷子。
林晚晚知道周萌没有恶意。但“影响成绩”这四个字,她听过太多次了。从她决定参加科技创新大赛开始,就有同学在背后议论:“林晚晚是不是飘了?高三了还搞这些?她以为她是天才吗?又能做题又能搞竞赛?”
她不是天才。
她只是不想让自己的高中三年只有卷子和排名。
她想做出一点什么,一件可以拿给别人看、说“这是我做的”的东西。
这也是为什么她看到陆一鸣的获奖记录时,几乎没有犹豫就同意了组队。因为那个人做出过东西——一个能自动分拣物料的机械臂,在市技能大赛上拿了**。
她能做理论,他能做实物。
她想看看,他们俩合在一起,能做出什么。
周六下午两点,林晚晚准时到了职校的实训楼。
这是她第一次进职校的校园。
和普高不一样,这里没有那种压迫感的安静和紧张。操场上有人在打篮球,实训楼门口停着几辆电动三轮车,墙上贴着各种技能大赛的宣传海报——“技能改变命运匠心铸就未来”。
林晚晚觉得这些标语有点意思。在普高,所有的标语都是关于分数、排名、名校的。而在这里,***是“技能匠心未来”。
她按照陆一鸣发的定位,找到了三楼的一间机电一体化实训室。
推开门,一股金属和润滑油的气味扑面而来。
实训室很大,摆着七八个工作台,每个台子上都有各种各样的设备:PLC控制柜、传感器模组、小型机械臂、传送带模型。墙上挂着工具板,扳手、螺丝刀、钳子整整齐齐地排成几排。
陆一鸣站在最里面的一个工作台前,背对着门,正在拧一个金属支架的螺丝。
他今天没穿工装,穿了一件黑色的短袖,袖子卷到肩膀,露出结实的上臂。手臂上有几道浅浅的旧伤疤,不知道是实训时被什么划的。
“来了?”他听到脚步声,头也没回。
“嗯。”林晚晚走过去,把书包放在旁边的工作台上,“你的实训室挺大的。”
“学校的。”陆一鸣把螺丝拧紧,转过身来,“不是我的。”
林晚晚注意到他手边放着一杯豆浆,还冒着热气。工作台上除了各种零件,还摊着一本翻到中间的程序设计教材,书页被翻得很旧,边角都卷起来了。
“你周六也在学校?”林晚晚问。
“嗯。实训室周末开放,我来得比较多。”陆一鸣擦了擦手,从工作台下抽出一张凳子推给她,“坐吧。你的算法框架呢?”
林晚晚从书包里拿出三页手写的方案,递过去。
陆一鸣接过去,低头看。
林晚晚坐在凳子上,观察他看方案的表情。他的眉头微微皱着,嘴唇抿成一条线,目光从左到右快速扫过每一行。翻到第二页的时候,他的眉头皱得更紧了。
“有问题?”林晚晚问。
陆一鸣没有马上回答。他把三页纸看完,放到工作台上,用手指点了点第二页中间的一段。
“你这个分类器,用的是支持向量机?”他问。
“对。SVM在小样本数据集上表现好,适合我们这个项目。”
“响应速度呢?”
“训练好的模型单次推理在50毫秒以内。”
“50毫秒?”陆一鸣看着她,“你知道我的图像识别模块从采集到输出控制信号,整个链路要求多少毫秒吗?”
林晚晚没说话。
“200毫秒。”陆一鸣说,“你一个分类器就占了50,加上图像采集、预处理、信号传输、电机响应,整体至少300到400毫秒。太慢了。”
林晚晚的眉头也皱起来了。
“你之前说图像识别能提升三倍速度,我按照那个算的。”她说,“如果你能压缩到100毫秒以内,整体就能控制在200左右。”
“图像识别我可以做到80毫秒。”陆一鸣说,“但你的分类器不能超过30毫秒。SVM做不到。”
“那你说用什么?”
“轻量级神经网络。Mo**leNet或者ShuffleNet,推理时间能压到20毫秒以内。”
林晚晚盯着他看了两秒。
“你会部署神经网络到嵌入式设备上?”她的语气里带着一丝怀疑。
“不会。”陆一鸣回答得干脆利落,“但我可以学。”
林晚晚被他这句话堵了一下。她想说“你以为学一个东西那么容易”,但话到嘴边又咽回去了。因为她也经常说“我可以学”这三个字,并且每一次都是认真的。
她深吸一口气。
“神经网络需要大量的标注数据,我们没有。”
“可以自己拍。垃圾图片网上有现成的数据集,不够就自己拍。”
“训练需要GPU资源。”
“我用学校的服务器,晚上跑。”
“模型压缩和量化呢?”
“我不会,但我有三天时间学。”
两人对视了五秒钟。
林晚晚先移开了目光。她重新拿起那三页方案,快速在脑子里过了一遍。如果换神经网络,整个算法架构都要推倒重来,工作量至少翻倍。
但响应速度如果能压到30毫秒以内,项目的技术指标会提升一个档次。
“给我两天时间。”她说,“我重新做一版方案。”
“一天。”陆一鸣说。
“一天半。”
“成交。”
林晚晚把方案收进书包,站起来准备走。她走到门口的时候,忽然想起一件事,转过身来。
“那把刀,”她说,“你那天晚上给我的折叠刀,我一直没还你。”
陆一鸣正在整理工作台上的零件,听到这话手顿了一下。
“不用还了。”他说,声音很淡。
“为什么?”
“那是备用的。我还有一把。”
林晚晚站在门口,看着他。他低着头继续拧螺丝,没有看她。
“那谢谢。”她说。
“嗯。”
林晚晚走了两步,又停下来。这次她没有转身,只是背对着他说了一句:“你的数学笔记,泰勒展开后面那道变式题,你做的那个辅助函数构造,其实还可以再优化。”
“怎么优化?”
“把ln(1+x)展开到二阶,用柯西中值定理,一步到位。”
她说完就走了。
陆一鸣抬起头,看着空荡荡的门口,愣了两秒。
然后他翻开数学笔记,找到那道变式题,按照她说的方法重新做了一遍。
果然一步到位。
他盯着那个简洁到近乎完美的推导过程,嘴角动了一下。
然后他拿起那杯已经凉了的豆浆,喝了一口,继续拧螺丝。
周一早上,林晚晚到教室的时候,发现自己的课桌上多了一样东西。
一杯热豆浆。
杯子上没有任何标签,不是食堂卖的那种。杯子下面压着一张纸条,纸条上的字迹不算好看,但一笔一划写得很认真:
“你的方案我改了一版,你看看。神经网络的部分我跑了几个预训练模型,数据贴在了背面。另外,早饭要吃。你太瘦了。”
没有署名。
但林晚晚知道是谁。
她把纸条翻到背面,上面密密麻麻贴了几张打印的小表格,是不同神经网络模型在嵌入式设备上的推理时间和准确率对比。Mo**leNetV2最优,20毫秒,准确率92.3%。
数据很全,很专业。
林晚晚盯着最后那行字看了很久——“你太瘦了”。
她把纸条折好,放进书包最里层的拉链袋里,和那把折叠刀放在一起。
然后她拿起豆浆,喝了一口。
还是热的。
豆浆很浓,不是那种兑了很多水的稀汤,能喝出来是现磨的。甜度刚刚好,不腻。
她不知道他从哪里弄来的豆浆,也不知道他几点起来弄的。
但她喝完之后,觉得整个人都暖了。
周萌到教室的时候,看到林晚晚面前的豆浆杯子,眼睛一亮。
“哟,谁给你买的?”
“自己买的。”林晚晚面不改色地说。
“不可能,食堂的豆浆杯子不是这样的。”周萌凑过来闻了闻,“这豆浆好香啊,哪家店买的?”
“不知道。”
周萌狐疑地看着她,目光在豆浆杯和她微微泛红的耳朵之间来回扫了两遍,然后露出了一个“我懂了”的笑容。
“林晚晚,你谈恋爱了?”
“没有。”
“那你耳朵红什么?”
“热的。”
“现在才九月份,哪里热了?”
林晚晚没理她,翻开物理卷子,开始做题。
但她发现自己的专注力比平时差了很多。做完一道电磁感应的选择题,她脑子里想的不是*IL和法拉第定律,而是那张纸条上的字迹。
他的字真的不好看。结构松散,笔画僵硬,一看就是很久没好好写过字的人。但每一个字都写得很用力,力透纸背,像是在跟笔较劲。
“你太瘦了。”
这不像是一句关心,更像是一句陈述。语气平淡,没有修饰,就像他说“你的方案我改了一版”一样。
但林晚晚不知道为什么,就是觉得这句话有点重。
重到她一整个上午都在想。
中午吃饭的时候,她做了一个决定。
她拿出手机,打开和“鸣”的对话框,打了一行字:
“方案我看了,神经网络可行。今晚我把算法第一版写好发你。另外,豆浆谢谢。但我有吃早饭,只是吃得少。”
发完之后她盯着屏幕看了十秒。
对方回了一个字:“好。”
然后又过了五秒,又来了一条:“吃得少也不行。”
林晚晚看着那条消息,嘴角不自觉地弯了一下。
她赶紧把笑容收回去,看了看周围——食堂里人来人往,没人注意到她。
她把手机扣在桌上,低头吃饭。
饭吃到一半,她又把手机翻过来,看了一眼那条消息。
“吃得少也不行。”
她把这句话截了个图。
然后犹豫了零点五秒,没有删。
周二晚上,林晚晚在教室里改算法框架改到九点半。
她把SVM换成了Mo**leNetV2,重新写了数据预处理和模型训练的完整流程,还附上了详细的参数说明和预期性能分析。整整写了七页A4纸,手写的,字迹工整得像印刷体。
她拍下来发给陆一鸣,然后收拾书包准备回家。
走到校门口的时候,她愣了一下。
陆一鸣站在校门口的路灯下,穿着校服外套,手里拿着一个文件夹。
“你怎么在这?”林晚晚走过去。
“等你。”陆一鸣把文件夹递给她,“硬件接口的详细参数,你看看算法能不能对上。”
林晚晚接过来翻开,里面是十几页手写的技术文档,从传感器选型到电机驱动,每一个模块都标了详细的接口定义和时序要求。字迹还是不好看,但逻辑清晰得不像是一个职校生写出来的。
“你写的?”她抬头看他。
“嗯。”
“什么时候写的?”
“这两天。”
“你不用上课?”
“上课也在写。”
林晚晚看着他的脸。路灯把他的影子拉得很长,他的黑眼圈比上周见面时更重了,嘴唇也有点干。
“你也没好好吃饭。”她说。
陆一鸣愣了一下,然后嘴角动了动,像是想笑但忍住了。
“吃了。”他说。
“吃得少也不行。”林晚晚把他昨天说的话原封不动地还了回去。
这次陆一鸣没忍住,嘴角确实弯了一下。
只是很轻微的一下,但林晚晚看到了。
路灯下,他的笑容一闪而过,像一颗流星。
林晚晚低下头,假装在看文档,心跳却不受控制地加速了。
“文档我带回去看,”她说,声音比平时轻了一些,“明天给你反馈。”
“嗯。”
“那……我走了。”
“我送你。”陆一鸣说。
“不用,学校门口有——”
“你一个女生走夜路不安全。”他打断她,语气和那天在配电室说“别走楼梯口那个死角”一模一样,不容置疑。
林晚晚张了张嘴,想说什么,最终只是点了点头。
两个人并肩走在人行道上,中间隔着一个人的距离。
九月底的晚风有点凉,吹得路边的梧桐叶沙沙作响。林晚晚抱着文件夹,陆一鸣把手插在裤兜里,两个人都没说话。
但沉默不尴尬。
甚至有点舒服。
走到小区门口的时候,林晚晚停下来。
“到了。”她说。
“嗯。”陆一鸣也停下来,看了她一眼,“明天见。”
“明天见。”
林晚晚走进小区,走了十几步,回头看了一眼。
陆一鸣还站在路灯下,看到她回头,抬手挥了一下,然后转身走了。
他走路的步子很大,很快就消失在了夜色里。
林晚晚站在原地,看着那个方向愣了几秒,然后摸了摸自己发烫的耳朵。
这一次,她没办法骗自己说“是热的”了。
因为晚风明明是凉的。
周三下午,第二次碰头。
林晚晚到实训室的时候,陆一鸣已经在调试一个传送带模型了。
传送带大概一米长,上面放着一个简易的垃圾模型——一个小塑料瓶。传送带尽头是一个摄像头支架,摄像头下面连着一个小小的嵌入式开发板。
“你这么快就把硬件搭起来了?”林晚晚有点惊讶。
“先搭个原型验证。”陆一鸣蹲在地上,手里拿着万用表在测电压,“你那边算法怎么样了?”
“第一版写好了,但需要在你的设备上跑一下看看实际性能。”
“现在就能跑。”
陆一鸣站起来,从工作台上拿了一根数据线,把开发板和一台笔记本电脑连起来。林晚晚把自己写的代码拷进去,配置好环境,按下运行。
摄像头亮了一下,拍到了传送带上的塑料瓶。
屏幕上跳出一个识别结果:“PET塑料瓶,置信度0.94。”
控制信号通过开发板输出,传送带末端的一个小型气缸“噗”地一声弹出来,把塑料瓶推到了旁边的回收盒里。
整个过程不到300毫秒。
林晚晚看着那个被推出去的塑料瓶,心里涌起一种奇怪的感觉。
这不是她第一次做项目,但这是她第一次看到自己的代码在一个真实的物理设备上跑起来,并且产生了一个真实的、看得见摸得着的动作。
“还可以。”陆一鸣说,语气里带着一丝满意,“识别准了。但响应速度还得压,现在是280毫秒,目标200。”
“图像识别那边还能再优化吗?”
“能。我换个驱动,应该能压到70。”
“那算法端我再做模型量化,能压到25左右。”
“加起来95,加上信号传输和气缸响应,总时间能控在150以内。”
“比市面上的同类产品快多少?”林晚晚问。
陆一鸣想了想:“市面上的垃圾分类小设备,响应时间一般在500毫秒以上。我们能快两到三倍。”
林晚晚的嘴角弯了一下。
陆一鸣看到她的笑容,顿了一下。
“你笑起来还挺不一样的。”他说。
林晚晚的笑容瞬间收住了。
“什么不一样?”她问,声音又恢复了平时的冷淡。
“不像做题机器。”陆一鸣说完就转过身去,继续调气缸的参数,好像什么都没发生过。
林晚晚站在原地,盯着他的后背看了三秒。
然后她低下头,假装在看代码,心跳却比代码的运行速度还快。
那天下午,他们一直忙到六点多。
走的时候,陆一鸣从工作台下拿出一个保温袋,递给她。
“什么?”林晚晚接过来。
“豆浆。”陆一鸣说,“你拿走喝。我早上多打了一杯。”
林晚晚打开保温袋,里面是一杯温热的豆浆,还是那个浓稠度,还是那个甜度。
“你每天早上都打豆浆?”她问。
“嗯。”
“用什么打的?”
“宿舍里有个小豆浆机。”陆一鸣说这话的时候语气很平,但耳朵尖有点红。
林晚晚注意到了。
她没有戳穿,只是把保温袋抱在怀里。
“谢谢。”她说。
“嗯。”
两个人一起走出实训楼。职校的校园比普高大,晚风从操场那边吹过来,带着青草和泥土的味道。
“陆一鸣。”林晚晚忽然叫他全名。
“嗯?”
“你为什么想考本科?”
陆一鸣沉默了几步路。
“因为不想被人看不起。”他说,声音很轻,但每个字都很重,“我中考差了六分。六分。如果数学最后一道大题多做对一半,我现在也在普高。”
林晚晚没有说话。
“但我不后悔来职校。”他继续说,“在这里我学到的技术,普高学不到。我只是想证明——职校生也能考上本科,也能做出好东西。”
林晚晚停下脚步,看着他。
“我懂。”她说。
陆一鸣看着她。
路灯的光落在她脸上,她的表情很认真,没有同情,没有怜悯,只有一种“我也是这样”的共鸣。
“我也被人看不起过。”林晚晚说,“他们说我是做题机器,说我除了**什么都不会。我爸妈也不懂我,他们只知道问我考了多少分、排第几名。”
她顿了一下。
“但我知道我在做什么。我想考那所大学,不是因为它的名气,是因为它的物理系有一个实验室,研究的是我真正感兴趣的东西。我想去那里。”
陆一鸣看着她,目光很深。
“你会考上的。”他说。
“你也会。”林晚晚说。
两个人对视了两秒。
然后林晚晚先移开了目光,低下头,抱着保温袋往前走。
“豆浆再不喝就凉了。”她说,声音里带着一点不易察觉的笑意。
陆一鸣跟上来,走在她的左边——靠近马路的那一边。
林晚晚注意到了这个细节,但没有说破。
她只是把保温袋抱得更紧了一点。
那天晚上,林晚晚回到家,把豆浆倒进杯子里,小口小口地喝。
喝完豆浆,她把杯子洗干净,放在书桌上。
然后她打开手机,看到陆一鸣发来一条消息。
鸣:算法第二版的反馈发你了。另,明天早上想喝红豆的还是黄豆的?
林晚晚盯着屏幕看了五秒。
林晚晚:红豆。
鸣:好。
林晚晚把手机扣在桌上,趴在一堆卷子中间,把脸埋进胳膊里。
她的耳朵很烫。
心也很烫。
她知道这不正常。
她是一个从来不在任何无关事情上浪费时间的人。她的每一分钟都被学习填满,她的每一份精力都用来朝那个目标奔跑。
但陆一鸣出现了。
他像一个意外,闯进了她精密运转的日程表,打乱了她所有的计划。
她应该把他赶出去。
但她不想。
她甚至开始期待周三和周六——期待看到他蹲在地上调试设备的样子,期待听到他说“你的方案我改了一版”,期待那一杯永远温度和甜度都刚刚好的豆浆。
林晚晚抬起头,看着窗外的夜空。
九月底的星星不多,但有一颗很亮,挂在正对着她窗户的方向。
她忽然想起他的名字——一鸣,一鸣惊人。
她对着那颗星星,小声说了一句话。
“陆一鸣,你知不知道,你这个人真的很烦。”
然后她笑了。
笑得比那颗星星还亮。
阅读下一章(解锁全文)
点击即可畅读完整版全部内容
相关书籍
友情链接