屏幕蓝光刺得眼睛发酸。
陈默眨了眨眼,视线有点模糊。他往后靠,椅背吱呀响了一声。文档里列满了任务,每条后面都标着时间。
两天处理数据,三天重构核心,四天集成测试,最后三天调优和写报告。
他关了文档,揉了揉太阳穴。
指尖冰凉,按在皮肤上有点刺痛。系统面板悄无声息地滑出来,悬在屏幕左上角。精神力状态条是浅黄色,旁边有个小小的叹号。
“建议:深度休息八小时。”
陈默点了关闭。他站起来,腿坐麻了,扶着桌沿缓了缓。走到厨房倒水,水龙头拧开,水流哗哗响。
玻璃杯壁上凝着水珠,冰凉。
他喝了一大口,喉咙干得发紧。窗外天还黑着,远处楼宇的轮廓隐在夜色里,只有零星几扇窗亮着灯。
凌晨三点四十七分。
他回到电脑前,打开数据包。沈清澜发来的测试文件很大,压缩包解压用了两分钟。进度条一点点往前爬,像蜗牛。
解压完成,文件夹弹出来。
里面是几十个视频片段,还有对应的标注文件。规范,日期_场景_光照条件。陈默点开第一个。
画面晃动,视角很低。
像装在墙角的老旧摄像头拍的。光线昏暗,人影模糊,动作拖出残影。标注文件里标出了行人位置,框框画得歪歪扭扭。
陈默皱眉。
这数据比想象中还糙。他快速浏览其他片段,情况差不多。夜间,逆光,遮挡严重。全是难处理的边缘场景。
他呼出口气,白气在屏幕前散开。
屋里暖气不足,手指有点僵。他搓了搓手,哈了口热气。然后新建一个脚本,开始写数据清洗代码。
键盘声密集起来。
嗒嗒嗒嗒,像雨点敲在铁皮上。他专注地盯着屏幕,眼睛一眨不眨。代码一行行往下滚,函数嵌套,条件判断。
写到一半,系统面板又跳出来。
淡蓝色的框,边缘微微发亮。“检测到低质量数据,是否启动推演辅助标注?”下面有两个选项:是,否。
陈默手指悬在键盘上。
他看了眼时间,凌晨四点二十。如果手动标注,这些数据至少得处理两天。用推演的话,可能只要几个小时。
但精神力消耗会很大。
他盯着那个浅黄色的状态条,咬了咬牙。点了“是”。
视野边缘泛起蓝晕。
现实世界的轮廓变得模糊,像隔了层毛玻璃。屏幕上的视频自动播放起来,一帧一帧,速度很慢。
系统开始标注。
红色的框框自动出现在行人身上,位置精准,边界清晰。一个,两个,三个。框框跟着人影移动,像粘在身上。
陈默看着,脑子有点晕。
像有根针在太阳穴轻轻扎,不疼,但烦人。他伸手按了按,指尖下的皮肤在跳。一下,一下。
推演持续了二十分钟。
第一个视频标注完成。系统自动保存文件,跳转到下一个。陈默靠在椅背上,闭了会儿眼睛。
再睁开时,蓝晕淡了些。
第二个视频开始标注。这次是雨天,玻璃上淌着水,画面扭曲得更厉害。系统停顿了几秒,框框才出现。
准确率下降了。
陈默坐直身体,调出参数面板。他手动调整了几个阈值,框框重新变得稳定。但脑后的刺痛感明显起来。
像有只小虫在往里钻。
他没停,继续盯着屏幕。第三个,第四个。视频一个个过,标注文件越来越多。文件夹里的图标排成长列。
窗外天色渐渐泛白。
灰蒙蒙的光从窗帘缝隙漏进来,落在地板上,像洒了层薄灰。陈默看了眼时间,早上六点十分。
推演完成了三分之二。
他退出系统,蓝晕瞬间消失。现实重新清晰起来,屏幕亮得刺眼。他抬手遮了遮,眼睛酸得想流泪。
脑袋里嗡嗡响。
他站起来,走到窗边拉开窗帘。外面街道空荡荡的,环卫工人在扫落叶,扫帚刮过地面,沙沙沙。
冷空气涌进来,他深吸了一口。
肺里凉丝丝的,脑子清醒了点。他关窗,回到电脑前。标注还差最后几个视频,但他决定先停一停。
得吃点东西。
他煮了碗速冻饺子。水开了,饺子扑通扑通跳进去,白气腾起来。他盯着锅,眼神有点散。
饺子煮好了,捞出来。
蘸醋吃了几个,没什么味道。机械地嚼,咽下去,喉咙发堵。吃完洗了碗,手被热水烫得发红。
他用毛巾擦干,指尖微微颤抖。
回到电脑前,他先检查了已标注的数据。随机抽查了几个框框,位置都准。系统在低质量数据上表现不错。
他稍微松了口气。
然后继续处理剩下的视频。这次没用推演,手动调整了几个困难帧。速度慢,但精神力消耗小。
上午九点,所有数据清洗完成。
他保存文件,压缩,加密。然后开始重构核心算法。这部分最耗神,得把之前的代码拆开,重新设计架构。
他戴上耳机,放了点白噪音。
海浪声,一层层涌上来又退下去。键盘声混在里面,变得柔和了些。他写得很快,手指在键盘上飞舞。
但错误也多了。
有个变量名打错,调试了十分钟才找到。有个函数忘了返回值,跑起来直接崩溃。他皱眉,删掉重写。
写到中午,进度卡住了。
动态阈值模块有个边界情况没处理好。光照突变超过百分之五十时,算法会误判。他试了几种方案,都不理想。
系统面板悄无声息地滑出来。
“检测到逻辑瓶颈,是否推演解决方案?”陈默盯着那行字,手指在桌面上敲了敲。
一下,两下。
他点了“是”。
蓝晕泛起,比之前深了些。视野里跳出几个虚拟的方案框,每个后面跟着评估分数。六十二,七十八,九十一。
他选了分数最高的那个。
代码自动生成,跳进编辑器里。结构清晰,注释完整。他快速浏览了一遍,逻辑确实更严谨。
但脑袋里的刺痛加剧了。
像有根铁丝在颅骨里搅动。他闭上眼睛,深吸了几口气。再睁开时,屏幕上的字有点重影。
他甩了甩头,继续写。
下午两点,核心重构完成。他跑了一遍单元测试,绿条一个个跳出来。全部通过,没有报错。
他靠在椅背上,长长吐出口气。
胸口闷得慌,像压了块石头。他站起来活动肩膀,骨头嘎巴响了两声。走到镜子前,看了眼自己。
眼圈黑得像被人打过。
胡子又冒出来了,青灰一片。他摸了摸下巴,刺手。没管,转身回去继续工作。
接下来是集成测试。
把算法打包,部署到模拟环境里。用清洗好的数据跑,看效果。他点了运行,进度条开始缓慢移动。
百分之十,百分之二十。
电脑风扇嗡嗡响起来,出风口喷出热风。屋里温度升高了几度,陈默脱了外套,只穿件短袖。
胳膊上起了一层鸡皮疙瘩。
百分之五十,百分之六十。进度条卡住了,卡了整整一分钟。陈默心里一紧,俯身盯着屏幕。
日志窗口滚过一行错误提示。
内存溢出。他啧了一声,调低批量处理的大小。重新跑,进度条再次开始移动。
百分之八十,百分之九十。
完成。测试报告弹出来,平均准确率百分之九十二点七,误报率千分之六点三。离目标还差一点。
陈默盯着那个数字。
千分之六点三。沈清澜要求的是千分之五以下。差这零点几个点,得调参,或者再加点技巧。
他看了眼时间,下午四点。
距离第一天结束还有八个小时。他决定先优化误报率。调出参数面板,一个个滑块慢慢调整。
每调一次,跑一次测试。
准确率会波动,误报率也波动。像走钢丝,得找平衡点。他试了十几组组合,效果都不明显。
系统面板又跳出来。
“是否推演最优参数组合?”陈默没犹豫,直接点了是。这次蓝晕很淡,几乎看不见。
但脑袋里的刺痛变成了钝痛。
像有把锤子在慢慢敲。他咬牙忍着,看系统自动调整参数。滑块自己移动,停在某个位置上。
测试重新跑。
进度条走到头,报告弹出。误报率千分之四点九,准确率微降到百分之九十二点一。达到要求了。
陈默松了口气,肩膀垮下来。
但钝痛没有消失,反而扩散到后颈。他抬手按了按脖子,肌肉硬得像石头。按下去,疼得抽气。
他关了电脑,屏幕暗下去。
屋里突然安静下来,只有耳鸣在嗡嗡响。他趴在桌上,脸贴着冰凉的桌面。闭着眼,想缓一缓。
却睡着了。
醒来看手机,晚上七点半。睡了不到一个小时,但头痛减轻了些。他坐起来,脖子僵硬得转不动。
慢慢活动了几下,才灵活点。
他热了剩饭,就着咸菜吃完。洗碗时手抖得厉害,盘子差点掉地上。他握紧,指节泛白。
洗好碗,他坐到书桌前。
打开文档,写今天的进度报告。敲了几个字,手指不听使唤,老是按错键。他停下来,握了握拳。
再继续写。
报告写得很简练,只列关键数据和问题。写完保存,发给沈清澜的加密邮箱。发送成功,提示音叮了一声。
他关掉邮箱,打开日历。
第一天,完成数据清洗和核心重构,误报率达标。后面还有十三天,任务更重。他盯着日历上的红圈,看了很久。
然后起身洗澡。
热水冲在背上,皮肤微微发红。水汽弥漫开来,镜子上蒙了层白雾。他擦干身体,换上干净衣服。
躺到床上,关灯。
黑暗里,脑子还在转。代码,参数,测试结果。像走马灯,一幕幕闪过。他强迫自己数呼吸。
一,二,三。
数到一百多,才慢慢睡过去。
第二天六点起床。
闹钟响时他猛地坐起来,心跳得厉害。缓了几秒,下床洗漱。冷水泼脸,刺激得打了个激灵。
照镜子,黑眼圈没消,反而更深了。
他刮了胡子,泡沫是薄荷味的,很冲。刮完皮肤刺痒,他抹了点乳液,凉丝丝的。
早餐煎了蛋,热了牛奶。
吃得很快,五分钟解决。收拾干净,坐到电脑前。今天任务是开发管理后台的雏形,还有摄像头接入模块。
他打开开发工具,新建项目。
框架搭得很快,手指在键盘上飞舞。但写到一半,注意力开始涣散。屏幕上的字忽远忽近,像在飘。
他甩甩头,继续写。
上午十点,摄像头模块遇到问题。不同厂商的协议不一样,得一个个适配。他找开源代码,拼拼凑凑。
进展很慢。
中午没吃饭,喝了杯咖啡。速溶的,甜得发腻。他灌下去,胃里一阵翻搅。忍住没吐,继续写。
下午三点,基础功能完成了。
但界面丑得没法看。按钮歪的,布局乱的,颜色搭配刺眼。他试了试操作流程,卡顿严重。
得优化。
他调出系统面板,想用推演优化性能。但点了两次,面板闪了闪,没出来。精神力状态条变成了橙色。
旁边跳出一行红色小字:“警告:精神力中度透支,强制休息六小时。”
陈默盯着那行字,没动。
他关掉警告,手动调整代码。但脑子像生了锈,转不动。一个简单的循环,想了半天才写出来。
效率低得可怕。
他站起来,在屋里来回走。走了十几圈,脑袋还是昏沉。他打开窗户,冷风灌进来,吹得脸发麻。
稍微清醒了点。
他回到电脑前,决定先做能做的。把界面元素对齐,调整颜色,优化几个明显的卡顿点。
弄完已经晚上八点。
他测试了一遍,勉强能用了。保存进度,关电脑。站起来时眼前一黑,扶住桌子才没摔倒。
站了半分钟,视野才恢复。
他慢慢走到厨房,煮了碗面。清汤挂面,撒了点盐。热气扑到脸上,眼睛有点湿。他低头吃,吃得很慢。
面条滑进喉咙,没什么味道。
吃完洗了碗,手抖得更厉害了。他擦干手,走到床边躺下。没脱衣服,直接拉过被子盖上。
闭着眼,却睡不着。
耳朵里嗡嗡响,像有群蜜蜂在飞。太阳穴一跳一跳地疼,后颈的肌肉绷得紧紧的。他翻了个身,脸埋进枕头里。
枕头有股陈旧的气味。
他深吸一口,慢慢呼出。呼吸声在安静的屋里很响,一下,一下。数着呼吸,数到不知道多少。
终于睡着了。
第三天,第四天,第五天。
日子过得像复印机印出来的。起床,洗漱,写代码,测试,优化。吃饭草草了事,睡觉零零碎碎。
系统警告出现过三次。
每次他都无视,或者关掉。精神力状态条从橙色变成红色,又慢慢恢复成黄色。像在走钢丝,摇摇晃晃。
但进度一直往前推。
管理后台功能越来越全,摄像头适配了主流型号,算法针对测试数据做了针对性优化。误报率稳在千分之五以下。
第六天晚上,他跑了完整流程。
从数据输入,到算法处理,到结果输出。整个链条跑通了,没有报错。他盯着最终生成的报告,看了很久。
准确率百分之九十三点二。
误报率千分之四点七。超过沈清澜的要求了。他靠在椅背上,长长吐出一口气。胸口有什么东西松开了。
但紧接着,头痛袭来。
这次是剧痛,像有把电钻在往里钻。他捂住脑袋,手指收紧,指甲掐进头皮里。疼得弓起背,缩在椅子上。
持续了大概一分钟。
痛感慢慢退去,留下嗡嗡的余响。他松开手,掌心全是汗。头发湿漉漉地贴在额头上,像刚淋过雨。
他慢慢直起身,看着屏幕。
报告还亮着,数字清晰。他保存文件,备份到云端。然后关电脑,屏幕暗下去。
屋里只剩台灯的光。
昏黄,温暖,照在桌面上。他盯着那圈光晕,看了很久。然后站起来,走到窗边。
外面下着小雨。
雨丝细细的,在路灯下闪着银光。街面湿漉漉的,反射着霓虹灯的颜色。红绿交错,像调色盘打翻了。
他推开窗户,雨丝飘进来。
落在脸上,凉丝丝的。他深吸了一口湿润的空气,肺里舒服了些。头痛的余韵还在,但轻多了。
他关窗,拉上窗帘。
躺到床上,没关台灯。光从灯罩边缘漏出来,在天花板上投出暖黄的影子。他盯着影子,眼睛慢慢闭上。
这次睡得很沉。
没有梦,没有代码,没有警报。像沉进深海里,周围一片寂静。只有自己的心跳,平稳,缓慢。
醒来是第二天上午十点。
睡了将近十二个小时。他坐起来,头不痛了,但身体发软。像跑了场马拉松,肌肉酸胀。
他慢慢下床,洗漱。
镜子里的人瘦了一圈,脸颊凹下去,颧骨凸出来。眼睛里有血丝,但眼神很亮。像烧着的炭,暗红里透着光。
他刮了胡子,换了衣服。
走到电脑前,开机。今天开始写最终的报告文档。要把这两周的工作总结出来,包括技术细节,测试结果,未来规划。
他打开文档,新建一页。
标题写上:“瞬瞳原型技术报告”。手指落在键盘上,开始敲击。嗒,嗒,嗒。声音很稳,不快不慢。
写到下午,完成初稿。
他检查了一遍,修改了几处表述。然后发给沈清澜,附上演示程序的下载链接和测试账号。
发送成功。
他靠在椅背上,闭上眼睛。两周冲刺,结束了。接下来是等待,等沈清澜的反馈,等下一次会面。
但这次等待不一样。
他手里有了东西,实实在在的东西。算法能跑,数据能看,报告能读。像握了张牌,虽然不算大,但能打出去。
他睁开眼,看了眼日历。
明天就是约好的日子。下午三点,蓝山咖啡馆。他得把演示程序装好,测试设备,准备材料。
他站起来,开始收拾。
电脑,充电器,移动电源,备用网卡。还有打印的报告,草图,笔。一样样装进背包里,拉链拉上。
放在门口鞋柜上。
然后他煮了碗面,加了两个蛋。慢慢吃,细细嚼。味道还是淡,但能吃出麦香了。吃完洗了碗,擦干手。
洗了个热水澡。
水很烫,皮肤微微发红。他站在水幕下,让热水冲过后颈。紧绷的肌肉慢慢松弛下来,舒服得叹气。
擦干身体,换上干净衣服。
躺到床上,关灯。黑暗里,他能听见自己的心跳。平稳,有力,一下一下。像鼓点,为明天定下节奏。
窗外雨停了。
月亮从云层后面露出来,清冷的光洒进屋里。地板上一片银白,像铺了层霜。陈默看着那片光,慢慢闭上眼睛。
呼吸变沉,变缓。
睡意像潮水,温柔地漫上来。把他包裹,带走。最后一刻,他脑子里闪过咖啡馆的门,绿色的招牌。
还有沈清澜那双锐利的眼睛。
然后,一切都暗下去。只有平稳的呼吸,在安静的屋里轻轻回荡。像海浪,一层层涌上沙滩。
又退去。