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

类似于美团的网站怎么做馆陶企业做网站推广

类似于美团的网站怎么做,馆陶企业做网站推广,wordpress火车头发布,app和网站关于YOLOv8的主干网络在YOLOv8网络结构介绍-CSDN博客介绍了#xff0c;为了更好地学习本章内容#xff0c;建议先去看预测流程的原理分析YOLOv8原理解析[目标检测理论篇]-CSDN博客#xff0c;再次把YOLOv8网络结构图放在这里#xff0c;方便随时查看。 ​ 1.前言 YOLOv8训练…          关于YOLOv8的主干网络在YOLOv8网络结构介绍-CSDN博客介绍了为了更好地学习本章内容建议先去看预测流程的原理分析YOLOv8原理解析[目标检测理论篇]-CSDN博客再次把YOLOv8网络结构图放在这里方便随时查看。 ​ 1.前言 YOLOv8训练流程这一块内容还是比较复杂的所以先来谈一下训练流程的思路一共就两步第一步就是从网络预测的结果中找到正样本,并且确定正样本要预测的对象第二步就是计算预测结果和标签之间的损失分别计算预测框的损失以及预测类别的损失。 如下图所示假设一张图片中只有3个标签那么需要从8400个Grid cell中找到这3个标签对应的正样本然后通过计算正样本的预测值和标签值之间的损失最后通过损失的反向传播更新模型的权值和偏差。 为了更好地理解YOLOv8或者说是YOLO系列网络需要对Grid cell建立概念如下所示 首先可以看到通过网络输出的三个特征图的分辨率分别为80*8040*4020*20本文所说的Grid cell即为图中的红点、蓝点以及黄点从图中可以得到以下信息第一红点代表的Grid cell是80*80分辨率中每个像素的中心点因为红色Grid cell比较密集并且可以x8将红点映射回原图所以80*80分辨率的特征图Grid cell是用来训练小目标的蓝色和黄色Grid cell同理第二如果8400个Grid cell全部当成正样本的话是不实际的所以必须从这8400个Grid cell中选出一些正样本第三由于YOLOv8是Anchor Free的模型所以会将这三个尺度的特征图展开变成长度为8400的一维向量。 2. Task Aligned Assigner Task Aligned Assigner中文翻译为任务对齐分配器是一种正负样本分配策略也就是找正样本的方法也就是训练流程中的第一步。 在正式开始找正样本之前需要先把网络预测值Box和Cls解码同时也需要把标签的Box和Cls解码过程如下图所示首先是网络预测结果Pred的Box需要解码成4维用来预测LTRB的解码过程在预测原理第三章有提到YOLOv8预测流程-原理解析[目标检测理论篇]-CSDN博客另外还需要转换为XYXY格式且预测的坐标值是相对于网络输入尺寸的即640*640Cls只需要使用Sigmoid()解码就行。其次是标签Target的解码其实只有Box需要解码为了和Pred的解码格式保持一致需要将XYWH格式转换为XYXY并且标签值对应的坐标是相对于网络输入尺寸即640*640。 然后正式开始找正样本了假设一张图片上只有一个GT Box使用红色框作为标记。由于已经将三个特征图下的grid cell都转换到640*640坐标系了结合GT框的位置和大小找到合适的中心点作为训练的正样本这就是TaskAlignedAssigner的任务一共分成三步即初步筛选精细筛选剔除多余三个步骤。 1初步筛选即select_candidates_in_gts转换之后的Grid Cell落在GT Box内部作为初步筛选的正样本如图中所示红色点为初步筛选的Grid Cell,而落在GT Box外部的点或者落在GT Box角上或者边上的都需要过滤掉如蓝色点所示经过初步筛选图2中9个红色的点作为初筛后留下的正样本点。 2精细筛选即get_box_metricsselect_topk_candidates通过公式align_metrics^α∗u^β(s和u分别表示分类得分和CIoU得分, a和b是权重系数默认值分别0.5和6.0)计算出每个预测框的得分然后把得分低的预测框给过滤掉一般会取得分最高的top10个gird cell。 其中分类得分取的在是GT Box内对应的类别的预测值比如该GT的类别下标为1那么落在GT box内的点所预测的类别下标为1时的置信度。另外计算IoU使用的是CIoU计算公式和计算过程如下所示如何理解CIoU呢IoU并无法充分表示预测框和标注框之间的关系需要引入中心点距离以及最小矩形框斜边距离通过这两者的比值来表示预测框和标注框的相似度。所以会在IoU的基础上减去该比值再减去由预测框宽高和标注框宽高组成的式子。 3剔除多余保证一个Grid Cell只预测一个GT框如果一个Grid Cell同时匹配到两个GT Box,那么将从这两个GT中,选出与他CIoU值最大的一个作为他要预测的GT Box。如图所示Grid Cell A、B、C负责预测GT1包括预测GT1的类别和Box,而Grid Cell D负责预测GT2也是预测类别和Box。  3.Loss YOLOv8的Loss由三部分组成Loss_box,Loss_cls,Loss_DFL分别表示回归框损失类比损失和DFL损失其实也是回归框的损失下面会详细介绍这三种损失。 还是先来简单了解下Loss计算的思路如下图所示左边Target表示标签值右边Pred表示预测值均需要借助上一章找到的正样本然后通过对比同一个Grid cell正样本的预测值和标签值计算对应的Loss。  先来看一下get_targets函数做了哪些处理GT_Box是经过预处理的1,3,4表示XYXY且相对于640*640尺度的坐标。GT_Cls没有经过处理表示GT_Box1、 GT_Box2、 GT_Box3的类别。 假设GT1的box是x0,y0,X0,Y0,cls是0; GT2的box是x1,y1,X1,Y1,cls是1;根据找到的正样本和负样本来举个例子其中负样本为E,正样本为A/B/C/D.由图可以看到Target_Score在这一步已经区分了正负样本了其中负样本使用[0,0]来表示。而Target_Bbox并没有区分正负样本负样本统统会选择第1个GT的Box作为其Target_Bbox,换句话说Target_Bbox值为[x0,y0,X0,Y0]的Grid cell可能为正样本也可能为负样本。 3.1Loss_cls  下面是YOLOv8中计算Loss_cls的代码 target_scores_sum max(target_scores.sum(), 1)loss[1] self.bce(pred_scores, target_scores.to(dtype)).sum() / target_scores_sum # BCE而主要的部分是Loss_cls采用了BCELoss损失函数损失计算公式如下注意YOLOv8中的Cls使用的是BCEWithLogitsLoss,传入的预测值是不需要自己进行Sigmoid,损失内部会自动进行sigmoid,但我这里演示使用的是BCELoss 假设当前只有两个类别取出其中三个Grid cell的值其中0,0表示负样本0,1和1,0表示正样本经过Normalize后得到带有权重的真实标签这里正负样本均计算Loss. 3.2Loss_box 下面是YOLOv8中计算Loss_box的代码 iou bbox_iou(pred_bboxes[fg_mask], target_bboxes[fg_mask], xywhFalse, CIoUTrue)loss_iou ((1.0 - iou) * weight).sum() / target_scores_sum而主要的部分是Loss_box采用了CIoULoss损失函数损失计算公式如下: 由前面可知经过get_targets后的Target_Bbox并没有区分正负样本因此下一步将利用fg_mask来区分正负样本从而得到30个正样本。对Box会求两个损失所以有Target_Bbox1和Target_Bbox2都需要还原到各自的特征图的比例进行计算可能这样数字比较小计算比较方便并且分别采用XYXY格式和LTRB格式表示。 另一方面Pred_Box1需要通过网络预测的结果1,64,8400解码成1,4,8400并采用XYXY坐标的格式表示并且找到对应的30个正样本和Target_Bbox1计算CIoU损失Pred_Box2则是直接把网络预测的结果1,64,8400取出来然后找到对应的30个正样本和Target_Bbox1计算DFL损失。 这里再说一下为什么会是30个正样本因为有3个GT每个GT取top10个得分最高的grid cell并且这30个中没有因重复而被过滤掉的Grid cell。 3.3Loss_DFL  下面是YOLOv8中计算Loss_DFL的代码 loss_dfl self._df_loss(pred_dist[fg_mask].view(-1, self.reg_max 1), target_ltrb[fg_mask]) * weightloss_dfl loss_dfl.sum() / target_scores_sum而主要的部分是Loss_DFL损失计算公式如下: 下面演示一个Grid cell正样本LTRB的计算过程 首先Pred_Box2即Pred_dist是一个120,16的矩阵可以理解为30*4,16即共有30个正样本每个正样本需要预测LTRB四个数值并且这四个数又分别通过0~15来表示。其次Target_Bbox2即Target,是一个120,1的向量分别对应着30个样本中每个样本的LTRB真实值。最后由于Target一般不会是整数值所以需要计算相邻的两个真实值对应的损失。损失函数使用Cross_entropy损失. 前面提到了由于Target一般不会是整数值所以需要计算相邻的两个真实值对应的损失那么如何选择呢?这两个损失之间的权重又是怎么样的呢为了加深理解又单独举例演示该Grid cell中的Top_loss是怎么计算的: 该正样本需要对GT对应的LTRB中的T为例该正样本的中心点距离上边框是7.29像素因为网络预测只能是0~15的整数那么只能选择7和8这两个相邻的值作为标签值即yi7和yi18。接下来是选择这两个损失的权重遵循一个原则离得越近权重越大所以当计算标签为7的时候选择权重0.71即yi1-y;而计算标签为8的时候选择权重0.21,即y-yi1。 前面也提到了损失函数使用Cross_entropy损失和BCE损失有两点区别第一是把网络预测的每个正样本的LTRB值都需要进行SoftMax()使得∑value1这和预测的时候是一样的第二是只选取标签值对应的值作为损失比如在该正样本预测Top的损失计算中有7和8两个标签值那么7对应的损失值为1.4676即-Log(Si),8对应的损失值为1.6825即-log(Si1)。最后该正样本的Loss_Top为1.53该正样本的总损失为(Loss_Left Loss_Top Loss_Right Loss_Bottom)/4. 训练过程的原理会稍微复杂先整理成这样子后面我再优化下表达争取每个人都可以看得懂。
http://www.tj-hxxt.cn/news/231247.html

相关文章:

  • 易书网上书城网站建设方案厦门微信网站开发
  • 网站搭建策划书网站地图可以自己做么
  • 中小型网站建设与管理总结游戏网站建设与策划书
  • 前端做网站一般用什么框架二维码制作工具
  • 买网站去哪买WordPress图片方案
  • 景点介绍网站模板宁波做网站优化多少钱
  • 学做系统的网站用插件做网站
  • 百度收录网站多久旺道seo优化
  • 网站开发语言检测免费做封面网站
  • org是国外的网站吗手机营销软件
  • 如何做局域网网站郑州seo优化
  • 湖北网站建设的释义网站建设龙华
  • 懂得做网站还可以做什么兼职建设工程司法解释(二)
  • 做网站获流量平面设计学习
  • 用vs做网站表格向上居中网站分页导航
  • 优秀网站网址有域名和主机怎么做网站
  • 青岛网站建设大全内蒙古头条新闻发布信息
  • 手把手教你做网站视频沧州网站优化价格
  • 国外设计网站参考福州seo排名外包
  • 对ui设计的理解和认识seo服务公司上海
  • 建设网站需要多少钱济南兴田德润地址云虚拟主机和云服务器有什么区别
  • 什么是网站托管外贸网站开发多少钱
  • 网站制作教程一般地建网络大都会app最新版本下载
  • 行业网站建设内容河北网站建设业务
  • 网站logo如何修改如何建设网站公司
  • 婺源做网站wordpress主题模板教程
  • 蒙古文网站建设汇报wordpress sql注入
  • 工作室 网站贵阳企业网站设计制作
  • 都匀市建设局网站网站怎么做熊掌号
  • 莱州网站开发排版网站推荐