当前位置: 首页 > news >正文

视频理解调研笔记 | 2021年前视频动作分类发展脉络

前言

参考资料

本文基于以下四个李沐 AI 论文精度视频,对视频理解领域做初步调研
双流网络论文逐段精读
I3D 论文精读
视频理解论文串讲(上)
视频理解论文串讲(下)

相关论文
02014CVPRDeep VideoPDF
12014NIPSTwo-Stream 双流网络PDF
1.12015CVPRBeyond Short SnippetsPDF
1.22016CVPRTwo-Stream FusionPDF
1.32016ECCVTSNPDF
22015ICCVC3DPDF
2.12017CVPRI3DPDF
2.22018CVPRNon-localPDF
2.32018CVPRR(2+1)DPDF
2.42019ICCVSlowFastPDF
32021ICMLTimeSformerPDF
2020综述包含 ViT 之前的大部分工作PDF

数据集简介

视频理解实际是做视频动作分类,类似图像分类,输入为视频(图像序列),输出为类别。

数据集类别数视频数平均时长链接
UCF-101101133207.21sPaper | Download
HMDB-515168492~5sPaper | Download
Sports-1M48711331585m36sPaper | Download
Kinetics-40040030624510sPaper | Download
Smth-Smth1742208474sPaper | Download
  • 关于动作的类别值得一提,动作的主体都是人,通常可以大致分为人体单独的动作、人和人的交互动作、人和物的交互动作。不同数据集的动作难度有所不同,这里不太好说明,个人将其分为活动动作和一般身体动作:
    • UCF-101 中的大多为活动动作,即动作属于一种活动,像运动(跳水、跳远)、乐器演奏(弹钢琴、拉小提琴)、日常活动(剃须、遛狗)等等;
    • HMDB-51 中就有些一般身体动作,例如行走、跑步、推等;
    • Sports-1M 都是运动相关的动作,主要是运动的种类比较细粒度,像6种不同的保龄球和7种不同的美式足球。这里的类别主要是运动类别的区分,基本不会对某个运动中的不同动作进行分类,例如篮球中的运球、抢断等,体操、滑冰中的不同技术动作。另外,表格中的 5m36s 指的是原视频的平均长度,在论文中说每个视频最多使用100个半秒的切片(we only use a random collection of up to 100 half-second clips from every video and our videos are 5 minutes and 36 seconds in length on average)。
    • Something-Something 的类别较为特殊,标签基于模板,例如 Dropping [something] into [something],论文中说每个类别平均620个视频,Holding [something] 视频数最多(986个),Poking a hole into [some substance] 视频数最少(77个)。
  • 表中,视频数指的不是数据源的视频数,而是切片(Clips)的数量,多个切片可以来源于同个视频。Kinetics 的一个特色就是每个切片都来源于不同视频。
  • UCF-101 和 HMDB-51 较小,是早期使用的数据集,在 I3D 将其刷爆后不再常用。
  • Kinetics-400 后续拓展到了 K-600、K-700,类别更多,数据量更大,并且在K-400时每个类别的切片就都超过400个。

发展脉络

  • Deep Video 最先把神经网络用到视频领域,但是效果不好,还不如手工特征 IDT。
  • Two-Stream 双流网络加入光流作为时序运动特征,得到了不错的效果,后续有许多方法对其改进;
    • Beyond Short Snippets 通过结合 LSTM 来获得更长的时序理解能力;
    • Two-Stream Fusion 对 Fusion 即融合方式做了深入的研究,提出了一种 Early Fusion 的方式;
    • TDD 改进了对光流的使用,利用了光流的轨迹;
    • TSN 提出了一种方法用于处理较长的视频,后续又有许多在 TSN 基础上的改进,如 DOVF 加入了全局编码,例如 Fisher Vector Encoding、VLAD;TLE 使用了 Bilinearing Encoding;Action VLAD 利用了 VLAD;2017年 I3D 出现后,双流网络逐渐退出历史舞台。
  • C3D 最先使用了 3D 卷积神经网络,但是效果不好;
    • I3D 主要在模型参数初始化方面做了改进,使模型的训练简单化,直接刷爆 UCF-101 和 HMDB-51,后续有了许多工作跟进;
    • R3D 为 3D 版 ResNet,MFNet 为 3D 版 ResNext,STC 为 3D 版 SENet;
    • 由于 2D 卷积便宜且有一定的效果,出现了将 2D 和 3D 结合使用的方法,如 S3D、R(2+1)D、ECO、P3D,基本都是将 3D 切分成 2D 和 1D,在保持准确度的同时提高计算效率和训练速度;
    • 为了处理更长的视频,出现了 LTC、T3D、Non-local、V4D;
    • CSN、SlowFast、X3D 注重高效率,X3D 通过 Auto ML 搜索得到的网络效果好且参数小,后续研究遇到了瓶颈,此时出现了 Vision Transformer。
  • 基于 Transformer 出现了 TimeSformer、VIVIT、VIDTR、MVIT

Deep Video

  Deep Video 的想法就是把 CNN 从图像分类迁移到视频分类并制作了 Sports-1M 数据集。由于多了时序上的信息,就想到了下图所示的一些方法进行尝试。
F1
(1)Single Frame 从视频中抽出一帧做图像分类,完全不利用时序信息;
(2)Late Fusion 在网络的输出层面做一些结合,例如从视频中随机抽取若干帧,每一帧通过 CNN 提取特征,合并特征后通过 FC 得到分类结果;
(3)Early Fusion 在这里非常 Early,在输入层面做融合,直接将多张图像在 RGB 通道维度拼接起来;
(4)Slow Fusion 结合了 Late 和 Early,在特征提取过程中逐步融合;

  直观上看 Slow Fusion 最合理,最终实验结果也是他的精度最高,但实际上这四种方法的差别都不大,Early 和 Late 甚至不如单帧图像分类的 Baseline。而且在 Sports-1M 这样的大数据集上做预训练后迁移到 UCF-101 上的效果远不如手工特征,作者得到最好的结果只有 65.4%,而当时最好的手工特征有 87%。

Sports-1M 测试结果

F2

Two-Stream

双流网络

方法

在这里插入图片描述
  双流网络认为 CNN 直接学习时序特征难度太高,于是计算光流作为时序特征喂给网络。整个结构具有空间流和时间流两个 CNN,空间流就是做单帧图像分类,时间流则是输入光流,也是做分类,最后把两个分类结果通过加权平均或 SVM 等 Late Fusion 的方式合并起来。

  • 光流
      假设视频帧的形状为 [ H , W , 3 ] [H,W,3] [H,W,3],前后帧两张图像可以计算得到光流的形状为 [ H , W , 2 ] [H,W,2] [H,W,2]。光流可以理解为像素在 x y xy xy 方向的移动量,假设 t t t 帧中某个像素的坐标为 ( x , y ) (x,y) (x,y),光流中该坐标位置的数值为 ( u , v ) (u,v) (u,v),那么 ( x + u , y + v ) (x+u,y+v) (x+u,y+v) 就是在 t + 1 t+1 t+1 帧中该像素的所在位置。因此,光流可以很好的描述运动信息。

在这里插入图片描述
  如上图,作者提出了两种使用光流的方式。左侧就是简单的把多帧光流拼接到一起;右侧是根据光流的轨迹做拼接,因为根据光流可以知道这个点在下一帧的位置,这样可以看作同一个点在不同时间的光流值。但是实验结果中左边的方法更优,作者也难以理解,后续 TDD 解决了这个问题。
  双流网络计算 L + 1 L+1 L+1 帧的光流得到 [ H , W , 2 L ] [H,W,2L] [H,W,2L] 作为时间流的输入,前半部分为 x x x 方向数值,后半部分为 y y y 方向数值。由于原始的光流数据所占空间太大,作者这里将它的数值变换到 0~255 保存为图片,于是可以用 JPEG 压缩,大幅度降低了光流文件的存储空间(1.5TB → 27GB)。

  • 测试阶段
      无论视频共有多少帧,会等间距抽取 25 帧做空间流预测,每一帧后面连续的 11 帧用来做时间流预测。

实验

在这里插入图片描述
  上图在 UCF-101 上分别对时间流和空间流做了消融实验。表 a 中测试了是否使用 ImageNet 预训练模型、整个网络微调和最后层微调、不同 Dropout 之间的差异。表 b 中前三行先测试了1、5、10帧光流长度的影响,后面分别测试了沿轨迹叠加光流和使用 Bi-directional optical flow 反向光流。

在这里插入图片描述
  双流网络基本可以和过去最好的手工特征打平。值得注意得是,仅使用光流做预测,也能得到相当高的精度。

研究方向

(1)目前是在两个网络 Softmax 后做 Late Fusion,可以对 Fusion 的方式进行研究,直观上在前期的特征中做空间与时间的交互会更好;
(2)目前的网络还是 AlexNet,尝试 ResNet 等更深的网络,研究如何在小数据集上训练大模型,如何控制过拟合;
(3)目前将 CNN 抽取的特征直接做分类,可以尝试在抽到的特征后面加上 RNN 或 LSTM 来提取时序信息;
(4)目前的时序很短,10帧也就0.5s左右,通常动作的持续时间会更长,研究如何处理长视频。

Beyond Short Snippets

方法

在这里插入图片描述 在这里插入图片描述

  Short Snippets 代表两三秒内的视频切片,按照双流网络的方法能够处理的视频帧很少。当有特别多的视频帧时,通常会用 CNN 抽取特征,问题在于如何对这些特征做 Pooling,文章探索了多种 Pooling 方式,也尝试了使用 LSTM。具体来说就是 CNN 抽取特征后不是连接 FC 做分类,而是接上 5 层 LSTM 做时序融合后再做 Softmax 分类。

实验

在这里插入图片描述
  在 Sports-1M 上,与单帧和 Deep Video 做了对比,使用的帧数大幅度提高,但效果的提升其实主要因为使用了光流,如果仅对比 Conv Pooling 和 LSTM 其实并没有什么区别。
在这里插入图片描述
  在 UCF-101 上,第一项为手工特征能达到 87.9%,Deep Video 只有 65.4%,双流网络+SVM 能达到 88% 与手工特征打平。这里可以看出 LSTM 在这里也没什么效果,朱老师这里分析认为 LSTM 更擅长处理 High Level 的语义特征,给 LSTM 的输入要具有一定的变化。UCF-101 的平均时长为 7s,在这样较短的视频上,多帧的语义信息可能没有什么变化,讲许多相似的特征传给 LSTM,它也学不到什么东西。在长视频或变化剧烈的视频上,LSTM 应该还是有用武之地的。

Two-Stream Fusion

方法

  双流网络用的是简单的 Late Fusion,于是这篇文章在 Fusion 上做研究。

(1)Spatial fusion 在空间维度如何融合特征

  • Sum fusion
  • Max fusion
  • Concatenation fusion
  • Conv fusion:Concat 后接一个 1 × 1 1\times 1 1×1 卷积,最终表现最好
  • Bilinear fusion:相同位置的特征做外积,然后对所有位置的特征求和 y bil  = ∑ i = 1 H ∑ j = 1 W x i , j a ⊤ x i , j b ∈ R D 2 \mathbf{y}^{\text {bil }} =\sum\limits_{i=1}^{H} \sum\limits_{j=1}^{W} \mathbf{x}_{i, j}^{a \top} \mathbf{x}_{i, j}^{b}\in \mathbb{R}^{D^{2}} ybil =i=1Hj=1Wxi,jaxi,jbRD2

(2)Where to fuse the networks 在网络的哪个部分做特征融合
在这里插入图片描述
  作者做了大量的消融实验后得到了两个较好的方法。左图为传统意义上的 Early Fusion,图像和光流分别经过各自的网络提取特征后合并,然后输入统一网络做预测。右图则是保留了空间流的信息,在 fc8 后再做一次融合,可以简单理解为在网络还没有学习到特别深层的语义特征前做一次融合来帮助时间流学习,而在 fc8 已经是深层语义特征时再做一次融合。

(3)Temporal fusion 多帧特征如何在时间维度融合
在这里插入图片描述
在这里插入图片描述

  在对上述细节进行研究后提出网络框架,最终设计了两个分支,左边融合了空间和时间的特征,右边单独保留了时间特征,最后再对两个分支的结果做 Late Fusion。

实验

在这里插入图片描述
  实验中,测试了将双流网络替换为 VGG-16,以此作为 Baseline 进行对比,在 HMDB-51 上有较大提升,可能是 Early Fusion 的方式可以让时间流和空间流在早期进行互相学习,在一定程上弥补了数据不足的问题。

TSN

方法

在这里插入图片描述
  文章提出了一个简单但有效地方法,对于一个视频可以切分成若干段,每段抽取图像和光流经过双流网络得到分类得分,这些分类得分通过 segmental consensus function 做融合,最后空间流和时间流做 Late Fusion 得到分类结果。
  这个思想还可以用到无监督学习中,以往会在一段视频中随机抽取两帧作为正样本,其他帧作为负样本,但对于较长的视频这两帧不一定是正样本。运用 Temporal Segment 可以先把视频分段,每段抽取一帧作为一个样本,再从每段抽取一帧作为第二个样本,这两个样本作为正样本对。

  作者还提供很多有用的技巧:

(1)Cross Modality Pre-training 预训练
  空间流可以使用 ImageNet 预训练的模型,而时间流以光流为输入没有在大数据集上的预训练模型。作者发现直接把 ImageNet 预训练的模型搬到时间流上也很好,但是一个输入是 RGB 3 通道,一个是 10 张光流图 20 通道,无法直接使用。作者的方法是将模型 3 通道的权重求平均变为单通道,然后再 20 通道的权重上复制 20 份,这种初始化方式对模型的提升非常显著。

(2)Regularization Techniques 正则化
  由于数据集较小,使用 BN 虽然能让模型训练加速,但也带来了严重的过拟合。作者提出了 partial BN 的做法,冻结除了第一层以外的 BN,由于原始的 BN 来源于图像,开放第一层 BN 可以学习一下新的视频输入,适应新的数据集。

(3)Data Augmentation 数据增强

  • corner cropping:常用的 random cropping 经常在图像的中间区域附近,很难覆盖边角区域。过去边角区域的裁剪主要用在测试,这里用到了训练中的数据增强。
  • scale jittering:通过改变图片的长宽比来增加数据多样性。具体先把所有帧 resize 到 256 × 340 256\times 340 256×340,然后再图片上做裁剪,裁剪区域长宽的数值从 { 256 , 224 , 192 , 168 } \{256,224,192,168\} {256,224,192,168} 随机挑选,例如 256 × 256 256\times 256 256×256 192 × 168 192\times 168 192×168 等。

实验

在这里插入图片描述

  表格中顶部为传统方法,中间为深度学习方法,底部为 TSN(3 modalities 是多使用了另一种形式的光流)。

3D

C3D

方法

  作者使用了一个较深的 3D CNN 在 Sports-1M 这样较大的数据集上进行训练。网络结构与 VGG 非常类似,基本就是每个 Stage 删除一层卷积,然后把 3 × 3 3\times3 3×3 的 2D 卷积变成了 3 × 3 × 3 3\times3\times3 3×3×3 的 3D 卷积。Pooling 层中,除了 Pool1 是 1 × 2 × 2 1\times2\times2 1×2×2,即不对时间维度做下采样,其余都是 2 × 2 × 2 2\times2\times2 2×2×2

在这里插入图片描述
  作者发现 fine-tune 网络费时费力且效果不好,后续就以 FC6 的输出作为抽取的特征,后续再训练一个 SVM 做分类效果很好。

实验

在这里插入图片描述在这里插入图片描述
  左侧为 C3D 在 UCF-101 上的结果,右侧为同期 TDD 的实验结果。从精度上看 C3D 并不突出,但文章主要的卖点在于开放了 C3D 抽取特征的接口,可以用于各种下游任务(当时的算力不足以大多数人去训练或 fine-tune 视频模型,C3D 以 Facebook 的算力训练了一个月)。

I3D

方法

  作者制作了 Kinetics 数据集,模型通过选取优秀的 2D 网络 inflate 到 3D 来构建。文中回顾了过去的一些方法,最终提出了图 e 所示的网络结构,可以看出是个 3D 版的双流网络。
在这里插入图片描述
  I3D 是从 2D 网络扩张到 3D,也就是保持网络整体结构不变,卷积、池化操作扩张为 3D,这看起来很简单,但关键的是用 2D 的网络来初始化 3D 的网络,从而降低训练难度。之前 C3D 效果不好很可能是因为没有类似 ImageNet 这样的预训练模型做初始化。
  作者提出了一个巧妙的初始化方式,将一个静止的视频,即每帧都是同一张图像 I I I 的视频作为 3D 的输入,而 I I I 同时作为 2D 的输入,目标是让两者的输出保持一致。对于 3D 卷积来说比 2D 卷积多了时间上的维度 N N N,那么就把 2D 的参数复制 N N N 份作为 3D 的参数。如此得到的 3D 输出会是 2D 的 N N N 倍,因此将参数都除以 N N N 即可。输出一致意味着后续网络的输入也是一致的,使得后续的参数也是有效的。

实验

Table 1

在这里插入图片描述

Table 2

在这里插入图片描述

  表1 对上文提到的 5 种方式做了实验,值得注意的是将图像和光流做 Late Fusion 效果总是有提升的,证明了光流对于动作识别是很有效的,只是计算光流的成本较高。表2 证明了在 K-400 上使用 ImageNet 做初始化的有效性。

Table 3

在这里插入图片描述
  表3 对迁移学习做了测试。Original 代表不使用迁移学习,直接在 UCF-101 或 HMDB-51 上训练;Fixed 代表冻结 Backbone 做微调;Full-FT 代表在整个网络上微调。

Table 4

在这里插入图片描述
  表4 除了与现有方法作对比,还体现了 K-400 数据集的价值。在 K-400 数据集上直接训练作为预训练模型不使用 ImageNet 也能得到很好的效果,这样一来网络可以从头训练,网络的设计可以有更大的空间。

Non-local

方法

  卷积和递归(RNN、LSTM?)的操作都是在局部区域进行处理,如果能覆盖更长的上下文肯定会更好。受 Non-local means 操作的启发,提出了一个 Non-local 算子。这是一个即插即用的模块,可以用到视频、检测、分割等各种任务中。结构上其实和自注意力完全一致。

在这里插入图片描述

实验

在这里插入图片描述
  作者做了大量的消融实验

  • (a) 注意力的计算方式,最终使用 dot-product,也是 Transformer 中的默认方式
  • (b) 尝试在网络的不同位置插入一个模块,res5 的效果最差,原因可能是特征图太小,包含的空间信息少;而在 res2 插入模块计算开销较大,最终确定在 res3 和 res4
  • © 尝试插入多个模块,对于 Resnet-50 的层数分别是 3、4、6、3,10-block 就是在每个卷积层后面都插入,5-block 就是一个隔一个插入
  • (d) 对比了时间、空间和时空三种方式,证明本文这种在时间和空间上同时做自注意力的操作更好
  • (g) 在更长的上下文 128 帧上做测试,证明了 Non-local 同样可以提高性能,确实对远距离的上下文理解有帮助

在这里插入图片描述
  对比实验在 K-400 数据集上做,可以看到 Non-local I3D 只使用图像作为输入的情况下,可以和之前使用图像、光流加音频的方法打平,且在原始 I3D 上提升很多。

R(2+1)D

方法

  主要研究在动作视频中如何使用时空卷积。由于 2D 卷积也能得到不错的结果,而且计算开销比 3D 卷积小很多,于是测试了各种结构来组合使用 2D 和 3D 卷积,最后发现把 3D 卷积拆分为空间上的 2D 和时间上的 1D 效果最好。

在这里插入图片描述
请添加图片描述
  从消融实验中可以看出,单纯使用 2D 和 3D 的方法效果最差,组合使用 2D 和 3D 效果稍好,拆分的 3D 的 R(2+1)D 方式效果最佳。其中 R(2+1)D 的参数量是为了和 R3D 的参数量保持一致,从而做公平的对比。

在这里插入图片描述

  具体的拆分方法就是把一个 t × d × d t\times d \times d t×d×d 的卷积拆分成, 1 × d × d 1 \times d \times d 1×d×d 的 2D 空间卷积和 t × 1 × 1 t \times 1 \times 1 t×1×1 的 1D 时间卷积,中间的 M i \mathrm{M}_i Mi 是做特征维度映射,使得参数量逼近 R3D。
  作者分析拆分成两个卷积可以增加一次激活函数,提高网络的非线性能力;并且直接学习 3D 卷积比较困难,拆分成空间和时间会更容易优化。(基本是先射箭后画靶)

实验

在这里插入图片描述
在这里插入图片描述

  在 K-400 上,R(2+1)D 单独使用图像或光流都优于 I3D,但是两者做 Late Fusion 后反而不如 I3D。在 UCF-101 和 HMDB-51 上,只在使用图像上优于 I3D,作者给出的解释是预训练比 I3D 少用了 ImageNet,而实际上 I3D 只使用 K-400 做预训练也优于 R(2+1)D。不过 R(2+1)D 的输入为 112 × 112 112\times112 112×112,而 I3D 的输入为 224 × 224 224\times224 224×224,并且 R(2+1)D 的方式确实更容易训练和抑制过拟合。

SlowFast

方法

  人的视觉系统中 P 细胞占视觉细胞的 80% 负责处理静态图像,M 细胞占 20% 处理高频率的运动信息,与双流网络很像。于是在 3D 网络中如法炮制,设计了 Slow 和 Fast 两个分支,但两个分支输入的都是图像。
在这里插入图片描述
在这里插入图片描述
  具体来说,对于一个视频先用较长的间隔取少量帧作为 Slow 分支的输入,再用较短的间隔区大量帧作为 Fast 分支的输入,并且 Slow 分支的模型更大参数更多,Fast 分支的模型更小参数更少,在过程中使用 Lateral connections 做特征融合和信息交互。从表中的详细数据可以看出,模型结构是 ResNet 版 I3D,Fast 的输入量是 Slow 的 8 倍,而 Fast 中的卷积通道数也是 Slow 的 1/8 降低计算开销,另外在时间维度上不做下采样。

实验

在这里插入图片描述
  SlowFast 除了在精度上很高,在计算开销上比过去的方法低很多。并且使用更大的模型做 Backbone 和添加 Non-local 模块后精度能进一步提高。

Transformer

TimeSformer

方法

  作者主要探索如何把 ViT 从图像领域迁移到视频领域,主要尝试了以下 5 种方式:

  • 只在空间维度做注意力,也就是原始 ViT 使用的方式,属于图像上的 Baseline
  • 在空间和时间维度上一起做注意力,但明显 GPU 吃不消
  • 时空切分,先在时间上做,再在空间上做
  • 局部切分,先在局部上做,再在全局上做,类似 Swin Transformer 在局部窗口中做
  • 轴方向切分,现在时间维度做,再分别在宽高维度做
    在这里插入图片描述
      这里的可视化图像非常直观,蓝色块作为基准点,其余为不同步骤参与注意力计算的元素。
    在这里插入图片描述
      经过消融实验后,作者选择了 Divided Space-Time 的方式作为 TimeSformer 网络。

在这里插入图片描述

实验

在这里插入图片描述
在这里插入图片描述

  这里进行了选择性对比,从精度而言 SlowFast 有 R101+NL 的版本达到 79.8 的精度,但是训练时间(ViT 做微调)和推理开销(输入少)确实更好。并且作者在更大的模型和数据集上将 K-400 刷到了 80.7。
  后续的一些相关工作其实想法也差不多,核心还是直接使用自注意力计算量太大,通过探索不同的拆分方式来提升效果。

相关文章:

视频理解调研笔记 | 2021年前视频动作分类发展脉络

前言 参考资料 本文基于以下四个李沐 AI 论文精度视频,对视频理解领域做初步调研 双流网络论文逐段精读 I3D 论文精读 视频理解论文串讲(上) 视频理解论文串讲(下) 相关论文 02014CVPRDeep VideoPDF12014NIPSTwo-Str…...

怎么通过 ssh 访问远程设备

文章目录 什么是 SSH背景环境配置前置准备在 linux 系统中安装 ssh 组件 什么是 SSH ssh 全称是 Secure Shell, 有时候也被叫做 Secure Socket Shell, 这个协议使你能通过命令行的方式安全的连接到远端计算机。当连接建立就会启动一个 shell 会话,这时你就能在你的…...

linux Ubuntu 安装mysql-8.0.39 二进制版本

我看到网上很多都写的乱七八糟, 我自己总结了一个 首先, 去Mysql官网上下载一个mysql-8.0.39二进制版本的安装包 这个你自己去下载我这里就写一个安装过程和遇到的坑 第一步 解压mysql压缩包和创建my.cnf文件 说明: 二进制安装指定版本MySQL的时候,需要手动写配置…...

ZooKeeper日志自动清理实用脚本

ZooKeeper日志自动清理:保持系统整洁的实用脚本 在管理ZooKeeper集群时,定期清理日志文件是一项重要但常被忽视的任务。本文将介绍一个简单而有效的bash脚本,用于自动清理ZooKeeper的日志和快照文件,并讨论如何使用cron来定期执行此脚本。 磁盘告警,所以写了一个脚…...

KVM+GFS分布式存储系统构建高可用

一:部署GFS高可用分布式存储环境 1:安装部署 KVM 虚拟化平台 2:部署 GlusterFS 在所有节点上执行如下命令: (1)关闭防所有节点的防火墙、SELiunx systemctl stop firewalldsystemctl disable firewallds…...

CIFAR-10 数据集图像分类与可视化

数据准备 CIFAR-10 and CIFAR-100 datasets (toronto.edu)在上述网站中下载Python版本的CIFAR-10数据集。 下载后的压缩包解压后会得到几个文件如下: 对应的data_batch_1 ~ data_batch_5 是划分好的训练数据,每个文件里包含10000张图片,test…...

没有了高项!!2024软考下半年软考高级哪个最容易考过?

距离2024上半年软考考试结束已经有一段时间了,有不少小伙伴都在开始准备下半年软考了,值得注意的是:近日各省陆续公布了2024上半年软考合格名单。那么,软考高级通过率到底如何?先来看看吧! 一、上半年软考通…...

用户自定义Table API Connector(Sources Sinks)

目录 概述 Metadata Planning Runtime 扩展点 动态表工厂(Dynamic Table Factories) 动态表(Dynamic Table) 动态表源(Dynamic Table Source) 扫描表源(Scan Table Source) 查找表源(Lookup Table Source) 动态表接收器(Dynamic Table Sink) 编码/解码…...

自闭症儿童能否摘帽?摘帽成功的秘诀揭秘

自闭症,这一曾经被视为不可逆转的障碍,如今在科学的进步与社会的关注下,正逐步展现出被“摘帽”的可能性。那么,自闭症儿童真的能完全摆脱这一标签,实现真正的“摘帽”吗?答案是肯定的,关键在于…...

主题巴巴WordPress主题合辑打包下载+主题巴巴SEO插件

主题巴巴WordPress主题合辑打包下载,包含博客一号、博客二号、博客X、门户一号、门户手机版、图片一号、杂志一号、自媒体一号、自媒体二号和主题巴巴SEO插件。...

git把本地文件上传远程仓库的流程

下载git,并创建一个仓库,这里着重介绍怎么把本地文件上传参考 正确执行步骤:在你需要上传的文件夹空白处下,右键鼠标,点击git bash here $ git init初始化当前目录 $ git status看一下当前分支里面有什么&#xff0c…...

基于springboot+vue+uniapp的养老院管理系统小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…...

el-popover实现点击空白区域关闭,弹窗区域不关闭

难点: 普通方法会无法关闭,虚拟触发会导致选一个关一个,不用visible显示的方法太麻烦。 所以结合其他人的方法,使用手动监听判断的方法(点击蓝色区域看参考,这大佬vue2的,我vue3) 注…...

Disjoint Set Union

Problem One : 维护区间连通块 F - Range Connect MST (atcoder.jp) 暴力模拟的话,就是基于 Kruskal 的思想,按 c c c 从小到大排序,对于每次询问,枚举检查 j ∈ [ l , r ] j\in [l,r] j∈[l,r] ,只要 j j j 与 …...

手写 Hibernate ORM 框架 05-基本效果测试

手写 Hibernate 系列 手写 Hibernate ORM 框架 00-hibernate 简介 手写 Hibernate ORM 框架 00-环境准备 手写 Hibernate ORM 框架 01-注解常量定义 手写 Hibernate ORM 框架 02-实体 Bean 定义,建表语句自动生成 手写 Hibernate ORM 框架 03-配置文件读取, 数…...

Unity材质球自动遍历所需贴图

Unity材质球自动遍历所需贴图 文章目录 Unity材质球自动遍历所需贴图一、原理二、用法1.代码:2.使用方法 一、原理 例如一个材质球名为:Decal_Text_Cranes_01_Mat , 然后从全局遍历出:Decal_Text_Cranes_01_Albedo赋值给材质球的…...

C++那些事之结构化绑定

C那些事之结构化绑定 在聊结构化绑定之前,有几个面试问题,看看你会不会? 如何使用结构化绑定访问自定义类的私有成员?如何使用结构化绑定修改自定义类的成员呢? 这几个题目估计没几个人能答上来,题目与答案…...

ECRS工时分析软件:工业工程精益生产的智慧引擎

在工业工程学的广阔领域中,程序分析一直扮演着至关重要的角色。其中,ECRS四大原则——取消、合并、重排、简化,作为程序分析的核心,旨在通过优化生产过程,实现成本的节省和精益生产的目标。如今,随着科技的…...

大语言模型的核心岗位及其要求

一、核心岗位 研究科学家(Research Scientist): 负责制定研究计划,探索新算法和模型架构。数据科学家(Data Scientist): 进行数据收集、分析和预处理。机器学习工程师(Machine Lear…...

【屏驱MCU】RT-Thread 文件系统接口解析

本文主要介绍【屏驱MCU】基于RT-Thread 系统的文件系统原理介绍与代码接口梳理 目录 0. 个人简介 && 授权须知1. 文件系统架构1.1 虚拟文件系统目录架构 2. menuconfig 分析3. 代码接口分析3.1 DFS框架挂载目录3.2 【FAL抽象层】分区表和设备表3.3 如何将【文件路径】挂…...

进程管理工具top ps

概述 top 和 ps 是 Linux 系统中两个非常重要的用于管理和监控进程的命令工具。以下是它们的主要功能和区别: 1. 动静 2. 整体 & 详细 top: 动态视图:top 提供了一个实时动态更新的视图,能够持续显示系统中当前正在运行的进程…...

2年社招冲击字节,一天三面斩获offer

在工作满两年的时间选择了求变,带着运气和实力以社招身份重新看今天的互联网环境,从结果看还是复合预期的。 整个面试的流程还挺快的。周中让招聘专员给投递了简历。问什么时候面试,申请了一个周日,直接安排三面。下周周中就开启…...

oppo,埃科光电25届秋招,快手25届技术人才专项计划等几千家企业岗位内推

oppo,埃科光电25届秋招,快手25届技术人才专项计划等几千家企业岗位内推 ①【OPPO】25届秋招开启! 内推简历优先筛选! 【岗位类别】AI/算法类,软件类,硬件类,工程技术类,品牌策划类&a…...

【Vulnhub系列】Vulnhub Lampiao-1 靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub Lampiao-1靶场渗透 原文转载已经过授权 原文链接:Lusen的小窝 - 学无止尽,不进则退 (lusensec.github.io) 一、主机发现 二、端口扫描 三、web框架 四、web渗透 1、信息收集 2、目录扫描 获得版本信息7.56 3、获取shell …...

MySQL:ORDER BY 排序查询

通过 ORDER BY 条件查询语句可以查询到符合用户需求的数据,但是查询到的数据一般都是按照数据最初被添加到表中的顺序来显示。 基本语法 在MySQL中,排序查询主要通过ORDER BY子句实现。其基本语法如下: SELECT column1, column2, ... FR…...

UML类图 详解

总目录 前言 作为一个程序员,我们经常会使用UML来绘制各种图(UML中定义了用例图、类图、时序图、协作图等九种),类图就是其中常用图之一。设计模式中经常会用到的是类图,本文主要是学习UML类图相关资料后的汇总笔记&a…...

【IEEE出版 | 高录用率 | 快速检索 | 有ISBN号!】2024年智能计算与数据挖掘国际学术会议 (ICDM 2024,9月20-22)

智能计算与数据挖掘是当今信息技术领域的研究热点,并在众多领域都有着广泛的应用,如金融、医疗、教育、交通等。随着大数据时代数据量爆炸式增长,如何从海量数据中提取有价值的信息,一直是需要迭代解决的问题。 2024年智能计算与…...

DaoCloud配置不同环境的流水线(Q)

在DaoCloud自动化部署时,不知道如何分别构建生产,测试环境镜像。 Dockfile文件里有 ARG BUILD_ENV"uat" RUN npm run build:${BUILD_ENV} 这样两行代码来区分环境打包的,ARG是用于指定传递给构建运行时的变量,可是…...

基础的Shell命令

Shell命令有很多,以下是一些常用的Shell命令及其简要说明: 1. cd: 切换当前工作目录。 2. ls: 列出目录内容。 3. pwd: 显示当前工作目录的路径。 4. mkdir: 创建新目录。 5. rm: 删除文件或目录。 6. cp: 复制文件或目录。 7. mv: 移动文件或目录…...

量子仿真speedUp的经验

不用CPU的话,好的电脑配置对于jax的编译会更快 GPU编译速度明显最快...

我国政府门户网站建设现状/手机百度网盘登录入口

<?php /*** Filefifo.php 文件型FIFO队列*/ class Filefifo {/*** $_file_data, 数据文件的路径 */private $_file_data ;/*** $_file_idx, 索引文件的路径*/private $_file_idx ;/*** $_file_idx_bak, 索引备份文件的路径, 防止意外断电等导致索引文件破坏*/private $_f…...

柳河县建设局网站/最新新闻事件今天疫情

2019独角兽企业重金招聘Python工程师标准>>> 讲述了一个服务如何从配置中心读取文件&#xff0c;配置中心如何从远程git读取配置文件&#xff0c;当服务实例很多时&#xff0c;都从配置中心读取文件&#xff0c;这时可以考虑将配置中心做成一个微服务&#xff0c;将…...

买了域名如何做网站/seo优化教程自学

2019独角兽企业重金招聘Python工程师标准>>> select (case when instr (x,a)>0 or instr (x,b)>0 or instr (x,c)>0 then 1 else 0 end) from r 转载于:https://my.oschina.net/youfen/blog/1934809...

百中搜网站建设/宁波seo网络推广多少钱

考研调剂公告各院校已经发布出来了&#xff0c;下面由出国留学网小编为你精心准备了“2020年成都信息工程大学统计学院考研调剂公告”&#xff0c;持续关注本站将可以持续获取更多的考试资讯!2020年成都信息工程大学统计学院考研调剂公告一、学院简况统计学院是学校办学历史悠久…...

国外对于网站开发/中国最新新闻

1.停止HANA DB服务 命令:HDB stop 2.运行Nameserver服务 命令:/usr/sap/<SID>/HDB<instance>/exe/hdbnameserver 3.运行Compileserver服务 新开命令窗口执行命令:/usr/sap/<SID>/HDB<instance>/exe/hdbcompileserver...

wordpress 仪表盘 慢/东莞新闻头条新闻

好的&#xff0c;我来帮你生成一份Java简历。 姓名&#xff1a;张三 联系方式&#xff1a;zhangsangmail.com | (123)456-7890 求职意向&#xff1a;Java工程师 教育背景&#xff1a; 本科 | 计算机科学 | XYZ大学 | 2016 - 2020硕士 | 计算机科学 | ABC大学 | 2020 - 2022 工作…...