YOLOV4各个创新功能模块技术分析(一)
YOLOV4各个创新功能模块技术分析(一)
简 介
yolov4论文:YOLOv4: Optimal Speed and Accuracy of Object Detection
arxiv:https://arxiv.org/abs/2004.10934
github源码:https://github.com/AlexeyAB/darknet
论文摘要
有大量的特征被认为可以提高卷积神经网络(CNN)的精度。需要在大型数据集上对这些特征的组合进行实际测试,并对结果进行理论证明。某些功能只在某些模型上运行,某些问题只在某些模型上运行,或只在小规模数据集上运行;而某些功能(如批处理规范化和剩余连接)适用于大多数模型、任务和数据集。假设这些通用特征包括加权剩余连接(WRC)、跨阶段部分连接(CSP)、跨小批量规范化(CmBN)、自对抗训练(SAT)和Mish激活。使用了新功能:WRC、CSP、CmBN、SAT、误激活、马赛克数据增强、CmBN、DropBlock正则化和CIoU丢失,并将其中一些功能结合起来,以达到最新的结果:43.5%AP(65.7%AP50)的MS
COCO数据集,在Tesla V100上以约65 FPS的实时速度。
YOLOV4的发布,可以想象到大家的激动,但是论文其实是一个结合了大量前人研究技术,加以组合并进行适当创新的高水平论文,实现了速度和精度的完美平衡。很多yolov4的分析文章都会说其中应用了哪些技术?本文的目的希望通过YOLOV4提到的各种新技术进行分析,明白YOLOV4后面的功臣算法。
文中将前人的工作主要分为Bag
of freebies和Bag of specials,前者是指不会显著影响模型测试速度和模型复杂度的技巧,主要就是数据增强操作,对应的Bag of specials就是会稍微增加模型复杂度和速度的技巧,如果不大幅增加复杂度且精度有明显提升,那也是不错的技巧。本文按照论文讲的顺序进行分析。由于每篇论文其实内容非常多,主要是分析思想和一些核心细节。
本文技术:random erasing、cutout、hide-and-seek、grid mask、Adversarial Erasing、mixup、cutmix、mosaic、Stylized-ImageNet、label smooth、dropout和dropblock。
一.数据增强相关-Random
erasing data augmentation
论文名称:Random erasing data
augmentation
论文地址:https://arxiv.org/pdf/1708.04896v2.pdf
github: https://github.com/zhunzhong07/Random-Erasing
论文摘要
本文介绍了一种用于卷积神经网络(CNN)训练的新的数据增强方法&随机删除法。在训练中,随机擦除随机选择图像中的矩形区域,并使用随机值擦除其像素。在这个过程中,生成了不同遮挡程度的训练图像,这降低了过度遮挡的风险,使模型对遮挡具有鲁棒性。随机擦除无需参数学习,易于实现,可与大多数基于CNN的识别模型集成。尽管很简单,但随机删除对常见的数据增强技术(如随机裁剪和浮动)来说是一种补充,与强大的基线相比,图像分类、对象检测和人员识别都有一致的改进。
随机擦除增强,非常容易理解。作者提出的目的主要是模拟遮挡,从而提高模型泛化能力,这种操作其实非常make sense,因为把物体遮挡一部分后依然能够分类正确,那么肯定会迫使网络利用局部未遮挡的数据进行识别,加大了训练难度,一定程度会提高泛化能力。其也可以被视为add noise的一种,并且与随机裁剪、随机水平翻转具有一定的互补性,综合应用他们,可以取得更好的模型表现,尤其是对噪声和遮挡具有更好的鲁棒性。具体操作就是:随机选择一个区域,然后采用随机值进行覆盖,模拟遮挡场景。
在细节上,可以通过参数控制擦除的面积比例和宽高比,如果随机到指定数目还无法满足设置条件,则强制返回。
一些可视化效果如下:
对于目标检测,作者还实现了3种做法,如下图所示(然而打开开源代码,发现只实现了分类的随机擦除而已,尴尬)。
当然随机擦除可以和其他数据增强联合使用,如下所示。
torchvision已经实现了:
https://pytorch.org/docs/master/_modules/torchvision/transforms/transforms.html#RandomErasing
注意:torchvision的实现仅仅针对分类而言,如果想用于检测,还需要自己改造。调用如下所示:
torchvision.transforms.RandomErasing(p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=0, inplace=False)
二.数据增强相关-Cutout
论文名称:Improved Regularization of Convolutional Neural Networks with Cutout
论文地址:https://arxiv.org/abs/1708.04552v2
github: https://github.com/uoguelph-mlrg/Cutout
论文摘要
卷积神经网络能够学习强大的表示空间,这是处理复杂学习任务所必需的。然而,由于捕捉这些表示所需的模型容量,往往容易过度拟合,因此需要适当的正则化才能很好地推广。本文证明了在训练过程中随机屏蔽输入平方区域的简单正则化技术(称之为截断)可以提高卷积神经网络的鲁棒性和整体性能。这种方法不仅非常容易实现,而且还证明它可以与现有的数据增强形式和其他正则化方法结合使用,以进一步提高模型性能。将此方法应用于CIFAR-10、CIFAR-100和SVHN数据集上的当前最新体系结构,得到了新的最新结果,测试误差分别为2.56%、15.20%和1.30%。
出发点和随机擦除一样,也是模拟遮挡,目的是提高泛化能力,实现上比random erasing简单,随机选择一个固定大小的正方形区域,然后采用全0填充就OK了,当然为了避免填充0值对训练的影响,应该要对数据进行中心归一化操作,norm到0。
本文和随机擦除几乎同时发表,难分高下(不同场景下谁好难说),区别在于在cutout中,擦除矩形区域存在一定概率不完全在原图像中的。而在Random Erasing中,擦除矩形区域一定在原图像内。Cutout变相的实现了任意大小的擦除,以及保留更多重要区域。
需要注意的是作者发现cutout区域的大小比形状重要,所以cutout只要是正方形就行,非常简单。具体操作是利用固定大小的矩形对图像进行遮挡,在矩形范围内,所有的值都被设置为0,或者其他纯色值。而且擦除矩形区域存在一定概率不完全在原图像中的(文中设置为50%)
论文中有一个细节可以看看:作者其实开发了一个早期做法,具体是:在训练的每个epoch过程中,保存每张图片对应的最大激活特征图(以resnet为例,可以是layer4层特征图),在下一个训练回合,对每张图片的最大激活图进行上采样到和原图一样大,然后使用阈值切分为二值图,盖在原图上再输入到cnn中进行训练,有点自适应的意味。但是有个小疑问:训练的时候不是有数据增强吗?下一个回合再用前一次增强后的数据有啥用?不太清楚作者的实现细节。如果是验证模式下进行到是可以。
这种做法效果蛮好的,但是最后发现这种方法和随机选一个区域遮挡效果差别不大,而且带来了额外的计算量,得不偿失,便舍去。就变成了现在的cutout了。
可能和任务有关吧,按照的理解,早期做法非常make sense,效果居然和cutout一样,比较奇怪。并且实际上考虑目标检测和语义分割,应该还需要具体考虑,不能照搬实现。
学习这类论文觉得最重要的是思想,能不能推广到不同领域上面?是否可以在训练中自适应改变?是否可以结合特征图联合操作?
三.数据增强相关-Hide-and-Seek
论文名称:Hide-and-Seek: A Data
Augmentation Technique for Weakly-Supervised Localization and Beyond
论文地址:https://arxiv.org/abs/1811.02545
github地址:https://github.com/kkanshul/Hide-and-Seek
论文摘要
提出了一种通用的数据增强技术Hide-and-Seek,它是对现有数据增强技术的补充,有利于实现各种视觉识别任务。其核心思想是在训练图像中随机地隐藏补丁,以迫使网络在隐藏最具鉴别能力的内容时寻找其他相关内容。本文方法只需要修改输入图像,并且可以与任何网络一起工作来提高其性能。在测试期间,不需要隐藏任何补丁。与现有的数据增强技术相比,Hide-and-Seek的主要优势在于它能够提高弱监督环境下的目标定位精度,因此利用这一任务来激励该方法。然而,Hide-and-Seek不仅与图像定位任务相关,而且可以推广到视频等其他形式的视觉输入,以及图像分类、时间动作定位、语义分割、情感识别、年龄/性别估计、人的再识别等识别任务。在这些视觉识别问题上,进行了大量的实验来展示隐藏和搜索的优势。
可以认为是random
earsing的推广。核心思想就是去掉一些区域,使得其他区域也可以识别出物体,增加特征可判别能力。和大部分细粒度论文思想类型,如下所示:
数据增强仅仅用于训练阶段,测试还是整图,不遮挡,如下所示。
做法是将图片切分为sxs个网格,每个网格采用一定概率进行遮挡,可以模拟出随机擦除和cutout效果。
至于隐藏值设置为何值,作者认为比较关键,因为可能会改变训练数据的分布。如果暴力填黑,认为会出现训练和测试数据分布不一致问题,可能不好,特别是对于第一层卷积而言。作者采用了一些理论计算,最后得到采用整个数据集的均值来填充造成的影响最小(如果采用均值,那么输入网络前,数据预处理减掉均值,那其实还是接近0)。
YOLOV4各个创新功能模块技术分析(一)的更多相关文章
- YOLOV4各个创新功能模块技术分析(三)
YOLOV4各个创新功能模块技术分析(三) 八.数据增强相关-Stylized-ImageNet 论文名称:ImageNet-trained cnns are biased towards text ...
- YOLOV4各个创新功能模块技术分析(二)
YOLOV4各个创新功能模块技术分析(二) 四.数据增强相关-GridMask Data Augmentation 论文名称:GridMask Data Augmentation 论文地址:https ...
- 从业务流程角度:分析TMS系统各个功能模块
TMS的主要功能是协调承运商.运营商.货主三种角色人员分工合作共同完成运输任务,并实现对运输任务的跟踪管理.本文将按照业务流程顺序对TMS系统各个功能模块进行分析说明. 一.业务描述 新零售的兴起及& ...
- NetSarang软件中nssock2.dll模块被植入恶意代码技术分析与防护方案
原文地址:http://blog.nsfocus.net/nssock2-dll-module-malicious-code-analysis-report/ NetSarang是一家提供安全连接解决 ...
- 视觉SLAM的主要功能模块分析
视觉SLAM的主要功能模块分析 一.基本概念 SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and L ...
- 大数据技术之_14_Oozie学习_Oozie 的简介+Oozie 的功能模块介绍+Oozie 的部署+Oozie 的使用案列
第1章 Oozie 的简介第2章 Oozie 的功能模块介绍2.1 模块2.2 常用节点第3章 Oozie 的部署3.1 部署 Hadoop(CDH版本的)3.1.1 解压缩 CDH 版本的 hado ...
- TOF与结构光技术分析
TOF与结构光技术分析 一.概述 结构光(Structuredlight),通常采用特定波长的不可见的激光作为光源,它发射出来的光带有编码信息,投射在物体上,通过一定算法来计算返回的编码图案的畸变来得 ...
- NB-IoT无线通信模块与Lora无线通信协议技术分析与前景展望
物联网的快速发展对无线通信技术提出了更高的要求,专为低带宽.低功耗.远距离.大量连接的物联网应用而设计的LPWAN(low-power Wide-Area Network,低功耗广域网)也快速兴起.物 ...
- 【技术分析】DowginCw病毒家族解析
作者:钱盾反诈实验室 0x1.背景 近期,钱盾反诈实验室通过钱盾恶意代码智能监测引擎感知并捕获一批恶意应用.由于该批病毒会联网加载"CWAPI"插件,故将其命名为"D ...
随机推荐
- WordPress伪静态规则设置
伪静态:即网站本身是动态网页如.php..asp..aspx等格式,而这类网页还带"?"加参数来读取数据库.开启伪静态后,动态网页即被转换重写成静态网页类型页面. WordPres ...
- Laravel结构生成器
简介 Laravel 的 Schema 类提供了一种与数据库无关的方式维护表.它和 Laravel 所支持的所有数据库都能很好的工作,并且提供了统一的接口. 创建和删除表 使用 Schema::cre ...
- 【我给面试官画饼】Python自动化测试面试题精讲
那今天给家分享的是一个面试主题. 就比如说我们的自动化测试,自动化如何去应对面试官,和面试官去聊一聊自动化的心得,自动化你现在去面试的时候是一个非常重要的一个关键点,所以如果你在这方面有一定的心得.那 ...
- 『政善治』Postman工具 — 7、Postman中保存请求(Collections集合)
目录 1.创建Collection 2.保存Request请求 3.查看保存的请求 4.Collection下还可以创建文件夹 5.补充:Postman中的变量 6.总结 1.创建Collection ...
- webpack 快速入门 系列 —— 初步认识 webpack
初步认识 webpack webpack 是一种构建工具 webpack 是构建工具中的一种. 所谓构建,就是将资源转成浏览器可以识别的.比如我们用 less.es6 写代码,浏览器不能识别 less ...
- windows性能计数器搜集方法
windows性能计数器搜集方法 PerfMon-Windows性能监视器是个好东西,可以辅助我们分析发生问题时间段服务器资源占用情况,但是部署性能计数器确实一个相当麻烦的事情,往往这种枯燥的事别人还 ...
- 安装MySQL后,需要调整的10个性能配置项
本文翻译自 Percona 官方博客,适用于 MySQL 5.6 及 5.7 版本. 作者:Stephane Combaudon 原文: https://www.percona.com/blog/20 ...
- 问渠那得清如许?为有源头活水来——对【近取Key】产品进行的深度测评与解析
在 Build To Show 的场景中,大家各显身手,用各种办法展现技术,的确很难在单一的维度上确定谁赢谁输.但是,在 Build To Win 的场景中,往往市场就是那么一块, 竞争对手占了 70 ...
- tigervnc报错
tigervnc报错
- Jira&Confluence服务器安装
1.Mysql安装 参考https://confluence.atlassian.com/doc/database-setup-for-mysql-128747.html 创建相应的数据库 CREAT ...