SSD目标检测算法必须知道的几个关键点

上期一起学了SSD算法的框架流程,如下:
目标检测算法SSD结构详解

今天我们一起学下成功训练SSD算法的一些注意点:

  • Loss计算

  • Match策略

  • 数据增强

  • 性能分析

Loss计算

SSD算法的目标函数分两部分:计算相应的预选框与目标类别的confidence loss以及相应的位置回归。如下公式:

其中NmatchGround Truth的预选框数量(具体的match策略下面讲), 参数用于调整confidence losslocation loss之间的比例,默认 . 其中confidence loss具体如下:

其中i表示第i个预选框,j表示第j个真实框,p表示第p个类别。其中 表示第i个预选框是否匹配到了第j个类别为p的真实框,匹配到就为1,否则为0
而我们在最小化上面代价函数 的时候,就是将 逼近于1的过程。而对于location loss,如下:

其实,位置回归的loss是跟前面学的Faster RCNN中位置回归损失是一样,不在赘述,如下:
目标检测算法Faster RCNN的损失函数以及如何训练?

其中,

  • g:ground truth box

  • l:predicted box

  • d:prior box

  • w:width

  • h:heigth

Match策略

在训练时,ground truth boxesprior boxes按照如下方式进行配对:首先,寻找与每一个ground truth box有最大交并比(IoU)的prior box,这样就能保证每一个真实标注框与至少会有一个预选框与之对应,之后又将剩余还没有配对到的预选框与任意一个真实标注框尝试配对,只要两者之间的IoU大于阈值,则认为match上了。显然在训练的时候,配对到真实标注框的预选框就是正样本,而没有配对上的则为负样本。如下图:在进行match的时候,首先计算每个预选框和真实框的IoU,将IoU最大的预选框和大于阈值的预选框作为正样本,其余的作为负样本进行分类器训练。其中公式中的x表示预选框信息,c为置信度,l为预测框,g为真实标注。

数据增强

值得注意的是,一般情况下负样本预选框的数量是远远大于正样本预选框的数量,如果直接进行训练的话,会导致网络过于重视负样本,从而导致loss不稳定。所以SSD在抽样时按照置信度误差(预测背景的置信度越小,误差越大)进行降序排列,选取误差较大的top-k作为训练的负样本,控制正负样本比例为1:3,这样可以导致模型更快的优化和更稳定的训练。
另外为了使模型对于各种输入对象大小和形状更加鲁棒,每个训练图像通过以下选项之一进行随机采样:

  • 使用整个原始输入图像

  • 采样一个区域,使得采样区域和原始图片最小的交并比重叠为0.10.30.50.70.9.

  • 随机采样一个区域

每个采样区域的大小为原始图像大小的[0.1,1],长宽比在1/22之间。如果真实标签框中心在采样区域内,则保留两者重叠部分作为新图片的真实标注。在上述采样步骤之后,将每个采样区域大小调整为固定大小,并以0.5的概率水平翻转。如下图:上图左图为输入图片及真实标注,右侧的a,b,c,d为随机采样得到的4张图片及标注。

性能分析

SSD算法和我们前面学的Faster RCNN以及后面要学的YOLO的性能对比如下表:
从上表中可以看到SSD算法相比Faster RCNNYOLO都有较高的mAPFPS也比Faster RCNN高。而由于SSD512输入图片比300大,所以SSD512相对于SSD300有更好的mAP

SSD缺点
  • 需要人工设置预选框的min-size,max_sizeaspect_ratio值。网络中预选框的基础大小和形状需要手工设置。而网络中每一层feature使用的预选框大小和形状不一样,导致调试过程非常依赖经验。

  • 虽然采用了特征金字塔的思路,但是对小目标的识别效果依然一般,可能是因为SSD使用了VGG16中的conv4_3低级feature去检测小目标,而低级特征卷积层数少,存在特征提取不充分的问题。

至此结果上期,我们基本上了解了SSD算法的大致原理,下期,我们一起看下另一个牛哄哄的检测算法YOLO,一起加油!

引用\[1\]:..\OBJ\project.sct(7): error: L6235E: More than one section matches selector - cannot all be FIRST/LAST. 引用\[2\]:经过半天的查找问题,终于揪出STM32.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.的问题。 引用\[3\]:编译 GD32F103 自建工程时,报以下错误: .\Objects\template.sct(7): error: L6235E: More than one section matches selector - cannot all be FIRST/LAST. Not enough information to list image symbols. Not enough information to list the image map. ".\Objects\template.axf" - 1 Error(s), 0 Warning(s). Target not created. Build Time Elapsed: 00:00:01 二、原因。问题:linking... WIFI\WIFI.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST. 回答: 这些错误信息都是与链接器脚本相关的错误。在编译过程中,链接器负责将各个目标文件合并成最终的可执行文件。而链接器脚本则用于指导链接器的操作,包括定义内存布局、段的起始地址等。在这些错误中,L6235E和L6236E都是链接器的错误代码,分别表示多个段匹配选择器和没有段匹配选择器。这些错误通常是由于链接器脚本中的段选择器与实际的段不匹配导致的。可能的原因包括选择器拼写错误、段名称错误或者段定义错误。要解决这些错误,您需要检查链接器脚本中的段选择器,并确保它们与实际的段名称匹配。如果有多个段匹配了同一个选择器,您需要修改链接器脚本以解决冲突。 #### 引用[.reference_title] - *1* [MDK5报错error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.](https://blog.csdn.net/m0_47700906/article/details/120811911)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [STM32.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.的问题。](https://blog.csdn.net/u010893262/article/details/52911652)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Keil提示错误信息error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.](https://blog.csdn.net/qq_36347513/article/details/123919187)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值