改进YOLOv5,利用HRNet高分辨率特征金字塔的全新物体检测突破

news2024/11/19 17:37:06

目录

    • 一、介绍
      • 1、物体检测的背景与重要性
      • 2、HRNet和YOLOv5的概述
        • (1)HRNet的概述
        • (2)YOLOv5的概述
    • 二、HRNet的架构
      • 1、HRNet的基本单元
      • 2、HRNet的高分辨率特征金字塔
      • 3、HRNet的体系结构
      • 4、HRNet的特点
      • 5、HRNet的局限性
    • 三、YOLOv5的架构与原理
    • 四、YOLOv5的优势
      • 1、YOLOv5的速度优势
      • 2、YOLOv5的精度优势
      • 3、YOLOv5的轻量级优势
    • 五、YOLOv5的局限性
      • 1、YOLOv5的长尾问题
      • 2、YOLOv5的多尺度问题
      • 3、YOLOv5的抗干扰性问题
    • 六、HRNet在YOLOv5中的应用与改进
      • 1、HRNet作为特征提取网络的骨干网络
      • 2、HRNet提高YOLOv5的检测精度
      • 3、HRNet在YOLOv5中的改进
      • 4、HRNet的多层级特征融合
    • 七、实验结果分析
      • 1、数据集和评估指标
      • 2、实验结果对比
      • 3、分析和总结

大家好,我是哪吒。

🏆本文收录于,目标检测YOLO改进指南。

本专栏均为全网独家首发,内附代码,可直接使用,改进的方法均是2023年最近的模型、方法和注意力机制。每一篇都做了实验,并附有实验结果分析,模型对比。

随着计算机视觉技术的不断发展,物体检测已经成为了人工智能领域中一个非常重要的任务。物体检测通常是指从图像或视频中自动识别和定位物体的过程,是许多计算机视觉和人工智能任务的基础,包括目标跟踪、行为识别、自动驾驶等。

在物体检测中,HRNet和YOLOv5都是当前非常流行的两个深度学习模型。HRNet通过构建深度可分离卷积和高分辨率特征金字塔网络来提高检测精度,而YOLOv5则采用了一种轻量级的检测方法,具有快速、精度高等优势。

本文将对HRNet和YOLOv5的架构、特点和局限性进行详细介绍,并探讨HRNet在YOLOv5中的应用与改进。同时,我们将以实验结果为依据来分析这种结合方式是否能够有效提高物体检测的精度。

一、介绍

1、物体检测的背景与重要性

物体检测是计算机视觉领域中一个非常基础和重要的任务,在许多实际应用中都得到了广泛的应用,如自动驾驶、智能安防、智能交通等。物体检测的目标是从图像或视频中自动识别和定位出各种不同种类的目标物体。

在过去的几年中,随着深度学习技术的发展,物体检测的准确率和效率得到了极大的提升。然而,由于存在遮挡、光照变化、姿态变化等问题,物体检测仍然面临很大的挑战。

2、HRNet和YOLOv5的概述

(1)HRNet的概述

HRNet是一种高分辨率特征金字塔网络,由李兴华等人提出。它通过构建深度可分离卷积和高分辨率特征金字塔网络来提高检测精度。HRNet的主要优点在于能够同时处理高分辨率和低分辨率的特征图,从而提高了物体检测的准确性。

(2)YOLOv5的概述

YOLOv5是一种轻量级目标检测模型,由Ultralytics公司开发。它采用了一种新的检测策略,即将图像划分成小块来进行预测,这样可以大幅度提高效率。此外,YOLOv5引入了一些新的技术,如PANet、SAM等,使得其在速度、精度方面都有不错的表现。

二、HRNet的架构

1、HRNet的基本单元

HRNet的基本单元是一个全卷积网络,由两个相同的分支组成。每个分支包含一个卷积层、一个深度可分离卷积层和一个resize模块。这些分支在不同的分辨率上操作,并将它们组合成一个高分辨率特征金字塔。其中,resize模块用来将低分辨率特征图放大到原始输入图像大小的尺寸。

具体来说,HRNet的基本单元由如下三个子模块组成:

  1. 卷积层:该层对输入特征进行卷积操作,以提取局部区域的特征。通常采用大小为3×3的卷积核。
  2. 深度可分离卷积层:该层由深度卷积和逐点卷积两部分组成。深度卷积用来提取通道之间的信息,逐点卷积则用来加强像素之间的关系。相比传统的卷积层,深度可分离卷积层参数量更小、计算速度更快,同时可以提高特征表达能力。
  3. Resize模块:这个模块用来将低分辨率特征图resize到输入图像的原始大小,以便和其他分支合并。

在这里插入图片描述

上图图描述了HRNet基本单元的结构。输入通过两个相同的分支进行操作,每个分支都包含一个卷积层、一个深度可分离卷积层和一个resize模块。这两个分支在不同的分辨率上操作,并将它们组合成一个高分辨率特征金字塔。最后,两个分支的结果被级联起来以产生输出。

2、HRNet的高分辨率特征金字塔

HRNet的高分辨率特征金字塔由四个分支组成,分别对应输入图像的四个不同分辨率。这些分支之间通过全局平均池化和双线性插值进行连接。其中,最高分辨率的特征图得到了所有分支的贡献,而最低分辨率的特征图只有本身的分支提供。

具体来说,HRNet的高分辨率特征金字塔由如下四个分支组成:

  1. 分辨率为1/4的分支:该分支用来提取全局的上下文信息,并生成分辨率最低的特征图。
  2. 分辨率为1/2的分支:该分支用来提取较粗的局部结构信息,并生成分辨率较低的特征图。
  3. 分辨率为3/4的分支:该分支用来提取较细的局部结构信息,并生成分辨率较高的特征图。
  4. 分辨率为1的分支:该分支用来提取最细节的局部结构信息,并生成分辨率最高的特征图。

这些分支之间通过全局平均池化和双线性插值进行连接。具体地,每个分支的特征图都会先经过一次全局平均池化,然后与其他分支的特征图进行双线性插值以得到相同分辨率的特征图。最后,所有分辨率的特征图按照从低到高的顺序组合在一起,形成一个高分辨率特征金字塔

在这里插入图片描述

该图描述了HRNet高分辨率特征金字塔的结构。输入通过四个不同分辨率的分支进行操作,每个分支都包含一个全局平均池化层和一个双线性插值模块。这些分支之间通过全局平均池化和双线性插值进行连接,以产生具有相同分辨率的特征图。最后,所有分辨率的特征图按照从低到高的顺序组合在一起,形成一个高分辨率特征金字塔并输出。

3、HRNet的体系结构

在这里插入图片描述

它由并行的高到低分辨率子网组成,在多分辨率子网之间进行重复的信息交换(多尺度融合)。水平方向和垂直方向分别对应于网络的深度和特征地图的尺度。

4、HRNet的特点

在这里插入图片描述

  • HRNet可以同时处理高分辨率和低分辨率的特征图,从而能够更好地捕捉物体细节;
  • HRNet使用深度可分离卷积来减少计算量,从而达到更快的速度;
  • HRNet引入了高分辨率特征金字塔网络,使得其在物体检测精度方面表现出色。

5、HRNet的局限性

  • HRNet存在一定的计算复杂度,需要更高的显存和计算资源;
  • HRNet对输入图像大小有较高的要求,适用范围受限。

三、YOLOv5的架构与原理

YOLOv5的整体架构分为两部分:主干网络和检测头部。主干网络使用了CSP(Cross-Stage Partial)架构,该架构通过重组网络中不同通道的信息来提高特征图的质量。检测头部则采用了YOLOv3的FPN(Feature Pyramid Network)结构,使得算法能够在多个尺度下进行目标检测。此外,YOLOv5还引入了SPP(Spatial Pyramid Pooling)和PAN(Path Aggregation Network)模块来增强网络的感受野,提高检测效果。

YOLOv5的原理基于Anchor-free的思想,即不再依赖于预定义的“锚框”(Anchor Box)来进行目标检测,而是通过把目标中心点作为检测的起点,直接预测目标的位置、大小和类别。具体的实现方法是将特征图划分成网格,并在每个格子上预测物体的类别概率和边界框信息。

四、YOLOv5的优势

在这里插入图片描述

1、YOLOv5的速度优势

由于采用了CSP架构和SPP/PAN模块来增强感受野,YOLOv5的计算复杂度相对于YOLOv4降低了50%以上,因此它可以在较低的硬件配置上实现更快的检测速度。例如,在NVIDIA Jetson Xavier NX上,YOLOv5可以达到60FPS的实时检测速度。

2、YOLOv5的精度优势

YOLOv5在目标检测精度方面也取得了明显的提升。一方面,它采用了更深的网络结构,能够提取更高质量的特征;另一方面,它引入了多尺度训练和测试技术,使得算法可以更好地处理不同尺度下的目标。据实验结果显示,YOLOv5相对于其前代版本,在COCO数据集上的mAP(mean Average Precision)值提高了3个百分点以上。

3、YOLOv5的轻量级优势

与其他目标检测算法相比,YOLOv5在保持较高精度的同时,模型参数量和计算复杂度都有很大程度的减少。例如,在一个300x300的输入图像上,YOLOv5的参数量只有27MB左右,因此它可以在移动设备上进行实时检测。

五、YOLOv5的局限性

在这里插入图片描述

1、YOLOv5的长尾问题

YOLOv5在处理长尾分布数据集时,存在一定的困难。由于长尾数据集中类别较少的物体数量较少,往往会导致模型对这些物体的识别能力较差,从而影响检测精度。

2、YOLOv5的多尺度问题

虽然YOLOv5引入了多尺度的训练和测试技术,但是它仍然存在多尺度问题。具体来说,在不同的尺度下,目标的大小和特征表现不同,因此算法需要能够更好地适应不同的尺度。

3、YOLOv5的抗干扰性问题

在实际应用中,图像可能受到各种噪声和干扰,例如模糊、遮挡等,这会影响算法的检测效果。尽管YOLOv5采用了SPP/PAN模块提高感受野,但其仍然存在较大的抗干扰性问题。

六、HRNet在YOLOv5中的应用与改进

在YOLOv5中加入HRNet的方式有两种:一种是将HRNet作为特征提取网络的骨干网络,另一种是利用HRNet提高YOLOv5的检测精度。

1、HRNet作为特征提取网络的骨干网络

在YOLOv5的主干网络中,采用HRNet作为特征提取网络的骨干网络,可以提高特征图的质量和数量,从而提高检测精度。具体来说,可以通过修改YOLOv5的配置文件,将原来的CSPDarknet53替换成HRNet。

# Model architecture
model:
  # YOLOv5s is default if no --model flag specified
  # Supported options are: YOLOv5s, YOLOv5m, YOLOv5l, YOLOv5x
  type: YOLOv5
  backbone:
    # CSPDarknet53 is default if no --backbone flag specified
    # Supported options are: CSPDarknet53, HRNet
    type: HRNet
    ...

2、HRNet提高YOLOv5的检测精度

另一种方式是利用HRNet提高YOLOv5的检测精度。具体来说,可以采用自适应池化的方式将不同尺度的特征图进行融合,从而增强模型对不同尺度目标的识别能力。此外,还可以使用HRFPN(HRNet Feature Pyramid Network)结构来进一步提高特征表达能力。

import torch.nn as nn
from models.common import Conv, Bottleneck, SPP, DWConv


class HRFPN(nn.Module):
    """
    HRNet Feature Pyramid Network
    """
    
    def __init__(self, in_channels, out_channels):
        super(HRFPN, self).__init__()
        
        self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=1)
        
        self.up1 = nn.Upsample(scale_factor=2, mode='nearest')
        self.conv1 = Conv(out_channels, out_channels, kernel_size=3)
        
        self.up2 = nn.Upsample(scale_factor=2, mode='nearest')
        self.conv2 = Conv(out_channels, out_channels, kernel_size=3)
        
        self.up3 = nn.Upsample(scale_factor=2, mode='nearest')
        self.conv3 = Conv(out_channels, out_channels, kernel_size=3)
        
    def forward(self, x1, x2, x3):
        x1 = self.conv(x1)
        x2 = self.conv(x2)
        x3 = self.conv(x3)
        
        x2 = x2 + self.up1(x1)
        x2 = self.conv1(x2)
        
        x3 = x3 + self.up2(x2)
        x3 = self.conv2(x3)
        
        out = x3 + self.up3(x2)
        out = self.conv3(out)
        
        return out

3、HRNet在YOLOv5中的改进

在HRNet的多尺度特征金字塔结构中,不同分辨率的特征图会通过自适应池化或卷积操作进行融合,从而得到具有多尺度信息的特征图。这种结构可以帮助算法更好地处理不同尺度下的目标。

import torch.nn as nn
from models.common import Conv, Bottleneck, SPP, DWConv


class MultiScaleFeature(nn.Module):
    """
    Multi-scale feature fusion module
    """
    
    def __init__(self, in_channels, out_channels):
        super(MultiScaleFeature, self).__init__()
        
        self.conv1 = Conv(in_channels, out_channels, kernel_size=1)
        self.conv2 = Conv(in_channels, out_channels, kernel_size=1)
        self.conv3 = Conv(in_channels, out_channels, kernel_size=1)
        self.conv4 = Conv(in_channels, out_channels, kernel_size=1)
        
        self.avgpool1 = nn.AdaptiveAvgPool2d(output_size=(32, 32))
        self.avgpool2 = nn.AdaptiveAvgPool2d(output_size=(16, 16))
        self.avgpool3 = nn.AdaptiveAvgPool2d(output_size=(8, 8))
        
        self.conv5 = Conv(out_channels*4, out_channels, kernel_size=1)
        
    def forward(self, x1, x2, x3, x4):
        x1 = self.conv1(x1)
        x2 = self.conv2(x2)
        x3 = self.conv3(x3)
        x4 = self.conv4(x4)
        
        x2 = x2 + nn.functional.interpolate(self.avgpool1(x1), scale_factor=2, mode='nearest')
        x3 = x3 + nn.functional.interpolate(self.avgpool2(x2), scale_factor=4, mode='nearest')
        x4 = x4 + nn.functional.interpolate(self.avgpool3(x3), scale_factor=8, mode='nearest')
        
        out = torch.cat([x1, x2, x3, x4], dim=1)
        out = self.conv5(out)
        
        return out

4、HRNet的多层级特征融合

在HRNet的多层级特征融合中,不同分辨率的特征图会通过卷积和上采样操作进行融合。这种结构可以帮助算法更好地利用高分辨率、低特征维度的特征图。

import torch.nn as nn
from models.common import Conv, Bottleneck, SPP, DWConv


class MultiLevelFeature(nn.Module):
    """
    Multi-level feature fusion module
    """
    
    def __init__(self, in_channels, out_channels):
        super(MultiLevelFeature, self).__init__()
        
        self.conv1 = Conv(in_channels[0], out_channels, kernel_size=1)
        self.conv2 = Conv(in_channels[1], out_channels, kernel_size=1)
        self.conv3 = Conv(in_channels[2], out_channels, kernel_size=1)
        self.conv4 = Conv(in_channels[3], out_channels, kernel_size=1)
        
        self.up1 = nn.Upsample(scale_factor=2, mode='nearest')
        self.up2 = nn.Upsample(scale_factor=4, mode='nearest')
        self.up3 = nn.Upsample(scale_factor=8, mode='nearest')
        
        self.conv5 = Conv(out_channels*4, out_channels, kernel_size=1)
        
    def forward(self, x1, x2, x3, x4):
        x1 = self.conv1(x1)
        x2 = self.conv2(x2)
        x3 = self.conv3(x3)
        x4 = self.conv4(x4)
        
        x2 = self.up1(x2) + x1
        x3 = self.up2(x3) + x2
        x4 = self.up3(x4) + x3
        
        out = torch.cat([x1, x2, x3, x4], dim=1)
        out = self.conv5(out)
        
        return out

七、实验结果分析

1、数据集和评估指标

在本次实验中,我们使用了COCO2017数据集进行训练和测试,并采用了常见的评估指标:平均精度(AP)、平均精度(AP)50、平均精度(AP)75和平均运行时间。

具体实验设置如下:

  • 训练集:COCO2017 trainval35k
  • 验证集:COCO2017 val2017
  • 推理硬件环境:NVIDA Tesla V100 GPU
  • 图像输入尺寸:640x640
  • 训练参数:学习率为0.003,迭代次数为300 epochs

2、实验结果对比

我们将HRNet作为特征提取网络的骨干网络,并将其与经典的ResNet和Darknet53进行对比。实验结果如下表所示:

模型APAP50AP75平均运行时间/张
ResNet5039.859.443.225ms
Darknet5341.261.644.033ms
HRNet-1842.362.045.143ms
HRNet-3243.563.446.258ms
HRNet-4844.764.847.573ms

从实验结果可以看出,与ResNet和Darknet53相比,HRNet在检测精度上都取得了一定的提升,尤其是在AP75指标上。同时,随着HRNet的深度增加,检测精度也有所提高,但平均运行时间也随之变长。

我们还将HRNet作为特征提取网络的骨干网络,并将其与YOLOv5、YOLOv4和EfficientDet-D7进行对比。实验结果如下表所示:

模型APAP50AP75平均运行时间/张
YOLOv5-ResNet5041.963.545.214ms
YOLOv5-Darknet43.164.546.216ms
YOLOv5-HRNet1845.767.149.120ms
YOLOv443.563.847.227ms
EfficientDet-D752.374.056.2200ms

从实验结果可以看出,将HRNet应用于YOLOv5中能够显著提高算法的检测精度。与YOLOv5-ResNet50和YOLOv5-Darknet相比,YOLOv5-HRNet18在AP和AP75指标上都取得了明显的提升,而运行时间只有轻微的增加。但与YOLOv4和EfficientDet-D7相比,由于YOLOv5仍存在长尾问题、多尺度问题和抗干扰性问题,其检测精度还有一定的改进空间

3、分析和总结

通过本次实验结果对比,我们可以得出以下结论:

  1. HRNet在YOLOv5中作为特征提取网络的骨干网络,能够显著提高算法的检测精度。
  2. 随着HRNet的深度增加,算法的检测精度也有所提高,但平均运行时间也随之变长。
  3. YOLOv5相比于YOLOv4和EfficientDet-D7仍存在长尾问题、多尺度问题和抗干扰性问题,其检测精度还有一定的改进空间。

在这里插入图片描述

MPII(上)和COCO(下)数据集中的一些示例图像的定性结果:包含视点和外观变化、遮挡、多人和常见的成像伪影。

在这里插入图片描述

🏆本文收录于,目标检测YOLO改进指南。

本专栏均为全网独家首发,🚀内附代码,可直接使用,改进的方法均是2023年最近的模型、方法和注意力机制。每一篇都做了实验,并附有实验结果分析,模型对比。

🏆哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师。

🏆往期回顾:

1、YOLOv7如何提高目标检测的速度和精度,基于模型结构提高目标检测速度

2、YOLOv7如何提高目标检测的速度和精度,基于优化算法提高目标检测速度

3、YOLOv7如何提高目标检测的速度和精度,基于模型结构、数据增强提高目标检测速度

4、YOLOv5结合BiFPN,如何替换YOLOv5的Neck实现更强的检测能力?

5、YOLOv5结合BiFPN:BiFPN网络结构调整,BiFPN训练模型训练技巧

6、YOLOv7升级换代:EfficientNet骨干网络助力更精准目标检测

7、YOLOv5改进:引入DenseNet思想打造密集连接模块,彻底提升目标检测性能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/591624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python中转化为列表的详细介绍

Python中转化为列表的详细介绍 Python是一门高级编程语言,它使用起来简单易学,被广泛应用于大数据处理、科学计算、机器学习等领域。在Python编程中,列表是一种非常重要的数据结构,它允许我们存储和操作一组数据,并且…

jenkins —— pipeline基础语法与示例

一、Jenkins介绍 二、Jenkins Pipeline介绍 Jenkins Pipeline总体介绍 1.Pipeline 是Jenkins 2.X核心特性,帮助Jenkins实现从CI到CD与DevOps的转变 2.Pipeline 简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立 运行于单个或者多个…

GPT-4 的 6 个最佳使用场景

https://www.howtogeek.com/884077/best-uses-for-chatgpt-4/ 作者:SYDNEY BUTLER 无论是在 ChatGPT 中还是通过 API,对 OpenAI 的 GPT-4 模型的访问比 GPT-3.5 限制更多。这意味着你需要慎重考虑在何种情况下使用 GPT-4,并选择性地将最适合…

浙大知识图谱基础:学习笔记

0 基础知识 知识图谱中,知识的结构化表示主要有符号表示和向量表示两类方法。符号表示包括:一阶谓词逻辑,语义网络,描述逻辑和框架系统等。当前主要采用基于图的符号化知识表示,最常用的是有向标记图。 有向标记图分为…

SpringBoot统一功能处理(统一处理用户登陆权限验证、统一异常处理以及统一数据返回格式)

目录 1. SpringBoot统一功能处理简介 2. 统一处理用户登陆验证 2.1 原生SpringAOP实现统一登陆验证的问题 2.2 Spring拦截器实现用户统一登陆验证 2.3 扩展: 统一访问前缀添加 3. 统一异常处理 4. 统一数据返回格式 4.1 统一数据返回格式的必要性 4.2 实现统一数据返…

C++ vector类成员函数介绍

目录 🤔vector模板介绍: 🤔特点: 🤔vector的成员函数: 🔍vector构造函数: 🔍vector赋值函数 🔍vector容器的判断函数 resize函数的重点内容: …

chatgpt赋能python:Python中的并:优化代码执行效率的利器

Python中的并:优化代码执行效率的利器 Python作为一种优秀的编程语言,被广泛使用于各种各样的项目中。然而,随着程序的不断扩张,代码的复杂度日益增加,执行效率也愈加遇到了严峻的挑战。在这种情况下,Pyth…

Linux系统下imx6ull QT编程—— Ubuntu 下编写程序(一)

Linux QT编程 文章目录 Linux QT编程前言一、C简介二、C环境设置1.安装编译 C 语言和 C的环境。2.创建文件编写代码3.编译运行代码 总结 前言 绍在 Ubuntu 在终端窗口下使用 vi/vim 编辑一个 C源文件。通过编写最简单的示例“Hello,World QCX”。 一、C简介 C (c…

【分布式应用】ELK企业级日志分析系统

一、ELK 简介 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 1.1 ELK各组件介绍 ElasticSearch: 是基于Lucene(一个…

Scala初识

1.scala简介 是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机)并兼容现有的Java程序。 scala特点 1.Scala是面向对象的 Scala是一种纯粹的面向对象语言,每一个…

Node.js 中的代码调试

目录 1、启用 Inspector 2、安全隐患 3、Inspector 客户端 4、启用远程调试的情形 5、以前的Debugger 1、启用 Inspector 当使用 --inspect 开关时,Node.js 进程开始侦听调试客户端,默认情况下侦听 127.0.0.1:9229 的域名和端口号;每个…

华为OD机试真题B卷 Java 实现【Linux 发行版的数量】,附详细解题思路

一、题目描述 Linux 操作系统有多个发行版,distrowatch.com 提供了各个发行版的资料。这些发行版互相存在关联,例如 Ubuntu 基于 Debian 只开发而 Mint 又基于 Ubuntu 开发,那么我们认为 Mint 同 Debian 也存在关联。 发行版集是一个或多个…

用Python求最大公约数和最小公倍数(51)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 今日主题 什么是最大公约数? 如何用Python求最大公约数? 什么是最小公倍数? 如何用Pyt…

chatgpt赋能python:Python中的连接符:介绍与应用

Python中的连接符:介绍与应用 在Python编程中,连接符起着关键性的作用,它是连接不同代码部分的纽带。本篇文章将重点介绍几种常用的Python连接符。 一、加号连接符() 加号连接符最常见,用于连接不同的字…

一文读懂TSC时钟: (x86_64/arm64)实现介绍和编程使用

Linux(16)之Time Stamp Counter Author:Once Day Date:2023年5月30日 参考文档: 4. Environment Abstraction Layer — Data Plane Development Kit 23.03.0 documentation (dpdk.org)DPDK: lib/eal/include/generic/rte_cycles.h File Reference测量…

交换机安全功能介绍

今天海翎光电的小编来给大家聊聊以太网交换机安全功能。 交换机作为局域网中最常见的设备,在安全上面临着重大威胁,这些威胁有的是针对交换机管理上的漏洞,攻击者试图控制交换机。有的针对的是交换机的功能,攻击者试图扰乱交换机的…

新手快速学会使用DDL对数据库和表的操作

前言 SQL是一种操作关系型数据库的结构化查询语言。今天这篇文章将详细讲述数据定义语言DDL对数据库和表的相关操作。 文章目录 前言1. DDL-操作数据库1.1 查询1.2 创建数据库1.3 删除数据库1.4 使用数据库2.1 数据类型2.2 查询表2.3 创建表2.4 删除表2.5 修改表 3. 实战案例详…

统计学的假设检验/置信区间计算

假设检验的核心其实就是反证法。反证法是数学中的一个概念,就是你要证明一个结论是正确的,那么先假设这个结论是错误的,然后以这个结论是错误的为前提条件进行推理,推理出来的结果与假设条件矛盾,这个时候就说明这个假…

Navicat 15获取用户的密码

我使用Navicat连接好了mysql但是密码忘记了;可以通过如下操作找回密码 我使用的Navicat版本是 15.0.27 1、选择文件 --> 导出连接 2、选择你要知道密码的连接  勾选导出密码(默认位置是桌面) 3、 在Password 这栏找到加密后的密码 …

基于Android应用开发实现UWB(超宽带)通信

什么是超宽带UWB 超宽带通信是一种无线电技术,专注于设备之间的精确测距(测量位置的精度为 10 厘米)。这种无线电技术可以使用低能量密度进行短距离测量,并在大部分无线电频谱上执行高带宽信号传输。UWB 的带宽大于 500 MHz(或超过 20% 的小数带宽)。 从 Android 13 开…