首页 > 其他分享 >目标检测1--Pytorch目标检测之yolov1

目标检测1--Pytorch目标检测之yolov1

时间:2024-07-07 21:56:58浏览次数:8  
标签:box 置信度 -- 检测 标定 cell Pytorch grid Bounding

文章目录

前言

论文地址:yolov1

  • YOLOv1(You Only Look Once version 1)是由Joseph Redmon等人于2016年提出的一种单阶段(one-stage)目标检测算法。
  • 它的核心思想是将目标检测问题转化为回归问题,通过单个神经网络直接预测图像中物体的类别和位置。

核心思想

在这里插入图片描述

  • 检测视为回归问题:YOLOv1将目标检测视为一个单一的回归问题,通过一次前向传播就能预测出图像中所有物体的类别和位置。
  • 网格划分:将输入图像划分为S×S的网格(grid cell),每个网格负责预测B个候选框(bounding box)以及这些候选框的置信度和C个条件类别概率。

网络结构

网络结构借鉴了 GoogLeNet 。24个卷积层,2个全链接层。(用1×1 reduction layers 紧跟 3×3 convolutional layers 取代GoogleNet的 inception modules )。
在这里插入图片描述
最后网络输出的是7730的tensor。

算法原理

  • 在yolov1将作者将一个448x448的原图片分割为7x7=49个grid cell;
  • 每个grid cell预测预测一个物体,每个grid cell有B个Bounding box,每个Bounding box包含的坐标信息和置信度信息,以及该grid cell包含的目标物体属于C个class类别中某一类的概率(训练数据集为voc2012,包含20个class类别,C=20),所以每一个grid cell对应 5x2+20=30个预测参数。

通用公式: SxS个网格,每个网格要预测B个bounding box还要预测C个categories,输出就是S x S x (5×B+C)的一个tensor。
注意:class信息是针对每个网格的,confidence信息是针对每个bounding box的;

在这里插入图片描述

从上图可以看出经过卷积神经网络输出的是一个7 x7 x30的tensor;每一个gride cell中可以预测两个目标,上图中的边界框1和边界框2 分别代表两个目标的位置信息和置信度信息;

算法流程

在这里插入图片描述

  1. Resize成448 x448,图片分割得到7 x7网格(gride cell)。
  2. CNN提取特征和预测:卷积部分负责提取特征,全连接部分负责预测。
  3. 过滤bbox(通过nms)
关于标定框
  • 网络的输出是S x S x (5*B+C) 的一个 tensor(S-尺寸,B
    标定框个数,C-检测类别数,5-标定框的信息)。
  • 5分为4+1: 4代表标定框的位置信息。框的中心点(x,y),框的高宽h,w;
  • 1表示每个标定框的置信度以及标定框的准确度信息。
框的中心点 (x,y)的解释

    表示Bounding box预测框的中心坐标相较于该Bounding box的中心点归属于grid cell左上角的偏移量,取值在0-1之间。如下图,绿点是grid cell的左上角(0,0),红色和蓝色框是该grid cell包含的2个Bounding box,二者中心坐标分别为红点和蓝点。二者的(x,y)分别是(0.5,0.5)和(0.9,0.9)
1
注意:Bounding box的中心坐标一定是在其对应grid cell里面,因此红点和蓝点的坐标可以归一化到0-1之间。

框的宽高(w,h)的解释

    表示Bounding box预测框的宽和高相对于原图片宽和高的比例。yolov1输入图像是448*448,假设Bounding box预测框的宽和高是44.8个像素,则w=0.1,h=0.1。

置信度 c的解释:

    置信度confidence,用于表征网格中是否有目标物的概率以及预测的边框位置的准确度。对于边界框位置的准确度,通常(使用预测的Bounding box与物体真实的边界框的)交并比IoU(Interaction over Union)来衡量。IoU越接近于1,表明目标物边框与边界框重合度越高。置信度计算公式为:

P r ( o b j e c t ) ∗ I O U p r e d t r u t h Pr(object)*IOU^{truth}_{pred} Pr(object)∗IOUpredtruth​

  • 边代表包含这个标定框的格子里是否有目标。有=1,没有=0。
  • 右边代表标定框的准确程度,右边的部分是把两个标定框(一个是Ground truth,一个是预测的
    标定框)进行一个IOU操作,即两个标定框的交集比并集,数值越大,即标定框重合越多,越准确。
class类别概率详解

     我们可以计算出各个标定框的类别置信度(class-specific confidence scores/ class scores):表达的是该标定框中目标属于各个类别的可能性大小以及标定框匹配目标的好坏。
    每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score。
P r ( C l a s s i / o b j e c t ) ∗ P r ( o b j e c t ) ∗ I O U p r e d t r u t h = P r ( C l a s s i ) ∗ I O U p r e d t r u t h Pr(Class_i/object)*Pr(object)*IOU^{truth}_{pred} =Pr(Class_i)*IOU^{truth}_{pred} Pr(Classi​/object)∗Pr(object)∗IOUpredtruth​=Pr(Classi​)∗IOUpredtruth​

损失函数

     yolov1损失函数包括三部分:边界框损失(Bounding box loss)、置信度损失(confidence loss)和分类损失(classification loss),其中置信度损失又可以细分为包含目标的Bbox的置信度损失和未包含目标的Bbox的置信度损失两种。计算方法如下:
在这里插入图片描述

坐标损失

在这里插入图片描述
其中,

  • 前半部分表示负责检测目标物的Bounding box中心点定位误差。
  • 后半部分表示负责检测目标物的Bounding box宽高定位误差。

注意:这里对宽和高的损失处理分别取了根号,因为如若不取根号,损失函数往往更倾向于调整尺寸比较大的预测框。例如20个像素点的偏差,对于800x600的预测框几乎没有影响,此时IoU值还是很大,但是对于30x40的预测框影响就很大。取根号就是为了尽可能消除大尺寸框和小尺寸框之间的差异。其本质也就是尺度归一化。

置信度损失

在这里插入图片描述

  • 前半部分表示负责检测目标物的Bounding box的置信度损失。
  • 后半部分表示不负责检测目标物的Bounding box的置信度损失。
分类损失

在这里插入图片描述

  • 表示负责检测目标物的grid cell的分类损失。

优缺点

  • 优点:
    检测速度快,能够实现实时检测。
    泛化能力强,能够应用于新的领域和输入。
  • 缺点:
    对小目标和密集目标的检测性能较差。
    每个网格只能预测一个物体,无法处理一个网格中存在多个物体的情况。

如有错误欢迎指正,如果帮到您请点赞加收藏!

关注我的微信公众号:回复"深度学习资料"领取深度学习相关资料(100本人工智能书籍),实时更新深度学习相关知识!
在这里插入图片描述

标签:box,置信度,--,检测,标定,cell,Pytorch,grid,Bounding
From: https://blog.csdn.net/xp_fangfei/article/details/140202864

相关文章

  • STL复习-序列式容器和容器适配器部分
    STL复习1.常见的容器如何介绍这些容器,分别从常见接口,迭代器类型,底层实现序列式容器stringstring严格来说不属于stl,它是属于C++标准库**底层实现:**string本质是char类型的顺序表,因为不同编译器下的具体实现不同,这里只提供一个我的简答框架classstring{public:......
  • C++部分复习笔记上
    C++语法复习1.C++入门基础缺省参数半缺省参数必须从右往左依次来给出,不能间隔着给缺省参数不能在函数声明和定义中同时出现缺省值必须是常量或者全局变量C语言不支持(编译器不支持)函数重载函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函......
  • [C语言学习]--数据类型和变量
    文章目录前言一、数据类型介绍1.内置类型1.1.整型1.2.浮点型1.3.字符型1.4.布尔类型2.自定义类型 3.数据类型的长度4.sizeof操作符 5.signed和unsigned二、变量1.变量的创建2.变量的分类3.算术操作符(运算符)3.1.+和-3.2. *3.3./ 3.4% 4.赋......
  • 产品经理技能揭秘:需求启发8大技术
    文章目录引言一、头脑风暴1.1基本规则1.2头脑风暴步骤1.3头脑风暴应用:6顶思考帽二、文档分析2.1好处2.2文档分析流程三、引导式研讨会3.1研讨会准备3.2研讨会组织指南3.2.1.控制交叉讨论与私人话题3.2.2.准时开始会议3.2.3.分配角色以促进会议流畅3.2.4.结......
  • 基于SpringBoot+Vue+uniapp的随心淘网管理系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的劳务外包管理系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 强化学习-表格型算法Q学习稳定倒立摆小车
    [[Q学习]]是表格型算法的一种,主要维护了一个Q-table,里面是状态-动作对的价值,分别由一个状态和一个动作来索引。这里以一个经典的道理摆小车问题来说明如何使用[[Q学习]]算法。这里会用到两个类,agent和brain。brain类中来维护[[强化学习的基本概念|强化学习]]算法的......
  • 2024暑假重庆训练记+总结
    Day-1明天就要去重庆了今天上午有一场模拟赛有点难(sohard)改题什么的留给重庆的我吧..今天自然要放松回家之后简简单单地吃了一碗面然后回家和同学们聊天晚上也是和另一个同学聊天但是她的手机坏了所以就不聊了额(挺不巧的)然后很早就睡觉了卷王\(lhy\)还在喝咖......
  • 大三求职:前端实习生
    0、个人简介目前华南理工大学广州学院计算机科学与技术本科大三在读,希望能在暑期找到一份前端的实习工作1、园子经历昵称: 养肥胖虎 园龄: 2年10个月 粉丝: 37  随笔-294  文章-2  评论-18  阅读- 90204截至2024/07/07博客大致分类如下Html飞机大战(21)......
  • 西瓜杯 WP
    RE一个西瓜切两半你一半我一半有点谜语,文本给的是输出和key#Visithttps://www.lddgo.net/string/pyc-compile-decompileformoreinformation#Version:Python3.6flag=''key='一个西瓜切两半你一半我一半'#output='乃乾觅甯剏乳厡侻丨厏扝乌博丿乜规甲剌乶厝侥丿......