| |
|
开发:
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),你只需要看一次,是实时目标检测算法,在保证结果的前提下,将算法设计成实时的。在后面会详细介绍。 ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |