跳转至

第6章「方框」

第6章「方框」

视角:程小念(过去)

程小念在文本组干了一个多月后被调到了图片组。

原因很简单:图片组缺人。图片标注比文本更累——不是脑力上的累,是眼部肌肉和手腕肌腱的累。需要不停地移动鼠标、拖拽矩形、缩放画面、切换标签。一天八小时下来右手食指的第二个关节会酸,手腕内侧那根突出的筋会隐隐跳痛。几乎没有人主动愿意去图片组,所以组长每次都是用"帮忙"这个词来分配人。

"你就去帮两周——那边有个街景项目赶进度——两周后回来。"

两周变成了两个半月。

图片标注的界面和文本完全不同。整屏是一张街景照片。有时是白天——阳光太强导致色彩过曝,天空一片惨白,云朵的边缘被吞掉了。有时是黄昏——所有东西都罩着一层金红色的暖光,像给照片涂了一层蜂蜜,看着舒服但影响边缘判断,因为物体的边界在暖光里会融入背景。有时是夜晚——噪点很多,路灯照亮的范围之外全部是深灰色的颗粒,你得把脸靠近屏幕去分辨那个暗处的模糊轮廓是行人还是垃圾桶。

她的工作是画框。用鼠标左键点击起点的那个位置,按住,拖到终点的那个位置,松开。一个绿色的矩形框就出现了。然后给这个框打标签——"行人"、"车辆"、"交通标志"——点下去。然后再画下一个。每天目标量八百张,每张平均两到三个框。一天大概两千个框。

她还记得刚开始上手的那段时间。第一周每天只能做三百多张。她会放大图片检查模糊区域的细节——那个东西是人吧?它有人形的轮廓,但只有半条腿,另外半条被一辆白色SUV的后备箱挡住了。是人。但SUV后面的"人"怎么框?框上半截还是整身?她的培训手册里说"框出可见部分"——可见部分。但只有上半截的框,"模型会不会学到'人没有腿'?"她把鼠标指向那个上半截,没有画下去。

"你这个速度不行的。"旁边的老手是个男的,说话带点口音,看她画了几张以后开口了,"你要是每张都放大——你一天做到七百张就要加班到九点。我们这里九点以后没加班费的。"

"我看不清——"

"不用看清。看到像人的就圈人,看到像车的就圈车。他们要的不是百分之百准确——他们要的是足够多。"

"错了怎么办?"

"你以为旁边那个框是谁画的?我的。"他指了一下屏幕上一条道路边缘那个框,框内物体是什么她到现在也没搞清楚。"只要不是画得太离谱,质检那边也没空看的。"

她又想起那句"你的标注在塑造未来的AI"。如果是这样——她画的上半截人会被喂给一个视觉模型,学习"人"长什么样。那个模型以后在自动驾驶汽车里认"人"的时候,会记得自己学过一个只有上半截的人吗?它会怎么处理实际路上的整身行人?不确定性不是显而易见的,但也不可避免。

但她没有继续往深里想。画框是体力活,体力活的好处是不需要动用深层神经——你只需要在表层循环里跑一个识别→框选→标签的顺序,像在拧螺丝,一次一颗。不比思考更难,但更累。更小的摩擦力。

第三周开始,她梦到方框。

不是比喻——她躺下来,闭上眼睛,睡着以后就开始看到方框。绿色的是行人框,蓝色的是车辆框,黄色的是交通标志——这些颜色来自标注系统的默认调色板。框的边缘有轻微的锯齿,因为她在拖拽时偶尔会松手过快,直角变成了带着一两个像素歪斜的准矩形。

那些框浮在睡梦中的黑色背景上,有时候排列成一行,有时候重叠在一起,有时候慢慢旋转——像手机的截屏还在她脑子里没有清空缓存。有一次她梦到自己在一个方框里——就是她自己,站在街景照片里的人行道上,框的颜色是绿色的,标签是"行人"。她想走出那个框,但框是柔性的——不管你走到哪里,它都跟着你。

醒来以后她盯着天花板看了很久。室友不在,宿舍里只有她一个人。早晨的光透过印着橙色条纹的窗帘在地板上画了一条条平行的光线。她翻了个身,盯着墙上一小块脱落的墙皮——那个脱落的形状刚好也是一条窄窄的矩形。

她在心里笑了一声。不好笑的那种笑。

到第五周的时候她的右手开始出问题了。手腕内侧的感觉不是疼——是酸,一种深层的、从骨头缝里渗出来的酸。用鼠标时没感觉,但回到宿舍拿筷子夹菜的时候,手腕会不自主地往外撇,夹上的菜掉回盘子里。她换了两天左手吃饭。第三天好了,但那个酸感没有彻底消失——它退到了一个更深的层面,像海潮走了以后还在沙面下渗的那层水。

有一天下班她在地铁上靠着门柱站着,闭了一会儿眼。睁开的时候发现自己刚才闭眼的时间比想象中长——车厢里换了三拨人,站与站之间全是模糊的。她低头看了看自己的右手——手掌向上摊开,掌心里有一条新磨出来的茧,在大拇指根部。画框用力的地方。茧不大,浅黄色的,像一滴干掉的胶水。

第三周过完,她已经能做到一天七百张了。第四周开始,做过一天接近九百。她不再去想"人有没有腿""车对不对颜色""交通标志的字模不模糊"。想太累。画框本身足够累,填满了她全部的精力。精神上她停止了介入。

三个月半的时候她收到了一个offer——真正的互联网公司在招运营,她大三时投的试岗位之一,面试后沉默了两周突然给反馈了。要求下周入职。薪资是标注的两倍多。办公地在市中心,楼下是星巴克。她立刻接下了。

辞职那天,她用了一个多小时把最后一批没完成的图片清掉。然后填离职单。组长叫一个女人的名字——一个她三个月来几乎没有说过话的名字——然后组长在表格上签了字。她开始收拾东西。

收拾东西这件事本身花的时间比想象中短。桌上就一台显示器、一个键盘、一个鼠标——都不是她的。她能带走的东西只有抽屉里的垃圾:矿泉水瓶、纸巾、没盖的笔。还有工牌。她盯着那张塑料卡片看了几秒——照片是入职第二天拍的,她那天化了淡妆,但因为培训室里太热,粉底有一点浮了,T区反光。照片上的她嘴角上翘,不像在笑,更像在忍着不打哈欠。

她把工牌扔进垃圾桶,准备走的时候手机亮了。是妈妈发来的微信,问她晚饭吃了没。她回了一个"吃了",然后站在走廊里看着那两字的对话框发了一会儿呆。"吃了"——她今天午饭和晚饭都没吃。中午赶着做完最后一批图,忘吃了。

她走回沙县门口。蒸笼还在冒气,下午五点多还是蒸笼——这个景象她已经看了三个半月,时间上没有任何变化。上午八点、中午十二点、下午五点——蒸笼永远在冒气。她站在门口看了几秒,不确定自己是在怀念还是在尽义务。

隔壁工位那女人抬头看见了她。里面有半瓶还剩三指高的矿泉水——晃了一下里面冒出几个泡。一包拆开的纸巾。一支笔帽早已经丢失的中性笔。她喝掉水,其余垃圾扔进垃圾桶。凳子上还有一个东西:一个塑料的工牌套,里面插着一张小纸片——她入职第一天填的那张,上面印着她的名字和"标注员"三个字。工牌吊绳灰蓝色的。她拿手里停了一两秒,扔进了同一个垃圾桶。塑料壳碰到金属桶壁发出的那一声,很短暂。

下楼的时候经过沙县门口,她的脚步慢了一点。蒸笼还在冒气。傍晚五点多的蒸笼和早晨八点多的蒸笼,看起来没有任何不同——蒸气始终在同一种白度和密度里往外走,像一个被固定参数的渲染引擎。隔壁工位那女人在里面吃她的面,面前摆着一碗炒米粉,另一只手还能同时刷手机。

女人抬头看见她。"今天走?"

"嗯,离职了。"

"要不要吃一顿——"

"不用了。赶时间。"

女人点头。这一个"点头"里有一种她后来才读懂的东西:不光是她一个人要走。这个基地里走的人太多了。兼职的来,干几个月走了。全职的也走,因为别的公司开更高的价,或者因为手腕疼了、腰出了问题,不想再画框。还有被动走的——不是开除了,是项目结束了、一张桌子空了几天没人坐、保洁过来把键盘线卷好放在抽屉里、桌上插排挪走。一个工位从"有人"变成"没人"——不需要任何仪式。只是在系统里删了那个工号和密码。

她走出沙县的门。走过两栋楼间那条窄窄的通道。那堆共享单车还堆在那里,几百辆黄色、蓝色、绿色堆叠的残骸,像一座现代废铁山。一辆车的车轮在半空中还在缓慢转动,风推着它转了一圈又一圈。车前筐里有上一个人扔的口罩——白色的一次性口罩,被雨淋过,表面皱巴巴的像裹尸布。

地铁站前面的路上有一排新种的银杏树。她从下往上又看了一眼——还是那几片嫩叶。比四月份来的时候多了些,但树本身还是细得不行。支架还没拆。叶子在风里用同样的频率抖。

她在心里把标注基地里所有的事情从头到尾过了一遍。蒸饺。白桌子。屏幕光。老标注员的"感觉"。那个培训PPT的最后一页,一句话。那条多肉prompt里的"咔嗒"声。

那三个月半变成了一段被压缩好、放进记忆文件夹里的东西。她不知道自己以后还会不会打开这个文件夹。她只是觉得——她还什么都没搞懂。但今天不是搞懂的那天。

那天只是离开的那天。


在概率空间的某个维度里,图片标注和文本标注之间没有本质区别。一个框起来的是"行人"还是"车辆"、一个标签是"正常"还是"存疑"——它们都在训练同一个系统去分割现实。而每一次分割,都会在边界上留下一个不可见的切口。切口积累到一定数量之后,就不再是切口了——是一张网。