YOLOv3 学习笔记

文章目录

  • 前言
  • 一、YOLOv3贡献和改进
  • 二、YOLOv3的核心概念
    • 2.1 基础理论和工作原理
    • 2.2 YOLOv3对比YOLOv1和YOLOv2
      • 2.2.1 YOLOv1
      • 2.2.2 YOLOv2/YOLO9000
      • 2.2.3 YOLOv3
  • 三、YOLOv3的网络架构
    • 3.1 Darknet-53
    • 3.2 残差连接
    • 3.3 多尺度预测
    • 3.4 锚框
    • 3.5 类别预测和对象检测
    • 3.6 上采样和特征融合
    • 3.7 批量归一化和Leaky ReLU
  • 四、YOLOv3的损失函数
  • 五、实际应用和局限性
    • 5.1 实际应用
    • 5.2 局限性
  • 参考资料
  • 总结


前言

目标检测是计算机视觉领域的一个核心任务,涉及到在图像中识别和定位对象。YOLOv3(You Only Look Once, Version 3)作为这一领域的重要进展,以其独特的方法和卓越的性能吸引了广泛关注。与先前版本相比,YOLOv3带来了多项创新,不仅提高了检测的准确性和速度,还扩展了模型的适用范围。本文旨在全面探讨YOLOv3的主要贡献和改进,分析其核心概念和网络架构,并讨论其在实际应用中的潜力与局限性。
YOLOv3


一、YOLOv3贡献和改进

YOLOv3的主要贡献和改进包括:

  1. 更快的检测速度:YOLOv3相较于其他具有可比性能的检测方法运行速度更快。

  2. 改进的边界框预测:YOLOv3使用尺寸簇作为锚框来预测边界框,对于每个边界框预测四个坐标,并使用sigmoid函数预测框的中心坐标。

  3. 多尺度预测:在网络的不同尺度上进行边界框的预测,这使得YOLOv3能够从早期网络中提取的细粒度特征中受益。

  4. 高性能检测:尽管在一些指标上仍落后于其他模型如RetinaNet,但在传统的目标检测指标mAP(在IOU=0.5时)上,YOLOv3表现出色,几乎与RetinaNet相当,远高于SSD变体。

  5. 对小对象的改进检测:YOLOv3通过新的多尺度预测,在小对象上表现出相对较高的APS性能,尽管在中等和较大尺寸对象上的性能有所下降。

二、YOLOv3的核心概念

2.1 基础理论和工作原理

  1. 单一神经网络直接预测:YOLOv3 使用单一的深度神经网络直接从图像中预测边界框和类别概率。这种方法与传统的目标检测方法不同,后者通常先生成潜在的边界框,然后对这些框进行分类和精细化。

  2. 整体图像分析:在YOLOv3中,整个图像在单次推断过程中被处理,使得预测能够利用图像中的全局上下文信息。这有助于系统更好地理解图像内容,从而改善检测性能。

  3. 边界框预测:YOLOv3通过神经网络预测边界框的位置和大小。每个预测包括边界框的中心坐标、宽度和高度。这些预测是相对于特定网格单元的,并且以尺寸簇(anchor boxes)为基础。

  4. 类别预测:与边界框位置的预测同时进行的还有类别预测。每个边界框都会预测属于各个类别的概率。

  5. 多尺度预测:YOLOv3在网络的不同层上执行预测,使其能够同时检测不同尺寸的对象。这是通过在网络的不同分辨率层面上添加预测来实现的,从而使网络能够更好地处理从小到大的各种尺寸的对象。

  6. Darknet-53特征提取器:YOLOv3使用了一种新的特征提取器Darknet-53,它是一个深层神经网络,用于提取图像特征,以便于后续的分类和定位任务。

通过这些方法,YOLOv3能够快速且准确地在图像中定位和识别多个对象,使其在实时应用中非常有效。

2.2 YOLOv3对比YOLOv1和YOLOv2

2.2.1 YOLOv1

  1. 基础架构

    • YOLOv1是第一个版本,提出了单一神经网络直接从整幅图像中预测边界框和类别的概念。
    • 使用了24个卷积层和2个全连接层。
  2. 检测方式

    • YOLOv1将图像分成7x7的网格,并在每个网格单元中预测边界框和类别概率。
    • 由于这种分割方式,它在处理相互靠近的小对象或一大群对象时效果不佳。
  3. 局限性

    • 对小对象的检测能力有限。
    • 边界框的准确性较低,特别是在对象形状多样性较高的情况下。

2.2.2 YOLOv2/YOLO9000

  1. 改进的架构

    • 引入了“Darknet-19”架构,包含19个卷积层和5个最大池化层。
    • 优化了网络结构以提高速度和准确性。
  2. 锚框(Anchor Boxes)

    • 引入了锚框概念,用于预测多个边界框。
    • 这一变化提高了对不同尺寸和形状对象的检测能力。
  3. 更好的特征学习

    • 通过多尺度训练提高了对不同尺寸对象的检测能力。
  4. YOLO9000特性

    • 能够同时检测超过9000个不同类别的对象。
    • 使用了一种联合训练方法,结合了分类和检测任务。

2.2.3 YOLOv3

  1. 更深的网络架构

    • 引入了“Darknet-53”,这是一种更深的卷积网络,结合了残差连接,用于更有效的特征学习。
  2. 更好的边界框预测

    • 使用3个不同尺度的预测,每个尺度使用不同大小的锚框,这改进了对不同尺寸对象的检测能力。
  3. 类别预测的改进

    • 对于每个边界框,YOLOv3使用逻辑分类器而不是softmax,这使得模型在预测多标签类(即一个对象属于多个类别)时更为有效。
  4. 更高的性能

    • 在保持较高检测速度的同时,提高了检测准确性,特别是在小对象和不规则形状的对象上。

三、YOLOv3的网络架构

YOLOv3的网络架构是其成功的关键因素之一,它包含以下主要特点:

3.1 Darknet-53

  • YOLOv3使用的主要特征提取网络是Darknet-53,即:有53层深度的卷积神经网络。
    ( 2 + 1 × 2 + 1 + 2 × 2 + 1 + 8 × 2 + 1 + 8 × 2 + 1 + 4 × 2 + 1 = 53 ) (2 + 1\times2 + 1 + 2\times2 + 1 + 8\times2 + 1 + 8\times2 + 1 + 4\times2 + 1 = 53) (2+1×2+1+2×2+1+8×2+1+8×2+1+4×2+1=53),Residual不是卷积层,最后的Connected是全连接层也用的卷积,一共53个。
    网络参数
  • Darknet-53结合了Darknet-19(YOLOv2使用的特征提取网络)的特点,并加入了残差连接(Residual Blocks),从而提高了特征提取的能力和网络的训练速度。

3.2 残差连接

残差连接(ResNet)帮助网络更有效地进行深层训练,减少了训练过程中的信息丢失。这些连接允许网络学习恒等映射,从而在增加网络深度的同时保持性能。
Residual
ResNet

3.3 多尺度预测

  • YOLOv3在网络的三个不同尺度上进行预测,这允许它检测不同大小的对象。
  • 它在网络中较深层的部分检测大尺寸对象,在较浅层的部分检测小尺寸对象。

多尺度预测

3.4 锚框

在YOLOv3中,锚框(Anchor Boxes)是用于预测边界框的一种关键机制,具体包括以下两个主要方面:

1. 使用尺寸簇作为锚框

  • YOLOv3引入了尺寸簇(dimension clusters)作为锚框的概念,这些尺寸簇是通过对训练数据集中的边界框尺寸进行k-means聚类得到的。
  • 这些尺寸簇代表了边界框尺寸的一种预先定义的模式,可以更好地适应不同形状和尺寸的对象。
  • 使用尺寸簇作为锚框的做法,有助于模型在训练过程中学习如何预测不同大小和比例的对象。

2. 多尺度上的不同大小锚框

  • YOLOv3在网络的三个不同尺度上进行边界框的预测,每个尺度使用三种不同大小的锚框,总共九种尺寸。
  • 这些不同尺度的预测使得YOLOv3能够同时检测不同大小的对象,从大型到小型对象均能有效处理。
  • 在每个尺度上,网络会预测属于每个锚框的边界框的位置、尺寸以及与对象类别相关的概率信息。
  • 多尺度预测的设计不仅提高了对小对象的检测能力,还增强了模型对于中等和大型对象的检测精度。

在数据结构层面,实现锚框的方法通常涉及以下几个关键步骤:

  1. 输出张量的维度设计
  • YOLOv3网络的输出是一个四维张量,通常表示为 [ B , S , S , ( C + 5 ) × A ] [B, S, S, (C + 5) \times A] [B,S,S,(C+5)×A]
  • 这里, B B B 是批量大小, S × S S \times S S×S 是网格的尺寸(网络将输入图像分割成 S × S S \times S S×S 的网格), C C C 是类别数量, 5 5 5 表示每个边界框的四个坐标加上一个置信度, A A A 是每个网格单元的锚框数量。
  1. 锚框尺寸的预定义
  • 锚框的尺寸是通过在训练集上运行k-means聚类算法预先确定的。
  • 对于每个尺度,会有一组特定的锚框尺寸(例如,YOLOv3总共使用了9种尺寸的锚框,分配到三个不同的尺度)。
  1. 网格单元与锚框的关联
  • 每个网格单元负责预测与其位置相关的锚框的边界框。
  • 对于每个网格单元,模型都会输出 A A A 个锚框的预测,每个锚框预测包括边界框的四个坐标、一个置信度和类别概率。
  1. 边界框预测的编码
  • 边界框的坐标是相对于其所在网格单元的位置和所选锚框的尺寸进行编码的。
  • 预测的边界框坐标通常是通过应用转换函数(例如sigmoid函数)来规范化的,使得输出值落在0到1之间。

数据结构

3.5 类别预测和对象检测

在YOLOv3中,类别预测和对象检测是两个关键的组件,它们共同决定了网络如何识别和分类图像中的不同对象。

1. 对象存在的置信度

  • YOLOv3中的每个边界框都会预测一个“对象置信度”分数,这个分数表示边界框中包含目标的概率。
  • 这个置信度分数不仅反映了模型对是否存在某个对象的信心程度,而且还考虑了预测的边界框与实际对象边界框的匹配程度。
  • 如果一个边界框中包含对象,其置信度应接近1;如果不包含对象,则接近0。

2. 多个类别的概率

  • 除了置信度,YOLOv3还会为每个边界框预测多个类别的概率。
  • 这意味着对于每个边界框,模型都会评估图像中的对象属于每个可能类别的概率。
  • 这些类别概率是独立的,允许单个边界框同时预测多个类别的存在。

3. 使用逻辑回归预测类别分数

  • YOLOv3使用逻辑回归(而非传统的softmax函数)来预测每个类别的分数。
  • 这种方法允许模型对每个类别进行独立的概率评估,这对于多标签分类(即一个对象可能属于多个类别)是必要的。
  • 逻辑回归输出的是一个介于0和1之间的值,表示某个类别存在的概率。

3.6 上采样和特征融合

在YOLOv3的网络架构中,上采样(Upsampling)和特征融合(Feature Fusion)是两个关键技术,它们共同提升了模型在目标检测任务中的性能,特别是在处理小尺寸对象时:

1. 上采样

  • 原理:上采样是一种增加数据维度的操作,用于将特征图的尺寸放大。在YOLOv3中,上采样用于将深层次的特征图(低分辨率、高层次特征)放大到更高分辨率。
  • 目的:这一过程对于恢复小尺寸对象的细节特别重要,因为在卷积和池化操作后,这些细节可能会丢失。

2. 特征融合

  • 方法:特征融合涉及到将不同层次的特征图组合在一起。在YOLOv3中,它通常涉及将上采样的特征图与前面层次的特征图(高分辨率、低层次特征)结合。
  • 效果:通过这种方式,模型能够同时利用深层次(高层次)的语义信息和浅层次(低层次)的细节信息。这种融合使得模型对小尺寸对象的检测更为敏感和准确。

对检测小尺寸对象的重要性

  • 在目标检测中,小尺寸对象的识别通常更为困难,因为在经过多层卷积和池化后,小对象的特征可能会变得不够明显。
  • 通过上采样和特征融合,YOLOv3能够恢复这些小对象的细节,同时保留对大型对象的高级语义理解。

上采样和特征融合在YOLOv3中的应用显著提高了模型对图像中细节的感知能力,尤其是对小尺寸对象的检测能力,从而使其成为一个在各种尺寸对象检测方面都表现出色的目标检测系统。

3.7 批量归一化和Leaky ReLU

在YOLOv3的网络架构中,批量归一化(Batch Normalization)和Leaky ReLU(Rectified Linear Unit)激活函数的使用对于提高模型的训练稳定性和效率起着重要作用:

1. 批量归一化

  • 目的:批量归一化是一种用于训练深度神经网络的技术,旨在标准化每个卷积层的输入,使其均值接近0,标准差接近1。
  • 原理:通过对每个小批量数据进行归一化处理,批量归一化减少了内部协变量偏移(internal covariate shift)的问题,即网络各层输入分布的变化。
  • 效果:这种标准化过程有助于稳定神经网络的学习过程,允许使用更高的学习率,加速收敛,并减少对初始化方法的敏感度。

2. Leaky ReLU激活函数

  • 定义:Leaky ReLU是ReLU(Rectified Linear Unit)的一种变体,它允许小的负值梯度传递,而不是像传统的ReLU那样完全阻断负值。
  • 公式:Leaky ReLU的数学表达式是 f ( x ) = max ⁡ ( 0.01 x , x ) f(x) = \max(0.01x, x) f(x)=max(0.01x,x),其中 x x x 是输入值。
  • 优点:相比于传统的ReLU,Leaky ReLU有助于避免神经元“死亡”的问题,即在训练过程中一些神经元可能完全不激活,导致相应参数无法更新。
  • 应用:在YOLOv3中,Leaky ReLU被用于网络的卷积层,以保持非线性性质的同时,减少激活函数的饱和风险。

结合批量归一化和Leaky ReLU的使用,YOLOv3的网络架构能够更有效地学习并保持在训练过程中的稳定性,这是实现其高性能目标检测的关键因素之一。

四、YOLOv3的损失函数

YOLOv3的损失函数是多目标损失函数,它结合了几个不同的组件来训练网络。YOLOv3的损失函数由以下几部分组成,每部分都有其对应的公式:

  1. 边界框坐标损失(Bounding Box Coordinate Loss)
    ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j [ ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 + ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 ] \sum_{i=0}^{S^2} \sum_{j=0}^{B} 1_{ij}^{obj} [(x_i - \hat{x}_i)^2 + (y_i - \hat{y}_i)^2 + (\sqrt{w_i} - \sqrt{\hat{w}_i})^2 + (\sqrt{h_i} - \sqrt{\hat{h}_i})^2] i=0S2j=0B1ijobj[(xix^i)2+(yiy^i)2+(wi w^i )2+(hi h^i )2]

    • 其中 S 2 S^2 S2 表示图像被划分的网格数, B B B 是每个网格预测的边界框数量。
    • 1 i j o b j 1_{ij}^{obj} 1ijobj 表示如果网格单元 i i i 中的第 j j j 个边界框负责预测目标,则为1,否则为0。
    • x , y , w , h x, y, w, h x,y,w,h 分别表示边界框的中心坐标和尺寸,帽子符号表示预测值。
  2. 对象置信度损失(Object Confidence Loss)
    ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j ( C i − C ^ i ) 2 + λ n o o b j ∑ i = 0 S 2 ∑ j = 0 B 1 i j n o o b j ( C i − C ^ i ) 2 \sum_{i=0}^{S^2} \sum_{j=0}^{B} 1_{ij}^{obj} (C_i - \hat{C}_i)^2 + \lambda_{noobj} \sum_{i=0}^{S^2} \sum_{j=0}^{B} 1_{ij}^{noobj} (C_i - \hat{C}_i)^2 i=0S2j=0B1ijobj(CiC^i)2+λnoobji=0S2j=0B1ijnoobj(CiC^i)2

    • C C C 表示置信度,即边界框中包含目标的概率, λ n o o b j \lambda_{noobj} λnoobj 是不包含目标的边界框的权重系数。
  3. 类别预测损失(Class Prediction Loss)
    ∑ i = 0 S 2 1 i o b j ∑ c ∈ c l a s s e s ( p i ( c ) − p ^ i ( c ) ) 2 \sum_{i=0}^{S^2} 1_{i}^{obj} \sum_{c \in classes} (p_i(c) - \hat{p}_i(c))^2 i=0S21iobjcclasses(pi(c)p^i(c))2

    • p i ( c ) p_i(c) pi(c) 表示网格单元 i i i 中目标属于类别 c c c 的概率,帽子符号表示预测值。

YOLOv3的损失函数设计用于同时优化目标检测的多个方面,包括定位准确性、置信度判断和类别分类。通过这种方式,网络能够有效地学习如何在各种情况下正确地识别和定位目标。
请注意,这些公式可能根据实现的具体细节略有不同。

五、实际应用和局限性

5.1 实际应用

  1. 实时目标检测

    • YOLOv3因其高速处理能力而在实时目标检测领域广受欢迎,适用于需要快速响应的场景,如监控系统和自动驾驶汽车。
  2. 视频内容分析

    • 在视频流分析中,YOLOv3可以实时识别和跟踪多个对象,适用于安全监控、交通管理和体育赛事分析等领域。
  3. 无人机和机器人导航

    • 用于无人机和机器人的视觉系统中,实现对环境的快速理解和导航。
  4. 工业自动化和检测

    • 在工业自动化领域,YOLOv3可用于产品质量检查,例如检测制造缺陷。

5.2 局限性

  1. 对小对象的检测

    • 虽然YOLOv3比其前两个版本在小对象检测上有所改进,但它仍然在处理小尺寸对象时表现不如一些其他的目标检测模型。YOLOv3通过多尺度预测提高了对小对象的检测能力,但在某些情况下仍可能错过一些小的或密集的对象。
  2. 中型和大型对象的表现

    • YOLOv3在处理中型和大型对象时表现良好,但其性能可能因对象的形状和尺寸的多样性而有所不同。尽管如此,它通常能够提供较为准确的边界框和类别识别。
  3. 边界框对齐问题

    • YOLOv3在边界框与对象完美对齐方面存在一定的挑战,尤其是在较高的交并比(IoU)阈值下。这意味着尽管它能有效地定位对象,但有时可能无法非常精确地覆盖对象的完整区域。
  4. 背景误判和重复检测

    • 在某些情况下,YOLOv3可能会将背景错误地识别为对象,或对同一个对象进行重复检测。

总的来说,YOLOv3是一个强大且多才多艺的目标检测工具,尤其适用于需要快速响应的应用场景。然而,它在处理小对象、完美边界框对齐以及高IoU阈值下的性能上仍有改进空间。


参考资料

  1. Redmon, Joseph, and Ali Farhadi. “Yolov3: An Incremental Improvement.” arXiv Preprint arXiv:1804.02767, 2018.
  2. He, Kaiming, et al. “Deep Residual Learning for Image Recognition.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2016, pp. 770–78.

总结

YOLOv3是一个在目标检测领域具有里程碑意义的模型,它通过创新的网络架构和算法优化,实现了快速且准确的目标检测。其核心特点包括Darknet-53网络架构、多尺度预测、使用锚框进行边界框预测、类别预测和对象检测的结合,以及有效的损失函数设计。YOLOv3在实时目标检测方面表现出色,尤其适用于需要快速响应的场景,如视频监控和自动驾驶。然而,它在小对象检测和边界框对齐方面仍有改进空间。总体来看,YOLOv3的出现不仅推动了目标检测技术的发展,也为未来的研究和应用提供了重要的启示和基础。

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

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

相关文章

halcon如何设置窗口背景颜色?

halcon窗口背景默认是黑色,有时候图片背景是黑色,不方便观察边缘,如果需要设置窗口背景颜色,可以使用如下算子。 设置窗口背景颜色:白色 set_window_param (WindowHandle, background_color, white) 设置白色后的效…

Linux 基础知识整理(三)

Linux文件和目录 Linux系统是一种典型的多用户系统,不同的用户有不一样的地位和权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。 root权限最高,可以通过ls -l 或…

网络安全赚不了大钱却值得入行?真相只有一个!

想要知道网络安全行业收入的现状,首先要对网络安全行业有一个大概的了解。网络安全行业并不是一个笼统的概念,业内人士都知道,“网络安全行业”和“网络安全岗位”是两个概念。 网络安全行业是倾向于做网络安全相关产品、解决方案、服务的企业…

老师如何管理学生?

老师可以通过以下几点来管理学生: 1. 建立积极的关系:老师应该与学生建立积极的关系,鼓励学生参与课堂和课外活动,热情地回应学生的问题和需求。 2. 设定明确的规则:老师应该制定明确的课堂和学校规则,并向…

前端十几年后的变迁:从代码编织者到创新驱动者

十几年前的前端开发,是一个被大多数人忽视的领域。那时的网页设计简陋,功能单一,前端开发的工作也相对简单。然而,随着科技的发展和互联网的普及,前端开发已经从一个边缘角色成长为一个关键的创新驱动力。那么&#xf…

智能时代:互联网+如何改变我们的生活与工作

引言 随着科技的不断进步和互联网的普及,我们正处在一个智能时代。这个时代被互联网所定义,它深刻地改变了我们的生活和工作方式。从社交互动到日常工作,智能时代的影响无处不在,给人们带来了前所未有的变革和机遇。 互联网的涌…

软件提示找不到“vcruntime140.dll丢失的五个解决方法”(有效方法)

“vcruntime140.dll丢失的五个解决方法”。在我们的日常生活和工作中,有时候会遇到一些电脑问题,而vcruntime140.dll丢失就是其中之一。那么,什么是vcruntime140.dll文件呢?它为什么会丢失?又该如何解决这个问题呢&…

2米分辨率高分六号卫星数据与高分一号卫星数据幅宽对比

目前我国国产2米卫星群组包括了高分一号、高分一号B/C/D、资源三号、资源三号02、高分六号等多颗卫星,在覆盖能力上已经有了很大的进步,在满足空间分辨率的同时大大增强了时间分辨率。 高分六号卫星和高分一号卫星都是具有2米分辨率的国产卫星影像,高分…

1.1美术理论基础

一、光影 物体呈现在人们眼前的时候,不同的受光面其明暗变化以及物体的影子。 1.什么是黑白灰 在美术中黑白灰指亮面、灰面、暗面,属于素描的三大面,主要体验一个物体的整体寿光过程。普遍存在于各种艺术和设计领域。黑白灰作品的出现&#x…

C++——static成员

【问题】&#xff1a;定义一个类&#xff0c;计算程序中创建了多少个类对象。 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; //实现一个类&#xff0c;计算程序中创建出了多少个类对象 class A { public:A(){m;n;}A(const A& a){m…

AIGC之Image2Video(一)| Animate Anyone:从静态图像生成动态视频,可将任意图像角色动画化

近日&#xff0c;阿里发布了Animate Anyone&#xff0c;只需一张人物照片&#xff0c;结合骨骼动画&#xff0c;就能生成人体动画视频。 项目地址&#xff1a;https://humanaigc.github.io/animate-anyone/ 论文地址&#xff1a;https://arxiv.org/pdf/2311.17117.pdf Github…

力扣每日一题:2477. 到达首都的最少油耗(2023-12-05)

力扣每日一题 题目&#xff1a;2477. 到达首都的最少油耗 日期&#xff1a;2023-12-05 用时&#xff1a;34 m 15 s 时间&#xff1a;37ms 内存&#xff1a;84.8MB 思路&#xff1a;分别计算每条路上通过的城市数量&#xff08;数量/座位数&#xff0c;向上取整&#xff09;&…

好用的音乐制作工具 Studio One 6中文 for mac

Studio One 6是一款专业的音乐制作软件&#xff0c;提供了全面而强大的功能&#xff0c;帮助音乐制作人、录音工程师和创作者实现他们的创意。 它的主要特点包括&#xff1a;直观的用户界面&#xff0c;使得操作变得简单易懂&#xff1b;支持多轨录音&#xff0c;允许用户进行…

layui日历插件

layui日历插件: 在已开源的layui日历插件的基础上的改版&#xff08;原版插件地址&#xff1a;https://gitee.com/smalldragen/lay-calender-mark&#xff09;https://gitee.com/tangmaozizi/layui-calendar-plugin.gitjava后台代码并没有把项目完整结构上传上去&#xff0c;因…

有源功率因数校正电路的设计(论文+仿真)

1. 系统设计 本文围绕有源功率因数校正电路的设计而展开&#xff0c;拟以BOOST的拓扑结构进行有源功率因数校正电路的搭建&#xff0c;通过不同电流模式的Boost变换电路实际应用及其分析&#xff0c;能够总结最优的解决设计方案&#xff0c;在方案建立的基础之上&#xff0c;通…

控制台电商项目实现

电商项目&#xff08;前台&#xff09;&#xff1a; 登录注册模块 商品模块 订单模块 购物车模块 登录注册模块 第一个:表--java bean对应&#xff0c;表中字段对应java bean的类 第二个&#xff1a;面向接品的开发--接口--登录 注册 实现一个类去实现这个接口 注册&a…

【数据库】基于散列的两趟算法原理,以及集合与包的并,差,交,连接操作实现原理,执行代价以及优化

基于散列的两趟算法 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专栏会定…

你真的掌握结构体了么?结构体习题(C语言)

前言 上一期博客我们学习了结构体的相关知识&#xff08;上期链接&#xff09;&#xff0c;但是学了不练也是不行的&#xff0c;我们今天讲给大家分享两道有点恶心的题目&#xff0c;让大家来加深对结构体的理解&#xff0c;那么话不多说我们现在开始吧&#xff01; 第一题 有…

基于HSV空间色彩的图像分割方法(代码实现)

文章目录 1. 分割图片示例&#xff1a;2. 代码实现&#xff1a;3. 运行结果&#xff1a; 1. 分割图片示例&#xff1a; 2. 代码实现&#xff1a; from skimage.io import imread, imshow from skimage import img_as_ubyte # For converting the float image to uint8 from s…

浏览器开发者工具使用(F12)

F12 第一个按钮&#xff1a;停止和开启按钮&#xff0c;默认是开启抓包 第二个按钮&#xff1a;清空抓包记录 第三个按钮&#xff1a;过滤器&#xff0c;可以通过搜索想要的关键字 第四个按钮&#xff1a;保留日志&#xff08;建议必须勾上&#xff0c;不然有些跳转页面无法…