当前位置: 首页 > news >正文

为什么企业网站不是开源系统用外服务器做网站

为什么企业网站不是开源系统,用外服务器做网站,注册域名遵循什么原则,如何备份wordpress数据库概述 YOLOv5的主要架构 Backbone#xff08;主干网络#xff09;#xff1a;负责提取输入图像的多层次特征 Neck#xff08;颈部网络#xff09;#xff1a;进行特征融合和多尺度特征处理#xff0c;通常包含FPN#xff08;特征金字塔网络#xff09;和PAN#xff0…概述 YOLOv5的主要架构 Backbone主干网络负责提取输入图像的多层次特征 Neck颈部网络进行特征融合和多尺度特征处理通常包含FPN特征金字塔网络和PAN路径聚合网络 Prediction预测头基于融合后的多尺度特征图进行目标预测包括边界框回归、置信度预测和类别分类 关键组成总结 Backbone主干网络 CSPNet通过将特征图分为两部分一部分直接传递另一部分通过多个卷积层处理后再合并减少了冗余计算提升了模型效率Darknet传统的YOLO系列采用Darknet作为主干YOLOv5通过CSPDarknet优化了特征提取过程进一步提高了性能 Neck颈部网络 FPNFPN通过自顶向下的路径将高层次的语义信息传递到低层次特征图增强了低层特征的表达能力适用于检测不同尺度的目标PANPAN在FPN的基础上加入了自底向上的路径进一步聚合特征信息增强了特征图之间的信息流动提升了小目标的检测性能SPPFSPPF模块通过多次最大池化操作提取不同尺度的特征并进行拼接和卷积处理增强了模型对多尺度特征的捕捉能力同时保持了计算效率 Prediction预测头 预测层每个尺度的特征图对应一个预测层预测输出包括边界框坐标x, y, w, h、置信度和类别概率锚框机制每个预测层使用预定义的锚框Anchor Boxes进行目标检测适应不同尺寸和形状的目标 损失函数总结 边界框回归损失目标置信度损失类别分类损失 训练流程总结 标注数据训练和验证数据进行分类同时进行数据增强进一步提高模型的泛化能力模型初始化选择合适的模型然后加载权重加速收敛前向传播输入图像通过主干网络提取特征通过颈部网络进行特征融合在不同尺度特征图上进行目标检测损失计算根据正负样本匹配结果计算定位损失、置信度损失和分类损失最后得到总损失反向传播与优化反向传播计算梯度使用优化器如Adam、SGD更新模型参数模型评估和调整定期评估模型验证集的性能根据评估结果调整学习率损失权重等信息 推理过程总结 输入处理针对输入的图像进行预处理匹配模型输入要求前向传播图像通过主干网络、颈部网络进行特征提取和融合从而实现在不同尺度上进行目标检测后处理 阈值筛选过滤低置信度的预测框非极大值抑制NMS去除重叠度高的预测框保留最优的检测结果边界框解码将预测的边界框参数转换为实际图像坐标输出结果返回检测到的目标类别、边界框坐标和置信度 输入端 Mosaic增强 Mosaic增强的主要目的在于将多张图片进行组合从而增加训练数据的多样性和复杂性使得YOLO模型在训练过程中可以更好的学习到不同场景、不同尺度和不同位置的目标特征。这不仅提升了模型的检测精度还增强了其在实际应用中的鲁棒性和泛化能力 分析1基本原理是什么 多图像拼接 首先从数据集中随机选择四张图像然后对这四张图像进行随机缩放从而适应拼接后的整体布局将四张缩放后的图像按照特定的方式通常是四个象限拼接成一张新的大图。例如将四张图像分别放置在左上、右上、左下和右下四个位置参考上面图片 边界框的调整 调整位置因为图像被拼接到新的位置原图像中的边界框需要根据新的图像布局进行位置调整调整尺寸因为在将图像拼接到四宫格中的时候无法避免有些图片会进行缩放那么边界的尺寸的也是需要进行相应调整从而匹配新的图像尺度 实现增强效果 多样性增加通过将不同图像的目标组合在一张图中模型能够学习到更多样化的目标分布和背景环境上下文信息丰富目标可能出现在不同的上下文中这有助于模型更好地理解目标的环境和相互关系小目标检测提升拼接后的图像可能包含更多的小目标这有助于模型提升对小目标的检测能力 分析具体实现分析 随机选择四张图像 从训练数据集中随机选取四张不同的图像调整图像尺寸 对每张图像进行随机缩放确保它们在拼接后能够合理地填充到新的大图中确定拼接位置 设定一个新的大图的尺寸例如原图的两倍并确定每张图像在新图中的位置左上、右上、左下、右下拼接图像 将四张缩放后的图像按照预定的位置拼接成一张新的大图调整和合并边界框 根据每张图像在新图中的位置调整各自的边界框坐标并合并到新图中在进行上述步骤后还是可以对图像进一步的增强以增强数据的多样性 分析拼接后的画布大小是实现预设好的吗 拼接后的整体布局大小通常是预先设定好的。在 Mosaic 增强中通常会设定一个固定的输出图像尺寸例如原图的两倍如 640x640 像素。这个固定尺寸确保了拼接后的图像在模型训练过程中保持一致性有助于模型更好地学习和泛化 也就是说YOLO的实现中会定义一个固定的网格和画布尺寸然后将四张图像按照指定的位置缩放填充到这个画布上这样做的好处是确保所有拼接后的图像具有相同的输入尺寸便于批量处理和加速训练过程 分析不同照片进行拼接一定会导致留白区域这些区域的处理方式如何 根据其处理步骤首先对选中的图像进行随机缩放然后将图片放到四宫格中每个象限的具体位置和大小都是预先设计好的 那么处理留白区域的时候在缩放和定位过程中可能会出现某些区域的留白。这些留白通常会被填充为黑色即像素值为0或者采用与图像边缘相邻的颜色进行填充。留白区域虽然存在但由于模型在训练过程中会见到各种组合和背景通常不会对最终的检测性能造成显著影响 经查找YOLOv5源码YOLOv5中默认使用的是114灰色 # 创建一张空白的大图像画布 mosaic_img np.full((h, w, 3), fill_value114, dtypenp.uint8) 分析输入的使用使用四张图片合成一张图片最后训练的是五张图吗 结论最后输入神经网络的图片不是五张而是一张拼接后的Mosaic图像四张原始图像被随机选取、缩放和拼接后形成了一张新的综合图像即 Mosaic 增强后的图像这张综合图像作为最终的输入传递给神经网络 分析通过Mosaic增强会导致数据减少吗 不会导致数据减少反而会导致数据增加从而被高效且多样化的利用最终提高了训练样本的有效性和泛化能力 按批次加载数据 每一轮训练epoch都会将数据分成多个批次batch每个批次都有一组照片假如我们总有10000张照片那么每个批次的大小为16那么总批次就是 Mosaic增强数据重点 在每次加载一个批次的时候从数据集中随机取出4张照片然后将它们拼成一张Mosaic图像那么当batch_size 16的时候也就是16张Mosaic图像又因为每一张Mosaic图像都是由4张原始图像拼接而成所以实际是又64张原始照片随机选取4张照片组成 即使在第一个 epoch 没有完全遍历所有图片后续的 epoch 会随机再次选取这些未被用到或未完全利用的图片每张图片通过不同的 Mosaic 拼接组合最终会多次出现在训练中且背景、位置等都会变化随机选取结合 shuffle经过多个 epoch 后每张图片都至少会被选中一次同时还会出现在不同的 Mosaic 图像组合中总结随机选取是一定可以选取到全部的图片 综上所述Mosaic 增强并不是减少了训练数据而是多次动态组合训练数据。 自适应锚框 学习Yolov3原理时也有类似于的预设锚框该处主要解决自己针对于Yolov4自适应锚框的一些疑问 分析YOLOv3的锚框和YOLOv5锚框的区别 首先从锚框计算角度分析 YOLOv3 YOLOv3 的锚框是手动预设的固定值基于 COCO 数据集上目标框的尺寸统计结果。换句话说YOLOv3 的默认锚框是开发者在训练前人为选择的一组固定尺寸如果想要适配新的数据集那么就需要手动统计目标框的尺寸然后重新设计尺寸没有自动化的过程从而增加了数据适配的复杂性YOLOv5 YOLOv5 引入了 自适应锚框计算可以在训练前自动从数据集中分析目标框尺寸分布并生成适合该数据集的锚框使用 k-means 聚类或 k-means 聚类结合 IoU 作为距离度量动态生成锚框不用像v3那样手动设置 然后分析锚框的生成方式 YOLOv3 锚框的生成是基于 k-means 聚类 的通常只计算一次例如之前分析其是在COCO数据集上进行计算的YOLOv5 YOLOv5 可以动态分析目标框的分布并根据训练数据集生成锚框后面详细讨论其生成的原理 锚框与网络层的分配 YOLOv3 其使用的是多尺度特征图在每个尺度上的分配特定的锚框小目标小尺寸锚框分配到高分辨率特征图如13×13中目标中尺寸锚框分配到中分辨率特征图如 26×26大目标大尺寸锚框分配到低分辨率特征图52×52YOLOv5 YOLOv5 仍然使用类似 YOLOv3 的多尺度结构但由于锚框可以根据数据集动态生成锚框与特征图的分配更灵活自适应锚框优化后目标框与锚框的 IoU 分布更合理这减少了正负样本不均衡问题提升了多尺度特征图的有效性简单来说类似于快递发货之前只有几种特定尺寸的箱子对其进行打包YOLOv5后实现了可以给快递定制包装盒 分析自适应锚框的原理 数据统计 遍历训练数据集收集所有目标框的宽高信息将这些宽高信息进行归一化处理通常相对于图像的尺寸进行归一化以确保数据的统一性类似于统计所有包裹的长和宽发现它们的大小分布范围 聚类分析 使用 k-means 聚类算法 或 k-means 算法对目标框的宽高比进行聚类分析聚类的目的是将所有目标框划分为若干类每一类的中心点代表一个锚框的宽高大小使用IOU作为聚类的距离度量标准优化箱子的尺寸将包裹需要箱子主要分为三类大中小 计算距离IOU作为距离度量 IOU 越高表示锚框越贴近目标框在聚类过程中k-means 会通过迭代更新使得每个锚框聚类中心点与目标框的 IoU 达到最优 确定最终锚框 聚类完成后选取每一类的中心点也就是聚类的均值作为最终的锚框尺寸这些锚框就会作为模型的默认锚框后续用于训练和推理根据之前的统计结果决定每种箱子的数量例如各种箱子的比例然后可以使用这些箱子去装包裹从而确保大部分包裹都可以适配 自动调整重点 YOLOv5 可以在训练时自动计算和推荐适合数据集的锚框配置例如快递业务扩展到新城市对应新数据集你可以再次统计包裹尺寸并调整箱子配置这个过程是自动化的不需要每次手动测量和设计箱子 分析锚框的尺寸开始已经计算完成但是后面还需要自动化计算的原因 YOLOv5在训练之前也就是输入数据的时候会通过自动化流程生成一组锚框这些锚框在训练开始的时候就已经固定了所以在输入数据的时候锚框的尺寸也是已知的 后续的自动计算是为了验证和调整锚框 虽然之前已经根据输入数据锚框已经生成但是锚框的尺寸不一定是最优的需要注意的是这种检查和调整只会在训练开始之前进行不会在训练过程中重复进行 锚框生成是训练前的优化步骤目标检测模型的性能高度依赖锚框的设计。如果锚框与目标框的尺寸分布不匹配会导致正样本数量不足模型难以有效学习。因此在训练前进行锚框的自动优化确保它与数据集的目标框分布贴合是提升模型性能的重要步骤 总结自动计算锚框只发生在训练前而在训练过程中锚框是固定的参与损失计算和目标检测 自适应图片缩放 使用自适应图片缩放的核心目的就是将输入图像缩小到一个统一大小同事保持目标的比例以及位置信息不回失真从而最终适配模型的输入要求 个人理解自适应图片缩放是什么 例如我们要将一张照片打印到一个固定大小的相框中例如该相框是20*20厘米此时原始照片的比例如果是16 : 9此时如果要是直接拉伸到20*20的话势必会导致图像变形 所以首先将图片等比缩小到宽或高最接近20厘米的一边在很多图片调整工具中都可以看到类似效果假如此时将图片调整到了高20厘米宽度则是11.25厘米 最后为了让照片完整的放入相框那么需要在左右填充空白从而使其整体图像适配相框的大小 自适应图片缩放的主要步骤 等比例缩放保证目标比例不失真、边缘填充将图像填充到固定尺寸一致性处理训练和推理阶段保持相同的缩放和填充方式 Backbone Focus模块 6.0版本后不再使用在YOLOv5主干网络中主要用于高效的提取和处理输入图像的特征其核心思想就是通过对输入图像进行切片操作然后将图像的空间信息转化为通道信息从而达到降采样的目的同时尽可能的保留更多的细节特征 优缺点总结 优点总结 高效降采样 Focus 模块通过切片和拼接操作实现降采样比传统的卷积下采样如 3×3 卷积加步幅 2更加高效这种操作减少了计算开销尤其是在高分辨率输入的情况下保留更多的细节信息 Focus 模块将空间信息重新分配到通道维度中避免了直接下采样导致的信息丢失实现比较简单 模块实现仅需要简单的切片、拼接和卷积操作易于集成到现有的网络架构中 缺点总结 特征选择有限 Focus 模块的切片操作是固定的即按像素位置切片无法根据任务需求动态调整很多情况下这种操作会忽略很多重要的特征区域对特定任务的作用有限 虽然 Focus 模块在目标检测任务中表现优秀但在其他任务如图像分类中未必有显著优势 该模块的主要步骤 输入图像切片操作 对输入图像进行切片操作也就是找到四个区域的像素点分别是左上角、右上角、左下角、右下角像素点通过该方式将原始空间的信息压缩到通道维度上原始输入 (640,640,3) 被切片为四个子图像每个子图像的大小为(320,320,3) 通道拼接下文详细分析 将4个子图像的通道维度拼接在一起形成一个新的张量也就是( H/2 , W/2 , 4C注意此处的高和宽都缩小了一半但是通道数扩大的了4倍 后续卷积操作 对拼接后的特征图执行1*1或者3*3的卷积从而进一步提取特征和压缩通道数 分析该模块主要干了什么事情 假设你在观察一幅地图原始地图非常大例如 640×640640 \times 640640×640 的分辨率如果直接将地图缩小到 320×320320 \times 320320×320一些细节可能会丢失 Focus的做法则是将地图切成四块左上、右上、左下、右下然后分别放在一起观察拼接成新的图像通过该方式不仅可以缩小视野也可以更好的识别小物体对象 分析该模块并不是简单的缩小重点 起初将该处理解成为类似于mosaic增强一样将一张图片切割成四个小部分然后再进行拼接的方法但是该模块并不是直接对图像进行缩小与其还是有本质区别 Focus 模块并不是将图像整个压缩到一个更小的分辨率而是通过切片操作将原始图像中的局部细节像素点重新组织到通道维度中例如它将原始640*640图像分为四个区域每个区域的大小就是320*320 左上角像素点所有偶数行、偶数列的像素右上角像素点所有奇数行、偶数列的像素左下角像素点所有偶数行、奇数列的像素右下角像素点所有奇数行、奇数列的像素 这些切片区域不是简单的裁剪而是将整幅图像的所有像素点重新分布到不同的通道中从空间维度重新编码到通道维度 例如原始 640×640×3的图像经过切片后变为 320×320×12通道数增加到 12从而完全保留了原始的像素信息 可以简单理解为有640个文件原本是逐个铺开这样的话太占据空间那么将其分为四个区域每个区域中制作一个类似于多层抽屉的存储夹拓展通道这样就实现了将所有文件分别放入四个区域同时不损失任何文件信息 分析该模块会导致原图像发生变化吗 Focus 模块不是将相同颜色的像素放在一起而是将原图像的所有像素信息重新组织到通道维度中原始信息不会丢失它的核心目标就是通过降采样和信息重组保存细节的同时提高效率 原始的书柜640 层存储着书籍Focus 模块将书按照奇偶顺序重新分组比如奇数层的书分到左上通道偶数层的书分到右上通道最终所有书都存储到了新的维度通道中。书柜整体被压缩但书的信息没有丢失。 结合开始图片理解 输入图片然后进行切片操作 左上取所有奇数行和奇数列的像素右上取所有奇数行和偶数列的像素左下取所有偶数行和奇数列的像素右下取所有偶数行和偶数列的像素拼接通道整体缩小两倍通道扩大4倍保留了图像的所有细节 CSP结构 理解CSP 传统模型中没有CSP模块的时候就像一个团队每一个人负责一些任务最终合并这些成功但是这种分配方式很容易出现问题因为如果一个人出错那么整个流程都会受到影响因为每个人需要处理自己领到任务的所有信息所有任务都是相互耦合的最终导致效率低 CSP则是将任务分成两个部分一部分是复杂任务让一部分人去负责另一部人则是简单任务再安排一拨人负责 这样两组人独立完成工作最终汇报任务成果这个就类似于CSP中的拼接特征Concat最终再统一优化一些细节也就是最后卷积层的融合特征 CSP的核心作用分析 首先是分流将工作拆分成复杂任务也就是需要深度处理的特征路径和简单任务也就是需要保留原始特征路径从而减少冗余计算。这个就像一些任务直接完成不需要重复操作可以提高效率 其次是并行两条路径可以同时工作类似于分组合作大大减少了单线程的工作负担 最后进行融合两组人两条路径的成果最终通过拼接Concat和优化卷积整合在一起确保整体效果 通过源码中的两个类C3类和Bottleneck类分析其关系 C3类就是CSP结构类似于厨房的整体布局和工作流程负责将食材分流处理并最终组合确保效率和质量 Bottleneck类则类似于厨房中具体的准备和烹饪步骤负责对食材进行详细加工提升菜品的复杂度和风味 分析C3类CSP结构 输入通道c1类似于食材接收区所有的食材和原材料首先被送到厨房的接收区中分流处理 主处理路径经过多个处理步骤类似于对食材进一步的进行深加工保持原始状态这条路径快速通过一些简单的准备步骤保持食材的原始风味和质地 进一步分析C3结构的源码 前向传播过程分析 输入数据后分别经过两条路径对参数进行处理最后c1和c2在通道维度上进行拼接最后通过cv3基进行最后的1*1卷积得到最终的输出 Bottleneck模块 输入的x先通过self.cv1和self.cv2进行两次卷积交换如果self.add为True的时候那么就将变换后的输出与原始输入x进行相加从而实现残差连接如果self.add为False那么就返回变换后的输出 class Bottleneck(nn.Module):# 标准瓶颈层常用于减少参数并提高模型的计算效率def __init__(self, c1, c2, shortcutTrue, g1, e0.5): # ch_in, ch_out, shortcut, groups, expansionsuper().__init__() # 调用父类构造函数进行初始化c_ int(c2 * e) # 计算中间层的通道数通过扩展系数 e 控制self.cv1 Conv(c1, c_, 1, 1) # 第一个 1x1 卷积用于降维self.cv2 Conv(c_, c2, 3, 1, gg) # 第二个 3x3 卷积用于特征提取# 判断是否启用捷径连接shortcut仅当 c1 等于 c2 且 shortcut 为 True 时启用self.add shortcut and c1 c2def forward(self, x):# 如果 self.add 为 True则返回输入 x 与经过两个卷积层后的输出的相加结果残差连接# 否则仅返回卷积后的输出return x self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x)) 总结 C3 类 管理整体的工作流程分流和组合特征食材Bottleneck 类 处理细节增强和优化特征食材的准备和烹饪步骤 SPPF 基本了解 其是一种常用的多尺度特征池化方法旨在通过不同尺度的池化操作捕捉图像的多层次信息。相比于SPPSPPF在保持类似性能的同时通过优化池化操作显著提高了计算速度和效率 主要功能 多尺度特征捕捉通过不同大小的池化窗口捕捉图像的多尺度信息增强模型对不同大小目标的检测能力保持空间信息通过最大池化操作保持特征图的空间信息有助于后续的特征融合和检测高效计算优化的池化策略减少了计算开销提升了模型的推理速度】 理解SPPF模块 初级过滤conv1通过1x1卷积将原水输入特征图进行初步处理调整水的流量通道数多级过滤p1, p2, p3依次通过三层不同的过滤器池化操作捕捉不同大小的杂质特征信息特征拼接拼接水流将初级过滤后的水流与各级过滤后的水流进行混合确保水质的全面净化多尺度特征融合最终处理conv2通过1x1卷积将混合后的水流进行最终处理得到纯净的出水融合后的特征图 模块分析 import torch import torch.nn as nn import warningsclass SPPF(nn.Module):# Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocherdef __init__(self, c1, c2, k5):初始化SPPF层 (Spatial Pyramid Pooling - Fast)用于YOLOv5模型中。SPPF层通过多次最大池化操作将不同尺度的信息融合增强特征表示能力。参数:c1 (int): 输入特征图的通道数 (input channels)。c2 (int): 输出特征图的通道数 (output channels)即最终卷积层的输出通道数。k (int): 最大池化层的核大小 (kernel size)默认为5表示使用的池化核大小为k(5, 9, 13)。super().__init__() # 调用父类 nn.Module 的初始化方法初始化层和参数c_ c1 // 2 # 计算隐藏通道数通常取输入通道数的一半。这用于第一层卷积。# 第一层卷积将输入通道数c1压缩为c_即输入特征图的通道数减少一半self.cv1 Conv(c1, c_, 1, 1) # 1x1卷积作用是减少通道数并保持空间大小# 第二层卷积将拼接后的特征图通道数转换为输出通道数c2self.cv2 Conv(c_ * 4, c2, 1, 1) # 1x1卷积输出特征图通道数为c2# 最大池化层定义了大小为k的池化核步长为1填充为k的一半self.m nn.MaxPool2d(kernel_sizek, stride1, paddingk // 2)def forward(self, x):前向传播函数定义了SPPF层的数据流。该函数通过两次最大池化和卷积层处理输入特征图并融合多个尺度的信息。参数:x (Tensor): 输入特征图形状为 (batch_size, c1, h, w)其中c1为输入通道数。返回:Tensor: 经过SPPF层处理后的输出特征图形状为 (batch_size, c2, h, w)。# 第一次卷积操作将输入特征图x的通道数从c1压缩为c_通常为c1的一半x self.cv1(x)# 抑制一些警告防止在使用max_pool2d时产生冗余警告with warnings.catch_warnings():warnings.simplefilter(ignore) # 忽略池化操作中的一些警告特别是来自torch 1.9.0版本的警告# 进行最大池化操作首先对x进行池化y1 self.m(x) # 第一次池化y2 self.m(y1) # 第二次池化池化两次后可以捕捉更大范围的信息# 拼接原始输入x和两次池化后的特征图x, y1, y2, 经过第二次池化后的y2# 然后通过第二个卷积层进行处理最后返回输出特征图return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1)) # 拼接后的特征图通过1x1卷积进一步处理 Neck网络 该处的网络结构即通过FPN和PAN协同进行工作与YOLOv3中的上采样和下采样原理一样 下文是yolov3中相关原理参考理解 上采样与下采用 YOLOv3中上采样和下采样是配合使用的其中下采样是在BackBone中完成的上采样则是在Neck层中完成该处进行整合一同学习 理解下采样与上采样 下采样就类似于如何我们想要在电子地图上看到这个城市的全貌我们此时需要会使用一张缩略图类似于深层特征图因为缩略图能快速提供全局信息大目标的语义信息但是通过缩略图会失去一些细节也就是会忽略小目标的信息 上采样则是想要了解城市中的某个街道那么就需要将图片放大到跟高的分辨力放大后你还需要结合更详细的原始地图类似于拼接浅层特征才能获得准确的细节信息 下采样的实现 通过Backbone多次卷积核池化操作对输入的图像进行下采样每次下采样都会将特征图尺寸缩小一半最终得到13*13的深层特征图 13×13下采样 32 倍深层语义特征用于检测大目标26×26下采样 16 倍中层特征用于检测中目标52×52下采样 8 倍浅层特征用于检测小目标 上采样 13×13 的深层特征图 → 上采样到 26×26 → 与 Backbone 输出的 26×26 特征图拼接 26×26 的特征图 → 上采样到 52×52 → 与 Backbone 输出的 52×52 特征图拼接 上采样的主要目的是将低分辨率特征图放大到更高分辨率从而能够与浅层的高分辨率特征图进行融合这样非常有利于检测小目标因为小目标在低分辨率特征图中可能已经失去了关键信息 上采样后与中层或浅层特征图进行拼接Concat融合语义信息和空间细节信息从而提升对不同尺度目标的检测能力 特征拼接 理解 深层特征图类似于全局地图适合宏观看全局知道整体布局但是缺乏细节浅层特征图则类似于一个局部放大镜更加适合观察细节但是难以观察全局 比如你在找一座城市中的某个建筑物目标检测全局地图告诉你大概在哪个区域深层特征图的语义信息放大镜帮助你找到建筑物的具体位置和形状浅层特征图的细节信息将两者结合后你既能快速找到建筑物的区域又能精确确定它的形状和位置 特征图拼接实现分析 低分辨率的深层特征图和高分辨率的浅层特征图都来自于Backbone中 通过按通道维数进行拼接也就是在特征图的通道上进行连接例如上采样和下采样都是13*13的图最后拼接后的只会是通道数增加但是其图片的分辨率不变 拼接后的特征图通过卷积操作CBL卷积 BN Leaky ReLU进一步提取信息最终用于检测中目标 特征拼接的优点 提升网络对小目标的检测能力小目标的信息通常在深层特征图中被稀释甚至丢失特征拼接通过引入浅层特征图中的高分辨率信息弥补了深层特征图的不足 同时可以提高目标定位的准确性深层特征图中虽然包含语义信息但定位能力较弱拼接浅层特征图后网络可以结合细节信息更精确地定位目标的位置 卷积调整 理解 主要作用是优化对合并后的信息进行归纳总结去掉多余的噪声和重复部分从而使得信息更加的准确 从Neck层整体理解该处的作用例如一个团队项目正在整理与优化 假设两个小组 一个小组提供高层次的战略规划深层特征图另一个小组提供具体的实施细节浅层特征图拼接相当于将两个小组的报告合并成一份综合报告卷积调整相当于一个总负责人对这份报告进行整理和提炼最终生成一份清晰简洁的方案供领导决策目标检测 具体实现分析 输入 拼接后的特征图例如来自上采样后的 26×26 特征图和浅层的 26×26 特征图拼接假设拼接后特征图的通道数为 512 卷积操作 1×1 卷积用于减少通道数降低计算量3×3 卷积用于捕捉局部空间特征最终将特征图的通道数调整到适合输出的形状如 256 输出 调整后的特征图仍然是 26×26但通道数已经减少信息更集中 目标框回归 因为在目标检测任务中除了识别出目标物体的类别外准确定位目标的位置是一样重要。目标框回归可以使得模型不仅直到图像中存在什么物体同时还可以确定它们具体位于图像的哪个部分 简单来说模型如果需要预测边界框那么就需要四个参数 中心坐标x, y边界框中心点相对于图像的比例位置宽度和高度w, h边界框的宽度和高度相对于图像尺寸的比例 原理分析 1. 网格划分与锚框机制 首先就是将输入图像划分为S×S的网格每个网格负责检测位于其范围内的目标。每个网格单元预测多个锚框每个锚框对应一个潜在的目标 锚框也就是Anchor Boxes参考YOLOv3原理中的锚框设定以及自适应锚框章节的知识。每个网格单元预测多个锚框其中每个锚框都有以下参数 偏移量tx, ty相对于网格单元左上角的中心点偏移宽度和高度tw, th相对于锚框预定义尺寸的缩放因子置信度to表示该锚框包含目标的置信度类别概率tc表示目标属于某个类别的概率 2. 通过网络预测上述参数然后将它们转换为实际的边界框坐标 中心坐标预测tx,ty使用sigmoid激活函数将tx和ty限制在[0, 1]之间(cx,cy是网格左上角的坐标 宽度和高度预测tw , th也就是预测框的锚框尺寸 最后计算置信度与类别概率使用sigmoid激活函数将置信度限制在[0, 1]之间类别概率通过softmax或者sigmoid函数进行计算 3. 损失函数 定位损失 通过使用CIoUComplete IoU或GIoUGeneralized IoU损失来衡量预测边界框与真实边界框之间的差异通过上述计算损失考虑边界框的重叠程度、中心点距离以及宽高比例置信度损失 使用二元交叉熵损失衡量预测的置信度与真实标签0或1之间的差异分类损失 使用交叉熵损失或其他适当的损失函数来衡量预测的类别概率与真实类别标签之间的差异 4. 进入后处理阶段以及非极大值抑制NMS 在预测完成后YOLOv5对生成的边界框进行后处理包括置信度筛选和非极大值抑制NMS以去除冗余的重叠框仅保留最优的预测结果 理解重要 假设你是一个学校的保安负责监控中心内的人群流动。你使用一个摄像头监控商场的某个区域希望识别并标记出进入商场的每一个人 摄像头捕捉图像 摄像头相当于YOLOv5的输入图像 划分监控区域 你将监控区域划分为多个小区域网格每个小区域负责观察和记录其内是否有新的人进入 预定义观测框锚框 你为每个小区域预设几个不同大小的观测框分别适用于不同体型的人例如小孩、高中生、大学生、老人 检测和记录 当有新的人进入某个小区域时你记录下他们的位置和体型 中心坐标x, y记录每个人站立的位置宽度和高度w, h估算每个人的体型大小置信度评估该记录是否准确例如是否有遮挡或模糊 优化与调整 根据记录的准确性你调整观测框的位置和大小以提高未来记录的精度 去除冗余记录 如果在同一个小区域内有多个观测框记录到相同的人你选择最准确的一条记录去除其他重复的记录 正负样本匹配 目标检测任务中模型需要识别图像中的目标物体并准确定位其边界框。在训练过程中模型生成的多个预测框需要与真实的目标框进行匹配以确定哪些预测框是有效的正样本哪些是无效的负样本上述的过程就是正负样本匹配 正样本与真实目标框匹配度较高的预测框负责学习目标的定位和分类负样本与任何真实目标框匹配度较低的预测框负责学习背景的区分 理解重要 例如通过监控设备检测教室中的学生从而达到考勤的目的 输入图像然后将教室划分成多个网格根据与设定的观察框得到锚框识别出勤学生 正样本观察框内有学生出现负样本观察框内无学生出现记录学生位置和出勤状态对于正样本记录学生的具体位置和出勤过滤冗余记录 如果多个观察框覆盖同一个学生选择最准确的记录避免重复记录 正负样本匹配机制 锚框和网格划分 首先预定义几个锚框通过K-Means聚类算法在训练数据集上预先计算得到从而可以适应数据集中的目标尺寸分布 然后将输入的图像划分为多个网格每个网格单元负责检测位于其范围内的目标每个网格单元会预测多个锚框每个锚框包含边界框坐标、置信度和类别概率。 匹配策略分析 计算IOU预测框与真实框的交集面积除以预测框与真实框的并集部分确定正样本 最大IoU匹配对于每个真实目标框选择与之具有最高IoU的预测锚框作为正样本阈值匹配若预测锚框与真实目标框的IoU超过设定的阈值如0.5则将其视为正样本确定负样本 未匹配的锚框未被任何真实目标框匹配且IoU低于阈值的预测锚框被视为负样本背景学习负样本用于学习区分背景与目标提高模型的分类能力 具体实现步骤总结 预定义锚框在不同尺度的特征图上预定义多个锚框真实目标分配将每个真实目标框分配给具有最高IoU的锚框作为正样本筛选负样本将未被任何真实目标框匹配且IoU低于阈值的锚框视为负样本限制正负样本数量为了平衡正负样本的比例YOLOv5可能对正负样本的数量进行限制损失函数计算基于正负样本分别计算定位损失、置信度损失和分类损失 实现原理 1. 锚框匹配算法 初始化锚框锚框通常通过K-Means聚类在训练数据集上预先计算得到。YOLOv5在不同尺度的特征图上使用不同的锚框尺寸以适应不同大小的目标参考自适应锚框 计算IOU对于每个真实目标框计算其与所有预测锚框的IoU值 选择匹配锚框将每个真实目标框分配给与之IoU最高的锚框作为正样本。若该锚框的IoU低于设定阈值则可能不被视为正样本 处理重叠匹配一个锚框只能对应一个真实目标框即避免多个真实目标框匹配到同一个锚框 2. 负样本筛选 IoU阈值通常设定一个IoU阈值如0.5低于该阈值的锚框被视为负样本背景学习负样本用于训练模型识别背景提高模型的分类能力减少误报 3. 损失函数与权重 定位损失 注意这里仅仅针对正样本计算主要用于衡量预测边界框和真实框的差异一般常用的损失函数有CIoU损失或GIoU损失置信度损失 此处针对正样本和负样本都需要进行计算主要用于衡量预测置信度与真实标签之间的差异该处主要使用二院交叉熵损失分类损失 该处仅对正样本计算用于衡量预测类别概率与真实类别标签之间的差异使用交叉熵损失或Focal Loss 激活函数 SiLU函数 分析1YOLOv5采用SiLU激活函数原因分析 如果将这两个激活函数作为调味品的话那么两者就可以理解成如下 ReLU 激活函数就像简单的盐快速、高效但不够细腻对负值直接截断SiLU 激活函数像复合调味料可以根据输入的特征调整输出对负值调整后输出一个小值从而使得整体模型更加灵活 激活函数作用回顾 神经网络的每一层是一个线性变换如矩阵乘法如果没有激活函数整个网络就会退化为一个线性系统无论有多少层整体还是线性变换。激活函数通过引入非线性使得网络能够学习复杂的非线性关系从而提升模型表达能力 同时激活函数可以提高模型的泛化能力激活函数可以帮助模型在训练的时候更好的拟合数据同时在测试的时候对未见数据有更好的泛化能力 ReLU 会在负值区域“截断”梯度可能导致梯度消失问题SiLU 的梯度连续且不会为 0这有助于稳定梯度传播提高训练效果 分析2激活函数存在于YOLOv5的整体过程 输入层到卷积层输入图像会先通过一系列的卷积操作每个卷积层的输出会经过SiLu激活函数提取多尺度的特征 特征提取阶段Backbone中SiLU激活函数应用于每个卷积模块的输出主要用于增强特征表达能力 检测头阶段检测头中分类和回归部分的中间层也会使用 SiLU 激活函数增强检测性能 输出阶段 边界框回归通常使用线性变换类别置信度预测使用 Sigmoid 将结果限制在 [0, 1] 范围内 损失函数 损失函数即衡量模型预测结果和真实标签之间差异的函数因为在目标检测任务中损失函数不仅需要考虑目标的分类准确性还需要关注目标的位置和大小的精确度 主要组成部分 边界框回归损失确保预测的边界框准确的覆盖目标物体目标置信度损失评估预测边界框是否包含目标类别分类损失准确识别目标物体的类别 分析正负样本匹配在损失函数中的作用 首先正负样本匹配在损失函数中的作用 定位损失仅对正样本计算优化边界框的准确性目标置信度损失对正样本和负样本都计算正样本希望置信度接近1负样本希望接近0分类损失仅对正样本计算优化目标类别的准确性 目标置信度损失 目标置信度损失用于衡量预测边界框是否包含目标YOLOv5中使用二元交叉熵损失来计算预测置信度和真实标签之间的差异 y 是真实标签1表示包含目标0表示不包含y^是预测的置信度 类别分类损失 类别分类损失用于衡量预测类别概率与真实类别标签之间的差异YOLOv5通常使用交叉熵损失或Focal Loss来计算这一部分的损失 边界框回归损失 边界框回归损失用于衡量预测的边界框与真实边界框之间的差异YOLOv5常使用**CIoU或GIoU作为边界框回归的损失函数 CloU损失不仅考虑了预测框和真实框的重叠程度也就是IOU同时还考虑到了中心点距离和宽高比例差异从而进一步提升了边界框回归的精确度 GIoU损失在IoU基础上引入了最小闭包框的面积差解决了IoU在没有重叠时梯度为零的问题 注部分图片来源于“炮哥带你学”
文章转载自:
http://www.morning.lftpl.cn.gov.cn.lftpl.cn
http://www.morning.xzsqb.cn.gov.cn.xzsqb.cn
http://www.morning.mnygn.cn.gov.cn.mnygn.cn
http://www.morning.ylyzk.cn.gov.cn.ylyzk.cn
http://www.morning.lmmkf.cn.gov.cn.lmmkf.cn
http://www.morning.lzbut.cn.gov.cn.lzbut.cn
http://www.morning.hmlpn.cn.gov.cn.hmlpn.cn
http://www.morning.fjkkx.cn.gov.cn.fjkkx.cn
http://www.morning.rwls.cn.gov.cn.rwls.cn
http://www.morning.yhjlg.cn.gov.cn.yhjlg.cn
http://www.morning.scrnt.cn.gov.cn.scrnt.cn
http://www.morning.wmhlz.cn.gov.cn.wmhlz.cn
http://www.morning.gcthj.cn.gov.cn.gcthj.cn
http://www.morning.rscrj.cn.gov.cn.rscrj.cn
http://www.morning.xlbyx.cn.gov.cn.xlbyx.cn
http://www.morning.ccsdx.cn.gov.cn.ccsdx.cn
http://www.morning.yqhdy.cn.gov.cn.yqhdy.cn
http://www.morning.mrpqg.cn.gov.cn.mrpqg.cn
http://www.morning.wtbzt.cn.gov.cn.wtbzt.cn
http://www.morning.gthc.cn.gov.cn.gthc.cn
http://www.morning.gediba.com.gov.cn.gediba.com
http://www.morning.zgnng.cn.gov.cn.zgnng.cn
http://www.morning.jyjqh.cn.gov.cn.jyjqh.cn
http://www.morning.fjglf.cn.gov.cn.fjglf.cn
http://www.morning.hxlpm.cn.gov.cn.hxlpm.cn
http://www.morning.fynkt.cn.gov.cn.fynkt.cn
http://www.morning.kdtdh.cn.gov.cn.kdtdh.cn
http://www.morning.bbtn.cn.gov.cn.bbtn.cn
http://www.morning.qnrpj.cn.gov.cn.qnrpj.cn
http://www.morning.qywfw.cn.gov.cn.qywfw.cn
http://www.morning.zcwzl.cn.gov.cn.zcwzl.cn
http://www.morning.rymb.cn.gov.cn.rymb.cn
http://www.morning.pakistantractors.com.gov.cn.pakistantractors.com
http://www.morning.dkfrd.cn.gov.cn.dkfrd.cn
http://www.morning.lbzgt.cn.gov.cn.lbzgt.cn
http://www.morning.ygflz.cn.gov.cn.ygflz.cn
http://www.morning.ztqyj.cn.gov.cn.ztqyj.cn
http://www.morning.fkyrk.cn.gov.cn.fkyrk.cn
http://www.morning.hrzhg.cn.gov.cn.hrzhg.cn
http://www.morning.knlyl.cn.gov.cn.knlyl.cn
http://www.morning.fmqng.cn.gov.cn.fmqng.cn
http://www.morning.dzpnl.cn.gov.cn.dzpnl.cn
http://www.morning.cmdfh.cn.gov.cn.cmdfh.cn
http://www.morning.dnzyx.cn.gov.cn.dnzyx.cn
http://www.morning.hbpjb.cn.gov.cn.hbpjb.cn
http://www.morning.lgqdl.cn.gov.cn.lgqdl.cn
http://www.morning.ebpz.cn.gov.cn.ebpz.cn
http://www.morning.jwwfk.cn.gov.cn.jwwfk.cn
http://www.morning.dpqwq.cn.gov.cn.dpqwq.cn
http://www.morning.gpcy.cn.gov.cn.gpcy.cn
http://www.morning.lxmks.cn.gov.cn.lxmks.cn
http://www.morning.bmncq.cn.gov.cn.bmncq.cn
http://www.morning.ddxjr.cn.gov.cn.ddxjr.cn
http://www.morning.kjgrg.cn.gov.cn.kjgrg.cn
http://www.morning.mxdiy.com.gov.cn.mxdiy.com
http://www.morning.mrfbp.cn.gov.cn.mrfbp.cn
http://www.morning.bmnm.cn.gov.cn.bmnm.cn
http://www.morning.ykyfq.cn.gov.cn.ykyfq.cn
http://www.morning.darwallet.cn.gov.cn.darwallet.cn
http://www.morning.cbpkr.cn.gov.cn.cbpkr.cn
http://www.morning.zgqysw.cn.gov.cn.zgqysw.cn
http://www.morning.mytmx.cn.gov.cn.mytmx.cn
http://www.morning.jcwrb.cn.gov.cn.jcwrb.cn
http://www.morning.fnhxp.cn.gov.cn.fnhxp.cn
http://www.morning.khxyx.cn.gov.cn.khxyx.cn
http://www.morning.ckhry.cn.gov.cn.ckhry.cn
http://www.morning.ptqbt.cn.gov.cn.ptqbt.cn
http://www.morning.ckcjq.cn.gov.cn.ckcjq.cn
http://www.morning.rdxp.cn.gov.cn.rdxp.cn
http://www.morning.kxqmh.cn.gov.cn.kxqmh.cn
http://www.morning.bmnm.cn.gov.cn.bmnm.cn
http://www.morning.dxqfh.cn.gov.cn.dxqfh.cn
http://www.morning.wsxly.cn.gov.cn.wsxly.cn
http://www.morning.khpx.cn.gov.cn.khpx.cn
http://www.morning.yxwcj.cn.gov.cn.yxwcj.cn
http://www.morning.kpcjl.cn.gov.cn.kpcjl.cn
http://www.morning.xxwfq.cn.gov.cn.xxwfq.cn
http://www.morning.xqxlb.cn.gov.cn.xqxlb.cn
http://www.morning.lgmty.cn.gov.cn.lgmty.cn
http://www.morning.jfsbs.cn.gov.cn.jfsbs.cn
http://www.tj-hxxt.cn/news/235330.html

相关文章:

  • 做振动盘的企业网站河南省建设监理协会新网站
  • 公司网站制作模板价格低速度快很多人喜欢来这翻译
  • wordpress怎么弹出需要输入西安新站网站推广优化
  • 用asp.net做的网站框架做淘宝客必须要有网站吗
  • 摄影网站采用照片做宣传_版权费是多少?网站维护专业
  • 企业网站平台如何做网络推广什么网站做的产品海报比较多
  • 网站建设工具最简洁的网站开发预算报表
  • 网站编辑器做段落空格品牌定位
  • 华为云定制建站服务怎么样手机端网页设计规范
  • 傻瓜式网站建设wordpress 媒体库 文件夹
  • 益阳市网站建设随州北京网站建设
  • 视频网站开发的论文app开发一般需要多少钱
  • 条幅在线设计网站wordpress是否可以排版
  • 百雀羚网站建设模版好的平面设计
  • 网络公司经营范围网站建设服装企业网站建设可行性分析
  • 电子商务平台发展现状seo优化怎么做
  • 洛阳网站设计室内装修设计需要学哪些东西
  • 做网站划算还是做app划算电子科技公司网站
  • 政务网站开发方案网站架构设计的意义
  • 宁夏网站开发电脑什么网站可以做长图攻略
  • 雄安做网站上海的招聘网站有哪些
  • 网站的种类百度如何发布作品
  • 网站建设可以给公司带来除了91还有什么关键词
  • 高端网站建设,恩愉科技设计类电子书网站
  • 成华区微信网站建设推高水平的锦州网站建设
  • 浙江省住房建设局网站首页南京谷歌seo
  • 辽宁个人网站建设口碑推荐国内阿里网站建设
  • 国外seo网站wordpress播放网易云
  • 金华建设网站的公司如何打开国外网站
  • 北京的网站建设宁夏建设厅网站