第39章 意外的橄榄枝(1/2)
灯是第二天下午装上的。
陈默和张浩跑了趟灯具市场,挑最便宜的那种LED吸顶灯。方方正正一个白盒子,四十瓦。老板说保三年,张浩嘀咕“能用一年就谢天谢地”。
回来路上经过五金店,又买了卷电线,几个开关插座。张浩拎着塑料袋,塑料提手勒进掌心,勒出两道深痕。
爬上七楼,两人都喘。陈默靠在门框上缓气,汗顺着鬓角往下淌。
“以后……得多锻炼。”张浩把袋子扔地上,哐啷一声。
房间还是昨天的样子。桌子椅子靠墙放着,文件柜孤零零立着。阳光从裂缝挤进来,在地板上切出一道歪斜的光斑。
陈默踩上椅子,踮脚去够天花板预留的灯线。灰尘扑簌簌落下来,他眯起眼。
张浩在露的铜线头翘着,摸上去有点扎手。
“闸拉了?”他问。
“拉了。”张浩蹲在电表箱旁边,“整层都黑了。”
接线,缠胶布,固定灯座。动作生疏,但步骤没错。最后把白盒子扣上去,卡扣咔哒一声响。
陈默从椅子上跳下来,膝盖震得发麻。
“试试。”张浩走到电表箱前。
闸推上去。灯亮了。
白光瞬间灌满房间。墙壁上的污渍,地上的裂纹,铁楼梯扶手的锈迹,全都清清楚楚。灰尘在光柱里翻滚,像暴雪。
张浩仰着头看。“还挺亮。”
陈默走到开关旁,按了一下。灯灭。再按,灯亮。一明一暗,房间在崭新和陈旧之间切换。
他多按了几次。明,暗,明,暗。
“上瘾了?”张浩笑。
陈默停下手。灯亮着。他走到窗边,裂缝在强光下变得模糊,像玻璃上的一道浅痕。
“总算像样了。”他说。
张浩打开笔记本电脑。连上手机热点,下载速度跳上200KB/s。“网还是得尽快拉。”
“明天约了电信的人。”陈默说。
两人开始布置。桌子搬到窗下并排,椅子摆正。文件柜推到墙角,陈默把那张旧发票贴在了柜门内侧。
服务器机柜暂时没买,先用两个塑料整理箱装设备。箱子上贴着标签:主板测试、摄像头模组、备用电源。
忙到傍晚,房间有了雏形。张浩从包里掏出两盒泡面,晃了晃。“庆祝一下?”
陈默点头。两人去楼层的公共休息区接热水。
休息区在走廊尽头,十平米见方。靠墙摆着两张旧沙发,海绵从破口露出来。中间有张矮茶几,玻璃面裂了,用透明胶粘着。
墙角有台饮水机,红灯亮着,表示正在加热。旁边垃圾桶塞满了外卖盒子,酸味混着油味。
张浩撕开泡面盖子,把调料包倒进去。陈默按下热水键,蒸汽喷出来,扑在脸上湿漉漉的。
“这层住多少人?”张浩问。
“中介说租出去六七间。”陈默看着热水注进纸碗,面饼慢慢浮起来,“但白天没见着人。”
话音未落,走廊传来脚步声。很重,带着回音。
一个男人走进休息区。三十出头,平头,黑框眼镜。穿着灰色卫衣,胸前印着个褪色的机器人图案。他手里端着个马克杯,杯沿有咖啡渍。
看见陈默和张浩,他愣了一下,随即点头。“新搬来的?”
“昨天刚签合同。”陈默说。
“哪间?”
“七零三。”
“我对门。”男人笑了,露出有点歪的门牙,“七零四。”
他走到饮水机前接水。马克杯很旧,瓷釉剥落了几块。接满热水,他撕开一条速溶咖啡倒进去,用勺子慢慢搅。
勺子碰着杯壁,叮,叮,叮。
“做什么的?”男人问,眼睛透过镜片打量他们。
“安防算法。”陈默说,“社区用的。”
“硬件还是软件?”
“软件为主,对接硬件。”
男人点点头,喝了一口咖啡。烫,他龇牙咧嘴吸了口气。“我是做硬件的。嵌入式,智能家居方向。”
他掏出一张名片递过来。纸质粗糙,边缘没切齐。上面印着:周宇,智创硬件工作室。
陈默接过,看了看。“周宇?”
“对。”周宇把勺子放在茶几上,“这层就咱们两家做技术的。其他有搞直播的,有做微商的,还有个卖二手书的。”
张浩插话:“你工作室几个人?”
“就我一个。”周宇耸耸肩,“以前有合伙人,去年撤了。嫌不赚钱。”
他说得很随意,但嘴角往下撇了撇。
泡面好了。陈默和张浩端着面碗,周宇端着咖啡,三人就在沙发坐下。沙发弹簧坏了,坐下去陷得很深。
“你们主要做什么产品?”陈默问。
“智能开关,传感器,还有定制控制器。”周宇掰着手指数,“最近在折腾一个路灯控制器,带环境感知的。能根据车流量调亮度,省电。”
陈默筷子停在半空。“车流量检测用摄像头?”
“对,低分辨率模组就行。”周宇身体前倾,“但算法卡住了。背景光变化大的时候,误检率高。”
“什么算法?”
“简单的前景提取加轮廓匹配。”周宇比划,“晚上车灯一照,影子乱飘,就分不清了。”
陈默没说话。他低头吃了一口面,面条泡得有点软。
张浩看看陈默,又看看周宇。“我们老大做检测算法挺厉害的。”
“哦?”周宇眼镜后的眼睛亮了亮。
“社区安防,也要处理各种光照条件。”陈默放下筷子,“不过场景不一样。”
“底层逻辑能借鉴吧?”周宇说,“我那个需求其实不复杂,就是要稳定。路灯控制器嘛,装在户外,风刮雨淋的,不能老出错。”
他从口袋里掏出手机,点开几张照片。电路板设计图,焊了一半的样品,还有测试数据截图。
陈默接过手机看。照片拍得随意,但对焦清楚。电路板走线规整,元器件排列紧凑。
“这是主控?”他指着一个芯片。
“STM32F4。”周宇说,“成本压得低,性能够用。”
陈默一张张翻过去。最后一张是测试现场,控制器装在路灯杆上,电线裸露着缠了几圈胶布。背景是条乡镇公路,路灯昏黄。
“有实测数据吗?”陈默问。
“有,但不理想。”周宇拿回手机,点开一个表格,“晴天还行,误检率百分之五以内。阴天就蹦到百分之二十,下雨天直接没法用。”
数据列得很详细,时间、天气、车流量、误报次数。最后一行用红字标着:需优化检测算法。
陈默盯着那行红字。面汤凉了,浮起一层白色油脂。
“你们算法跑在什么平台上?”他问。
“就主控芯片上,没外挂处理器。”周宇说,“所以不能太复杂,内存和算力都有限。”
“模型参数量级?”
“最好十万以内。”周宇伸出两根手指,“二十万是极限。”
张浩吹了声口哨。“这要求不低。”
周宇苦笑。“要不怎么卡了半年。”
休息区安静下来。饮水机咕噜一声,又烧开一锅水。走廊那头传来隐约的音乐声,是那种网络神曲,旋律重复得让人烦躁。
陈默端起面碗,把剩下的汤喝完。咸,味精味很重。
“我可以看看你的代码吗?”他放下碗。
周宇愣了愣。“代码……有点乱。”
“就看检测部分。”
周宇犹豫了几秒,然后点头。“行。我笔记本在屋里,现在拿?”
“现在吧。”
周宇起身往外走,脚步声很快。陈默和张浩对视一眼。
“要帮忙?”张浩压低声音。
“看看。”陈默说,“不费什么事。”
周宇抱着笔记本电脑回来,屏幕亮着。他在陈默旁边坐下,打开一个工程文件夹。
代码确实乱,注释少,变量名随意。但结构清晰,图像采集、预处理、检测、输出,几个模块分得清楚。
陈默滚动鼠标滚轮。检测部分用了经典的光流法加阈值分割,代码写了一百多行。
“这里。”他指着一行,“阈值是固定的?”
“对,手动调的。”周宇说,“不同天气得改参数,麻烦。”
“可以试试自适应阈值。”陈默说,“根据图像灰度分布动态调整。”
“算力够吗?”
“够,就多一次直方图统计。”
陈默接过电脑,新建了一个文件。手指敲键盘,嗒嗒嗒的声音在休息区回响。他写了段伪代码,二十几行,逻辑清楚。
周宇凑近看,眼镜几乎贴到屏幕上。
“这样……雨天灰度分布会偏移,阈值自动跟着动。”他喃喃道。
“嗯。”陈默敲下最后一个分号,“但只能解决一部分问题。真要稳定,得用更鲁棒的算法。”
“比如?”
陈默停顿了一下。他眼前浮出系统界面,推演次数还在那里亮着。但他没点。
“边缘特征加运动轨迹过滤。”他说,“车灯移动轨迹有规律,背景噪声是随机的。”
周宇眼睛越来越亮。“这个思路好!轨迹过滤……内存够吗?”
“开个环形缓冲区,存最近十帧的检测结果。”陈默在纸上画示意图,“做轨迹匹配,不是车就滤掉。”
本章未完,点击下一页继续阅读。