YOLO多线程多模型运行模式的实施

Darknet深度神经网络学习框架具有小巧、快速的特点,由于采用c++进行编写,非常容易改为多线程执行,而用于检测、分类等任务。

在window环境中,其基本思路为:

1. 将检测,分类函数封装为可调用的动态库

2.动态申请network, 或固定长度 network数组

3.各network模型及权重文件根据不同的检测、分类的功能能需求动态加载,比如行人检测,特种车辆检测、声音分类,烟雾检测,人脸识别等等。

4.可加载摸型的数量有一定限制。对于使用GPU的版本,可加载模型的数量与GPU显存大小相关。比如yolo3的标准检测模型占用约1.5G。1060显卡有6G显存,可同时装载三个模型,并发运行三个检测线程。

5.从实际运行结果看,多模型共享显卡同时运行时,某个模型的运行速度要比独占显卡的运行速度慢些,以训练时的运行情况看,两个模型同时在一个显卡上训练,要比独占显卡训练慢1倍左右,这和磁盘读写及内存总线共享有关。而最终检测或分类时的数据均在内存中,速度影响会少很多。

6.对于多显卡的情况,采用多模型多线程并行运行的方式将充分挖掘显卡的计算能力,而装备了多GPU卡的计算机则无疑于一台小型的智能分析服务器。此时要注意计算机的通风和散热问题。

7.多模型多线程的运行模式可用于复杂系统分析,比如人脸检测、识别、表情分析等,无法由单个神经网络模型完成,需要多个网络串联分析推理并最终产生结果。如果该服务器要服务多个客户端,则多模型多线程运行模式将是基本的需求。

 

你可能感兴趣的:(YOLO多线程多模型运行模式的实施)