当前位置:网站首页>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操作函数

好了今天的学习就到这里,如果有新的认识再更新吧。
微言微语:如果你不能用浅显的语言描述一件事情,那说明你没有理解透。
边栏推荐
- Disruptor learning notes: basic use, core concepts and principles
- BeanDefinitionRegistryPostProcessor
- Kubernetes notes (10) kubernetes Monitoring & debugging
- Migrate data from Mysql to tidb from a small amount of data
- pytorch DataLoader实现miniBatch(未完成)
- [teacher Zhao Yuqiang] the most detailed introduction to PostgreSQL architecture in history
- Intel's new GPU patent shows that its graphics card products will use MCM Packaging Technology
- BeanDefinitionRegistryPostProcessor
- 项目总结--01(接口的增删改查;多线程的使用)
- 最大似然估计,散度,交叉熵
猜你喜欢

ThreadLocal的简单理解
![[teacher Zhao Yuqiang] use Oracle's tracking file](/img/0e/698478876d0dbfb37904d7b9ff9aca.jpg)
[teacher Zhao Yuqiang] use Oracle's tracking file

Loss function in pytorch multi classification

Kubesphere - Multi tenant management

. Net program configuration file operation (INI, CFG, config)

理解 期望(均值/估计值)和方差

23 design models

Interesting research on mouse pointer interaction

Kubernetes notes (10) kubernetes Monitoring & debugging

Une exploration intéressante de l'interaction souris - pointeur
随机推荐
JDBC connection database steps
1. 两数之和
Simple handwritten ORM framework
Oauth2.0 - user defined mode authorization - SMS verification code login
Kubernetes notes (10) kubernetes Monitoring & debugging
Support vector machine for machine learning
Skywalking8.7 source code analysis (II): Custom agent, service loading, witness component version identification, transform workflow
.NET程序配置文件操作(ini,cfg,config)
Understand the first prediction stage of yolov1
Clickhouse learning notes (I): Clickhouse installation, data type, table engine, SQL operation
理解 YOLOV1 第一篇 预测阶段
Project summary --2 (basic use of jsup)
Oauth2.0 - Introduction and use and explanation of authorization code mode
When PHP uses env to obtain file parameters, it gets strings
Oauth2.0 - use database to store client information and authorization code
Project summary --01 (addition, deletion, modification and query of interfaces; use of multithreading)
[teacher Zhao Yuqiang] index in mongodb (Part 2)
Kubernetes notes (VIII) kubernetes security
PHP用ENV获取文件参数的时候拿到的是字符串
PMP笔记记录