关于MNN框架推理的时候,通过调用库当中结构体的内容,可以切换选择创建Session的具体配置。关于结构的描述见官方文档:
官方文档——创建Session
CPU是编译的时候默认选择的配置方式,通过文档可知在结构体:
MNN::ScheduleConfig
当中有可以选择的2个成员,分别是:
type(配置方式)
numThread(设置并发数和线程数)
故我们在创建Session之前可以进行相应的配置,大体如下:
// 配置调度配置结构体,并手动设置CPU的并发数与线程数
MNN::ScheduleConfig barcodeConfig;
//barcodeConfig.type = MNN_FORWARD_VULKAN; // 使用GPU-VULKAN进行推理
//barcodeConfig.type = MNN_FORWARD_OPENCL; // 使用GPU-OPENCL进行推理
barcodeConfig.type = MNN_FORWARD_CPU; // 使用CPU进行推理
//barcodeConfig.numThread = 4; // 设置并发数和线程数
// 创建Session并传递配置
MNN::Session* barcodeSession = barcodeNet->createSession(barcodeConfig);
其中以下配置三选一,且在配置为CPU的时候可以进行配置并发数和线程数
//barcodeConfig.type = MNN_FORWARD_VULKAN; // 使用GPU-VULKAN进行推理
//barcodeConfig.type = MNN_FORWARD_OPENCL; // 使用GPU-OPENCL进行推理
barcodeConfig.type = MNN_FORWARD_CPU; // 使用CPU进行推理
如果选择了OPENCL配置方式,还需要电脑本身支持OPENCL,具体配置方式参照如下链接:
Windows OPENCV配置