10、目标检测:Caffe SSD 性能优化

本文详细介绍了针对CaffeSSD的性能优化方法,包括数据预处理加速、多卡加速及CUDNN_CONV优化,有效提升了训练效率,解决了深度卷积训练耗时和内存占用问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据预处理加速(提升 4~6 倍)

  • 优化原因:
    • 原版 caffe ssd 数据预处理速度很慢(尤其是遇到 depthwise conv 的时候)
    • 数据预处理的速度远远跟不上前向和反向计算的速度,导致训练速度很慢
  • 优化方法:

二、多卡加速:NVIDIA NCCL

  • 优化原因: 使用多卡加载预训练模型进行训练的时候报错,没有安装 nccl
  • 优化方法: 安装 nccl
    git clone https://github.com/NVIDIA/nccl.git
    cd nccl
    sudo make install -j16
    

三、重新编译 cudnn_conv 使其支持 cudnn7

  • 优化原因: depthwise_conv 训练耗时严重,并且占用太多内存,cudnn7+中对其做了优化,支持 Group 卷积

  • 优化方法: 参考代码 https://github.com/chuanqi305/MobileNetv2-SSDLite/tree/master/src 替换 caffe ssd 源代码中的相应层

    #include "caffe/layers/cudnn_conv_layer.hpp"
    #if CUDNN_MAJOR >= 7
    #define USE_CUDNN_GROUP_INTERNAL
    #endif
    
  • 部署问题: 多个模型混合测试时,既有 caffe_ssd(不支持 group)训练的,又有 caffe_fast(支持 group)训练的,需要把 caffe_fast 模型 deploy 中的 depth conv 改为(不支持 group)的传统卷积操作,这样才能合并用一个 caffe_ssd 测试

    layer {
      name: "conv1/dw"
      type: "Convolution"
      bottom: "conv0"
      top: "conv1/dw"
      param {
        lr_mult: 0.1
        decay_mult: 0.1
      }
      convolution_param {
        num_output: 32
        bias_term: false
        kernel_size: 3
        stride: 1
        pad: 1
        group: 32
        # engine: CAFFE  # 部署时使用 caffe_ssd,把注释拿掉
        weight_filler {
          type: "msra"
        }
      }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值