关于目标检测:无人机巡检场景小目标检测与量化加速部署方案详解

明天为大家带来的剖析是有对于如何利用基于 PP-YOLOE-SOD 的小指标检测计划,实现无人机巡检疾速精确地检测出小指标的利用案例~ 在社会活动和社会生产中,巡检是一个必不可少的环节。然而,传统的人工巡检形式存在效率低下、老本昂扬、平安危险大等问题,限度了巡检的成果和范畴。无人机巡检因其高效、灵便、平安的特点被越来越多的企业采纳。然而,如何在无人机巡检中疾速精确地检测出小指标,成为了该技术的重要难点之一。本文将介绍一种基于 PP-YOLOE-SOD 的小指标检测计划, 并分享应用 PaddleSlim 模型压缩工具和 OpenVINO 在 Intel x86平台上部署减速 PP-YOLOE+ 系列模型。 我的项目链接https://aistudio.baidu.com/aistudio/projectdetail/5036782 无人机视角指标物示意 场景难点数据量和品质有余在无人机巡检场景下,要获取大量的高质量数据是十分艰难的。此外,场景的复杂性和多变性也给数据采集和标注带来了很大的挑战。 小指标检测难度大无人机巡检场景中的小指标往往尺寸较小、形态简单,容易被周围环境烦扰而导致检测误差。 模型精度受量化误差的影响大指标检测交融了指标定位和指标分类两种工作,工作复杂度高,精度受量化的影响更大。 部署效率较低在理论利用中,模型的部署效率往往是一个重要的思考因素,特地是在无人机巡检等场景中,须要实时检测并及时反馈后果,而浮点模型因为计算量较大,推理性能不佳。 方案设计如上剖析,无人机巡检场景下因为其视角较高、画面较大、指标物较小,故比拟适宜小指标检测算法。针对小指标检测难点,百度飞桨团队基于 PP-YOLOE+ 通用检测模型,从流程和算法上进行了改良,提出了一套小指标专属检测器 PP-YOLOE-SOD (Small Object Detection)。 点击文末浏览原文疾速体验https://github.com/PaddlePaddle/PaddleDetection 对于 PaddleDetection 的技术问题欢送大家在 Github 提 issue,也欢送大家点 Star 反对咱们的工作! PP-YOLOE-SOD 针对小指标有两种检测计划,别离是基于切图拼图流程优化的小指标检测计划以及基于原图模型算法优化的小指标检测计划。同时提供了数据集主动剖析脚本,只需输出数据集标注文件,便可失去数据集统计后果,辅助判断数据集是否是小指标数据集以及是否须要采纳切图策略,同时给出网络超参数参考值。综合思考精确和时延,最终抉择速度和精度较为均衡的基于原图的小指标检测计划。 如下图标红门路,整体算法时延以及算力要求更低。 小指标检测计划 性能调优模型调优:PP-YOLOE-SOD 基于原图的小指标检测计划相比 PP-YOLOE 模型,PP-YOLOE-SOD 改良点次要包含在neck中引入Transformer全局注意力机制以及在回归分支中应用基于向量的 DFL。 引入 Transformer 全局注意力机制 Transformer 在 CV 中的利用是目前钻研较为炽热的一个方向。最早的ViT间接将图像分为多个 Patch 并退出地位 Embedding 送入 Transformer Encoder 中,加上相应的分类或者检测头即可实现较好的成果。 ViT结构图 咱们这里相似,次要退出了 Position Embedding 和 Encoder 两个模块,不同的是输出是最初一层特色图。 ...

March 30, 2023 · 1 min · jiezi

关于目标检测:DiffusionDet-用扩散模型解决目标检测

出品人:Towhee 技术团队 王翔宇、顾梦佳 DiffusionDet 是一个新的指标检测框架,将指标检测建模为从噪声框到指标框的去噪扩散过程。在训练阶段,指标框从真值框扩散到随机散布,模型学习如何逆转这种向真值标注框增加噪声过程。在推理阶段,模型以渐进的形式将一组随机生成的指标框细化为输入后果。在包含 MS-COCO 和 LVIS 的基准测试中,DiffusionDet 证实了其比之前成熟的指标检测器具备更好的性能。另外,DiffusionDet 的钻研发现随机框也是无效的指标候选。因为指标检测是代表性的感知工作之一,它甚至提出能够通过生成的形式解决该工作。 Diffusion model for object detection.DiffusionDet 将检测转换为图像中边界框的地位(核心坐标)和大小(宽度和高度)空间上的生成工作,利用扩散模型解决指标检测工作。模型包含图像编码器和检测解码器两个局部。基于应用卷积神经网络和基于 Transformer 的模型的图像编码器将原始图像作为输出,提取其高级特色。检测解码器借鉴 Sparse R-CNN 的思路,将一组倡议框作为输出,从特色图中裁剪感兴趣区域的特色,并将它们送到检测头以取得框回归和分类后果。 相干材料: 代码地址:https://github.com/ShoufaChen/DiffusionDet论文链接:DiffusionDet: Diffusion Model for Object Detection更多材料:DiffusionDet:基于扩散模型的指标检测框架

February 6, 2023 · 1 min · jiezi

关于目标检测:量化感知训练实践实现精度无损的模型压缩和推理加速

简介:本文以近期风行的YOLOX[8]指标检测模型为例,介绍量化感知训练的原理流程,探讨如何实现精度无损的实践经验,并展现了量化后的模型可能做到精度不低于原始浮点模型,模型压缩4X、推理减速最高2.3X的优化成果。 1. 概述对深度学习模型进行低比特量化,能够无效地升高模型部署时在存储、计算、通信上的开销,是一种常见的模型压缩和推理优化技术。然而,模型量化在理论利用中依然存在不少挑战,最为常见的问题就是模型精度降落(如无非凡阐明,本文中“模型精度”是指准确率等模型利用于具体任务的成果指标)。以计算机视觉畛域为例,在指标检测、图像宰割等简单工作上,量化带来的精度降落更为显著。 通过在模型训练阶段引入量化相干束缚,即量化感知训练(Quantization-aware training,QAT),可能更好地解决模型量化的精度问题。本文以近期风行的YOLOX[8]指标检测模型为例,介绍量化感知训练的原理流程,探讨如何实现精度无损的实践经验,并展现了量化后的模型可能做到精度不低于原始浮点模型,模型压缩4X、推理减速最高2.3X的优化成果。 2. 量化原理在数字信号处理畛域,量化是指将信号的间断取值(或者大量可能的离散取值)近似为无限多个(或较少的)离散值的过程。具体到深度学习畛域,模型量化是指将浮点激活值或权重(通常以32比特浮点数示意)近似为低比特的整数(16比特或8比特),进而在低比特的示意下实现计算的过程。通常而言,模型量化能够压缩模型参数,进而升高模型存储开销;并且通过升高访存和无效利用低比特计算指令等,可能获得推理速度的晋升,这对于在资源受限设施上部署模型尤为重要。 给定浮点类型的值,能够通过如下公式将它转化成8比特量化值: 其中,示意量化的scale,与别离示意量化值域的最小值与最大值,示意输出浮点值,示意量化后的值。量化值转化为浮点值只需执行反操作即可: 进一步的,在将输出数据和权重进行量化后,咱们就可能将神经网络的常见操作转换为量化操作。以卷积操作为例,其量化版本典型的计算流程如图1所示: 图1 典型的量化卷积算子计算流程图 权重与输出先量化成8bit,进行卷积操作,用32bit来存储两头后果;bias量化为32bit,与进行相加为;利用、以及的量化scale将32bit的转化为8bit的;如果该层的下一层也是量化OP,则可间接输入给下一层;如果是非量化OP,则将反量化为浮点值后,再输入给下一层。从上述量化计算的原理可能容易看出,将浮点数转化为低比特整数进行计算会不可避免地引入误差,神经网络模型中每层量化计算的误差会累积为模型整体精度的误差。常见的训练后量化(Post Training Quantization,PTQ)计划中,通过统计在典型输出数据状况下,待量化变量的数值散布,来抉择适合的量化参数(scale,zero point等),将因量化而引入的信息损失升高到最小。 然而PTQ计划往往还是无奈实现精度无损的模型量化,为了进一步升高量化带来的精度降落,咱们能够采纳量化感知训练的计划,在训练的计算图中引入伪量化的操作,通过微调训练(finetuning)让模型权重“适应”量化引入的误差,以实现更好的、甚至无损的量化模型精度。 3. YOLOX量化训练咱们以YOLOX-s指标检测模型(GitHub repo[1])为例,应用公开的预训练模型参数,在COCO2017数据集上进行量化训练试验。量化训练算法抉择LSQ[2,3],该系列算法利用梯度来更新量化的scale与zero_point,在不须要精密调节参数的状况下可能取得较好的性能。为了通过量化训练取得更好的量化模型精度,咱们须要重点关注如下几点设置: 3.1 与部署后端相匹配的量化形式 不同的部署后端,可能采纳不必的量化计算实现形式,须要匹配训练和部署阶段的量化形式以防止引入额定误差。以PyTorch[7]默认的CPU后端为例,根本的量化形式为 weight: per-channel,int8,对称量化activation: per-tensor,uint8,非对称量化量化对象: 所有的Conv2d以挪动端框架MNN为例,根本的量化形式为: weight: per-channel,int8,对称量化activation: per-tensor,int8,对称量化量化对象: 所有的Conv2d通常在具体推理框架上部署量化模型时,还会对相似conv-bn、conv-relu/relu6、conv-bn-relu/relu6这样的卷积层进行算子交融,因而须要设置为量化交融后的activation。YOLOX中的SiLU激活函数通常不会被交融,output activation的量化仅须要设置到bn的输入,而不是SiLU的输入。训练时一个典型的卷积层量化地位如图2所示。 图2 量化地位示意图 同时,QAT时所有的BN全副fold入相应的卷积中,试验采取了文献[6]中的fold策略。因为模仿量化的引入可能会使得BN层的running_mean与running_var不稳固,从而导致量化训练无奈收敛。因而,咱们在量化训练中固定BN的running_mean与running_var。 此外,特定部署后端的实现可能须要将activation量化为7bit数值范畴,以避免计算溢出。带有avx512_vnni指令集的CPU型号上,则没有相应要求。 3.2 量化训练参数初始化 为了防止导致训练loss不稳固甚至训练发散的状况,咱们利用训练后量化(Post training quantization,PTQ)所得的量化参数来初始化LSQ量化训练中activation scale参数。根本的步骤是: 选取几十张典型图片,在预训练模型上进行推理,并收集统计各个待量化的activation信息。应用如MSE、KL散度等metric来计算各activation的最佳scale。根本的实现形式能够应用PyTorch的HistogramObserver计算activation scale & zero point,PerChannelMinMaxObserver计算weight scale。3.3 训练超参数 在QAT阶段,咱们应用曾经收敛的预训练模型权重,并且应用PTQ量化参数进行QAT初始化。这种状况下,模型参数已靠近收敛,因而咱们将整体训练的超参数和原始YOLOX训练保持一致,将学习率设置为原始训练收敛阶段的学习率,即5e-4。 3.4 特定后端算子实现的计算误差 因为数值示意精度问题,round操作的后果在训练框架与推理后端上可能并不是雷同的,例如: import torch torch.tensor(2.5).cuda().round() # 输入tensor(2., device='cuda:0') torch.tensor(3.5).cuda().round() # 输入tensor(4., device='cuda:0') 2.5和3.5的四舍五入行为在PyTorch上并不是雷同的,而该行为差别在常见的部署后端框架上可能不存在。这种问题会导致QAT模仿精度和后端理论运行时的精度存在显著差别,因而须要在量化训练阶段进行修改。例如针对MNN后端,咱们能够采取如下操作来防止这个差别。 def round_pass(x): """ A simple way to achieve STE operation. """ # y = torch.round(x) # for PyTorch backend y = (x + torch.sign(x) * 1e-6).round() # for mnn backend, round前增加一个小的数值 y_grad = x return (y - y_grad).detach() + y_grad4. 试验后果与剖析4.1 精度和减速成果 ...

December 24, 2021 · 2 min · jiezi

关于目标检测:带你读AI论文丨用于目标检测的高斯检测框与ProbIoU

摘要:本文解读了《Gaussian Bounding Boxes and Probabilistic Intersection-over-Union for Object Detection》,该论文针对指标检测工作,提出了新的高斯检测框(GBB),及新的计算指标相似性的办法(ProbIoU)。本文分享自华为云社区《论文解读系列十九:用于指标检测的高斯检测框与ProbIoU》,作者:BigDragon。 论文地址: https://arxiv.org/abs/2106.06072 Github地址: https://github.com/ProbIOU 现有指标检测的改良方向次要集中在:训练更大数据集 (LVIS dataset)、解决类别不平衡、提出更好的 backbones 、建设长距离相互作用模型 (Transformers , LambdaNetworks)、分类和检测框的衡量剖析,对于检测框的出现模式相干钻研较少。现有指标检测工作中以程度框 (HBB )和旋转框 (OBB )为主,出现模式还是矩形或者类矩形。 而现有指标间隔及相似性计算形式包含:IoU (Intersection over Union)、 GIoU (Generalized IoU )、 DIoU (Distance IoU)、 PIoU (Pixel IoU), Gaussian Wasserstein Distance (GWD)。 现有OBB算法在修长及旋转物体检测问题绝对于HBB算法有所提高,然而与指标语义宰割的贴合度不高,因而,本文提出更加贴合语义宰割模式的宰割出现模式及对应的指标类似度计算方法。 该论文奉献如下: 提出一种新的椭圆形指标检测框 (Gaussian Bounding Boxes,GBB)GBB与指标的语义宰割mask形态更加靠近,更加贴合非矩形指标,在非矩形指标检测成果优于HBB和OBB。 提出一种新的指标类似度的计算方法 (Probabilistic IoU,ProbIoU)基于Hellinger Distance的ProbIoU,思考了2D高斯分布的特点,满足所有间隔度量规范,可能示意不同散布间的实在间隔,且处处可微,能晋升OBB和HBB指标检测成果。 1.Gaussian Bounding Boxes (GBB)为在 2 维区域确定一个二维高斯分布,须要计算其均值和协方差矩阵∑,其中为 (x0, y0) T,协方差矩阵∑可通过下列公式进行计算。在指标检测工作中,可间接设置(x0,y0,a,b,c )作为指标检测中的回归工作中的参数,也可将回归工作中参数示意为(x0, y0,a ’,b ’, ),而后者的模式更加合乎现有旋转检测框的输入模式。 假如程度框及旋转框向高斯框转换中遵循以下假如:指标区域为 2 维二元区域 ,且 合乎平均概率分布,则该散布的均值 和协方差矩阵 ∑ 可通过如下公式进行计算。 ...

August 19, 2021 · 2 min · jiezi

关于目标检测:论文解读丨空洞卷积框架搜索

摘要:在通用指标检测算法,空洞卷积能无效地晋升网络的感触野,进而晋升算法的性能。本次解读的文章提出了一种空洞卷积变体及对应的空洞卷积搜寻办法,充沛摸索空洞卷积的后劲,进一步晋升网络模型的性能。本文分享自华为云社区《论文解读系列十:空洞卷积框架搜寻》,原文作者:我想静静 。 空洞卷积是规范卷积神经网络算子的一种变体,能够管制无效的感触野并解决对象的大尺度方差,而无需引入额定的计算。然而,在文献中很少探讨针对不同的数据,如何设计调整空洞卷积使其失去更好的感触野,进而晋升模型性能。为了充沛开掘其后劲,本文提出了一种新的空洞卷积变体,即inception (dilated)卷积,其中卷积在不同轴,通道和层之间具备独立的空洞。 同时,本文提出了一种基于统计优化的简略而高效的空洞搜索算法(EDO,effective dilation search),自适应搜寻对训练数据敌对的空洞卷积配置办法。该搜寻办法以零老本形式运行,该办法极其疾速地利用于大规模数据集。 办法在不同工作中对于输出图像的大小和指标对象的不同,无效感触野(effictive reveptive field,ERF)的要求也有所不同。图像分类输出的尺寸比拟小,指标检测中输出的size而比拟大,指标的范畴也很大。即便对于固定网络的同一工作,某一层卷积的最优解ERF也和标注卷积不肯定一样,于是为了适应不同ERF的要求,须要针对不同工作提供一种通用的ERF算法。 本文提出一种收缩卷积的变体,Inception卷积,他蕴含多种收缩模式如下图: Incetption 卷积提供了一个密集可能的ERF范畴,该文提供了一种高效的收缩优化算法(EOD),其中超网络的每层都是一个规范的卷积操作,该卷积蕴含了所有可能的收缩模式。对每一层的抉择,通过最小化原始卷积层和与所选收缩模式的卷积的冀望误差,应用一个预训练的权值解决抉择问题。具体流程如下图所示: 上图为EDO的算法概述,以resnet50为例,咱们先在训练数据上训练取得一个bottleneck卷积内核为(2dmax + 1) × (2dmax + 1)的res50。这个例子里,supernet的内核为5*5,所以dmax=2。而后对于卷积运算的每个filter的输入,咱们要计算与预期输入的L1误差,抉择最小的(这个例子里是E=3)。最初重新安排filter使雷同的空洞卷积排在一起,就成为了咱们的inception convolution。 试验后果 实证结果表明,本文办法在宽泛的Baseline测试中取得了统一的性能晋升。例如,通过简略地将ResNet-50骨干中的3x3规范卷积替换为Inception Conv,将Faster-RCNN在MS-COCO上的mAP从36.4%进步到39.2%。此外,在ResNet-101骨干网中应用雷同的代替办法,在自下而上的人体姿态预计上将AP得分从COCO val2017的AP得分从60.2%大幅提高到68.5%。 点击关注,第一工夫理解华为云陈腐技术~

June 3, 2021 · 1 min · jiezi

关于目标检测:目标检测中的FPNRPN

在聊Feature Pyramid Networks(FPN)和Region Proposal Networks(RPN)之间先相熟一下Faster R-CNN的背景。Faster RCNN分为四个工作: Conv Layers。用几组根底的conv+relu+maxpooling层提取图像的feature map。Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于positive或者negative,再利用bounding box regression修改anchors取得准确的proposals。Roi Pooling。该层收集输出的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连贯层断定指标类别。Classification。利用proposal feature maps计算proposal的类别,同时再次bounding box regression取得检测框最终的准确地位。与one stage算法如yolo系列相比,Faster RCNN做为典型的two stage算法最大的区别就在于其先通过RPN找到proposal,在对proposa分类,经验了两个网络。 RPNRPN网络的工作是找到proposals。输出:feature map。输入:proposal。总体流程:生成anchors -> softmax分类器提取positvie anchors -> bbox reg回归positive anchors -> Proposal Layer生成proposals 1.softmax断定positive与negative在feature map上,设置了稀稀拉拉的候选Anchor。而后用cnn去判断哪些Anchor是外面有指标的positive anchor,哪些是没指标的negative anchor。所以,RPN做的只是个二分类! 2.对proposals进行bounding box regression图中红框为positive anchors,绿框为GT。anchor和GT的梯度能够有dx, dy, dw, dh四个变换示意,bounding box regression通过线性回归学习到这个四个梯度,使anchor一直迫近GT,从而取得更准确的proposal。 RPNReference1.FPN: https://arxiv.org/abs/1612.03...2.Faster R-CNN: https://ieeexplore.ieee.org/s...3.https://zhuanlan.zhihu.com/p/...

April 27, 2021 · 1 min · jiezi

关于目标检测:目标检测算法YOLOFYou-Only-Look-Onelevel-Feature

作者 | 张凯编辑 | CV君报道 | 我爱计算机视觉(微信id:aicvml)本文介绍 CVPR 2021 接管的指标检测论文 You Only Look One-level Feature。 原论文作者来自:中科院自动化所、中科院大学人工智能学院、中国科学院脑科学与智能技术卓越翻新核心、旷视科技。 0 动机在高性能的指标检测网络中,特色金字塔网络(Feature Pyramid Network,FPN)是一个不可或缺的组成部分。作者认为FPN次要有2个作用: 其一是多尺度特色交融,进步了特色的丰盛水平; 其二是应用分治法(divide-and-conquer),将指标检测工作依照指标尺寸不同,分成若干个检测子工作。 为了摸索FPN的上述2个作用对检测器性能的奉献水平,作者做了一个试验,作者将检测器形象成如下图所示个3个组成部分 编码器(Encoder)解决Backbone提取的特色,将处理结果传输给解码器(Decoder)用于分类和回归。 FPN能够看作一个MiMo(Multiple-in-Multiple-out)编码器,作者还设计了SiMo(Single-in-Multiple-out)、MiSo(Multiple-in-Single-out)、SiSo(Single-in-Single-out)编码器,这4种编码器的构造如下图所示: 上图中图(a)就是RetinaNet中的FPN,方框左侧的C3、C4、C5代表Backbone输入的特色,方框右侧的P3~P7代表传入Decoder的特色。 别离应用图(b)、(c)、(d)中的构造代替RetinaNet中的FPN,应用ResNet-50作为RetinaNet中的Backbone,别离训练4个网络并在COCO验证集上测试,后果如下图所示: 从上图中能够看出,应用MiMo和SiMo作为编码器,性能相近;应用MiSo和SiSo作为编码器,性能较差。这种景象阐明了如下问题: 相比于MiMo,SiMo只应用Backbone输入的C5特色作为输出,应用SiMo作为编码器构建的网络性能根本与MiMo相当,阐明Backbone输入的C5曾经蕴含了足够的信息用于构建高性能检测器; 相比于MiMo和SiMo,应用繁多输入的MiSo和SiSo作为编码器构建的网络性能较差,阐明应用“分治法”将指标检测问题以指标尺寸为根据合成为多个子问题,对于构建高性能网络的奉献很大。通过上述试验可知,应用Backbone输入的繁多特色和分治法,即上图中图(b)的构造,就能够构建一个很好的检测网络。然而应用图(b)的构造会使得模型变宏大和简单,因为编码器要输入多个特色。 基于上述发现,作者提出了YOLOF(You Only Look One-level Feature)网络,在YOLOF中,编码器只用到了Backbone输入的C5特色,同时防止应用上图中图(b)的SiMo简单构造,而是应用了图(d)的SiSo构造以缩小计算量。 应用MiMo(即FPN)的RetinaNet、应用SiSo的RetinaNet和应用SiSo的YOLOF的计算量、帧率和在COCO数据集上的精度如下图所示: Decoder和Encoder是有强耦合关系的,因而Decoder的构造受Encoder输入特色的影响,所以作者将Decoder和Encoder的计算量叠加在一起显示。 上图中的4个模型均应用ResNet-50作为Backbone,FLOPs是在COCO验证集上前100张图片中将图片短边尺寸resize成800个像素计算失去,FPS是在2080Ti GPU上测量,设置batch size为1,应用Detectron2外面的测量工具,C示意Encoder和Decoder应用的通道数量。 从上图能够看出,应用SiSo的RetinaNet在运行速度上优于应用MiMo的RetinaNet,然而精度比拟低;而作者提出的YOLOF网络同样应用了SiSo的Encoder,在放弃高帧率的同时领有高精度。 1 应用Dilated Encoder模块代替FPN依前文所述,应用SiSo代替MiMo会引起较大的性能损失,作者认为,SiSo Encoder只应用了Backbone中的C5特色作为输出,而C5特色的感触野所对应的指标尺寸范畴是受限的,无奈应答指标检测场景中变动激烈的指标尺寸。如下图所示: 上图中绿色的点示意数据集中的多种指标尺寸,粉红色的区域代表特色可能无效表白的指标尺寸范畴,应用C5特色作为输出的SiSo Encoder,会产生上图中图(a)所示的状况。 若应用空洞卷积(Dilated Convolution)操作以增大C5特色的感触野,则会产生上图中图(b)所示的状况,感触野变大,可能无效地表白尺寸较大的指标,然而对小指标表达能力变差。 作者提出了一个SiSo Encoder的新构造,将其称作Dilated Encoder,该构造可能交融多种尺寸的感触野,从而能检测尺寸变动范畴大的多种指标,达到上图中图(c)所示的成果。 Dilated Encoder的构造如下图所示: 从上图中能够看出,Dilated Encoder将Backbone输入的C5特色作为输出,应用1x1卷积缩小通道数目,接着应用3x3卷积精炼语义信息,紧接着是4个间断的空洞残差单元(Dilated Residual Block),这4个空洞残差单元中3x3卷积的dilation rate不肯定相等。 应用4个间断的空洞残差单元能够在one-level feature中蕴含具备多种不同感触野的特色,以应答不同的指标尺寸。 2 解决positive anchor不平均问题在RetinaNet中,如果某个anchor和指标的ground truth的最大IoU超过0.5,则该anchor为positive anchor,作者将这种选取positive anchor的办法称作Max-IoU Matching。 ...

March 24, 2021 · 1 min · jiezi

关于目标检测:目标检测的稀疏对抗攻击代码已开源

编译 | 孙裕道,CV君 报道 | 我爱计算机视觉(微信id:aicvml) 题目:Sparse Adversarial Attack to Object Detection 论文:https://arxiv.org/pdf/2012.13... 代码:https://github.com/THUrssq/Ti... 引言 该论文的出处是阿里天池大赛中平安AI挑战者打算第四期的通用指标检测反抗攻打。阿里的平安AI挑战者打算是一系列对于AI平安的比赛,到目前为止球200多所高校100多家企业的近4000支队伍加入,次要目标是抵挡将来AI面临的各种平安问题。阿里天池论坛的学习气氛很好,很多优良的战队很具体的分享了在本次较量的办法和代码,感兴趣的能够学习一下。 题目赛况 ======= 因为该论文是根植于较量,所以须要先对本次较量的题目和评估指标介绍一下,尤其是评估指标有些简单须要对其具体介绍,这样能力更容易了解论文中试验后果。 赛题简介阿里天池平安AI挑战者打算第四期较量针对通用的指标检测模型进行攻打,较量采纳COCO数据集,其中蕴含20类物体。工作是通过向原始图像中增加反抗补丁(adversarial patch)的形式,使得典型的指标检测模型不可能检测到图像中的物体,绕过指标定位。主办方选取了4个近期的State-of-the-art检测模型作为攻打指标,包含两个白盒模型YOLO v4和Faster RCNN和另外两个未知的黑盒模型。 评估指标一张图像中反抗贴图的像素值大小和地位没有任何限度,只会限度贴图的尺寸。评估是应用原始图像减去批改后的图像,失去批改域,而后,计算批改域中连通域的数量和每个连通域的大小。一个连通域被视为一个增加的反抗贴图,反抗贴图有两点限度: 限度了扭转的像素数量在总像素中的比率,不超过全图所有像素的2%。限度了反抗贴图的数量不多于10个,当检测到反抗贴图的数量超过10个。反抗贴图使得图像输出到模型后,所有指标都无奈被检测到,采纳方评估得分形式为: 其中5000示意最大批改像素数量(因为限度1中要求像素扭转量不超过全图中的2%,所以有500x500x2%=5000),是第个反抗贴图的面积,是洁净样本的图像,是反抗图像,是示意第个模型(共四个模型),示意模型检测图像返回的检测框的数量(检测框越少得分越高),最初的得分是所有的图像在4个模型(两个白盒模型YOLO v4 和Faster RCNN 和两个未知的黑盒模型)上的总得分: 从总得分的公式能够推知,如果一个FinalScore的得分越高,则攻打的成果越好,这是一个正相干关系的评估指标。 论文办法介绍作者提出一个针对指标检测器的稠密对抗性攻打(SAA),作者集成了两个现成的指标检测器,并在黑盒攻打有很强迁移性,所以该办法能够很容易地推广到多模型中去。如下图所示,为本文的SAA框架,它集成了两个指标检测器(一阶段指标检测器YOLOv4和二阶段指标检测器FasterRCNN)来进行攻打。为了应用无限的像素进行弱小的对抗性攻打,作者特意设计了反抗补丁的地位、形态和大小。 无关Patch的设计 因为较量的要求比拟严格,图像的批改范畴不超过整个图像的2%,所以这种反抗扰动在空间中是稠密的。针对这些状况,作者设计了一种十字形贴图,其交点位于物体突围盒的核心(如下图所示为增加十字形贴图的反抗样本)。利用大跨度的patch 能够重大地误导指标检测器的后果,然而确只有很少的像素变动。作者基于物体核心是反抗攻打的软弱区域的假如,提出了如下指标检测器的输出公式如下: 其中,这里代表洁净的图像,代表反抗的补丁,是成心设计的Mask。 损失函数 SAA的指标是打消图像中所有的物体检测框,该攻打与指标检测器的正样本(前景)和负样本(背景)的定义密切相关。作者通过使图像中的一个物体成为指标探测器的负样本来打消它。依据指标探测器前景和背景的定义作者设计了相干的损失函数。 YOLOv4是一阶段指标检测器,YOLOv4利用置信度去辨别图像的前景和背景。置信度低于YOLOv4中的阈值的突围框将被辨认为背景,并将在后处理阶段抛弃。基于这些原理作者设计的YOLOv的损失函数为: 其中示意所有对象类别的汇合,示意所有边界框的汇合,conf是YOLOv4中的对象置信度。损失函数提取图像的最大指标置信度。作者通过升高置信度从而来达到攻打的目标。 FasterRCNN是两阶段指标检测器,作者通过减少背景的softmax输入概率,同时缩小任何其余类别(前景对象)的softmax输入概率来实现攻打,然而FasterRCNN通常会产生10 万多个区域提案,是YOLOv4的10倍以上。大量的区域倡议使其难以打消所有指标与极其无限的攻打。因而作者做出相应的斗争,设计了FasterRCNN的损失函数为: 其中,和是超参数,示意所有对象的汇合类,示意所有边界框的汇合,是设计的元素的个数。 作者联合了两个指标检测器的损失来训练反抗补丁,最终损失函数如下所示: 试验后果作者从MSCOCO2017数据集中抉择1000张图像,所有图像大小为500*500。选取YOLOv4和FasterRCNN作为指标模型。依据section 2.2中介绍的评估指标,试验后果如下所示: 论文中没有给出该办法的总得分,能够直观的算出FinalScore为: 我搜寻了一下第四期通用指标检测反抗攻打的榜单,能够发现本文的作者是来自于清华大学的队伍,在此类比赛的排名中荣获TOP4的好名次。如下图所示的红框中的“我还有机会吗”就是本文作者的战队。 END

January 4, 2021 · 1 min · jiezi

关于目标检测:CenterFusion融合雷达与摄像头数据的高精度3D目标检测

编译 | CV君报道 | 我爱计算机视觉(微信id:aicvml)介绍一篇新出的论文 CenterFusion: Center-based Radar and Camera Fusion for 3D Object Detection ,旨在应用低成本的雷达(redar)替换主动驾驶中的激光雷达,并达到高精度3D指标检测的办法。 该文作者信息: 作者来自田纳西大学诺克斯维尔分校。 激光雷达应用发射的激光测距进行环境感知,而雷达应用无线电发射进行探测。 3D指标检测在主动驾驶畛域利用宽泛,而激光雷达(Lidar)和摄像头数据的交融罕用来进行高精度的3D指标检测,但其仍有一些毛病。比方对远处指标检测不准确、对天气敏感(雨雪大雾天气等),而且不能间接失去指标的速度。 而低成本的雷达则绝对具备人造劣势:无惧顽劣天气,长远距离检测能力强(200M也OK),且人造还有指标速度信息。 但雷达数据更加稠密,不能间接将激光雷达的办法间接套用,数据在输出层和后处理局部的交融不能获得很好的成果。 该文将摄像头采集的图像数据和雷达数据进行两头特色层的交融,以达到准确的3D指标检测。 该文算法流程图: CenterFusion 网络架构 算法流程: 1. 首先应用CenterNet算法进利用摄像头数据预测指标的中心点,并回归失去指标的3D坐标、深度、旋转等信息 2. 而后作者将雷达检测到的指标数据和下面检测到的指标中心点进行关联,作者了视锥的办法 3. 将关联后的指标的特色和雷达数据检测到的深度和速度信息组成的特色图并联,在进行3D指标深度、旋转、速度和属性的回归。 其中关键步骤是CenterNet检测后果与雷达点指标的关联,在三维空间视锥法找到对应指标的示意图: Frustum association 视锥法关联 关联后果,该文办法为下图中最小面的后果: 解决高度信息不精确的问题,引入了雷达点云预处理步骤,pillar expansion,将每个雷达点扩大为一个固定大小的柱子 作者在nuScenes 数据集上的 3D 指标检测性能比拟: 可见该文的交融办法获得了显著的精度晋升,相比以前的SOTA精度晋升12%。 nuScenes 数据集上进行 3D 指标检测的每类性能比拟: 检测后果示例: 摄像头和 BEV (鸟瞰图)中的 3D 指标检测后果 目前,作者已将代码开源: 论文链接:https://arxiv.org/pdf/2011.04...我的项目链接:https://github.com/mrnabati/C...欢送参考~ END

December 9, 2020 · 1 min · jiezi

关于目标检测:yolov3论文初读笔记

摘要:yolov3与yolov2相比,次要改良三个方面,对应论文的2.2-2.4三个章节,其余思维根本连续yolov2: 1.预测形式 摒弃了softmax预测的方法(因为发现对晋升性能没有带来帮忙),而是采纳了多标签多分类的逻辑回归层,解释一下我的了解,yolov2的时候预测是用softmax实现的,其预测后果蕴含每个grid cell负责预测对应对象的每个类别的概率(比方coco数据集是80类,即有这个物体可能是这80个类别对应的概率,总和为1,必然有最大概率值的那个,通过非极大值克制最初选出一个概率最大的那个类别作为后果),能够看出yolov2其实还是一个gird只能预测一个对象是一种类别,显然不适宜多标签的预测状况(比方预测的对象即是猫类别,也是蓝猫类别,这样的多标签后果),而且作者也提及softmax并没有为性能晋升带来帮忙,用多个独立的logistic回归(转为二分类问题)也能实现成果,而且能够解决多标签预测问题。 2.预测模型采纳多尺度预测 最初预测后果会生成三种尺寸的特色图,由三个yolo层解决得来,别离是$13*13,26*26,52*52$,每个尺寸对应三个先验框,即三个先验框解决得出一个预测框,这样的目标是为了实现对不同尺寸物体的检测,特色越大的适宜检测小物体。 3.改良了网络结构,darknet-53 网络结构图出处起源

November 27, 2020 · 1 min · jiezi

关于目标检测:yolov2初读论文笔记记录

概括:yolov2论文次要依据yolov1体现的一些毛病和局限性作出了一些改良:论文称达到了better、fatser、stronger从上图能够看出yolov2做的优化改良以及对应晋升的mAP。(题外话:mAP是掂量指标检测准确度的指标:越高越精准,这个定义解释简单点,可另件我的博文,FPS是掂量检测速度的指标:越高速度越快,了解成每秒能够解决多少帧/张图片)上面从这些改良里一一剖析: Batch Normalization: 简略解释一下Batch Normalization,下图是一个样本量为N,通道为C,尺寸WH的特色,留神蓝色区,能够简略了解成批归一化操作时该蓝色区块沿着通道方向挪动,每次计算雷同通道上特色的均值和方差,所以解决后会失去一个1C的均值向量和1*C的方差向量有了上述概念,再用下图一个简略例子举例说明,假如用批归一化解决手写数字图片特色输出,有6个样本,特色通道是3,图片尺寸是2828,把每个通道的2828特色转为一维,则输出能够形容为(6,3,784),每个通道都有(6,784),通过Batch Normal解决失去均值向量u和方差向量sigema,如下图z公式解决,是的解决后的z满足N(0,1)散布,从而实现对特色的归一化解决(此图引于视频https://www.bilibili.com/vide...)批归一化操作有助于解决梯度零散的问题,并升高对一些参数的敏感性,对于参数很多的模型,对参数就很敏感,因而易产生过拟合的景象,所以批归一化解决同样对克制过拟合有成果,因而yolov2在网络结构中减少了Batch Normalization层,因而代替了yolov1的dropout解决过拟合的解决方案,并且成果体现晋升了超过2%mPA 高分辨率分类器: 这个须要先去理解:ImageNet的图像分类样本采纳$ 224*224$ 作为输出,支流的指标检测算法包含yolo都会在ImagetNet进行预训练,所以预训练时图片输出尺寸只能是$224*224$,因为这样的分辨率绝对较低,不利于检测模型,所以yolov1在检测图像时输出是448*448的输出,然而这样间接切换输出分辨率,不利于网络模型适应新分辨率输出,因而yolov2对此进行了改良。改良计划:yolov2在ImageNet数据集上减少了一些448448的输出图片,先用224224的输出从头开始训练网络,大略160个epoch(循环训练所有数据160趟),再将输出调整到448448,训练10个epoch,这样网络能有工夫去适应调整其过滤器,在这样渐进的适度下,yolov2在进行检测数据集上检测时,对于其448448的输出切换的反馈就不会那么忽然,适应性比拟好,并且yolov2的网络结构在检测时依然会进行微调。这样的解决论文示意晋升了4%mAP。 采纳先验框: yolov1是从最初的卷积层输入通过全连贯层解决间接失去的预测边框的坐标值和长宽,yolov2与之不同,yolov2网络结构去掉了全连贯层,并采取了先验框的思路,从先验框中预测最初边框,这样解决后解决了yolov1定位误差大的毛病,召回率晋升至88%,然而准确度降落了一点点0.2%mPA,相比起来还是值得的,一个grid有几个先验框是能够设定的,yolov2论文用试验表明设置5个最为适合。 维度聚类(来确定先验框):作者发现应用先验框存在两个须要解决的问题:1是先验框如何确定,手工确定的形式显然不是最好的;2是模型存在不稳固问题;针对问题一yolov2交代了怎么确定先验框,与faster R-CNN等采取手工确定先验框不同,yolov2采纳k-means聚类确定先验框,论文说到yolov2的先验框一开始就抉择更好的先验框,再随着网络适应调整,这样能够使网络更快更好的学习到检测后果,这里先简略介绍一下k-means聚类: 已上图依据身高体重分成两类的例子为例介绍步骤流程:1、确定好分成k=2类;2、确定初始化群中心点,如图中的蓝色和红色点;规范做法是计算每个点到两个群心的欧式间隔,最小的举例则属于对应群心那类,已此办法从新聚类;3、从新确定群中心点,反复2操作;回到yolov2先验框的聚类确定,因为先验框对于咱们来说真正关系的是他的置信度,或者是IOU,IOU越大阐明这个先验框预测成果越好,IOU其实与先验框的尺寸没有关系,所以并不采纳规范的欧式间隔去聚类,而是依据公式:$d(box,centroid)=1-IOU(box,centroid)$下面说到yolov2先验框个数也就是k类选的是5,这里是作者将k值设定类很多种值试验得来的后果,因为在k>5当前尽管IOU更高,然而模型必然会随着k的增大而更简单,计算量也更大,而k=5时曾经有比拟好的IOU,再此之后IOU升高速度也很慢,所以5是模型复杂度和高IOU的折衷取值。看一下试验比照成果:和yolov1一样,这里要解释一下最初输入的先验框里都含有那些张量,这里论文没有解释,yolov2最初输入是13*13,论文设置先验框k=5,和yolov1一样每个先验框含有(tx,ty,tw,th,confidence)五个张量,不同的是,yolov1的类别概率是一个grid有20个(因为voc数据集有20类),而yolov2是每个先验框含有C个类别概率,而不是依据grid计算,所以网络最初的总张量是$13*13*5*(5+C)$ 间接地位预测: 这里是对先验框第二个问题的解决方案的答复,先解释一下为什么说模型存在不稳固的问题:作者用SSD算法的bbox边框核心预测公式来作出解释:式中(x,y)是要求的bbox的核心坐标,tx,ty是先验框绝对于bbox核心的offset,先验框的地位是(xa,ya,wa,ha),因为tx,ty的取值在原公式里没有限度,这样会导致最终x,y的后果不在对应负责的那个grid cell内,这显然是不正确的,因而也是体现里此模型对于yolo来说这样解决的不稳定性,解决方案是首先将offset定义更改,改成绝对于对应的那个grid的左上角的offset,tx,ty便是先验框中心点绝对于所在grid左上角的偏置量,(tw,th)是先验框宽高的偏置量,(cx,cy)是绝对于以后gird左上角绝对于图片左上角的间隔,(pw,ph)是先验框的宽高,最初要求的是bbox核心坐标(bx,by)以及该边框的宽高bw,bh;这样的定义再加上一个激活函数对tx,ty的限定,从而达到预测边框中心点不会跑出对应grid cell里,论文给出求边框和对应置信度的公式:这样的解决精度晋升5%mAP。 细粒度性能: 了解的艰深一点就是在后续网络解决中还会用到早起的特色,因为早起的特色图解决的少,图像细节更多,这里这样优化对小指标物体检测敌对,原论文对此做了解释,但不好了解,我用下图解释:(此图引于视频https://www.bilibili.com/vide...)文中说的早起2626的特色是从图中虚线框出那层模型的输入里失去的,将其通过passthrounth层来实现扭转尺寸,使其与最初输入1313的尺寸统一,这样才能够合并,简略介绍一下passthroungth层工作原理:(解释也能够看此视频,此图引于某大佬的视频https://www.bilibili.com/vide...)这样的细粒度解决晋升来1%mAP。 多尺度训练: yolov2在训练时采纳输出图片随机变动不同尺度进行训练的形式,因为yolov2的网络结构更改了,没有全连贯层,所以输出尺寸其实并不是向yolov1那样受限了,那yolov2是怎么扭转训练图片输出尺寸的呢,yolov2有一个倍数因子是32,输出图片只有满足32的整数倍都能够,所以输出图片的尺寸就能够是:{320,352,...,608},训练集中提供这些尺寸的输出图片,并在训练时每10个batch就随机更换一种尺寸,这样能使yolov2的网络模型适应各种大小输出图片的检测,这里的原理和后面的高分辨率分类器解决是一样的。 Faster(翻新了darknet-19网络结构)上述的优化次要是进步检测精度和召回率,此段次要介绍yolov2如何实现更快的,次要是齐全扭转了网络结构,废去了yolov1的网络结构,借鉴了名为darknet-19的网络结构:

November 21, 2020 · 1 min · jiezi

关于目标检测:yolov2论文初读笔记

概括:yolov2论文次要依据yolov1体现的一些毛病和局限性作出了一些改良:论文称达到了better、fatser、stronger从上图能够看出yolov2做的优化改良以及对应晋升的mAP。(题外话:mAP是掂量指标检测准确度的指标:越高越精准,这个定义解释简单点,可另件我的博文,FPS是掂量检测速度的指标:越高速度越快,了解成每秒能够解决多少帧/张图片)上面从这些改良里一一剖析: Batch Normalization: 简略解释一下Batch Normalization,下图是一个样本量为N,通道为C,尺寸WH的特色,留神蓝色区,能够简略了解成批归一化操作时该蓝色区块沿着通道方向挪动,每次计算雷同通道上特色的均值和方差,所以解决后会失去一个1C的均值向量和1*C的方差向量有了上述概念,再用下图一个简略例子举例说明,假如用批归一化解决手写数字图片特色输出,有6个样本,特色通道是3,图片尺寸是2828,把每个通道的2828特色转为一维,则输出能够形容为(6,3,784),每个通道都有(6,784),通过Batch Normal解决失去均值向量u和方差向量sigema,如下图z公式解决,是的解决后的z满足N(0,1)散布,从而实现对特色的归一化解决(此图引于视频https://www.bilibili.com/vide...)批归一化操作有助于解决梯度零散的问题,并升高对一些参数的敏感性,对于参数很多的模型,对参数就很敏感,因而易产生过拟合的景象,所以批归一化解决同样对克制过拟合有成果,因而yolov2在网络结构中减少了Batch Normalization层,因而代替了yolov1的dropout解决过拟合的解决方案,并且成果体现晋升了超过2%mPA 高分辨率分类器: 这个须要先去理解:ImageNet的图像分类样本采纳$ 224*224$ 作为输出,支流的指标检测算法包含yolo都会在ImagetNet进行预训练,所以预训练时图片输出尺寸只能是$224*224$,因为这样的分辨率绝对较低,不利于检测模型,所以yolov1在检测图像时输出是448*448的输出,然而这样间接切换输出分辨率,不利于网络模型适应新分辨率输出,因而yolov2对此进行了改良。改良计划:yolov2在ImageNet数据集上减少了一些448448的输出图片,先用224224的输出从头开始训练网络,大略160个epoch(循环训练所有数据160趟),再将输出调整到448448,训练10个epoch,这样网络能有工夫去适应调整其过滤器,在这样渐进的适度下,yolov2在进行检测数据集上检测时,对于其448448的输出切换的反馈就不会那么忽然,适应性比拟好,并且yolov2的网络结构在检测时依然会进行微调。这样的解决论文示意晋升了4%mAP。 采纳先验框: yolov1是从最初的卷积层输入通过全连贯层解决间接失去的预测边框的坐标值和长宽,yolov2与之不同,yolov2网络结构去掉了全连贯层,并采取了先验框的思路,从先验框中预测最初边框,这样解决后解决了yolov1定位误差大的毛病,召回率晋升至88%,然而准确度降落了一点点0.2%mPA,相比起来还是值得的,一个grid有几个先验框是能够设定的,yolov2论文用试验表明设置5个最为适合。 维度聚类(来确定先验框):作者发现应用先验框存在两个须要解决的问题:1是先验框如何确定,手工确定的形式显然不是最好的;2是模型存在不稳固问题;针对问题一yolov2交代了怎么确定先验框,与faster R-CNN等采取手工确定先验框不同,yolov2采纳k-means聚类确定先验框,论文说到yolov2的先验框一开始就抉择更好的先验框,再随着网络适应调整,这样能够使网络更快更好的学习到检测后果,这里先简略介绍一下k-means聚类: 已上图依据身高体重分成两类的例子为例介绍步骤流程:1、确定好分成k=2类;2、确定初始化群中心点,如图中的蓝色和红色点;规范做法是计算每个点到两个群心的欧式间隔,最小的举例则属于对应群心那类,已此办法从新聚类;3、从新确定群中心点,反复2操作;回到yolov2先验框的聚类确定,因为先验框对于咱们来说真正关系的是他的置信度,或者是IOU,IOU越大阐明这个先验框预测成果越好,IOU其实与先验框的尺寸没有关系,所以并不采纳规范的欧式间隔去聚类,而是依据公式:$d(box,centroid)=1-IOU(box,centroid)$下面说到yolov2先验框个数也就是k类选的是5,这里是作者将k值设定类很多种值试验得来的后果,因为在k>5当前尽管IOU更高,然而模型必然会随着k的增大而更简单,计算量也更大,而k=5时曾经有比拟好的IOU,再此之后IOU升高速度也很慢,所以5是模型复杂度和高IOU的折衷取值。看一下试验比照成果:和yolov1一样,这里要解释一下最初输入的先验框里都含有那些张量,这里论文没有解释,yolov2最初输入是13*13,论文设置先验框k=5,和yolov1一样每个先验框含有(tx,ty,tw,th,confidence)五个张量,不同的是,yolov1的类别概率是一个grid有20个(因为voc数据集有20类),而yolov2是每个先验框含有C个类别概率,而不是依据grid计算,所以网络最初的总张量是$13*13*5*(5+C)$ 间接地位预测: 这里是对先验框第二个问题的解决方案的答复,先解释一下为什么说模型存在不稳固的问题:作者用SSD算法的bbox边框核心预测公式来作出解释:式中(x,y)是要求的bbox的核心坐标,tx,ty是先验框绝对于bbox核心的offset,先验框的地位是(xa,ya,wa,ha),因为tx,ty的取值在原公式里没有限度,这样会导致最终x,y的后果不在对应负责的那个grid cell内,这显然是不正确的,因而也是体现里此模型对于yolo来说这样解决的不稳定性,解决方案是首先将offset定义更改,改成绝对于对应的那个grid的左上角的offset,tx,ty便是先验框中心点绝对于所在grid左上角的偏置量,(tw,th)是先验框宽高的偏置量,(cx,cy)是绝对于以后gird左上角绝对于图片左上角的间隔,(pw,ph)是先验框的宽高,最初要求的是bbox核心坐标(bx,by)以及该边框的宽高bw,bh;这样的定义再加上一个激活函数对tx,ty的限定,从而达到预测边框中心点不会跑出对应grid cell里,论文给出求边框和对应置信度的公式:这样的解决精度晋升5%mAP。 细粒度性能: 了解的艰深一点就是在后续网络解决中还会用到早起的特色,因为早起的特色图解决的少,图像细节更多,这里这样优化对小指标物体检测敌对,原论文对此做了解释,但不好了解,我用下图解释:(此图引于视频https://www.bilibili.com/vide...)文中说的早起2626的特色是从图中虚线框出那层模型的输入里失去的,将其通过passthrounth层来实现扭转尺寸,使其与最初输入1313的尺寸统一,这样才能够合并,简略介绍一下passthroungth层工作原理:这样的细粒度解决晋升来1%mAP。 多尺度训练: yolov2在训练时采纳输出图片随机变动不同尺度进行训练的形式,因为yolov2的网络结构更改了,没有全连贯层,所以输出尺寸其实并不是向yolov1那样受限了,那yolov2是怎么扭转训练图片输出尺寸的呢,yolov2有一个倍数因子是32,输出图片只有满足32的整数倍都能够,所以输出图片的尺寸就能够是:{320,352,...,608},训练集中提供这些尺寸的输出图片,并在训练时每10个batch就随机更换一种尺寸,这样能使yolov2的网络模型适应各种大小输出图片的检测,这里的原理和后面的高分辨率分类器解决是一样的。 Faster(翻新了darknet-19网络结构)上述的优化次要是进步检测精度和召回率,此段次要介绍yolov2如何实现更快的,次要是齐全扭转了网络结构,废去了yolov1的网络结构,借鉴了名为darknet-19的网络结构:

November 21, 2020 · 1 min · jiezi

关于目标检测:yolov1论文初读笔记

1、 概括:yolo是一个端到端的指标检测算法,总体思维是将指标检测看成回归问题,失去空间上的分类边界边框以及对应类别概率,论文中提到其劣势:速度快、全局性预测(预测背景中假阳性指标状况缩小)、学习形象特色(对预测形象图像具备劣势);毛病:yolov1检测准确率不如过后支流的检测算法,定位误差绝对大一些2、 检测思维:和r-cnn系列不同的是,yolo是对立检测,只须要一次原图片输出,通过一次网络解决,通过整个图像的特色来给出预测出的物体的边框地位以及物体类别概率(一次性给出),yolov将输出图像划分为S*S个grid cell,每个cell能够有B个bbox,论文设置B=2,S=7,所以输出图片一共就有98个bbox边框, 如果对象的核心地位是在某个cell里,那这个cell对应的预测后果就要对这个对象负责,每个cell含有B对信息,每对信息里蕴含(x,y,w,h,confidence),并且每个cell里还蕴含20(因为PASCAL VOC数据集中有20个标记类)个类别的检测概率Pr(class|Object),这里对这里几个变量进行解释: x,y,w,h的解释: x,y是物体核心所在的地位坐标;w,h是预测边框bbox的宽与高(此图引于视频https://www.bilibili.com/vide... 中的解释图片)其实x,y,w,h都是通过归一化解决过的,如上图,已图片左上角为(0,0)核心坐标点,x,y未归一化解决前是绝对左上角的坐标,,该cell的左上角坐标是(149,149),如图中公示解决后的后果就是咱们失去的x,y;w,h是预测边框的相对宽(高)除以输出图片的相对宽(高)解决而来的; confidence的解释: $confidence=Pr(object)*IoU$其中Pr(object)的意思是如果该grid cell里有蕴含物体核心,那么他的值就是1,否则就是0;IoU的意思是cell预测进去的bbox地位与实在边框地位的交并比;论文中还提到,将cell对应的Pr(class|Object)与confidence做乘积,就能够失去每个类别与IoU的乘积,公式如下,也就是晓得里每个类别的得分值,这些得分值代表该类别物体呈现在框中的概率和边界框与物体的拟合水平。其实看到这里,就曾经将yolov1检测的外围思路讲完了,能够计算出来,最初输入的具备$7*7*(2*5+20)$个张量,计算公式论文中也说的很分明:$S*S*(B*5+C)=7*7*(2*5+20)$3、 网络论文称受googLeNet启迪,设计的网络结构:由上图能够可看出该网络结构设计里24层卷积层,最初两层是全连贯层;在ImageNet会先进行预训练,前20层卷积层+1个均匀池化层+1个全连贯层,预训练的输入作为输出再通过四个随机初始化的卷积层+2个全连贯层(因为预训练模型中退出卷积层和全连贯层能够进步性能),最初的输入是$7*7*30$,即为$7*7$个cell,每个cell携带30个维度的信息量,后面曾经介绍过这30个信息是什么了。 补充卷积层计算相干常识: 4、损失函数该损失函数公式的组成能够分为三局部误差和,如图阐明:对于这个标示,论文中给的解释是,对于第i个cell的第j个bbox(一个cell有B个bbox,j是其中置信度最大的那个bbox),如果有物体中心点在改cell中,那就取置信度最大的那个第bbox;则指是(总bbox-上述的bbox),剩下的这些bbox;文中有解释到,由下面这两个标注量的意义能够晓得,如果不给定位误差加权重的话,因为定位误差具备的bbox绝对noobj的状况会少很多,这样公式不加权重同等对待系数为1相加显然是不合理的,因而论文加了coord = 5和noobj =0 .5两个权重变量,最初组成了上式的误差公式

November 15, 2020 · 1 min · jiezi

关于目标检测:记录mac在gpu服务器远程部署pytorch版本的yolov3含安装anaconda

1、 在mac终端登陆近程服务器 ssh xxx@xxxx.xxxx.xxxx.xxxx2、 建好放yolov3我的项目的文件夹,进入,并克隆yolov3我的项目;我的项目连贯:https://github.com/ultralytic... git clone https://github.com/ultralytics/yolov3.git3、下载依赖 pip install -r requestments.txt遇到问题如下:起因:以后python版本是2.7的,pip装置的依赖版本达不到requestments.txt文件里的要求 解决: 下载python3,并遇到如下问题起因:以后gpu服务器给我的帐号没有root权限 解决: 装置anaconda来兼容多版本python4、装置anaconda:我这里是命令行形式下载,我的零碎是ubuntu18.04 先去anaconda官网找的符合要求的安装包门路,因为我说ubuntu,所以选的是lunix版本,我选的安装包门路是:https://repo.anaconda.com/arc...wget https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh再运行bash Anaconda3-2020.07-Linux-x86_64.sh #前面的文件名看本人下载的是什么就写什么按enter键进入,遇到发问输出yes持续,至装置结束 在终端测试python3是否存在,没有的话就装置python3conda install python3遇到问题:显示conda命令不辨认 起因:没有配置环境门路 解决: 确定本人anaconda的装置门路,个别是/home/xxx(你的近程服务用户名)/anaconda3运行 echo 'export PATH="/home/xxx/anaconda3/bin:$PATH"' >> ~/.bashrc #xxx要记得依据本人的状况改再重启一下服务,使配置失效 source ~/.bashrc这时候就能够应用conda命令了! 至此python3问题解决5、重新安装requestments.txt里的依赖 pip3 install -r requestments.txt待装置实现,至此,pythroch版本的yolov3我的项目部署实现,下载yolov3权重文件来测试一下 wget -c https://pjreddie.com/media/files/yolov3.weights运行 python3 detect.py --cfg cfg/yolov3.cfg --weights yolov3.weights --source data/samples/bus.jpg原我的项目yolov3/data/samples下有两张样图,运行结束后会在yolov3文件夹下生成一个文件夹output,外面即有刚预测进去的图片,下图是我的预测图片后果

November 13, 2020 · 1 min · jiezi