朋友们好,我是最新的YueTan。同样是一个数据挖掘工程师,但最近一年,却主要做了一些视觉项目,有成功部署的,也有失败没有销售出去只做了demo的。这也是我一直觉得工业算法对工程师不友好的地方,很大程度上,成功或失败不是取决于你,而是取决于商务。所以,在所谓的验收标准上,还是尽量按照自己的标准来,尽量给自己制定一个更高的标准。我的视觉知识很零散,东做一块,西做一块,有啥需求就去学一点,一直想找时间连成知识体系,所以这里先对之前的零散知识小结一下。不过工业算法对转行的人比较友好一些,尤其是机械、化工等知识正是工业中的业务知识,像我一样不年轻却决定开始编程的话,工业算法是一个不错的切入点。
这里简单回顾一下,最近完成的一个特别简单的质量预估项目中的经验。
经验
Image
做好数据和模型管理工作,同时也要做好模型和方法调研工作。我的小项目其实很特殊了,不是直接的分类、检测、分割任务,而是测量任务。分割的确可以作为辅助,但由于标注成本高,我尝试了开源模型之后,就决定根据规则做了。
自己要有快速线下测试方法,如果一张图片有问题,能快速定位算法问题出在哪一步。实际甲方很可能拿着单一图片来询问的时候,自己可以快速找到问题所在。
有针对不同场景的应对措施,有了一定经验之后可以根据不同场景设置不同的评价指标。例如光线干扰、车辆干扰。以及针对算法的对抗攻击手段,虽说不一定要专业攻防,但算法哪些地方容易被攻击到要提前了解一下,在分析bad case的时候可以快速有思路,也方便提前堵上漏洞
保证算法的下限。对于不同的场景,至少让上线的系统下限得到保证。这里也涉及到bad case的分析
业务与算法的平衡。由于算法上的没有免费午餐定理,所以一方面从具体业务入手;另一方面从任务优化入手,例如顶会和竞赛的分享。
保证输入质量。如果是人脸识别,在验证阶段有额外的模型保证录入图像的质量,其他场景不必这么严格,也必须保证输入的一致性以及质量。所以我是根据实际我获取到的几种失效形式,分别添加规则来检验
如果想在career上更进一步,需要对整个解决方案都很熟悉。包括方案选型、硬件选型、实施等,我时常发现对方询问我关于摄像头、服务器的采购参数时,关于如何架设摄像头或者激光雷达方案时,自己都是两眼一抹黑。
如何在验收方法上,设置为对自己有利的提议,除了技术上的下限外也要保证商业下限。
关于落地部署,简单的情形都不必用复杂的了。可以写一个包的形式,供后端同事调用。多摄像头对应的多线程也是写在了后端,保证好接口即可。
最后
我另一个感慨就是,一个好的开源项目真的能够帮助初学者,能让初学者立马上手。这个过程中,我尝试了一些语义分割的方法,有的开源真的很友好,有的一言难尽。回头想想自己的开源,虽然github也有两个上百star的项目,但都不完善、bug一堆,有的情况可能都没法成功运行。因此也决定接下来找时间,给自己的开源完善一下,像现在这样放上去,可能也是耽误大家时间。所以先把之前介绍的yolo完善一下了。