SimpleDet目标检测框架性能基准测试全面解析
前言
在计算机视觉领域,目标检测是一项基础且重要的任务。随着深度学习技术的发展,各种目标检测框架层出不穷。本文将深入分析SimpleDet框架在不同硬件配置下的性能表现,并与当前主流框架进行横向对比,帮助读者全面了解该框架的性能特点。
测试平台配置
性能测试需要建立在可靠的硬件基础上,我们采用了两套不同配置的测试平台:
P1平台(经济型配置)
- CPU:2颗Intel Xeon E5-2682 v4
- 内存:220GB
- GPU:8块NVIDIA 1080Ti
- 拓扑结构:单根PCI-E
- 软件环境:
- Ubuntu 16.04操作系统
- NVIDIA驱动390.48 + CUDA 9.0 + cuDNN 7.5.0 + NCCL 2.4.2
- pip虚拟环境
P2平台(高性能配置)
- CPU:2颗Intel Platinum 8163
- 内存:377GB
- GPU:8块NVIDIA 2080Ti
- 拓扑结构:双根PCI-E(GPU间通信速度略低于E5V4)
- 软件环境:
- Ubuntu 16.04操作系统
- NVIDIA驱动418.39 + CUDA 10.0 + cuDNN 7.5.0 + NCCL 2.4.2
- conda虚拟环境
这两套平台代表了不同预算下的硬件选择,P1平台约1万美元,P2平台约2万美元,远低于其他框架测试常用的10万美元级高端配置。
测试框架版本
为了确保测试的公平性,所有框架都使用了特定版本:
- SimpleDet:特定提交版本 + mxnext + mxnet特定版本
- maskrcnn-benchmark:特定提交版本 + PyTorch 1.1 + torchvision 0.3.0
- mmdetection:特定提交版本 + PyTorch 1.1 + torchvision 0.3.0
测试方法与命令
SimpleDet测试命令
在P1平台上:
# 测试不同配置下的性能
python detection_train.py --config config/faster_r50v1_fpn_accel_1x.py
python detection_train.py --config config/mask_r50v1_fpn_1x.py
python detection_train.py --config config/retina_r50v1_fpn_1x.py
在P2平台上还增加了FP16混合精度测试:
# 可切换fp16=True/False进行测试
python detection_train.py --config config/retina_r50v1_fpn_1x.py
python detection_train.py --config config/faster_r50v1_fpn_accel_1x.py
python detection_train.py --config config/mask_r50v1_fpn_1x.py
对比框架测试命令
maskrcnn-benchmark和mmdetection也分别在两个平台上进行了测试,包括FP32和FP16模式。特别值得注意的是,在conda环境下需要限制OMP_NUM_THREADS以避免CPU资源争用。
性能测试结果分析
P1平台FP32精度测试
| 模型 | SimpleDet | mmdetection | maskrcnn-benchmark | |---------------------|-----------|-------------|--------------------| | RetinaNet | 43.4 img/s | 36.2 img/s | 44.2 img/s | | Faster R-CNN w/ FPN | 43.0 img/s | 32.8 img/s | 41.9 img/s | | Mask R-CNN w/ FPN | 35.1 img/s | 24.7 img/s | 30.2 img/s |
分析:在P1平台上,SimpleDet表现优异,特别是在计算复杂度较高的Mask R-CNN模型上,性能优势更为明显。
P2平台FP32精度测试
| 模型 | SimpleDet | mmdetection | maskrcnn-benchmark | |---------------------|-----------|-------------|--------------------| | RetinaNet | 55.5 img/s | 40.1 img/s | 49.7 img/s | | Faster R-CNN w/ FPN | 54.0 img/s | 38.0 img/s | 48.3 img/s | | Mask R-CNN w/ FPN | 45.5 img/s | 29.1 img/s | 36.0 img/s |
分析:升级到P2平台后,所有框架性能都有提升,但SimpleDet的相对优势依然保持。
P2平台FP16混合精度测试
| 模型 | SimpleDet | mmdetection | maskrcnn-benchmark | |---------------------|-----------|-------------|--------------------| | RetinaNet | 72.5 img/s | 46.8 img/s | NA | | Faster R-CNN w/ FPN | 70.2 img/s | 41.8 img/s | 47.5 img/s | | Mask R-CNN w/ FPN | 58.1 img/s | 31.1 img/s | 34.8 img/s |
分析:在FP16模式下,SimpleDet展现出更大的性能优势,特别是在RetinaNet模型上,性能提升显著。
单卡性能基准
| 模型 | SimpleDet | mmdetection | maskrcnn-benchmark | |---------------------|-----------|-------------|--------------------| | Mask R-CNN w/ FPN | 313ms | 360ms | 331ms |
分析:在单卡环境下,各框架性能接近,因为底层都使用了相同的cuDNN库。数据时间显示SimpleDet的数据加载效率更高。
技术要点总结
-
硬件性价比:SimpleDet在相对经济的硬件配置上就能获得优异的性能表现。
-
框架效率:特别是在复杂模型(Mask R-CNN)上,SimpleDet展现出明显的性能优势。
-
混合精度支持:FP16模式下SimpleDet的性能提升幅度大于其他框架。
-
数据加载优化:单卡测试中的"数据时间"指标显示SimpleDet在数据流水线方面做了深度优化。
-
多卡扩展性:在多GPU环境下,SimpleDet保持了良好的扩展效率。
实际应用建议
对于需要在有限预算下部署目标检测系统的团队,SimpleDet是一个值得考虑的选择。它在保持较高性能的同时,对硬件要求相对较低,特别是在:
- 需要部署复杂模型(如Mask R-CNN)的场景
- 硬件预算有限的场景
- 需要利用混合精度训练加速的场景
对于研究人员,SimpleDet的优异性能可以缩短实验周期,提高研究效率。对于工程团队,其高效的实现可以降低部署成本,提高系统响应速度。
通过本次全面的基准测试,我们可以清晰地看到SimpleDet框架在实际应用中的性能优势,特别是在资源受限的环境中,这种优势将更为明显。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考