人工智能算法工程师待遇,人工智能工程师和算法工程师的区别
点击上方“
机器学习与生成对抗网络
”,关注星座。获取有趣有趣最前沿的干货!
仅文字交流,杰克崔侵入删除编辑
我看了一篇报道。这是工作1年的CV算法工程师的工作感受。
我有很多感受在里面。我深有体会,分享给大家。希望对你有帮助。
原文如下:
坚硬悲伤的精灵:
布里克兰街359号。Hu.com/p/395255446 ZHI
今天是我正式工作后的第一年,我打算做点什么。以后我会继续记录我的工作感受和生活状态。
生命如此有限。作为一个高个洋葱,我穷一辈子。也许没有什么比请别人写传记更伟大的了。
但是我可以亲自记录我的生活,我的努力,我的错误和我爱的人。和一些网友聊天后发现,我是艺人中的沙子。那些自以为是的经历,其实也有在陌生环境下有同样经历的人。
希望我的话能激励那些人,我的错误能警醒他们。
算法工程师所需技能我的具体研究方向是计算机视觉算法
工程师
。众所周知,当我们谈论算法工程师时,我们通常称工程师为http://www.com。否则,从我一年的工作来看,我认为我具备计算机视觉算法工程师所要求的技能。算法工程师的工作从一天三个问题开始。业务KPI实现了吗?badcase解决了吗?CornerCase优化了吗?你工作的目的就是解决这三个问题。
所以每天的工作内容就看什么案子没破,设定优化目标,重复,再看,再优化,再重复。你觉得算法工程师这份工作简单、枯燥、无趣吗?
否则我相信所有的工作都是枯燥而简单的,那么著名的数据科学家如李菲菲、疯狂万宝路不都做过参数调整的工作吗?不能有任何偏差。我看得出算法工程师有以下技能。
一个能意识到数据价值和最高使用方法的数据科学家,一定比一般人更了解数据的价值。另外,做算法项目需要什么样的数据、特征和细节,与项目优化目标相关的数据要求是什么?
要选择一个高效合理的算法,我要给那些说算法工程师是辅导员的人看看脸。你需要做的就是从0到1e-3逐一尝试学习速率,改变配置。在新项目的实际验收中,作为算法工程师需要快速调查算法论文,制定算法优化方案。
而且,大部分时间,你都没有接触过这个副方向。比如突然让你从分类物品中做追踪物品,你需要在一周内调查行业追踪算法的文章,了解追踪算法的分类结果、优缺点分析、核心思想分析。没有论文的积累,很难做到这一点。
优秀的算法工程师能够以如此快速的选择和重视来提供合理的算法选择。通常要考虑的是(可部署性、精度指数、速度、是否存在不支持的操作符、开放源代码等。).顺便说一句,在这一点上,没有人会愚蠢到在没有为新项目开源的情况下复制SOTA论文。
全过程控制能力作为软实力,重点是项目管理。正如我刚才提到的,在信息和SDK中有定义、调查、计划、数据收集、标记、模型训练、需求集成。
这些过程都需要时间节点,时间节点不仅是项目负责人给的,也是算法工程师自己定义的,以便有效控制。例如,在采购安排中必须考虑采购方案的合理性和效率。
划线时,请明确划线边界,并详细记录传输给您的数据。否则的话,要找到当时的数据会非常困难。模型训练通过输入图像标定、目标标定和信息码,可以用咖啡休息,看到损耗慢慢下降。其实这个过程和一般的软件开发是一样的。不需要担心没完没了的问题,但是需要考虑风控进度,注重细节,尝试算法工程的细节。
算法工程师的代码库基本都是Python,Python作为一门简单的语言很好用。(不要用C高端来批评我们这些用python的人,用C写模型的训练是很蠢的事情,是大神的事情(yolo作者)。
除了基本操作,数字,字符串,类,装饰器等。python代码也有使用工具的数量,比如numpy,pandas,torch,opencv,multiprocess等。具体说明你的研究方向。在系统架构上,我觉得学习开源代码,比如PaddlePaddle和MMLab代码,是非常好的学习资源。
然而,我们的架构是一个预处理,后处理,建模,主干,颈部,头部等。是组件化的,但是也有一些设计编译器。
关于C,以前很纠结要不要学CUDA,现在觉得没必要了。我负责
算法工程师的C技能就是能够高效处理逻辑,快速定位调试遇到的bug。Cmake也要能理解,有在线部署算法模型的能力,熟悉C、STL、指针、引用、多态、继承、命名空间、模板等基本类型。至于一些指令级的优化,算子融合之类的,都是专业人士做的。
算法优化能力这是一个核心技能。一定要坚持数据算法创新的思路去做一个项目。当高优先级遇到瓶颈,我们再做下一步。在数据方面,要不断做badcase分析,把自己的训练数据按照场景和类别进行分类,不断完善和优化测试集、测试方案和测试指标。
算法要考虑主干、颈部、头部中目标的设计选择,
数据增强方案
(这个比较重要,除了几何增强,还有像素级增强),更好的预训练模型,后处理的逻辑优化,大模型的KD优化,类不平衡优化,困难样本挖掘优化等。下面重点说一下后期处理。这个环节其实很重要。在许多情况下,基于逻辑的规则可以将模型的性能提高一半以上。代码一般比较简单,但是你需要从数据反馈中挖掘出如何制定这个规则。创造力是你的研究能力。
研究能力很多论文其实价值不大,不是因为没有创新,而是因为这个创新是为了“新”而做的,如果在一两个公开的数据集上取得了好的结果,可以发论文证明这个工作的价值。有时候实验显示不好,我就换网络。用deform_conv看过很多魔变网络的方案。
非常扎实的文章当然值得尊重。比如我之前在看多目标跟踪的时候看完了centertrack,就觉得这篇文章真的很简单,很温柔,很有力量!但是,我不是吃不到葡萄说葡萄酸。能有最好的头发当然很棒。毕竟程序员往高处走,顶会出书,行业影响力是妥妥的硬通货!不过工科也可以做研究,研究论文,复制论文都是必备技能。其实我觉得这一块也属于研究能力的范畴。
数学能力很多人说算法工程师对数学的要求很高。其实我也不知道这个需求具体指的是什么水平,但至少公式推导是必须掌握的。不然很多论文看不懂。比如最近看目标跟踪的文章,感觉对数学还是有一定需求的。不然我连傅里叶变换和卡尔曼滤波都看不懂。真的没法玩了。至于更高的数学要求,就让那些数学家和研究者去做吧。反正我做不到。kdxhd会给我这个头。如果不是金刚钻,我不会做瓷器。
专注一个方向从一个点开始,算法一般是推荐、搜索、NLP、CV、控制规划。我自己也做CV,所以对CV有一点了解。其实CV有很多方向,传统的图像处理,识别,检测,分割,单目标跟踪,多目标跟踪,人脸相关任务(属性,情感,识别等。)、GAN、显著性检测、异常检测、超分辨率、OCR、图像恢复(去雾、ReID去除、阴影去除等。)
你可以看到为什么CV那么卷帙浩繁,有些方向的门槛比技术栈还高,比如SLAM。一般一个俱乐部招满贯的话,基本都是要有相关经验的。不然一个只做过分类任务的人,估计很难去做SLAM。我的想法是从小的方向入手,在几个小方格里深挖,然后借鉴其他大的方向,这样才能更好的进步。毕竟方向不同,能力需求也差不多。
算法工程师的技术成长了一年,感觉在技术上收获很大。在这个大的项目组里,检测、分割、分类、识别这些关键点都被触及到了,同事们也都很好。不同方向的同事通常很乐意在technology stack分享自己的工作和前沿文章。
但有点无奈的是,我在算法创新上还是有所欠缺。我希望在接下来的一年里,我能不断提高这方面的能力。
当然算法的能力才是最重要的,而leetcode不仅是招聘的筛选标准,也是锻炼自己算法思维的重要手段。虽然不得不说,难题一般都是带点ACM技巧的镜子,但我觉得一个成熟的算法工程师一定要有一秒钟解决易题,基本能覆盖中题。
否则,说技能、话题、业务不匹配,只能是掩盖自己思维能力不足的借口。这个我做的还不够好,还需要改进。
PPT和写作能力。是的,没错。我要把这个放在技术文章里。因为写PPT真的是个技术活!看了群里大哥写的PPT,技术逻辑条理清晰,版面结构美观大气。没完没了的说PPT,最后真的是好莱坞大片,绝对的梦幻!作为一个有语言障碍的人,我很佩服也很羡慕这样的人。
不过我总结了一下老板的PPT和演讲。要做好一个PPT,尤其是技术型PPT,第一点就是要非常清楚自己的技术栈,技术能力是绝对必要的。还有文字,就是要用图片代替文字,不空洞,不夸张,更不要像学校课件那样的一些动态特效。技术人员的PPT只需要三点:逻辑清晰,内容丰富,一目了然。
审美方面,我从论坛和群里下载了高质量的PPT,分析了一下。只要有简单的背景,所谓的审美就要和文字、图标一起使用。多放一些条形图,折线图等。来说明你的工作,时间线报告应该用箭头来说明。这个PPT的东西需要积累模板,梳理逻辑,整理素材,抓住重点,自信表达。希望自己和观众先生们的PPT能力能不断提高。吃一会儿鸡无所谓,但永远不行动才是最可怕的。
前沿技术的跟进做算法,确实和其他行业有很大不同,算法的技术变化特别快。经常看前沿论文,可能不会直接用到,但还是需要考虑技术的优化细节是否会对现有项目有帮助。
不要说(不要总是用老方法做项目)来diss我。如果你这么想,你就用10年的算法,最近三年你不会看任何文章。当一个新的有价值的东西出来的时候,你就知道别人已经用上了,你就不会再读什么论文了。也会慢慢失去阅读和理解文献的能力,就像一个人长期不写代码就写不出代码一样。
现有技术方案的总结只是基于我比较了解的识别、检测、分割的一些总结。
一般的算法端优化是主干(大模型如Resnet Res Next Res Nest高效网,系列小模型如mobilenet hrnet shufflenet)、颈部(各种FPN层如FPN、BI-FPN、Panet)、更实用的网络优化(注意力结构如deform_conv、se-net、cbam)、头部优化(主要是目标设计)
比如检测锚基和无锚的区别就是在目标和输出之间加一个锚作为桥梁),训练策略优化(主要关注正负样本的平衡,损失函数设计,比如过采样,欠采样,损失函数比如FocalLoss,triplet_loss,训练过程比如OHEM等等).
训练参数的优化(CosineLearningRate等LR的优化,AutoAugment、Mixup、CutOut等数据增强的优化),预训练模型(基于无监督大数据Moco等)。高分辨率的pretrain,最差的是ImageNet-pretrain,在NLP中更好,CV中我更喜欢无监督或半监督的方法),新方案(变压器如ViT和DETR)
知识蒸馏,大模型蒸馏,小模型蒸馏,是每个公司都需要的技术栈。可以看到欣托的开创性工作。当时有多师、加权等各种方案。
最后,训练数据干净,可以覆盖不同场景。对于训练参数中的特定值,运行模型以查看效果。以上是我今年经验总结的算法优化方向,重点是总结方向。具体细节和方法太多,就不一一赘述了。
就今年的工作经验来看,很多情况下,不同算法方案的效果其实差别不大,这一点在我跑ATSS实验的时候更加确定。
但是有些东西比如attention_block,transformer,KD等。是真正的硬通货。做算法工程师最重要的素质就是了解海量的算法方案,吃透真正的干货,然后在实践中不断验证,总结吸收到自己的头脑中。
最后,工作是总结经验,改进提高的过程。人生也是如此。
猜您喜欢:
等你着陆!【GAN生成对抗网络】知识星球!
CVPR 2021 GAN的说话人驱动、3D人脸论文汇总
CVPR 2021 图像转换 今如何?几篇GAN论文
【CVPR 2021】通过GAN提升人脸识别的遗留难题
CVPR 2021生成对抗网络GAN部分论文汇总
经典GAN不得不读:StyleGAN
最新最全20篇!基于 StyleGAN 改进或应用相关论文
超100篇!CVPR 2020最全GAN论文梳理汇总!
附下载 《Python进阶》 中文版
附下载 经典 《Think Python》 中文版
附下载 《Pytorch模型训练实用教程》
附下载 最新2020粗暴的戒指 《动手学深度学习》
附下载 《可解释的机器学习》 中文版
附下载 《TensorFlow 2.0 深度学习算法实战》
附下载 超100篇!CVPR 2020最全GAN论文梳理汇总!