目标检测-One Stage-YOLOv2

文章目录

  • 前言
  • 一、YOLOv2的网络结构和流程
  • 二、YOLOv2的创新点
    • 预处理
    • 网络结构
    • 训练
  • 总结


前言

根据前文目标检测-One Stage-YOLOv1可以看出YOLOv1的主要缺点是:

  • 和Fast-CNN相比,速度快,但精度下降。(边框回归不加限制)

YOLOv2提出了一些改进策略,如anchor-based等


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

一、YOLOv2的网络结构和流程

  1. 将影像输入卷积网络(DarkNet-19+残差连接)得到13 × 13特征图
  2. 引入anchor机制,与SSD不同的是,每个特征点对应5个anchor,且anchor的大小是由VOC 和 COCO数据集聚类得到的

ps:由于变为anchor-based算法,预测框由YOLOv1的98个变为845(13 × 13 × 5)个,mAP由69.5略微降到69.2,召回率却由81大大提升至88

  1. 将上一步得到的anchor输入分类和边框回归器
  2. 使用非极大值抑制NMS去除冗余窗口

下图可以比较清晰的看出YOLOv2的主要结构
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
其中,DarkNet-19的结构如下:
在这里插入图片描述
更详细的参数如下:
在这里插入图片描述

ps:上图中可以看出,残差连接时要保证两个特征图w,h的一致(从通道上进行拼接),这里通过PassThrough层将之前层的特征图进行了w,h的缩放,以和更深层特征图保持一致,PassThrough层的基本原理如下图:
在这里插入图片描述
之所以不用池化下采样,是想通过PassThrough保留featureMap的更多细节

二、YOLOv2的创新点

预处理

  • 使用了标准的数据增强方法:随机裁剪、旋转(random crops, rotations);色调、饱和度(hue, saturation);曝光偏移(exposure shifts)

网络结构

  1. backbone:改为Darknet-19,Darknet-19 的性能基本与 Resnet34 差不多,使得网络更轻量更快
  2. 引入了BN(Batch normalization),其优点如下:
    • 加快收敛;
    • 改善梯度,远离饱和区;
    • 允许大的学习率;
    • 对初始化不敏感;
    • 相当于正则化,使得有BN层的输入都有相近的分布;
    • 有了BN之后,就可以不用dropout了,或者说不能像原来一样用dropout了,这会导致训练和测试的方差偏移。
  3. 加入了anchor机制
  4. 细粒度特征(Fine-Grained Features):将最后一个最大池化层前的特征图经过Pass Through与后面的卷积特征图进行合并,Pass Through就是四分后再concat

训练

  1. 高分辨率的预训练,采用了448的输入进行微调,以便网络更好地处理更高分辨率的输入
  2. 多尺度训练:Yolov2每10个batches就会随机换一下输入的尺度({320, 352, …, 608}),使得模型泛化于不同尺度的输入,这得益于adaptive pooling层。高分辨率的输入速度慢,但是对小目标的检测效果要好很多,低分辨率的输入速度快
  3. loss略微改动:(真阳样本的定位误差、confidence误差、分类误差)、预测框和anchor定位误差、负样本置信度误差,且5个子loss均有一个权重超参数
  4. 预测输入从448变为416,目的是让得到的feature map的size是一个奇数。这样的好处是,许多图片的中心点都是某个物体的中心,奇数保证中间是一个格子,而不是偶数那样四个格子抢占中心点
  5. 尝试了一种分类和检测的联合训练策略,类别数据集用于分类训练,检测数据集用于边框回归和分类,同时为了统一COCO数据集和ImageNet数据集类别,提出了一种层级分类方法

总结

通过网络结构和改进和一些tricks,YOLOv2精度大大提升,同时通过多尺度训练,使得相同的YOLOv2模型可以在不同的大小下运行,从而轻松实现速度和精度之间的折衷。

  • 在67 FPS的速度下,YOLOv2在VOC 2007上达到76.8mAP。
  • 在40 FPS的速度下,YOLOv2在VOC 2007上达到78.6mAP,性能优于当时的SOTA,如SSD和Faster RCNN ResNet,同时运行速度更快。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/323318.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android studio SurefaceView 视频播放器应用设计

一、新建Empty Activity项目: 二、xml布局文件设计: 添加SurfaceView控件 <SurfaceViewandroid:id="@+id/surfaceView"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_constraintBottom_toBottomOf…

工业城市的废水监控系统

前言 很多工业城市的废水排放量较大&#xff0c;已造成城市地表水的严重污染。各城市的环境监测中心站肩负着对城市地表环境水质及污染源排放废水的监测工作&#xff0c;很多城市相继形成了以市站为网头&#xff0c;与区站、行业站构成一体的废水监测网。 为提高水质监测能力建…

SwiftUI 打造一款收缩自如的 HStack(三):“魔镜魔镜,我爱你”

概览 在前两篇博文中,我们分别讨论了用 HStack 和 对齐+ZStack 来实现收缩自如“HStack”的方法。 虽然看起来“各有千秋”,但实际上它们都拖着一坨厚重的 datas,这不禁为其“减分不少”。 而从上图演示中可以看到:我们完全摆脱了 datas 数据的桎梏,现在我们可以按照轻松…

基于Java学生成绩管理系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

flutter 五:MaterialApp

MaterialApp const MaterialApp({super.key,this.navigatorKey, //导航键this.scaffoldMessengerKey, //scaffold管理this.home, //首页Map<String, WidgetBuilder> this.routes const <String, WidgetBuilder>{}, //路由this.initialRoute, //初始路由th…

vivado non-project

https://www.xilinx.com/video/hardware/using-the-non-project-batch-flow.html --video https://cloud.tencent.com/developer/article/1169476 bd related run_my_design.tcl 交互模式 start_gui stop_gui

Python中User-Agent的重要作用及实际应用

摘要&#xff1a; User-Agent是HTTP协议中的一个重要字段&#xff0c;用于标识发送请求的客户端信息。在Python中&#xff0c;User-Agent的作用至关重要&#xff0c;它可以影响网络请求的结果和服务器端的响应。将介绍User-Agent在Python中的重要作用&#xff0c;并结合实际案…

链表--141.环形链表/easy C级理解

141.环形链表 1、题目2、题目分析3、解题步骤4、复杂度最优解代码示例5、抽象与扩展 1、题目 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链…

BUG汇总

20240103 通用&#xff0c;驼峰命名法&#xff0c;mybatis。 mybatis入门程序中&#xff0c; // 获取对象的顺序为&#xff1a;SqlSessionFactoryBuild-》SqlSessionFactory-》SqlSessionSqlSessionFactoryBuilder sqlSessionFactoryBuilder new SqlSessionFactoryBuilder();I…

Python 深度学习框架之keras库详解

概要 深度学习已经成为解决各种复杂问题的有力工具&#xff0c;而 Python Keras 是一个流行的深度学习框架&#xff0c;它提供了简单而强大的工具来构建和训练神经网络。无论您是深度学习新手还是经验丰富的研究人员&#xff0c;Keras 都可以满足您的需求。本文将深入介绍 Pyt…

GROUP_CONCAT报错解决

有如下表 其中awardee和awardee_unit都是保存的json类型的字符串, awardee是多个人员id, awardee_unit是部门的全路径 查询时要注意转换 需要将name拼接起来合并成一行,直接 GROUP_CONCAT 会报错 百度的大部分答案是修改数据库配置去掉严格模式,如果不方便修改数据库可以这样…

【CMake】3.单项目单模块添加第三方依赖包示例工程

CMake 示例工程代码 https://github.com/LABELNET/cmake-simple 单项目单模块 - 添加第三方依赖示例工程 https://github.com/LABELNET/cmake-simple/tree/main/simple-deps 1. 单模块工程 第三方依赖 CMake 单模块工程&#xff0c;这是一个示例工程 simple-deps , 项目…