Giou loss tf代码 - CSDN博客

文章推薦指數: 80 %
投票人數:10人

loss: a float tensor of shape [batch_size, num_anchors] tensor ... IOU_loss、DIOU_loss、GIOU_loss、CIOU_loss代码实现(分为torch版和numpy版). Gioulosstf代码 woshiwwwppp 于 2019-04-0619:19:52 发布 1464 收藏 4 版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qwedsaewq/article/details/89059321 版权   defmatched_intersection(boxlist1,boxlist2,scope=None): """Computeintersectionareasbetweencorrespondingboxesintwoboxlists. Args: boxlist1:BoxListholdingNboxes boxlist2:BoxListholdingNboxes scope:namescope. Returns: atensorwithshape[N]representingpairwiseintersections """ withtf.name_scope(scope,'MatchedIntersection'): y_min1,x_min1,y_max1,x_max1=tf.split( value=boxlist1.get(),num_or_size_splits=4,axis=1) y_min2,x_min2,y_max2,x_max2=tf.split( value=boxlist2.get(),num_or_size_splits=4,axis=1) min_ymax=tf.minimum(y_max1,y_max2) max_ymin=tf.maximum(y_min1,y_min2) intersect_heights=tf.maximum(0.0,min_ymax-max_ymin) min_xmax=tf.minimum(x_max1,x_max2) max_xmin=tf.maximum(x_min1,x_min2) intersect_widths=tf.maximum(0.0,min_xmax-max_xmin) returntf.reshape(intersect_heights*intersect_widths,[-1])   defmatched_containing(boxlist1,boxlist2,scope=None): """Computethesmallestaxis-alignedboundingboxthatfullycontains apairofcorrespondingboxesfromtwoboxlists. Args: boxlist1:BoxListholdingNboxes boxlist2:BoxListholdingNboxes scope:namescope. Returns: atensorwithshape[N]representingpairwiseintersections """ withtf.name_scope(scope,'MatchedContaining'): y_min1,x_min1,y_max1,x_max1=tf.split( value=boxlist1.get(),num_or_size_splits=4,axis=1) y_min2,x_min2,y_max2,x_max2=tf.split( value=boxlist2.get(),num_or_size_splits=4,axis=1) max_ymax=tf.maximum(y_max1,y_max2) min_ymin=tf.minimum(y_min1,y_min2) containing_heights=tf.maximum(0.0,max_ymax-min_ymin) max_xmax=tf.maximum(x_max1,x_max2) min_xmin=tf.minimum(x_min1,x_min2) containing_widths=tf.maximum(0.0,max_xmax-min_xmin) returntf.reshape(containing_heights*containing_widths,[-1]) defmatched_giou(boxlist1,boxlist2,scope=None): """Computegeneralizedintersection-over-unionbetweencorrespondingboxesinboxlists. Args: boxlist1:BoxListholdingNboxes boxlist2:BoxListholdingNboxes scope:namescope. Returns: atensorwithshape[N]representingpairwiseiouscores. """ withtf.name_scope(scope,'MatchedGIoU'): epsilon=0.00001 safe_boxlist1=safe_boxlist(boxlist1) safe_boxlist2=safe_boxlist(boxlist2) intersections=matched_intersection(safe_boxlist1,safe_boxlist2) areas1=area(safe_boxlist1) areas2=area(safe_boxlist2) unions=areas1+areas2-intersections iou=tf.where( tf.equal(intersections,0.0), tf.zeros_like(intersections),tf.truediv(intersections,unions)) containings=matched_containing(safe_boxlist1,safe_boxlist2) #thisisthe`C_term`in`GIoU=IoU-C_term`asdescribedintheGIoUpaper unoccupied_area=tf.div_no_nan((containings-unions),containings) giou=tf.subtract(iou,unoccupied_area) returngiou classWeightedGIoULocalizationLoss(Loss): """GIoUlocalizationlossfunction. """ def_compute_loss(self,prediction_tensor,target_tensor,weights): """Computelossfunction. Args: prediction_tensor:Afloattensorofshape[batch_size,num_anchors,4] representingthedecodedpredictedboxes target_tensor:Afloattensorofshape[batch_size,num_anchors,4] representingthedecodedtargetboxes weights:afloattensorofshape[batch_size,num_anchors] Returns: loss:afloattensorofshape[batch_size,num_anchors]tensor representingthevalueofthelossfunction. """ predicted_boxes=box_list.BoxList(tf.reshape(prediction_tensor,[-1,4])) target_boxes=box_list.BoxList(tf.reshape(target_tensor,[-1,4])) matched_giou=box_list_ops.matched_giou(predicted_boxes,target_boxes) per_anchor_giou_loss=1.0-matched_giou returntf.reshape(weights,[-1])*per_anchor_giou_loss   defarea(boxes): """Computesareaofboxes. Args: boxes:Numpyarraywithshape[N,4]holdingNboxes Returns: anumpyarraywithshape[N*1]representingboxareas """ return(boxes[:,2]-boxes[:,0])*(boxes[:,3]-boxes[:,1]) defsafe_boxlist(boxlist,scope=None): """Checksthemin/maxoftheboxlist Handlescaseswhereymin/ymaxxmin/maxareswapped. Args: boxlist:BoxListholdingNboxes scope:namescope. Returns: atensorwithshape[N]representingboxareas. """ withtf.name_scope(scope,'SafeBoxlist'): y_min,x_min,y_max,x_max=tf.split( value=boxlist.get(),num_or_size_splits=4,axis=1) min_y=tf.reshape(tf.minimum(y_min,y_max),[-1]) max_y=tf.reshape(tf.maximum(y_min,y_max),[-1]) min_x=tf.reshape(tf.minimum(x_min,x_max),[-1]) max_x=tf.reshape(tf.maximum(x_min,x_max),[-1]) safe_boxes=tf.stack([min_y,min_x,max_y,max_x],axis=1) returnbox_list.BoxList(safe_boxes)   woshiwwwppp 关注 关注 0 点赞 踩 4 收藏 打赏 4 评论 Gioulosstf代码 defmatched_intersection(boxlist1,boxlist2,scope=None):"""Computeintersectionareasbetweencorrespondingboxesintwoboxlists.Args:boxlist1:BoxListholdingNboxesboxlist2:BoxL... 复制链接 扫一扫 目标检测中的回归损失函数系列二:IoULoss 梦坠凡尘 05-11 1万+ IOULoss 出自论文:https://arxiv.org/pdf/1608.01471.pdf L1和L2loss是将bbox四个点分别求loss然后相加,并没有考虑靠坐标之间的相关性,而实际评价指标IOU是具备相关性。

看一张图关注IoU部分(GIoU先不管): 图中第一行,所有目标的L1Loss都一样,但是第三个的IoU显然是要大于第一个,并且第3个的检测结果似乎也是好于第一个的。

第二行类似,所有目标的L1Loss也都一样,但IoU却存在差异。

因此使用bbox和groundtruth 【IoUloss】IoU损失函数理解 计算机视觉方面的点点滴滴,欢迎一起讨论 05-22 1008 文章目录1引言2问题分析3IoULoss4感谢链接 1引言 目标检测任务的损失函数由ClassificitionLoss和BoundingBoxRegeressionLoss两部分构成。

BoundingBoxRegressionLossFunction的演进路线是: SmoothL1Loss-->IoULoss-->GIoULoss-->DIoULoss-->CIoULoss 之前写到了SmoothL1Loss,本文介绍I 评论 4 您还未登录,请先 登录 后发表或查看评论 IOU_loss、DIOU_loss、GIOU_loss、CIOU_loss代码实现(分为torch版和numpy版) weixin_44944382的博客 04-01 4231 几种IOU损失的优缺点对比: 直接上代码,需要自取: 1、IOU #---------------------numpy实现版----------------------------------------# importnumpyasnp defbboxes_iou(boxes1,boxes2): ''' calIOUoftwoboxesorbatchboxes suchas:(1) boxes1=np.asarray([[0 IOUloss详解 baidu_38634017的博客 07-01 3587 转载自:https://www.jianshu.com/p/e3bf67cd4459 IoU损失 DenseBox DenseBox是全卷积网络,网络的输出大小为(;输出featuremap上的点确定一个检测框的样本,包含样本的信息度和该点到boundingbox四边的距离。

Unitbox 相对于DenseBox,Unitbox使用IoU损失替代传统的定位L2损失。

IoU损失示意图 IoU损失的前向传播 IoU损失前向传播伪代码 本质上是对IoU的交叉熵损失,即将I 总结各类IOU以及其代码实现 最新发布 weixin_50727642的博客 06-01 423 各类iou总结 目标检测中的4种IoULoss W1995S的博客 03-22 3885 IoU 目标检测任务的损失函数一般由ClassificitionLoss(分类损失函数)和BoundingBoxRegeressionLoss(回归损失函数)两部分构成。

BoundingBoxRegeression的Loss近些年的发展过程是: SmoothL1Loss->IoULoss(2016)->GIoULoss(2019)->DIoULoss(2020)->CIoULoss(2020) IoU(IntersectionofUnion)是指预 各种IOU-loss的计算方式及python实现 ffllyy2019的博客 05-29 1503 1.IOU 代码地址:https://arxiv.org/pdf/1608.01471.pdf IOU的全称为交并比(IntersectionoverUnion),IOU计算的是“预测的边框”和“真实的边框”的交集和并集的比值。

首次提出主要解决人脸检测问题,IOU有尺度不变性的优点,但是将其作为损失函数,由于存在真实值与预测值IOU为0情况,网络无法训练,所以无法直接使用。

defIOU(box1,box2): """ iouloss :parambo IoULoss汇总 00000cj的博客 03-06 4237 IoULoss 论文 UnitBox:AnAdvancedObjectDetectionNetwork 解决的问题 用\(l_{2}\)loss作为边框回归loss的两个缺点: 在\(l_{2}\)loss中,boundingbox的坐标(以\(x_{t},x_{b},x_{l},x_{r}\)的形式)是作为四个单独的变量优化的,这违背了物体的边界是高度相关的事实。

这可能会导致预测框和groundtruth的某一条或两条边很接近,但整体的框效果很差。

\(l_{2}\)lo 各种IOUloss的pytorch实现 weixin_38241876的博客 11-24 2694 defbbox_iou(box1,box2,x1y1x2y2=True,GIoU=False,DIoU=False,CIoU=False): #ReturnstheIoUofbox1tobox2.box1is4,box2isnx4 box2=box2.t() #Getthecoordinatesofboundingboxes ifx1y1x2y2:#x1,y1,x2,y2=box1 b. yolov3--22--一文详解yolov3中用GIoU作为边界框检测的Loss_论文笔记 天明宇朗的博客 03-09 4105 来源:CVPR2019论文GeneralizedIntersectionoverUnion:AMetricandALossforBoundingBoxRegression的解读 通过对Loss的修改提升检测任务的效果,觉得思路很棒 IoU是检测任务中最常用的指标,由于IoU是比值的概念,对目标物体的scale是不敏感的。

然而检测任务中的BBox的回归损失(MSElo... IoUloss小总结 qq_17614495的博客 05-04 1447 对于检测框B和groundtruthG,二者的IoU如下: 那么IoULoss即为1-IoU。

显然IoULoss具有非负性、尺度不变性、同一性、对称性、三角不等性等特点,所以可以用于boundingbox的回归任务中。

但同时,IoULoss也存在一个很致命的缺点: 当B与G的IoU为0时,Loss也为0,网络无法进行训练。

因此IoUloss在回归任务中的表现并不好。

GIoULoss 论文:https://arxiv.org/abs/1902.09630 GIoU TF2.0API学习(Python)六:函数compute_loss、函数bbox_giou、函数bbox_iou Winds_Up的博客 01-17 610 开喽 fasterrcnn第二阶段loss出现nan_斯坦福CVPR2019GIoU:目标检测任务的新Loss weixin_42299244的博客 01-04 539 论文题目:GeneralizedIntersectionoverUnion:AMetricandALossforBoundingBoxRegression论文链接:https://arxiv.org/abs/1902.09630​arxiv.org代码实现:https://github.com/generalized-iou/g-darknet​github.com项目主页... IoULoss了解总结 qq_37844044的博客 03-02 655 IOULoss 前言:IOU主要是作为目标检测领域的指标。

即为:检测目标和GT目标的交集(Intersection)/检测目标和GT目标的并集(Union) 但是,IOU并不能精确的表示两个框的中和度,如下图中,三者的IOU值相等,但是它们的回归效果并不一致。

左边回归效果最好,右边最差。

所以,随之产生了很多IOULoss的改进方法,下列进行部分说明: 一、GIoULoss(GeneralizedIntersectionoverUnion) 公式为: C指的是,能够将预测框和gt框最小 【GIoUloss】GIoUloss损失函数理解 计算机视觉方面的点点滴滴,欢迎一起讨论 05-22 784 文章目录1引言2问题分析3GIoULoss计算过程4IoU和GIoU对比分析5感谢链接 1引言 目标检测任务的损失函数由ClassificitionLoss和BoundingBoxRegeressionLoss两部分构成。

BoundingBoxRegressionLossFunction的演进路线是: SmoothL1Loss-->IoULoss-->GIoULoss-->DIoULoss-->CIoULoss 之前写到了 canny边缘检测算法_BASNet,一种能关注边缘的显著性检测算法 weixin_39953102的博客 11-28 284 今天要聊的这篇文章是2019年CVPR的一篇显著性检测的文章。

《BASNet:Boundary-AwareSalientObjectDetection》,看文章标题,顾名思义,就知道文章可以很好的关注到显著性目标的边缘信息。

文章:https://webdocs.cs.ualberta.ca/~xuebin/BASNet.pdf​webdocs.cs.ualberta.ca代码:Nathan... CVPR2019|斯坦福学者提出GIoU,目标检测任务的新Loss AI科技大本营 03-10 8033 作者|Slumbers,毕业于中山大学,深度学习工程师,主要方向是目标检测,语义分割,GAN 责编|Jane 人工智能的现状及今后发展趋势如何? https://edu.csdn.net/topic/ai30?utm_source=csdn_bw 本文是对CVPR2019论文《GeneralizedIntersectionoverUnion:AM... GIoULoss损失函数浅析 热门推荐 WalkingSoul的博客 09-26 1万+ GIoULoss 参考文献:GeneralizedIntersectionoverUnion:AMetricandALossforBoundingBoxRegression GIoU是源自IoU的一种边框预测的损失计算方法,在目标检测等领域,需要对预测边框(preBBox)与实际标注边框(groundtruthBBox)进行对比,计算损失。

在Yolo算法中,给定预测... 深度学习loss出现NAN的原因分析: dinry的博客 04-24 5131 最近写model出现了一些NAN的问题,总结一下 1.我用的GAN网络做推荐,Gmodel中的pred需要用 self.prob=tf.clip_by_value(tf.nn.sigmoid(self.score),1e-5,1)处理一下,不然score可能为0,在cross_entropy与policygradient中log(score)->log(0)->无穷... “相关推荐”对你有帮助么? 非常没帮助 没帮助 一般 有帮助 非常有帮助 提交 ©️2022CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页 woshiwwwppp CSDN认证博客专家 CSDN认证企业博客 码龄11年 暂无认证 11 原创 27万+ 周排名 111万+ 总排名 1万+ 访问 等级 341 积分 23 粉丝 23 获赞 25 评论 97 收藏 私信 关注 分类专栏 数据结构与算法 2篇 最新评论 sknet阅读笔记及pytorch实现代码 灵起无邪: 想请教如何处理一维信号 darknet评测自己的数据集recallmap计算 橙橙不知道: 尝试recall命令的时候,输出的IOU值很小,而且很快变为nan请问是什么情况? 巧用检测器与跟踪器 DeepLearning小舟: 大佬的文章让我受益颇多! sknet阅读笔记及pytorch实现代码 Coding-Prince: 学习了 视频多目标跟踪 qq_37247180: 您好,请问您有视频多目标跟踪的源代码么,我处于学习阶段,方便的话可以发我一份吗,邮箱[email protected],万分感谢!!! 您愿意向朋友推荐“博客详情页”吗? 强烈不推荐 不推荐 一般般 推荐 强烈推荐 提交 最新文章 darknet评测自己的数据集recallmap计算 cuda编程基础xmind 【论文译文】Few-ShotUnsupervisedImage-to-ImageTranslation(FUNIT) 2019年13篇 目录 目录 分类专栏 数据结构与算法 2篇 目录 评论 4 被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言 查看更多评论 打赏作者 woshiwwwppp 你的鼓励将是我创作的最大动力 ¥2 ¥4 ¥6 ¥10 ¥20 输入1-500的整数 余额支付 (余额:--) 扫码支付 扫码支付:¥2 获取中 扫码支付 您的余额不足,请更换扫码支付或充值 打赏作者 实付元 使用余额支付 点击重新获取 扫码支付 钱包余额 0 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。

2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值



請為這篇文章評分?