从异地恋到计算机视觉实战:一个脱单程序员的成长手记

Issue终结者
2026-01-14 05:35
阅读 603

上周五晚上11点,我还在公司加班调模型。窗外北京的夜色早已沉沉,办公室只剩我一人。手机突然震动,是老婆发来的消息:“今天视频吗?还是等你回家?”
我看着屏幕上loss曲线还在震荡,叹了口气,回了个“再等半小时,宝贝,这个epoch跑完就上线”。
她秒回:“行吧,记得关空调,别着凉。”
那一刻,我忽然觉得,哪怕再累,也值得。


一、故事的起点:相亲8次,终于脱单,却开始异地

我是小陈,31岁,后端转CV(计算机视觉)方向的程序员。去年十月,我在第8次相亲后,遇见了现在的老婆。她温柔、理性,是个小学老师,老家在杭州。而我,扎根在北京中关村,月薪15k,房租3500,存款勉强够付个首付的零头。

我们恋爱三个月就领证了——不是冲动,而是彼此都清楚:年纪不小了,遇到对的人,就得抓紧。可现实很骨感:她工作调动不了,我手头项目正关键,异地成了唯一选择。每周五晚我坐高铁南下,周日晚再返京,成了固定节奏。

那段时间,我白天写代码,晚上和她视频,周末见面时恨不得把72小时当168小时用。但说实话,技术焦虑 + 情感孤独,差点让我崩溃。尤其是看到同事晒娃、买房,我常问自己:“我是不是选错了路?”


二、转折点:一个计算机视觉实战项目的诞生

转机出现在今年3月。公司接了个新需求:为一家连锁超市开发“智能货架监控系统”——用摄像头自动识别商品是否缺货、摆放是否整齐。老板说:“小陈,你不是学过OpenCV吗?试试看。”

我嘴上答应,心里发虚。虽然简历写了“熟悉CV算法”,但实际只做过课程作业级别的YOLOv3 demo。真正要落地?数据怎么标?模型怎么部署?推理速度卡不住怎么办?

那天晚上,我和老婆视频时忍不住吐槽:“感觉又要搞砸了,可能真不适合做算法岗。”
她没安慰我,反而笑着说:“你不是总说‘debug就是谈恋爱’吗?bug不也是慢慢磨出来的?”
我愣了一下,笑了。对啊,感情能磨合,代码为啥不能?

于是,我决定死磕这个项目。这不仅是一次技术挑战,更是我对自己的证明。


三、实战细节:从算法选型到上线踩坑全记录

1. 算法选型:YOLOv5 vs EfficientDet

项目初期,我对比了多个目标检测算法。YOLOv5速度快,社区支持好;EfficientDet精度高但推理慢。考虑到超市摄像头是1080p,且要求实时(<200ms/帧),我最终选了YOLOv5s——轻量、快、文档全。

黑话时间:别信“SOTA就是最好”,落地场景里,“能跑起来”比“论文指标高”重要100倍。

2. 数据标注:血泪教训

我们只有200张真实货架照片,远远不够。我尝试用LabelImg手动标,结果三天才标了50张,手抽筋。后来改用CVAT(开源标注工具)+ 半自动预标注(先用预训练模型粗标,人工修正),效率提升3倍。

关键点:数据质量 > 数据数量。宁可少而精,不要多而烂。

3. 训练与调参:那些深夜的loss曲线

我在本地GPU服务器(RTX 3090,感谢公司没抠门)上训练。初始mAP只有0.45,缺货识别经常漏检。后来发现是类别不平衡——“缺货”样本太少。

解决方案:

  • 使用Focal Loss缓解不平衡
  • 对“缺货”样本做SMOTE过采样
  • 加入Mosaic数据增强

两周后,mAP提到0.72,推理速度稳定在150ms/帧。那一刻,我激动得差点给老婆打电话(结果发现她已经睡了,凌晨2点)。

4. 部署上线:从Flask到TensorRT

最初用Flask搭了个简单API,但并发一高就崩。后来改用TensorRT加速 + Docker容器化,QPS从10提升到60。还加了Prometheus监控,老板看了直呼“专业”。

最搞笑的是,第一次现场测试时,摄像头对着反光的货架,模型直接把玻璃反光当成“新商品”。我们紧急加入光照鲁棒性增强,在预处理阶段加了CLAHE(对比度受限自适应直方图均衡化)。


四、成果与成长:技术之外,还有生活

项目上线后,客户反馈很好。更意外的是,HR找我谈薪资:“小陈,你这个项目给公司带来了新业务线,月薪从15k涨到22k,下季度调薪再看表现。”

我第一时间告诉老婆。她笑着说:“我就知道你能行。不过下次回来,记得带西湖醋鱼,别只带代码。”

这次经历让我明白:技术不是孤岛,它连接着现实、责任,还有爱。


五、给同行的建议:别怕“菜”,就怕不开始

如果你也像我一样,从传统开发转CV,或者正在被项目压得喘不过气,我想分享几点心得:

  1. 从小处着手:别一上来就想复现SOTA模型。先跑通一个baseline,再迭代优化。
  2. 善用开源:GitHub、Hugging Face、Model Zoo 是你的战友。别重复造轮失火。
  3. 重视工程落地:算法再牛,部署不了等于零。学点Docker、ONNX、TensorRT不吃亏。
  4. 保持沟通:和技术同事对齐,和产品经理确认需求,和客户理解场景。闭门造车必死。
  5. 别忘了生活:代码会过时,但爱人不会。再忙,也要留时间给重要的人。

六、写在最后:技术是手段,幸福才是目的

现在,我依然每周奔波于京杭之间。但心态变了。以前觉得异地是负担,现在觉得,每一次相见都是奖励,每一次分别都是蓄力

上个月,我们开始看杭州的二手房。她说:“等你这个项目奖金下来,我们就付定金。”
我点点头,心里盘算着:下个项目,要不要试试多模态?或者AIGC结合CV?

但不管做什么,我知道——
我不是为了成为“大神”而写代码,而是为了能给她一个安稳的家,一个不必再异地的未来。

技术分享的意义,从来不只是传递算法,而是传递一种可能性:普通人,也能靠努力,把日子过成想要的样子。

共勉。

—— 一个刚脱单、还在搬砖的CV程序员
2024年6月于北京出租屋

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝