模型简介
SSD是单阶段的目标检测算法,通过卷积神经网络进行特征提取,取不同的特征层进行检测输出 。SSD采用了多尺度检测方法,浅层用于检测小目标,深层用于检测大目标。
SSD目标检测主流算法分成可以两个类型:
1.two-stage方法:RCNN系列
2.one-stage方法:YOLO和SSD
模型特点
多尺度检测,采用卷积进行检测,预设anchor
环境准备
确保安装了MindSpore及其必要的依赖库,如mindspore、download、pycocotools、opencv-python。
数据准备与处理
数据集:COCO数据集转换成MindRecord格式。
数据采样:为了使模型对于各种输入对象大小和形状更加鲁棒,通过随机采样不同大小和长宽比的区域,并进行交并比(IoU)过滤和随机翻转等操作来增强数据。
数据集创建
模型构建
SSD网络结构包括特征提取层、多尺度检测层以及预设的anchor框。
损失函数
SSD算法的目标函数分为两部分:计算相应的预选框与目标类别的置信度误差以及相应的位置误差。
位置损失函数:使用Smooth L1 Loss,针对正样本的encode后的位置信息。
置信度损失函数:多类置信度上的softmax损失,用于分类预测。
训练过程
(1)先验框匹配
(2)损失函数
(3)数据增强
评估
使用自定义的eval_net()
类进行评估,通过SsdInferWithDecoder
类获取预测的坐标和标签。