Real Time Pear Fruit Detection and Counting Using YOLOv4 Models and Deep SORT

论文周阅读(13周)

论文标题:Real Time Pear Fruit Detection and Counting Using YOLOv4 Models and Deep SORT

论文地址:https://www.mdpi.com/1424-8220/21/14/4803/pdf

论文源码:https://github.com/AlexeyAB/darknet

作者使用RGB数据、最先进的目标检测模型YOLOv4的变体和多目标跟踪算法Deep SORT,为移动应用程序生成鲁棒的实时梨果计数器。

数据收集

RGB视频的采集采用两个不同的摄像机

1、大疆Osmo Pocket 1200万像素 1/2.3英寸传感器 80°广角镜头 f/2.0大光圈

2、手机摄像头 1600万像素 1/2.6英寸传感器 f/1.9光圈 带有OSI防抖

地点

视频采集是在某大学0.15公顷的联合树梨园

其他细节

拍摄天气:阴天和部分阴天

拍摄角度:从树底往上拍摄


将视频裁切成不同的图像帧

视频VLC的场景视频过滤器将视频转换为图像帧,该视频过滤器每隔半秒截屏一次。如60帧视频,每隔三十帧取一次图像。30帧视频每隔十五帧取一次图像。

经过裁剪得到314张4k分辨率图像和134张1080p图像,共计448张图像。


边界框标注

Supervisely对图像标注得到JSON格式的文件,再使用Roboflow把JSON格式转化为对应深度学习框架需要的格式。


数据增强

目的:使梨检测系统在不同的场景更具鲁棒性,减少过拟合,从数据集中提取更多的信息

有两种类型的数据扩充:像素级和空间级。像素级变换会更改图像本身,但保持边界框不变。像素级变换的一些示例包括模糊、更改亮度或曝光、添加噪波、剪切、剪切混合等。如果研究人员希望保留边界框本身,并且不想扭曲目标对象的形状,这将非常有用。另一方面,空间级别的变换会同时更改图像和边界框,这使得与像素级别的变换相比,该变换的编码稍微复杂一些。然而,空间级别的变换在提高目标检测系统的性能方面更为有效。在这项研究中,两种方法都被使用。

对4k图像进行了以下图像转换。

  • 随机翻转(水平或垂直。)
  • 随机亮度:调整−25%至+25%。
  • Random adjustment of gamma exposure :−20%至+20%。(伽马曝光)
  • CoarseDropout:6%的图像像素进行丢失。

图像大小调整为以下大小:416×416、512×512和608×608。通过添加黑色填充来保持图像的纵横比,以避免扭曲梨果实的纵横比。通过扩充,数据集从448张图像扩展到1337张图像。


数据分割

把1337张图片按照70:10:10:10的比例分为训练集、训练验证集、验证集、测试集。

训练集和训练测试集使用高分辨率图像,验证集和测试集使用低分辨率图像。


试验目标
  1. 在给定可用的时间约束、硬件和数据集大小,最大化精度。
  2. 确定YOLOv4系列的推理速度,找出哪一个推理速度接近实时(≥每分钟24帧)。
  3. 了解YOLOv4系列的GPU消耗量(以以每秒浮点计算次数为单位)。CPU和GPU的消耗与使用的FLOPS数量成正比

不同的yolov4变体有着不同的试验效果
  • yolov4 CSP最大限度提高精度的模型
  • yolov4 tiny最大限度提高速度并尽可能降低计算成本的模型
  • yolov4 是精度、速度和计算成本方面的平衡

![image-20211126094037739](/Users/poirot/Library/Application Support/typora-user-images/image-20211126094037739.png)

对于yolo算法的介绍

1、将图片划分为不同的小网格

2、使用检测器生成边界框和置信度;生成类概率图

3、最终生成检测框

预测具有检测到C类对象的相应置信度的边界框(上图)。设置阈值以消除低置信度的边界框。因此,大于阈值的概率被视为检测。

yolov4神经网络图

![image-20211126094617645](/Users/poirot/Library/Application Support/typora-user-images/image-20211126094617645.png)


deepsort结构

![image-20211126095521492](/Users/poirot/Library/Application Support/typora-user-images/image-20211126095521492.png)


用于评估YOLOv4模型的性能指标如下所述

![image-20211126100302878](/Users/poirot/Library/Application Support/typora-user-images/image-20211126100302878.png)


yolov4以及其变种的模块

![image-20211126100627237](/Users/poirot/Library/Application Support/typora-user-images/image-20211126100627237.png)

跨阶段部分(CSP)连接是一种降低计算复杂性的技术,最初源自CSPNet。为了“CSP化”,网络将基础层的特征图分为两部分,然后通过:转换→ 串联→ 转换,再合并两部分。CSP优化通过截断梯度流提高了精度并缩短了推理时间。此外,CSP自动化支持模型的缩放。由于这些原因,CSP连接被合并到YOLOv4型号的主干中。

个人理解:这个有点像ResNet残差网络,但是不是为了降低过拟合而是减少计算量

![image-20211126101427742](/Users/poirot/Library/Application Support/typora-user-images/image-20211126101427742.png)


CSP-ization of Darknet53网络的优点(yolov4+yolov4-CSP)
  • 更大的输入网络大小,这使得能够检测更多的小尺寸对象。
  • 更多的卷积层3×3,这导致更大的感受野,以覆盖增加的输入网络大小。
  • 参数数量越多,在单个图像中检测多个不同大小物体的能力越大。
提高CSP-ization of Darknet53网络的其他方法
  1. 数据增强技术,如CutMix和Mosaic
  2. 作为正则化方法的DropBlock
  3. 类标签平滑

Yolov4-tiny主干网络

对于YOLOv4 tiny来说,重要的是在不牺牲精度的情况下使计算高效快速。因此,在YOLOv4 tiny的主干CSPOSANet的计算模块之间实现了一次聚合(OSA),该聚合源自VoVNet,以降低计算复杂度。这通过去除多余的重复梯度信息,减少了模型的大小和参数的数量。由于CSPOSANet具有更快的收敛速度,因此使用泄漏校正线性单元作为激活函数。

泄漏校正线性单元(或Leaky ReLU)是ReLU的改进版本。不同之处在于前者允许在其整个域上有一个小的非零梯度,这与ReLU不同(下图)。发现使用Leaky ReLU的深度神经网络比使用ReLU的深度神经网络收敛速度稍快。然而,与更新颖的Swish和Mish相比,Leaky ReLU的精确度稍低,但标准偏差较低。然而,Leaky ReLu在75%的IoU阈值和大对象下具有更好的性能,并且由于较低的复杂性而具有较低的计算成本。

Mish是一个平滑的、连续的、自正则化的非单调激活函数,能够实现更平滑的损失情况,这有助于更容易的优化和更好的泛化。它具有更宽的最小值,因此可以实现更低的损耗。由于这些优点,实现Mish的神经网络在目标检测中具有更高的精度和更低的标准差。此外,它保留了它的前辈(Swish和Leaky ReLU)在上无边界和下有边界方面的特征。前者避免了饱和(这通常会导致训练速度减慢),而后者则会产生更强的正则化效果(适当地拟合模型)。

三种激活函数

![image-20211126101548821](/Users/poirot/Library/Application Support/typora-user-images/image-20211126101548821.png)


如果目标是在不牺牲大部分精度的情况下最大限度地提高速度,那么Leaky ReLU将更合适。那么,如果准确度应该最大化,Mish将是更好的选择。下表总结了使用的激活函数及其对每个YOLOv4模型的相应影响。

![image-20211126101721605](/Users/poirot/Library/Application Support/typora-user-images/image-20211126101721605.png)


Path Aggregation Network (PANet)

PANet被用作YOLOv4和YOLOv4 CSP的Neck,以代替FPN(在YOLOv3中使用)。该技术通过自底向上的路径扩充和自适应特征池,为不同的检测器级别聚合不同主干级别的参数。自底向上的路径扩充通过将细粒度的本地化信息提供给顶层(分类器),缩短了信息路径并增强了特征金字塔。另一方面,自适应功能池恢复每个方案和所有功能级别之间的中断信息路径(创建更干净的路径)。它使用元素方式的max操作将不同层的信息融合在一起。因此,PANet可确保重要功能不会丢失。由于这些原因,PANet被用作YOLOv4和YOLOv4 CSP的Neck。


![image-20211126161938795](/Users/poirot/Library/Application Support/typora-user-images/image-20211126161938795.png)


前1000次迭代,学习率线性增加。之后采用多步长衰减策略调整学习率。

![image-20211126103324902](/Users/poirot/Library/Application Support/typora-user-images/image-20211126103324902.png)


结论

![image-20211126170320615](/Users/poirot/Library/Application Support/typora-user-images/image-20211126170320615.png)

posted @ 2021-12-02 19:42  匈牙利算法  阅读(92)  评论(0编辑  收藏  举报