当前位置:网站首页>YOLOV1学习笔记
YOLOV1学习笔记
2022-07-03 06:06:00 【开心的饲养员】
前言:最近看了网上很多关于yolo的文章,其实很多文章写得真的很不错,写的基本上小白都能看懂了,但是看多了你会发现,有些内容你要深入理解还必须得看原版的英文论文,大家写得东西或多或少都会加上自己主观的理解,所以要是有时间还是建议看一看原始论文,对算法原理的理解能够让你在做工程项目时更有把握,研发效率更高。
yolov1论文是2016年9月发布的,发明人作者当时还是一个读研的学生,不得不感叹他的天赋。而且作者将所有的代码全部开源,也敬佩作者的格局,一开始以为暗网的开发者和yolo的设计者不是同一个人,现在才发现原来暗网的框架和yolo的作者是同一人,不仅算法做的好,连软件设计水平也这么高,纯c开发暗网框架,是在是厉害。
目录
作者在yolov1论文中介绍了,yolo相对于其他目标检测的优化主要表现在以下三点:
(1)将目标检测问题作为一个检测的回归问题;
这是yolo速度快的主要原因;
(2)yolo算法在预测时将整图作为一个输入,区别与滑动窗口的目标检测与R-CNN;
这是提高目标检测精度的主要原因;
(3)通用性好;
这一点感觉不能成为优点了,现在的faster R-cnn及SSD应该也具备了;
1. 整图回归逻辑
上图是来自yolo原论文中的图片,作者将整张图像分为S*S个网格,每个网格预测B的矩形框,并且每一个这样的矩形框要预测C类目标。则一个矩形框预测该矩形框中含有某个目标的概率可表示为如下形式:
IOU(intersection over union)即交并比,预测框与真实框两个框之间的交并比。为便于理解,贴出了原论文对于整图回归的解释。
即一次整图的回归需要计算的tensor数目,假设将整图划分为7*7的网格大小,且每个网格需要预测两个矩形框,每一个矩形框需用5个参数表示,分别为x,y,w,h以及置信度。(x,y)为坐标,是矩形框的中心坐标,这里的坐标是相对于网格的坐标,以网格为参考的坐标,而不是整体为参考的坐标,而宽度和高度则是相对于整图的预测。所以在最终,整个网络的输出tensor是7*7*30,后面再接全连层输出最终的类的概率及坐标位置。整个yolo网络如下图所示,它包括了24个卷积层和两个全连层。
论文中作者还提到了可以进一步加快推理速度,成为fast yolo,也就是后面我们在暗网框架中见到的yolo-tiny网络,它只有9个卷积层。
2. 损失函数
损失函数设计时,作者对目标物在网格(grid cell)中和不在网格中设置了不同的权重,当目标物在网格中时,权重大,设置为5,不在网格中时权重小,设置为0.5,这有利于模型的稳定性,否则如果对两者同等对待,设置相同的权重,那么当目标物不在网格中时,这时候其实置信度是0,如果权重的比例设置的大,很容易导致模型的不稳定。
其中,=5,
=0.5
3. 一些操作说明
3.1 预训练模型:
有文章表明增肌卷积层和全连层能够提高模型的性能,作者使用了图三种前20个卷积层用来训练预训练模型,将后面的四卷积层和两个全连层随机初始化了。
3.2 leaky操作函数
好了今天的学习就到这里,如果有新的认识再更新吧。
微言微语:如果你不能用浅显的语言描述一件事情,那说明你没有理解透。
边栏推荐
- Convolution operation in convolution neural network CNN
- Introduction to software engineering
- 多线程与高并发(7)——从ReentrantLock到AQS源码(两万字大章,一篇理解AQS)
- [set theory] equivalence relation (concept of equivalence relation | examples of equivalence relation | equivalence relation and closure)
- tabbar的设置
- Mysql
- 项目总结--04
- Clickhouse learning notes (I): Clickhouse installation, data type, table engine, SQL operation
- pytorch 多分类中的损失函数
- [teacher Zhao Yuqiang] Cassandra foundation of NoSQL database
猜你喜欢
CKA certification notes - CKA certification experience post
[teacher Zhao Yuqiang] Cassandra foundation of NoSQL database
Creating postgre enterprise database by ArcGIS
pytorch DataLoader实现miniBatch(未完成)
Jedis source code analysis (II): jediscluster module source code analysis
Code generator - single table query crud - generator
Phpstudy setting items can be accessed by other computers on the LAN
[teacher Zhao Yuqiang] use Oracle's tracking file
Project summary --2 (basic use of jsup)
Kubernetes notes (IX) kubernetes application encapsulation and expansion
随机推荐
代码管理工具
智牛股项目--04
多线程与高并发(7)——从ReentrantLock到AQS源码(两万字大章,一篇理解AQS)
Alibaba cloud Alipay sandbox payment
What's the difference between using the Service Worker Cache API and regular browser cache?
Project summary --01 (addition, deletion, modification and query of interfaces; use of multithreading)
Zhiniu stock -- 03
PMP notes
Solve the problem that Anaconda environment cannot be accessed in PowerShell
深入解析kubernetes controller-runtime
从小数据量 MySQL 迁移数据到 TiDB
Deep learning, thinking from one dimensional input to multi-dimensional feature input
ODL framework project construction trial -demo
项目总结--01(接口的增删改查;多线程的使用)
輕松上手Fluentd,結合 Rainbond 插件市場,日志收集更快捷
Leetcode solution - 02 Add Two Numbers
Understand the first prediction stage of yolov1
Jedis source code analysis (II): jediscluster module source code analysis
Mysql database
Creating postgre enterprise database by ArcGIS