Paper Reading: YOLO9000: Better,Faster,Stronger

YOLOv2作为YOLOv1的升级版,引入了多尺度训练等新方法,在速度与精度间取得良好平衡。它实现了78.6mAP的精度,超越同类先进系统如Faster R-CNN和SSD,且保持实时性。此外,通过锚点框、高分辨率分类器等技术改进,显著提高了检测性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
论文地址:YOLOv2

论文概述

YOLOv2在YOLOv1的基础上进行改进,使用一种全新的多尺度的训练方法在变化的输入尺寸上进行训练,在运行速度和精度之间达到极好的平衡。在67FPS情况下,YOLOv2在VOC2007训练集上达到76.8mAP。在40FPS,YOLOv2在VOC2007上达到78.6mAP。在保持实时性的效果下,超过当前的最先进技术:使用ResNet的Faster R-CNN和SSD。同时本文也提出一种在目标检测和目标分类数据集上进行联合训练的分层树结构,使用该方法实现在coco检测数据集和ImageNet分类数据集上同时训练YOLO9000。该联合训练策略允许YOLO9000在没有标注的检测数据的情况下预测检测目标的类别。

改进之处

考虑到YOLOv1相关工作的误差来源主要有以下两点:

  • 定位误差
  • recall(召回率)太低

批归一化

使用该方法在mAP上获得2%的提升,同时有助于对模型进行正则化。使用批归一化,可以移除模型dropout环节而不导致过拟合。

高分辨率分类器

该策略主要使用完全的 448 × 448 448 \times 448 448×448分辨率的输入图片训练10轮神经网络,然后用训练得到的网络来执行检测任务,该策略提升4%的mAP。

使用anchor Boxes 进行卷积

借鉴Faster R-CNN的RPN网络使用Anchor Boxes的策略,来为每一个anchor box预测offset和置信度。由于预测层是卷积的,RPN网络在feature map的每个位置预测对应的offsets而不是坐标,这极大地简化问题也使得网络的学习更加简单。

细节
  • 移除YOLOv1的全卷积层,使用anchor box来预测边界框。将输入尺寸由448改为416,使其满足feature map只有唯一中心位置而不是有四个邻近中心。对416尺寸输入图像使用32的因子进行下采样能够得到 13 × 13 13 \times 13 13×13的feature map的输出。
  • 对每个anchor box预测其对应类别和可能目标,这一点和YOLOv1基本相同。
  • 使用anchor box可以改变YOLOv1在每幅图片上只预测98个边界框的缺陷,能够达到每幅图预测数超过一千。

维度聚类

在YOLO上使用anchor box的缺陷:边界框的维数是手动设置的,好的设置能是网络的训练更加简单,预测效果更好。
在这里插入图片描述
为克服上述手动调节的缺陷,本文采用k-means 聚类来自行选择最合适的anchor box 尺寸。考虑到使用欧氏距离计算预测精度大的边界框比小的产生更多错误,YOLOv2使用IOU评价指标进行距离度量:
在这里插入图片描述
下面对三种聚类策略和纯粹的anchor box计算各自的Avg IOU进行比较,结果如下:
在这里插入图片描述

直接坐标预测

在使用anchor boxes和YOLO结合时,会遇到第二个问题:模型不稳定,特别是在早期的网络迭代过程中。绝大多数不稳定因素都是由于预测box的坐标 ( x , y ) (x,y) (x,y)。为此本文对该方法进行改进,预测位置坐标和grid cell的相关关系。这样能够对真值进行限界,使其落入0-1之间,同时使用逻辑回归激活函数来约束预测值落入这个区间。
网络在输出的feature map上对每个cell预测5个边界框,同时在每个边界框上预测5个坐标参数 t x , t y , t w , t h , t o t_x,t_y,t_w,t_h,t_o tx,ty,tw,th,to。如果单元格偏离图像的左上角 ( c x , c y ) (c_x,c_y) (cx,cy),并且前面的边界框具有宽度和高度 p w , p h p_w,p_h pwph,则预测对应于:
在这里插入图片描述
对位置预测进行约束,参数的学习会更加简单,同时网络也更加稳定。使用维数聚类和直接预测边界框的中心位置在使用anchor boxes的基础上,在YOLOv1的基础上实现5%的提升。

细粒度的特征

经过修改的YOLOv1在 13 × 13 13\times13 13×13的feature map 上预测检测目标。Faster R-CNN和SSD都通过在不同的feature map上运行网络来得到一系列不同的分辨率。本文采用一种不同的方法,只需添加一个passthrough图层,它可以从26 x 26分辨率的早期图层中获取特征。
passthrough层将更高分辨率的特征和更低分辨率的特征通过在不同通道堆叠邻近特征联系起来。这提升了1%的执行效果。

多尺度训练

为了使YOLOv2在不同尺寸的图片上运行时具备鲁棒性,本文采取每进行10次迭代就改变网络输入尺寸的策略,而不固定输入图片的尺寸。考虑到下采样器的尺寸为32,选取下列32的倍数的尺寸: 320 , 352 , . . . , 608 {320,352,...,608} 320352...608
在这里插入图片描述

更进一步的实验

在这里插入图片描述

全新特征提取模块(darknet19)

Darknet-19(更轻量级的特征提取网络)
作者提出的Darknet-19网络包含19个卷积层和5个max pooling层,要比YOLOv1中使用的GoogleNet的参数要少。darknet-19的结构示意图如下。
在这里插入图片描述
最终展示一下YOLOv2在darknet-13下的整体网络结构图。
在这里插入图片描述

分级分类

主要是使用多标签模型合并ImageNet分类数据集和coco检测数据集。

关键词:WordNet 、 graph、a hierarchical tree
公式如下:
在这里插入图片描述
在这里插入图片描述

考虑到ImageNet是个更大的数据集,为了平衡数据集需要对coco数据集进行上采样,以使ImageNet数据集是coco数据集的4倍。

分层结构实际效果图如下:
在这里插入图片描述
在这里插入图片描述

资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高性价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特性,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的安全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在 Android 开发中,Fragment 是界面的一个模块化组件,可用于在 Activity 中灵活地添加、删除或替换。将 ListView 集成到 Fragment 中,能够实现数据的动态加载与列表形式展示,对于构建复杂且交互丰富的界面非常有帮助。本文将详细介绍如何在 Fragment 中使用 ListView。 首先,需要在 Fragment 的布局文件中添加 ListView 的 XML 定义。一个基本的 ListView 元素代码如下: 接着,创建适配器来填充 ListView 的数据。通常会使用 BaseAdapter 的子类,如 ArrayAdapter 或自定义适配器。例如,创建一个简单的 MyListAdapter,继承自 ArrayAdapter,并在构造函数中传入数据集: 在 Fragment 的 onCreateView 或 onActivityCreated 方法中,实例化 ListView 和适配器,并将适配器设置到 ListView 上: 为了提升用户体验,可以为 ListView 设置点击事件监听器: 性能优化也是关键。设置 ListView 的 android:cacheColorHint 属性可提升滚动流畅度。在 getView 方法中复用 convertView,可减少视图创建,提升性能。对于复杂需求,如异步加载数据,可使用 LoaderManager 和 CursorLoader,这能更好地管理数据加载,避免内存泄漏,支持数据变更时自动刷新。 总结来说,Fragment 中的 ListView 使用涉及布局设计、适配器创建与定制、数据绑定及事件监听。掌握这些步骤,可构建功能强大的应用。实际开发中,还需优化 ListView 性能,确保应用流畅运
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值