经典目标检测网络Yolo——原理部分

news/2024/7/9 23:36:00 标签: 目标检测, 人工智能, 计算机视觉

目标检测问题

分为两个子问题:

  1. 找到图片中哪些位置、哪些区域含有目标对象
  2. 识别这些区域中的目标对象是什么

基于CNN的目标检测算法能够很好的解决第二个问题,在一张图片仅含一个对象,且该对象占据了整张图片绝大部分面积时,基于CNN的对象识别算法具有很高的准确率。
一种定位目标对象的朴素思路是首先对图片进行地毯式搜索,遍历图片中所有可能出现目标对象的区域,并对每个区域进行目标对象的检测操作;然后从所有区域的目标检测结果中挑选一个概率最大的作为最终结果并输出。显然,这种方法效率很低。
为了提高解决目标检测问题的效率,R-CNN(Region-CNN)开创性地提出了基于候选区(Region Proposals)进行目标检测的选择性搜索(Selective Search)方法——先从图片中搜索出约1000至2000个可能存在目标对象的候选区,然后对每个候选区进行目标对象识别操作。这种方法大幅提升了目标检测的效率。
不过R-CNN的效率依然不高——处理一张图片大概需要49秒。开发者针对神经网络结构和候选区算法进行不断改进,推出了速度更快的Fast R-CNN和Faster R-CNN。Faster R-CNN可以达到约0.2秒/张图片的速度。

但是!!!因为该类检测算法始终需要分为两个阶段,先选出候选去,再识别候选区中的对象。这在根本上限制了R-CNN算法性能的进一步提升。

YOLO算法简介

YOLO(You Only Look Once)是一种基于深度神经网络的目标对象识别和定位算法,其特点是运行速度快、实时性高。在本实验中,我们将使用Tiny YOLOv2版本的YOLO算法。
YOLO算法创造性地将R-CNN目标检测中的选择候选区和识别候选区对象两个阶段合二为一,这也是YOLO名字的来由(只需看一眼就知道图片的哪些位置有什么对象)。
在检测目标时,YOLO首先将图片划分为7×7=49的网格,并允许在每个网格中预测出2个可能包含目标对象的候选边框(Bounding Box)。可将YOLO算法产生的98个Bounding Box理解成98个候选区,它们粗糙地覆盖了整张输入图片。
不管是R-CNN还是YOLO,都需要对选出的候选区进行目标对象的识别操作。识别出某个候选区中的对象后,往往需要对该候选区进行微调,使之包含整个对象,这个微调的过程称为候选区的边框回归。边框回归行之有效的原理是对象识别结果的分类信息中已经包含了对象的位置信息。比如当我们看到猫的脸和身体,我们就能推测出猫耳朵和屁股所在的位置。

2.1 YOLOv1算法和网络模型

R-CNN系列算法的基本思路是候选+识别/分类,因此被称作是两级级联(Two-Stage Cascade)的算法。而YOLOv1算法则更为直接——直接在输出层对Bounding Box的位置和其中的对象所属的类别进行回归,从而将目标检测问题转换为回归问题(Regression)。
YOLOv1的主要流程包括图片分割、CNN和非极大值抑制。
在这里插入图片描述

Step 1: 图片分割

讲输入图片的大小缩放到448x448,并进行分割,得到一个7x7的网格。每个网格允许预测出两个可能包含目标对象的Bounding Box,因此共有98个Bounding Box。
每个Bounding Box可以定义为5元组 B B o x = ( X c , Y c , W , H . C o n f ) BBox=(X_c,Y_c,W,H.Conf) BBox=


http://www.niftyadmin.cn/n/5405087.html

相关文章

学习Android的第二十二天

目录 Android ContextMenu 上下文菜单 ContextMenu 范例 参考文档 Android SubMenu 子菜单 范例 参考文档 Android PopupMenu 弹出菜单 范例 参考文档 Android ContextMenu 上下文菜单 在Android开发中,ContextMenu(上下文菜单)为…

HADOOP HDFS详解

目录 第一章 概述 1.1大数据的特征(4V) 1.2 大数据的应用场景 1.3大数据的发展前景 1.4企业大数据的一般处理流程 1.4.1数据源 1.4.2数据采集或者同步 1.4.3数据存储 1.4.4 数据清洗 1.4.5 数据分析 1.4.6数据展示 第二章 hadoop介绍 2.1.hadoop 目标 2.2 hadoop的…

Leetcode 3070. Count Submatrices with Top-Left Element and Sum Less Than k

Leetcode 3070. Count Submatrices with Top-Left Element and Sum Less Than k 1. 解题思路2. 代码实现 题目链接:3070. Count Submatrices with Top-Left Element and Sum Less Than k 1. 解题思路 这一题就是一个二维的累积数组的问题,我们直接求一…

C语言实现日本某地发生了一件谋杀案

题目 猜凶手 题目内容: 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话&…

Noise Conditional Score Networks(NCSN)学习

参考: [1] https://zhuanlan.zhihu.com/p/597490389 [2] https://www.zhangzhenhu.com/aigc/Score-Based_Generative_Models.html TOC 1 基于分数的生成模型1.1 简介和动机1.2 Score Matching及其改进1.2.1 Score Matching1.2.2 Sliced score matching(不…

如何在手机上中恢复已删除的照片

市场上有大量用于恢复手机已删除照片的应用程序。您可以尝试任何合法的应用程序来恢复意外删除的视频。其中一些应用程序包括 奇客数据恢复、Disk Drill等。 恢复已删除的 Android 照片 如果您不小心从 Android 设备中删除了任何重要视频,无需惊慌。您可以按照这些…

微信小程序promise的引用

import {promisifyAll} from miniprogram-api-promise const wxpwx.p{} promisifyAll(wx,wxp) 这段代码是用于将微信小程序的异步API转换为返回Promise对象的版本,从而使你可以使用更现代、更简洁的异步编程模式(如async/await)来调用这些…

面试笔记系列三之spring基础知识点整理及常见面试题

目录 如何实现一个IOC容器? 说说你对Spring 的理解? 你觉得Spring的核心是什么? 说一下使用spring的优势? Spring是如何简化开发的? IOC 运行时序 prepareRefresh() 初始化上下文环境 obtainFreshBeanFactory() 创建并…