OpenCL-Darknet: An OpenCL Implementation for Object Detection【翻译】

在这里插入图片描述

摘要
目标检测是一种识别目标类别及其位置的技术。它被应用于许多不同的领域,如面部检测数码相机、监视工具或自动驾驶汽车。目前,基于深度学习的目标检测方法已经取得了明显优于经典的基于特征的算法的性能。Darknet[1]是一种基于深度学习的目标检测框架,以其速度快、结构简单而著称。不幸的是,和许多其他框架一样,Darknet只支持NVIDIA CUDA[2]来加速计算。因此,用户只能选择有限的图形卡。开放运算语言™ (开放计算语言)[3]是异构系统跨平台并行编程的开放标准。它不仅可用于CPU、GPU(图形处理单元),还可用于DSP(数字信号处理器)、FPGAs(现场可编程门阵列)和其他硬件加速器。在本文中,我们提出了OpenCL Darknet,它将基于CUDA的Darknet转换为一个开放的标准OpenCL后端。我们的目标是实现一个基于深度学习的对象检测框架,该框架将可用于通用加速器硬件,并实现与原始CUDA版本相比具有竞争力的性能。我们使用VOC 2007数据集[4]评估了AMD R7集成APU(加速处理单元)与OpenCL 2.0和AMD Radeon RX560与OpenCL 1.2的OpenCL暗度。我们还比较了它的性能与原始的黑暗为英伟达GTX 1050与CUDA 8.0和cuDNN 6.0。

一、 导言
目标检测是一种识别目标类别及其位置的技术。许多领域,包括人脸检测、监视和自动驾驶汽车的视觉系统,都需要对象检测作为其核心功能。经典的目标检测系统采用基于特征的方法,如Haar特征提取[5],方向梯度直方图(HOG)和线性支持向量机(SVM)算法[6]。近年来,深度学习被应用到目标检测中,并取得了显著的精度提高。为了执行深度学习算法,发布了各种深度学习框架。Darknet[1]是应用最广泛的目标检测框架之一。它以处理速度快、结构简单著称。不幸的是,与许多其他框架一样,Darknet只支持NVIDIA
CUDA[2]来加速其深度学习计算。由于这个原因,用户只有有限的图形卡选择选项,这导致她有限制的系统配置。

开放运算语言™ (open computing language)[3]是一种用于异构系统跨平台并行编程的低级开放标准API。它与CUDA类似,但不仅可用于CPU和GPU(图形处理单元),还可用于DSP(数字信号处理器)、FPGAs(现场可编程门阵列)和其他硬件加速器。在本文中,我们提出了OpenCL Darknet,它将基于CUDA的Darknet转换为OpenCL后端。我们的目标是实现一个基于深度学习的对象检测框架,该框架可用于通用加速器硬件,并实现与原始CUDA版本相比的竞争性能。我们使用VOC 2007数据集[4]评估了AMD R7集成APU(带OpenCL 2.0的加速处理单元)和AMD Radeon RX560带OpenCL 1.2的OpenCL暗度。我们还比较了它的性能与原始的黑暗为英伟达GTX 1050与CUDA 8.0和cuDNN 6.0。
我们的主要贡献如下:
**·**实现一个基于深度学习的对象检测框架,该框架可用于开放式异构体系结构标准OpenCL
**·**在AMD R7 APU和AMD Radeon RX560两种不同的GPU配置上演示了该框架的有效性,并将其性能与NVIDIA GTX 1050进行了比较。

二 相关工作
OpenCL-caffe[7]将基于CUDA的caffe深度学习框架转化为基于OpenCL的框架。他们描述了保证算法收敛的OpenCL移植策略,并检查了性能瓶颈。他们还提出了三个关键的优化技术:内核缓存以避免OpenCL在线编译开销;批量方式数据布局以提高数据并行性;多命令队列以提高任务并行性。

clSpMV[8]在OpenCL中优化了线性代数中的一个关键运算SpMV(稀疏矩阵向量乘法)核。他们提出了一种新的稀疏矩阵格式,鸡尾酒格式,利用许多不同稀疏矩阵格式的优点。他们发现clSpMV在NVIDIA和AMD平台上都提供了输入稀疏矩阵的最佳表示。

有几个工具可以帮助将CUDA程序移植到OpenCL[9][10][11]。在这项研究中,我们没有使用它们,因为它们是通用工具,与大型程序不兼容。但是,我们计划利用它们来生成参考代码。

三、 移植策略
Darknet框架最初是用C和CUDA编写的。CUDA和OpenCL有不同的硬件抽象、内存管理和数据传输机制。首先,我们针对的是分层移植。Darknet中的每个层都有CPU和GPU实现,用户可以通过编译器选项选择一个。为了保持每一层的正确性,我们通过运行带有多个图像的CPU实现来收集一层输入和输出的临时数据。然后,我们构建了一个测试框架,用这些数据验证每个层的OpenCL实现。接下来,我们用OpenCL内核替换CUDA内核。

对于卷积层,我们使用clBLAS的clBLASs GEMM函数来实现GEMM(通用矩阵矩阵乘法)[12]。我们还使用clRNG在OpenCL设备上并行生成随机流数组[13]。基本的算术函数也被移植到OpenCL中。它们包括填充、缩放和标准化矩阵。我们需要转换简单的层,比如激活到OpenCL,以减少主机和设备之间不必要的数据传输。不仅需要实现深度学习层,还需要实现前处理和后处理功能。

在本研究中,我们只实作一般推论情形的技术。几乎所有的嵌入式设备都只需要运行推理过程。大型集群负责培训。

四、 绩效评估
我们评估了OpenCL Darknet在不同GPU配置的AMD嵌入式板上的性能。由于深度学习处理不仅受GPU加速的影响,而且受CPU计算的影响,所以除了离散GPU卡外,我们保留了相同的硬件配置。AMDR7集成在AMD嵌入式RX-421BD芯片中,称为APU(加速处理单元)。在APU环境中,CPU核和GPU核在内部连接并共享主存。AMD Radeon RX560和NVIDIA GTX 1050是通过PCI Express接口连接的分立GPU卡。当我们使用离散GPU时,我们关闭了集成GPU。

表1显示了我们的测试平台规范。表II、表III和表IV显示了目标GPU和软件配置的规格。
在这里插入图片描述
我们测试的检测模型是YOLOv2和TinyYOLO[14],用于公共可用的PASCAL VOC2007(Visual Object Classes Challenge 2007)[4]测试数据集。VOC2007包含4952个图像和20个要识别的类。在图1中,可以看到使用OpenCL-Darknet使用YOLOv2检测VOC2007的一个结果。YOLOv2和TinyYOLO使用VOC2007和VOC2012训练数据集进行训练,VOC2007上的平均精度分别为78.6%和57.1%。
在这里插入图片描述
如图2和图3所示,我们还比较了使用CUDA和不使用cuDNN的Darknet的性能。它们是使用cuDNN性能归一化的每张图像的平均时间消耗。图2是YOLOv2的结果,图3是TinyYOLO的结果。我们分两步研究了性能。第一个是用深度学习网络进行推理,第二个是计算边界框。目前,OpenCL Darknet的性能远远低于其竞争对手的CUDA版本。与CUDA和cuDNN相比,OpenCL Darknet的YOLOv2和TinyYOLO的性能差距分别为2.5x到4.4x和3.2x到6.4x。
在这里插入图片描述
这一比较的目的是进一步研究优化方向。如图4所示,深度学习网络计算是主要的时间消费者。它消耗的时间是边界框处理的10到23倍。因此,减少深度学习网络计算时间是最重要的优化方向。我们期望更复杂的优化将减少当前的性能差距。此外,使用OpenCL将有助于现场可编程门阵列(FPGA)的应用,并且与GPU相比将降低成本。我们将在今后的工作中研究这些方面。

五、 结论
在本文中,我们提出了OpenCL Darknet,它将基于CUDA的Darknet(一个基于深度学习的对象检测框架)转换为一个开放的标准OpenCL后端。我们的目标是为通用加速器硬件实现一个基于深度学习的对象检测框架,并实现比原始CUDA版本更具竞争力的性能。我们使用VOC 2007数据集评估了AMD R7集成APU与OpenCL 2.0和AMD Radeon RX560与OpenCL 1.2的OpenCLDarknet。我们还比较了它的性能与原始的黑暗为英伟达GTX 1050与CUDA 8.0和cuDNN 6.0。

作为未来的工作,我们将使用分析工具优化OpenCL Darknet,以确定瓶颈。OpenCL通常被称为慢于CUDA[15]。但是,由于OpenCL支持各种类型的硬件,因此我们可以用OpenCL制作一个更具成本效益的深度学习框架。我们计划利用FPGA来降低运行目标检测系统的成本。

致谢
这项工作得到了韩国政府资助的信息与通信技术促进研究所(IITP)的资助(编号:2016-0-00004,开发支持自动驾驶汽车实时传感器融合处理的驾驶计算系统)。

REFERENCES
[1] J. Redmon, Darknet, https://github.com/pjreddie/darknet
[2] NVIDIA, CUDA Technology, http://www.nvidia.com/CUDA
[3] The Khronos Group Inc, OpenCL, https://www.khronos.org/opencl
[4] M. Everingham, L. Van~Gool, C. K. I. Williams, J. Winn, and A.
Zisserman, “The PASCAL visual object classes challenge 2007
(VOC2007) results,” http://www.pascal-network.org/challenges/VOC
/voc2007/workshop/index.html
633
[5] P. Viola, and M. Jones, “Robust real-time object detection,”
International Journal of Computer Vision, vol. 57, issue 2, 2004, pp.
137-154, https://doi.org/10.1023/B:VISI.0000013087.49260.fb
[6] N. Dalal, and B. Triggs, “Histograms of oriented gradients for human
detection,” Proc. IEEE Computer Society Conference on Computer
Vision and Pattern Recognition (CVPR 05), San Diego, CA, USA,
2005, pp. 886-893. vol. 1, doi: 10.1109/CVPR.2005.177 2005.
[7] J. Gu, Y. Liu, “OpenCL caffe: Accelerating and enabling a cross
platform machine learning framework,” Proc. the 4th International
Workshop on OpenCL (IWOCL 16), Vienna, Austria, 2016, pp. 8:1-
8:5, doi: 10.1145/2909437.2909443.
[8] B-Y. Su, and K. Keutzer, “clSpMV: A Cross-Platform OpenCL
SpMV Framework on GPUs,” Proc. the 26th ACM International
Conference on Supercomputing (ICS 12), Venice, Italy, 2012, pp.
353-364, doi:10.1145/2304576.2304624.
[9] M.J. Harvey, and G. De Fabritiis, “Swan: A tool for porting CUDA
programs to OpenCL,” Computer Physics Communications, vol. 182,
issue 4, Apr. 2011, pp. 1093-1099, https://doi.org/10.1016/j.cpc.2010.
12.052
[10] P. Du, R. Weber, P. Luszczek, S. Tomov, G. Peterson, and J.
Dongarra, “From CUDA to OpenCL: Towards a performance-
portable solution for multi-platform GPU programming,” Parallel
Computing, vol. 38, issue 8, Aug. 2012, pp. 391-407,
doi:10.1016/j.parco.2011.10.002.
[11] G. Martinez, M. Gardner, and W. Feng, “CU2CL: A CUDA-to-
OpenCL translator for multi- and many-core architectures,” Proc.
2011 IEEE 17th International Conference on Parallel and Distributed
Systems (ICPADS 11), Dec. 2011, pp. 300-307, doi: 10.1109/ICPA
DS.2011.48.
[12] clMathLibraries, clBLAS, https://github.com/clMathLibraries/clBLA
S
[13] clMathLibraries , clRNG, https://github.com/clMathLibraries/clRNG
[14] J. Redmon, and A. Farhadi, “YOLO9000: Better, Faster, Stronger,”
arXiv preprint arXiv:1612.08242, 2016.
[15] K. Karimi, N. G. Dickson, and F. Hamze, “A Performance
comparison of CUDA and OpenCL,” arXiv preprint arXiv:1005.2581,
2010.

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值