IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 2021SC@SDUSC山东大学软件学院软件工程应用与实践--YOLOV5代码分析(三)滑动窗口卷积 -> 正文阅读

[人工智能]2021SC@SDUSC山东大学软件学院软件工程应用与实践--YOLOV5代码分析(三)滑动窗口卷积

2021SC@SDUSC

前言

为了对算法有更好的理解,在对代码进行解读的同时我会对其它yolo算法以及其它目标检测算法进行一个简单的解读。滑动窗口卷积是传统的目标检测算法。

从简单的二分类说起

假设我们现在有一张图片

我们的任务是判断这张图片里有没有车,如果有车就输出1,没有则输出0。将这张图片作为输入,给到卷积神经网络里,网络会自动地抽取特征,通过不断的迭代下降,最终达到收敛,从而可以识别这是不是一辆车。这样的任务里通常要识别的物体占据了图片的大部分。

多分类任务

在二分类任务里我们只有一个类别,可以很简单地实现,那我们如果有多个类别呢。拿CIFAR10数据集来说(CIFAR-10 and CIFAR-100 datasets),一共有十个类别,我们怎么做呢。很简单,我们只需要改一下输出的向量,如果有十个类别,那么我们的输出向量就是十维的,得到这个十维向量后,算一下softmax再取数值最大的那个。在这里我们实际上算的是当前输入图片是这个类别的概率,二分类任务也是一样的,只不过是只有一个向量而不需要取最大的那个。

带位置的分类任务

现在我们的需求进一步提高,我们不仅要识别图片的类别是车,并且我们还要获取这辆车在图片中的位置

我们用这样一个方框来代表车的位置,这样的一个方框的表示形式有很多,可以是左上角和右下角的坐标,也可以是中心坐标以及宽高,这里我们采用后者来表示这个车的位置。

也就是现在我们需要输出这样一个向量(p,x,y,w,h),其中p是置信度,x和y是中心点的位置,w和h是方框的宽和高。当c大于0.5时,我们可以判断这张图片的类别,并且可以得到这辆车在图片中的位置。

多类别检测

和多分类任务一样,现在需要检测的类别不止一个

?

?如这样一张图,图片里不仅有狗还有猫

我们要识别出狗和猫的类别,并且能识别出它们各自的位置。

在单一类别任务中,我们的输出向量是(p,x,y,w,h),那么有多个类别时,我们还要输出它的类别,假设有20个类别,我们需要一个20维的向量,为1的就是当前判断的类别,这也就是one hot表示方法。那么我们的输出就变成了(p,x,y,w,h,c),?c是一个one hot向量,维度是20,代表了识别出的类别。

问题又来了,我们是要对一张图片同时输出猫和狗,而不是只输出猫或只输出狗,只用上面的25维的向量无法表示。在这张图片里有两个类别,那么我们只要输出两个25维的向量就可以解决问题了,那当图片里有3个类别,四个类别呢?还有一个问题,当图片里同一类别的个数超过一个又要怎么解决?

滑动窗口

滑动窗口就可以解决这样一个问题。滑动窗口是指一个大小为n*n的窗口,从图片的左上角,不断向右下角移动。

窗口开始在图片的左上角,我们将窗口内的图片提取出来,作为数据输入到训练好的分类网络中,判断窗口内有没有我们所需要识别的类别。然后以一定的步长开始移动

?

?

?

?

只是这样相信大家也看出来问题了,窗口的大小与目标框的大小不匹配,在上图中窗口大小了,因此我们需要增大窗口的大小,窗口大小由小增大,并且要以一定步长遍历整张图片,复杂度是O(n^2)?

?

?

?

这里对于多个识别的狗的框选择最好的框,我个人的想法是首先设置一个阈值,小于这个阈值的置信度直接舍弃,大于阈值的根据置信度选择置信度较高的,同时需要判断输出的框的位置与目标框的lou,防止将两只狗判断为同一只而误删掉。

用滑动窗口的方法虽然可以实现我们的目标,但这是一个tradeoff的问题,步长越小,窗口的大小选择越多,效果会越好,但是这样训练网络太慢了,相反的,步长大,窗口大小选择少,那么结果会更快出来,但是结果与目标框的差距就会更大。

于是就出现了yolo算法,yolo(you only look once),你只需要看一次,是实时目标检测算法,在保证结果的前提下,将算法设计成实时的。在后面会详细介绍。

?

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:16:59  更:2021-10-09 16:19:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 10:36:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码