当前位置:网站首页>深度学习——Bounding Box预测
深度学习——Bounding Box预测
2022-06-30 07:22:00 【头发没了还会再长】
Bounding Box
为什么要预测?
上一篇博客讲解了滑动窗口法的卷积实现,这个算法效率更高,但仍然存在问题,不能输出最精准的边界框,在滑动窗口法中,你取这些离散的位置集合,然后在它们上运行分类器,在这种情况下,这些边界框没有一个能完美匹配汽车位置。
其中一个能得到更精准边界框的算法是
YOLO 算法
,YOLO(You only look once)意思是你只看一次,这是由 Joseph Redmon,Santosh Divvala,Ross Girshick 和 Ali Farhadi 提出的算法。
是这么做的,比如你的输入图像是 100×100 的,然后在图像上放一个网格。为了介绍起来简单一些,我用 3×3 网格,实际实现时会用更精细的网格,可能是 19×19。基本思路是使用图像分类和定位算法,将算法应用到 9 个格子上。(基本思路是,采用图像分类和定位算法,逐一应用在图像的 9 个格子中。)更具体一点,你需要这样定义训练标签,所以对于 9 个格子中的每一个指定一个标签𝑦,𝑦是 8 维的,和你之前看到的一样。
我们看看左上方格子,这里这个,里面什么也没有,所以左上格子的标签向量𝑦是[ 0???] 。然后这个格子的输出标签𝑦也是一样,这个格子(编号 3),还有其他什么也没有的格子都一样。
讲的更具体一点,这张图有两个对象,YOLO 算法做的就是,取两个对象的中点,然后将这个对象分配给包含对象中点的格子。所以即使中心格子(编号 5)同时有两辆车的一部分,我们就假装中心格子没有任何我们感兴趣的对象,所以对于中心格子,分类标签𝑦和这个向量类似,和这个没有对象的向量类似,即𝑦 = [ 0???] 。
绿色线框柱的格子和橙色先框柱的格子包含对象中点,对应的向量分别为最右边的绿色笔和蓝色笔写出的向量,𝑝𝑐 = 1,然后你写出𝑏𝑥、𝑏𝑦、𝑏ℎ和𝑏𝑤来指定边界框位置,然后还有类别 1是行人,那么𝑐1 = 0,类别 2 是汽车,所以𝑐2 = 1,类别 3 是摩托车,则数值𝑐3 = 0。
所以对于这里 9 个格子中任何一个,你都会得到一个 8 维输出向量,因为这里是 3×3 的网格,所以有 9 个格子,总的输出尺寸是 3×3×8,所以目标输出是 3×3×8。
所以这个算法的优点在于神经网络可以输出精确的边界框,所以测试的时候,你做的是喂入输入图像𝑥,然后跑正向传播,直到你得到这个输出𝑦。
注意如何分配对象所在格子
把对象分配到一个格子的过程是,你观察对象的中点,然后将这个对象分配到其中点所在的格子,所以即使对象可以横跨多个格子,也只会被分配到 9 个格子其中之一,就是 3×3 网络的其中一个格子,或者 19×19 网络的其中一个格子。在 19×19 网格中,两个对象的中点(图中蓝色点所示)处于同一个格子的概率就会更低。
优点
- 它显式地输出边界框坐标,所以这能让神经网络输出边界框,可以具有任意宽高比,并且能
输出更精确的坐标,不会受到滑动窗口分类器的步长大小限制。- 这是一个卷积实现,你并没有在 3×3 网格上跑 9 次算法,或者,如果你用的是 19×19 的网格,19 平方是 361 次,所以你不需要让同一个算法跑 361 次。相反,这是单次卷积实现,但你使用了一个卷积网络,有很多共享计算步骤,在处理这 3×3 计算中很多计算步骤是共享的,或者你的 19×19 的网格,所以这个算法效率很高。
- 因为这是一个卷积实现,实际上它的运行速度非常快,可以达到实时识别。
边栏推荐
- Assembly learning register
- Matter protocol
- 期末複習-PHP學習筆記5-PHP數組
- Video player (I): process
- Line fitting (least square method)
- Implementation of binary search in C language
- Armv8 (coretex-a53) debugging based on openocd and ft2232h
- Inversion Lemma
- Examen final - notes d'apprentissage PHP 3 - Déclaration de contrôle du processus PHP
- Final review -php learning notes 1
猜你喜欢
November 22, 2021 [reading notes] - bioinformatics and functional genomics (Section 5 of Chapter 5 uses a comparison tool similar to blast to quickly search genomic DNA)
Permutation and combination of probability
2022 retail industry strategy: three strategies for consumer goods gold digging (in depth)
Deloitte: investment management industry outlook in 2022
Personal blog one article multi post tutorial - basic usage of openwriter management tool
right four steps of SEIF SLAM
Network security and data in 2021: collection of new compliance review articles (215 pages)
Examen final - notes d'apprentissage PHP 3 - Déclaration de contrôle du processus PHP
Raspberry pie 4B Getting Started Guide
Efga design open source framework openlane series (I) development environment construction
随机推荐
Line fitting (least square method)
Xiashuo think tank: 50 planet updates reported today (including the global architects Summit Series)
期末复习-PHP学习笔记7-PHP与web页面交互
Installation software operation manual (continuous update)
Video player (II): video decoding
期末复习-PHP学习笔记6-字符串处理
2022.01.20 [bug note] | qiime2: an error was encoded while running dada2 in R (return code 1)
Inversion Lemma
深度学习——LSTM
ADC basic concepts
Log service management
December 13, 2021 [reading notes] | understanding of chain specific database building
Virtual machine VMware: due to vcruntime140 not found_ 1.dll, unable to continue code execution
Parameter calculation of deep learning convolution neural network
Final review -php learning notes 7-php and web page interaction
STM32 infrared communication
NMOS model selection
Cadence physical library lef file syntax learning [continuous update]
Use of ecostruxure (3) creating composite function blocks
Thread network