我做算法工作的小反思!

RealSense D455启动教程 RealSense D455启动教程 修改rs_camera.launch 阅读详情

来源丨https://zhuanlan.zhihu.com/p/363354912

编辑丨极市平台

极市导读

 

本文是作者在算法岗位上的工作反思,含算法篇和成长篇两部分,希望为在学习或在工作的大家提供一个经验参考。 

大佬可以写总结给别人指导,菜鸟可以写总结给别人指坑。

原本打算是正式工作满一年以后写的,最近反思了很多事情,也找到了很多不足之处。怕以后忘记了,就想到什么写什么,什么没想到以后就补上。

1.  算法篇

  • 虽然我没有发表过顶会论文,谈不上学术成就。但是我还是要硬谈,在实际我们做算法落地的时候,最重要的东西确实是数据。一个CV算法项目的流程迭代基本都是:产品分析,业务指标制定,算法调研,采集数据1W左右就够了,出一个demo,产品测试,有初步badcase,其中肯定有泛化性问题。因为就1W数据。先增加数据量级,在增大数据量级的时候要考虑badcase有哪些情况,还有数据采集这个事情也是需要一定经验的。当你考虑的case比较多的时候,很难做到穷举。制定好数据采集策略非常重要。

  • 算法优化的套路不是提高指标,是要解决业务问题。学术上统计一个测试集的mAP(比如检测),业务中是要根据实际业务场景分开简历测试集,比如暗光下测试集,带遮挡测试集,通用场景测试集等等,要针对业务场景进行优化,业务场景下测试集就是算法和测试那边沟通。

  • 端侧的算法优化要考虑部署问题 ,就这么说吧,你打开SNPE的文档,基本照着里面的支持看基本就是八九不离十了。有些常见的考虑点时激活函数基本就是只用Relu,带有逻辑操作的比如ROIAlign等等,上采样的方式有Deconv,Interp(nearest, bilinear), UpPooling,空洞卷积这几种,但是不同的方式在不同的芯片平台支持是不一样的。还有全连接的耗时可能在有些平台上也不太行。简单来说除了conv relu,其他的东西都要在做之前有个调研和考虑。还有可能会有限制输出Tensor数量和输入Tensor数量的问题。其他的就是不同平台的量化支持不同了。讲了这些我想现在还有人在用VGG还是可以理解的。Make VGG Great Again.

  • 工作中最重要的不是论文的创新,尤其在初期做算法的套路,流程要清楚。以及执行力要Max,还要有一定的数据敏感性。在标注数据的时候需要界定什么是正样本什么是负样本,什么是无法判断(ignore),什么时候需要脑补,什么时候不需要脑补,这个非常非常重要,数据标错了后续要花费很多力气改正 。

  • 要保证实验的正确性,一开始实习的时候回经常跑错实验,或者实验跑到一半挂了,这会大大降低效率。做事情要慢一点,但是要正确。

  • 用tmux管理实验非常方便,要写好实验日志,保证自己能够看 到哪一行就知道这个实验做什么改动,并且可以直接找到实验结果保存的地方,我一般通过名字来体现,比较复杂的就写备注。

  • CV不像推荐广告NLP,不需要用到SQL,Hadoop之类的数据查询等工具,CV数据的管理要有自己的一套章法。要做到每一张图片都是可溯源的,图片和视频,抽帧频率,这些都需要列表。如果需要对图片做后处理,比如人脸数据,中间的结果人脸检测bbox,抠出来的图等等都要有记录,脚本要整理好,一个任务从抽 帧开始到最后训练的图片,分步骤处理并且每个步骤都保留中间结果,主要不要保留图片,保留坐标等信息。保留图片会占用太多存储 空间。每一个数据都要有专门的表格来记录,不然以后整理其数据来有你难受的。

  • 因为图片和标注都是放在磁盘上,所以要有自己的风格,我的风格就是data目录放视频,Images目录放图片,Scripts目录放脚本,Ann目录放处理完的标注文件,Ann_pre放标注人员返回的原始标注文件。其中每个目录中会根据任务需求建立子目录, 数据的信息必须要包括的是任务+时间,其他看着需求加。

  • 图片和标注文件定好之后加下只读权限,不然哪天手贱给删了不知道上哪哭去。

  • 训练模型之前要确认的事情有:进网络的图片和GT画出来,确认是否会有问题。网络的Target画出来确认是否会有问题,这两点没问题Loss再下降那恭喜你等着看demo了

  • WarmpUp要加上,这东西谁用都说好

  • GradNorm打出来,如果崩了也好分析

  • LearningRate一般就SGD和Adam,CosineLR等这些不怎么影响你最终的结果,可能会加快收敛.

  • 要积累自己的代码库,这样很多时候只要搜一下copy过来改改就可以用,最重要的是不用再去查API浪费时间了

  • 提升代码能力和算法能力的最好的方式就是看好的开源代码,多看多写才能提高思维能力。

  • CV算法好卷啊,检测,分割 ,识别,跟踪,OCR,ReID,分类,GAN,动作迁移,SLAM,深度估计,3D相关,姿态估计,图像检索,NAS,量化,立体匹配,图像复原,……,What's Fuck,我这一写感觉自己跟个白痴一样好多都不懂。

  • 框架上要加的功能有Multi-Task训练(不同卡上运行不同Task|根据Task的标签手动切割网路输出计算Loss),模型并行,数据并行,多数据源训练(不同数据可以用不同数据增强),多卡并行,转模型,FP16训练,量化训练,demo可视化,BadCase分析,多测试集评估,NAS搜索,跨数据集训练(A数据中有人体,B数据也有人体,但是标注的label不同,需要制定一套方案把不同的数据集中的标签重定义)。其中有些不是必要的就不加

  • 要用好vim和shell,在CV任务里面vim最常用的是一些文件的合并,交集,差集,排序,去重等等。shell命令+管道机制可以让你快速地做很多事情,不然从头开始写python代码也是比较费时间的。最常用的是find + 通配符找文件,然后对文件进行删除,移动等等操作

  • opencv是必须要熟悉的,简单的读取,存储,画图的API是必须记住。其他的要积累脚本。不过目前来看很少用到一些传统特征。如果需要用到那句把这些脚本都存储下来。

  • 数据标注完成后处理成数据集一定要考虑仔细了,在转格式的时候一定要加上一些格式确认,比如标注检测框是否有左上角的坐标值却小于右下角这种异常情况,这个图片是否是已经被损坏了等等。很多时候你找半天bug发现是数据的问题。

  • 工作中没人关注你的算法是不是新的,是不是牛逼,代码有多难写,不能为了新颖而新颖。能解决badcase的就是好优化,不然就是白搭 。

  • 要保证自己实验的可复现性,做优化的过程中会经常需要改一些小细节。可能对之前的实验有影响,尽量改成传参的方式,不然也可以继承重新写一个类。

  • 算法工程师要多向工程部署的同事请教,看看模型部署的时候需要考虑的东西有哪些,资源占用,速度优化等等是怎么做的。

  • 不要忽略算法的后处理,在实际用的时候经常会加一些后处理的逻辑判断,这个也非常重要,有时候能解决很多问题。

  • 目前我知道算法优化的有效常用方案是:加数据,multisource训练,数据增强,好的pretrain_model,正负样本均衡的优化,正负样本采样相关优化,知识蒸馏,额外监督比如检测中加分割基本能涨点,attention模块,多尺度,特征融合,合适的backbone,NAS搜索(应该大家都在做),量化训练,剪枝。其他比如算法流程的大改动,一般人真做不了,比如VGG->MobileNet,DeepSort->CenterTrack,YOLO->YOLOv5,这些硬通货都是大神的杰作,要向大神学习,但是不要一口吃胖子。

  • python脚本要熟练编写,多线程操作要信手拈来,数据 处理经常会需要多线程处理

2.成长篇

  • 要相信自己,不要总觉得自己不如别人,要对自己有信心,才能让别人对你有信心。

  • 要不断学习,我的人生宗旨就是我可以菜得被开除,但是我不能因为无所事事浑水摸鱼被嫌弃。

  • 要和同事友好相处,工作之后明显就交际圈小了很多,同事是交流最多的人,不管怎么样,都要客客气气。多帮别人一点,别人才会多帮你一点。

  • 要拼搏,但是不要拼命,程序员本质上也只是一个打工的,干点活,拿点钱,不要把命搭上去。生活 还会很美好的

  • 要去了解外界,不要一头就在代码里,要有个爱好,跳舞,跑步,拍照,旅游,这样你才会能找到生活的感觉。

  • 心态要躺平,我的心态就是什么事情我都会努力去做,如果我努力去做了却没做好那是我能力问题,给我3.25,给我开除我也接受。我要做的就是总结下为什么没有把事情做好,去反思自己遇到的哪些问题,走了哪些弯路,下次不要再犯。

  • 不要抱怨家庭的出生,抱怨永远解决不了问题,已经五六十岁的父母难道还指望他们改变你的命运让你成为富二代?

暂时先写到这里。。。

不管以后是不是还在干程序员,我都会一直坚持学习,坚持努力,还要坚持输出。


觉得还不错就给我一个小小的鼓励吧!


国密证书实战:在CentOS 7上构建GmSSL私有CA与完整证书链 本文详细介绍了在CentOS 7操作系统上,使用GmSSL工具构建私有国密证书颁发机构(CA)与完整证书链的实战指南。内容涵盖从部署GmSSL、创建国密根CA、签发服务器与客户端证书,到生产环境安全加固与最佳实践的全流程,旨在帮助系统管理员和安全工程师建立统一、可控的内部国密安全通信体系。 阅读详情

相关推荐

麒麟银河操作系统V10部署ffmpeg(也能用于Linux系统)

部署ffmpeg用来处理视频的各种操作,如编码解码,格式转换,剪辑,处理实时视频流,音频流,加滤镜等

zhouwenxing666的博客 9041

算法工作两年,我的思考和总结

18年毕业到现在,算法工程师的工作已过去两个年头,有挫败也有欢喜,感谢老板同事伙伴们的帮助。和工作第一年相比(我做算法工程师的第1年),在业务认识、工作方法、算法应用和落地有了不一样的体...

abcdefg90876的博客 628

基于深度学习YOLOv8的PCB板缺陷检测系统

基于YOLOv8的PCB板缺陷检测系统,可以有效提高PCB生产过程中的检测效率。未来,我们可以进一步优化模型,结合更多的数据增强策略和先进的网络结构,以适应更复杂的生产环境。为了进行训练,理想的数据集应包含多种不同缺陷类型和不同背景的PCB图像。YOLOv8需要的数据格式为每个图像一个标签文件,每个标签文件包含缺陷的类别及其边界框坐标。运行该界面时,用户可以通过点击按钮选择图像,随后系统将自动检测图像中的PCB缺陷并显示结果。训练完成后,可以使用训练好的模型进行推理,检测新的PCB图像中的缺陷。

YOLO 1071

硕士毕业两年算法工程师年终总结

作者|Jack Cui责编 | 八宝粥来源| Jack Cui(id:JackCui)今天,就随便聊聊,我这一年的经历,就当自己的年终总结了。工作我硕士毕业刚满两年,一个感受是,合...

程序人生的博客 1689

端到端自动驾驶:特斯拉FSD Beta技术拆解

端到端自动驾驶:特斯拉FSD Beta技术拆解 ,人工智能,计算机视觉,大模型,AI,这篇文章围绕特斯拉FSD Beta的端到端自动驾驶技术展开,先介绍端到端自动驾驶的定义、与传统方案的区别及FSD Beta的特点,再阐述其硬件基础、技术架构,解析关键技术,还涉及训练数据与标注、安全与冗余设计、实际应用场景与挑战以及技术迭代与更新等内容,展现了该技术的多方面情况。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 18万+

焊缝缺陷智能检测:基于 YOLO 的工业质检系统实战

从焊缝缺陷数据集的构建到模型训练,从桌面检测界面到缺陷统计输出,本文覆盖了一套工业焊缝质检系统的完整路线。这个场景的核心难点在数据层面——气孔和裂纹这类小目标的标注质量直接决定了模型的最终表现。建议先在开源数据集上跑通全链路,确认 mAP 达到可接受的水平后,再通过补充特定类型的小目标数据和提升输入分辨率来做精度优化。工业场景中,漏检一个气孔的成本和误报一个假阳性的成本不一样——根据对两类成本的承受力,调整置信度阈值来找到业务上的最佳平衡点。

m0_71589036的博客 203

反思工作中的得与失

这是学习笔记的第2231篇文章读完需要9分钟速读仅需7分钟最近几天做了一件事情,也是受一位同事的启发,他总结了工作这些年来需要具备的一些技能和能力,让我帮他参考下,给点意见。这种主动...

杨建荣的学习笔记 1459

手机端实时检测:YOLOv8n轻量化改进,骁龙865上35FPS,mAP+3.2%

YOLOv8n-Lite的改进不是简单的“砍通道、降分辨率”,而是结合手机端硬件特性(NPU加速、内存限制)和场景需求(小目标检测),通过“卷积拆分减少计算、通道瘦身适配内存、特征强化保留精度”的协同策略,在骁龙865上实现35FPS实时性与mAP+3.2%的双赢。该方案已在手机端AR应用中落地,支持实时手势识别、物体测量等功能,功耗比原始模型降低40%(连续检测1小时仅耗电12%)。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 727

工作两年的算法工程师的小反思(1)

工作两年的算法工程师总结,纯干货~

kellen_f的博客 879

Android Audio基础——概览(一)

音频系统使用该属性进行音频焦点控制、音频通道路由及音量控制等,一般在应用开发中常用。mUsage // 指定播放声音原因和作用。用来控制焦点、路由及音量决策(USAGE_MEDIA、USAGE_VOICE_COMMUNICATION、未知等)mContentType // 指定声音来源的类型(CONTENT_TYPE_MOVIE、CONTENT_TYPE_MUSIC、语音、发音、未知等)mSourcemFlags //指定音频框架如何对音频播放应用效果DeviceType。

小旭的专栏 3174

深入剖析RDMA Netlink:Linux内核中高效通信的基石

RDMA Netlink:Linux内核中高效通信控制的核心机制 RDMA技术通过绕过内核实现高速数据传输,但其管理控制仍需内核参与。drivers/infiniband/core/netlink.c文件作为RDMA子系统的心脏,构建了用户空间与内核间的高效通信桥梁。该模块采用模块化客户端架构,通过全局数组管理不同类型的RDMA功能,如设备管理、连接服务和链路层操作。从最初的全局锁到细粒度读写锁的演进,展现了Linux内核追求高性能的持续优化。同时,通过条件编译支持新旧内核版本和网络命名空间,体现了稳定性与

数字人生 239

一位算法工程师对自己工作的反思,写得挺实在的

算法、技术及其它在和刘同学长谈之后,我再次对前一段时间的想法进行了反思,结合聊天中的新感受,整理在这里。(注:标题里的算法,指机器学习算法,或者说“算法工程师”这个职位名称里的“算法”,不是“算法与数据结构”里的那个算法。谁能告诉我有没有什么更好的名字来区别这它们,或许是“机器学习算法”与“传统算法”?) 算法与算法工程师先来一段我在知乎里回答“做算法工程师是一种怎样的体验?”的答案(其中的思想

春秋繁露 10万+

交换机背板带宽、交换容量与包转发率到底是啥?

在网络工程中,交换机是核心设备之一,而关于它的性能指标,背板带宽、交换容量、以及包转发率往往成为人们衡量其性能的重要参数。这些术语的定义、关系、以及在实际场景中的应用,都对交换机的选型与部署有着重要意义。本文将为您全面解读这些概念,帮助您深入了解交换机的核心性能指标。

网络技术联盟站 1551

liaowenzhe的算法/研发工程师工作5年2017-2021复盘总结

前言:年终将近,回顾了2017年毕业到2021年的一些事,有些感触,才明白了那些经历教会我的事情。在生活上、成长上、事业上需要一步一脚印,今天在这里整理了我这几年的思考,分享给大家,希望对看完的你能有所帮助,愿所有人功不唐捐。 1.关于生活的反思。 2.关于爱情,亲情,友情的反思。 3.关于技术的反思。 4.关于职场的反思。 5.关于学习与成长的反思。 ...

Liao_Wenzhe的博客 5226

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

一位算法工程师对自己工作的反思,写的不错。

算法、技术及其它 在和刘同学长谈之后,我再次对前一段时间的想法进行了反思,结合聊天中的新感受,整理在这里。(注:标题里的算法,指机器学习算法,或者说“算法工程师”这个职位名称里的“算法”,不是“算法与数据...

qq_41473518的博客 338

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

一个算法工程师在技术方面的反思!

作者|努力的伍六七整理|极市平台https://zhuanlan.zhihu.com/p/395255446大家周末愉快呀!这里是NewBeeNLP。做一个算法工程师最重要的素质是在海量的算法方案中理解,吃透那些真正的干货,然后不断在实践中去验证,并总结吸收到自己的脑子里。今天分享算法工程师一些关于技术上的经验总结。今天是正式工作后的第一年,打算做一件事,以后...

Kaiyuan_sjtu的博客 875

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

CV大佬:工作一年的小反思

来源:对白的算法屋今天是正式工作后的第一年,打算做一件事,以后要持续记录自己的工作感想和生活状态。人这一辈子那么有限,作为一个普通人,也许我穷极一生也不会有什么大的成就可以让外人为我写下一个传记。但是我可以用自己的手记录下我这一生,吃过的苦,犯过的错,爱过的人,在和一些网友聊过之后,我发现我是芸芸众生中的一粒沙,那些自以为的经历其实在陌生的一个环境里也有人同样地经历着。希...

weixin_40920183的博客 529

一个CV算法工程师的小反思

点击上方“视学算法”,选择加"星标"或“置顶”重磅干货,第一时间送达作者丨努力的伍六七@知乎(已授权)来源丨https://zhuanlan.zhihu.com/p/363...

zandaoguang的博客 453

某位算法工程师对自己工作的反思

算法、技术及其它 在和刘同学长谈之后,我再次对前一段时间的想法进行了反思,结合聊天中的新感受,整理在这里。(注:标题里的算法,指机器学习算法,或者说“算法工程师”这个职位名称里的“算法”,不是“算法与数据结构”里的那个算法。谁能告诉我有没有什么更好的名字来区别这它们,或许是“机器学习算法”与“传统算法”?) 算法与算法工程师先来一段我在知乎里回答“做算法工程师是一种怎样的体验?”的答案(其中的...

weixin_41954254的博客 416

极市平台 | 从Deepseek R1和NSA算法谈谈个人的一些反思

最近某个群里面有一道考验大模型能力数学题, 感觉这个题比9.9和9.11谁大更考验Reasoning模型, 似乎很多大模型的答案都做的不好. DeepSeek-R1能做对,但是整个思考过程非常长, 大家可以自己试试.

csdn_xmj的博客 982

李沐:五年工作反思!

点击 机器学习算法与Python学习 ,选择加星标精彩内容不迷路作者:李沐,CMU,亚马逊首席科学家李沐专栏:https://www.zhihu.com/column/gluon五年前的今...

机器学习算法与Python学习 521

普通大一学生的自我反思

​ 暑假高考完,得知自己被计科(普通本科)录取,便开始在知乎等地方搜索相关知识,以此来提高自己的认识。​ 先是在b站上跟着比特鹏哥学完了c语言(基础),这里又要有一大段故事了,我家在江苏扬州,大概是9月份突然爆发了疫情,就被关在家里不让出去,(在家里坐牢,核酸检测,基本隔一天就要做一次)就在B站上天天看鹏哥学c语言,一开始有新鲜劲,学起来还是很有动力的,后来学到指针,很是痛苦,就又专门去B站听了其他的指针教程,学着学着慢慢就明白了。

拒绝八股,追寻本质。 6万+

一位算法工程师对自己工作的总结,非常具有借鉴意义!

算法、技术及其它 在和刘同学长谈之后,我再次对前一段时间的想法进行了反思,结合聊天中的新感受,整理在这里。(注:标题里的算法,指机器学习算法,或者说“算法工程师”这个职位名称里的“算法”,不是“算法与数据...

qq_41473518的博客 2699

AI智能体如何从错误中学习:反思机制详解

探索AI智能体的反思能力:从哲学思考到技术实现,看AI如何像人类一样从错误中学习和成长。通过轻松有趣的方式,深入了解Reflexion和ReAct等前沿框架,掌握让AI更智能的核心秘密。

分享工作学习中的知识;不限于技术java、nodejs,同时也包括项目管理、产品管理等内容 1262
上一篇: 超实用!整理了34个Python自动化办公库!
下一篇: 最落寞的C9高校:从未没落
Wang_AI
博客等级 码龄12年 997粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值