当前位置:网站首页>YOLOV2学习与总结
YOLOV2学习与总结
2022-07-03 06:05:00 【开心的饲养员】
前言:《YOLOV1学习与总结》上篇文章学习了yolov1,还是很有收获的,知道了yolov1为什么召回率低,精度为什么低等等问题的原因。yolov2可以说是解决了精度和速度等yolov1中一些显而易见的问题。本文和大家一起解读大神的论文。
目录
1. 精度提升
1.1 BN(Batch Normalization)
BN操作有如下优点,作者将BN操作添加到每一个卷积层中,在卷积操作前先进性BN操作,这个的操作使得YOLO的mAP提升了2%,并且还能防止训练的过拟合。
1.2 高分辨率训练
提高输入的分辨率固然可以提升检测的精度,但同时速度也下降了。
1.3 引入Anchor机制
YOLO中,所有的目标检测边界框(bounding box)都是在特征提取网络后使用全连层直接预测坐标,faster R-CNN是RPN网络来选取anchor boxes,YOLOV2中我们使用anchor boxes来替代全连层。
在1.2的高分辨率设置中,我们设置了网络输入图像的分辨率为448*448,为了获取奇数位置特征图,我们将输入了分辨率改为416*416,为什么416*416是这个数,因为我们通过特征提取网络中的池化层数目计算,从输入到输出额降采样数为32,即输入必须是32的整数倍,这是输出的特征图大小为13*13。
通过anchor机制,我们需要预测一千个以上的box,而YOLO中只需要预测98个box。这里怎么算的呢?上篇文章《YOLOV1学习与总结》中我们学习了每一个Grid cell需要预测两个box,将整张图像分为7*7的网格后,总的box就是7*7*2的box。通过anchor机制将召回率从81%提升到了88%,可以说是巨大的飞跃。
1.4 尺度聚类
当我们要使用anchor机制时,必然面临两个问题,anchor怎么选?选几个?人工选择,这样就增加了模型训练的工作量。虽然通过大量迭代次数训练,默认的anchor值也能适应任务的需要,但如果我们选择合适的anchor值,提升训练的效率和提高精度是肯定可以的。为了能自动计算Anchor,我们使用聚类算法K-means,通过对多个K值的测试,发现当K等于5时,在计算复杂度和召回率之间能够取得一个比较好的平衡。
在anchor数量确定时,通过聚类算法也测试了几个数值,发现当anchor值为9时其平均IOU值比anchor=5时高很多,so将anchor的数量设置为9。
1.5 位置预测
作者首先说明了RPN网络预测的box不稳定的原因,在RPN网络中,预测框的中心坐标计算公式如下:
(x,y)为预测的box中心坐标,tx,ty为水平和垂直的偏移参数,wa和ha为anchor的框和高,(xa,ya)为anchor的中心坐标。这里的tx和ty没有范围限制,当tx=-1时,预测框的中心坐标就变成了负值。因此如果使用这种机制可能会导致模型不稳定,这就需要对偏移值tx,ty加以限制。
YOLOV2中,我们使用激活函数来对偏移值进行限制,是的偏移值限制在0到1之间,这样就能确保模型的稳定。YOLOV2的目标检测边界框计算方式如下:、
其中,为激活函数,
,
为grid cell相对整图像左上角坐标的偏移值,
,
为anchor框的宽和高,
,
为预测框的宽和高,
,
为预测框的中心坐标,各参数的图解如下图所示:
1.6 多尺度训练
多尺度训练机制,在训练过程中,经过一定迭代次数后改变输入的尺寸,每经过10次迭代随机选择一个输入的尺寸进行训练,由于输入必须为32的倍数,因此输入的尺寸在(320,352,384...608)这些数中选择。低分辨率的输入精度虽差,但有更快的训练和推理速度,高分辨率的输入有更好的精度,这样的机制使得YOLOV2在精度和速度之间更好的权衡。
2. 速度提升
2.1 提出基于darknet19的基础网络提取特征
使用了大多数3*3卷积核操作提取特征,网络架构如下:
该网络相比与VGG16,一次推理操作的计算量仅为50.58亿次浮点型,而VGG16的计算量为300亿次浮点型。
边栏推荐
- Openresty best practices
- Oauth2.0 - user defined mode authorization - SMS verification code login
- Jackson: what if there is a lack of property- Jackson: What happens if a property is missing?
- 使用conda创建自己的深度学习环境
- 多线程与高并发(7)——从ReentrantLock到AQS源码(两万字大章,一篇理解AQS)
- Apifix installation
- PHP用ENV获取文件参数的时候拿到的是字符串
- Redis cluster creation, capacity expansion and capacity reduction
- 理解 期望(均值/估计值)和方差
- JDBC connection database steps
猜你喜欢
Solve the 1251 client does not support authentication protocol error of Navicat for MySQL connection MySQL 8.0.11
Synthetic keyword and NBAC mechanism
Convolution operation in convolution neural network CNN
Clickhouse learning notes (2): execution plan, table creation optimization, syntax optimization rules, query optimization, data consistency
Redis cluster creation, capacity expansion and capacity reduction
Support vector machine for machine learning
[teacher Zhao Yuqiang] use the catalog database of Oracle
Merge and migrate data from small data volume, sub database and sub table Mysql to tidb
Zhiniu stock project -- 04
pytorch 搭建神经网络最简版
随机推荐
arcgis创建postgre企业级数据库
使用 Abp.Zero 搭建第三方登录模块(一):原理篇
ODL framework project construction trial -demo
Clickhouse learning notes (I): Clickhouse installation, data type, table engine, SQL operation
Some thoughts on machine learning
Simple understanding of ThreadLocal
MySQL带二进制的库表导出导入
Understand the first prediction stage of yolov1
Characteristics and isolation level of database
智牛股项目--05
88. 合并两个有序数组
伯努利分布,二项分布和泊松分布以及最大似然之间的关系(未完成)
[Zhao Yuqiang] deploy kubernetes cluster with binary package
PHP用ENV获取文件参数的时候拿到的是字符串
Oracle Database Introduction
项目总结--04
.NET程序配置文件操作(ini,cfg,config)
Virtual memory technology sharing
1. Sum of two numbers
Oauth2.0 - user defined mode authorization - SMS verification code login