部署可扩展的目标检测管道:推理过程(下)
部署可扩展的目标检测管道:推理过程(下)
融合
感兴趣的目标可以被遮挡。有时只能看到目标的一小部分(少至几个像素)。
• 图19.车辆和交通信号灯被遮挡。
• 图20:阻塞了总线。
• 图21:左侧的人被遮挡了。
像YOLOv3这样的基于CNN的目标检测方法有一个缺点,即要求特征图生成对目标遮挡具有鲁棒性。而且,仅引发许多特征图并不能提高性能。已知诸如空间金字塔池之类的方法可以通过改进常规YOLOv3算法来更好地处理遮挡。
照明条件
照明的影响在像素级别上非常明显。
• 图22. 白天。
• 图23:傍晚。
• 图24:夜间。
结果表明,YOLOv3的分类和定位受光照均匀度的影响。
背景
感兴趣的目标可能会混入其环境中,从而使其难以识别。
• 图25.停车场背景。
• 图26:公路背景。
• 图27:城市市区背景。
YOLOv3在预测边界时遍历整个输入图像。通过附加的上下文,YOLO在背景区域中显示出更少的误报。
类间变异
感兴趣的类别通常可以相对较宽,例如车辆。有许多不同类型的车辆,每种都有自己的外观。
图28.汽车,公共汽车和卡车的车辆类型。
YOLOv3通过避免软最大化类来最大化类间可变性。取而代之的是,每个班级得分的预测都使用带有阈值的逻辑回归。
类内变异
同一类的目标看起来可能大不相同。
• 图29.绿色汽车。
• 图30:橙色车。
• 图31:黄色汽车。
YOLOv3可以很好地执行目标识别,而不管图像帧中是否存在类内差异。准确性是正确结果在所检查病例总数中所占的比例。
分类精度=预测多少/实际标签的实际数量
类 真实标签计数
汽车 1,078,642
总线 33,307
卡车 63,128
行人 62,837
红绿灯 827,182
标签总数(所有类别的总和) 2,065,096
表1.真实标签计数。
图32.与预测相比,目标检测的groundtruth。
类 正确的预测(计数) 总体精度 (%) 分类准确度 (%)
汽车 172,583 8 16
卡车 2,525 1个 4
总线 2,332 1个 7
红绿灯 33,087 2 4
行人 15,709 7 25
表2.目标检测精度。
正如所观察到的那样,从准确性的角度来看,这些类并不是很好的平衡,因此对于自动驾驶汽车开发中的模型图像分类性能而言,它们不是合适的选择。
图33.具有每个类的精度和召回性能指标的目标检测预测性能指标。
目标检测精度不足以从整体预测中识别正确的预测。
总体上较低的准确性似乎还表明,用作YOLOv3模型构建的训练数据的MSCOCO数据集并不严格代表输入数据集。数据集的这种移动导致了明显的性能下降。在自动驾驶汽车中普遍存在的训练数据集选择偏差和动态环境条件是一个普遍存在的问题,需要解决以提高目标检测精度。
通过使用来自预训练的YOLOv3模型的转移训练进行重新训练,可以提高低目标检测的准确性。在训练阶段,CNN框架初始化预训练的YOLOv3模型。使用自定义数据集对网络的各个层进行微调,可获得更好的目标检测精度。
预训练的YOLOv3模型再训练过程是另一篇文章的主题。但是,对于这篇文章,进一步评估了以mAP为最终指标的性能指标。对性能指标进行测量,使所有可配置参数保持不变,包括“交叉口相交”(IOU)阈值,客观置信度和NMS阈值,以便可以将模型性能与基准MSCOCO数据集进行比较。预训练过程的目标是缩小绩效差距。
准确性衡量的是正确预测的比例,而准确性衡量的是所有预测的阳性中实际阳性的比例,而召回率则衡量的是预测为阳性的真实阳性的数量。
对于每个类,请使用以下公式:
精度=多少预测是肯定的/总预测
召回=预测的有多少是正数/实际数为真标签
• 图34.总线类的精度和召回性能指标。
• 图35.卡车级的精度和召回性能指标。
• 图36.汽车类别的精度和召回性能指标。
• 图37.红绿灯类的精度和召回性能指标。
精确度和召回率曲线是评估目标检测器性能的绝佳方法,因为通过为每个目标类别绘制图形来改变置信度。
• 如果一个类别的目标检测器的精度随查全率的提高而保持较高,则它是好的。通过改变置信度阈值,查准率和查全率仍然很高。
• 一个弱目标检测器,需要增加被检测物体的数量(较低的精度)来检索所有地面真实物体(较高的查全率),从高精度值开始,并随着查全率的提高而减小。
声音目标检测器的其它特征包括:
• 高精度(0个误报)检测器,仅可识别相关目标
• 高召回率(0个假阴性)检测器,可以找到所有地面真相
称为F1分数的单数评估指标有助于控制精度和召回率之间的权衡。
F1分数= 2 精度召回率/(精度+召回率)
图35.在不同阈值水平下,F1按图像评分。
当精度和召回率都很高时,F1分数就很高。对于所有其它结果,F1得分较低。
评估目标定位
目标检测过程也需要对目标进行定位。使用IOU将预测的边界框与地面真值边界框进行比较。
IOU =两个预测边界框和相应的地面真相边界框的交集面积/两个预测边界框和相应的地真边界框的相交面积
IOU的范围可以描述为0 <= IOU <= 1,其中零表示无重叠,而IOU显示完美重叠。通常,具有特定IOU阈值的框确定候选预测边界框。使用0.5 IOU阈值,与YOLOv3算法使用的基准IOU阈值相同。
添加到YOLOv3目标检测算法中的NMS组件也使用IOU概念来使算法性能更好。NMS计算IOU以删除多个检测,以为每个检测到的目标选择一个边界框,以生成推理局部图像输出。
评估目标检测
在给定输入数据集的情况下确定模型的性能时,使用单数度量很有帮助。
平均平均精度(“ mAP”)是每个类的平均精度的平均值,如下表所示,其IOU阈值为0.5,与YOLOv3算法使用的基准IOU阈值相同。
AP(汽车) 25
AP(巴士) 15
AP(卡车) 15
AP(交通灯) 25
AP(人) 40
地图 24部署可扩展的目标检测管道:推理过程(下)
表3.性能指标。
随着IOU阈值的增加,mAP会降低。假设YOLOv3可以在三个尺度上进行预测,则可以分别计算小型,中型和大型目标的mAP,并且性能可能会分别从低到高变化很大。
归纳
解决数据分布,数据类型,注释要求,质量参数,数据量以及自动化有效性方面的变化敏感性,对于实现最佳注释精度和速度至关重要。
基于NVIDIA GPU的PyTorch YOLOv3加速的目标检测推理管道显示了在现实环境数据中受影响的一些典型挑战,例如在注释自主数据时受到照明,旋转,缩放和遮挡的影响。这项工作可作为创建由推理性能指标支持的优化的,端到端,可扩展管道的概述,这有助于评估在输入数据集上执行的注释推理输出的质量。
部署可扩展的目标检测管道:推理过程(下)相关推荐
- 部署可扩展的目标检测管道:推理过程(上)
部署可扩展的目标检测管道:推理过程(上) 基于YOLOv3的目标检测推理过程的所有代码都可以在eriklindernoren/PyTorch-YOLOv3 GitHub repo找到. 为了进行审查, ...
- Yolo:实时目标检测实战(下)
Yolo:实时目标检测实战(下) YOLO:Real-Time Object Detection After a few minutes, this script will generate all ...
- 【读点论文】PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices,一种可在边缘设备上部署的深度学习目标检测
PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices https://github.com/ChanChiChoi/awes ...
- 英伟达公开课 | 手把手教你部署一辆高速目标检测Jetbot智能小车
主讲人 | 何琨 英伟达 量子位编辑 | 公众号 QbitAI 3月26日,英伟达图像处理系列公开课第三期线上开播,来自NVIDIA开发者社区的何琨老师,与数百位开发者共同探讨了: 利用NVIDIA迁 ...
- 20、NanoDet训练、测试 以及使用ncnn部署Jetson Nano 进行目标检测和串口数据转发
基本思想:最近想尝试一下nano 上部署nanodet,于是记录一下训练过程,手中有一份labelme标注的数据集,于是开始了一波操作~ 首先进行划分数据集分为训练集和验证集 31.TensorFlo ...
- 【点云3D目标检测】OpenPCDet下Spconv1.x与Spconv2.x的安装问题及解决方法
目录 前言 一.spcon2.x版本的安装 1.安装spcon2.x版本所需要求 2.创建虚拟环境并安装相应的pytorch.torchvision 3.安装spcon2.x 4.测试spcon2.x ...
- 目标检测——各个框架下Tensor和矩阵的维度次序
1 致谢 感谢网友凌风玉提供的资料, 博文链接:https://blog.csdn.net/oLingFengYu/article/details/88033668 2 不同框架下Tensor和矩阵的 ...
- GPU上创建目标检测Pipeline管道
GPU上创建目标检测Pipeline管道 Creating an Object Detection Pipeline for GPUs 今年3月早些时候,展示了retinanet示例,这是一个开源示例 ...
- 10分钟内基于gpu的目标检测
10分钟内基于gpu的目标检测 Object Detection on GPUs in 10 Minutes 目标检测仍然是自动驾驶和智能视频分析等应用的主要驱动力.目标检测应用程序需要使用大量数据集 ...
最新文章
- Oracle EBS渗透测试工具
- 2016年5月9日 晨间日记
- C++与MATLAB数组的存储结构
- 什么是PROTAC技术?
- 产品经理和UX设计师,变革已可期
- dataframe筛选某列的单元格等于某个值的一行数据
- 在ubuntu中使用MYBASE
- LeetCode 141 Linked List Cycle
- NYOJ--218--Dinner(含题目意思)
- asc怎么用 linux zip_asc文件扩展名,asc文件怎么打开?
- Kindle阅读软件,手机阅读器软件、mobi、azw3、epub格式书籍阅读器软件分享
- Ubuntu 16.04安装sogou拼音输入法
- 二十世纪初的心理学时间轴制作
- zabbix3.4绘制网络拓扑图
- 陈艾盐:春燕百集访谈节目第二十一集
- 爬取贝壳网的40000条基本数据
- 利用DHT网络,爬取bt种子。
- matlab极性电容叫什么,什么是无极电容和有极电容,它们在应用上有什么区别? , 无极性电容和有极性电容各自常用在什么电路上?...
- PHP新版资阁网址导航源码+网站盲盒
- 浅谈物联网的各大模块