作者丨皮特潘@知乎
来源丨https://zhuanlan.zhihu.com/p/336671388
编辑丨极市平台
AI虐我千百遍,我待AI如初恋。什么才是好的AI?答:能落地的AI才是好AI。AI项目从无到有,再到最终落地,无非不是挖坑、踩坑、填坑的过程。本文从笔者的一些经历、经验、血泪教训展开,说一下对AI项目研发过程中的感想。
工业AI,尤其是缺陷检测这块都是硬骨头。虽然场景非常简单,虽然数据都是源源不断,虽然算法都是非常纯粹。主要是其需求太分散了,不是不能做,而是值不值得去做。因为你要面临以下问题:
AI要敏捷开发,更要方法论,更更要稳定成熟的流程。
这里要提的是,工业场景的AI不过是整套系统中的一个小小组件,你一定不会靠单纯的AI去make money。即便如此,AI从无到有,依然经过以下几个环节:
包括场景分析,问题定义,可行性分析。很多任务都是从该阶段直接进入end。这个是好事,一定不要盲目自信和盲目乐观。所谓一叶障目不见泰山,只看到算法容易实现就忽略以上的问题,最后只能惨淡收场。最怕投入太多沉没成本之后,想收场却不甘心。
什么是需求,什么是真正需求,什么是隐藏等待发掘的真正需求。很多时候,和客户一起聊需求的时候,他们给不出明确的需求。最简单直接的办法就是,深入参观他们的生产现场。和工人融到一起,学会他们的判断标准。为他们发掘需求,尤其是下面几点必须提前明确清楚:
其他都比较直白,对于第二点说明一下。大家想必都知道,我们做算法复现的时候,推理部分比训练部分要容易好几个等级。同理,上线部署的时候,如果涉及用户自己训练,那么难度就上来了。要把标注、数据处理、训练参数、测试评估等都打包在一起,还要实现全自动化。甚至会遇到诸如用户电脑不能上网&没有GPU,没有错,即便是你提训练必须条件,他也不一定会给你配到。
以上这几点,一定要仔细论证,全局论证,反复论证。论证不是内卷,不是效率不高,不是执行力不高。没有详细论证而匆匆上马的项目,一般后期有无数个坑在等着你。
包括光学设计,成像分析,当然还包括不是那么AI的结构设计等。俗话说:七分靠打光,三分靠调参。打光非常重要,因为后续算法只能为图片负责。一般我会用“明显”和“明确”来进行可行性分析,“明显”就是来自光学。最直观的判断就是,人肉眼能否通过图片进行精准判断。如果存在模棱两可的部分,那么它也将成为算法模棱两可的地方。
包括数据采集,数据标注,数据处理。数据的重要性不言而喻,正所谓:七分靠数据,三分靠trick。数据到位了,一切都好说。数据的重要性,想必是任何一个从业人员都深有体会的。我们要数据,要有效的数据。没有数据的场景,抱歉请用传统方法。要记住,模型泛化,没那么重要,当然模型也没有那么强的泛化能力。它之所以能够识别,那是因为它见过。将模型理解成一个存储器,而不是泛化器。之前的你,需要建立数据库来存储数据用以测试时的比对,现在的你,模型就是你的数据库。
数据标注就会涉及标准的定义,很多时候很难拿到清晰的标准。或者说无法量化为清晰的标准。往往会存在灰色地带,这就要提前有一个清晰的认识。对于灰色地带的处理,或者说客户的容忍,要提前想好策略。这里比较困难的是,灰色地带可能很难量化出来,我们只是知道这个样本是灰色地带,到底有多灰,have no idea。
另外,比较重要的是尽快建立稳定的、有代表性的数据集合,尤其是测试集,这点非常重要。可以帮助非常敏捷进行后续的benchmark实验。如果你不知道你对什么样的最终结果负责,那么你将永无止境的做下去。
包括任务定义,任务拆分,模型选择。尤其是任务拆分,你不肯定把所有的大象都装到一个冰箱里面,你也不可能把所有的鸡蛋放到一个篮子里面。
杜绝唯模型论 & SOTA 论。我们需要的是在特定场景下解决特定的问题。这里涉及学院派思维转变,学院派的高手为imageNet和COCO等数据集负责,而我为我自己的场景和自己数据集负责。SOTA看中的是模型的上限,而实际的场景,看中的是模型的下限。
杜绝唯AI论。不管传统方法还是AI方法,能work的就是好算法。如果传统方法没有明显的缺陷,那么请选择传统方案。或者你可以这么认为,当前看似高大上的AI并不是真正的AI,或许30年后一天,你会说:先用传统方法YOLO V28 来试一下吧!
包括模型调参,模型训练,指标评估。所谓的“炼丹”。前几步做好了,一般不会有太大问题,如果有,请向前追溯。这里要说一句,“提前优化是万恶之源“。在保证精度的时候,再去考虑速度,再去做优化。当然你靠58个模型联合起来获取的精度不在该讨论范围。
这个阶段坑比较多,基本上都是技术方面。也是所谓的“脏活”。包括模型优化,跨平台前向推理,模型加密。终于到部署阶段了,也看到了落地的曙光。关于深度学习人工智能落地,已经有有很多的解决方案,不论是电脑端、手机端还是嵌入式端,将已经训练好的神经网络权重在各个平台跑起来,应用起来才是最实在的。不过依然存在这么多工作需要做:
跨平台:可跑目标硬件上,包括各类cpu/gpu/npu/fpga等等。 高效能:速度快、占用内存少等。 精度没有丢失:经过一通量化、剪枝、蒸馏、图优化等操作后,终于满足时间要求了,却突然发现部署测试精度掉了一半,WTF。 加密需求:你一定不希望自己辛辛苦苦搞出来的成果被别人白嫖吧! 闭环生态:当然你不能一劳永逸,怎么在应用中收集样本,更新系统。你需要作成实用、好用的闭环工具链。
包括运行监控,模型更新等。你以为可以所以口气了,并没有。能不能经受海量产能和时间的考验,请瑟瑟发抖地注视着吧!运维的核心就是保证业务安全稳定运行。上面提到,AI泛化能力还是比较欠缺的,所以很可能会在实际运行的过程中遇到不work的情况。当然最最直接的办法就是持续不断扩充数据。当然要保证你的模型有足够的capacity,如果没有,那么就是算法设计环节没有做好。收集数据利用上面部署阶段所说的闭环生态工具链来持续完成这个事情。至此,你的AI项目已经落地。
End
本文仅做学术分享,如有侵权,请联系删文。
下载1
在「3D视觉工坊」公众号后台回复:3D视觉,即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。
下载2
在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总,即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。
下载3
在「3D视觉工坊」公众号后台回复:相机标定,即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配,即可下载独家立体匹配学习课件与视频网址。