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

一个CV算法工程师在技术方面的小反思 仅仅根据自己比较了解的识别,检测,分割方面的一些总结。比较通用的算法侧优化是backbone(resnet resnext resnest efficientNet等大模型,mobilenet hrnet shufflenet等系列小模型),Neck(fpn, bi-fpn,panet等各种FPN层),比较实用的网络优化(deform_conv,se-net,cbam等attention结构),head优化(主要是target设计的方方面面。 阅读详情

AI导读

 

作为CV算法工程师,在工作中的应该保持怎么样的心态,关于算法方面应该怎么提高效率。本文为作者在CV岗位上的工作反思,同为打工人的大家可以作为一个经验参考。

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

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

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,给我开除我也接受。我要做的就是总结下为什么没有把事情做好,去反思自己遇到的哪些问题,走了哪些弯路,下次不要再犯。

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

暂时先写到这里。。。。

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


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


nnDetection实战:手把手教你用Python在自家电脑上跑通第一个肺结节检测模型 本文详细介绍了如何使用nnDetection框架在普通电脑上实现肺结节检测模型的搭建与运行。从环境配置、数据预处理到模型训练与推理,手把手教你完成医学图像检测的全流程,特别适合初学者入门医学AI领域。 阅读详情

相关推荐

避坑指南:ArcGIS 做莫兰指数分析,你的‘空间关系概念化’选对了吗?

本文深入解析了ArcGIS中莫兰指数分析的关键参数——'空间关系概念化'的选择策略。通过对比反距离法、固定距离法和K最近邻法的适用场景与影响机制,帮助研究者避免常见误区,提升空间自相关分析的准确性和解释力。特别针对全域莫兰指数和局域莫兰指数的计算差异提供了实用建议。

weixin_30872157的博客 811

深度学习CV岗位面试问题总结(目标检测篇)

序言 首先说一下为什么写这篇文章,一方面是因为在平时工作中或者项目上会用到各种各样的算法,虽然用多了心里大概都知道这些算法是什么原理,但是在面试的时候当面试官闻起来,突然一下子就组织不上语言,原理说得零零碎碎,显得非常不专业,相信很多人都有这样的面试经历。另一方面我觉得当读到一篇好的文章或者一段出彩的文字时,看完能够用自己的一句话把文章核心内容总结出来,才能够掌握文章的精髓,当然深度学习的东西,很难用一句话概括出来,但是我们可以总结其中的重点,再通过思维的延申到实现细节上,是不错的学习方式。 废话说得太多了

小菜的博客 2万+

DP3(3D Diffusion Policy)算法详解:从点云感知到扩散动作生成

DP3 的全称是:DP3 = 3D Diffusion Policy\boxed{\text{DP3 = 3D Diffusion Policy}}DP3 = 3D Diffusion Policy​对应论文题目是:3D Diffusion Policy: Generalizable Visuomotor Policy Learning via Simple 3D Representations该工作发表于 Robotics: Science and Systems(RSS)2024。DP3 是一种面向机器

u013250861的博客 357

CV 加持的工业检测,从算法选型到模型部署

随着AI技术的逐渐成熟,越来越多的传统企业希望借助AI技术,实现智能质检。传统质检更多依靠有经验的人工劳动力来实现质量检查甚至分拣,但这样的方式,许多场景会有检查效率低,审核质量不稳定,...

我爱计算机视觉 3111

YOLOv8损失函数升级:从CIoU到Wise-IoU v3的实战调优与避坑指南

本文详细介绍了如何将YOLOv8的损失函数从CIoU升级到Wise-IoU v3,以提升目标检测性能,特别是在小目标检测和样本不均衡场景下的表现。通过实战调优步骤和避坑指南,帮助开发者有效应用Wise-IoU v3的动态聚焦机制和单调性控制,显著提升模型精度和训练稳定性。

weixin_33737774的博客 590

从零开始:HLW8110电能计量IC的硬件设计与软件调试全攻略

本文详细介绍了HLW8110电能计量IC的硬件设计与软件调试全流程,涵盖核心特性、抗干扰设计、UART通信协议及校准方法。通过实战案例和优化技巧,帮助工程师快速掌握高精度交流测量技术,适用于智能插座、充电桩等应用场景。

p5l2m9n4o6q的博客 577

95后CV工程师晒出工资单,狠补了这个,真香...

最近一哥们跟我聊天装逼,说他最近从阿里跳槽了,我问他跳出来拿了多少?哥们表示很得意,说跳槽到新公司一个月后发了工资,月入5万多,表示很满足!这样的高薪资着实让人羡慕,我猜这是税后的薪资,税前估计超过6万了。从曝光的截图来看,这薪资水平已经秒杀了绝大部分工薪阶层,甚至有些企业的高层都拿不到这样的薪资。在随后的跟帖中,这名阿里前员工表示自己之前是在阿里做CV的,现在跳槽到新公司后,主要做也是做机器视觉方面,待遇的话加上含股票奖金,总体比阿里还是要高一些。但具体是哪家公司,哥们并没有透露过多的信息。话说现在做人工

m0_60720471的博客 1473

从零开始,用Cadence Virtuoso手把手仿真一个1.5V LDO(附完整电路与仿真脚本)

本文详细介绍了如何使用Cadence Virtuoso从零开始仿真一个1.5V LDO,包括环境准备、电路导入、Testbench构建、核心仿真类型分析以及高级调试技巧。通过完整的电路与仿真脚本,帮助读者掌握LDO设计与仿真的关键技术,提升电路设计能力。

weixin_31309419的博客 447

如何成为一名计算机视觉(Computer Vision, CV)工程师

CV算法工程师负责设计、开发和优化各种算法,以处理和分析图像和视频数据。CV算法工程师负责设计、开发和优化各种算法,以处理和分析图像和视频数据。目标检测:R-CNN系列(R-CNN、Fast R-CNN、Faster R-CNN)、YOLO系列、SSD等。选择一个感兴趣的CV领域(如人脸识别、自动驾驶、医疗影像分析等),自主设计并实现一个项目。根据自己的兴趣和特长,选择适合的职业发展方向(如算法研究员、产品经理、技术经理等)。概率论与数理统计:随机变量、概率分布、期望、方差、协方差、贝叶斯定理等。

重剑无锋博客 6283

对E-R模型向关系模式转换的认识

一:基本E-R图的转换 1     属性处理 派生属性:直接忽略。 复合属性:展平技术。 多值属性:单独建立一个关系表,关系名就是多值属性名,如果是实体集的多值属性,关系的属性就是实体集的码加上多值属性,如果是联系集的多值属性,关系的属性就是各个实体集的码加上多值属性,关系的码要具体情况具体分析。 2     基本E-R图转换为关系模式 强实体集:一个关系,关系名就是强实体集名,关系属

优快云_LYY的专栏 2734

基于Simulink的BCH码编解码仿真建模示例

BCH码是一类循环码,能够纠正一定数量的随机错误。灵活性:可以根据需要选择不同的码长和纠错能力。高效性:适用于短码长和中等码长的场景,广泛用于卫星通信、存储系统等。实现简单:编码和解码过程可以通过硬件或软件高效实现。在本示例中,我们将使用MATLAB/Simulink中的和模块来完成BCH码的编解码操作,并通过仿真验证其误码率(BER)性能。通过本指南,我们介绍了如何基于Simulink搭建一个BCH码的编解码模型,并进行了仿真以验证其性能。背景介绍:理解BCH码的基本原理及其在通信系统中的应用。

xiaoheshang_123的博客 191

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

Datawhale干货作者:努力的伍六七@知乎,编辑:极市平台来源丨https://zhuanlan.zhihu.com/p/395255446极市导读正如作者所说,做一个算法工程师...

Datawhale 619

第三节:Vben Admin登录对接后端login接口

上一节,我们梳理的Vben Admin登录功能接口的逻辑,本节开始正式开启后端的开发后端我们采用Python的Flask项目,Flask-SQLAlchemy管理数据库模型,Flask-Migrate进行模型迁移。参考版本如下:Flask3.0.23.1.1本节,我们已经开启的后端的开发,因为是主要介绍Vben Admin的登录逻辑,所以Flask开发这里只截取了部分主要代码。

cuiwin的专栏 4191

CV算法一年工作总结与心得

大家好,我是对白。今天给大家分享一篇至今是我看过最全面的CV算法工作总结,作者是一名大厂算法工程师,文字真诚而又朴实,其中很多观点都是一点点积累得到的,希望能给即将工作的朋友们一点启发与帮助,以下为原文。作者:CV伍六七 | 编辑:对白的算法屋https://zhuanlan.zhihu.com/p/363354912大佬可以写总结给别人指导,菜鸟可以写总结给别人指坑。最近反思了很多事情,也找到了很多不足之处。怕以后忘记了,就想到什么写什么,什么没想到以后就补上。一. 算法篇虽然我没有发表过顶会论文,谈不上

1474

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Statistics and Machine Learning Toolbox

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

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

今天是正式工作后的第一年,打算做一件事,以后要持续记录自己的工作感想和生活状态。人这一辈子那么有限,作为一个普通人,也许我穷极一生也不会有什么大的成就可以让外人为我写下一个传记。但是我可以用自己的手记录下我这一生,吃过的苦,犯过的错,爱过的人,在和一些网友聊过之后,我发现我是芸芸众生中的一粒沙,那些自以为的经历其实在陌生的一个环境里也有人同样地经历着。希望我的文字可以激励那些人,希望我的错误可以警惕那些人。我的具体研究方向是计算机视觉算法工程师,众所周知,当我们在说起算法工程师的时候,大家一般都会把工程师说

536

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

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

kellen_f的博客 879

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

我做算法工作的小反思!

干货作者:努力的伍六七,算法工程师来源丨https://zhuanlan.zhihu.com/p/363354912编辑丨极市平台极市导读本文是作者在算法岗位上的工作反思,含算法篇和...

Python数据之道 158
上一篇: 入"坑"推荐系统,从Google这篇课程开始
下一篇: 一个已经存在 10 年,却被严重低估的库
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值