从零开始实现SSD目标检测(pytorch)

Posted wjy-lulu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始实现SSD目标检测(pytorch)相关的知识,希望对你有一定的参考价值。

从零开始实现SSD目标检测(pytorch)

特别说明:

  1. 本系列文章是Pytorch目标检测手册的翻译+总结
  2. 知其然知其所以然,光看论文不够,得亲自实现

第一章 相关概念概述

1.1 检测框表示

边界宽(bounding box)是包围一个物体(objective)的框,用来表示这个物体的位置、形状、大小等信息。不是最小外接矩形,仅仅是一个转动角度为 0 的框。如下图1-1所示:

技术图片

表示框的方法有很多(不赘述),图1-1的方式为框的边界四个极值坐标(x_{min},y_{min},x_{max},y_{max})

但是这样做的有点缺点

  • 知道(x_{min},y_{min},x_{max},y_{max}),我们无法知道这个目标的更多信息(比例),必须画出来才有感官
  • 如果没有图像的宽高,像素值毫无用处(其实还是无法知道比例信息)

改进方式如下图1-2所示

技术图片

1-2使用比例的方式,很直观的知道目标更多的信息

但是还有一个缺点

  • 直接看这个信息,我们不知道目标长宽信息(当然你自己可以另外计算)
  • 也不知道中心位置(相对于边界,我们更关心中心)

再次改进的方式如下图1-3所示:

技术图片

(c_x,c_y,w,h),中心点+宽高的方式,满足视觉信息最大化。

1.2 交并比

如何用来判断一个框检测的好与坏?

  1. 使用交集(A cap B)

直接使用交集的大小去判断好坏,大尺度和小尺度不对等

比如:A和B大小都为100,交集50. C和D大小都为10,交集5.

如何说明这两组哪个好坏?

通过上述的例子,我们发现少了一个比例问题。。。

  1. 使用 (frac{A{cap}B}{A{cup}B})交集除以并集

完全解决上诉问题

注意:这里还存在一个关于LOSS的问题,具体可参考GIOU

技术图片

第二章 基础网络

第三章 先验框设计

第四章 LOSS设计

以上是关于从零开始实现SSD目标检测(pytorch)的主要内容,如果未能解决你的问题,请参考以下文章

教程 | 从零开始PyTorch项目:YOLO v3目标检测实现(下)

目标检测SSD模型pytorch版的权重参数

YOLO_v3代码解析以及相关注意事项

#YOLO_v3代码解析以及相关注意事项

pytorch-ssd目标检测可视化检测结果

Keras深度学习实战(15)——从零开始实现YOLO目标检测