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

电脑系统优化工具新手seo入门教程

电脑系统优化工具,新手seo入门教程,discuz视频网站模板,怎么做谷歌收录的网站前言#xff1a;Hello大家好#xff0c;我是小哥谈。使用YOLOv5训练模型阶段#xff0c;需要用到损失函数。损失函数是用来衡量模型预测值和真实值不一样的程度#xff0c;极大程度上决定了模型的性能。本节就给大家介绍IoU系列损失函数#xff0c;希望大家学习之后能够有… 前言Hello大家好我是小哥谈。使用YOLOv5训练模型阶段需要用到损失函数。损失函数是用来衡量模型预测值和真实值不一样的程度极大程度上决定了模型的性能。本节就给大家介绍IoU系列损失函数希望大家学习之后能够有所收获 前期回顾 YOLOv5基础知识入门1— YOLO算法的发展历程 YOLOv5基础知识入门2— YOLOv5核心基础知识讲解 YOLOv5基础知识入门3— 目标检测相关知识点 YOLOv5基础知识入门4— 神经网络的基本概念与原理 目录 1.损失函数简介 2.IoU 3.GIoU 4.DIoU 5.CIoU 6.EIoU 7.总结 1.损失函数简介 损失函数loss function是用于衡量模型预测结果与真实结果之间的差距。损失函数通常是一标量函数其值越小表示模型的预测结果越接近真实结果反之则表示预测结果与真实结果之间的差距越大。 使用YOLOv5训练模型的时候我们需要不断地调整模型的参数使得模型的预测结果和真实结果之间的差距最小化损失函数在这个过程中起到了关键的作用。它可以帮助我们衡量模型的预测结果与真实结果之间的差距并将这个差距转化为一个标量值。我们可以使用这个标量值来评估模型的性能并根据这个标量值来调整模型的参数。 YOLOv5损失函数包括 classification loss分类损失 localization loss定位损失预测边界框与GT之间的误差confidence loss置信度损失框的目标性objectness of the box 总体损失函数Loss  a*classification loss b*localization loss c*confidence los  也即总体损失函数为三个损失函数的加权和通常置信度损失函数取最大权重矩形框损失函数和分类损失的权重次之。 2.IoU IoUIntersection over Union为两个方框相交区域面积与相并区域面积的比值所以也称为交并比。❤️ 计算公式 不足之处 具体如下图所示 1即状态1的情况当预测框和目标框不相交时IOU0无法反应两个框距离的远近此时损失函数不可导IOU_Loss无法优化两个框不相交的情况。  2即状态2和状态3的情况当两个预测框大小相同两个IOU也相同IOU_Loss无法区分两者相交情况的不同。因此2019年出现了GIOU_Loss来进行改进。  Pytorch代码 def IoU(box1, box2):b1_x1, b1_y1, b1_x2, b1_y2 box1b2_x1, b2_y1, b2_x2, b2_y2 box2xx1 np.maximum(b1_x1, b2_x1)yy1 np.maximum(b1_y1, b2_y1)xx2 np.minimum(b1_x2, b2_x2)yy2 np.minimum(b1_y2, b2_y2)w np.maximum(0.0, yy2 - yy1)h np.maximum(0.0, xx2 - xx1)inter w * hIoU inter/((b1_x2-b1_x1)*(b1_y2-b1_y1) (b2_x2-b2_x1)*(b2_y2-b2_y1) - inter)print(IoU: , IoU)if __name__ __main__:box1 np.array([100, 100, 210, 210])box2 np.array([150, 150, 230, 220])IoU(box1, box2) 3.GIoU GIOUGeneralized-IoUGIoU比IoU多了一个“Generalized”能在更广义的层面上计算IoU。当检测框和真实框没有出现重叠的时候IoU的loss都是一样的因此GIoU就引入了最小封闭形状CC可以把AB包含在内在不重叠情况下能让预测框尽可能朝着真实框前进这样就可以解决检测框和真实框没有重叠的问题 。 计算公式 如上图所示GIOU在IOU的基础上把包围矩形框A和矩形框B的最小矩形框图中的虚线框的面积也加入到计算中。 GIOU可按下式计算其中S1为A、B相交部分的面积红色区域。其中S3为包围A、B的最小矩形框的面积S2为A、B相并区域的面积蓝色红色灰色区域。 由上式可知GIOU相比IOU新增了(S3-S2)/S3这一项。新增项表示什么意义呢❓❓❓ 由上述可知S3-S2为虚线框中白色区域的面积也即虚线框中不属于A也不属于B的空白区域那么(S3-S2)/S3就是空白区域面积占虚线框面积的比例这个比例越大说明A、B距离越远、重叠度越小反之则A、B距离越近、重叠度越大。 GIOU的取值范围是-1~1当A、B完全没有重叠区域时IOU为0那么GIOU取负值极端情况当A、B无重叠区域且距离无限远时此时(S3-S2)/S3等于1那么GIOU取-1另一个极端情况当A、B完全重叠时(S3-S2)/S3等于0IOU为1那么GIOU取1。 因此GIOU解决了当A、B完全没有重叠区域时IOU恒为0的问题。 最后得到GIOU loss的计算公式 不足之处 状态1、2、3都是预测框在目标框内部且预测框大小一致的情况这时预测框和目标框的差集都是相同的因此这三种状态的GIOU值也都是相同的这时GIOU退化成了IOU无法区分相对位置关系。 基于这个问题2020年的AAAI又提出了DIOU_Loss。 Pytorch代码 def GIoU(box1, box2):b1_x1, b1_y1, b1_x2, b1_y2 box1b2_x1, b2_y1, b2_x2, b2_y2 box2# IOUxx1 np.maximum(b1_x1, b2_x1)yy1 np.maximum(b1_y1, b2_y1)xx2 np.minimum(b1_x2, b2_x2)yy2 np.minimum(b1_y2, b2_y2)inter_w np.maximum(0.0, yy2 - yy1)inter_h np.maximum(0.0, xx2 - xx1)inter inter_w * inter_hUnion (b1_x2-b1_x1)*(b1_y2-b1_y1) (b2_x2-b2_x1)*(b2_y2-b2_y1) - inter# GIOUC_xx1 np.minimum(b1_x1, b2_x1)C_yy1 np.minimum(b1_y1, b2_y1)C_xx2 np.maximum(b1_x2, b2_x2)C_yy2 np.maximum(b1_y2, b2_y2)C_area (C_xx2 - C_xx1) * (C_yy2 - C_yy1)IOU inter / UnionGIOU IOU - abs((C_area-Union)/C_area)print(GIOU:, GIOU)if __name__ __main__:box1 np.array([100, 100, 210, 210])box2 np.array([150, 150, 230, 220])GIoU(box1, box2) 4.DIoU DIoUDistance-IoU,考虑到GIoU的缺点也是增加了C检测框将真实框和预测框都包含了进来但是DIoU计算的不是框之间的交并而是计算的每个检测框之间的欧氏距离。DIoU要比GIou更加符合目标框回归的机制将目标与anchor之间的距离重叠率以及尺度都考虑进去使得目标框回归变得更加稳定不会像IoU和GIoU一样出现训练过程中发散等问题。 计算公式 DIOU把矩形框A、B的中心点距离ρ、外接矩形框虚线框的对角线长度c都直接考虑进去如下图所示 DIOU可按下式计算 由上式可知DIOU的取值范围也为-1~1当两个框A、B完全重合时DIOU取1当A、B距离无限远时DIOU取-1。 从而得到DIOU loss的计算公式 不足之处 DIoU考虑了重叠面积和中心点距离当目标框包裹预测框的时候直接度量2个框的距离因此DIoU收敛的更快但并没有考虑到长宽比。 Pytorch代码 def DIoU(box1, box2):b1_x1, b1_y1, b1_x2, b1_y2 box1b2_x1, b2_y1, b2_x2, b2_y2 box2# IOUxx1 np.maximum(b1_x1, b2_x1)yy1 np.maximum(b1_y1, b2_y1)xx2 np.minimum(b1_x2, b2_x2)yy2 np.minimum(b1_y2, b2_y2)inter_w np.maximum(0.0, xx2 - xx1)inter_h np.maximum(0.0, yy2 - yy1)inter inter_w * inter_hUnion (b1_x2 - b1_x1)*(b1_y2 - b1_y1) (b2_x2 - b2_x1)*(b2_y2 - b2_y1) - inter# DISTANCEC_xx1 np.minimum(b1_x1, b2_x1)C_yy1 np.minimum(b1_y1, b2_y1)C_xx2 np.maximum(b1_x2, b2_x2)C_yy2 np.maximum(b1_y2, b2_y2)C_area (C_xx2 - C_xx1) * (C_yy2 - C_yy1)center_b_x (b1_x1b1_x2)/2center_b_y (b1_y1b1_y2)/2center_gtb_x (b2_x1b2_x2)/2center_gtb_y (b2_y1b2_y2)/2center_distance (center_gtb_x-center_b_x)**2 (center_gtb_y-center_b_y)**2c_distance (C_xx2 - C_xx1)**2 (C_yy2 - C_yy1)**2IOU inter/UnionDIOU IOU - center_distance /c_distanceprint(DIOU:, DIOU)if __name__ __main__:box1 np.array([100, 100, 210, 210])box2 np.array([150, 150, 230, 220])DIoU(box1, box2) 5.CIoU CIoUComplete-IoU就是在DIoU的基础上增加了检测框尺度的loss增加了长和宽的loss使得目标框回归更加稳定不会像IoU和GIoU一样出现训练过程中发散等问题。 计算公式 CIOU Loss 和 DIOU Loss 前面的公式都是一样的不过在此基础上还增加了一个影响因子这样CIOU_Loss就将目标框回归函数应该考虑三个重要几何因素重叠面积、中心点距离长宽比全都考虑进去了。 由以上可得CIOU loss的计算公式为 不足之处 1如果预测框和ground truth框的长宽比是相同的那么长宽比的惩罚项恒为0不合理。 2观察CIoU中w, h相对于v的梯度发现这两个梯度是一对相反数也就是说w和h不能同时增大或减小这显然也不够合理的。 Pytorch代码 def CIoU(box1, box2):b1_x1, b1_y1, b1_x2, b1_y2 box1b2_x1, b2_y1, b2_x2, b2_y2 box2# IOUxx1 np.maximum(b1_x1, b2_x1)yy1 np.maximum(b1_y1, b2_y1)xx2 np.minimum(b1_x2, b2_x2)yy2 np.minimum(b1_y2, b2_y2)inter_w np.maximum(0.0, xx2 - xx1)inter_h np.maximum(0.0, yy2 - yy1)inter inter_w*inter_hUnion (b1_x2-b1_x1)*(b1_y2-b1_y1) (b2_x2-b2_x1)*(b2_y2-b2_y1) - interIOU inter/UnionC_xx1 np.minimum(b1_x1, b2_x1)C_yy1 np.minimum(b1_y1, b2_y1)C_xx2 np.maximum(b1_x2, b2_x2)C_yy2 np.maximum(b1_y2, b2_y2)# DISTANCEcenter_b_x (b1_x1 b1_x2)/2center_b_y (b1_y1 b1_y2)/2center_gtb_x (b2_x1 b2_x2)/2center_gtb_y (b2_y1 b2_y2)/2C_area (C_xx2-C_xx1)*(C_yy2-C_yy1)Distance (center_gtb_x-center_b_x)**2 (center_gtb_y-center_b_y)**2Distance_area Distance/C_area**2# aspect ratiopred_w b1_y2 - b1_y1pred_h b1_x2 - b1_x1gt_w b2_y2 - b2_y1gt_h b2_x2 - b2_x1v (4/(np.pi)**2)*(np.arctan(gt_w/gt_h) - np.arctan(pred_w/pred_h))**2alpha v/((1-IOU) v)CIOU IOU - Distance_area - alpha*vprint(CIOU:, CIOU)if __name__ __main__:box1 np.array([100, 100, 210, 210])box2 np.array([150, 150, 230, 220])CIoU(box1, box2) 6.EIoU EIOU 是在 CIOU 的惩罚项基础上将预测框和真实框的纵横比的影响因子拆开分别计算预测框和真实框的长和宽来解决 CIOU 存在的问题。 EIoU包括三个部分IoU损失、距离损失、高宽损失重叠面积、中心点举例、高宽比。高宽损失直接最小化了预测目标边界框和真实边界框的高度和宽度的差异使其有更快的收敛速度和更好的定位结果。 计算公式 其中wc和hc是预测边界框与真实边界框的最小外接矩形的宽度和高度。p是两点之间的欧氏距离。  Pytorch代码 def bbox_iou(box1, box2, x1y1x2y2True, GIoUFalse, DIoUFalse, CIoUFalse, EIoUFalse, eps1e-7):# Returns the IoU of box1 to box2. box1 is 4, box2 is nx4box2 box2.T# Get the coordinates of bounding boxesif x1y1x2y2: # x1, y1, x2, y2 box1b1_x1, b1_y1, b1_x2, b1_y2 box1[0], box1[1], box1[2], box1[3]b2_x1, b2_y1, b2_x2, b2_y2 box2[0], box2[1], box2[2], box2[3]else: # transform from xywh to xyxyb1_x1, b1_x2 box1[0] - box1[2] / 2, box1[0] box1[2] / 2b1_y1, b1_y2 box1[1] - box1[3] / 2, box1[1] box1[3] / 2b2_x1, b2_x2 box2[0] - box2[2] / 2, box2[0] box2[2] / 2b2_y1, b2_y2 box2[1] - box2[3] / 2, box2[1] box2[3] / 2# Intersection areainter (torch.min(b1_x2, b2_x2) - torch.max(b1_x1, b2_x1)).clamp(0) * \(torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0)# Union Areaw1, h1 b1_x2 - b1_x1, b1_y2 - b1_y1 epsw2, h2 b2_x2 - b2_x1, b2_y2 - b2_y1 epsunion w1 * h1 w2 * h2 - inter epsiou inter / unionif GIoU or DIoU or CIoU or EIoU:cw torch.max(b1_x2, b2_x2) - torch.min(b1_x1, b2_x1) # convex (smallest enclosing box) widthch torch.max(b1_y2, b2_y2) - torch.min(b1_y1, b2_y1) # convex heightif CIoU or DIoU or EIoU: # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1c2 cw ** 2 ch ** 2 eps # convex diagonal squaredrho2 ((b2_x1 b2_x2 - b1_x1 - b1_x2) ** 2 (b2_y1 b2_y2 - b1_y1 - b1_y2) ** 2) / 4 # center distance squaredif DIoU:return iou - rho2 / c2 # DIoUelif CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47v (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2)with torch.no_grad():alpha v / (v - iou (1 eps))return iou - (rho2 / c2 v * alpha) # CIoUelif EIoU:rho_w2 ((b2_x2 - b2_x1) - (b1_x2 - b1_x1)) ** 2rho_h2 ((b2_y2 - b2_y1) - (b1_y2 - b1_y1)) ** 2cw2 cw ** 2 epsch2 ch ** 2 epsreturn iou - (rho2 / c2 rho_w2 / cw2 rho_h2 / ch2)else: # GIoU https://arxiv.org/pdf/1902.09630.pdfc_area cw * ch eps # convex areareturn iou - (c_area - union) / c_area # GIoUelse:return iou # IoU 7.总结 边界框回归的三大几何因素重叠面积、中心点距离、纵横比。 IOU Loss主要考虑检测框和目标框重叠面积。GIOU Loss在IOU的基础上解决边界框不相交时loss等于0的问题。DIOU Loss在IOU和GIOU的基础上考虑边界框中心点距离的信息。CIOU Loss在DIOU的基础上考虑边界框宽高比的尺度信息。EIOU Loss在CIOU的基础上解决了纵横比的模糊定义并添加Focal Loss解决BBox回归中的样本不平衡问题。
http://www.hkea.cn/news/14257945/

相关文章:

  • 紫砂壶网站开发与设计报告论文设计说明书
  • 医院导航网站怎么做黄骅港天气
  • 北京 网站建设 公司广东住房城乡建设厅网站
  • 网站设计 济南wordpress hta
  • 易语言怎么做网站自动登录wordpress导入数据库后出现乱码
  • 建设购物网站的目的个人养老保险缴费档次
  • 怎么做全民夺宝网站做智慧教室的网站
  • 做海报的素材那个网站比较好海兴做网站
  • 音乐网站建设程序html语言的特点
  • 备案的网站必须打开吗枣强网站建设
  • 网站可以给pdf做笔记c 网站开发案例
  • 湖南张家界建设局网站义乌论坛
  • 郑州建立一个网站需要哪些wordpress无法编辑器
  • 网站专题报道页面怎么做的阿里云添加网站
  • 烟台seo网站诊断全屋定制营销
  • 金融类的网站怎么做怎么联系企业的网站建设
  • 邵阳网站制作建设软件大全安卓版下载
  • 百度多久收录一次网站商标注册网上
  • 搭建企业网站的步骤福建平潭建设局网站
  • thinkphp网站后台模板网站建设需要用到什么
  • 福州有什么做网站的公司wordpress 医院模板下载
  • 淅川微网站开发wordpress手机单页面模板
  • 网站点击按钮回到页面顶部怎么做政务网站建设存在的问题
  • 学校网站建设情况说明宝塔配置wordpress和dz伪静态
  • 编程网站免费中文版wish跨境电商平台官网
  • 17zwd一起做业网站灰色行业老域名做网站不收录
  • 家具设计网站推荐什么做电子书下载网站好
  • 赣州制作网站百度织梦网站图片不显示图片
  • 网站运营知识晚上睡不着想看点正能量
  • 石家庄新华区网站建设wordpress模板2018