昇思25天学习打卡营第8天 |昇思MindSpore SSD 目标检测算法 学习与总结 ...

王柳  金牌会员 | 2024-7-31 20:35:29 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 661|帖子 661|积分 1983

一、引言
SSD(Single Shot MultiBox Detector)是 Wei Liu 等人在 ECCV 2016 上提出的一种目标检测算法,具有较高的检测精度和速度。
二、算法概述

  • 主流算法类型

    • Two-stage 方法:如 RCNN 系列,先产生候选框,再分类和回归。
    • One-stage 方法:如 YOLO 和 SSD,直接通过主干网络给出类别位置信息,无需区域生成。

  • 模子结构

    • 以 VGG16 为底子模子,新增卷积层以获取更多特征图用于检测。
    • 利用多标准的特征图进行检测,浅层检测小目标,深层检测大目标。

  • 模子特点

    • 多标准检测:利用 6 种差异尺寸的特征图,使检测更充分,能检测出小目标。
    • 接纳卷积进行检测:直接接纳卷积对差异特征图提取检测效果。
    • 预设 anchor:接纳预设边界框,在其引导下微调预测框的尺寸。

三、环境准备与数据处理

  • 环境准备:确保当地安装了 mindspore、download、pycocotools、opencv-python。
  • 数据准备与处理

    • 数据集为 COCO 2017,将其转换为 MindRecord 格式以淘汰磁盘和网络开销。
    • 为数据处理定义输入,包括 COCO 根目次、标注 JSON 文件、训练类别等。

  • 数据采样

    • 模子对每个训练图像随机采样,包括利用整个原始输入图像、采样特定区域等。
    • 定义随机采样函数,如 random_sample_crop,进行图像和框的随机裁剪。

  • 数据集创建

    • 利用 create_ssd_dataset 函数创建 SSD 数据集,包括数据解码、转换、增强等操纵,并进行批量处理。

四、模子构建

  • Backbone Layer:利用 VGG16 网络的前 13 个卷积层,将全连接层转换为卷积层以提取特征。
  • Extra Feature Layer:在 VGG16 底子上增加 4 个深度卷积层提取更高层语义信息。
  • Anchor:接纳 PriorBox 进行区域生成,计划大量密集的 PriorBox 包管全面检测。
  • Detection Layer:对 6 个预测特征图进行卷积操纵,得到回归偏移量和类别概率分数。
五、损失函数
目标函数包括预选框与目标类别的置信度误差(confidence loss)和位置误差(location loss),位置损失接纳 Smooth L1 Loss,置信度损失接纳多类置信度上的 softmax 损失。
六、评估指标与训练过程

  • 评估指标

    • 在 SSD 中,训练无需非极大值克制(NMS),检测时需用 NMS 过滤重叠预测框。
    • 评估指标包括均匀精度(AP)和均匀召回率(AR),AP 反映预测效果错误率,AR 反映漏检率。

  • 训练过程

    • 先验框匹配:确定训练图片中 ground truth 与先验框的匹配,接纳最大 IOU 和阈值原则,进行正负样本划分,并接纳 hard negative mining 均衡样本。
    • 损失函数:利用位置和置信度损失的加权和。
    • 数据增强:利用定义好的数据增强方式。
    模子训练设置 epoch 次数为 60,batch_size 为 5,图像尺寸为 300×300,利用 Momentum 优化器,初始学习率为 0.001,利用回调函数监控训练过程,每 10 个 epoch 生存一次模子。

七、评估
自定义 eval_net 类评估训练好的模子,计算差异设置下的 AP 和 AR,利用 COCOMetrics 类计算 mAP。
八、总结
SSD 目标检测算法在精度和速度上取得了较好的均衡,通过多标准检测、卷积检测和预设 anchor 等策略提高了检测性能。但在实际应用中,仍需根据具体场景和需求进行调解和优化。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表