Giou loss tf代码 - CSDN博客
文章推薦指數: 80 %
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.09630arxiv.org代码实现:https://github.com/generalized-iou/g-darknetgithub.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.pdfwebdocs.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币套餐、付费专栏及课程。
余额充值
延伸文章資訊
- 1addons/giou_loss.py at master · tensorflow/addons - GitHub
model = tf.keras.Model(). >>> model.compile('sgd', loss=tfa.losses.GIoULoss()). Args: mode: one o...
- 2tfa.losses.GIoULoss | TensorFlow Addons
tfa.losses.GIoULoss ... Implements the GIoU loss function. ... GIoU loss was first introduced in ...
- 3Generalized Intersection over Union
Generalized Intersection over Union. A Metric and A Loss for Bounding Box Regression. Cite Paper ...
- 4Keras Loss Functions: Everything You Need to Know
loss functions available in Keras and how to use them, ... import tensorflow_addons as tfa model....
- 5Tensorflow feature that consists of bounding boxes lists
Now I want to use the tfa.losses. ... code ValueError: Dimension must be 4 but is 7876 for '{{nod...