0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个简单且高效的目标检测算法,该算法降低了训练门槛

新机器视觉 来源:知乎 作者:David 2020-09-24 12:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

摘要:

随着深度学习的发展,目前已经出现了很多算法(或者训练技巧,tricks)来提升神经网络的准确率。在实际测试中评价一个算法的好坏优劣主要看两点,一是能否在大规模的数据集中起作用(work),二是是否有理论依据。一些算法仅能在某些特定的模型上或者某类特定的问题上运行,亦或是适用于一些小规模的数据集。然而,还有一些算法,例如batch normalization(BN)或者残差连接(residual-connections)已经被用在了不同的模型,任务以及不同的数据集中,已经被充分的证明了这些算法的普适性,是一个general的算法。我们假设这样的general(or universal)的算法包括Weighted-residual-connection(WRC),cross-stage-partial-connections(SCP),cross mini-batch Normalization(CmBN),self-adversarial-training(SAT)以及mish-activation。此外,我们还加了一些其余的tricks,包括Mosaic data augmentation,DropBlock regularization,CIoU loss,设计了一个YOLO-V4,并且在MS coco数据集中取得了新的state-of-the-art的结果:在Tesla V100显卡能达到43.5% AP(65.7% AP)的精度,且达到~65FPS的速度。目前代码已经开源:

Introduction

Yolo-V4的主要目的在于设计一个能够应用于实际工作环境中的快速目标检测系统,且能够被并行优化,并没有很刻意的去追求理论上的低计算量(BFLOP)。同时,Yolo-V4的作者希望算法能够很轻易的被训练,也就是说拥有一块常规了GTX-2080ti或者Titan-XP GPU就能够训练Yolo-V4, 同时能够得到一个较好的结果(Yolo-V4 结果如上图)。整个introduction可以总结为以下几点:

研究设计了一个简单且高效的目标检测算法,该算法降低了训练门槛,使得普通人员在拥有一块1080TI或者2080TI的情况下就能够训练一个super fast and accurate 的目标检测器

在训练过程中,验证了最新的Bag-of-Freebies和Bag-of-Specials对Yolo-V4的影响

简化以及优化了一些最新提出的算法,包括(CBN,PAN,SAM),从而使Yolo-V4能够在一块GPU上就可以训练起来。

Related work

首先解释一下相关的名词:

Input:算法的输入,包括整个图像,一个patch,或者是image pyramid

Backbone:可以理解为是提取图像特征的部分,由于图像中的浅层特征(low-level)是比较类似的,例如提取边缘,颜色,纹理这些。因此这部分可以很好的借鉴一些设计好并且已经训练好的网络,例如(VGG16,19,ResNet-50, ResNeXt-101, Darknet53), 同时还有一些轻量级的backbone(MobilenetV1,2,3 ShuffleNet1,2)。

Neck:这部分我的理解是特征增强模块,前面的backbone已经提取到了一些相关的浅层特征,由这部分对backbone提取到的浅层特征(low-level feature)进行加工,增强,从而使得模型学到的特征是我想要的特征。这部分典型的有(SPP,ASPP in deeplabV3+,RFB,SAM),还有一些(FPN, PAN, NAS-FPN, BiFPN, ASFF, SFAM)。

Head:检测头。这部分就到了算法最关键的部分,就是来输出你想要的结果,例如想得到一个heatmap,(如在centernet中),那就增加一些反卷积层来一层一层反卷积回去。如果想直接得到bbox,那就可以接conv来输出结果,例如Yolo,ssd这些。亦或是想输出多任务(mask-RCNN)那就输出三个head:classification,regression,segmentation(就是mask那部分)。

因此,一个检测算法可以理解为:

Object Detection = Backbone + Neck + Head

2.1. Bag of freebies

什么叫Bag of freebies?字面上的意思就是免费赠品。在目标检测中是指:用一些比较有用的训练技巧来训练模型,从而使得模型取得更好的准确率但是不增加模型的复杂度,也就不增加推理(inference)是的计算量(cost)。在目标检测中,提到bag of freebies,首先会想到的 就是Data augmentation。

2.1.1 : Data augmentation 的目的在于增加训练样本的多样性,使得检测模型具有高的鲁棒性。常见的不能再常见的数据增强方式包括两个方面:几何增强以及色彩增强。

几何增强包括:随机翻转(水平翻转较多,垂直翻转较少),随机裁剪(crop),拉伸,以及旋转。

色彩增强包括:对比度增强,亮度增强,以及较为关键的HSV空间增强。

上述说的色彩以及几何增强都是pixel-wise 的调整。此外还有一些数据增强方法被用来解决目标遮挡及不足的问题。

在图像中随机裁剪矩形区域,并用0来填充(random erase和CutOut算法)

随机裁剪多个矩形区域(hide-and-seek, grid mask)

上述算法是在图像中裁剪矩形区域并填充0,那么算法在heatmap上裁剪并填充的叫做(DropOut,DropConnect, DropBlock)

此外还有一个重要的data augmentation算法叫做MIX-UP。Mix-up在分类任务中,将两个图像按照不同的比例相加,例如A*0.1+B*0.9=C,那么C的label就是[0.1A, 0.9B]。在目标检测中的做法就是将一些框相加,这些label中就多了一些不同置信度的框。

还有一类是style-transfer GAN做数据增强,例如在做街景分割和目标检测的时候,将GTA-5的数据做一个style-transfer,扩充一些数据集。不过更多的是用在了Domain Adaptation上。

2.1.2 : 不同于上述说的data augmentation,第二类方法是要解决数据不均衡问题(imbalance problems in object detection),数据不均衡问题在目标检测中是一个特别难的问题,Yolo-V4中没有细说,但是最近的一篇PAMI综述论文,用了30几页详细介绍了这个问题,论文可以见我专栏的第一篇文章。下面我简单说一下:数据不均衡包括了两种一种是训练的背景和我要识别的物体之间的不均衡,例如在two-stage的方法中,首先在RPN阶段会生成了很多个ROI,这里面有太多的背景了,有用的框会很少。还有一类不均衡是类别之间的不均衡,例如在COCO数据集中一些常见的物体例如人就会很多,不常见的就会比较少,这样类别之间还有不平衡,这就涉及到另外一个问题了,叫做长尾分布(long-tailed Data),也是比较棘手的问题。这里面比较经典的算法就是在two-stage 中使用hard negative example mining or online head example mining (OHEM)。还有一个比较经典的算法就是Focal-loss,来处理数据不均衡的问题。还有一个trick就是关于One-hot编码之后label没有关联,针对这个问题进行label-smooth。

2.1.3: 第三个bag of freebies就是在loss function上进行改动,之前常用的计算bbox的loss 使用MSE,现在改为了计算IOU之间的loss,还有一个叫做GIoU loss。这里面有一个比较经典的算法就是在Mask-RCNN上改动的MASK SCoring RCNN中,这部分的逻辑是这样的:在选择ROI时,如果按照每个ROI的score来排序筛选ROI,会出现一个问题就是,置信度高的ROI并不一定BBOX的位置就准,后来作者尝试了使用IoU来筛选ROI,发现效果要好。

2.2. Bag of specials

什么叫做bag of specials:就是指一些plugin modules(例如特征增强模型,或者一些后处理),这部分增加的计算量(cost)很少,但是能有效地增加物体检测的准确率,我们将这部分称之为Bag of specials。这部分插件模块能够增强网络模型的一些属性,例如增大感受域(ASFF,ASPP,RFB这些模块),引入注意力机制(有两种一种是spatial attention,另外一种是channel attention),增加特征集成能力(FPN,ASFF,BiFPN)。后处理算法是指用一些算法来筛选模型预测出来的结果

2.2.1 增大感受域

SPP:He提出了一个比较经典的算法,当时解决了一个问题就是我在测试的时候,输入尺寸可以与训练的时候 不一样。但是当网络中有FC的时候,尺寸必须是固定的,这时候,SPP作用就体现出来了,按照比例划分pooling,最后输出的结果就是一致的了。

ASPP:我记得是用在了DeepLabV3系列中,与SPP不同前面加了Atrous or dilated ,在Pooling中加入了dilated ratio。

RFB:就是说是在同一个featuremap下引入不同dilated ration的空洞卷积,这样提取到了不同感受野的特征,最后进行融合。

2.2.2 引入注意力机制

Channel Attention:最经典的就是SEnet(Squeeze-and-Excitation),这个算法一开始获得了imagenet分类任务中的冠军,他的原理是这样的,在featuremap层中同时引入一个1X1XC的weights,这样对每个channel上的特征加入不同的权重,这样提高特征学习能力,注意:SE module是在channel 这个维度上进行加入权重。后来又有一篇CVPR用SE module做了分割任务,从侧面证明了SE module很好用。

Spatial Attention Module:从字面意思上来理解,就是在HW维度上加入attention,上述是在Channel维度上加入Attention。

Channel+Spatial:一个featuremap的维度:NCHW,N:batch size,C:channel,H:height,W:weight。Channel attention 和spatial attention 是从两个不同的方法对feature进行增强,接着又有一篇paper对二者进行融合,channel attention+spatial attention

2.2.3 特征融合or特征集成

Skip connection:用在encoder-decoder中比较多,例如最经典的Unet,融入了low-level和high-level的信息,在目标检测中主要用在了类似于pose这一类的检测任务中,例如DLA,Hourglass,以及最近的CenterNet

hyper-column:最经典的就要属于InceptionV1-4结构了,使用不同的kernel-size的convolution来集成特征。

FPN,ASFF,BiFPN:在我看来都属于一类,属于将不同stage下不同scale的特征进行融合,只是连接融合的方式不一样,FPN是最经典的,efficientdet中的BiFPN连接的最密集。

2.2.4 激活函数

一个好的激活函数能够使得梯度传播的更高效,并且不会占用额外的计算资源。常见的激活函数有以下:(由于我对激活函数没有研究过,所以这边就不画蛇添足了,直接把论文中的摘录下来)

ReLU

LRelu, PReLU, SELU,ReLu6, Swish, hard-Swish Mish

2.2.5 后处理

经典的后处理包含了NMS,soft NMS,DIoU NMS

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4829

    浏览量

    106880
  • gpu
    gpu
    +关注

    关注

    28

    文章

    5110

    浏览量

    134511
  • 算法
    +关注

    关注

    23

    文章

    4762

    浏览量

    97242

原文标题:YOLO-V4解读:速度与精度的完美结合[已开源]

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Melexis推出针对FIR阵列的免费版人员检测算法

    隐私方面更具优势。该算法针对天花板安装式传感器在有限空间内的应用场景进行专门优化,有助于工程师显著加速开发进程,并将基于红外光谱的先进人员检测技术无缝集成至下代智能建筑应用中。
    的头像 发表于 12-15 17:30 71次阅读

    基于级联分类器的人脸检测基本原理

    。这里需要指出的点是,可能会存在多个检测结果为阳性的窗口,鉴于此类情况,我们会在最后进行次聚类,把多个阳性窗口合并成为
    发表于 10-30 06:14

    有哪些常见的AI算法可以用于装置数据的异常检测

    (如边缘 / 云端)。以下按 算法类型分类 ,详细介绍常见 AI 算法的原理、适用场景、优缺点及装置数据适配性: 、无监督式异常检测算法(主流选择) 装置数据多为 无标注数据 (仅记
    的头像 发表于 09-18 09:27 450次阅读
    有哪些常见的AI<b class='flag-5'>算法</b>可以用于装置数据的异常<b class='flag-5'>检测</b>?

    基于FPGA的SSD目标检测算法设计

    随着人工智能的发展,神经网络正被逐步应用于智能安防、自动驾驶、医疗等各行各业。目标识别作为人工智能的项重要应用也拥有着巨大的前景,随着深度学习的普及和框架的成熟,卷积神经网络模型的识别精度越来越高
    的头像 发表于 07-10 11:12 2252次阅读
    基于FPGA的SSD<b class='flag-5'>目标</b><b class='flag-5'>检测算法</b>设计

    基于RK3576开发板的车辆检测算法

    车辆检测种基于深度学习的对人进行检测定位的目标检测,能广泛的用于园区管理、交通分析等多种场景,是违停识别、堵车识别、车流统计等多种
    的头像 发表于 05-08 17:34 1288次阅读
    基于RK3576开发板的车辆<b class='flag-5'>检测算法</b>

    基于RK3576开发板的安全帽检测算法

    安全帽佩戴检测是工地、生产安全、安防的重中之重,但人为主观检测的方式时效性差且不能全程监控。AI技术的日渐成熟催生了安全帽佩戴检测方案,成为了监督佩戴安全帽的利器。本安全帽检测算法
    的头像 发表于 05-08 16:59 1879次阅读
    基于RK3576开发板的安全帽<b class='flag-5'>检测算法</b>

    基于RK3576开发板的人员检测算法

    展示了RK3576开发板的人员检测算法例程及API说明
    的头像 发表于 05-07 17:33 670次阅读
    基于RK3576开发板的人员<b class='flag-5'>检测算法</b>

    基于RV1126开发板的车辆检测算法开发

    车辆检测种基于深度学习的对人进行检测定位的目标检测,能广泛的用于园区管理、交通分析等多种场景,是违停识别、堵车识别、车流统计等多种
    的头像 发表于 04-14 16:00 630次阅读
    基于RV1126开发板的车辆<b class='flag-5'>检测算法</b>开发

    基于RV1126开发板的安全帽检测算法开发

    安全帽佩戴检测是工地、生产安全、安防的重中之重,但人为主观检测的方式时效性差且不能全程监控。AI技术的日渐成熟催生了安全帽佩戴检测方案,成为了监督佩戴安全帽的利器。本安全帽检测算法
    的头像 发表于 04-14 15:10 672次阅读
    基于RV1126开发板的安全帽<b class='flag-5'>检测算法</b>开发

    基于RV1126开发板的人脸检测算法开发

    在RV1126上开发人脸检测算法组件
    的头像 发表于 04-14 10:19 757次阅读
    基于RV1126开发板的人脸<b class='flag-5'>检测算法</b>开发

    轩辕智驾红外目标检测算法在汽车领域的应用

    在 AI 技术蓬勃发展的当下,目标检测算法取得了重大突破,其中红外目标检测算法更是在汽车行业掀起了波澜壮阔的变革,从根本上重塑着汽车的安全性能、驾驶体验与产业生态。
    的头像 发表于 03-27 15:55 764次阅读

    睿创微纳推出新目标检测算法

    随着AI技术的发展,目标检测算法也迎来重大突破。睿创微纳作为热成像领军者,凭借深厚的技术积累与创新能力,结合AI技术推出新目标检测算法
    的头像 发表于 03-20 13:49 818次阅读

    SVPWM的原理及法则推导和控制算法详解

    ,而且使直流母线电压的利用率有了很大提高,更易于实现数字化。下面将对该算法进行详细分析阐述。 文章过长,请点击下方可查阅*附件:SVPWM的原理及法则推导和控制算法详解.pdf
    发表于 03-14 14:51

    让大模型训练高效,奇异摩尔用互联创新方案定义下代AI计算

      电子发烧友网报道(文/吴子鹏)近段时间以来,DeepSeek现象级爆火引发产业对大规模数据中心建设的思考和争议。在训练端,DeepSeek以开源模型通过算法优化(如稀疏计算、动态架构)
    的头像 发表于 02-18 09:19 1952次阅读
    让大模型<b class='flag-5'>训练</b>更<b class='flag-5'>高效</b>,奇异摩尔用互联创新方案定义下<b class='flag-5'>一</b>代AI计算

    AI模型部署边缘设备的奇妙之旅:目标检测模型

    广泛的应用,然而,在移动端工业领域的实际应用中,对目标检测算法提出了更为苛刻的要求:需要实现高速度、高精度、小体积、易部署等特性。为应对这挑战,百度于2021年末发布了篇关于移动端
    发表于 12-19 14:33