首页 文章详情

当下人工智能行情,算法小白的反思

公众号CVer | 244 2021-09-07 10:09 0 0 0
UniSMS (合一短信)

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

作者:凤舞九天 |  已授权转载(源:知乎)

https://zhuanlan.zhihu.com/p/406608513


行情现状

人工智能在经历了几年的火热行情之后,虽然如今论文仍然是满天飞的状态,但是技术本身已经接近瓶颈,每年比较有影响的新技术其实并不多,而且由于落地、变现等种种困难,人工智能已经大不如前,再加上如今的互联网行业大整顿,更是雪上加霜。自己作为一枚算法小白,对目前行业的收紧也是深有体会,这里记录下自己工作中的思考和总结。

算法小白的三板斧

算法工程师作为一个技术岗位,即便是小白的初级算法工程师,仍然是有技术门槛的。我们闲聊的时候,经常开玩笑说我们像程咬金一样也有三板斧。分别是数据、backbone 和 loss。其实还有两个半招,跑开源算法和badcase分析。

1. 数据。虽然不愿意承认,深度学习作为数据驱动的算法,在人工智能项目落地中,数据往往起着决定性因素,因此在日常工作中,相当一部分时间是在处理数据。当然处理数据也是一门学问,除了明确任务目标和任务标准之外,刚入行的人大多就是直接准备好数据送标。但其实很多时候为了节省标注时间和标注成本,降低标注难度,往往需要算法工程师对待标注数据做预处理。比如做人脸识别,往往需要先对人脸图像进行特征提取,然后进行聚类,只需要人工剔除聚类结果的离群点即可。其次,造数据、数据增强、数据清洗等等一系列手段也是围绕数据来进行模型调优的方式,这些方式都会涉及算法和人工的交互,往往会得到可观的收益。

2. backbone。从Lenet到Alexnet,从Vgg到resnet,再到resnest,无脑升级backbone,开发成本最低,收益也很可观。一般情况下,升级模型的backbone都会得到不错的正向收益。如今Transformer大行其道,类似于VIT以及其改进版本的各种基于Transformer的新backbone再次刷新了imagenet 指标。每年都会有不同的backbone结构被提出来,有些模型是从速度耗时角度出发来优化的,有些是从效果的效果进行调整。

3. loss。loss调整起来比较容易,基本上loss就是直接替换就能用。比如在目标检测里常用的focal loss,giou loss 等等,都是对最初loss的改进。除了对loss直接做改进之外,还可以多加一些loss。比如之前提过的人脸识别,如今的人脸识别更多的是采用embedding的方案,所以在训练的时候除了常见的CE loss之外,往往还会联合triplet loss和center loss一起训练,当然也有一些比如arcface 的新loss,专门用于人脸识别。在曾经的一个脏数据比较多的项目上,自己也用过一些对噪声鲁棒的loss,效果也不错。

4. 两个半招。首先是开源代码,很多人发完文章之后会将代码开源,这样一来,自己在做一个新领域的项目的时候,直接clone 开源代码来跑自己的数据性价比就很高了,还有就是自己的模型已经迭代了几个版本,继续调优的难度比较大,这时候可以看看有没有新论文,新方案,特别是有开源代码的方案,实验的成本并不高,之前提到的小修小改大家都可以完成,而如果是自己对算法模型进行比较大的升级改造,往往难度比较大,成本也比较高。其次是badcase分析,做业务不可避免会遇到badcase,像我们这边会有专门的badcase收集机制,然后集中分析一波badcase,看有哪些共性的问题,比如图像模糊问题、目标检测小样本、长尾样本,数据分布不均匀等等,分析有没有哪些问题相对容易解决,带着问题去调整算法。

以上就是小白算法工程师的三个大招和两个半招,一套组合拳下来,基本上能将算法模型较最初的baseline有大幅提升。

算法小白的反思

除了分享模型调优的三板斧之外,这里同样有一些反思。

1. 模型常用trick。模型优化其实还有很多trick,比如加数据,数据增强,学习率warmup,label smooth、pretrain,多任务联合训练等等。

2. 代码规范。一定要主要代码规范,在开始的时候为了快速实现功能往往不注意代码规范,甚至有些代码像shit一样,这样容易写bug不说,后面自己看起来也十分麻烦,往往很难看懂。特别的,其实很多小函数往往很多地方都会用到,如果平时注意代码规范,很多时候可以复用之前的老代码,也会方便很多。

3.项目沟通、对接。一个项目,通常不是自己一个人单打独斗,而是几个人合作完成。如果是部门内合作,大家做好分工就还好,但是很多时候还会涉及到跨部门合作,这个时候项目沟通、对接就显得尤为重要,当然跨部门合作不可避免会涉及到扯皮、甩锅等等,自己心中要有数。

4. 对某一领域要有深度。刚入门的小白可以靠三板斧,但是工作五年甚至十年呢?如果是一年经验用五年那么这样自己是没有任何竞争力的。自己身边不乏优秀的朋友或同事,即便没有论文,但是他们对特定的领域与会有独到的见解,常用的算法也是了如指掌。

5. 要懂业务、懂系统。算法终将服务于业务,而业务需要的也并不是最优的算法,而是最合适的算法。不同的业务场景下,相同的模型表现也会有很大的差异。同样地,算法不能解决所有的问题,很多时候策略、逻辑不可避免,甚至是各个模块,各个模型组成一个复杂的系统,所以要懂业务,懂系统,从业务、系统的角度出发,远比单模型调来调去有效得多。

6. 要有工程部署能力。算法工程师虽然说大多数时候都是在离线调模型,但是也是需要有工程部署能力。因为模型、算法最终是要上线,而部署的时候可能会遇到各种各样的问题,包括线上也可能会有各种各样的问题,算法工程师也要有解决这些问题的能力。

算法小白的总结

要学会选择,包括公司,包括方向,现如今,选择往往大于努力,要选择一个长期发展的公司,选择一个长久的方向。

要善于思考,规划,总结。所谓磨刀不误砍柴工,不要来一个需求上来就写代码,要做好需求分析,之后要自己做好调研,要有自己的思考,正式开始之前要有规划,阶段性结果要有总结。

要坚持锻炼,劳逸结合。身体是革命的本钱,不能加班熬坏了身体。



ICCV和CVPR 2021论文和代码下载


后台回复:CVPR2021,即可下载CVPR 2021论文和代码开源的论文合集

后台回复:ICCV2021,即可下载ICCV 2021论文和代码开源的论文合集

后台回复:Transformer综述,即可下载最新的两篇Transformer综述PDF


重磅!Transformer交流群成立


扫码添加CVer助手,可申请加入CVer-Transformer微信交流群,方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。


一定要备注:研究方向+地点+学校/公司+昵称(如Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加小助手微信,进交流群

▲点击上方卡片,关注CVer公众号

整理不易,请点赞和在看

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter