当前位置: 首页 > article >正文

深度学习:YOLO目标检测和YOLO-V1算法损失函数的计算

简介

YOLO(You Only Look Once)是一种基于深度学习的目标检测算法,它的核心思想是将目标检测问题转化为一个回归问题,通过一个神经网络直接预测目标的类别和位置。

YOLO算法将输入图像分成SxS个网格,每个网格负责预测该网格内是否存在目标以及目标的类别和位置信息。此外,YOLO算法还采用了多尺度特征融合的技术,使得算法能够在不同尺度下对目标进行检测。 相比于传统的目标检测算法,如R-CNN、Fast R-CNN和Faster R-CNN等,YOLO算法具有更快的检测速度和更高的准确率。这得益于其端到端训练方式和单阶段检测的特性,使其可以同时处理分类和定位任务,避免了传统方法中的多阶段处理过程。因此,YOLO算法广泛应用于实时目标检测和自动驾驶等领域。

one-stage的优缺点:

优点:识别速度非常快,适合做实时检测任务

缺点:正确率相比较低

two-stage的优缺点:

优点:正确率比较高,识别效果理想

缺点:识别速度比较慢,通常达到5FPS

两阶段目标检测器是一种先生成候选框,然后对候选框进行分类和回归的检测方法。

这种方法主要包括两个阶段:

第一阶段:生成候选框。该算法从输入图像中生成多个候选框。每个候选框都会经过一个CNN模型进行特征提取,然后通过分类器进行过滤,保留与目标物体更相似的候选框。

第二阶段:在保留的候选框上进行精细的分类和回归。这个阶段通常使用另一个CNN模型或类似SVM的分类器来进行分类和回归。对于每个候选框,可能需要预测物体的类别、位置和大小等。 代表性的两阶段目标检测器包括R-CNN系列,以及其改进版本Fast R-CNN、Faster R-CNN和Mask R-CNN等。

Map指标

根据不同的阈值,绘制出召回率和精确率的曲线,将曲线以下的面积作为MAP值。当MAP值越大,则表示指标越好 。

网络架构

网络结构借鉴了 GoogLeNet 。24个卷积层,2个全链接层。(用1×1 reduction layers 紧跟 3×3 convolutional layers 取代Goolenet的 inception modules )

7×7意味着7×7个grid cell,30表示每个grid cell包含30个信息,其中2个预测框,每个预测框包含5个信息(x y w h c),分别为中心点位置坐标,宽高以及置信度,剩下20个是针对数据集的20个种类的预测概率。其中坐标的x,y用对应网格的归一化到0-1之间,w,h用图像的width和height归一化到0-1之间。

Yolo系列 v1 损失函数

YOLO-V1算法最后输出的检测结果为7x7x30的形式,其中30个值分别包括两个候选框的位置和有无包含物体的置信度以及网格中包含20个物体类别的概率。那么YOLO的损失就包括三部分:位置误差,confidence误差,分类误差。 

i为第几个分格,j为预选框(总共两种)

i=30,j=1(1代表黄色的框,2代表蓝色的框)

位置误差

x,y为中心点坐标,w,h为预选框的长和宽

i=30时候为1,其他时候为0

i=30,j=1时候为1,其他时候为0

i=30,j=1时候为0,其他时候为1

confidence误差

置信度

c=Pr(Object)*lou

边界框内是否存在物体(Pr(Object)),以及边界框与真实物体的匹配程度(IOU)

分类误差

非极大值抑制(Non-Maximum Suppression,NMS)

目标检测中常用的一种技术,其主要作用是去除可能最小的的检测框,只保留最有可能包含目标物体的框,从而提高检测的准确性和效率。

YOLO V1存在的优缺点:

优点

  1. 实时性
  2. 网络结构简单
  3. 多对象检测
  4. 泛化能力

缺点

  1. 定位精度
  2. 召回率低
  3. 对小目标检测不佳
  4. 每个cell只能生成有限的框


http://www.kler.cn/news/359331.html

相关文章:

  • 030 elasticsearch查询、聚合
  • 【Java】多线程-thread类的常用方法和生命周期【主线学习笔记】
  • Go语言Gin框架的常规配置和查询数据返回json示例
  • 以openai的gpt3 5为例的大模型流式输出实现(原始、Sanic、Flask)- 附免费的key
  • 内网穿透:如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)
  • 是德E5063矢量网络分析仪使用(一)单端口校准
  • 数据库运维实操优质文章文档分享(含Oracle、MySQL等) | 2024年9月刊
  • champ模型部署指南
  • QT IEEE754 16进制浮点数据转成10进制
  • JavaScript 中的防抖和节流(简易版)
  • 【人工智能-初级】第6章 决策树和随机森林:浅显易懂的介绍及Python实践
  • 信雅纳Chimera 100G网络损伤仪助力Parallel Wireless开展5G RAN无线前传网络的损伤模拟
  • 【论文学习与撰写】论文里的Mathtype公式复制粘贴,跨文档复制后错码/错位问题的解决
  • 设计模式,面试级别的详解(持续更新中)
  • EMC VNX2代产品base module的更换
  • 从0到1构建webpack多页面多环境应用
  • 前端求职简历-待补充
  • 代码随想录算法训练营第六十二天| prim算法,kruskal算法
  • Shell编程-函数
  • Git 总结