应用设计
下表总结了可能产生更快运行时性能的应用程序设计特征。提高性能的应用程序设计选择通常对系统行为的影响最小。
设计模式 | 为什么更快 | 最有价值选项 | 注意... |
---|---|---|---|
每个流使用少量工具。 |
根据工具返回的信息量,单个 Deep Learning 工具的处理时间不会出现明显变化。 例如,经过训练以找到 100 个不同特征的单个蓝色工具以与训练仅查找单个特征的工具相同的速度运行。此外,返回的特征数量仅产生最小的速度差异。 类似地,红色工具以相同的速度运行,而与它找到多少缺陷无关,并且绿色工具可以以相同的速度分为 2 个类或 200 个类。 |
使用单个工具开始构建应用。 |
|
避免图像转换。 |
在工具操作期间,必须对图像进行采样来供神经网络处理。此采样需要栅格(未压缩)格式图像,例如位图。执行此转换需要时间。 类似地,如果将工具配置为使用单通道(灰度)图像作为输入,但提供的图像是多通道彩色图像,则必须在运行时为每个图像计算亮度值。 |
尝试使用单通道灰度图像解决您的应用。 |
某些应用需要颜色信息。 |
减少处理数据量。 |
执行以下操作可减少处理数据的数量:
这些有助于通过减少要处理的数据总量来提高处理速度。 |
限制 ROI。 |
VisionPro Deep Learning 工具需要背景信息才能正常工作,因此尽量不要过多限制 ROI。 通常不需要欠采样(通过采样密度参数设置)。选择更大的特征尺寸,可以提高速度并且无需对运行时进行欠采样。 |
使用多个 GPU |
在具有多个 GPU 的系统上,同时处理多个流可以并行执行工具,从而提高吞吐量。 Note: 可以使用多个 GPU 跨流并行训练和处理多个工具。有关详细信息,请参阅配置多个 GPU。
在单 GPU 系统上,可以将系统配置为允许多个进程使用同一个 GPU。这样可以提高 GPU 占用率,并且可以提高吞吐量,但工具执行时间将增加。 |
使用 --max-process-count 命令行参数实现多线程访问单个 GPU。 使用本地控件的 GlobalConfig() 方法为运行时应用程序启用多进程 GPU 访问: control.GlobalConfig("max_process_count=2"); |
单个工具的处理时间将增加。 |
C ++(非托管) |
使用非托管语言环境可以缩短系统活动对工具执行的影响。 |
对于低延迟,高性能的应用,请不要使用 Cognex Designer。 |
Windows 不是实时操作系统 (RTOS)。 |
开发的一般技巧
这些主题提供了几个有用的提示和技巧,供您在开发 VisionPro Deep Learning 应用程序时参考。
开发 VisionPro Deep Learning 应用程序时,请考虑以下提示:
-
克隆工具以便对工具做 A 和 B 的比较。
通过克隆工具,您可以更改参数并重新训练,然后将原始工具与克隆工具进行比较,以查看工具参数更改的效果。
-
克隆流以执行图像集测试。
如果您有大量图像要用于测试,但又不想污染数据库,请克隆流并将图像添加到克隆中。然后,您可以处理当前工具状态以便进行测试。完成后,删除克隆的流。
-
不要为了“欺骗”工具而添加重复的图像。
这会对模型产生负面影响。如果您想增加特定图像的训练权重,请在高细节模式下使用绿色分类工具的“类权重”选项。
-
执行“引导程序”标注。
“引导程序”标注是指通过仅标注小样本量的图像来开始标注过程,然后训练工具,通过接受带有正确标记的视图以将其转换为标签来检查结果,最后删除错误标记并用正确的标签替换它们。通过将图像划分为多个视图并仅标注单个视图,可以进一步加快此过程。此外,还可以临时减少“Epoch 计数”参数(训练工具参数之一),这将缩短训练时间。