配置非常复杂的灵闪Task时有什么建议?

Viewed 62

当面对一个极其复杂的视觉项目时,很可能我们会在一个Task中添加几百甚至上千个算法工具。这时,怎么做才能让这个Task的配置内容更可读?

1 Answers
  1. 合理地封装文件夹:
    文件夹作为算法工具的组别,很大程度上直接展示了task中最主要的逻辑,使读者可以在不进行深入阅读的情况下,对task的目标、主要工作流程有一个大体的认知,并且降低了模块间的耦合程度,有助于分步阅读、快速定位。比较常见的分文件夹的方式有:
    1-1 按工作步骤,如:预定位、预处理、精定位、数据后处理等。按步骤进行划分,有助于快速定位到需要找到的算法工具;
    1-2 按检测目标,如:不同的缺陷类型、不同的特征位置、定位或是测量等;
    1-3 按处理手段,如:传统算法和深度学习算法区分等;
  2. 合理地命名算法工具:
    算法工具的名称应避免如“直线定位”“直线定位_2”“直线定位_3”这种意义不明的,其名称应该能够说明其存在的意义,如“直线定位_预定位”“形态学_闭_去除干扰”,这在task配置过程中选择参数时也非常有帮助。比较统一干净的命名,还可以方便后期批量替换工具名称。
    关于名称过长的问题,由于灵闪鼠标悬停在结果树的算法工具上时会显示其类型,因此命名中的类型名不一定需要,或者可以折中地将“直线定位_预定位”缩写为“直线_预定位”;
  3. 将重复的流程或结构封装成工艺工具:
    工艺工具本质上是对多个功能相同的算法工具进行封装,使整个task的复杂度降低。一般task中之所以有成百上千个算法,正是因为很多算法工具工作相同但是无法复用,只好反复复制。优雅地使用流程控制工具和工艺工具能够从根本上缓解这一问题;
  4. 在脚本工具中写适量的注释:
    灵闪的脚本中集成了python的引擎,因此其功能非常强大,但也正因如此使很多不便于配置的逻辑都使用脚本进行处理,这便增加了脚本的体量及阅读成本。因此添加适量注释能够降低脚本阅读的难度,增加其可维护性。与python相同,在编辑框中加入#即可作为注释,且基本不会影响task运行。