| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Yolo系列目标检测算法知识点总结 -> 正文阅读 |
|
[人工智能]Yolo系列目标检测算法知识点总结 |
????????下面是YoloV4论文中给出的目标检测算法的整体架构: 主要包含以下几个部分:
Yolov1:参考:https://zhuanlan.zhihu.com/p/42772125 总体步骤:
损失函数: 训练目标target构造: ????????由于只有当目标的中心落在某个网格内时,该网格才负责预测这个目标,如果没有目标落在这个网格内,该网格就不需要负责任何目标的预测,每个网格只负责预测一个目标。所以在YoloV1中,在模型的预测阶段,每个网格预测两个box和对应的置信度,以及目标所属类别的概率,首先要确定由哪个box来负责预测目标?YoloV1中将与实际目标ground truth的IoU交并比大的那个box负责预测目标,用来计算损失函数,另一个box置为无效。也就是说,每次预测输出两个box,然后选择IoU大的那个来计算损失,训练模型。 特点: ????????采用end-to-end一阶段处理方式,处理速度快 不足:
Yolov2:参考:<机器爱学习>YOLOv2 / YOLO9000 深入理解 - 知乎 参考:https://zhuanlan.zhihu.com/p/42861239 新特性: ????????1、使用基于k-means聚类得到的anchor box,k-means聚类使用1-IoU(box, centroids)的距离度量方式,IoU越大,重合度越高,距离越小 ????????2、采用类似于Faster R-CNN一样的基于anchor box的box预测,网络计算输出预测框相对于anchor box的偏移量,YoloV2中基于YoloV1的网格划分,进一步改进偏移量的预测,将每个网格都归一化到长度为1,对于预测的偏移量t_x,t_y,t_h,t_w,使用sigmoid将t_x,t_y 缩放到[0,1]之间的偏移量,从而将预测box的中心限制在目标网格内,使用指数变换将t_h,t_w 变换为恒大于零的数值,对anchox box的宽高进行缩放得到预测box的宽和高 ????????其中,b_x,b_y,b_w,b_h 是预测边框的中心和宽高。 Pr(object)?IOU(b,object) 是预测边框的置信度,YOLO1是直接预测置信度的值,这里对预测参数 t_o 进行σ变换后作为置信度的值。c_x,c_y 是当前网格左上角到图像左上角的距离,要先将网格大小归一化,即令一个网格的宽=1,高=1(归一化为之后,方便使用sigmoid函数映射到0到1之间来表示bbox中心相对于(c_x,c_y)的偏移量)。 p_w,p_h 是先验框的宽和高。 σ是sigmoid函数。 t_x,t_y,t_w,t_h,t_o 是要学习的参数,分别用于预测边框的中心和宽高,以及置信度。 ????????由于σ函数将 t_x,t_y 约束在(0,1)范围内,所以根据上面的计算公式,预测边框的蓝色中心点被约束在网格内。约束边框位置使得模型更容易学习,且预测更为稳定。 ????????3、使用BatchNorm加速模型收敛,并提供正则化能力 ????????4、去除YoloV1的全连接层,改成全卷积网络,能够处理任意大小的输入图像,并使用不同分辨率大小的图像进行交替训练,是网络模型可以学习适应不同分辨率的图像 ????????5、与YoloV1每个网格只预测输出一个目标不同,YoloV2每个网格的每个anchor box都会预测输出一个目标,所以网络最后一层的输出形状为S x S x (1+ 4 + C) * B,可以大幅提升检测结果的召回率 ????????6、Passthrough细粒度特征融合,将高分辨率26x26的feature map和低分辨率13x13的feature map进行融合,得到细粒度的特征。将26x26的feature map的宽和高进行间隔采样,得到4个13x13的feature map。然后和原本13x13的feature map在通道维度上做concat,特征融合实现如下: 训练目标target构造: ????????YoloV2与YoloV1一样,首先进行网格划分,落在网格内的目标就由这个网格进行预测,每个网格如果输出若干个box(比如使用5个anchor box就输出5个box),每个box包含预测的坐标、置信度、类别概率,与YoloV1每个网格只能预测一个目标不同,YoloV2中每个网格可以预测输出多个目标。在预处理阶段,预先在每个网格内生成5个anchor box,并将anchor box与真实目标的ground truth计算IoU,IoU最大的anchor box负责预测对应的目标。在模型预测阶段,对于每个anchor box预测得到坐标偏移量,基于偏移量计算得到预测box的坐标和置信度,然后计算损失。 Yolov3:参考:https://www.jiangdabai.com/video/%E5%8F%91%E5%B8%83%E8%A7%86%E9%A2%91%E6%B5%8B%E8%AF%95-2-2-2-2-2 参考:https://www.jiangdabai.com/video/%E5%8F%91%E5%B8%83%E8%A7%86%E9%A2%91%E6%B5%8B%E8%AF%95-2-2-2-2-2-2 新特性:
训练目标target构造: ????????同YoloV2。 Yolov4:参考:YOLOv4原文翻译 - v4它终于来了!_lp_oreo的博客-CSDN博客_yolov4 参考:https://cloud.tencent.com/developer/article/1748630 ????????整合近几年在深度神经网络处理图像方面行之有效的方法,进行消融对比实验,寻找最优的数据增强、主干网络、特征融合等方法来提升Yolo算法的目标检测性能。 输入端:
主干网络:
Neck特征融合: ????????1、SPP特征融合,SPP来源于SPPNet,是将不同大小的输入使用若干个不同大小S x S的网格进行划分,然后在每个网格内采用max pooling,得到S x S维度的特征,目的是将不同大小的输入得到固定维度的输出。在YoloV4中,采用SPP模块对卷积网络输出的特征图做多种尺度的max pooling,采用padding填充,是的max pooling的输出具有相同的分辨率,然后将多个max pooling结果做concat进行特征融合 ????????2、YoloV3采用FPN做特征融合,然后分别在52x52、26x26、13x13的特征图上检测小目标,中等目标和大目标,YoloV4在FPN的基础上再做一次卷积步长为2的下采样,使用PAN结构与FPN做特征融合,结果同样得到52x52、26x26、13x13的特征图 损失函数: ????????在损失函数阶段采用CIoU Loss来评价预测框和目标框之间的差异。在模型推理阶段,采用NMS进行检测框的冗余过滤,由于无法知道真实的目标框位置,所以没法用CIoU来做,在YoloV4中采用DIoU IoU的演变: ????????IoU -> GIoU -> DIoU -> CIoU 训练目标target构造: ????????同YoloV2。 Scaled-YoloV4 Yolov5: YoloX YoloP 备注:以上内容,部分来自于网络,如有侵权,请联系删除。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 12:56:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |