YOLO系列损失函数详解

news2024/11/23 23:38:29

YOLOV1

YOLOV1最后生成7×7的网格(grid cell),每个grid cell会产生两个预测框(bounding box),每个grid cell产生的两个预测框只能预测同一种类物体,也就是说YOLOV1最多只能预测49种物体,两个预测框中哪一个与标注框的IOU大就选哪一个(此即正样本),另外一个会被舍弃(负样本);特殊情况(如果有两个相同种类的物体中心点都落在同一个grid cell中,此时这个grid cell的两个预测框有可能都与真实框有最大的IOU,也即两个预测框都为正样本,这也就是说YOLOV1最多能预测49×2个目标)。如果标注框的中心点落在哪一个grid cell中就由这个grid cell产生的两个预测框去负责预测,没有标注框中心点落入的grid cell产生的两个预测框都视为负样本,置信度越小越好。

7×7意味着7×7个grid cell,30表示每个grid cell包含30个信息,其中两个预测框,每个预测框包含五个信息(x y w h c),分别为中心点位置坐标,宽高以及置信度,剩下20个是针对VOC数据集的20个种类的预测概率(即假设该grid cell负责预测物体,那么它是某个类别的概率)。

S²表示遍历所有的grid cell,B表示遍历所有的预测框;

对于每一个GTbox只分配一个正样本(预测框),也就是与它IOU最大的那个预测框,其余为负样本;

正样本有定位损失、类别损失和置信度损失;负样本只有置信度损失。

正样本的置信度标签值为预测框与标注框(ground truth)的IOU;

YOLOV1的类别归grid cell管(一个grid cell负责预测一个类别);

YOLOV3的类别归anchor管(一个anchor负责预测一个类别);

YOLOV3

边界框回归

最终产生三个预测特征层,分别预测大、中、小三种类型的物体,每个预测特征层的每个grid cell会产生三个anchor(先验框),预测框是在anchor的基础上调整得到的,下图中黑色虚线框为anchor,蓝色框为实际预测框;tx、ty、tw、th为YOLOV3网络最后预测的回归参数,Cx、Cy为此grid cell左上角的坐标,Pw、Ph为anchor的宽和高。

损失计算

置信度损失:二元交叉熵损失,正负样本都有置信度损失,上图中蓝色框代表anchor,绿色框代表真是标注框,黄色框为预测框,其中Oi(置信度标签)的值有不同的确定方法,一种为设置正样本的Oi值为1,负样本的Oi值为0;另一种为上图所示。

 类别损失:二元交叉熵损失,只关注正样本。

定位损失:只关注正样本,bx、by、bw、bh为预测框的中心点坐标以及宽高值,假设我们用实际标注框的这四个值gx、gy、gw、gh代入式子反求出\sigma \left ( tx \right )\sigma \left ( ty \right )、tw、th,也就是上图中的\hat{gx}\hat{gy}\hat{gw}\hat{gh},求\hat{gx}\hat{gy}\hat{gw}\hat{gh}与 \sigma \left ( tx \right )\sigma \left ( ty \right )、tw、th的差值的平方和再除上正样本总数就是定位损失。

S²表示遍历所有的grid cell,B表示遍历所有的预测框

正负样本匹配

原论文:对于每一个GTbox只分配一个正样本(预测框),也就是与它IOU最大的那个预测框;与GTbox的IOU小于0.5的预测框全都视为负样本;对于IOU大于0.5但不是最大的那部分预测框直接丢弃。

代码实现:一些代码实现中把IOU大于0.5的预测框都视为正样本,这样做是为了提高正样本的数量,这种方法也被证明效果不错。

YOLOV4

对于一些特殊情况,当GTbox的中心点落在grid cell网格的边界上时, \sigma \left ( tx \right )\sigma \left ( ty \right )不可能取到0或者1,所以就对其施加了一个缩放因子,将预测框中心点相较于grid cell左上角的偏移量由原来的0~1变为了-0.5~1.5,这样做另一方面也可以增大正样本的数量,也就是说,这个预测框不仅可以由当前中心点所在的grid cell的anchor偏移得到,还可以通过上边或者左边的两个grid cell的anchor通过偏移得到。

 下图对应GTbox中心点落在网格不同位置处所对应的负责预测预测框的grid cell

reference

YOLOV1论文精读:You only look once: Unified, real-time object detection_哔哩哔哩_bilibili

【精读AI论文】YOLO V3目标检测(附YOLOV3代码复现)_哔哩哔哩_bilibili

3.1 YOLO系列理论合集(YOLOv1~v3)_哔哩哔哩_bilibili

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创新案例 | Web3典范BrainTrust如何打造DAO增长飞轮3年扩张50倍

BrainTrust是一家创新的多边平台,类似于去中心化的BOSS直聘。在过去三年中,BrainTrust取得了惊人的增长,总服务价值增长了50倍以上。这家公司的增长模式非常独特,使得它的增长飞轮一路狂飙。在2022年,BrainTrust的成绩…

IP地址是如何定位的

IP地址是互联网中计算机的唯一标识,它由32位二进制数组成,分为四个8位的数字,每个数字之间用"."隔开,例如:106.110.92.215。IP地址的归属地指的是这个IP地址所在的地理位置,对于网络安全、网络监…

巧用语言模型——让准确率再涨一点点!

还记得在去年,我们曾经发过一篇文章介绍 icefall 中的语言模型使用方法:升点小技巧之—在icefall中巧用语言模型。如今半年过去了,k2 团队又有了一些新进展。今天来给大家做一个小小的总结,再给大家的模型涨涨点(又又又…

【问题解决】小米 升级后蓝牙关闭后 早上自动打开怎么办?

目录 原理 连接态: 半连接态:​编辑 关闭态:​编辑 重点来了 升级小米MIUI 14后,发现蓝牙无法关闭,每天睡觉前点击关闭,第二早上它又自动打开,感觉 手机中毒了!! 经过一番研究,搞…

YOLOv6 4.0 使用记录: OpenCV DNN C++推理

目录 1、下载源码 2、下载权重文件 3、配置环境 4、推理 6、ONNX格式导出 权重文件为yolov6list_s.pt 权重为yolov6.pt 7、opencv DNN推理 8、个人总结 1、下载源码 下载最新的4.0版本的 2、下载权重文件 我下的是YOLOv6Lite-S 3、配置环境 cd到项目目录,运…

国民技术N32G430开发笔记(16)- IAP升级 整合多个bin文件为一个升级包

IAP升级 整合多个bin文件为一个升级包 1、我们的程序分区目前为: Boot 0x8000000 – 0x8004000 16KB Settings 0x8004000 – 0x8006000 8KB App 0x8006000 – 0x800B000 20KB Download 0x800B000 – 0x800FFFF 20KB 2、烧录时候的bin文件有三个: Bootl…

Docker笔记整理

安装Docker 通过 uname -r 命令查看你当前的内核版本 uname -r 使用 root 权限登录 Centos。确保 yum 包更新到最新 yum -y update 卸载旧版本(如果安装过旧版本的话) yum remove docker docker-common docker-selinux docker-engine 安装需要的软件包, yum-u…

Web前端已死?别带节奏了,说白了就是“卷”

趁着“前端已死”这个话题还有点热度,我想再好好聊聊这个话题。社区里怎么只有前端已死的论调,后端、DB、运维、连原生开发还在好好“划水”。前端却发出了哀嚎:前端已死,找工作好难啊。 前端技术精微渊深,除了基础的…

( 数组和矩阵) 766. 托普利茨矩阵 ——【Leetcode每日一题】

❓766. 托普利茨矩阵 难度:简单 给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。 如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵 。…

【Python习题集7】Python对CSV文件数据进行可视化

csv可视化 一、实验内容二、实验总结 一、实验内容 1、datal.csv中的B、C、D和E列数据分别是日期、权重、A企业的销售额、B企业的销售额。读取C、D、E列数据,并统计E列数据的算术平均数、加权平均值(权值为C列数据)、方差、中位数、最小值、最大值。并绘制E列数据的…

MyBatis:使用 MyBatis 实现多表查询(多对一和一对多)、动态 SQL、缓存

文章目录 MyBatis:Day 03一、复杂查询的环境搭建二、多表查询1. 多对一:关联(1)联表查询(2)子查询 2. 一对多:集合(1)联表查询(2)子查询 3. 总结 …

JavaScript学习(一)

一、JavaScript的背景及知识结构 1、三个问题 什么是JavaScript?JavaScript能干什么?JavaScript是由什么构成的?怎样学习JavaScript? 2、什么是JavaScript? ①JavaScript是一种轻量级的编程语言;借鉴了J…

2023年2月573名学员通过国家信息安全水平考试其中CISP218名,NISP二级355名

北京PER20230217HEBAN3 考试时间:2023年02月17日 地点:北京 王佳俊、王后月、程鹏、王海洋、牛麒盛、张飞、禹晓瑞、李鹏卫、柳位世、李霖、刘志超、刘峰、张广军、刘鑫博、王琳、翟栋、刘高军、康寅哲、夏中玲、冯光豪、程岩辉、白玉强、遆盼明、李淼…

IDEA部署tomcat项目

文章目录 只是部署一下看到这里即可war和war exploded的区别warwar exploded update的动作update resourcesupdate classes and resourcesredeployrestart server 解决了拿到了一个tomcat项目后如何将它部署到IDEA里面的问题。 file->open 选中pom.xml并open as project …

【网站架构】Nginx 4层、7层代理配置,正向代理、反向代理详解

大家好,欢迎来到停止重构的频道。 本期我们讨论网络代理。 在往期《大型网站 安全性》介绍过,出于网络安全的考虑,一般大型网站都需要做网络区域隔离,以防止攻击者直接操控服务器。 网站系统的应用及数据库都会放在这个网络安全…

js实现归并排序(mergeSort)

理解归并排序 归并排序是一种基于分治思想的排序算法,它将一个待排序的序列分为两个子序列,分别对子序列进行排序,然后将排好序的子序列合并成一个有序的序列。这个过程可以递归地进行,直到序列被划分为只有一个元素时停止递归。 …

版本控制 | 如何使用虚幻引擎的多用户编辑(MUE)功能

随着现代虚拟制作技术的发展,电影制片厂不再需要完全依赖实际场景,而是可以在拍摄期间就让虚拟制作设计团队将实景与计算机生成的虚拟内容融合在一起。虚幻多用户编辑(Unreal Multi-User Editing,简称MUE)可以帮助简化…

【产品方案】后台管理系统设计思路

第一章 前言 相比前端设计,我更喜欢设计后台管理系统。如果说前端设计考验的是共情能力,那后台管理系统设计考研的就是逻辑能力,前者需要站在用户的角度,后者是站在管理者的角度思考。 有幸参与了公司不少业务系统从“0-1”的设计…

使用prometheus时发现mongodb exporter的/metrics数据展示很慢,延迟高

项目场景: 使用prometheusgrafana搭建对mongoDB集群的监控。 问题描述 使用prometheus时发现mongodb exporter的/metrics数据展示接口很慢,延迟高。 看了一下大概是10s 原因分析: 由于是在云服务器上进行搭建的。 经过尝试之后发现创建mo…

Apache Doris学习记录

1. Doris基础学习 中文官网:https://doris.apache.org/zh-CN/docs/dev/summary/basic-summary/ 1.1 doris 简介 Apache Doris 是一个现代化的 MPP(Massively Parallel Processing,即大规模并行处理) 分析型数据库产品 亚秒级响应时间即可获得查询结果 可以支持 10PB…