目标检测之YOLO系列

YOLOV1:

YOLOV2:

YOLOV2总结:

  • Better
  1. Batch Normalization
BN可以提升模型收敛速度,而且可以起到一定正则化效果,降低模型的过拟合
YOLOv2使用BN,不使用dropout
  1. High Resolution Classifier
将分辨率由224*224(ImageNet分类尺寸)增加至448*448
  1. Convolutional With Anchor Boxes
使用先验框提高召回率
  1. Dimension Clusters
使用聚类算法生成先验框
  • Faster
  1. 使用Darknet-19主干网络

YOLOV3:

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:

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:

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方法

YOLOX总结

  • 数据增强部分
Mosaic
Mixup
  • Backbone
CSPDarknet53
  • Neck部分
spp + pan
  • Head部分
使用decoupled head(将分类头和回归头分开)

目标检测复习之YOLO系列的更多相关文章

  1. 目标检测复习之Anchor Free系列

    目标检测之Anchor Free系列 CenterNet(Object as point) 见之前的过的博客 CenterNet笔记 YOLOX 见之前目标检测复习之YOLO系列总结 YOLOX笔记 ...

  2. 深度学习与CV教程(12) | 目标检测 (两阶段,R-CNN系列)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  3. 目标检测复习之Faster RCNN系列

    目标检测之faster rcnn系列 paper blogs1: 一文读懂Faster RCNN Faster RCNN理论合集 code: mmdetection Faster rcnn总结: 网络 ...

  4. (六)目标检测算法之YOLO

    系列文章链接: (一)目标检测概述 https://www.cnblogs.com/kongweisi/p/10894415.html (二)目标检测算法之R-CNN https://www.cnbl ...

  5. 目标检测复习之Loss Functions 总结

    Loss Functions 总结 损失函数分类: 回归损失函数(Regression loss), 分类损失函数(Classification loss) Regression loss funct ...

  6. 深度学习与CV教程(13) | 目标检测 (SSD,YOLO系列)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  7. 第三十五节,目标检测之YOLO算法详解

    Redmon, J., Divvala, S., Girshick, R., Farhadi, A.: You only look once: Unified, real-time object de ...

  8. (七)目标检测算法之SSD

    系列博客链接: (一)目标检测概述 https://www.cnblogs.com/kongweisi/p/10894415.html (二)目标检测算法之R-CNN https://www.cnbl ...

  9. VOC数据集 目标检测

    最近在做与目标检测模型相关的工作,很多都要求VOC格式的数据集. PASCAL VOC挑战赛 (The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛, P ...

随机推荐

  1. JQuery基础修炼-样式篇

    jQuery对象转化成DOM对象 jQuery库本质上还是JavaScript代码,它只是对JavaScript语言进行包装处理,为了是提供更好更方便快捷的DOM处理与开发常见中经常使用的功能.我们可 ...

  2. 微信小程序拖动列表功能

    WXML部分 1 <view class="index"> 2 3 <!-- 数据展示区 --> 4 <scroll-view 5 class=&qu ...

  3. Python raise...from... 是啥?

    调试程序时看某些库的源代码,发现有如下代码读不懂,不理解后面这个from干什么用的. try: ... except KeyError: raise **Error('') from None try ...

  4. HTTP长连接和短连接及应用情景

    HTTP短连接 HTTP/1.0中默认使用短连接, 客户端和服务器进行一次HTTP操作, 就需要建立一次连接, 任务结束连接也关闭. 当客户端浏览器访问的web网页中包含其他的web资源时, 每遇到一 ...

  5. Linux操作系统与项目部署

    Linux操作系统与项目部署 注意:本版块会涉及到操作系统相关知识. 现在,几乎所有智能设备都有一个自己的操作系统,比如我们的家用个人电脑,基本都是预装Windows操作系统,我们的手机也有Andro ...

  6. linux中sort、uniq、cut、tr、wc命令的使用

    文本处理命令 1.sort命令 使用场景 : 用于将文件内容加以排序(可以和cat一起用) 参数 作用 -n 依照数值的大小排序 -r 以相反的顺序来排序(默认只比较第一个数,-rn是按所有数值比较) ...

  7. JVM虚拟机类加载机制(一)

    类从被加载到虚拟机内存中开始,到卸载出内存截止,整个生命周期包括:加载.验证.准备.解析,初始化.使用.卸载七个阶段.其中验证.准备.解析三个部分统称为连接. 类初始化情况: 遇到new.getsta ...

  8. Java 在Word指定段落/文本位置插入分页符

    在Word插入分页符可以在指定段落后插入,也可以在特定文本位置处插入.本文,将以Java代码来操作以上两种文档分页需求.下面是详细方法及步骤. [程序环境] 在程序中导入jar,如下两种方法: 方法1 ...

  9. 安卓记账本开发学习day5之版本兼容问题

    安卓5.0以上版本想要隐藏DatePicker头布局的写法比较复杂,需要一层一层隐藏 int headerId = getContext().getResources().getIdentifier( ...

  10. eslint配置介绍-如何在uniapp中配置eslint

    eslint uniapp-eslint及vue-eslint配置 ESLint 是一个开源的 JavaScript 代码检查工具.可以让程序员在编码的过程中发现问题而不是在执行的过程中. 1. es ...