云社区 博客 博客详情
云社区 博客 博客详情

[Object Detection] GIoU Loss 详解

卖猪肉的阿漆 发表于 2020-06-16 16:05:41 06-16 16:05
卖猪肉的阿漆 发表于 2020-06-16 16:05:41 2020/06/16
0
0

【摘要】 详解GIoU的细节和动机

Motivation

目前流行的Detector方法中,通常使用l1或者l2loss作为优化的目标,但是度量的时候又是使用IoU作为度量指标,两者存在一定的矛盾。

  • 如下图所示。第一行中计算的是l2normloss,所有的l2loss是一样的,但是他们对应的IoU和GIoU还是存在较大差距。

  • 更泛化的讲,绿色的是GT,黑色的Pred。当绿色固定,黑色的固定一个point,另一个point只要在如图所示的圆形上任意一点就可以。但是显然他们对应的IoU是不一样的。


所以可以考虑使用IoU作为loss,它具有以下两个优良的性质

    - IoU可以作为distance,L_{IoU} = 1-IoU

    - IoU对于尺度的变化是不敏感的,因为它最终比较的还是面积之比。


但是IoU也存在一个关键弱点

    - 如果IoU为0,则梯度失去意义,失去梯度优化的方向,会导致收敛不稳定。

    

所以为了解决该问题,作者提出了Generalized IoU


Definition

GIoU的思想:对于两个任意形状的物体A和B,我们计算最小凸包形状C,C可以包含A和B。直观上来说,IoU的弱点是指当A和B的Intersection为0时失去了目标,所以GIOU就是防止这种情况:C的面积中AUB的面积占比越大越好。


即就是maximize(AUB/C) => minimize (1-AUB/C) => minimize((C-AUB)/C)。


同时为了考虑纳入IoU,GIoU的定义如下图所示


所以目前问题的关键在于**如何找到最小凸包C**。所幸目前传统的detector中object的形状都是矩形,所以我们可以根据坐标方便的计算得到最小凸包C,如下图所示。


Mathematically:$$B^p = (x_1^p, y_1^p, x_2^p, y_2^p), B^g = (x_1^g, y_1^g, x_2^g, y_2^g)$$分别代表prediction和GT。

    - Intersection = (min(x_2^p - x_2^g) - max(x_1^p, x_1^g)) * (min(y_2^p - y_2^g) - max(y_1^p, y_1^g))

    - Convex Box: min(x_1^p, x_1^g), min(y_1^p, y_1^g), max(x_2^p - x_2^g), max(y_2^p - y_2^g)


Result

YOLO v3

Faster RCNN


登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 0
点赞
分享文章到微博
分享文章到朋友圈

评论 (0)


0/1000
评论

登录后可评论,请 登录注册

评论

您还没有写博客的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消