专业网站建设顾问,wordpress自动安装插件,网站开发广告宣传语,网站备案迁移文 | 皮特潘源 | CVer人工智能是近几年最火热的技术名词#xff0c;如果不谈人工智能相当于落伍#xff0c;但当真正进入人工智能领域时才发现#xff0c;一开始以为“拦路虎”是算法#xff0c;后面发现落地是一个巨大的难题。本文从作者的经历和经验教训展开#xff0c;… 文 | 皮特潘源 | CVer人工智能是近几年最火热的技术名词如果不谈人工智能相当于落伍但当真正进入人工智能领域时才发现一开始以为“拦路虎”是算法后面发现落地是一个巨大的难题。本文从作者的经历和经验教训展开阐述了在AI项目研发中的各个环节的重要细节点展现了一个AI项目到最终落地繁琐的过程。前言AI虐我千百遍我待AI如初恋。什么才是好AI答能落地的AI才是好AI。AI项目从无到有最终落地开花无非不是挖坑、踩坑、填坑的过程。本文从笔者的一些经历、经验、血泪教训展开说一下AI项目研发过程中的感想。被虐的案例案例1经过N次版本迭代与优化最终定稿。支持切换型号、云端训练、人工调参等貌似高大上的功能。最后才发现客户的要求是准确率100%。案例2样机各种灯光闪来闪去各种运动机构群魔乱舞。什么犄角旮旯都覆盖到什么划痕、残缺、脏污都面面俱到。但是一个产品的检测竟然要30s。到过一次生产现场才发现人工目检只需要2s。案例3光学、算法、界面都ok了。在热火朝天、干劲十足的准备推广成千上百套变现的时候客户说抱歉只要一套。案例4同上最终客户说你们这个产品真的很先进容我再考虑一下。当然是杳无音信。算是被耍呢还是算是白嫖呢案例5当我们正为识别准确率到达99%而欢呼雀跃的时候客户把一个识别成功的和一个识别失败拿到一起问这两个明明一模一样为啥这个失败了这个成功了案例6我去生产现场培训客户标注。他们非常配合找来的也是目检老手。我示范了几个后让他试试。他就是不肯搞到最后才知道额他不会用电脑案例7我们的算法好牛掰我们模型好先进。AI传统方法一起来搞完美。不过你需要调整这20个超参。人呢别走啊案例8已经上线运行了最后发现某一种型号的某一种缺陷打光不佳图像上很难判断。最终只能推倒重来。案例9没有意识到数据的重要性每次都是几张图片在测试结果是很完美最匆匆拍板上线。最终大批量测试的时候发现不work了。案例10算法ok部署效率也ok标注-训练-部署的闭环生态也ok。然后客户问每次更换型号能不能不训练为啥这么难工业AI尤其是缺陷检测这块都是硬骨头。虽然场景非常简单虽然数据都是源源不断虽然算法都是非常纯粹。但是其需求太分散了不是不能做而是值不值得去做。因为你要面临以下问题说不清道不明、模棱两可的标准。某些难以量化的标准。频繁变更的需求难以做到只靠调后处理参数就能快速响应。频繁更换型号的场景留给你训练的时间不多。甚至无法提供良好的训练环境。立体的产品各种吃光照吃视角的缺陷极其微弱的缺陷。难以保证的样本一致性问题这是你过拟合的根源。准确率能不能到100%真的有人可以拍板保证吗有没有人工做的更快有没有人工费用更便宜需要配合繁复的硬件设备尤其是运动设备。如何才能保证整套设备的稳定性同上难以保证的硬件可复现性。甚至一机一模型你都要谢天谢地更不要说通用。后期维护成本问题由于涉及的环节太多需要“全才”才能搞定。一般流程AI要敏捷开发更要方法论更更要稳定的开发流程。这里要提的是工业场景的AI不过是整套系统中的一个小小组件你一定不会靠单纯的AI去make money。即便如此AI从无到有依然经过以下几个环节需求阶段包括场景分析、问题定义、可行性分析。很多任务都是从该阶段直接进入end。这个是好事一定不要盲目自信和盲目乐观。所谓一叶障目不见泰山只看到算法容易实现就忽略以上的问题最后只能惨淡收场。最怕投入太多沉没成本之后想收场却不甘心。什么是需求什么是真正需求什么是隐藏着等待发掘的真正需求。很多时候和客户一起聊需求的时候他们给不出明确的需求。最简单直接的办法就是深入参观他们的生产现场。和工人融到一起学会他们的判断标准。为他们发掘需求尤其是下面几点必须提前明确清楚什么是绝对不能容忍的错误一旦出现就是质量事故。我们要知道算法的下限在哪里。涉不涉及更换型号能否提供符合模型训练的场景要求比如至少得有GPU吧或者可以上网进行云端训练。对时间上的要求很多替换人工工位都要要求比人更快。我们要知道系统的物理极限例如运动设备。对于算法难以界定的灰色地带接不接受人工二次复检。对于不work的个例我们要有backup。其他都比较直白对于第二点说明一下。大家想必都知道我们做算法复现的时候训练部分比推理部分要困难好几个等级。同理上线部署的时候如果涉及用户自己训练那么难度就上来了。要把标注、数据处理、训练参数、测试评估等整个闭环生态都打包在一起还要实现全自动化。一旦某一个环节出问题那么足够你手忙脚乱。甚至会遇到诸如用户电脑不能上网没有GPU的情况没有错即便是你提训练必须条件他也不一定会给你配到。以上这几点一定要仔细论证全局论证反复论证。论证不是内卷不是效率不高不是执行力不高。没有详细论证而匆匆上马的项目一般后期有无数个坑在等着你。打光阶段包括光学设计、成像分析当然还包括不是那么AI的结构设计等。俗话说七分靠打光三分靠调参。打光非常重要因为后续算法只能为图片负责。一般我会用“明显”和“明确”来进行可行性分析“明确”来自需求而“明显”就是来自光学。最直观的判断就是人肉眼能否通过图片进行精准判断。如果存在模棱两可的部分那么它也将成为算法模棱两可的地方。数据阶段包括数据采集、数据标注、数据处理。数据的重要性不言而喻正所谓七分靠数据三分靠trick。数据到位了一切都好说。数据的重要性想必是任何一个从业人员都深有体会的。我们要数据要有效的数据。没有数据的场景抱歉请用传统方法。要记住模型泛化没那么重要当然模型也没有那么强的泛化能力。它之所以能够识别那是因为它见过。将模型理解成一个存储器而不是泛化器。之前的你需要建立数据库来存储数据用以测试时的比对现在的你模型就是你的数据库。数据标注就会涉及标准的定义很多时候很难拿到清晰的标准。或者说无法量化为清晰的标准。往往会存在灰色地带这就要提前有一个清晰的认识。对于灰色地带的处理或者说客户的容忍要提前想好策略。这里比较困难的是灰色地带可能很难量化出来我们只是知道这个样本是灰色地带到底有多灰have no idea。另外比较重要的是尽快建立稳定的、有代表性的数据集合尤其是测试集这点非常重要。这是你数据的baseline可以帮助非常敏捷进行后续的benchmark实验。如果你不知道你对什么样的最终结果负责那么你将永无止境的做下去。算法设计阶段包括任务定义、任务拆分、模型选择。尤其是任务拆分你不肯定把所有的大象都装到一个冰箱里面你也不可能把所有的鸡蛋放到一个篮子里面。杜绝唯模型论 SOTA 论。我们需要的是在特定场景下解决特定的问题。这里涉及学院派思维转变学院派的高手为imageNet和COCO等数据集负责而我为我自己的场景和数据集负责。SOTA看中的是模型的上限而实际的场景看中的是模型的下限。杜绝唯AI论。不管传统方法还是AI方法能work的就是好算法。如果传统方法没有明显的缺陷那么请选择传统方案。或者你可以这么认为当前看似高大上的AI并不是真正的AI或许30年后一天你会说先用传统方法YOLO V28 来试一下吧训练评估阶段包括模型调参、模型训练、指标评估。所谓的“炼丹”。前几步做好了一般不会有太大问题如果有请向前追溯。还是那句话建立好baseline逐步提升。这里要说一句“提前优化是万恶之源“。在保证精度的时候再去考虑速度再去做优化。当然你靠58个模型联合起来获取的精度不在该讨论范围。部署阶段这个阶段坑比较多基本上都是技术方面。也是所谓的“脏活”。包括模型优化、跨平台前向推理、模型加密。终于到部署阶段了也看到了落地的曙光。关于深度学习人工智能落地已经有有很多的解决方案不论是电脑端、手机端还是嵌入式端将已经训练好的神经网络权重在各个平台跑起来应用起来才是最实在的。不过依然存在这么多工作需要做跨平台可跑目标硬件上包括各类cpu/gpu/npu/fpga等等。高效能速度快、占用内存少等。精度没有丢失经过一通量化、剪枝、蒸馏、图优化等操作后终于满足时间要求了却然发现部署测试精度掉了一半WTF。加密需求你一定不希望自己辛辛苦苦搞出来的成果被别人白嫖吧闭环生态当然你不能一劳永逸怎么在应用中收集样本更新系统。你需要作成实用、好用的闭环工具链。运维阶段包括运行监控、模型更新等。你以为可以松一口气了然而并没有。能不能经受海量产能和时间的考验请瑟瑟发抖地注视着吧运维的核心就是保证业务安全稳定运行。上面提到AI泛化能力还是比较欠缺的所以很可能会在实际运行的过程中遇到不work的情况。当然最最直接的办法就是持续不断扩充数据。当然要保证你的模型有足够的capacity如果没有那么就是算法设计环节没有做好。收集数据利用上面部署阶段所说的闭环生态工具链来持续完成这个事情。后台回复关键词【入群】加入卖萌屋NLP/IR/Rec与求职讨论群后台回复关键词【顶会】获取ACL、CIKM等各大顶会论文集