YOLO V1学习笔记

为什么要学YOLOV1_哔哩哔哩_bilibili

这个视频讲解的很好,建议在看这个之前看看卷积神经网络,会对卷积后的结果理解更加深刻一点。

一 背景

目标检测分为单阶段和两阶段模型。

之前的目标检测DPM、R-CNN、Fast-RCNN、Faster-RCNN都是双阶段模型,也就是说需要先提取候选框,然后对各个候选框进行分类、甄别。双阶段模型没有全图信息,容易丢失很多信息。识别精度高,但是识别速度始终是技术瓶颈。

YOLO V1开启了单阶段模型的大潮流。

最开始对密集的、小物体的检测不很友好,但是随着技术的发展,现在在密集和小物体的检测方面已经相当友好。

map指标:

machine learning - How to calculate mAP for detection task for the PASCAL VOC Challenge? - Data Science Stack Exchange

二 优点

实时识别,yolo的识别非常快;

端到端;

它输入是一张完整的图片,前后文联系会比较紧密。

三 原理

1 预测阶段网络结构:

 把它当成黑盒模型就可以啦,只要明确输入和输出。

也可以把这整个过程当作对图像全局信息的编码,从人眼可得到的各种信息转变为方便网络学习的各种特征。

1.1 编码:得到boungding box

输入:一张图片(448*448*3) 

输出:7*7*30的信息张量(其中包含所有预测框的坐标、置信度和类别结果),其实就是boundingbox的信息。

接下来的工作就是对7*7*30的信息张量进行解码。(获取其中的分类+回归的信息)

1.2 解码:表示boungding box的7*7*30

1.3 为什么是7*7?

首先要将输入图片划分为S*S个grid cell。

这里的S=7,所以是7*7,一共是49个grid cell。

1.4 为什么是30?

30=20+(2*5)

每个gridcell包含两个bounding box,通过bounding box来拟合图片中的已标注目标。(yolo将这个任务视为一个监督学习任务,图片中的目标(ground truth)已经人工标注好了。)

也就是一共会有49*2=96个bounding box。

每个bounding box的中心点都在它所属于的grid cell里面。

bounding box的信息表示为(x,y,h,w,c)

(x,y)表示其中心点位置

(h,w)表示其高度和宽度

这四个值唯一确定bounding box

(c)表示置信度

已经标注好的数据集中分类目标有20类,所以20指的是每个grid cell分别对20个类别的概率。

5是bounding box的信息,如上所述,每个grid cell有两个bounding box。

所以每一个grid cell需要30=20+(2*5)个数字来描述。

其实7*7*30最后的表示就是上图。

 2 对bounding box 进行后处理

低置信度过滤、非极大值抑制NMS、去掉重复框(IOU),得到以下预测结果。

3 训练阶段的反向传播

yolo的损失函数:

YOLO1是什么_SiMoNe10010的博客-CSDN博客 

当grid cell有物体的时候,计算损失函数第1,2,3,5项,当grid里没有物体的时候计算第4项。

损失函数一共有5项:

1.中心点定位误差   

2.宽高定位误差  

3.confidence误差

4.不负责检测Bbox confidence误差   

5.负责grid cell 检测误差

首先的是中心坐标的损失函数,用了我们最熟悉的均方误差MSE,这个很好理解。(中心点定位误差)

然后是高和宽,没有简单的用MSE,而是用平方根的MSE,这是为什么呢?(宽高定位误差)

第一个原因是更容易优化,但是还有更重要的原因:

看下面的表格:

首先,我们只考虑var1和var2在0和1之间。当var1和var2都很小的时候,也即是w和h都很小,意味着这个物体很小,那么我们应该尽量放大一些损失函数,让模型在识别小物体的时候准确一点。当var1和var2都很大,意味着这个物体也很大,甚至可能已经布满整张图片了,这时我么可以减小一些损失函数,毕竟很大的物体不需要很高的精度。

一句话,使用平方根的MSE而不是MSE其实就是像让模型对小尺度的物体更敏感。或者说,对大的和小的物体同样敏感。

接下来的三项都使用了MSE,其实用交叉熵可能会更好

其中第4项是用来判断一个bounding box中究竟有没有物体的。

 

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

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

相关文章

ElasticSearch集群架构实战及其原理剖析

ES集群架构 为什么要使用ES集群架构 分布式系统的可用性与扩展性: 高可用性 服务可用性:允许有节点停止服务;数据可用性:部分节点丢失,不会丢失数据; 可扩展性 请求量提升/数据的不断增长(将数据分布…

用android studio调试react native中的原生代码(windows+android)

要用Android Studio调试React Native原生代码, 1. 需要先在终端中运行react-native start命令启动React Native服务器。 2. 然后,在Android Studio中打开你的React Native项目(\android\build.gradle),连接你的设备或…

[极客大挑战 2019]LoveSQL 1

题目环境:判断注入类型是否为数字型注入 admin 1 回显结果 否 是否为字符型注入 admin 1 回显结果 是 判断注入手法类型 使用堆叠注入 采用密码参数进行注入 爆数据库1; show database();#回显结果 这里猜测注入语句某字段被过滤,或者是’;被过滤导致不能…

linux jdk配置

1.下载jdk ,以jdk1.8为例子 Java Downloads | Oracle JDK 8 Update Release Notes (oracle.com) 2.配置环境变量 1.下载相关jdk版本,执行以下命令安装jdk tar -zxvf jdk-8u144-linux-x64.tar.gz 2.编辑命令 vi /etc/profile 3.在最后加入下面配置 e…

硬件测试(二):波形质量

一、信号质量测试 信号在传输的过程中,一般不是标准的矩形波信号,信号质量测试即通过示波器测试单板硬件的数字信号和模拟信号的各项指标,包括电源、时钟、复位、CPU小系统、外部接口(USB、网口、串口)、逻辑芯片(CPLD…

【C++】异常【完整版】

目录 1.C语言传统的处理错误的方式 2. C异常概念 3. 异常的使用 3.1 异常的抛出和捕获 3.2 异常的重新抛出 3.3异常安全 3.4 异常规范 4.自定义异常体系 5.C标准库的异常体系 6.异常的优缺点 1.C语言传统的处理错误的方式 传统的错误处理机制: 1. 终止程序…

“1-5-15”原则:中国联通数字化监控平台可观测稳定性保障实践

一分钟精华速览 “只知道系统有问题,但是找不到问题到底出在哪里”,这几乎是大家都面临过、或正在面临的问题。用户在投诉,但是我的指标都是正常的,到底是哪一环出问题了? 本文详细介绍了中国联通在智能运维领域的应用…

Asterisk Ubuntu 安装

更新环境 sudo apt update sudo apt install wget build-essential git autoconf subversion pkg-config libtool sudo contrib/scripts/get_mp3_source.sh A addons/mp3 A addons/mp3/common.c A addons/mp3/huffman.h A addons/mp3/tabinit.c A addons/mp3/Ma…

3D医学三维技术影像PACS系统源码

一、系统概述 3D医学影像PACS系统,它集影像存储服务器、影像诊断工作站及RIS报告系统于一身,主要有图像处理模块、影像数据管理模块、RIS报告模块、光盘存档模块、DICOM通讯模块、胶片打印输出等模块组成, 具有完善的影像数据库管理功能,强大…

Leetcode76最小覆盖子串

思路:滑动窗口思想 1. 滑动窗口是什么:用一个滑动窗口为覆盖目标子串的字符串 2.怎么移动窗口:当不满足覆盖时右指针移动扩大范围,当覆盖了就移动左指针缩减范围直到再次不覆盖 3. 怎么判断是否覆盖:这里使用两个哈…

接口自动化测试难点:数据库验证解决方案 百分之90人不知道

接口自动化中的数据库验证:确保数据的一致性和准确性 接口自动化测试是现代软件开发中不可或缺的一环,而数据库验证则是确保接口返回数据与数据库中的数据一致性的重要步骤。本文将介绍接口自动化中的数据库验证的原理、步骤以及示例代码,帮…

Flutter 06 动画

一、动画基本原理以及Flutter动画简介 1、动画原理: 在任何系统的Ul框架中,动画实现的原理都是相同的,即:在一段时间内,快速地多次改变Ul外观;由于人眼会产生视觉暂留,所以最终看到的就是一个…

CCS3列表和超链接样式

在默认状态下,超链接文本显示为蓝色、下画线效果,当鼠标指针移过超链接时显示为手形,访问过的超链接文本显示为紫色;而列表项目默认会缩进显示,并在左侧显示项目符号。在网页设计中,一般可以根据需要重新定…

ESP-07S烧写固件记录

一,固件版本。 下面是官方默认AT指令版本,ESP-07S 的flash大小是4MB。 AT固件汇总 | 安信可科技 (ai-thinker.com) 二,烧录工具。 开发工具清单 | 安信可科技 (ai-thinker.com) 三,下载工具及连线。 使用USB转串口工具。 四&am…

Go的Defer简介

什么是延期? Defer 语句用于在存在 defer 语句的周围函数返回之前执行函数调用。该定义可能看起来很复杂,但通过示例就很容易理解。 例子 package mainimport ( "fmt" )func finished() { fmt.Println("Finished finding largest&qu…

基于单片机设计的太阳能跟踪器

一、前言 随着对可再生能源的需求不断增长,太阳能作为一种清洁、可持续的能源形式,受到越来越多的关注和应用。太阳能光板通常固定在一个固定的角度上,这限制了它们对太阳光的接收效率。为了充分利用太阳能资源,提高太阳能光板的…

Apache Pulsar 在腾讯云上的最佳实践

导语 由 StreamNative 主办的 Pulsar Meetup Beijing 2023 在2023年10月14日完美落幕,本次活动大咖云集,来自腾讯、滴滴、华为、智联招聘、RisingWave 和 StreamNative 的行业专家们一起,深入探讨 Pulsar 在生产环境中的最佳应用实践&#x…

NoSQL数据库使用场景以及架构介绍

文章目录 一. 什么是NoSQL?二. NoSQL分类三. NoSQL与关系数据库有什么区别四. NoSQL主要优势和缺点五. NoSQL体系框架 其它相关推荐: 系统架构之微服务架构 系统架构设计之微内核架构 鸿蒙操作系统架构 架构设计之大数据架构(Lambda架构、Kap…

轧钢厂安全生产方案:AI视频识别安全风险智能监管平台的设计

一、背景与需求 轧钢厂一般都使用打包机对线材进行打包作业,由于生产需要,人员需频繁进入打包机内作业,如:加护垫、整包、打包机检修、调试等作业。在轧钢厂生产过程中,每个班次生产线材超过300件,人员在一…

docker打包container成image,然后将image上传到docker hub

第一步&#xff1a;停止正在运行的容器 docker stop <container_name> eg: docker stop xuanjie_mlir 第二步&#xff1a;将对应的container打包成image docker commit <container_id> <镜像名&#xff1a;版本> eg&#xff1a;docker commit 005672e6d97a…