CV-笔记-重读YOLO目标检测系列 v1

2024-08-22 03:38

本文主要是介绍CV-笔记-重读YOLO目标检测系列 v1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 如何检测
    • 定义label
    • 训练的时候
    • 损失函数
    • 缺点
    • 引用

  • 将对象检测定义为一个回归问题,回归到空间分离的边界框和相关的类概率。
  • 与最先进的检测系统相比,YOLO会产生更多的定位错误,但不太可能预测背景上的误报less likely to predict false positives on background(假阳少)
  • 都看做一个回归问题,所以不需要复杂的pipeline。
  • titan x gpu实现每秒150帧。
  • yolo是看整张图片进行预测的,相对来说区域建议网络第二阶段是是看roi。
  • yolo的背景的假阳少,因为他可以看到更大的信息(现在Faster R-CNN的第一个RPN模块其实也是看整个上下文的,这里对比的只是Fast R-CNN)。原文:Fast R-CNN, a top detection method, mistakes back-ground patches in an image for objects because it can’t see the larger context. YOLO makes less than half the number of background errors compared to Fast R-CNN.

如何检测

  1. 将图片分成SxS个格子;
  2. 如果目标落在哪个格子上,哪个格子就负责整个目标。简单的说就是做数据的时候,这个格子的class label是1,在yolo里面是使用置信度来计算的。

有些博客不懂乱说,例如知乎上的一篇文章,上来就说最后一层的featuremap对应的就是前面分好的网格里面的格子的特征,可见对感受野的概念不是很理解,其实这里的想法和Faster R-CNN里面的概念比较像,anchor其实也是在原图上滑动的呀,只是说这里没有anchor,而是这里的featuremap上的像素对应的是一个格子,也不能说是格子,因为格子的作用和anchor也是非常类似的,作用都是来进行分配任务,教网络怎么预测,网络学的是什么,那么预测的也是什么了。只是说这里是根据中心点是不是落在网络里面来选择正样本,而RPN里面是根据和anchor的IOU的大小来规定哪个是正样本哪个是负样本。

只是这里说的比较明确,说是把原图分割成最后一层feature map大小的个数,feature map是多少个像素,那么就分成几个格子。

只是说Faster R-CNN里面好像没有明确提到anchor的中心点在原图的哪个地方。其实这也是我们规定哪个点就是哪个点,但是按照感受野的概念,感受野中心的区域的权重往往会高一点,所以anchor的中心点可以设置成格子的中心。所以anchor的中心点在原图的坐标经过换算一下也是很简单的。应该就是(x*stride + stride/2, y*stride + stride/2),这里的x和y表示在feature map上的坐标,计算出来的表示原图上的坐标,这也是我自己推测的(代码还没看过)。

定义label

每个格子预测坐标(x,y,w,h)+ 置信度(是否有目标,有、没有)+ 类别(class)
* 置信度=Pr(Object)+ IOU,这是论文里面说的,iou论文里面是说预测的和真实的。但是没有预测哪里来的iou,所以做数据的是置信度就是有目标是1,没有目标是0,不用多想这里的置信度就是有没有目标,就是0和1。
* 坐标:宽和高是相对于图像大小的,中心点是相对于格子的的。
* 类别:是哪个类别

置信度和坐标是绑定在一起的,类别是独立的。例如一个格子检测两个目标,那么就有两组坐标和对应的置信度,但是类别可以是有20个。但是这样有个问题,就是如果两个框都是有目标,那么怎么知道哪个框是哪个类别的目标呢? 是不是这里的意思就是一个格子就只能预测一个类别,但是可以有两个包围框预测,最后应该是看哪个包围框更准(置信度高,即是目标的概率高)就选哪个?确实和我想的一样,两个包围框都是预测一个类别的(见引用)。如图所示:

在这里插入图片描述
Fast R-CNN最后只是有一个类别和坐标,但是他的类别里面是包含背景的,yolo的类别里面是不包含背景。

下面这幅图终于看懂了,Class probability map确实只是class,但这里只是表示这个格子预测的目标是哪个类(就是目标中心对于的框的目标),下面这个图片的Class probability map画的应该是预测出来的,那么做数据的时候是怎么做的。。。如果没有目标那么类别是什么?即使不计算loss那也总要填一个值吧。这里好像又没有背景这个类别。
这个应该是预测时候的示意图。

在这里插入图片描述

训练的时候

  • 训练的时候只预测一个目标,选择iou高的。原文:YOLO predicts multiple bounding boxes per grid cell. At training time we only want one bounding box predictor to be responsible for each object. We assign one predictor to be “responsible” for predicting an object based on which prediction has the highest current IOU with the ground truth.

损失函数

通常没有目标的区域比较多,而有目标的区域少,所以坐标的回归在loss里面占的比重很少,所以为了减少这种不平衡,将非目标的置信度回归的权重减少

在这里插入图片描述

在这里插入图片描述
这个长的像1的系数表示有目标的适合是1,没有的适合是0。那头上写的是noobj的时候就反一下。这里大写的C表示confidence置信度。p那个表示类别。计算不是目标的置信度的适合权重设置为0.5 。

根号的作用:
在这里插入图片描述

缺点

  • 不能同时检测两个中心点在同一个网格的物体。
  • 对于不常见的长宽比的物体效果较差
  • 对于多尺度效果较差
  • 召回率低,定位差

引用

  • 图解YOLO - 晓雷的文章 - 知乎 https://zhuanlan.zhihu.com/p/24916786

这篇关于CV-笔记-重读YOLO目标检测系列 v1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095134

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0