入坑机器视觉后,发现在开发与使用过程中总有各种bug导致系统的不稳定,故总结之,以此为鉴,谨记勿犯!
设定明确的边界条件
机器视觉或者说现在的人工智能,还没有做到完全的智能,所以在生产实践中更好的方法是在特定的条件下开发特定的算法,将算法框定在一个明确的范围内时,那么算法将变的更加robust,否则脆弱不堪,应用某visioner的话,这样的算法非常weak。在此基础上,小心迭代扩大算法的适用场景与范围是明智之举。设计算法不考虑特定应用场景、没有明确边界条件、没有前提假设,这是新手常犯的错误,避之免之。
赋予任何参数以明确的物理意义
由于机器视觉的处理结果与实际物理环境紧密相连,参数作为设计算法时的重要变量,一定要赋予实际的物理意义,做到有理可依,有时候凭借经验设置的参数值也许仅仅适用于某一物理尺度,当环境改变时,这样的参数将失效并且这样的问题也往往不容易察觉,给算法带来不稳定的隐患。虽然在调试深度学习时,有的参数确实是凭借经验,无法解释,但是设计传统算法时还是要遵循此原则。
遵循软件工程的原则开发
这条规则不仅仅适用于机器视觉软件、其他软件开发也同样适用于非软件的其他工程项目开发。我在菜鸟季经常犯的错误是,短时间内不断的在原有算法基础上增加大量功能,贪图省时省事(有时候是时间紧急、迫不得已!),没有对每一个功能模块进行单体测试,开发完成后直接进行结合测试。这样的测试是低效的、不完整的,日后会有各种bug暴露出来,按软件工程原则开发、有节奏的开发,将带领你走出新手村。
重视现场
机器视觉是一个与现场结合非常紧密的学科或者工作,并且相比计算机视觉,机器视觉需要高度的稳定性,所以要充分积累现场的经验,结合现场往往会带来算法上的简化与稳定,带来开发效率的提升,所以现场是宝库,积累经验升级自己,具体实例等待各位machine visioner去现场体验。
提升创造力
经验与创造力是驱动机器视觉能力的两架马车,如果仅仅只是经验的增长,就不能灵活应对未来各种各样的任务,在机器视觉智能化的道路上不会走远。提升创造力的关键在于涉猎与思考,不断涉猎与之相关的大量的知识,各种信息在头脑中碰撞产生创造力的灵感,思考如何应用于实践,这将对提升创造力大有裨益。
选择好的工具
选择一个好的机器视觉开发工具会使工作事半功倍