第3章
中職生與普高生的奮斗情緣
豆?jié){與代碼------------------------------------------,林晚晚的手機震了一下。,以為是鬧鐘,拿起來一看——是一條微信好友申請。,昵稱叫“鳴”,驗證消息只有兩個字:“陸一鳴。通過”按鈕上停了零點五秒,然后點了同意。,她等了一分鐘,對方沒說話。她又等了兩分鐘,還是沒說話。,繼續(xù)背范文?!啊璒nly when we com**ne theory with practice can we truly **ster knowledge……”,手機又震了。。:方案里識別模塊的算法框架,你今天能給我嗎?。她昨晚才把方案初稿發(fā)給他,今天就要算法框架?這人做事也太急了。:不能。算法需要先確定數(shù)據(jù)集標注方式,最快周日。:周日太晚。我硬件搭建需要知道接口參數(shù),周六之前必須定。,打了一行字又刪掉,再打再刪。:那周六碰頭的時候我?guī)铣醪椒桨?,你先做其他模塊。
鳴:好。
然后對方就沒動靜了。
林晚晚把手機放到一邊,重新拿起英語范文,但腦子里已經切換到了算法框架的邏輯。她在草稿紙上快速畫了一個流程圖:數(shù)據(jù)采集→預處理→特征提取→分類器→輸出控制信號。
畫完之后她看了一眼,總覺得分類器那部分太粗糙,需要換一種模型。
她把紙翻過來,重新畫。
周萌到教室的時候,看到林晚晚面前的草稿紙已經鋪了三四張,每一張都畫滿了亂七八糟的框框和箭頭。
“你這是在畫電路圖?”周萌湊過來看。
“算法框架?!?br>“你不是學物理的嗎?怎么搞起編程了?”
“科技創(chuàng)新大賽要用?!绷滞硗眍^都沒抬。
周萌嘖嘖了兩聲:“你現(xiàn)在是高三哎,還搞這些亂七八糟的,不怕影響成績?”
林晚晚的筆尖頓了一下。
“不會。”她說,語氣比平時硬了一點。
周萌聽出來了,識趣地沒再說話,默默拿出自己的英語卷子。
林晚晚知道周萌沒有惡意。但“影響成績”這四個字,她聽過太多次了。從她決定參加科技創(chuàng)新大賽開始,就有同學在背后議論:“林晚晚是不是飄了?高三了還搞這些?她以為她是天才嗎?又能做題又能搞競賽?”
她不是天才。
她只是不想讓自己的高中三年只有卷子和排名。
她想做出一點什么,一件可以拿給別人看、說“這是我做的”的東西。
這也是為什么她看到陸一鳴的獲獎記錄時,幾乎沒有猶豫就同意了組隊。因為那個人做出過東西——一個能自動分揀物料的機械臂,在市技能大賽上拿了**。
她能做理論,他能做實物。
她想看看,他們倆合在一起,能做出什么。
周六下午兩點,林晚晚準時到了職校的實訓樓。
這是她第一次進職校的校園。
和普高不一樣,這里沒有那種壓迫感的安靜和緊張。操場上有人在打籃球,實訓樓門口停著幾輛電動三輪車,墻上貼著各種技能大賽的宣傳海報——“技能改變命運匠心鑄就未來”。
林晚晚覺得這些標語有點意思。在普高,所有的標語都是關于分數(shù)、排名、名校的。而在這里,***是“技能匠心未來”。
她按照陸一鳴發(fā)的定位,找到了三樓的一間機電一體化實訓室。
推開門,一股金屬和潤滑油的氣味撲面而來。
實訓室很大,擺著七八個工作臺,每個臺子上都有各種各樣的設備:PLC控制柜、傳感器模組、小型機械臂、傳送帶模型。墻上掛著工具板,扳手、螺絲刀、鉗子整整齊齊地排成幾排。
陸一鳴站在最里面的一個工作臺前,背對著門,正在擰一個金屬支架的螺絲。
他今天沒穿工裝,穿了一件黑色的短袖,袖子卷到肩膀,露出結實的上臂。手臂上有幾道淺淺的舊傷疤,不知道是實訓時被什么劃的。
“來了?”他聽到腳步聲,頭也沒回。
“嗯?!绷滞硗碜哌^去,把書包放在旁邊的工作臺上,“你的實訓室挺大的。”
“學校的?!标懸圾Q把螺絲擰緊,轉過身來,“不是我的。”
林晚晚注意到他手邊放著一杯豆?jié){,還冒著熱氣。工作臺上除了各種零件,還攤著一本翻到中間的程序設計教材,書頁被翻得很舊,邊角都卷起來了。
“你周六也在學校?”林晚晚問。
“嗯。實訓室周末開放,我來得比較多?!标懸圾Q擦了擦手,從工作臺下抽出一張凳子推給她,“坐吧。你的算法框架呢?”
林晚晚從書包里拿出三頁手寫的方案,遞過去。
陸一鳴接過去,低頭看。
林晚晚坐在凳子上,觀察他看方案的表情。他的眉頭微微皺著,嘴唇抿成一條線,目光從左到右快速掃過每一行。翻到第二頁的時候,他的眉頭皺得更緊了。
“有問題?”林晚晚問。
陸一鳴沒有馬上回答。他把三頁紙看完,放到工作臺上,用手指點了點第二頁中間的一段。
“你這個分類器,用的是支持向量機?”他問。
“對。SVM在小樣本數(shù)據(jù)集上表現(xiàn)好,適合我們這個項目。”
“響應速度呢?”
“訓練好的模型單次推理在50毫秒以內?!?br>“50毫秒?”陸一鳴看著她,“你知道我的圖像識別模塊從采集到輸出控制信號,整個鏈路要求多少毫秒嗎?”
林晚晚沒說話。
“200毫秒。”陸一鳴說,“你一個分類器就占了50,加上圖像采集、預處理、信號傳輸、電機響應,整體至少300到400毫秒。太慢了?!?br>林晚晚的眉頭也皺起來了。
“你之前說圖像識別能提升三倍速度,我按照那個算的?!彼f,“如果你能壓縮到100毫秒以內,整體就能控制在200左右?!?br>“圖像識別我可以做到80毫秒。”陸一鳴說,“但你的分類器不能超過30毫秒。SVM做不到?!?br>“那你說用什么?”
“輕量級神經網(wǎng)絡。Mo**leNet或者ShuffleNet,推理時間能壓到20毫秒以內。”
林晚晚盯著他看了兩秒。
“你會部署神經網(wǎng)絡到嵌入式設備上?”她的語氣里帶著一絲懷疑。
“不會。”陸一鳴回答得干脆利落,“但我可以學?!?br>林晚晚被他這句話堵了一下。她想說“你以為學一個東西那么容易”,但話到嘴邊又咽回去了。因為她也經常說“我可以學”這三個字,并且每一次都是認真的。
她深吸一口氣。
“神經網(wǎng)絡需要大量的標注數(shù)據(jù),我們沒有。”
“可以自己拍。垃圾圖片網(wǎng)上有現(xiàn)成的數(shù)據(jù)集,不夠就自己拍?!?br>“訓練需要GPU資源?!?br>“我用學校的服務器,晚上跑?!?br>“模型壓縮和量化呢?”
“我不會,但我有三天時間學?!?br>兩人對視了五秒鐘。
林晚晚先移開了目光。她重新拿起那三頁方案,快速在腦子里過了一遍。如果換神經網(wǎng)絡,整個算法架構都要推倒重來,工作量至少翻倍。
但響應速度如果能壓到30毫秒以內,項目的技術指標會提升一個檔次。
“給我兩天時間?!彼f,“我重新做一版方案?!?br>“一天。”陸一鳴說。
“一天半?!?br>“成交?!?br>林晚晚把方案收進書包,站起來準備走。她走到門口的時候,忽然想起一件事,轉過身來。
“那把刀,”她說,“你那天晚上給我的折疊刀,我一直沒還你?!?br>陸一鳴正在整理工作臺上的零件,聽到這話手頓了一下。
“不用還了?!彼f,聲音很淡。
“為什么?”
“那是備用的。我還有一把?!?br>林晚晚站在門口,看著他。他低著頭繼續(xù)擰螺絲,沒有看她。
“那謝謝?!彼f。
“嗯?!?br>林晚晚走了兩步,又停下來。這次她沒有轉身,只是背對著他說了一句:“你的數(shù)學筆記,泰勒展開后面那道變式題,你做的那個輔助函數(shù)構造,其實還可以再優(yōu)化?!?br>“怎么優(yōu)化?”
“把ln(1+x)展開到二階,用柯西中值定理,一步到位。”
她說完就走了。
陸一鳴抬起頭,看著空蕩蕩的門口,愣了兩秒。
然后他翻開數(shù)學筆記,找到那道變式題,按照她說的方法重新做了一遍。
果然一步到位。
他盯著那個簡潔到近乎完美的推導過程,嘴角動了一下。
然后他拿起那杯已經涼了的豆?jié){,喝了一口,繼續(xù)擰螺絲。
周一早上,林晚晚到教室的時候,發(fā)現(xiàn)自己的課桌上多了一樣東西。
一杯熱豆?jié){。
杯子上沒有任何標簽,不是食堂賣的那種。杯子下面壓著一張紙條,紙條上的字跡不算好看,但一筆一劃寫得很認真:
“你的方案我改了一版,你看看。神經網(wǎng)絡的部分我跑了幾個預訓練模型,數(shù)據(jù)貼在了背面。另外,早飯要吃。你太瘦了。”
沒有署名。
但林晚晚知道是誰。
她把紙條翻到背面,上面密密麻麻貼了幾張打印的小表格,是不同神經網(wǎng)絡模型在嵌入式設備上的推理時間和準確率對比。Mo**leNetV2最優(yōu),20毫秒,準確率92.3%。
數(shù)據(jù)很全,很專業(yè)。
林晚晚盯著最后那行字看了很久——“你太瘦了”。
她把紙條折好,放進書包最里層的拉鏈袋里,和那把折疊刀放在一起。
然后她拿起豆?jié){,喝了一口。
還是熱的。
豆?jié){很濃,不是那種兌了很多水的稀湯,能喝出來是現(xiàn)磨的。甜度剛剛好,不膩。
她不知道他從哪里弄來的豆?jié){,也不知道他幾點起來弄的。
但她喝完之后,覺得整個人都暖了。
周萌到教室的時候,看到林晚晚面前的豆?jié){杯子,眼睛一亮。
“喲,誰給你買的?”
“自己買的。”林晚晚面不改色地說。
“不可能,食堂的豆?jié){杯子不是這樣的?!敝苊葴愡^來聞了聞,“這豆?jié){好香啊,哪家店買的?”
“不知道?!?br>周萌狐疑地看著她,目光在豆?jié){杯和她微微泛紅的耳朵之間來回掃了兩遍,然后露出了一個“我懂了”的笑容。
“林晚晚,你談戀愛了?”
“沒有?!?br>“那你耳朵紅什么?”
“熱的。”
“現(xiàn)在才九月份,哪里熱了?”
林晚晚沒理她,翻開物理卷子,開始做題。
但她發(fā)現(xiàn)自己的專注力比平時差了很多。做完一道電磁感應的選擇題,她腦子里想的不是*IL和法拉第定律,而是那張紙條上的字跡。
他的字真的不好看。結構松散,筆畫僵硬,一看就是很久沒好好寫過字的人。但每一個字都寫得很用力,力透紙背,像是在跟筆較勁。
“你太瘦了?!?br>這不像是一句關心,更像是一句陳述。語氣平淡,沒有修飾,就像他說“你的方案我改了一版”一樣。
但林晚晚不知道為什么,就是覺得這句話有點重。
重到她一整個上午都在想。
中午吃飯的時候,她做了一個決定。
她拿出手機,打開和“鳴”的對話框,打了一行字:
“方案我看了,神經網(wǎng)絡可行。今晚我把算法第一版寫好發(fā)你。另外,豆?jié){謝謝。但我有吃早飯,只是吃得少?!?br>發(fā)完之后她盯著屏幕看了十秒。
對方回了一個字:“好。”
然后又過了五秒,又來了一條:“吃得少也不行。”
林晚晚看著那條消息,嘴角不自覺地彎了一下。
她趕緊把笑容收回去,看了看周圍——食堂里人來人往,沒人注意到她。
她把手機扣在桌上,低頭吃飯。
飯吃到一半,她又把手機翻過來,看了一眼那條消息。
“吃得少也不行?!?br>她把這句話截了個圖。
然后猶豫了零點五秒,沒有刪。
周二晚上,林晚晚在教室里改算法框架改到九點半。
她把SVM換成了Mo**leNetV2,重新寫了數(shù)據(jù)預處理和模型訓練的完整流程,還附上了詳細的參數(shù)說明和預期性能分析。整整寫了七頁A4紙,手寫的,字跡工整得像印刷體。
她拍下來發(fā)給陸一鳴,然后收拾書包準備回家。
走到校門口的時候,她愣了一下。
陸一鳴站在校門口的路燈下,穿著校服外套,手里拿著一個文件夾。
“你怎么在這?”林晚晚走過去。
“等你。”陸一鳴把文件夾遞給她,“硬件接口的詳細參數(shù),你看看算法能不能對上?!?br>林晚晚接過來翻開,里面是十幾頁手寫的技術文檔,從傳感器選型到電機驅動,每一個模塊都標了詳細的接口定義和時序要求。字跡還是不好看,但邏輯清晰得不像是一個職校生寫出來的。
“你寫的?”她抬頭看他。
“嗯?!?br>“什么時候寫的?”
“這兩天?!?br>“你不用上課?”
“上課也在寫?!?br>林晚晚看著他的臉。路燈把他的影子拉得很長,他的黑眼圈比上周見面時更重了,嘴唇也有點干。
“你也沒好好吃飯?!彼f。
陸一鳴愣了一下,然后嘴角動了動,像是想笑但忍住了。
“吃了?!彼f。
“吃得少也不行?!绷滞硗戆阉蛱煺f的話原封不動地還了回去。
這次陸一鳴沒忍住,嘴角確實彎了一下。
只是很輕微的一下,但林晚晚看到了。
路燈下,他的笑容一閃而過,像一顆流星。
林晚晚低下頭,假裝在看文檔,心跳卻不受控制地加速了。
“文檔我?guī)Щ厝タ?,”她說,聲音比平時輕了一些,“明天給你反饋。”
“嗯?!?br>“那……我走了?!?br>“我送你?!标懸圾Q說。
“不用,學校門口有——”
“你一個女生走夜路不安全?!彼驍嗨?,語氣和那天在配電室說“別走樓梯口那個死角”一模一樣,不容置疑。
林晚晚張了張嘴,想說什么,最終只是點了點頭。
兩個人并肩走在人行道上,中間隔著一個人的距離。
九月底的晚風有點涼,吹得路邊的梧桐葉沙沙作響。林晚晚抱著文件夾,陸一鳴把手插在褲兜里,兩個人都沒說話。
但沉默不尷尬。
甚至有點舒服。
走到小區(qū)門口的時候,林晚晚停下來。
“到了?!彼f。
“嗯。”陸一鳴也停下來,看了她一眼,“明天見。”
“明天見?!?br>林晚晚走進小區(qū),走了十幾步,回頭看了一眼。
陸一鳴還站在路燈下,看到她回頭,抬手揮了一下,然后轉身走了。
他走路的步子很大,很快就消失在了夜色里。
林晚晚站在原地,看著那個方向愣了幾秒,然后摸了摸自己發(fā)燙的耳朵。
這一次,她沒辦法騙自己說“是熱的”了。
因為晚風明明是涼的。
周三下午,第二次碰頭。
林晚晚到實訓室的時候,陸一鳴已經在調試一個傳送帶模型了。
傳送帶大概一米長,上面放著一個簡易的垃圾模型——一個小塑料瓶。傳送帶盡頭是一個攝像頭支架,攝像頭下面連著一個小小的嵌入式開發(fā)板。
“你這么快就把硬件搭起來了?”林晚晚有點驚訝。
“先搭個原型驗證。”陸一鳴蹲在地上,手里拿著萬用表在測電壓,“你那邊算法怎么樣了?”
“第一版寫好了,但需要在你的設備上跑一下看看實際性能?!?br>“現(xiàn)在就能跑?!?br>陸一鳴站起來,從工作臺上拿了一根數(shù)據(jù)線,把開發(fā)板和一臺筆記本電腦連起來。林晚晚把自己寫的代碼拷進去,配置好環(huán)境,按下運行。
攝像頭亮了一下,拍到了傳送帶上的塑料瓶。
屏幕上跳出一個識別結果:“PET塑料瓶,置信度0.94?!?br>控制信號通過開發(fā)板輸出,傳送帶末端的一個小型氣缸“噗”地一聲彈出來,把塑料瓶推到了旁邊的回收盒里。
整個過程不到300毫秒。
林晚晚看著那個被推出去的塑料瓶,心里涌起一種奇怪的感覺。
這不是她第一次做項目,但這是她第一次看到自己的代碼在一個真實的物理設備上跑起來,并且產生了一個真實的、看得見摸得著的動作。
“還可以?!标懸圾Q說,語氣里帶著一絲滿意,“識別準了。但響應速度還得壓,現(xiàn)在是280毫秒,目標200。”
“圖像識別那邊還能再優(yōu)化嗎?”
“能。我換個驅動,應該能壓到70?!?br>“那算法端我再做模型量化,能壓到25左右?!?br>“加起來95,加上信號傳輸和氣缸響應,總時間能控在150以內?!?br>“比市面上的同類產品快多少?”林晚晚問。
陸一鳴想了想:“市面上的垃圾分類小設備,響應時間一般在500毫秒以上。我們能快兩到三倍?!?br>林晚晚的嘴角彎了一下。
陸一鳴看到她的笑容,頓了一下。
“你笑起來還挺不一樣的?!彼f。
林晚晚的笑容瞬間收住了。
“什么不一樣?”她問,聲音又恢復了平時的冷淡。
“不像做題機器?!标懸圾Q說完就轉過身去,繼續(xù)調氣缸的參數(shù),好像什么都沒發(fā)生過。
林晚晚站在原地,盯著他的后背看了三秒。
然后她低下頭,假裝在看代碼,心跳卻比代碼的運行速度還快。
那天下午,他們一直忙到六點多。
走的時候,陸一鳴從工作臺下拿出一個保溫袋,遞給她。
“什么?”林晚晚接過來。
“豆?jié){?!标懸圾Q說,“你拿走喝。我早上多打了一杯?!?br>林晚晚打開保溫袋,里面是一杯溫熱的豆?jié){,還是那個濃稠度,還是那個甜度。
“你每天早上都打豆?jié){?”她問。
“嗯?!?br>“用什么打的?”
“宿舍里有個小豆?jié){機。”陸一鳴說這話的時候語氣很平,但耳朵尖有點紅。
林晚晚注意到了。
她沒有戳穿,只是把保溫袋抱在懷里。
“謝謝。”她說。
“嗯。”
兩個人一起走出實訓樓。職校的校園比普高大,晚風從操場那邊吹過來,帶著青草和泥土的味道。
“陸一鳴?!绷滞硗砗鋈唤兴?。
“嗯?”
“你為什么想考本科?”
陸一鳴沉默了幾步路。
“因為不想被人看不起?!彼f,聲音很輕,但每個字都很重,“我中考差了六分。六分。如果數(shù)學最后一道大題多做對一半,我現(xiàn)在也在普高?!?br>林晚晚沒有說話。
“但我不后悔來職校。”他繼續(xù)說,“在這里我學到的技術,普高學不到。我只是想證明——職校生也能考上本科,也能做出好東西?!?br>林晚晚停下腳步,看著他。
“我懂?!彼f。
陸一鳴看著她。
路燈的光落在她臉上,她的表情很認真,沒有同情,沒有憐憫,只有一種“我也是這樣”的共鳴。
“我也被人看不起過?!绷滞硗碚f,“他們說我是做題機器,說我除了**什么都不會。我爸媽也不懂我,他們只知道問我考了多少分、排第幾名。”
她頓了一下。
“但我知道我在做什么。我想考那所大學,不是因為它的名氣,是因為它的物理系有一個實驗室,研究的是我真正感興趣的東西。我想去那里?!?br>陸一鳴看著她,目光很深。
“你會考上的?!彼f。
“你也會?!绷滞硗碚f。
兩個人對視了兩秒。
然后林晚晚先移開了目光,低下頭,抱著保溫袋往前走。
“豆?jié){再不喝就涼了?!彼f,聲音里帶著一點不易察覺的笑意。
陸一鳴跟上來,走在她的左邊——靠近馬路的那一邊。
林晚晚注意到了這個細節(jié),但沒有說破。
她只是把保溫袋抱得更緊了一點。
那天晚上,林晚晚回到家,把豆?jié){倒進杯子里,小口小口地喝。
喝完豆?jié){,她把杯子洗干凈,放在書桌上。
然后她打開手機,看到陸一鳴發(fā)來一條消息。
鳴:算法第二版的反饋發(fā)你了。另,明天早上想喝紅豆的還是黃豆的?
林晚晚盯著屏幕看了五秒。
林晚晚:紅豆。
鳴:好。
林晚晚把手機扣在桌上,趴在一堆卷子中間,把臉埋進胳膊里。
她的耳朵很燙。
心也很燙。
她知道這不正常。
她是一個從來不在任何無關事情上浪費時間的人。她的每一分鐘都被學習填滿,她的每一份精力都用來朝那個目標奔跑。
但陸一鳴出現(xiàn)了。
他像一個意外,闖進了她精密運轉的日程表,打亂了她所有的計劃。
她應該把他趕出去。
但她不想。
她甚至開始期待周三和周六——期待看到他蹲在地上調試設備的樣子,期待聽到他說“你的方案我改了一版”,期待那一杯永遠溫度和甜度都剛剛好的豆?jié){。
林晚晚抬起頭,看著窗外的夜空。
九月底的星星不多,但有一顆很亮,掛在正對著她窗戶的方向。
她忽然想起他的名字——一鳴,一鳴驚人。
她對著那顆星星,小聲說了一句話。
“陸一鳴,你知不知道,你這個人真的很煩?!?br>然后她笑了。
笑得比那顆星星還亮。
鳴:好。
然后對方就沒動靜了。
林晚晚把手機放到一邊,重新拿起英語范文,但腦子里已經切換到了算法框架的邏輯。她在草稿紙上快速畫了一個流程圖:數(shù)據(jù)采集→預處理→特征提取→分類器→輸出控制信號。
畫完之后她看了一眼,總覺得分類器那部分太粗糙,需要換一種模型。
她把紙翻過來,重新畫。
周萌到教室的時候,看到林晚晚面前的草稿紙已經鋪了三四張,每一張都畫滿了亂七八糟的框框和箭頭。
“你這是在畫電路圖?”周萌湊過來看。
“算法框架?!?br>“你不是學物理的嗎?怎么搞起編程了?”
“科技創(chuàng)新大賽要用?!绷滞硗眍^都沒抬。
周萌嘖嘖了兩聲:“你現(xiàn)在是高三哎,還搞這些亂七八糟的,不怕影響成績?”
林晚晚的筆尖頓了一下。
“不會。”她說,語氣比平時硬了一點。
周萌聽出來了,識趣地沒再說話,默默拿出自己的英語卷子。
林晚晚知道周萌沒有惡意。但“影響成績”這四個字,她聽過太多次了。從她決定參加科技創(chuàng)新大賽開始,就有同學在背后議論:“林晚晚是不是飄了?高三了還搞這些?她以為她是天才嗎?又能做題又能搞競賽?”
她不是天才。
她只是不想讓自己的高中三年只有卷子和排名。
她想做出一點什么,一件可以拿給別人看、說“這是我做的”的東西。
這也是為什么她看到陸一鳴的獲獎記錄時,幾乎沒有猶豫就同意了組隊。因為那個人做出過東西——一個能自動分揀物料的機械臂,在市技能大賽上拿了**。
她能做理論,他能做實物。
她想看看,他們倆合在一起,能做出什么。
周六下午兩點,林晚晚準時到了職校的實訓樓。
這是她第一次進職校的校園。
和普高不一樣,這里沒有那種壓迫感的安靜和緊張。操場上有人在打籃球,實訓樓門口停著幾輛電動三輪車,墻上貼著各種技能大賽的宣傳海報——“技能改變命運匠心鑄就未來”。
林晚晚覺得這些標語有點意思。在普高,所有的標語都是關于分數(shù)、排名、名校的。而在這里,***是“技能匠心未來”。
她按照陸一鳴發(fā)的定位,找到了三樓的一間機電一體化實訓室。
推開門,一股金屬和潤滑油的氣味撲面而來。
實訓室很大,擺著七八個工作臺,每個臺子上都有各種各樣的設備:PLC控制柜、傳感器模組、小型機械臂、傳送帶模型。墻上掛著工具板,扳手、螺絲刀、鉗子整整齊齊地排成幾排。
陸一鳴站在最里面的一個工作臺前,背對著門,正在擰一個金屬支架的螺絲。
他今天沒穿工裝,穿了一件黑色的短袖,袖子卷到肩膀,露出結實的上臂。手臂上有幾道淺淺的舊傷疤,不知道是實訓時被什么劃的。
“來了?”他聽到腳步聲,頭也沒回。
“嗯?!绷滞硗碜哌^去,把書包放在旁邊的工作臺上,“你的實訓室挺大的。”
“學校的?!标懸圾Q把螺絲擰緊,轉過身來,“不是我的。”
林晚晚注意到他手邊放著一杯豆?jié){,還冒著熱氣。工作臺上除了各種零件,還攤著一本翻到中間的程序設計教材,書頁被翻得很舊,邊角都卷起來了。
“你周六也在學校?”林晚晚問。
“嗯。實訓室周末開放,我來得比較多?!标懸圾Q擦了擦手,從工作臺下抽出一張凳子推給她,“坐吧。你的算法框架呢?”
林晚晚從書包里拿出三頁手寫的方案,遞過去。
陸一鳴接過去,低頭看。
林晚晚坐在凳子上,觀察他看方案的表情。他的眉頭微微皺著,嘴唇抿成一條線,目光從左到右快速掃過每一行。翻到第二頁的時候,他的眉頭皺得更緊了。
“有問題?”林晚晚問。
陸一鳴沒有馬上回答。他把三頁紙看完,放到工作臺上,用手指點了點第二頁中間的一段。
“你這個分類器,用的是支持向量機?”他問。
“對。SVM在小樣本數(shù)據(jù)集上表現(xiàn)好,適合我們這個項目。”
“響應速度呢?”
“訓練好的模型單次推理在50毫秒以內?!?br>“50毫秒?”陸一鳴看著她,“你知道我的圖像識別模塊從采集到輸出控制信號,整個鏈路要求多少毫秒嗎?”
林晚晚沒說話。
“200毫秒。”陸一鳴說,“你一個分類器就占了50,加上圖像采集、預處理、信號傳輸、電機響應,整體至少300到400毫秒。太慢了?!?br>林晚晚的眉頭也皺起來了。
“你之前說圖像識別能提升三倍速度,我按照那個算的?!彼f,“如果你能壓縮到100毫秒以內,整體就能控制在200左右?!?br>“圖像識別我可以做到80毫秒。”陸一鳴說,“但你的分類器不能超過30毫秒。SVM做不到?!?br>“那你說用什么?”
“輕量級神經網(wǎng)絡。Mo**leNet或者ShuffleNet,推理時間能壓到20毫秒以內。”
林晚晚盯著他看了兩秒。
“你會部署神經網(wǎng)絡到嵌入式設備上?”她的語氣里帶著一絲懷疑。
“不會。”陸一鳴回答得干脆利落,“但我可以學?!?br>林晚晚被他這句話堵了一下。她想說“你以為學一個東西那么容易”,但話到嘴邊又咽回去了。因為她也經常說“我可以學”這三個字,并且每一次都是認真的。
她深吸一口氣。
“神經網(wǎng)絡需要大量的標注數(shù)據(jù),我們沒有。”
“可以自己拍。垃圾圖片網(wǎng)上有現(xiàn)成的數(shù)據(jù)集,不夠就自己拍?!?br>“訓練需要GPU資源?!?br>“我用學校的服務器,晚上跑?!?br>“模型壓縮和量化呢?”
“我不會,但我有三天時間學?!?br>兩人對視了五秒鐘。
林晚晚先移開了目光。她重新拿起那三頁方案,快速在腦子里過了一遍。如果換神經網(wǎng)絡,整個算法架構都要推倒重來,工作量至少翻倍。
但響應速度如果能壓到30毫秒以內,項目的技術指標會提升一個檔次。
“給我兩天時間?!彼f,“我重新做一版方案?!?br>“一天。”陸一鳴說。
“一天半?!?br>“成交?!?br>林晚晚把方案收進書包,站起來準備走。她走到門口的時候,忽然想起一件事,轉過身來。
“那把刀,”她說,“你那天晚上給我的折疊刀,我一直沒還你?!?br>陸一鳴正在整理工作臺上的零件,聽到這話手頓了一下。
“不用還了?!彼f,聲音很淡。
“為什么?”
“那是備用的。我還有一把?!?br>林晚晚站在門口,看著他。他低著頭繼續(xù)擰螺絲,沒有看她。
“那謝謝?!彼f。
“嗯?!?br>林晚晚走了兩步,又停下來。這次她沒有轉身,只是背對著他說了一句:“你的數(shù)學筆記,泰勒展開后面那道變式題,你做的那個輔助函數(shù)構造,其實還可以再優(yōu)化?!?br>“怎么優(yōu)化?”
“把ln(1+x)展開到二階,用柯西中值定理,一步到位。”
她說完就走了。
陸一鳴抬起頭,看著空蕩蕩的門口,愣了兩秒。
然后他翻開數(shù)學筆記,找到那道變式題,按照她說的方法重新做了一遍。
果然一步到位。
他盯著那個簡潔到近乎完美的推導過程,嘴角動了一下。
然后他拿起那杯已經涼了的豆?jié){,喝了一口,繼續(xù)擰螺絲。
周一早上,林晚晚到教室的時候,發(fā)現(xiàn)自己的課桌上多了一樣東西。
一杯熱豆?jié){。
杯子上沒有任何標簽,不是食堂賣的那種。杯子下面壓著一張紙條,紙條上的字跡不算好看,但一筆一劃寫得很認真:
“你的方案我改了一版,你看看。神經網(wǎng)絡的部分我跑了幾個預訓練模型,數(shù)據(jù)貼在了背面。另外,早飯要吃。你太瘦了。”
沒有署名。
但林晚晚知道是誰。
她把紙條翻到背面,上面密密麻麻貼了幾張打印的小表格,是不同神經網(wǎng)絡模型在嵌入式設備上的推理時間和準確率對比。Mo**leNetV2最優(yōu),20毫秒,準確率92.3%。
數(shù)據(jù)很全,很專業(yè)。
林晚晚盯著最后那行字看了很久——“你太瘦了”。
她把紙條折好,放進書包最里層的拉鏈袋里,和那把折疊刀放在一起。
然后她拿起豆?jié){,喝了一口。
還是熱的。
豆?jié){很濃,不是那種兌了很多水的稀湯,能喝出來是現(xiàn)磨的。甜度剛剛好,不膩。
她不知道他從哪里弄來的豆?jié){,也不知道他幾點起來弄的。
但她喝完之后,覺得整個人都暖了。
周萌到教室的時候,看到林晚晚面前的豆?jié){杯子,眼睛一亮。
“喲,誰給你買的?”
“自己買的。”林晚晚面不改色地說。
“不可能,食堂的豆?jié){杯子不是這樣的?!敝苊葴愡^來聞了聞,“這豆?jié){好香啊,哪家店買的?”
“不知道?!?br>周萌狐疑地看著她,目光在豆?jié){杯和她微微泛紅的耳朵之間來回掃了兩遍,然后露出了一個“我懂了”的笑容。
“林晚晚,你談戀愛了?”
“沒有?!?br>“那你耳朵紅什么?”
“熱的。”
“現(xiàn)在才九月份,哪里熱了?”
林晚晚沒理她,翻開物理卷子,開始做題。
但她發(fā)現(xiàn)自己的專注力比平時差了很多。做完一道電磁感應的選擇題,她腦子里想的不是*IL和法拉第定律,而是那張紙條上的字跡。
他的字真的不好看。結構松散,筆畫僵硬,一看就是很久沒好好寫過字的人。但每一個字都寫得很用力,力透紙背,像是在跟筆較勁。
“你太瘦了?!?br>這不像是一句關心,更像是一句陳述。語氣平淡,沒有修飾,就像他說“你的方案我改了一版”一樣。
但林晚晚不知道為什么,就是覺得這句話有點重。
重到她一整個上午都在想。
中午吃飯的時候,她做了一個決定。
她拿出手機,打開和“鳴”的對話框,打了一行字:
“方案我看了,神經網(wǎng)絡可行。今晚我把算法第一版寫好發(fā)你。另外,豆?jié){謝謝。但我有吃早飯,只是吃得少?!?br>發(fā)完之后她盯著屏幕看了十秒。
對方回了一個字:“好。”
然后又過了五秒,又來了一條:“吃得少也不行。”
林晚晚看著那條消息,嘴角不自覺地彎了一下。
她趕緊把笑容收回去,看了看周圍——食堂里人來人往,沒人注意到她。
她把手機扣在桌上,低頭吃飯。
飯吃到一半,她又把手機翻過來,看了一眼那條消息。
“吃得少也不行?!?br>她把這句話截了個圖。
然后猶豫了零點五秒,沒有刪。
周二晚上,林晚晚在教室里改算法框架改到九點半。
她把SVM換成了Mo**leNetV2,重新寫了數(shù)據(jù)預處理和模型訓練的完整流程,還附上了詳細的參數(shù)說明和預期性能分析。整整寫了七頁A4紙,手寫的,字跡工整得像印刷體。
她拍下來發(fā)給陸一鳴,然后收拾書包準備回家。
走到校門口的時候,她愣了一下。
陸一鳴站在校門口的路燈下,穿著校服外套,手里拿著一個文件夾。
“你怎么在這?”林晚晚走過去。
“等你。”陸一鳴把文件夾遞給她,“硬件接口的詳細參數(shù),你看看算法能不能對上?!?br>林晚晚接過來翻開,里面是十幾頁手寫的技術文檔,從傳感器選型到電機驅動,每一個模塊都標了詳細的接口定義和時序要求。字跡還是不好看,但邏輯清晰得不像是一個職校生寫出來的。
“你寫的?”她抬頭看他。
“嗯?!?br>“什么時候寫的?”
“這兩天?!?br>“你不用上課?”
“上課也在寫?!?br>林晚晚看著他的臉。路燈把他的影子拉得很長,他的黑眼圈比上周見面時更重了,嘴唇也有點干。
“你也沒好好吃飯?!彼f。
陸一鳴愣了一下,然后嘴角動了動,像是想笑但忍住了。
“吃了?!彼f。
“吃得少也不行?!绷滞硗戆阉蛱煺f的話原封不動地還了回去。
這次陸一鳴沒忍住,嘴角確實彎了一下。
只是很輕微的一下,但林晚晚看到了。
路燈下,他的笑容一閃而過,像一顆流星。
林晚晚低下頭,假裝在看文檔,心跳卻不受控制地加速了。
“文檔我?guī)Щ厝タ?,”她說,聲音比平時輕了一些,“明天給你反饋。”
“嗯?!?br>“那……我走了?!?br>“我送你?!标懸圾Q說。
“不用,學校門口有——”
“你一個女生走夜路不安全?!彼驍嗨?,語氣和那天在配電室說“別走樓梯口那個死角”一模一樣,不容置疑。
林晚晚張了張嘴,想說什么,最終只是點了點頭。
兩個人并肩走在人行道上,中間隔著一個人的距離。
九月底的晚風有點涼,吹得路邊的梧桐葉沙沙作響。林晚晚抱著文件夾,陸一鳴把手插在褲兜里,兩個人都沒說話。
但沉默不尷尬。
甚至有點舒服。
走到小區(qū)門口的時候,林晚晚停下來。
“到了?!彼f。
“嗯。”陸一鳴也停下來,看了她一眼,“明天見。”
“明天見?!?br>林晚晚走進小區(qū),走了十幾步,回頭看了一眼。
陸一鳴還站在路燈下,看到她回頭,抬手揮了一下,然后轉身走了。
他走路的步子很大,很快就消失在了夜色里。
林晚晚站在原地,看著那個方向愣了幾秒,然后摸了摸自己發(fā)燙的耳朵。
這一次,她沒辦法騙自己說“是熱的”了。
因為晚風明明是涼的。
周三下午,第二次碰頭。
林晚晚到實訓室的時候,陸一鳴已經在調試一個傳送帶模型了。
傳送帶大概一米長,上面放著一個簡易的垃圾模型——一個小塑料瓶。傳送帶盡頭是一個攝像頭支架,攝像頭下面連著一個小小的嵌入式開發(fā)板。
“你這么快就把硬件搭起來了?”林晚晚有點驚訝。
“先搭個原型驗證。”陸一鳴蹲在地上,手里拿著萬用表在測電壓,“你那邊算法怎么樣了?”
“第一版寫好了,但需要在你的設備上跑一下看看實際性能?!?br>“現(xiàn)在就能跑?!?br>陸一鳴站起來,從工作臺上拿了一根數(shù)據(jù)線,把開發(fā)板和一臺筆記本電腦連起來。林晚晚把自己寫的代碼拷進去,配置好環(huán)境,按下運行。
攝像頭亮了一下,拍到了傳送帶上的塑料瓶。
屏幕上跳出一個識別結果:“PET塑料瓶,置信度0.94?!?br>控制信號通過開發(fā)板輸出,傳送帶末端的一個小型氣缸“噗”地一聲彈出來,把塑料瓶推到了旁邊的回收盒里。
整個過程不到300毫秒。
林晚晚看著那個被推出去的塑料瓶,心里涌起一種奇怪的感覺。
這不是她第一次做項目,但這是她第一次看到自己的代碼在一個真實的物理設備上跑起來,并且產生了一個真實的、看得見摸得著的動作。
“還可以?!标懸圾Q說,語氣里帶著一絲滿意,“識別準了。但響應速度還得壓,現(xiàn)在是280毫秒,目標200。”
“圖像識別那邊還能再優(yōu)化嗎?”
“能。我換個驅動,應該能壓到70?!?br>“那算法端我再做模型量化,能壓到25左右?!?br>“加起來95,加上信號傳輸和氣缸響應,總時間能控在150以內?!?br>“比市面上的同類產品快多少?”林晚晚問。
陸一鳴想了想:“市面上的垃圾分類小設備,響應時間一般在500毫秒以上。我們能快兩到三倍?!?br>林晚晚的嘴角彎了一下。
陸一鳴看到她的笑容,頓了一下。
“你笑起來還挺不一樣的?!彼f。
林晚晚的笑容瞬間收住了。
“什么不一樣?”她問,聲音又恢復了平時的冷淡。
“不像做題機器?!标懸圾Q說完就轉過身去,繼續(xù)調氣缸的參數(shù),好像什么都沒發(fā)生過。
林晚晚站在原地,盯著他的后背看了三秒。
然后她低下頭,假裝在看代碼,心跳卻比代碼的運行速度還快。
那天下午,他們一直忙到六點多。
走的時候,陸一鳴從工作臺下拿出一個保溫袋,遞給她。
“什么?”林晚晚接過來。
“豆?jié){?!标懸圾Q說,“你拿走喝。我早上多打了一杯?!?br>林晚晚打開保溫袋,里面是一杯溫熱的豆?jié){,還是那個濃稠度,還是那個甜度。
“你每天早上都打豆?jié){?”她問。
“嗯?!?br>“用什么打的?”
“宿舍里有個小豆?jié){機。”陸一鳴說這話的時候語氣很平,但耳朵尖有點紅。
林晚晚注意到了。
她沒有戳穿,只是把保溫袋抱在懷里。
“謝謝。”她說。
“嗯。”
兩個人一起走出實訓樓。職校的校園比普高大,晚風從操場那邊吹過來,帶著青草和泥土的味道。
“陸一鳴?!绷滞硗砗鋈唤兴?。
“嗯?”
“你為什么想考本科?”
陸一鳴沉默了幾步路。
“因為不想被人看不起?!彼f,聲音很輕,但每個字都很重,“我中考差了六分。六分。如果數(shù)學最后一道大題多做對一半,我現(xiàn)在也在普高?!?br>林晚晚沒有說話。
“但我不后悔來職校。”他繼續(xù)說,“在這里我學到的技術,普高學不到。我只是想證明——職校生也能考上本科,也能做出好東西?!?br>林晚晚停下腳步,看著他。
“我懂?!彼f。
陸一鳴看著她。
路燈的光落在她臉上,她的表情很認真,沒有同情,沒有憐憫,只有一種“我也是這樣”的共鳴。
“我也被人看不起過?!绷滞硗碚f,“他們說我是做題機器,說我除了**什么都不會。我爸媽也不懂我,他們只知道問我考了多少分、排第幾名。”
她頓了一下。
“但我知道我在做什么。我想考那所大學,不是因為它的名氣,是因為它的物理系有一個實驗室,研究的是我真正感興趣的東西。我想去那里?!?br>陸一鳴看著她,目光很深。
“你會考上的?!彼f。
“你也會?!绷滞硗碚f。
兩個人對視了兩秒。
然后林晚晚先移開了目光,低下頭,抱著保溫袋往前走。
“豆?jié){再不喝就涼了?!彼f,聲音里帶著一點不易察覺的笑意。
陸一鳴跟上來,走在她的左邊——靠近馬路的那一邊。
林晚晚注意到了這個細節(jié),但沒有說破。
她只是把保溫袋抱得更緊了一點。
那天晚上,林晚晚回到家,把豆?jié){倒進杯子里,小口小口地喝。
喝完豆?jié){,她把杯子洗干凈,放在書桌上。
然后她打開手機,看到陸一鳴發(fā)來一條消息。
鳴:算法第二版的反饋發(fā)你了。另,明天早上想喝紅豆的還是黃豆的?
林晚晚盯著屏幕看了五秒。
林晚晚:紅豆。
鳴:好。
林晚晚把手機扣在桌上,趴在一堆卷子中間,把臉埋進胳膊里。
她的耳朵很燙。
心也很燙。
她知道這不正常。
她是一個從來不在任何無關事情上浪費時間的人。她的每一分鐘都被學習填滿,她的每一份精力都用來朝那個目標奔跑。
但陸一鳴出現(xiàn)了。
他像一個意外,闖進了她精密運轉的日程表,打亂了她所有的計劃。
她應該把他趕出去。
但她不想。
她甚至開始期待周三和周六——期待看到他蹲在地上調試設備的樣子,期待聽到他說“你的方案我改了一版”,期待那一杯永遠溫度和甜度都剛剛好的豆?jié){。
林晚晚抬起頭,看著窗外的夜空。
九月底的星星不多,但有一顆很亮,掛在正對著她窗戶的方向。
她忽然想起他的名字——一鳴,一鳴驚人。
她對著那顆星星,小聲說了一句話。
“陸一鳴,你知不知道,你這個人真的很煩?!?br>然后她笑了。
笑得比那顆星星還亮。