SSD架构,你不来看看么?

本文深入解析SSD(Single Shot MultiBox Detector)网络结构,包括VGG16特征提取、多尺度特征图生成及Anchor Boxes设定。阐述了如何计算特征图点在原图中的坐标,以及宽高的确定方法。介绍了物体框与锚点框的匹配过程和损失函数计算。

前言总结

SSD骨架网络结构

  • VGG16部分作为特征提取

SSD特征提取网络结构

  • SD300 也叫 VGG16Extractor300
  • 提取了6个特征张量

锚点框Anchor Boxes和选框预测

Anchor Box 为了实现特征图上的一个点能预测多个物体!

  • Anchor Box的基础大小有7个
  • 选框可有两个正方形,高宽2:1,1:2, 3:1 1:3 ⇒ 最多六个,最少4个

SSD骨架网络结构

  • 结构采用VGG16的conv4和conv5

图引用自 《深入浅出PyTorch 从模型到源码》
在这里插入图片描述

SSD特征提取网络结构

  1. 和VGG输入大小不一样,这次是 300 × 300 300\times300 300×300输入,VGG16是 224 × 224 224\times224 224×224输入
  2. 最后的输出特征空间大小为 1 × 1 1\times1 1×1,有256张,也就是 256 × 1 × 1 256\times1\times1 256×1×1

图引用自 《深入浅出PyTorch 从模型到源码》
在这里插入图片描述

  1. VGG16Extractor300
    提取了六个特征层
conv4_3
conv7
conv8_2
conv9_2
conv10_2
conv11_2

在这里插入图片描述

锚点框Anchor Boxes和选框预测

  • 六张特征图
  • 七个Anchor Box 基础尺寸
    • 30, 60, 111, 162, 213, 265, 315
  • 特征相对于原图的步长
    • 8, 16, 32, 64, 100, 300

如何根据特征图中的点计算原图中的坐标?

假设$(i,j)$为整数,也就是格子图中的左上角坐标, 那么原图中为
( s t r i d e × ( i + 0.5 ) , s t r i d e × ( j + 0.5 ) ) (stride\times(i+0.5),stride\times(j+0.5)) (stride×(i+0.5),stride×(j+0.5))

那知道了原图中对应的中心点坐标,如何知道对应原输入图像中的宽高呢?

😃

如此计算,也解释了为什么有7个基础尺寸!就是为了一个大正方形!
在这里插入图片描述

我们求到了输入原始图像中,真实框的大小和坐标(x,y,w,h), 然后和神经网络预测的框直接求误差?

不是的!我们要求误差!!但是是一个变换!!!

图引用自 《深入浅出PyTorch 从模型到源码》
在这里插入图片描述

其中 ( x ′ , y ′ , w ′ , h ′ ) (x',y',w',h') (x,y,w,h)是神经网络预测的框

物体选框和锚点框的匹配

我们知道,COCO数据集的标签框是 ( x 1 , y 1 , w , h ) (x_1,y_1,w,h) x1,y1,w,h 即左上角左边和宽高。
因此第一步:

  • 坐标转换成两种:
    • 第一种坐标: ( x c , y c , w , h ) (x_c,y_c,w,h) (xc,yc,w,h)即中心坐标化
    • 第二种坐标: ( x 1 , y 1 , x 2 , y 2 ) (x_1,y_1,x_2,y_2) (x1,y1,x2,y2)即左上角和右下角坐标

匹配物体框和锚点框:

一个锚点框能且只能匹配一个目标框(IOU最大者)
一个目标框却可以匹配多个锚点框,然后计算 ( g x , g y , g w , g h ) (g_x, g_y, g_w, g_h) (gx,gy,gw,gh), 并分配标签。

损失函数

F.smooth_l1_loss
避免异常值影响
Huber Estimator
它其实就是k=1情况下的Huber Estimator!!

### 3.5 SSD 存储延迟性能及其在自动驾驶系统中的应用可行性 固态硬盘(SSD)因其非易失性存储介质和无机械结构的特点,具备较低的访问延迟和较高的数据读写速率,广泛应用于高性能计算和嵌入式系统中。对于自动驾驶系统而言,存储设备的延迟性能直接影响感知数据的处理效率和决策系统的响应速度,尤其在多传感器融合和高分辨率图像处理场景中尤为重要。 SSD 的平均读取延迟通常在 50 微秒以下,写入延迟稍高,但在现代 NVMe SSD 中也控制在 100 微秒以内。与传统机械硬盘(HDD)相比,SSD 在随机读写性能上具有显著优势,能够满足自动驾驶系统对实时数据读取和缓存的需求。此外,NVMe 接口的引入进一步降低了主机与存储设备之间的通信延迟,提高了整体系统响应能力。 自动驾驶系统通常需要处理来自摄像头、激光雷达和雷达等多种传感器的高并发数据流,这对存储设备的吞吐能力和响应延迟提出了更高要求。SSD 在多任务并发处理中表现出较高的稳定性,能够在复杂环境下保持较低的延迟波动,从而保障感知模块的实时性需求。 然而,自动驾驶系统对存储设备的可靠性与稳定性也有严格要求。尽管 SSD 的延迟性能优越,但在极端温度、高振动和频繁写入等条件下,其寿命和稳定性可能受到影响。因此,在实际部署中需结合硬件冗余、磨损均衡算法和错误纠正机制,以提升 SSD 在自动驾驶系统中的适用性。 综合来看,SSD 在延迟性能上具备支持自动驾驶系统实时处理需求的能力,但在实际应用中需结合系统架构优化和存储管理策略,以确保其在复杂环境下的稳定性和可靠性。 ```python # 示例:模拟自动驾驶系统中 SSD 存储延迟的测量 import time def measure_ssd_read_latency(file_path, num_iterations=100): total_latency = 0.0 for _ in range(num_iterations): start_time = time.time() with open(file_path, 'rb') as f: _ = f.read(512) # 模拟读取512字节 end_time = time.time() total_latency += (end_time - start_time) average_latency = total_latency / num_iterations * 1e6 # 转换为微秒 return average_latency ssd_file_path = '/mnt/ssd/autonomous_driving_data.bin' latency = measure_ssd_read_latency(ssd_file_path) print(f"Average SSD read latency: {latency:.2f} μs") ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万物琴弦光锥之外

给个0.1,恭喜老板发财

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值