目标检测复习之YOLO系列
目标检测之YOLO系列
YOLOV1:
- blogs1: YOLOv1算法理解
- blogs2: <机器爱学习>YOLO v1深入理解
- 网络结构

- 激活函数(leaky rectified linear activation)

- 损失函数

YOLOV2:
- paper: YOLO9000: Better, Faster, Stronger
- blogs1: 目标检测|YOLOv2原理与实现
YOLOV2总结:
- Better
- Batch Normalization
BN可以提升模型收敛速度,而且可以起到一定正则化效果,降低模型的过拟合
YOLOv2使用BN,不使用dropout
- High Resolution Classifier
将分辨率由224*224(ImageNet分类尺寸)增加至448*448
- Convolutional With Anchor Boxes
使用先验框提高召回率
- Dimension Clusters
使用聚类算法生成先验框
- Faster
- 使用Darknet-19主干网络
YOLOV3:
- paper: YOLOv3: An Incremental Improvement
- code1: [U版yolov3
- code2: mmdetection实现的代码
- blogs1: YOLO v3网络结构分析
- blogs2: 睿智的目标检测26——Pytorch搭建yolo3目标检测平台
YOLOV3总结:
- 数据处理部分
- Backbones部分
DarkNet53, 网络结构如下:

- Neck部分
FPN
- Head部分
见网络结构图
- 激活函数
LeakyReLU

- 损失函数
目标类别损失/目标置信度损失 --> 二值交叉熵损失(Binary Cross Entyopy)
目标定位损失 --> Sum of Squared Error Loss(只有正样本才有目标定位损失)
L(loc) = sum(sigmod(tx-gx)**2 + sigmod(ty-gy)**2 + (tw-gw)**2 + (th-gh)**2)
- 其他
在yolov3中,关于预测的目标中心点坐标计算公式是:
见图:

YOLOV4:
- paper: YOLOv4: Optimal Speed and Accuracy of Object Detection
- code1: WongKinYiu/PyTorch_YOLOv4 与u版yolov3/5格式相同
- code2: bubbliiiing/yolov4-pytorch 代码比较好理解
- blogs1: b站up主霹雳吧啦Wz yolov4讲解博客
- blogs2: Bubbliiiing的博客
- video1: b站up主霹雳吧啦Wz yolov4讲解视频
YOLOV4总结:
- 数据处理部分
1. Mosaic data augmentation
2. CutMix data augmentation
- Backbones部分
CSPDarknet53
- Neck部分
SPP
PAN
- Head部分
和YOLOv3的head部分一样
- 正负样本分配部分
1. 在yolov3中一个GT都只分配一个Anchor, 在ylov4中(以及u版的yolov3-spp)中一个gt可以同时分配给多个anchor
2. 在Bubbliiiing版本的代码中可以描述如下:(3个head分别对应anchor为[0,1, 2, 3, 4, 5, 6, 7, 8])
a: anchor有9个,gt有10个 每个anchor和gt进行左上角对齐并且计算iou从大到小排序(shape:[10,9])
b: 例如第一个gt算出来的最大iou的anchor的index=4,但是该层的anchor索引是6,7,8,所以该gt不属于该head
c: 如果计算出该gt与anchor对应的index=6: 将该gt缩放到该head的大小,该gt的中心点落在网格中的点. 该网格中的
点包含的信息有(x,y,w,h,conf,cls). 然后和预测出来的进行对比和计算(在该版本中计算方式同yolov3)
d: 使用sigmod激活函数的取值范围是[0, 1],要想取值0,1那么预测值需要取得无穷(在后续的yolov5中有改进)
- 损失函数部分
分类损失:
定位损失: CIOU,ciou的计算方式如下:

- 激活函数
Mish激活函数
- 其他
Class label smoothing(标签平滑策略)
学习率余弦退火衰减
YOLOV5:
- paper: 无
- code: U版yolov5
- blog1: b站up主霹雳吧啦Wz yolov5讲解博客比较详细
- video1: b站up主霹雳吧啦Wz yolov5讲解视频
YOLOv5总结:
- 数据处理部分
yolov5提供的数据增强技术有:
1. Mosaic
2. Copy paste (需要segments数据)
3. Random affine 仿射变换 作者只使用了Scale和Translation(缩放和平移)
4. MixUp
- Backbones部分
Backbone: new CSP-Darknet53(使用了FCOS模块后面使用6*6大小的卷积替换)
- Neck部分
spp, pan
- head:
yolov3 head
- 损失函数
Classes loss,分类损失,采用的是BCE loss,注意只计算正样本的分类损失
Objectness loss,obj损失,采用的依然是BCE loss
Location loss,定位损失,采用的是CIoU loss
- 其他
消除网格在断点等取不到值的情况
bx = (2*sigmod(tx) - 0.5) + cx
by = (2*sigmod(ty) - 0.5) + cy
那么就将原来的取值范围有[0, 1]变化到[-0.5, 1.5],也为后面使用相邻的网格预测点作为正样本奠定基础
同时:
bw = pw * (28sigmod(tw))**2
bh = ph * (28sigmod(th))**2
防止梯度爆炸,将范围调整到(0,4)也为后面的正负样本分配奠定基础

- 匹配正样本
YOLOX:
除了YOLOX,yolov1属于anchor-free目标检测方法外,其他的yolo系列都属于anchor-base方法
- paper: yolox的arxiv-paper
- code1: yolox的官方代码
- code2: mmdetection实现的代码
- blog1: 深入浅出Yolo系列之Yolox核心基础完整讲解
YOLOX总结
- 数据增强部分
Mosaic
Mixup
- Backbone
CSPDarknet53
- Neck部分
spp + pan
- Head部分
使用decoupled head(将分类头和回归头分开)
- 正样本标签分配 - simota
- 目标检测中的正样本分配
目标检测复习之YOLO系列的更多相关文章
- 目标检测复习之Anchor Free系列
目标检测之Anchor Free系列 CenterNet(Object as point) 见之前的过的博客 CenterNet笔记 YOLOX 见之前目标检测复习之YOLO系列总结 YOLOX笔记 ...
- 深度学习与CV教程(12) | 目标检测 (两阶段,R-CNN系列)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- 目标检测复习之Faster RCNN系列
目标检测之faster rcnn系列 paper blogs1: 一文读懂Faster RCNN Faster RCNN理论合集 code: mmdetection Faster rcnn总结: 网络 ...
- (六)目标检测算法之YOLO
系列文章链接: (一)目标检测概述 https://www.cnblogs.com/kongweisi/p/10894415.html (二)目标检测算法之R-CNN https://www.cnbl ...
- 目标检测复习之Loss Functions 总结
Loss Functions 总结 损失函数分类: 回归损失函数(Regression loss), 分类损失函数(Classification loss) Regression loss funct ...
- 深度学习与CV教程(13) | 目标检测 (SSD,YOLO系列)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- 第三十五节,目标检测之YOLO算法详解
Redmon, J., Divvala, S., Girshick, R., Farhadi, A.: You only look once: Unified, real-time object de ...
- (七)目标检测算法之SSD
系列博客链接: (一)目标检测概述 https://www.cnblogs.com/kongweisi/p/10894415.html (二)目标检测算法之R-CNN https://www.cnbl ...
- VOC数据集 目标检测
最近在做与目标检测模型相关的工作,很多都要求VOC格式的数据集. PASCAL VOC挑战赛 (The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛, P ...
随机推荐
- CSS3新特性的概述
CSS3的新特性大致分为以下六类 1.CSS3选择器 2.CSS3边框与圆角 3.CSS3背景与渐变 4.CSS3过渡 5.CSS3变换 6.CSS3动画 下面分别说一说以上六类都有哪些内容 CSS3 ...
- C#ASP.NET网站开发步骤
1. 创建项目ASP.NET Web 应用程序. 2. 选择"Web 窗体"模板,然后单击 "确定" 按钮创建项目. 3. 在解决方案资源管理器中,右键添加we ...
- java的内存泄露是如何发生的,如何避免和发现
java的垃圾回收与内存泄露的关系:[新手可忽略不影响继续学习] 马克-to-win:上一节讲了,(i)对象被置成null.(ii)局部对象(无需置成null)当程序运行到右大括号.(iii)匿名对象 ...
- jboss修改内存
在修改配置文件,在 <JBOSS_HOME> /bin/stadalone.conf中 找到并修改 如图
- vue中执行npm run build报错解决方法?
遇到了执行npm run build 后报错: [build:js ] Module not found: Error: Can't resolve 'scss-loader' in 'D:\work ...
- (ICONIP2021)On the Unreasonable Effectiveness of Centroids in Image
目录 摘要 1.引言 2.提出的方法 2.1 CentroidTripletloss 2.2 聚合表示 3.实验 3.1 数据集 3.2 应用细节 3.3 Fashion检索结果 3.4 行人再识别结 ...
- js知识梳理3:创建对象的模式探究
写在前面 注:这个系列是本人对js知识的一些梳理,其中不少内容来自书籍:Javascript高级程序设计第三版和JavaScript权威指南第六版,感谢它们的作者和译者.有发现什么问题的,欢迎留言指出 ...
- YC-Framework版本更新:V1.0.6
分布式微服务框架:YC-Framework版本更新V1.0.6!!! 本文主要内容: V1.0.6版本更新主要内容 V1.0.6版本更新主要内容介绍 一.V1.0.6版本更新主要内容 1.系统例子覆盖 ...
- Python入门-迭代器和生成器
迭代演示 # 传统数据生成缺陷演示,编号操作未全部使用,会占用内存 #合适的做法,是需要的时候再生产,而不是全部生成好了再用 def generator(maxnum): print("[代 ...
- IDEA 2022.2.1 Beta 2发布:新增支持Java 18、增强JUnit 5的支持
近日,IDEA 2022.1的Beta 2版本发布了!下面我们一起来看看对于我们Java开发者来说,有哪些重要的更新内容. Java增强 随着Java 18的正式发布,IDEA也在该版本中迅速跟进.目 ...