pytorch目标检测ssd一_ssd的实现原理

2022-11-24,,,,

pytorch目标检测一_ssd实现原理

本篇博客是我学习(https://blog.csdn.net/weixin_44791964)博主写的pytorch的ssd的博客后写的,大家可以直接去看这位博主的博客(https://blog.csdn.net/weixin_44791964/article/details/104981486)。这位博主在b站还有配套视频,传送门:(https://www.bilibili.com/video/BV1A7411976Z)。这位博主的在GitHub的源代码(https://github.com/bubbliiiing/ssd-pytorch)。 侵删

几种目标检测方法比较

这里建议去看一篇博客,里面讲了几种目标检测方法实现的大致原理,也对几种目标检测方法进行了比较,写得比较详细:链接

ssd的实现原理

计算机要确定一幅图片中某个参数的位置,也就是对准图片中的一个物体,画出一个框,需要四个参数,中心点的x和y的坐标,w(宽),h(高),如下图(图片来自于b站up主Bubbliiiing的****截图,侵删):

我们的计算机要确定这幅图片中猫咪的位置,画一个框,框出猫咪,就需要这个框的四个参数,中心点坐标:x和y、框的宽、框的高。

那么ssd是如何画出这个框的呢?

首先我们需要将图片调整成为300x300的大小,为了防止失真,图片并不会直接拉长之类的,而是在边缘区域对图片进行补充,如下(图片来自于b站up主Bubbliiiing的****截图,侵删)

然后,ssd会将图片划分成不同大小的网格,如下图(图片来自于b站up主Bubbliiiing的****截图,侵删)

按照顺序,图片会依次被划分为38x38, 19x19, 10x10, 5x5, 3x3, 1x1的网格。又因为在进行多次卷积之后,图片中较小物体的特征容易缺失,所以对于较小物体,一般使用38x38和19x19的网格。我们图片中的猫咪,是一个较大的物体,所以我们不会使用38x38和19x19来检测图片中的猫咪。比如我们使用5x5的网格来检测猫咪,如下图(图片来自于b站up主Bubbliiiing的****截图,侵删)

每个网格中心负责物体的检测,如果物体中心落在某个网格内部,那么这个物体就由这个网格点来确定。

基本原理就系介样了,然后接下来就是关于整体架构的介绍了。