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

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

特别说明:

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

第一章 相关概念概述

1.1 检测框表示

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

图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-2使用比例的方式,很直观的知道目标更多的信息

但是还有一个缺点

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

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

扫描二维码关注公众号,回复: 7800131 查看本文章

图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

图1-4

第二章 基础网络

第三章 先验框设计

第四章 LOSS设计

猜你喜欢

转载自www.cnblogs.com/wjy-lulu/p/11827204.html