网站建设投资资金如何做网站产品图片

pingmian/2025/10/9 4:29:17/文章来源:
网站建设投资资金,如何做网站产品图片,济南网络公司建站,网络热词2021目标检测概述 什么是目标检测#xff1f; 滑动窗口#xff08;Sliding Window#xff09; 滑动窗口的效率问题和改进 滑动窗口的效率问题#xff1a;计算成本很大 改进思路 1#xff1a;使用启发式算法替换暴力遍历 例如 R-CNN#xff0c;Fast R-CNN 中使用 Selectiv…目标检测概述 什么是目标检测 滑动窗口Sliding Window 滑动窗口的效率问题和改进 滑动窗口的效率问题计算成本很大 改进思路 1使用启发式算法替换暴力遍历 例如 R-CNNFast R-CNN 中使用 Selective Search 产生提议框 区域提议 依赖外部算法系统实现复杂难以联合优化性能 改进思路 2减少冗余计算使用卷积网络实现密集预测目前普遍采用的方式 改进思路用卷积一次性计算所有特征再取出对应位置的特征完成分类 原图滑窗 重叠区域重复计算卷积 ❌ 特征图滑窗 重叠区域只计算一次卷积特征与窗的个数无关 ✔ 在特征图上进行密集预测 目标检测的基本范式 One Stage: YOLO系列 输出检测框的左上角和右下角坐标 (x1,y1),(x2,y2) 一个CNN网络回归预测即可 Two Stage: Faster-rcnn Mask-Rcnn系列 与one-stage 相比多了一步提取候选框预选。 目标检测技术的演进 基础知识和术语 框、边界框Bounding Box 框泛指图像上的矩形框边界横平竖直 描述一个框需要 4 个像素值 • 方式1左上右下边界坐标 ,, , • 方式2中心坐标和框的长宽 , , , ℎ 边界框通常指紧密包围感兴趣物体的框 检测任务要求为图中出现的每个物体预测一个边界框 以下这些概念都指某种框用在不同的上下文中 区域Region框的同义词区域提议Region ProposalProposal 指算法预测的可能包含物体的框某种识别能力不强的算法的初步预测结果感兴趣区域Region of InterestRoI 当我们谈论需要进一步检测这个框中是否有物体时通常称框为感兴趣区域锚框Anchor BoxAnchor 图中预设的一系列基准框类似滑窗一些检测算法会基于锚框预测边界框 交并比 ( Intersection Over UnionIOU) 交并比IoU定义为两矩形框交集面积与并集面积之比是矩形框重合程度的衡量指标 置信度Confidence Score 置信度Confidence Score模型认可自身预测结果的程度通常需要为每个框预测一个置信度 大部分算法取分类模型预测物体属于特定类别的概率 部分算法让模型独立于分类单独预测一个置信度 我们倾向认可置信度高的预测结果 非极大值抑制Non-Maximum SuppressionNMS 滑窗类算法通常会在物体周围给出多个相近的检测框 这些框实际指向同一物体只需要保留其中置信度最高的。 通过非极大值抑制NMS算法实现 边界框回归 (Bounding Box Regression) 问题滑窗或其他方式产生的基准框与物体精准边界通常有偏差。 处理方法让模型在预测物体类别同时预测边界框相对于滑窗的偏移量。 边界框编码Bbox Coding 边界框的绝对偏移量在数值上通常较大不利于神经网络训练通常需要对偏移量进行编码作为回归 模型的预测目标 感受野 是特征图上的点能看到原始图像多大区域 感受野越大越能感受全局的物体。 堆叠两个 3 ∗ 3 33 3∗3的卷积层感受野是 5 ∗ 5 55 5∗5。 堆叠三个 3 ∗ 3 33 3∗3的卷积层感受野是 7 ∗ 7 77 7∗7。 为什么采用小卷积核的堆叠而不是直接采用一个大的卷积核来扩大感受野呢 准确度和召回率 TP: 被正确true的判为正样本(positive)的数目 (原来是正样本) FP: 被错误false的判为正样本(positive)的数目(原来是负样本) FN: 被错误true的判为负样本(negative)的数目 (原来是正样本) TN: 被正确true的判为负样本(negative)的数目 (原来是负样本) Precision: 描述的是找对的概率 Recall: 描述的是找全的概率 一个比方 假设在做一个多选题一共6个选项分别是A~F正确答案是ABCDE, 你选ABF。 答案中只有AB是对的准确率是2/3。但还有CDE没有选找全的比例是2/5. AP 和mAP 一般来说准确率和找回率不能同时兼顾一个高另一个就相对变低。 改变阈值IOU大于一定的阈值就被判为正样本可以得到不同的precision和recall, 然后做出presion - recall 的图一般叫做PR图 去上限求出与x轴围成的阴影的面积就是AP的值。如上图就是长方形A1A2A3,A4的面积之和。 对每个类别都计算出AP求均值得到mAP 单阶段和双阶段算法 单阶段算法 双阶段算法 YOLOv1 论文《You Only Look Once: Unified, Real-Time Object Detection》 概述 经典的one-stage方法You Only Look Once检测速度很快YOLO 的核心思想就是把目标检测转变成一个回归问题利用整张图作为网络的输入仅仅经过一个神经网络得到bounding box边界框 的位置及其所属的类别。 处理流程 输入数据 一张图片然后把图片分割成7*7的网格然后每个格子对应两个候选框长宽是根据经验得到真实值与候选框得到IOU选择IOU大的那个候选框对选出来的候选框的长宽进行微调预测的框的中心点坐标xy,长宽w, h, 还有置信度是物体的概率 网络架构 主干网络(GoogleLeNet)输入图像resize到 448 ∗ 448 ∗ 3 4484483 448∗448∗3经过多次卷积得到 7 ∗ 7 ∗ 1024 771024 7∗7∗1024的特征图。 检测头然后全连接展开第一个全连接得到4096个特征第二个全连接得到1470个特征 再通过reshape 得到 7 ∗ 7 ∗ 30 7730 7∗7∗30。每张图片的网格数是7*7的每个格子对应30个特征值其中30个特征值的前10个是两个候选框的值x,y,w,h,c后面的20代表的是20个分类即属于每个类别的概率 x,y,w,h表示的是归一化后的值是相对位置和大小 损失函数 优缺点 1优点 YOLO检测速度非常快。标准版本的YOLO可以每秒处理 45 张图像YOLO的极速版本每秒可以处理150帧图像。这就意味着 YOLO 可以以小于 25 毫秒延迟实时地处理视频。对于欠实时系统在准确率保证的情况下YOLO速度快于其他方法。YOLO 实时检测的平均精度是其他实时监测系统的两倍。迁移能力强能运用到其他的新的领域比如艺术品目标检测。 2局限 YOLO对相互靠近的物体以及很小的群体检测效果不好这是因为一个网格只预测了2个框并且都只属于同一类。由于损失函数的问题定位误差是影响检测效果的主要原因尤其是大小物体的处理上还有待加强。因为对于小的bounding boxessmall error影响更大 YOLO对不常见的角度的目标泛化性能偏弱。 YOLOv2 论文《YOLO9000: Better, Faster, Stronger》 概述 YOLOv2相对v1版本在继续保持处理速度的基础上从预测更准确Better速度更快Faster识别对象更多Stronger这三个方面进行了改进。其中识别更多对象也就是扩展到能够检测9000种不同对象称之为YOLO9000。 文章提出了一种新的训练方法–联合训练算法这种算法可以把这两种的数据集混合到一起。使用一种分层的观点对物体进行分类用巨量的分类数据集数据来扩充检测数据集从而把两种不同的数据集混合起来。联合训练算法的基本思路就是同时在检测数据集和分类数据集上训练物体检测器Object Detectors 用检测数据集的数据学习物体的准确位置用分类数据集的数据来增加分类的类别量、提升健壮性。 YOLO9000就是使用联合训练算法训练出来的他拥有9000类的分类信息这些分类信息学习自ImageNet分类数据集而物体位置检测则学习自COCO检测数据集。 改进细节 引入 Batch Normalizatioin 批量归一化有助于解决反向传播过程中的梯度消失和梯度爆炸问题降低对一些超参数比如学习率、网络参数的大小范围、激活函数的选择的敏感性并且每个batch分别进行归一化的时候起到了一定的正则化效果YOLOv2不再使用dropout从而能够获得更好的收敛速度和收敛效果。 使用Batch Normalization对网络进行优化让网络提高了收敛性同时还消除了对其他形式的正则化regularization的依赖。通过对YOLOv2的每一个卷积层增加Batch Normalization最终使得mAP提高了2%同时还使model正则化。使用Batch Normalization可以从model中去掉Dropout而不会产生过拟合。更大的分辨率 用于图像分类的训练样本很多而标注了边框的用于训练目标检测的样本相比而言就少了很多因为标注边框的人工成本比较高。所以目标检测模型通常都先用图像分类样本训练卷积层提取图像特征但这引出另一个问题就是图像分类样本的分辨率不是很高。所以YOLOv1使用ImageNet的图像分类样本采用 224 ∗ 224 224224 224∗224 作为输入来训练CNN卷积层。然后在训练目标检测时检测用的图像样本采用更高分辨率的 448 ∗ 448 448448 448∗448 像素图像作为输入但这样不一致的输入分辨率肯定会对模型性能有一定影响。 所以YOLOv2在采用 224 ∗ 224 224*224 224∗224 图像进行分类模型预训练后再采用 448 ∗ 448 448*448 448∗448 高分辨率样本对分类模型进行微调10个epoch使网络特征逐渐适应 448 ∗ 448 448448 448∗448 的分辨率。然后再使用 448 ∗ 448 448448 448∗448 的检测样本进行训练缓解了分辨率突然切换造成的影响最终通过使用高分辨率mAP提升了4%。采用先验框 YOLOv1包含有全连接层从而能直接预测Bounding Boxes的坐标值。Faster R-CNN算法只用卷积层与Region Proposal Network来预测Anchor Box的偏移值与置信度而不是直接预测坐标值YOLOv2作者发现通过预测偏移量而不是坐标值能够简化问题让神经网络学习起来更容易。 借鉴Faster RCNN的做法YOLOv2也尝试采用先验框anchor。在每个grid预先设定一组不同大小和宽高比的边框来覆盖整个图像的不同位置和多种尺度这些先验框作为预定义的候选区在神经网络中将检测其中是否存在对象以及微调边框的位置。 之前YOLOv1并没有采用先验框并且每个grid只预测两个bounding box也就是整个图像只有98个bounding box。YOLOv2如果每个grid采用9个先验框总共有131391521个先验框。所以最终YOLOv2去掉了全连接层使用Anchor Boxes来预测 Bounding Boxes。作者去掉了网络中一个Pooling层这让卷积层的输出能有更高的分辨率同时对网络结构进行收缩让其运行在 416 ∗ 416 416416 416∗416而不是 448 ∗ 448 448448 448∗448。 由于图片中的物体都倾向于出现在图片的中心位置特别是那种比较大的物体所以有一个单独位于物体中心的位置用于预测这些物体。YOLOv2的卷积层采用32这个值来下采样图片所以通过选择 416 ∗ 416 416416 416∗416用作输入尺寸最终能输出一个 13 ∗ 13 1313 13∗13的Feature Map。使用Anchor Box会让精确度稍微下降但用了它能让YOLOv2能预测出大于一千个框同时recall达到88%mAP达到69.2%。Dimension clusters 之前Anchor Box的尺寸是手动选择的所以尺寸还有优化的余地。YOLOv2尝试统计出更符合样本中对象尺寸的先验框这样就可以减少网络微调先验框到实际位置的难度。YOLOv2的做法是对训练集中标注的边框进行K-means聚类分析以寻找尽可能匹配样本的边框尺寸。如果我们用标准的欧式距离的k-means尺寸大的框比小框产生更多的错误。因为我们的目的是提高IOU分数这依赖于Box的大小所以距离度量的使用 其中centroid是聚类时被选作中心的边框box就是其它边框d就是两者间的“距离”IOU越大“距离”越近。YOLOv2给出的聚类分析结果如下图所示通过分析实验结果Figure 2在model复杂性与high recall之间权衡之后选择聚类分类数K5。 Direct location prediction 用Anchor Box的方法会让model变得不稳定尤其是在最开始几次迭代的时候。大多数不稳定因素产生自预测Box的(x,y)位置的时候。按照之前YOLOv1的方法网络不会预测偏移量而是根据YOLOv1中的网格单元的位置来直接预测坐标这就让Ground Truth的值介于0到1之间。而为了让网络的结果能落在这一范围内网络使用一个 Logistic Activation来对于网络预测结果进行限制让结果介于0到1之间。 Yolov2网络在每一个网格单元中预测出5个Bounding Boxes每个Bounding Boxes有五个坐标值txtytwtht0他们的关系见下图。假设一个网格单元对于图片左上角的偏移量是cxcyBounding Boxes Prior的宽度和高度是pwph那么预测的结果见下图右面的公式 Fine-Grained Features 目标检测面临的一个问题是图像中的需要检测的目标会有大有小输入图像经过多层网络提取特征最后输出的特征图中比如YOLOv2中输入416416经过卷积网络下采样最后输出是1313较小的对象可能特征已经不明显甚至被忽略掉了。为了更好的检测出一些比较小的对象最后输出的特征图需要保留一些更细节的信息。于是YOLOv2引入一种称为passthrough层的方法在特征图中保留一些细节信息。具体来说就是在最后一个pooling之前特征图的大小是2626512将其1拆4直接传递passthrough到pooling后并且又经过一组卷积的特征图两者叠加到一起作为输出的特征图。 多尺度训练 作者希望YOLOv2能健壮的运行于不同尺寸的图片之上所以把这一想法用于训练model中。区别于之前的补全图片的尺寸的方法YOLOv2每迭代几次都会改变网络参数。每10个Batch网络会随机地选择一个新的图片尺寸由于使用了下采样参数是32所以不同的尺寸大小也选择为32的倍数{320352……608}最小320320最大608608网络会自动改变尺寸并继续训练的过程。这一政策让网络在不同的输入尺寸上都能达到一个很好的预测效果同一网络能在不同分辨率上进行检测。当输入图片尺寸比较小的时候跑的比较快输入图片尺寸比较大的时候精度高所以你可以在YOLOv2的速度和精度上进行权衡。 网络结构 主干网络采用的是DarkNet19实际输入为 416 ∗ 416 416*416 416∗416没有FC层5次降采样(MaxPool)19个卷积层使用Batch Normilazation来让训练更稳定加速收敛使model规范化。使用Global Average Pooling 训练策略 分类的训练策略 网络训练在 ImageNet 1000类分类数据集上训练了160epochs使用随机梯度下降初始学习率为0.1 polynomial rate decay with a power of 4, weight decay of 0.0005 and momentum of 0.9 。训练期间使用标准的数据扩大方法随机裁剪、旋转、变换颜色hue、变换饱和度saturation 变换曝光度exposure shifts。在训练时把整个网络在更大的448*448分辨率上Fine Turnning 10个 epoches初始学习率设置为0.001这种网络达到达到76.5%top-1精确度93.3%top-5精确度。检测的训练策略 网络去掉了最后一个卷积层而加上了三个 3 ∗ 3 33 3∗3卷积层每个卷积层有1024个Filters每个卷积层紧接着一个 1 ∗ 1 11 1∗1卷积层。对于VOC数据网络预测出每个网格单元预测五个Bounding Boxes每个Bounding Boxes预测5个坐标和20类所以一共125个Filters增加了Passthough层来获取前面层的细粒度信息网络训练了160epoches初始学习率0.001数据扩大方法相同对COCO与VOC数据集的训练对策相同。 YOLOv3 论文《YOLOv3: An Incremental Improvement》 简介 V3最大的改进就是网络结构使其更适合小目标检测 特征做的更细致融入多持续特征图信息来预测不同规格物体 先验框更丰富了3种scale每种3个规格一共9种 softmax改进预测多标签任务 改进之处 多尺度预测 为了能够预测多尺度的目标YOLOv3 选择了三种不同shape的Anchors同时每种Anchors具有三种不同的尺度一共9种不同大小的Anchors。 特征金字塔网络feature parymid network,FPN) 如上图物体检测算法可以分为三步 Backbone : 主干网络提起特征 基于常用预训练的Backbone生成抽象的语义特征再进行特定任务微调。 Backbone生成的特征一般按stage划分分别记作C1、C2、C3、C4、C5、C6、C7等其中的数字与stage的编号相同代表的是分辨率减半的次数如C2代表stage2输出的特征图分辨率为输入图片的1/4C5代表stage5输出的特征图分辨率为输入图片的1/32。 Neck : 颈部利用FPN进行特征融合 FPN一般将上一步生成的不同分辨率特征作为输入输出经过融合后的特征。输出的特征一般以P作为编号标记。如FPN的输入是 C3、C4、C5、C6经过融合后输出为P3、P4、P5、P6。 Head 检测头利用融合的特征对物体进行检测。 FPN输出融合后的特征后就可以输入到检测头做具体的物体检测。 如下左图是制作图像金字塔分别对于不同大小的图片进行预测。但速度较慢。 右图是通过上采样不同大小的特征图进行融合。 借鉴特征金字塔网的思想YOLOv3设计了3种不同尺度的网络输出Y1、Y2、Y3目的是预测不同尺度的目标。由于在每一个尺度网格都负责预测3个边界框且COCO数据集有80个类。所以网络输出的张量应该是 N × N × [ 3 ∗ ( 4 1 80 ) ] N ×N ×[3∗(4 1 80)] N×N×[3∗(4180)]。由下采样次数不同得到的N不同最终Y1、Y2、Y3的shape分别为[13, 13, 255]、[26, 26, 255]、[52, 52, 255]。可见参见原文 残差连接 思想 只用好的不好的舍弃不比原来差。 先验框的设计 也是通过聚类得到9个先验框。 大的先验框交给1313 中等交给2626小的交给52*52。 多标签分类 YOLOv3在类别预测方面将YOLOv2的单标签分类改进为多标签分类在网络结构中将YOLOv2中用于分类的softmax层修改为逻辑分类器。在YOLOv2中算法认定一个目标只从属于一个类别根据网络输出类别的得分最大值将其归为某一类。然而在一些复杂的场景中单一目标可能从属于多个类别。 比如在一个交通场景中某目标的种类既属于汽车也属于卡车如果用softmax进行分类softmax会假设这个目标只属于一个类别这个目标只会被认定为汽车或卡车这种分类方法就称为单标签分类。如果网络输出认定这个目标既是汽车也是卡车这就被称为多标签分类。 为实现多标签分类就需要用逻辑分类器来对每个类别都进行二分类。逻辑分类器主要用到了sigmoid函数它可以把输出约束在0到1如果某一特征图的输出经过该函数处理后的值大于设定阈值那么就认定该目标框所对应的目标属于该类。 损失函数 YOLOv3的损失函数表达式 对比YOLOv1中的损失函数很容易知道位置损失部分并没有改变仍然采用的是sum-square error的损失计算方法。但是置信度损失和类别预测均由原来的sum-square error改为了交叉熵的损失计算方法。对于类别以及置信度的预测使用交叉熵的效果应该更好 网络结构 借助残差网络的思想YOLOv3 将原来的 darknet-19 改进为darknet-53。 Darknet-53主要由1×1和3×3的卷积层组成每个卷积层之后包含一个批量归一化层和一个Leaky ReLU加入这两个部分的目的是为了防止过拟合。卷积层、批量归一化层以及Leaky ReLU共同组成Darknet-53中的基本卷积单元DBL。因为在Darknet-53中共包含53个这样的DBL所以称其为Darknet-53。 为了更加清晰地了解darknet-53的网络结构可以看下面这张图 图上的组合单元的注释如下 DBL 一个卷积层、一个批量归一化层和一个Leaky ReLU组成的基本卷积单元。 res unit 输入通过两个DBL后再与原输入进行add这是一种常规的残差单元。残差单元的目的是为了让网络可以提取到更深层的特征同时避免出现梯度消失或爆炸。 resn 其中的n表示n个res unit所以 resn Zero Padding DBL n × res unit 。 concat 将darknet-53的中间层和后面的某一层的上采样进行张量拼接达到多尺度特征融合的目的。这与残差层的add操作是不一样的拼接会扩充张量的维度而add直接相加不会导致张量维度的改变。 Y1、Y2、Y3 分别表示YOLOv3三种尺度的输出。 Darknet53的主要改进 没有采用最大池化层转而采用步长为2的卷积层进行下采样。去掉了全连接层为了防止过拟合在每个卷积层之后加入了一个BN层和一个Leaky ReLU。引入了残差网络的思想目的是为了让网络可以提取到更深层的特征同时避免出现梯度消失或爆炸。将网络的中间层和后面某一层的上采样进行张量拼接达到多尺度特征融合的目的。网格大小有三种 V1 中网格是 7 ∗ 7 77 7∗7 V2中网格是 13 ∗ 13 1313 13∗13 V3中网格是 13 ∗ 13 1313 13∗13、 26 ∗ 26 2626 26∗26、 52 ∗ 52 52*52 52∗52 YOLOv4 简介 YOLOv4在传统的YOLO基础上加入了这些实用的技巧实现了检测速度和精度的最佳权衡。实验表明在Tesla V100上对MS COCO数据集的实时检测速度达到65 FPS精度达到43.5%AP。 YOLOv4的独到之处在于 是一个高效而强大的目标检测网咯。它使我们每个人都可以使用 GTX 1080Ti 或 2080Ti 的GPU来训练一个超快速和精确的目标检测器。在论文中验证了大量先进的技巧对目标检测性能的影响对当前先进的目标检测方法进行了改进使之更有效并且更适合在单GPU上训练这些改进包括CBN、PAN、SAM等。 改进方法 Mosaic 数据增强 这是作者提出的一种新的数据增强方法该方法借鉴了CutMix数据增强方式的思想。CutMix数据增强方式利用两张图片进行拼接但是Mosaic使利用四张图片进行拼接。如下图所示 Mosaic数据增强方法有一个优点拥有丰富检测目标的背景并且在BN计算的时候一次性会处理四张图片。SAT SAT是一种自对抗训练数据增强方法这一种新的对抗性训练方式。在第一阶段神经网络改变原始图像而不改变网络权值。以这种方式神经网络对自身进行对抗性攻击改变原始图像以制造图像上没有所需对象的欺骗。在第二阶段用正常的方法训练神经网络去检测目标。CmBN CmBN的全称是Cross mini-Batch Normalization定义为跨小批量标准化CmBN。CmBN 是 CBN 的改进版本它用来收集一个batch内多个mini-batch内的统计数据。BN、CBN和CmBN之间的区别具体如下图所示 修改过的SAM 作者在原SAMSpatial Attention Module)方法上进行了修改将SAM从空间注意修改为点注意。如下图所示对于常规的SAM最大值池化层和平均池化层分别作用于输入的feature map得到两组shape相同的feature map再将结果输入到一个卷积层接着是一个 Sigmoid 函数来创建空间注意力。 在YOLOv4中对原来的SAM方法进行了修改。如下图所示修改后的SAM直接使用一个卷积层作用于输入特征得到输出特征然后再使用一个Sigmoid 函数来创建注意力。作者认为采用这种方式创建的是点注意力。 修改过的PAN 作者对原PAN(Path Aggregation Network)方法进行了修改, 使用**张量连接(concat)**代替了原来的快捷连接(shortcut connection)。如下图所示 Tricks 作者将所有的Tricks可以分为两类 在不增加推理成本的前提下获得更好的精度而只改变训练策略或只增加训练成本的方法作着称之为 “免费包”Bag of freebies 只增加少量推理成本但能显著提高目标检测精度的插件模块和后处理方法称之为特价包(Bag of specials) 下面分别对这两类技巧进行介绍。 免费包 数据增强方法 随机缩放 翻转、旋转 图像扰动、加噪声、遮挡 改变亮度、对比对、饱和度、色调 随机裁剪random crop 随机擦除random erase Cutout MixUp CutMix 正则化方法有 DropOut DropConnect DropBlock 回归损失 IOU 会存在梯度消失的问题 GIOU 引入闭包面积 DIOU引入中心点距离 CIOU引入长宽比 特价包 增大感受野技巧 SPP ASPP RFB注意力机制 Squeeze-and-Excitation (SE) Spatial Attention Module (SAM)特征融合集成 FPN SFAM ASFF BiFPN 出自于大名鼎鼎的EfficientDet更好的激活函数 ReLU LReLU PReLU ReLU6 SELU Swish hard-Swish后处理非极大值抑制算法 soft-NMS DIoU NMS 网络结构 YOLOv4 CSPDarknet53主干 SPP附加模块颈 PANet路径聚合颈 YOLOv3头部 1CSPDarknet53 CSPNet来源于这篇论文《CSPNET: A NEW BACKBONE THAT CAN ENHANCE LEARNING CAPABILITY OF CNN》 CSPNet全称是Cross Stage Partial Network在2019年由Chien-Yao Wang等人提出用来解决以往网络结构需要大量推理计算的问题。作者将问题归结于网络优化中的重复梯度信息。CSPNet在ImageNet dataset和MS COCO数据集上有很好的测试效果同时它易于实现在ResNet、ResNeXt和DenseNet网络结构上都能通用。 CSPNet的主要目的是能够实现更丰富的梯度组合同时减少计算量。这个目标是通过将基本层的特征图分成两部分然后通过一个跨阶段的层次结构合并它们来实现的。 每一个block按照特征图的channel维度拆分成两部分 一份正常走网络另一份直接concat到这个block的输出 而在YOLOv4中将原来的Darknet53结构换为了CSPDarknet53这在原来的基础上主要进行了两项改变 将原来的Darknet53与CSPNet进行结合。在前面的YOLOv3中我们已经了解了Darknet53的结构它是由一系列残差结构组成。进行结合后CSPnet的主要工作就是将原来的残差块的堆叠进行拆分把它拆分成左右两部分主干部分继续堆叠原来的残差块支路部分则相当于一个残差边经过少量处理直接连接到最后。使用MIsh激活函数代替了原来的Leaky ReLU。在YOLOv3中每个卷积层之后包含一个批量归一化层和一个Leaky ReLU。而在YOLOv4的主干网络CSPDarknet53中使用Mish代替了原来的Leaky ReLU。Leaky ReLU和Mish激活函数的公式与图像如下 2SPP SPP来源于这篇论文《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》 SPP结构又被称为空间金字塔池化能将任意大小的特征图转换成固定大小的特征向量。 SPP主要解决两个问题 1有效避免了对图像区域裁剪、缩放操作导致的图像失真等问题 2解决了卷积神经网络对图相关重复特征提取的问题大大提高了产生候选框的速度且节省了计算成本。 输入层首先我们现在有一张任意大小的图片其大小为w * h。 输出层21个神经元 ,即我们待会希望提取到21个特征。 分析如下图所示分别对1 * 1分块2 * 2分块和4 * 4子图里分别取每一个框内的max值即取蓝框框内的最大值这一步就是作最大池化这样最后提取出来的特征值即取出来的最大值一共有1 * 1 2 * 2 4 * 4 21个。得出的特征再concat在一起。 在YOLOv4中作者引入SPP是因为它显著地增加了感受野分离出了最重要的上下文特征并且几乎不会降低的YOLOv4运行速度。 在YOLOv4中具体的做法就是分别利用四个不同尺度的最大池化对上层输出的feature map进行处理。最大池化的池化核大小分别为13x13、9x9、5x5、1x1其中1x1就相当于不处理。 3PANet PANet源自论文《Path Aggregation Network for Instance Segmentation》 下图是PANet的示意图主要包含FPN、Bottom-up path augmentation、Adaptive feature pooling、Fully-connected fusion四个部分。 FPN发表于CVPR2017主要是通过融合高低层特征提升目标检测的效果尤其可以提高小尺寸目标的检测效果。Bottom-up Path Augmentation的引入主要是考虑网络浅层特征信息对于实例分割非常重要因为浅层特征一般是边缘形状等特征。Adaptive Feature Pooling用来特征融合。也就是用每个ROI提取不同层的特征来做融合这对于提升模型效果显然是有利无害。Fully-connected Fusion是针对原有的分割支路FCN引入一个前背景二分类的全连接支路通过融合这两条支路的输出得到更加精确的分割结果。 在YOLOv4中作者使用PANet代替YOLOv3中的FPN作为参数聚合的方法针对不同的检测器级别从不同的主干层进行参数聚合。并且对原PANet方法进行了修改, 使用张量连接(concat)代替了原来的捷径连接(shortcut connection)。 (4) Yolov3 Head 在YOLOv4中继承了YOLOv3的Head进行多尺度预测提高了对不同size目标的检测性能。YOLOv3的完整结构在上文已经详细介绍下面我们截取了YOLOv3的Head进行分析 YOLOv4学习了YOLOv3的方式采用三个不同层级的特征图进行融合并且继承了YOLOv3的Head。从上图可以看出在COCO数据集上训练时YOLOv4的3个输出张量的shape分别是1919225、3838255、7676225。这是因为COCO有80个类别并且每一个网格对应3个Anchor boxes而每个要预测的bounding box对应的5个值, 所以有3 x(805)255 。 YOLOv5 yolov5源码-github 简介 YOLOv5是一种单阶段目标检测算法该算法在YOLOv4的基础上添加了一些新的改进思路使其速度与精度都得到了极大的性能提升。主要的改进思路如下所示 输入端在模型训练阶段提出了一些改进思路主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放基准网络融合其它检测算法中的一些新思路主要包括Focus结构与CSP结构Neck网络目标检测网络在BackBone与最后的Head输出层之间往往会插入一些层Yolov5中添加了FPNPAN结构Head输出层输出层的锚框机制与YOLOv4相同主要改进的是训练时的损失函数GIOU_Loss以及预测框筛选的DIOU_nms。 网络架构 上图展示了YOLOv5目标检测算法的整体框图。对于一个目标检测算法而言我们通常可以将其划分为4个通用的模块具体包括输入端、基准网络、Neck网络与Head输出端对应于上图中的4个红色模块。YOLOv5算法具有4个版本具体包括YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四种本文重点讲解YOLOv5s其它的版本都在该版本的基础上对网络进行加深与加宽。 输入端-输入端表示输入的图片。该网络的输入图像大小为 608 ∗ 608 608*608 608∗608该阶段通常包含一个图像预处理阶段,即将输入图像缩放到网络的输入大小并进行归一化等操作。在网络训练阶段YOLOv5使用Mosaic数据增强操作提升模型的训练速度和网络的精度并提出了一种自适应锚框计算与自适应图片缩放方法。Neck网络-Neck网络通常位于基准网络和头网络的中间位置利用它可以进一步提升特征的多样性及鲁棒性。虽然YOLOv5同样用到了SPP模块、FPNPAN模块但是实现的细节有些不同。Head输出端-Head用来完成目标检测结果的输出。针对不同的检测算法输出端的分支个数不尽相同通常包含一个分类分支和一个回归分支。YOLOv5利用GIOU_Loss来代替Smooth L1 Loss函数从而进一步提升算法的检测精度。 YOLOv5的基础组件 CBL-CBL模块由ConvBNLeaky_relu激活函数组成如上图中的模块1所示。Res unit 借鉴ResNet网络中的残差结构用来构建深层网络CBM是残差模块中的子模块如上图中的模块2所示。CSP1_X借鉴CSPNet网络结构该模块由CBL模块、Res unint模块以及卷积层、Concate组成而成如上图中的模块3所示。CSP2_X借鉴CSPNet网络结构该模块由卷积层和X个Res unint模块Concate组成而成如上图中的模块4所示。Focus如上图中的模块5所示Focus结构首先将多个slice结果Concat起来然后将其送入CBL模块中。 SPP-采用1×1、5×5、9×9和13×13的最大池化方式进行多尺度特征融合如上图中的模块6所示。 输入端细节详解 Mosaic数据增强 YOLOv5中在训练模型阶段仍然使用了Mosaic数据增强方法该算法是在CutMix数据增强方法的基础上改进而来的。CutMix仅仅利用了两张图片进行拼接而Mosaic数据增强方法则采用了4张图片并且按照随机缩放、随机裁剪和随机排布的方式进行拼接而成具体的效果如下图所示。这种增强方法可以将几张图片组合成一张这样不仅可以丰富数据集的同时极大的提升网络的训练速度而且可以降低模型的内存需求。 自适应锚框计算-在YOLOv5系列算法中针对不同的数据集都需要设定特定长宽的锚点框。在网络训练阶段模型在初始锚点框的基础上输出对应的预测框计算其与GT框之间的差距并执行反向更新操作从而更新整个网络的参数因此设定初始锚点框也是比较关键的一环。在YOLOv3和YOLOv4检测算法中训练不同的数据集时都是通过单独的程序运行来获得初始锚点框。YOLOv5中将此功能嵌入到代码中每次训练时根据数据集的名称自适应的计算出最佳的锚点框用户可以根据自己的需求将功能关闭或者打开具体的指令为parser.add_argument(’–noautoanchor’, action‘store_ true’, help‘disable autoanchor check’)如果需要打开只需要在训练代码时增加–noautoanch or选项即可。自适应图片缩放-针对不同的目标检测算法而言我们通常需要执行图片缩放操作即将原始的输入图片缩放到一个固定的尺寸再将其送入检测网络中。YOLO系列算法中常用的尺寸包括416*416608 *608等尺寸。原始的缩放方法存在着一些问题由于在实际的使用中的很多图片的长宽比不同因此缩放填充之后两端的黑边大小都不相同然而如果填充的过多则会存在大量的信息冗余从而影响整个算法的推理速度。为了进一步提升YOLOv5算法的推理速度该算法提出一种方法能够自适应的添加最少的黑边到缩放之后的图片中。 为了应对输入图片尺寸 不一的问题通常做法是将原图直接resize成统一大小但是这样会造成目标变形如下图所示 为了避免这种情况的发生YOLOv5采用了灰度填充的方式统一输入尺寸避免了目标变形的问题。灰度填充的核心思想就是将原图的长宽等比缩放对应统一尺寸然后对于空白部分用灰色填充。如下图所示 基准网络详解 Focus结构-该结构的主要思想是通过slice操作来对输入图片进行裁剪。如下图所示原始输入图片大小为6086083经过Slice与Concat操作之后输出一个30430412的特征映射接着经过一个通道个数为32的Conv层该通道个数仅仅针对的是YOLOv5s结构其它结构会有相应的变化输出一个30430432大小的特征映射。 CSP结构-YOLOv4网络结构中借鉴了CSPNet的设计思路仅仅在主干网络中设计了CSP结构。而YOLOv5中设计了两种CSP结构以YOLOv5s网络为例CSP1_X结构应用于Backbone主干网络中另一种CSP2_X结构则应用于Neck网络中。 Neck网络细节详解 FPNPAN-YOLOv5的Neck网络仍然使用了FPNPAN结构但是在它的基础上做了一些改进操作YOLOv4的Neck结构中采用的都是普通的卷积操作。而YOLOv5的Neck网络中采用借鉴CSPnet设计的CSP2结构从而加强网络特征融合能力。下图展示了YOLOv4与YOLOv5的Neck网络的具体细节通过比较我们可以发现 1灰色区域表示第1个不同点YOLOv5不仅利用CSP2_1结构代替部分CBL模块而且去掉了下方的CBL模块 2绿色区域表示第2个不同点YOLOv5不仅将Concat操作之后的CBL模块更换为CSP2_1模块而且更换了另外一个CBL模块的位置 3蓝色区域表示第3个不同点YOLOv5中将原始的CBL模块更换为CSP2_1模块。 YOLOx 简介 YOLOx是由旷视提出主要有如下几个改进点 Decoupled Head以前版本的Yolo所用的解耦头是一起的也就是分类和回归在一个1X1卷积里实现YoloX认为这给网络的识别带来了不利影响。在YoloX中Yolo Head被分为了两部分分别实现最后预测的时候才整合在一起。Anchor Free不使用先验框。SimOTA 为不同大小的目标动态匹配正样本。 YOLOx的网络结构 在设计算法时为了对比改进trick的好坏常常需要选择基准的模型算法。在选择Yolox的基准模型时作者考虑到Yolov4和Yolov5系列从基于锚框的算法角度来说可能有一些过度优化 因此最终选择了Yolov3系列。 不过也并没有直接选择Yolov3系列中标准的Yolov3算法而是选择添加了spp组件性能更优的Yolov3_spp版本 。我们在前面知道当得到Yolov3 baseline后作者又添加了一系列的trick最终改进为Yolox-Darknet53网络结构。 为了便于分析改进点我们对Yolox-Darknet53网络结构进行拆分变为四个板块 ① 输入端 Strong augmentation数据增强 ② BackBone主干网络 Darknet53。 ③ Neck Yolov3 baseline的Neck层还是FPN结构。 ④ Prediction Decoupled Head、End-to-End YOLO、Anchor-free、Multi positives。 解耦头Decoupled Head 为什么采用解耦头 论文作者在实验中发现不单单是精度上的提高替换为Decoupled Head后网络的收敛速度也加快了 。 因此可以得到一个非常关键的结论目前Yolo系列使用的检测头表达能力可能有所欠缺没有Decoupled Head的表达能力更好。 但是需要注意的是将检测头解耦虽然可以加快模型的收敛速度但同时会增加运算的复杂度。 因此作者经过速度和性能上的权衡最终使用 1个1x1 的卷积先进行降维并在后面两个分支里各使用了 2个3x3 卷积最终调整到仅仅增加一点点的网络参数。解耦头的设计细节 我们将Yolox-Darknet53中Decoupled Head①提取出来经过前面的Neck层这里Decouple Head①输入的长宽为2020。 从图上可以看出Concat前总共有三个分支 1cls_output主要对目标框的类别预测分数 。因为COCO数据集总共有80个类别且主要是N个二分类判断因此经过Sigmoid激活函数处理后变为202080大小。 2obj_output主要判断目标框是前景还是背景 因此经过Sigmoid处理好变为20201大小。 3reg_output主要对目标框的坐标信息xywh进行预测 因此大小为20204。 最后三个output经过Concat融合到一起得到2020*85的特征信息。 当然这只是Decoupled Head①的信息再对Decoupled Head②和③进行处理。 Anchor-Free Yolox 将 Anchor free 的方式引入到Yolo系列中使用anchor free方法有如下好处 (1) 降低了计算量不涉及IoU计算另外产生的预测框数量也更少。 假设 feature map的尺度为 80 × 80anchor based 方法在Feature Map上每个单元格一般设置三个不同尺寸大小的锚框因此产生 3 × 80 × 80 19200 个预测框。而使用anchor free的方法则仅产生 80 × 80 6400个预测框降低了计算量。 (2) 缓解了正负样本不平衡问题 anchor free方法的预测框只有anchor based方法的1/3而预测框中大部分是负样本因此anchor free方法可以减少负样本数进一步缓解了正负样本不平衡问题。 (3) 避免了anchor的调参 anchor based方法的anchor box的尺度是一个超参数不同的超参设置会影响模型性能anchor free方法避免了这一点。 损失计算 正负样本匹配策略SimOTA YOLOv6 简介 YOLOv6 是美团视觉智能部研发的一款目标检测框架致力于工业应用。本框架同时专注于检测的精度和推理效率在工业界常用的尺寸模型中YOLOv6-nano 在 COCO 上精度可达 35.0% AP在 T4 上推理速度可达 1242 FPSYOLOv6-s 在 COCO 上精度可达 43.1% AP在 T4 上推理速度可达 520 FPS。在部署方面YOLOv6 支持 GPUTensorRT、CPUOPENVINO、ARMMNN、TNN、NCNN等不同平台的部署极大地简化工程部署时的适配工作。 YOLOv6 主要在 Backbone、Neck、Head 以及训练策略等方面进行了诸多的改进 统一设计了更高效的 Backbone 和 Neck 受到硬件感知神经网络设计思想的启发基于 RepVGG style设计了可重参数化、更高效的骨干网络 EfficientRep Backbone 和 Rep-PAN Neck。优化设计了更简洁有效的 Efficient Decoupled Head在维持精度的同时进一步降低了一般解耦头带来的额外延时开销。在训练策略上我们采用Anchor-free 无锚范式同时辅以 SimOTA标签分配策略以及 SIoU边界框回归损失来进一步提高检测精度。 Hardware-friendly 骨干网络设计 YOLOv5/YOLOX 使用的 Backbone 和 Neck 都基于 CSPNet搭建采用了多分支的方式和残差结构。对于 GPU 等硬件来说这种结构会一定程度上增加延时同时减小内存带宽利用率。下图为计算机体系结构领域中的 Roofline Model介绍图显示了硬件中计算能力和内存带宽之间的关联关系。 于是我们基于硬件感知神经网络设计的思想对 Backbone 和 Neck 进行了重新设计和优化。该思想基于硬件的特性、推理框架/编译框架的特点以硬件和编译友好的结构作为设计原则在网络构建时综合考虑硬件计算能力、内存带宽、编译优化特性、网络表征能力等进而获得又快又好的网络结构。对上述重新设计的两个检测部件我们在 YOLOv6 中分别称为 EfficientRep Backbone 和 Rep-PAN Neck其主要贡献点在于 引入了 RepVGG style 结构。基于硬件感知思想重新设计了 Backbone 和 Neck。基于硬件感知思想重新设计了 Backbone 和 Neck。 RepVGG Style 结构是一种在训练时具有多分支拓扑而在实际部署时可以等效融合为单个 3x3 卷积的一种可重参数化的结构融合过程如下图所示。通过融合成的 3x3 卷积结构可以有效利用计算密集型硬件计算能力比如 GPU同时也可获得 GPU/CPU 上已经高度优化的 NVIDIA cuDNN 和 Intel MKL 编译框架的帮助。 实验表明通过上述策略YOLOv6 减少了在硬件上的延时并显著提升了算法的精度让检测网络更快更强。以 nano 尺寸模型为例对比 YOLOv5-nano 采用的网络结构本方法在速度上提升了21%同时精度提升 3.6% AP。 EfficientRep Backbone在 Backbone 设计方面我们基于以上 Rep 算子设计了一个高效的Backbone。相比于 YOLOv5 采用的 CSP-Backbone该 Backbone 能够高效利用硬件如 GPU算力的同时还具有较强的表征能力。 下图为 EfficientRep Backbone 具体设计结构图我们将 Backbone 中 stride2 的普通 Conv 层替换成了 stride2 的 RepConv层。同时将原始的 CSP-Block 都重新设计为 RepBlock其中 RepBlock 的第一个 RepConv 会做 channel 维度的变换和对齐。另外我们还将原始的 SPPF 优化设计为更加高效的 SimSPPF。 Rep-PAN在 Neck 设计方面为了让其在硬件上推理更加高效以达到更好的精度与速度的平衡我们基于硬件感知神经网络设计思想为 YOLOv6 设计了一个更有效的特征融合网络结构。 Rep-PAN 基于 PAN拓扑方式用 RepBlock 替换了 YOLOv5 中使用的 CSP-Block同时对整体 Neck 中的算子进行了调整目的是在硬件上达到高效推理的同时保持较好的多尺度特征融合能力Rep-PAN 结构图如下图所示。 解耦检测头Decoupled Head 在 YOLOv6 中我们采用了解耦检测头Decoupled Head结构并对其进行了精简设计。原始 YOLOv5 的检测头是通过分类和回归分支融合共享的方式来实现的而 YOLOX 的检测头则是将分类和回归分支进行解耦同时新增了两个额外的 3x3 的卷积层虽然提升了检测精度但一定程度上增加了网络延时。 因此我们对解耦头进行了精简设计同时综合考虑到相关算子表征能力和硬件上计算开销这两者的平衡采用 Hybrid Channels 策略重新设计了一个更高效的解耦头结构在维持精度的同时降低了延时缓解了解耦头中 3x3 卷积带来的额外延时开销。通过在 nano 尺寸模型上进行消融实验对比相同通道数的解耦头结构精度提升 0.2% AP 的同时速度提升6.8%。 训练策略 为了进一步提升检测精度我们吸收借鉴了学术界和业界其他检测框架的先进研究进展Anchor-free 无锚范式 、SimOTA 标签分配策略以及 SIoU 边界框回归损失。 Anchor-free 无锚范式 YOLOv6 采用了更简洁的 Anchor-free 检测方法。由于 Anchor-based检测器需要在训练之前进行聚类分析以确定最佳 Anchor 集合这会一定程度提高检测器的复杂度同时在一些边缘端的应用中需要在硬件之间搬运大量检测结果的步骤也会带来额外的延时。而 Anchor-free 无锚范式因其泛化能力强解码逻辑更简单在近几年中应用比较广泛。经过对 Anchor-free 的实验调研我们发现相较于Anchor-based 检测器的复杂度而带来的额外延时Anchor-free 检测器在速度上有51%的提升。SimOTA 标签分配策略 为了获得更多高质量的正样本YOLOv6 引入了 SimOTA算法动态分配正样本进一步提高检测精度。YOLOv5 的标签分配策略是基于 Shape 匹配并通过跨网格匹配策略增加正样本数量从而使得网络快速收敛但是该方法属于静态分配方法并不会随着网络训练的过程而调整。 近年来也出现不少基于动态标签分配的方法此类方法会根据训练过程中的网络输出来分配正样本从而可以产生更多高质量的正样本继而又促进网络的正向优化。例如OTA通过将样本匹配建模成最佳传输问题求得全局信息下的最佳样本匹配策略以提升精度但 OTA 由于使用了Sinkhorn-Knopp 算法导致训练时间加长而 SimOTA算法使用 Top-K 近似策略来得到样本最佳匹配大大加快了训练速度。故 YOLOv6 采用了SimOTA 动态分配策略并结合无锚范式在 nano 尺寸模型上平均检测精度提升 1.3% AP。SIoU 边界框回归损失 为了进一步提升回归精度YOLOv6 采用了 SIoU边界框回归损失函数来监督网络的学习。目标检测网络的训练一般需要至少定义两个损失函数分类损失和边界框回归损失而损失函数的定义往往对检测精度以及训练速度产生较大的影响。 近年来常用的边界框回归损失包括IoU、GIoU、CIoU、DIoU loss等等这些损失函数通过考虑预测框与目标框之前的重叠程度、中心点距离、纵横比等因素来衡量两者之间的差距从而指导网络最小化损失以提升回归精度但是这些方法都没有考虑到预测框与目标框之间方向的匹配性。SIoU 损失函数通过引入了所需回归之间的向量角度重新定义了距离损失有效降低了回归的自由度加快网络收敛进一步提升了回归精度。通过在 YOLOv6s 上采用 SIoU loss 进行实验对比 CIoU loss平均检测精度提升 0.3% AP。 YOLOv7 简介 我们先整体来看下 YOLOV7首先对输入的图片 resize 为 640x640 大小输入到 backbone 网络中然后经 head 层网络输出三层不同 size 大小的 feature map经过 Rep 和 conv输出预测结果这里以 coco 为例子输出为 80 个类别然后每个输出(x ,y, w, h, o) 即坐标位置和前后背景3 是指的 anchor 数量因此每一层的输出为 (805)x3 255再乘上 feature map 的大小就是最终的输出了。 主干网络 YOLOV7 的 backbone 如下图所示总共有50层。 首先是经过 4 层卷积层如下图CBS 主要是 Conv BN SiLU 构成我在图中用不同的颜色表示不同的 size 和 stride, 如 (3, 2) 表示卷积核大小为 3 步长为 2。 在 config 中的配置如图。 经过 4个 CBS 后特征图变为 160 ∗ 160 ∗ 128 160 * 160 * 128 160∗160∗128 大小。随后会经过论文中提出的 ELAN 模块ELAN 由多个 CBS 构成其输入输出特征大小保持不变通道数在开始的两个 CBS 会有变化 后面的几个输入通道都是和输出通道保持一致的经过最后一个 CBS 输出为需要的通道。 MP 层 主要是分为 Maxpool 和 CBS , 其中 MP1 和 MP2 主要是通道数的比变化。 backbone的基本组件就介绍完了我们整体来看下 backbone经过 4 个 CBS 后接入例如一个 ELAN 然后后面就是三个 MP ELAN 的输出对应的就是 C3/C4/C5 的输出大小分别为 80 * 80 * 512 40 * 40 * 1024 20 * 20 * 1024。 每一个 MP 由 5 层 ELAN 有 8 层 所以整个 backbone 的层数为 4 8 13 * 3 51 层 从 0 开始的话最后一层就是第 50 层。 检测头 YOLOV7 head 其实就是一个 PaFPN 的结构和之前的YOLOV4YOLOV5 一样。首先对于 backbone 最后输出的 32 倍降采样特征图 C5然后经过 SPPCSP通道数从1024变为512。先按照 top down 和 C4、C3融合得到 P3、P4 和 P5再按 bottom-up 去和 P4、P5 做融合。这里基本和 YOLOV5 是一样的区别在于将 YOLOV5 中的 CSP 模块换成了 ELAN-H 模块 同时下采样变为了 MP2 层。 ELAN-H模块和 backbone 中的 ELAN 稍微有点区别就是 cat 的数量不同。 对于 pafpn 输出的 P3、P4 和 P5 经过 RepConv 调整通道数最后使用 1x1 卷积去预测 objectness、class 和 bbox 三部分。 RepConv 在训练和推理是有一定的区别。训练时有三个分支的相加输出部署时会将分支的参数重参数化到主分支上 Loss Function 主要分带和不带辅助训练头两种对应的训练脚本是train.py 和 train_aux.py。 不带辅助训练头分损失函数和匹配策略两部分讨论。 损失函数 整体和YOLOV5 保持一致分为坐标损失、目标置信度损失GT就是训练阶段的普通iou和分类损失三部分。其中目标置信度损失和分类损失采用BCEWithLogitsLoss带log的二值交叉熵损失坐标损失采用CIoU损失。详细参见utils/loss.py 里面的 ComputeLossOTA 函数 配合 配置文件里的各部分的权重设置。 匹配策略 主要是参考了YOLOV5 和YOLOV6使用的当下比较火的simOTA. S1.训练前会基于训练集中gt框通过k-means聚类算法先验获得9个从小到大排列的anchor框。(可选) S2.将每个gt与9个anchor匹配Yolov5为分别计算它与9种anchor的宽与宽的比值较大的宽除以较小的宽比值大于1下面的高同样操作、高与高的比值在宽比值、高比值这2个比值中取最大的一个比值若这个比值小于设定的比值阈值这个anchor的预测框就被称为正样本。一个gt可能与几个anchor均能匹配上此时最大9个。所以一个gt可能在不同的网络层上做预测训练大大增加了正样本的数量当然也会出现gt与所有anchor都匹配不上的情况这样gt就会被当成背景不参与训练说明anchor框尺寸设计的不好。 S3.扩充正样本。根据gt框的中心位置将最近的2个邻域网格也作为预测网格也即一个groundtruth框可以由3个网格来预测可以发现粗略估计正样本数相比前yolo系列增加了三倍此时最大27个匹配。图下图浅黄色区域其中实线是YOLO的真实网格虚线是将一个网格四等分如这个例子中GT的中心在右下虚线网格则扩充右和下真实网格也作为正样本。 S4.获取与当前gt有top10最大iou的prediction结果。将这top10 5-15之间均可并不敏感iou进行sum就为当前gt的k。k最小取1。 S5.根据损失函数计算每个GT和候选anchor损失前期会加大分类损失权重后面减低分类损失权重如1:5-1:3并保留损失最小的前K个。 S6.去掉同一个anchor被分配到多个GT的情况。 带辅助训练头分损失函数和匹配策略两部分讨论 将负责最终输出的Head为lead Head将用于辅助训练的Head称为auxiliary Head。 一些细节其loss函数和不带辅助头相同加权系数不能过大aux head loss 和lead head loss 按照0.25:1的比例否则会导致lead head出来的结果精度变低。匹配策略和上面的不带辅助头只有lead head只有很少不同其中辅助头 *lead head中每个网格与gt如果匹配上附加周边两个网格而aux head附加4个网格如上面导数第二幅图匹配到浅黄橘黄共5个网格。 *lead head中将top10个样本iou求和取整而aux head中取top20。 aux head更关注于recall而lead head从aux head中精准筛选出样本。 需要注意依照yolov5中的中心点回归方式仅能将图中红色特征grid预测在图中红色蓝色区域实线组成的网格代表着特征图grid虚线代表着一个grid分成了4个象限是根本无法将中心点预测到gt处(蓝色点)而该红色特征grid在训练时是会作为正样本的。在aux head中模型也并没有针对这种情况对回归方式作出更改。所以其实在aux head中即使被分配为正样本的区域经过不断的学习可能仍然无法完全拟合至效果特别好。 YOLOv8 YOLOv8详解 【网络结构代码实操】 对比

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/90307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

取外贸网站域名经验软件开发制作平台

这个问题其实没人能给出可证伪的结论,那不如干脆给一个感性的答案: 因为阿里“不争气”。 确切的说,因为阿里的nodejs团队没卷赢,至少暂时还没卷赢,没拿到真正有价值的业务场景,做出真正有说服力的案例项目。刚好我有…

广州市官网网站建设怎么样直播间 网站建设

压缩列表是Redis为节约内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构。一个压缩列表可以包含任意多个节点,每个节点可以保存一个字节数组或者整数值。 压缩列表构成 zlbytes: 记录整个压缩列表占用的内存字节数,对压缩列…

桂林网站设计公司wordpress term_group

本文介绍通过XML方式实现Spring AOP,在上一篇中已经介绍了通过注解+java配置的方式,这篇文章主要是看XML中怎么配置,直接上代码了: 一、创建一个连接点 1⃣️定义接口 注意⚠️:可以定义接口,也…

广州购物网站建设报价青岛网站建设推进

很多小伙伴有自己的博客、淘宝或者共享文件网站,想要分享、推广自己的网址做成url文件,让别人点击这个url文件直接访问自己的网站。URL文件其实就一个超级链接,制作的方法很多,这里列举4种。 收藏网站直接拖拽 1.第一种&#xf…

网站除了wordpress外网站优化排名如何做

分析领域的一位资深人士对我非常无助地摇了摇头。 “这个程序员,不要吃烟花!”我也深深感到世界各地的农民代码都是一样的。 这让我想起了它,也是他。很多年前我提醒过我。——关注业务。从那以后,我一直在匆匆走上技术商业的双重…

门户网站开发报价网站建设昆明

React和Preact写className,我不太习惯使用模板字符串,不好看,看起来也不直观,写了如下两个库: react-runtime-clsx 和 preact-runtime-clsx,来辅助开发,可以更方便的处理className的问题&#x…

中卫网站推广制作电子商务实验网站建设实训过程

Image:114994698204558.jpgmatlabmatlab是矩阵实验室(matrix laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。matlab的基本数据单位是矩阵,它的指令表达式…

网站策划主要做什么工作百度地图wordpress

前言 在 Flutter 中,应用的顶级组件或根组件通常是在 main() 函数中通过 runApp() 方法创建的。这个组件通常是一个 MaterialApp、CupertinoApp、GetMaterialApp 或其他类似的应用框架组件。 以下是一个创建 MaterialApp 作为根组件的示例: void main()…

装修论坛网站有哪些吉安建设工程项目网站

141. 环形链表 设置一个fast指针,一个slow指针,fast一次走两步,slow一次走一步。如果fast和slow相遇,则说明有环。反之没相遇则无环。 注意快慢指针的while循环条件是fast.next ! null && fast.next.next ! null /*** …

手机网站建设原则湛江人才网招聘信息网

点击蓝字关注我们话不多扯,说事最近遇到奇怪电脑问题装的是7系统32位开机可以进入系统插着网线开机,就假死拔掉网线开机,正常,然后插上网线依旧正常再带着网线关机,开机后又成假死假死后拔下网线依旧恢复不了必须是不插…

工程技术seo做的不好的网站

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 今天我们利用GitHub上20K星星的项目 PHPMailer…

低价网站空间做网站zwnet

在当今世界,数据扮演着非常重要的角色。 如此众多的应用程序将各种类型的数据用于不同的操作,所以最重要的方面是应用程序之间的通信。 当应用程序可以通信时,它们之间的数据共享变得容易。 就像在亚洲运行的应用程序向在欧洲运行的应用程序…

有机大米网站建设方案做律师网站公司

在Vue中实现分布式日志收集与日志分析(使用ELK Stack) 日志收集和分析在现代应用程序中是至关重要的,它们可以帮助开发人员监视和诊断应用程序的行为,从而提高应用程序的稳定性和性能。ELK Stack(Elasticsearch、Logs…

做租车行网站咨询网络服务商

1. 题目 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。 如果不存在符合条件的连续子数组,返回 0。 示例: 输入: s 7, nums [2,3,1,2,4,3] 输出: 2 解释: 子数组 [4,3] 是该条件下的长度最小的连…

圣弓 网站建设抚顺建设网站

文章目录 前言python - excel 设置样式1. 准备2. 示例2.1. 给单元格设置样式"等线"、大小为24磅、斜体、红色颜色和粗体2.2. 给第二行设置样式"宋体"、大小为16磅、斜体、红色颜色和粗体2.3. 给第三行数据设置垂直居中和水平居中2.4. 给第四行设置行高为30…

做网站排名优化有用吗wordpress需要 伪静态

最近学习linux内核网络协议栈,把数据包接收流程大致理了一下,前面也看了瀚海书香兄的总结,感觉总结的比我精炼,抓住了主干,是一目了然的那种我的这篇本来是自己看得,因此把我自己学习中一些遇到的问题写了出…

昆明seo推广公司企业网站优化解决方案

一、进程通信 1.首先搞清楚一点,对于操作系统而言,进行通信的实际上是进程,而不是程序。 2.一个进程可以被认为是运行在端系统上的一个程序,当多个进程运行在相同的端系统上的时候,它们使用进程间通信机制相互通信。…

一个公司的网站怎么做专业网站制作全包

做HTML5网页,要播放视频,视频格式为mp4,结果浏览器只能听到声音,看不到画面。反复测试,多个浏览器均出现此问题。刚开始以为视频的格式不对,我是从MOV转的MP4格式,反复确认嵌入的视频确实是mp4格…

山西建设部网站网站一般用什么工具做

一 抓包分析技术初探 说明: 本篇章跟tcp/ip的知识没有关系,只是讲解tcpdump工具背景补充: 抓包是做报文分析的第一步敬畏心: 隔行如隔山,不要想当然 ① 背景 ② 抓包技术名词 1、捋顺这些技术的来龙去脉甚至八卦;2、这样我们在后续课程…

网站建设零基础自学视频教程深圳网络公司网站

本文采用资源下载链接,含完整工程代码 MAX17058-MAX17059STM32iic驱动设计内含有代码、详细设计过程文档,实际项目中使用代码,稳定可靠资源-CSDN文库 简介 MAX17058/MAX17059 IC是微小的锂离子(Li )在手持和便携式设备的电池电量计。MAX170…