Object Detection--Loss Function:从IoU到CIoU

本篇总结Loss Function中的IoU系列代码。

1. IoU

交并集,两个框交集面积除以并集面积。(论写写画画的重要性)(找原文看看)

"""
box1[x1, y1, x2, y2]
box2[x1, y1, x2, y2]
return iou
"""
def iou(box1, box2):# Intersectionw = max(0, min(box1[2], box2[2])-max(box1[0], box2[0]))h = max(0, min(box1[3], box2[3])-max(box1[1], box2[1]))# Unions1 = (box1[2]-box1[0]) * (box1[3]-box1[1])s2 = (box2[2]-box2[0]) * (box2[3]-box2[1])return (w*h)/(s1+s2-w*h)

 IoU的问题:

(1)在检测框和目标框完全不重叠时,IoU为0,无法衡量两个框的距离远近,损失函数不可导,无法优化;

(2)两个检测框相同,IoU也相同时,无法衡量两者和目标框相交情况的不同(这点一定要区分吗?)。

2. GIoU

 公式:

 GIoU=IoU- \frac{C-U}{C}

 其中C表示最小外接矩形面积,U表示并集面积。

(找原文看看)

"""
box1[x1, y1, x2, y2]
box2[x1, y1, x2, y2]
return giou
"""
def giou(box1, box2):# Intersectionw = max(0, min(box1[2], box2[2])-max(box1[0], box2[0]))h = max(0, min(box1[3], box2[3])-max(box1[1], box2[1]))# Unions1 = (box1[2]-box1[0]) * (box1[3]-box1[1])s2 = (box2[2]-box2[0]) * (box2[3]-box2[1])union = s1+s2-w*hiou = (w*h)/union# area of minimun rectangularx1 = min(box1[0], box2[0])x2 = max(box1[2], box2[2])y1 = min(box1[1], box2[1])y2 = max(box1[3], box2[3])c = (x2-x1) * (y2-y1)return iou-(c-union)/c

疑问:当两个检测框大小相同,和目标框的IoU相同时,GIoU更倾向于使检测框和目标框在x或y方向上平行,这样合理吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/570748.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

政府军工单位落实国产信创要求,怎么进行FTP替代?

信创,全称是“信息技术应用创新”,旨在实现信息技术自主可控,规避外部技术制裁和风险。其产业涉及IT基础设施、基础软件、应用软件、信息安全等方面,主要包括新一代信息技术下的云计算、软件(操作系统、中间件、数据库…

政安晨:【Keras机器学习实践要点】(四)—— 顺序模型

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 介绍 Keras是一个用于构建和训练深度学习模…

Spring事务-两种开启事务管理的方式:基于注解的声明式事务管理、基于编程式的事务管理

Spring事务-两种开启事务管理的方式 1、前期准备2、基于注解的声明式事务管理3、基于编程式的事务管理4、声明式事务失效的情况 例子:假设有一个银行转账的业务,其中涉及到从一个账户转钱到另一个账户。在这个业务中,我们需要保证要么两个账户…

Flask学习(五):session相关流程

流程图如下图所示: 调用相关类如下图所示: 相关代码如下: from flask import Flask, sessionapp Flask(__name__)1. 加密会话数据:在 Flask 中,会话数据存储在客户端的 cookie 中。设置 app.secret_key 可以加密会话…

Qt Design Studio各个组件怎么用?【长期更新】

写在前面:本文长期更新,建议点赞/收藏/关注~ 在Qt Design Studio中,组件类别有: 每一种,都有其特定的用途和适用场景: 1.My Components 使用时机:当你需要重用自定义的设计元素或者特殊功能…

强化学习及其在机器人任务规划中的进展与分析

源自:模式识别与人工智能 作者:张晓明 高士杰 姚昌瑀 褚誉 彭硕 “人工智能技术与咨询” 发布 摘 要 强化学习可以让机器人通过与环境的交互,学习最优的行动策略,是目前机器人领域关注的重要前沿方向之一.文中简述机器人任务规划问题的形式化建…

Fragment 与 ViewPager的联合应用(2)

5.创建底部布局bottom_layout <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"horizontal"android:layout_width"match_parent"android:layout_height"55dp"android:background&qu…

反射率光纤光谱仪检测汽车后视镜反射率

反射率光纤光谱仪是一种用于测量材料表面反射率的精密仪器&#xff0c;它通过光纤传输光信号&#xff0c;并利用光谱仪进行分析&#xff0c;以确定材料的光学特性。反射率光纤光谱仪的工作原理基于相对反射率的计算&#xff0c;它涉及到光源、光纤、光谱仪等关键组件。 后视镜能…

在项目中缓存如何优化?SpringCache接口返回值的缓存【CachePut、CacheEvict、Cacheable】

SpringCache 介绍&#xff08;不同的缓存技术有不同的CacheManager&#xff09;注解入门程序环境准备数据库准备环境准备注入CacheManager引导类上加EnableCaching CachePut注解(缓存方法返回值)1). 在save方法上加注解CachePut2). 测试 CacheEvict注解&#xff08;清理指定缓存…

智慧农业领航:数字乡村助力乡村振兴与可持续发展

目录 一、引言 二、智慧农业的内涵与特点 三、数字乡村助力乡村振兴的路径 1、提升农业生产效率 2、优化农业产业结构 3、促进乡村社会治理现代化 三、智慧农业在可持续发展中的作用 1、促进资源节约与环境保护 2、提升农产品质量与食品安全 3、推动乡村经济多元化发…

2024.3.26学习笔记

今日学习韩顺平java0200_韩顺平Java_对象机制练习_哔哩哔哩_bilibili 今日学习p273-p285 包 包的本质实际上就是创建不同的文件夹/目录来保存类文件 包的三大作用 区分相同名字的类 当类很多时&#xff0c;可以很好的管理类 控制访问范围 包的基本语法 package com.xx…

解决错误LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to

react native pod第三方包或者git clone的时候遇到 OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443两种解决方案 方法一 修改计算机网络配置 由于使用 IPv6 的原因&#xff0c;可能会导致这一问题的出现 系统在解析hostname时使用了ipv6 可以配…