开头语:RCNN系列,需要区域候选框,即便最后是多任务损失函数,但回归和分类各是一块是很明显的,而yolo要把分类问题转换成回归,这样的話就全是回归。

一.yolo v1

1,介绍,此时输入size要一致448*448

2,框架,googlenet作为主干网络,但注意经过了一些改进,并没有用到多通路做法

3,红色箭头是经改进的googlenet出来的,改进地方在于没有用googlenet多通路做法,而是1x1降维,3x3卷积提取,1x1升维

其中7x7是网格的划分,通道数30=(B*5+C),B是每个网格负责预测的目标个数,5是坐标+置信度,C是类别,每个bound box对应5个参数,B是用来确认是目标还是背景,与C的 每一类概率相乘来确认是哪一类,这里要注意的就是每个box共享一个分类的score.候选框筛选到7*7*B,大大减少了候选框,同时也减少与gt试错的机会.

4,一个格子只预测两个bounding box

5,x,y,w,h要归一化到1

这里的回归四个值主要是中心点x,y(注意相对于格点)和 长宽

图片宽为wi,高为hi,box中心点(相对于格点)为(x,y),宽高比例为(wb,hb),col,row代表格点的列数和行数,S代表划分的行列数,预测的box中心点(相对于大图)为(xc,yc)

先看预测阶段,在逆推回训练阶段就好理解了:

预测阶段:

box相对于格点的中心点为:(wi/S)*x,(hi/S)*y

格点相对于大图的坐标为col*(wi/S),row*(hi/S)

故box相对于大图的中心点为:xc= (wi/S)*x+col*(wi/S), yc = (hi/S)*y+row*(hi/S)

训练阶段,也就是要回归box相对于格点的偏移量也就是求x,y

故x =xc*(S/wi) - col,y =yc*(S/hi) - row,

回归宽高就好理解了,回归w= wb/wi,h = hb/hi.

6.目标×属于每一类的概率得到最大可能性是哪一类

7.loss函数

此时还是比较粗暴,全部采用l2 loss.

上面做法存在的问题是:

1.8维的定位Loss和20维的分类Loss同等重要是不合理的;

2.如果一个网络没有物体,那么loss就由没有物体占主导,会将网络的box置信度push到0,导致网络不稳定。

解决办法:

1.对8维的定位Loss给予更大的权重;

2.对没有物体的box的置信度loss给更小的权重;

为了解决不同大小box造成的偏移loss是一样的,将box的width和height取平方根代替原本的height和width。小box的横轴值较小,发生偏移时,反应到y轴上相比大box要大。

8,NMS踢掉剩余的框

9,yolo策略

10,yolo v1效果,因为用到全连接,丢失空间信息故容易产生定位错误

二.yolo v2

其也称为yolo9000.

1,加入bn。

2,取5个anchor boxes

3.每个box都有预测的坐标和类别

4.多尺度训练

每10个Batch,网络会随机地选择一个新的图片尺寸,由于使用了下采样参数是32,所以不同的尺寸大小也选择为32的倍数{320,352…..608},最小320*320,最大608*608,网络会自动改变尺寸,并继续训练的过程。

三.yolo v3

backbone采用去除全连接的darknet53,经过5次Res模块后,得到的特征图是608->304->152->76->38->19大小

每个ResX包含1+2*x个卷积层,故包含1+(1+2*1)+(1+2*2)+(1+2*8)+(1+2*8)+(1+2*4)=52

1.anchor由yolov2的5个变为9个;

2.不再使用Softmax进行分类,对每一类使用二分类,分类损失也使用二值交叉熵;

3.采用FPN, 其中包含三个特征图尺度,分别下采样32x,16x,8x,每个特征图上设置三种大小的anchors,对应大、中、小,每一个尺度的特征图上可以得到 N × N × [3 ∗ (4 + 1 + 80)] 的结果,分别是N x N个 gird cell ,3种尺度的anchors,x、y、w、h、confidence、80类;

4.由yolov2的darknet-19升级为darknet-53.

四.yolov4

这篇文章写的很详细很全。

  • Backbone:CSPDarknet53
  • Neck:SPP,PAN
  • Head:YOLOv3

与yolov3差异:

1.CBM:采用的而是Mish激活函数,可看出分类上还是会涨点;

f(x) = xtanh(ς(x)),ς(x) = ln(1+e^x)

                

                                   mish                                                                                                ς(x)与relu


2.CSPX:由卷积和X个Res unit模块concate组成,其借鉴的是CSPNet的思想,主要是从网络结构设计的角度解决推理中计算量大的问题,采用CSP模块先将基础层的特征映射划分为两部分,然后通过跨阶段层次结构将它们合并,在减少了计算量的同时可以保证准确率,每个CSPX包括5+2*x个卷积层;
3.SPP:多尺度最大池化;
4.卷积层采用dropblock,类似cutout,只不过cutout作用于输入层数据,而dropblock作用于网络的每一个特征图,将某个局部区域删除丢弃,比dropout力度大;


5.采用PAN结构

其实就是在FPN输出在增加下采样。融合FPN的语义特征和特征金字塔的位置特征。


6.ciou loss

参考我之前写的这篇文章

参考:

https://zhuanlan.zhihu.com/p/136382095

https://zhuanlan.zhihu.com/p/143747206

检测系列--YOLO系列相关推荐

  1. 目标检测模型 YOLO系列

    目标检测模型 YOLO系列 文章目录 目标检测模型 YOLO系列 YOLOv1 一.背景 二.YOLO模型 主要思想 模型结构 损失函数 三.优缺点 四.参考 YOLOv2与YOLO9000 YOLO ...

  2. 【目标检测】yolo系列:从yolov1到yolov5之YOLOv1详解及复现

    检测器通常能够被分为两类,一类是two-stage检测器,最具代表的为faster R-CNN:另一类是one-stage检测器,包括YOLO,SSD等.一般来说,two-stage检测器具有高定位和 ...

  3. yolo v3制作自己的数据_小白也能弄懂的目标检测之YOLO系列 第一期

    大家好,上期分享了电脑端几个免费无广告且实用的录屏软件,这期想给大家来讲解YOLO这个算法,从零基础学起,并最终学会YOLOV3的Pytorch实现,并学会自己制作数据集进行模型训练,然后用自己训练好 ...

  4. 【目标检测】YOLO系列——YOLOv1详解

    本篇是关于目标检测算法YOLOv1的学习笔记.网上的博客大多是摘抄翻译论文中的重点内容加上自己的理解,或者是梳理论文的大致思路,在没看过原文的情况下可能总会有些看不懂的地方.所以强烈建议博客搭配原文食 ...

  5. 目标检测之yolo系列

    YOLO v.s Faster R-CNN 1.统一网络:YOLO没有显示求取region proposal的过程.Faster R-CNN中尽管RPN与fast rcnn共享卷积层,但是在模型训练过 ...

  6. 【目标检测】YOLO系列Anchor标签分配、边框回归(坐标预测)方式、LOSS计算方式

    1.YOLOv1 标签分配:GT的中心落在哪个grid,那个grid对应的两个bbox中与GT的IOU最大的bbox为正样本,其余为负样本,(由于是回归模型,不是分类模型,其解决类别不平衡的方式为各项 ...

  7. 物体检测之YOLO系列

    业界对于目标检测的热度只增不减,但目前的框架也难于逾越RCNN系列.SSD.YOLO系列这三座大山,很多新的方法也是在此基础上做一些改进,所以有必要做一些整理,方便自己后续查看,这里先对YOLO系列做 ...

  8. 目标检测之yolo系列模型-yolov4/yolox

    文章目录 一.yolov4较yolov3的优化点 1.1 网络结构层面 (1) CSPDarknet53(借用CSP结构) (2) SPP (3) PAN(借用PANet) 1.2 优化策略 (1) ...

  9. 【目标检测】yolo系列:从yolov1到yolov5之YOLOv2详解及复现

    YOLO v2 Yolov2论文链接:YOLO9000: Better, Faster, Stronger yolov2的改进 从Yolov2论文的标题可以直观看到就是Better.Faster.St ...

最新文章

  1. EF6连接MySql,网上那些所谓解决方案提供者你们够了
  2. python游戏开发的五个案例分享
  3. 第六章 Web开发实战1——HTTP服务
  4. html5 数据验证,【译】表单数据校验
  5. Sprint计划列表
  6. Oracle数据库 invalid character问题解决
  7. upstream directive is not allowed here in
  8. SAP License:什么是SAP ECC?与WMS系统集成技术要点
  9. Android项目实战(三十一):异步下载apk文件并安装(非静默安装)
  10. html模板自动保存在哪个文件夹,wps的备份文件夹在哪里 wps崩溃自动保存文件在哪里...
  11. 在Mac环境下查看附近路由器的MAC地址
  12. Office 右键新建没有office选项怎么办
  13. 【GCC】warning: pointer targets in passing argument 1 of 'strlen' differ in signedness
  14. 笔记 |《软件测试技术经典教程》第4章 黑盒测试技术
  15. 磨耳朵鼻祖Super Simple Songs下载之《Rain Rain Go Away》
  16. Python二级--奖学金评选2
  17. 离散随机变量和连续随机变量_随机变量深度崩溃课程
  18. Oracle 11g R2+RAC+ASM+redhat安装详解1
  19. mysqladmin命令用法
  20. Unity从零开始实现一个全息效果Shader

热门文章

  1. ps抠头发插件_彻底告别抠图的烦恼!PS自动抠图超级插件Topaz ReMask大放送
  2. LeetCode之最大正方形
  3. 珍爱生命,远离大厂政治斗争
  4. 全链路压测自动化实践 1
  5. Java多线程系列(三):Java线程池的使用方式,及核心运行原理
  6. 2020年工业互联网行业研究报告(国盛证券)
  7. 论文阅读课5-DocRED: A Large-Scale Document-Level Relation Extraction Dataset(大规模文档集关系提取数据集
  8. JavaWeb:XML总结
  9. p1470 Longest Prefix
  10. js中实现页面跳转(返回前一页、后一页)