简述工具使用场景,最好可以给个示例应用
举一个简单的场景,比方说我的被拍摄物需要在多种打光环境下成像,效果如下图:


我需要用同一个task在两种场景下都能定位中间那个正方形的左侧直线,我们通过要求必须使用从浅到深的参数来模拟算法不够强大的场景,那么效果如下:


为了达到目的,我们决定加入预处理,它将判断如果左上角的灰度值较小,则使用取反后的图像进行定位;若灰度值较大,则使用原图进行定位。同时我们还需要将直线定位算法工具拷贝一份,这样两者才能使用不同的图片输入,同时还要添加各种执行条件使两者在不同场景下分别执行,最终还需要脚本来综合判断总结结论。

这还是简单场景,实际的检测过程中并不会只有一个直线定位工具,而是一条很长的工具链,这些工具链必须都要复制一份,甚至多份,才能达到我们的目的,这很不好。
所以现在引入了“择优”工具。
择优工具可以收集多个工具的输出,并根据条件决定往后传递哪一个。
在本例子中,我们将取反和缩放(用于取原图)工具的输出图像同时传给“择优”,模式选择“首个有效值”,其意为绑定的参数们哪个有效我就传递哪个。同时让取反、缩放工具的执行条件互斥,然后让直线定位工具的输入图片直接绑定“择优”工具的输出图。


这样,无论前序逻辑使得是否需要取反(预处理),最终都会由统一的出口流往后续的检测算法,不再需要拷贝多份相同的检测算法,也不需要处理过多繁琐的执行条件逻辑。


对于数值类型的依赖来源,“择优”工具还支持“最大值”“最小值”模式,可以筛选多个有效来源中的最大、最小值并往后传递。大家可以根据项目看看还有哪些常用的模式值得支持,我们在未来还会增加相关的功能。
原图:


2_择优.task