ONNX
SSD300 / README.md
zhouxzh's picture
更新readme说明
0ebb29a
|
Raw
History Blame Contribute Delete
4.92 kB
---
license: apache-2.0
datasets:
- detection-datasets/coco
base_model:
- microsoft/resnet-50
---
# SSD300 (Single Shot MultiBox Detector)
本仓库提供标准 **SSD300** 目标检测模型的 ONNX 与昇腾离线模型文件。SSD300 是经典的一阶段目标检测网络,全称为 **Single Shot MultiBox Detector**:模型在一次前向推理中同时完成候选框位置回归和类别置信度预测,不需要像两阶段检测器那样先生成 region proposals。
这里的“300”表示模型固定使用 **300 x 300** 的输入分辨率。仓库中的模型采用标准 SSD300 的检测头、默认框数量和输出形式,并提供不同 ResNet 骨干网络版本,便于在速度、模型大小和检测精度之间做取舍。
## 模型特点
- **一阶段检测**:直接在特征图上预测目标类别和边界框,推理流程简单,适合实时或边缘端部署。
- **多尺度特征预测**:SSD300 会在多个不同分辨率的特征层上进行检测,高分辨率特征更适合小目标,低分辨率特征更适合大目标。
- **默认框机制**:每个特征图位置预设多个不同尺度和宽高比的 default boxes,也常称为 anchors。模型输出的是这些默认框对应的位置偏移和类别分数。
- **固定输入尺寸**:输入张量为 `1 x 3 x 300 x 300`,对应 batch、通道、高、宽。
- **COCO 类别设置**:输出类别维度为 `81`,通常表示 COCO 的 80 个目标类别加 1 个背景类。
- **标准候选框数量**:SSD300 共预测 `8732` 个默认框,这是标准 SSD300 结构的典型配置。
## 网络结构概览
SSD300 由三部分组成:
1. **骨干网络**
用于提取图像特征。本仓库提供 ResNet-18、ResNet-34、ResNet-50、ResNet-101 和 ResNet-151 版本。骨干网络越深,特征表达能力通常越强,但模型体积和计算量也会增加。
2. **多尺度检测特征层**
SSD 不只在最后一层特征上检测目标,而是在多个尺度的特征图上同时预测。这样可以兼顾小目标、中等目标和大目标。
3. **分类与回归检测头**
每个检测位置都会输出两类信息:
- `boxes`:默认框的位置回归结果,用于还原最终边界框。
- `scores`:每个默认框在各个类别上的置信度分数。
推理后通常还需要进行解码、置信度筛选和 NMS(Non-Maximum Suppression,非极大值抑制),得到最终检测框、类别和分数。
## 可用模型
| 骨干网络 | ONNX 文件 | OM 文件 | ONNX 大小 | OM 大小 |
|---|---|---|---:|---:|
| ResNet-18 | `ssd300_resnet18.onnx` | `ssd300_resnet18.om` | 53.60 MB | 27.95 MB |
| ResNet-34 | `ssd300_resnet34.onnx` | `ssd300_resnet34.om` | 76.21 MB | 39.43 MB |
| ResNet-50 | `ssd300_resnet50.onnx` | `ssd300_resnet50.om` | 87.32 MB | 45.28 MB |
| ResNet-101 | `ssd300_resnet101.onnx` | `ssd300_resnet101.om` | 159.71 MB | 81.97 MB |
| ResNet-151 | `ssd300_resnet151.onnx` | `ssd300_resnet151.om` | 219.34 MB | 112.29 MB |
## 输入与输出
所有 ONNX 模型的接口一致:
| 名称 | 类型 | 形状 | 说明 |
|---|---|---|---|
| `input` | `float32` | `1 x 3 x 300 x 300` | 输入图像张量,NCHW 格式 |
| `boxes` | `float32` | `1 x 4 x 8732` | 每个默认框对应的边界框回归输出 |
| `scores` | `float32` | `1 x 81 x 8732` | 每个默认框对应的类别分数输出 |
说明:
- 输入图像需要缩放到 `300 x 300`
- 输入通道顺序为 `C x H x W`
- `scores` 为原始类别分数,后处理时通常需要按训练导出方式配合 softmax 或等价逻辑使用。
- `boxes` 不是直接可视化的最终框,通常需要结合 SSD300 的默认框进行解码。
## 推荐推理流程
1. 读取原始图像,并记录原图宽高。
2. 将图像 resize 到 `300 x 300`
3. 按模型训练时的预处理方式完成通道转换、归一化和 NCHW 排布。
4. 运行 ONNX Runtime 或昇腾 OM 推理。
5.`boxes``scores` 做 SSD 解码。
6. 根据置信度阈值过滤低分结果。
7. 对同类别检测框执行 NMS。
8. 将检测框坐标映射回原图尺寸。
## 模型格式
- **ONNX (`.onnx`)**:通用神经网络交换格式,可用于 ONNX Runtime、TensorRT、OpenVINO 等推理后端,也可作为进一步转换部署格式的中间模型。
- **OM (`.om`)**:华为昇腾 NPU 使用的离线模型格式,通常由 ATC 工具基于 ONNX 模型转换得到,适合在 Ascend 310、Ascend 910 等设备上部署。
## 适用场景
SSD300 结构轻量、推理链路短,适合以下场景:
- 通用物体检测
- 边缘设备实时检测
- 视频流逐帧检测
- 对延迟敏感的检测任务
- 需要 ONNX 或 Ascend OM 格式快速部署的项目
如果优先考虑速度,可以选择 ResNet-18 或 ResNet-34 版本;如果更关注特征表达能力,可以选择 ResNet-50、ResNet-101 或 ResNet-151 版本。