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

目标检测-One Stage-YOLOv1

文章目录

  • 前言
  • 一、YOLOv1的网络结构和流程
  • 二、YOLOv1的损失函数
  • 三、YOLOv1的创新点
  • 总结


前言

前文目标检测-Two Stage-Mask RCNN提到了Two Stage算法的局限性:

  • 速度上并不能满足实时的要求

因此出现了新的One Stage算法簇,YOLOv1是目标检测中One Stage方法的开山之作,不同于Two Stage需要先通过RPN网络得到候选区域的方法,YOLOv1将检测建模为一个回归问题,直接在整张图的特征图(Feature Map)上进行目标的定位和分类,因此速度比当时正红的Fast R-CNN快很多。而且,也正是因为YOLOv1看的是全局的信息,把背景误判成目标的错误率比只看候选区的Fast R-CNN低很多,但整体的准确率还是Fast R-CNN高。


提示:以下是本篇文章正文内容,下面内容可供参考

一、YOLOv1的网络结构和流程

  1. 首先将输入图像划分成7 * 7的网格
  2. 使用ImageNet数据集(224大小)对前20层卷积网络进行预训练
  3. 使用PASCAL VOC数据集(448大小)对完整的网络进行对象识别和定位的训练
  4. 对于每个网格都预测2个边框(bounding box),即预测98(7 * 7 * 2)个目标窗口,输出7 * 7 * 2 * 30 的张量。

ps:最后一维为30,包含每个预测框的分类与位置信息:20个类别的概率+2个边框的置信度+2*4(2个边框的位置,每个边框4个参数:x_center, y_center, width, height)

  1. 根据上一步预测出98个目标窗口,使用非极大值抑制NMS去除冗余窗口
    在这里插入图片描述

ps:YOLOv1的最后一层采用线性激活函数,其它层都是Leaky ReLU。训练中采用了drop out和数据增强(data augmentation)来防止过拟合。

二、YOLOv1的损失函数

在这里插入图片描述
可看出由5个部分组成:(真阳样本的中心定位误差、宽高误差、confidence误差),负样本confidence误差,正样本类别误差

  • 可以看到宽高误差先取了平方根,这样可以降低大小对象对差值敏感度的差异
  • 超参数 λ c o o r d = 5 , λ n o o b j = 0.5 \lambda_{coord}=5,\lambda_{noobj}=0.5 λcoord=5λnoobj=0.5,可看出真阳样本位置误差的权重较高,负样本置信度误差权重低

三、YOLOv1的创新点

  1. 去除候选区模块,直接将目标检测任务转换成一个简单的回归问题,大大加快了检测的速度(45fps-155fps)
  2. 由于每个网络预测目标窗口时使用的是全图信息(图片的全局特征),使得false positive比例大幅降低(充分的上下文信息),precision较高

总结

尽管YOLOv1速度提升很多,但是精度较低:

  • 每个格子只能预测一个物体,且仅利用了单尺度特征图,对较小对象和密集型的物体检测不友好
  • 7 * 7的粗糙网格内对目标框不加限制的回归预测,使得定位不够精准
  • 预训练时与实际训练时输入大小不一致,模型需要去适应这种分辨率的转换,会影响最终精度
http://www.lryc.cn/news/271727.html

相关文章:

  • PHP序列化总结3--反序列化的简单利用及案例分析
  • 大一C语言程序细节复盘2
  • 【QT】跨平台区分32位和64位的宏
  • 对抗AUTOMIXUP
  • AMEYA360:什么是热敏电阻 热敏电阻基础知识详解
  • RedisTemplate自增时保证原子性的lua脚本限制接口请求频率
  • 《通信基站绿色低碳服务评价技术要求》团体标准顺利通过技术审查
  • 堆排序(C语言版)
  • 实现区域地图散点图效果,vue+echart地图+散点图
  • Kubernetes 学习总结(41)—— 云原生容器网络详解
  • 多人协同开发git flow,创建初始化项目版本
  • 「Kafka」入门篇
  • PHP8的JIT(Just-In-Time)编译器是什么?
  • 【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数
  • Excel中部分sheet页隐藏并设置访问密码
  • 从零开始配置pwn环境:CTF PWN 做题环境
  • Vue3复习笔记
  • 【OpenCV】OpenCV:计算机视觉的强大工具库
  • spring-boot-autoconfigure误引入spring-boot-starter-data-jpa而导致数据源初始化异常
  • 工程(十六)——自己数据集跑Fast_livo
  • PostgreSQL数据库的json操作
  • gradio-osprey-demo
  • 从仿写持久层框架到MyBatis核心源码阅读
  • 浏览器常用基本操作之python3+selenium4自动化测试
  • 在MySQL中使用VARCHAR字段进行日期筛选
  • 微信小程序自定义步骤条效果
  • QT的信号与槽
  • Python 为UnityAndroid端自动化接入Tradplus广告SDK
  • Matplotlib基础
  • 上海东海职业技术学院低代码实训平台建设项目竞争性磋商公告