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

news2025/2/24 6:08:34

文章目录

    • 前言
    • 核心思想
    • 网络结构
    • 算法原理
        • 算法流程
        • 关于标定框
          • 框的中心点 (x,y)的解释
          • 框的宽高(w,h)的解释
          • 置信度 c的解释:
        • class类别概率详解
    • 损失函数
        • 坐标损失
        • 置信度损失
        • 分类损失
    • 优缺点

前言

论文地址: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本人工智能书籍),实时更新深度学习相关知识!
在这里插入图片描述

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

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

相关文章

lnmp php7 安装ssh2扩展

安装ssh2扩展前必须安装libssh2包 下载地址: wget http://www.libssh2.org/download/libssh2-1.11.0.tar.gzwget http://pecl.php.net/get/ssh2-1.4.tgz (这里要换成最新的版本) 先安装 libssh2 再安装 SSH2: tar -zxvf libssh2-1.11.0.tar.gzcd libss…

淘宝扭蛋机小程序:打造新的扭蛋体验

扭蛋机行业近年来发展非常迅速,呈现出了明显的增长势头,深受年轻消费者的青睐。当下在消费市场中,年轻人占据了很大的份额,这也推动了扭蛋机市场的发展。如今,扭蛋机也正在向多个方向发展,不再局限于线下扭…

特征缩放介绍

目录 一、引入特征缩放:二、特征缩放介绍:三、如何实现特征缩放:1.分别除特征中最大值缩放到0—1:2.均值归一化缩放到-1—1:3.Z-Score归一化: 四、特征缩放合理范围: 一、引入特征缩放&#xff…

JUC并发编程基础(包含线程概念,状态等具体实现)

一.JUC并发编程基础 1. 并行与并发 1.1 并发: 是在同一实体上的多个事件是在一台处理器上"同时处理多个任务"同一时刻,其实是只有一个事件在发生. 即多个线程抢占同一个资源. 1.2 并行 是在不同实体上的多个事件是在多台处理器上同时处理多个任务同一时刻,大家…

智慧交通运行监测与应急指挥中心方案

建设目标 建立感知层数据的实时采集以及数据处理,实现监测预警自动化和智能化;推动交通运输数据资源开放共享,打破数据资源壁垒,与城市各部门数据建立共享交换机制,实现应急指挥的协同化;充分运用大数据、互…

适合家居建材企业的CRM系统盘点(2024版)

当前,CRM市场上,国际巨头的市场优势正在逐渐减弱,国内CRM企业奋起追赶,呈现出强劲的崛起势头。因此,对于家居建材企业来讲,在进行CRM选型时,如何选择一款合适的系统是关乎企业高效发展的重要课题…

(6)qml 画布元素(Canvas Element)

基本思想 画布元素(canvas element)的基本思想是使⽤⼀个2D对象来渲染路径。这个2D对象包括了必要的绘图函数,画布元素(canvas element)充当绘制画布。2D对象⽀持画笔,填充,渐变,⽂…

小型气象站在现代农业中的应用与前景

随着科技的飞速发展,智慧农业已成为现代农业发展的重要趋势。在这一背景下,小型气象站作为智慧农业的重要组成部分,正逐渐展现出其独特的价值和广阔的应用前景。本文将从小型气象站的定义、功能、应用案例以及未来展望等方面,探讨…

文化创新与社交媒体:探索Facebook的足迹

在过去的十多年里,Facebook从一个简单的校园社交网络发展成为全球最大的社交媒体平台之一。它不仅改变了人们的沟通方式,更在许多方面推动了文化的创新和变革。本文将深入探索Facebook如何通过其平台的演进和功能创新,成为文化创新的重要推动…

合合信息大模型“加速器”亮相2024世界人工智能大会,助力大模型学好“专业课”

7月4日至7日,2024世界人工智能大会在上海拉开帷幕。现阶段,“百模大战”现象背后的中国大模型发展前景与堵点仍然是各界关注的焦点。如何帮助大模型在信息的海洋中快速找准航向,在数据的荒漠中找到高质量的“水源”?合合信息在本次…

Netty学习(NIO基础)

NIO基础 三大组件 Channel and Buffer 常用的只有ByteBuffer Selector(选择器) 结合服务器的设计演化来理解Selector 多线程版设计 最早在nio设计出现前服务端程序的设计是多线程版设计,即一个客户端对应一个socket连接,一个连接用一个线程处理,每…

雷电模拟器报错remount of the / superblock failed: Permission denied remount failed

报错截图 解决方法 打开设置 设置配置system.vmdk可写入 解决

前端从业者的历史难题Vue和React的抉择:难度不亚于丈母娘和媳妇

**前端从业者的历史难题:Vue和React的抉择——难度不亚于丈母娘和媳妇** Vue和React这两个框架无疑是当下最为流行的两个选择。它们各自拥有独特的优势和特点,吸引了大量的前端从业者。然而,对于许多从业者来说,如何在Vue和React…

基于大数据+Hadoop的豆瓣电子图书推荐系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作✌ 主要内容:SpringBoot、Vue、SSM、HLM…

Automotive之CarService和Vehicle

目录 前言一、CarService1.1 CarService 组成1.2 编译产物1.3 CarService的使用1.3.1 第一步:判断是否支持车载功能1.3.2 创建Car,获取 Manager 1.4 CarService实现原理1.4.1 启动CarServiceHelperService服务1.4.2 绑定 CarService 服务1.4.3 CarServic…

swagger的接口文档导入到yapi上

一、访问swagger接口 swagger集成到项目后,通过http:\\ip:port/swagger-ui.html 访问。 说明:这里的路径是基于swagger2。如果用swagger3,需要用swagger3的路径进行访问。 访问如图: 这就是swagger接口首页。如果想导入到yapi上…

PD虚拟机怎么联网?PD虚拟机安装Win11无法上网 pd虚拟机连不上网怎么解决 mac安装windows虚拟机教程

PD虚拟机既可以联网使用,也可以单机使用。如需将PD虚拟机联网,可以共享Mac原生系统的网络,其使用体验与真实系统无异。本文会详细讲解PD虚拟机如何联网,并会进一步解决PD虚拟机安装Win10无法上网的问题。 如果有网络相关问题的小伙…

SQL 与 NoSQL 数据库:一场关于灵活性与结构的对话

文章目录 引言SQL 数据库:传统之光定义特征优势缺点 NoSQL 数据库:新时代的弹性定义特征优势缺点 何时选择 NoSQL?场景1:海量数据与高并发场景2:灵活性需求场景3:实时数据分析场景4:分布式系统 …

无人机水运应用场景

航行运输 通航管理(海事通航管理处) 配员核查流程 海事员通过VHF(甚高频)系统与船长沟通核查时间。 无人机根据AIS(船舶自动识别系统)报告的船舶位置,利用打点定位 功能飞抵船舶上方。 使用…

TikTok马来西亚直播网络怎么配置?

TikTok是一款全球流行的社交媒体应用,在东南亚地区拥有大量用户。在马来西亚这个多元化的国家,配置高效稳定的直播网络对TikTok的运营至关重要。 配置马来西亚直播网络的必要性 广泛的地理覆盖:马来西亚包括大片陆地和众多岛屿,网…