秋意渐浓时,实验室的空调终于调低了温度。络娮盯着屏幕上反复闪烁的“识别失败”提示框,指尖在键盘上停了很久,连后颈的碎发滑到脸颊都没察觉。
“第17组数据又错了。”她低声自语,将视频进度条拉回原点。画面里,一个戴眼镜的男生正做反手击球动作,膝盖弯曲角度、转体幅度都符合标准,系统却固执地判定为“错误动作”,红色的警告框像块刺眼的补丁,糊在屏幕中央。
这已经是本周第三次出现类似问题。络娮调出算法日志,一行行绿色的代码在眼前游走,最终停在“特征提取模块”——问题出在对“手腕放松度”的判断上。系统依赖加速度传感器的数据,却忽略了一个更细微的信号:手腕转动时,球拍与小臂形成的夹角变化。
她揉了揉发胀的太阳穴,想起祈盛清单上的话:“新手的错误往往藏在‘看似标准’的动作里。” 指尖在鼠标上悬了悬,最终还是点开了邮件界面,收件人栏输入那个熟悉的邮箱地址时,心脏轻轻跳了一下。
“关于反手动作识别异常的问题,想请教几个细节。”她写得很简洁,附带了错误视频和日志截图,发送前犹豫了两秒,删掉了末尾的“麻烦了”三个字。
邮件发出不到十分钟,手机就震动了。不是邮件回复,是条短信,来自祈盛:“在实验室?我过来一趟。”
络娮握着手机站起来时,膝盖撞到了桌腿,发出“咚”的轻响。她弯腰揉着膝盖,耳尖却不受控制地发烫——这是一年多来,他第一次主动提出要见她,不是在人多的会议室,而是只有他们两人的实验室。
十五分钟后,敲门声响起。络娮拉开门,看到祈盛站在走廊里,穿着件浅色衬衣。他手里拿着个黑色文件夹,看到她揉膝盖的动作,眉峰微蹙:“撞到了?”
“没事。”络娮侧身让他进来,闻到他身上的薄荷香里混了点桂花香——应该是路过图书馆前的桂树时沾上的。
祈盛走到屏幕前,没立刻看视频,反而先注意到桌角的马克杯。杯子里的咖啡已经凉透,杯壁上结着层浅褐色的渍,是她忙得忘了换的。他的目光在杯子上停了半秒,才转头问:“哪组数据?”
“第17组。”络娮指着屏幕,“你看,动作参数都在标准范围内,系统却判定错误。”
他没说话,拉过旁边的椅子坐下,文件夹放在腿上,露出的手腕上,手表的指针正指向下午四点半。视频开始播放时,他从口袋里掏出支笔。
“暂停。”他在视频播放到0分12秒时开口,声音比平时低些。络娮按下暂停键,画面定格在男生手腕转动的瞬间。
祈盛用笔尖点了点屏幕:“这里,球拍与小臂的夹角是170度,标准值应该是180度。”
“10度的误差,系统允许范围是15度。”络娮调出参数表,“按道理不该判定错误。”
“对职业选手来说,10度不算什么。”他转动着手里的笔,金属笔身在灯光下反射出细碎的光,“但对新手,这10度藏着紧张——他的手腕在发力瞬间下意识绷紧了,只是用转体幅度掩盖了这个细节。”
络娮愣住。系统的传感器确实没捕捉到这个变化,因为加速度数据显示“手腕放松”,但视频里男生握拳的指节泛白,确实藏着不易察觉的紧绷。
“这种‘隐性紧张’,算法怎么识别?”她问,指尖无意识地敲着桌面。
祈盛没直接回答,反而从文件夹里抽出张纸,上面画着详细的动作分解图。不是打印的,是手画的,用不同颜色的笔标注着:红色是“显性错误”(如屈膝不足),蓝色是“隐性错误”(如手腕微颤)。在“手腕放松度”那条下面,他用蓝笔写着:“看球拍的反光点——放松时,反光点会随手腕转动自然移动;紧张时,反光点会突然‘跳一下’。”
络娮的呼吸顿了顿。
这是她以前画素描头像的技巧。当时她总抓不住人物眼神的变化,宋添教她“看瞳孔里的反光”,说“情绪藏在光的移动里”。没想到时隔多年,会在祈盛的动作分析图里,看到相似的逻辑。
“可以给算法加个‘反光点追踪’模块。”祈盛的声音将她拉回现实,“用图像处理识别球拍上的高光,结合加速度数据,准确率会高很多。”
他说话时,细软的头发挡住额头,络娮只能看到他挺直的鼻梁,和鼻尖上一点细小的痣。
“谢谢。”络娮低下头,打开代码编辑器,“我试试。”
祈盛没走,坐在旁边的椅子上翻文件夹,偶尔抬头看一眼她的屏幕。实验室里很安静,只有键盘敲击声和他翻动纸张的沙沙声,像首节奏缓慢的二重奏。夕阳透过窗户斜切进来,在他膝盖上投下块菱形的光斑,随着他翻页的动作轻轻晃动。
调试到傍晚六点时,算法终于通过了测试。第17组数据的识别结果变成了绿色的“正确”,络娮长舒一口气,转头想告诉祈盛,却发现他靠在椅背上睡着了。
前额的碎发滑到了脑后,露出的额头上,有道浅浅的印子,应该是长期低头看文件压出来的。他的睫毛很长,在眼下投出片柔软的阴影,平时紧绷的下颌线此刻放松着,嘴角微微下撇,像在做什么不开心的梦。
她很少见他这样放松的样子。记忆里的祈盛,还是去年冬天在雪地里的冰冷,像块裹着硬壳的糖,让人忘了他也会有疲惫的时刻。
桌上的手机震动起来,是张琪发来的消息:“晚上聚餐,你来不来?” 络娮回了句“不了,加班”,生怕铃声吵醒他。
她起身去茶水间,泡了杯热牛奶。回来时,祈盛已经醒了,正揉着眼睛,看到她手里的牛奶,愣了愣。
“刚泡的。”络娮把杯子放在他面前,指尖不小心碰到杯壁,烫得缩了缩手。
“谢谢。”他拿起杯子,指尖裹着牛奶的热气,在杯壁上留下圈浅白的雾。他喝了一口,眉峰舒展了些。
络娮低头敲键盘,“算法改好了,你要不要看看?”
他凑过来看屏幕时,薄荷香混着奶香漫过来,拂过她的耳廓。络娮的手指僵了僵,感觉他的肩膀离自己很近,近到能看到他连衬衣上沾着的根桂花瓣。
“很准。”祈盛看完测试结果,声音里带着点笑意,是络娮从未听过的温和,“比我想象中快。”
“是你的建议有用。”络娮的声音很轻,像怕惊散这难得的平和。
他没接话,拿起文件夹站起来:“那我先回去了,还有别的问题可以随时找我。”
“嗯。”络娮送他到门口,看着他走进走廊尽头的暮色里,连帽衫的影子被夕阳拉得很长,像条温柔的尾巴。
关上门的瞬间,她才发现自己的心跳得飞快,指尖还残留着碰过牛奶杯的温度。桌上的牛奶还剩小半杯,杯壁的雾渐渐散去,露出她没注意到的细节——杯口边缘,有个极浅的唇印,形状干净利落,像他握球拍的姿势。
两人的联系又渐渐多了起来。不再只有冰冷的邮件,偶尔会发短信,内容全是关于项目的,却比邮件多了点人情味儿。
祈盛会发:“今天采集到组有趣的数据,新手把发球做成了扔铅球,你要不要看看?” 附带个笨拙的表情包,是只卡通小熊举着网球拍,络娮认出是他自己画的。
络娮会回:“已加入‘错误案例库’,给算法加了个‘铅球式发球’标签。” 后面跟着个偷笑的表情。
他们依然没提过去,却在这些细碎的互动里,慢慢找回了点熟悉的节奏。就像现在,络娮看着屏幕上祈盛开的共享文件夹,里面躺着个名为“老照片”的子文件夹,犹豫了很久还是点了进去。
里面不是照片,是段视频,拍摄于七年前的省赛赛场。画面有点晃,应该是用手机拍的,镜头追着场上那个穿白色运动服的少年——是十七岁的祈盛。
他比现在清瘦些,跑动时的动作像头轻盈的鹿,反手击球时的手腕转动快得像道闪电,场边的欢呼声浪几乎要冲破屏幕。络娮看着他赢下关键分时握拳的动作,忽然想起去年在书店里,苏羽红着眼眶说“他当年说网球是他的命”。
视频的最后,镜头转向看台,定格在个举着应援牌的女生脸上——是苏羽,那时的她还没现在的锐利,眼里的光比聚光灯还亮。
络娮关掉视频,心脏像被什么东西轻轻攥住。她一直以为,祈盛放弃网球是因为苏羽的离开,现在才明白,那更像场自我放逐——他不是恨网球,是恨那个在关键分上分心的自己。
手机震动时,她吓了一跳,看到是祈盛的短信:“在忙吗?有组数据想让你帮忙看看。”
“在。”她回完,深吸一口气,将那个“老照片”文件夹拖进了加密区。有些过去,还没到可以坦然面对的时刻。
祈盛来的时候,手里拿着个平板电脑,屏幕上是组奇怪的数据:同一个学生的同一个动作,上午测试时系统判定“正确”,下午却判定“错误”。
“我查了设备,没问题。”他把平板放在桌上,“是不是算法的稳定性出了问题?”
络娮调出两次测试的环境参数,突然笑了:“你看光线强度。上午是晴天,光照度8000lux;下午阴天,光照度3000lux。算法的‘反光点追踪’模块对光线太敏感了。”
祈盛的眉峰动了动:“需要加个‘光线补偿’算法?”
“嗯,”络娮敲着代码,“但有点麻烦,得重新训练模型。”
窗外的天色暗了下来,实验室的灯自动亮起,暖黄的光落在两人身上。祈盛看着她飞快敲击键盘的手指,忽然说:“我请你吃饭吧,算谢谢你帮忙改算法。”
络娮的手指顿了顿:“不用……”
“不是客套。”他打断她,语气很认真,“食堂的糖醋排骨今天特价,你以前不是总说食堂的排骨好吃?”
她仿佛被拨动心弦,眼里的惊讶藏不住。
那天的糖醋排骨果然很甜,裹着琥珀色的酱汁,堆在白色的瓷盘里,像座小小的糖山。络娮挑了块没怎么入味的,放进嘴里慢慢嚼着,听祈盛讲那些她不知道的事。
“那个总被系统判定错误的男生,其实是体育生,之前练举重的,手腕力量太足,控制不住力道。”他用筷子拨弄着碗里的米饭,“我让他每天用温水泡手,现在好多了。”
“你好像很懂怎么教新手。”络娮说。
“以前带校队的小孩。”他的声音低了些,“比现在的大学生难教多了,哭着说‘再也不打球’是常事。”
络娮想起那个“错误案例”文件夹里的录音,他对小孩说“别着急,慢慢练”,语气里的耐心像层柔软的棉花。她忽然问:“你为什么不做教练?”
祈盛夹排骨的手顿了顿,排骨上的酱汁滴在桌上,像个小小的红点。他沉默了很久,才低声说:“怕教不好。”
不是“不想”,是“怕”。
络娮的心轻轻一沉。她好像有点懂了,他不是排斥网球,是怕再次面对那种“想做好,却偏偏搞砸”的无力感。就像省赛那场球,就像去年冬天在书店里,他说“我配不上你的光”。
吃完饭往实验室走时,路过篮球场,有个篮球滚到了脚边。络娮弯腰去捡,祈盛却比她快一步,指尖碰到球面的瞬间,篮球突然漏气,发出“嘶”的长音,瘪成了块皱巴巴的橡胶。
两人都愣住了。
“质量太差了。”络娮先笑了,打破了尴尬。
祈盛捏着瘪掉的篮球,忽然说:“其实……我现在偶尔会去看青少年比赛。”
络娮的脚步顿了顿。
“就在市体育馆,周末的公益赛。”他的声音很轻,像在说个秘密,“那些小孩打球很笨,却比我当年敢拼。”
他没说下去,但络娮听懂了。他在那些小孩身上,看到了自己丢失的东西——不是技术,是不怕犯错的勇气。
回到实验室时,算法的“光线补偿”模块刚好调试完成。第17组数据的识别结果变成了绿色的“正确”,屏幕上的光斑随着算法的优化,慢慢变得柔和,像被晚风拂过的湖面。
祈盛看着屏幕,忽然说:“明天我要去采集青少年组的动作数据,你要不要一起?”
络娮抬头看他,路灯的光透过窗户落在他脸上,一半亮,一半暗,像藏着犹豫和期待。
“好。”她听到自己说,声音轻得像叹息,却带着种前所未有的笃定。
第二天的市体育馆里,到处都是穿着亮色运动服的小孩。他们追着网球跑,笑声比击球声还响亮,有个扎着辫子的小姑娘,发球时把球扔到了自己脸上,非但没哭,还叉着腰喊“我再来一次”。
络娮举着摄像机,看着取景框里的画面,忽然笑了。
祈盛站在场地中央,穿着件格子衬衫,袖子卷到小臂。他教小孩握拍的动作很耐心,手指碰到球拍的瞬间,络娮注意到他的指尖微微颤抖了一下,像触碰什么珍贵的东西。
“祈老师,你也打一个嘛!”那小姑娘仰着脸喊。
周围的小孩跟着起哄,祈盛的脸有点红,连连摆手:“很久没打了。”
“就一个!就一个!”
络娮举着摄像机,镜头稳稳地对着他,心里忽然有点期待。
祈盛最终还是拿起了球拍。是支儿童专用拍,粉色的,和他高大的身形很不相称。他抛球的动作有点生疏,击球时的声音也很轻,球没飞过网,落在了场地中央,像颗滚圆的句号。
小孩们却欢呼起来,拍着手喊“祈老师加油”。
祈盛站在原地,握着粉色的球拍,忽然笑了。是络娮从未见过的笑,眼里的光比聚光灯还亮,像冰雪初融时,阳光落在湖面上的样子。
络娮按下暂停键,将这一刻定格在摄像机里。
她知道,有些东西正在慢慢改变。
就像算法需要不断优化才能更精准,人心也需要一次次试探和靠近,才能慢慢解开那些打结的过去。她和祈盛之间,隔着省赛的遗憾,隔着去年冬天的冰冷,隔着太多没说出口的话,但此刻,在满场的笑声和阳光里,那些距离好像都在慢慢缩短,像被数据修正的误差,一点点趋向于零。
回去的路上,祈盛把那个粉色的网球拍放进了后备箱。络娮看着他的侧脸,忽然说:“下次,我们试试用你的动作数据训练模型吧。”
祈盛握着方向盘的手顿了顿,后视镜里,他的目光与她撞在一起,像有电流划过。
“好。”他说。