从零开始实现SSD目标检测(pytorch)
Posted wjy-lulu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始实现SSD目标检测(pytorch)相关的知识,希望对你有一定的参考价值。
从零开始实现SSD目标检测(pytorch)
特别说明:
- 本系列文章是Pytorch目标检测手册的翻译+总结
- 知其然知其所以然,光看论文不够,得亲自实现
第一章 相关概念概述
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 交并比
如何用来判断一个框检测的好与坏?
- 使用交集(A cap B)
直接使用交集的大小去判断好坏,大尺度和小尺度不对等
比如:A和B大小都为100,交集50. C和D大小都为10,交集5.
如何说明这两组哪个好坏?
通过上述的例子,我们发现少了一个比例问题。。。
- 使用 (frac{A{cap}B}{A{cup}B})交集除以并集
完全解决上诉问题
注意:这里还存在一个关于LOSS的问题,具体可参考GIOU
第二章 基础网络
第三章 先验框设计
第四章 LOSS设计
以上是关于从零开始实现SSD目标检测(pytorch)的主要内容,如果未能解决你的问题,请参考以下文章