YOLOv5基础知识入门(3)— 目标检测相关知识点

前言Hello大家好,我是小哥谈。YOLO算法发展历程和YOLOv5核心基础知识学习完成之后,接下来我们就需要学习目标检测相关知识了。为了让大家后面可以顺利地用YOLOv5进行目标检测实战,本节课就带领大家学习一下目标检测的基础知识点,希望大家学习之后有所收获!🌈

 前期回顾:

            YOLOv5基础知识入门(1)— YOLO算法的发展历程

            YOLOv5基础知识入门(2)— YOLOv5核心基础知识讲解 

            目录

 🚀1.目标检测

 🚀2.目标检测数据集

2.1 PASCAL VOC数据集

2.2 MS COCO数据集

🚀3.目标检测性能指标

3.1 检测精度指标

3.2 检测速度指标

 🚀1.目标检测

目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小,是机器视觉领域的核心问题之一。由于各类物体有不同的外观、形状、姿态,再加上成像时的光照、遮挡等因素的干扰,目标检测一直是机器视觉领域最具有挑战性的问题。🍃

计算机视觉中关于图像识别有四大类任务

  • 分类(Classification):解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。
  • 定位(Location):解决“在哪里?”的问题,即定位出这个目标的的位置。
  • 检测(Detection):解决“是什么?在哪里?”的问题,即定位出这个目标的的位置并且知道目标物体是什么。
  • 分割(Segmentation):分为实例的分割(Instance-level)场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。

说明:

百科定义:♨️♨️♨️

目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割。它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。尤其是在复杂场景中,需要对多个目标进行实时处理时,目标自动提取和识别就显得特别重要。随着计算机技术的发展和计算机视觉原理的广泛应用,利用计算机图像处理技术对目标进行实时跟踪研究越来越热门,对目标进行动态实时跟踪定位在智能化交通系统、智能监控系统、军事目标检测及医学导航手术中手术器械定位等方面具有广泛的应用价值。    

关于目标检测,具体如下图所示:

用YOLOv5进行目标检测,我们需要解决所检测目标的定位识别问题。💗

定位(Localization):解决的是目标“在哪里?”的问题,即需要获知目标位置(最小外接矩形,Bounding  box)。

识别(Recognition):解决的是目标“是什么?”的问题,即需要获知目标的类别标签(Category label)和置信度得分(Confidence score)。

说明:

置信度:♨️♨️♨️

置信度是介于0-1(或100%)之间的数字,它描述模型认为此预测边界框包含某类别目标的概率。通俗来说,即有多大概率确定所检测的物体是某物体。

同时,除了目标检测,还有分类、定位、实例分割等任务。

定位是找到检测图像中带有一个给定标签的单个目标 。

检测是找到图像中带有给定标签的所有目标


 🚀2.目标检测数据集

目标检测需要使用到数据集,本节课就给大家介绍一下目标检测领域常用的PASCAL VOCMS COCO数据集🍄

2.1 PASCAL VOC数据集

PASCAL VOC挑战赛在2005年至2012年间展开。PASCAL VOC挑战赛 (The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛,PASCAL全称:Pattern Analysis, Statical Modeling and Computational Learning,是一个由欧盟资助的网络组织。很多优秀的计算机视觉模型比如分类、定位、检测、分割、动作识别等模型都是基于PASCAL VOC挑战赛及其数据集上推出的,尤其是一些目标检测模型(比如大名鼎鼎的R-CNN系列,以及后面的YOLO、SSD等)。📚

PASCAL VOC从2005年开始举办挑战赛,每年的内容都有所不同,从最开始的分类,到后面逐渐增加检测、分割、人体布局、动作识别(Object Classification 、Object Detection、Object Segmentation、Human Layout、Action Classification)等内容,数据集的容量以及种类也在不断的增加和改善。该项挑战赛催生出了一大批优秀的计算机视觉模型(尤其是以深度学习技术为主的)。🎏

PASCAL VOC 2007: 9963张图像,24640个标注。

PASCAL VOC 2012: 11530 张图像,27450个标注。

该数据集有20个分类

  • Person: person
  • Animal: bird、cat、cow、dog、horse、sheep
  • Vehicle: aeroplane、bicycle、boat、bus、car、motorbike、train
  • Indoor: bottle、chair、dining table、potted plant、sofa、tv/monitor

说明:

链接: The PASCAL Visual Object Classes Challenge 2012 (VOC2012)

2.2 MS COCO数据集

MS COCO的全称是Microsoft Common Objects in Context,起源于是微软于 2014年出资标注的Microsoft COCO数据集,与ImageNet 竞赛一样,被视为是计算机视觉领域最受关注和最权威的比赛之一。在ImageNet竞赛停办后,COCO竞赛就成为是当前目标识别、检测等领域的一个最权威、最重要的标杆,也是目前该领域在国际上唯一能汇集Google、微软、 Facebook以及国内外众多顶尖院校和优秀创新企业共同参与的大赛。🎏

COCO(Common Objects in Context)数据集包含20万个图像:11.5万多张训练集图像, 5千张验证集图像,2万多张测试集图像。80个类别中有超过50万个目标标注,平均每个图像的目标数为7.2。🌷

说明:

链接:COCO - Common Objects in Context (cocodataset.org)


🚀3.目标检测性能指标

目标检测的性能指标包括检测精度(检测效果是否足够好)和检测速度(检测速度是否足够快)。🍉

检测精度指标:

  • Precision, Recall, F1 score
  • IoU (Intersection over Union)
  • P-R curve (Precison-Recall curve)
  • AP (Average Precision)
  • mAP (mean Average Precision)

检测速度指标:

  • 前传耗时
  • 每秒帧数 FPS (Frames Per Second)
  • 浮点运算量(FLOPS)

3.1 检测精度指标

(1)混淆矩阵(confusion matrix)

混淆矩阵(confusion matrix),是对分类问题预测结果的总结。使用计数值汇总正确和不正确预测的数量,并按每个类进行细分,显示了分类模型进行预测时会对哪一部分产生混淆。通过这个矩阵可以方便地看出机器是否将两个不同的类混淆了(即把一个类错认成了另一个)。🐳

混淆矩阵不仅可以让我们直观的了解分类模型所犯的错误,更重要的是可以了解哪些错误类型正在发生,正是这种对结果的分解克服了仅使用分类准确率带来的局限性(总体到细分)。❤️

总结:

精度Precision(查准率)是评估预测的准不准看预测列) 

召回率Recall(查全率)是评估找的全不全看实际行

(2)IoU (Intersection over Union )

IoU(Intersection over Union,IoU),即两个边界框相交面积相并面积的比值,边界框的准确度可以用IoU进行表示;一般约定,在检测中,IOU>0.5,则认为检测正确,IOU<0.5,则认为检测错误。一般阈值设为0.5(需要根据实际情况进行设定)🌱

说明:

IoU与混淆矩阵的关系:♨️♨️♨️

如果阈值设为0.5,那么

如果IOU ≥ 0.5,则认为检测正确,归类为TP

如果IOU<0.5,则认为检测错误,归类为FP

当图像中存在一个真实目标,而未能检测到目标时,将其归类为FN

当没有检测某图像的物体时(即没有对该图像进行检测,该图像其实没有用处),将其归类为TN

(3)P-R curve 

P-R curve (Precison-Recall curve)曲线体现的是精确率召回率的关系。在准确率很高的前提下,尽可能的检测到全部的类别。因此希望我们的曲线接近(1,1),即希望曲线的面积尽可能接近1。🌟

(4)AP和mAP

AP (Average Precision),衡量的是学习出来的模型在每个类别上的好坏。

mAP (mean Average Precision),衡量的是学习出来的模型在所有类别上的好坏。mAP就是取所有类别上AP的平均值。

用一个简单的例子来演示平均精度(AP)的计算。 假设数据集中总共有5个苹果。 我们收集模型为苹果作的所有预测(以10次预测举例),并根据预测的置信水平(从最高到最低)对其进行排名。 第二列表示预测是否正确。 如果它与 ground truth匹配并且IoU≥0.5,则是正确的。🌺

由下图可以看到,Recall随着包含更多预测而增加,但Precision会上下波动。

3.2 检测速度指标

前传耗时(ms):从输入一张图像到输出最终结果所消耗的时间,包括前处理耗时(如图像归一化)、网络前传耗时、后处理耗时(如非极大值抑制)。🌿

说明:

关于非极大值抑制,请参考我的另外一篇文章:♨️♨️♨️

目标检测中NMS(非极大值抑制)原理解析

每秒帧数 FPS(Frames Per Second):每秒钟能处理的图像数量 。

FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。通常,要避免动作不流畅的最低是30。🍀

浮点运算量(FLOPS):处理一张图像所需要的浮点运算数量,跟具体软硬件没有关系,可以公平地比较不同算法之间的检测速度。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL入门学习教程(一)

mysql简介 1、什么是数据库 ? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅…

【数据库系统】-- 【1】DBMS概述

1.DBMS概述 01数据库系统概述02数据库技术发展概述03关系数据库概述04数据库基准测试 01数据库系统概述 几个基本概念 为什么使用数据库系统 数据库发展的辉煌历程 02数据库技术发展概述 数据模型 应用领域 ● OLTP ● OLAP ● HTAP ● GIS OLTP与OLAP 与其他技术相…

代码随想录算法训练营(二叉树总结篇)

一.二叉树的种类 1.满二叉树:就是说每一个非叶子节点的节点都有两个子节点。 2.完全二叉树:此二叉树只有最后一层可能没填满,并且存在的叶子节点都集中在左侧!!! (满二叉树也是完全二叉树&…

【UE4 RTS】09-Day and Night

前言 本篇博客实现的效果是太阳和天空会随着游戏时间的变化而变化。 效果 步骤 1. 设置“LightSource”为可移动的 2. 新建一个文件夹,命名为“Lighting” 3. 打开游戏状态“RTS_GameState_BP”,添加一个函数命名为“GetGameSpeed” 添加一个浮点类型…

bilibili倍数脚本,油猴脚本

一. 内容简介 bilibili倍数脚本,油猴脚本 二. 软件环境 2.1 Tampermonkey 三.主要流程 3.1 创建javascript脚本 点击添加新脚本 就是在 (function() {use strict;// 在这编写自己的脚本 })();倍数脚本,含解析 // UserScript // name bi…

TikTok带货有什么优势?品牌营销的新趋势

在当今数字化时代,品牌营销正日益倾向于社交媒体平台,而TikTok作为一款全球热门的短视频社交平台,正在成为品牌营销的新趋势。TikTok带货,也就是品牌利用TikTok平台进行商品推广和销售,已成为一种创新的、高效的营销方…

GPT-4 如何为我编写测试

ChatGPT — 每个人都在谈论它,每个人都有自己的观点,玩起来很有趣,但我们不是在这里玩— 我想展示一些实际用途,可以帮助您节省时间并提高效率。 我在本文中使用GPT-4 动机 我们以前都见过这样的情况——代码覆盖率不断下降的项目——部署起来越来越可怕,而且像朝鲜一样…

【深入理解ES6】块级作用域绑定

1. var声明及变量提升机制 提升(Hoisting)机制:通过关键字var声明的变量,都会被当成在当前作用域顶部生命的变量。 function getValue(condition){if(condition){var value "blue";console.log(value);}else{// 此处…

Jetpack之MutableLiveData和LiveData源码分析

先看一下MutableLiveData的源码,它是继承于LiveData,主要是重写了setValue和postValue方法。 上图我们知道这两个方法都是调用了livedata的各自对应的方法,我们点进去看看livedata的这两个方法是protect 的 允许子类和自己调用,而MutableLiv…

Qt在mac安装

先在app store下载好Xcode 打开Xcode 随便建个文件给它取个名字找个地方放提醒没建立git link,不用理他打开终端, 输入/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

SpringMVC学习笔记

springMVC简单入门 快速搭建 pom.xml依赖 <!-- 导入坐标 springmvc 与 servlet --><dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version>…

回归预测 | MATLAB实现GRNN广义回归神经网络多输入多输出预测

回归预测 | MATLAB实现GRNN广义回归神经网络多输入多输出预测 目录 回归预测 | MATLAB实现GRNN广义回归神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现GRNN广义回归神经网络多输入多输出预测&#xff0c;输入10个特征&#x…

re学习(32)【绿城杯2021】babyvxworks(浅谈花指令)

链接&#xff1a;https://pan.baidu.com/s/1msA5EY_7hoYGBEema7nWwA 提取码&#xff1a;b9xf wp:首先找不到main函数&#xff0c;然后寻找特殊字符串&#xff0c; 交叉引用 反汇编 主函数在sub_3D9当中&#xff0c;但是IDA分析错了 分析错误后&#xff0c;删除函数 创建函数 操…

从零构建深度学习推理框架-8 卷积算子实现

其实这一次课还蛮好理解的&#xff1a; 首先将kernel展平&#xff1a; for (uint32_t g 0; g < groups; g) {std::vector<arma::fmat> kernel_matrix_arr(kernel_count_group);arma::fmat kernel_matrix_c(1, row_len * input_c_group);for (uint32_t k 0; k < k…

UI美工设计岗位的基本职责概述(合集)

UI美工设计岗位的基本职责概述1 1、有良好的美术功底、设计新颖&#xff0c;整体配色及设计创意理念&#xff0c;能够独立完成整个网站页面设计及制作; 2、熟练运用DIV CSS&#xff0c;HTML 设计制作网页 ; 3、熟练运用Photoshop,Dreamweaver,Coreldraw(或Illustrator),Fla…

LabVIEW控制通用工作台

LabVIEW控制通用工作台 用于教育目的的计算机化实验室显着增长&#xff0c;特别是用于运动控制的实验室。它们代表了各种工业应用中不断扩大的领域&#xff0c;并成为以安全的方式使用通常昂贵或独特的实验室设备进行实时实验的宝贵工具。NI LabVIEW等软件应用程序的开发和不断…

【数据结构OJ题】反转链表

原题链接&#xff1a;https://leetcode.cn/problems/reverse-linked-list/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 方法一&#xff1a;三指针翻转法 使用三个结构体指针n1&#xff0c;n2&#xff0c;n3&#xff0c;原地修改结点…

开发过程中遇到的问题以及解决方法

巩固基础&#xff0c;砥砺前行 。 只有不断重复&#xff0c;才能做到超越自己。 能坚持把简单的事情做到极致&#xff0c;也是不容易的。 开发过程中遇到的问题以及解决方法 简单易用的git命令 git命令&#xff1a; 查看有几个分支&#xff1a;git branch -a 切换分支&#…

【分布式存储】数据存储和检索~倒排索引pageRank

为什么需要倒排索引 通过前两篇的文章介绍&#xff0c;B树主要针对的是读多写少的场景&#xff0c;而LSM针对的是写多读少的场景&#xff0c;其实在日常开发中&#xff0c;我们会将数据存储到搜索引擎中&#xff0c;然后进行数据的搜索&#xff0c;这种场景其实针对的是快速根…

【Linux】邮件服务器搭建 postfix+dovecot+mysql (终极版 超详细 亲测多遍无问题)

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录 前言基础原理准备工作一 、安装关于权…