【论文阅读】时序动作检测系列论文精读(2020年)

news2025/7/4 7:39:58

文章目录

  • 1. DBG: Fast Learning of Temporal Action Proposal via Dense Boundary Generator
    • 论文目的——拟解决问题、
    • 贡献——创新
    • 实现流程
    • 详细方法
  • 2. PBR-Net: Progressive Boundary Refinement Network for Temporal Action Detection
    • 论文目的——拟解决问题
    • 贡献——创新
    • 实现流程
    • 详细方法
  • 3. RecapNet: Action Proposal Generation Mimicking Human Cognitive Process
    • 论文目的——拟解决问题
    • 贡献——创新
    • 实现流程
    • 详细方法
  • 4. Bottom-Up Temporal Action Localization with Mutual Regularization
    • 论文目的——拟解决问题
    • 贡献——创新
    • 实现流程
    • 详细方法
  • 5. Scale Matters: Temporal Scale Aggregation Network for Precise Action Localization in Untrimmed Videos
    • 论文目的——拟解决问题
    • 贡献——创新
    • 实现流程
    • 详细方法

1. DBG: Fast Learning of Temporal Action Proposal via Dense Boundary Generator

论文目的——拟解决问题、

  • 基于锚的方法不能预测精确的边界,也不能灵活地覆盖多时间的动作。
  • 基于边界的方法放弃了行动性信息,只采用边界匹配来捕获低层次的特征,这不能处理复杂的活动和杂乱的背景。

贡献——创新

  • 提出快速的端到端密集边界生成器DBG网络,可以对密集的候选框生成置信图。
  • 引入额外的时序上的动作分类损失函数来辅助监督(auxiliary supervision)动作概率特征(action score feature),该特征能够有效的促进动作完整度回归(Action-aware Completeness Regression,ACR)。
  • 设计PFG网络(Proposal Feature Generation)以获得具有全候选框视野的特征(global),为后续的动作分类和边界回归提供特征。

实现流程

在这里插入图片描述

  • Video Representation阶段,从视频中提取得到RGB特征和光流特征以输入密集边界生成网络(DBG, Dense Boundary Generator)。
  • DBG阶段,特征首先由双流网络(DSB, Dual Stream BaseNet)处理以得到低层次的双流特征和高层次的动作得分特征(actionness score feature),其中,双流特征由RGB和光流信息晚融合得到,动作得分特征从对动作分类的损失函数进行辅助监督(auxiliary supervision)得到
  • 再将这两种特征由特征生成层(PFG, Proposal Feature Generation Layer)转化成矩阵形式的特征(matrix-like feature);动作完整性回归网络(ACR, Action-aware Completeness Regression) 对密集候选框输出动作完整性得分图,时序边界分类网络(TBC, Temporal Boundary Classification) 生成边界置信图。
  • Post-processing阶段,对得到的三张图(action score map, starting score map, ending score map) 表征同一候选框的概率分数相乘以得到每个候选框的最终得分,对得分进行soft-NMS处理以得到最终选取的框。

详细方法

  • 下图左代表BMN(Boundary-Matching Network) 只利用边界处的局部(local)信息进行边界判断,下图右代表DBG利用proposal级的全局(global)信息进行整体的边界生成。体现了确定动作边界的过程也需要动作内部信息的思想。
    在这里插入图片描述

  • Video Representation: 依特定时间间隔将视频分割成L个片段,每个片段包含1帧RGB图像和5帧光流图像。

  • Proposal feature generation layer:(PFG) PFG中,对L* C维的视频特征分开始、执行、结束三个区域进行采样,采样点分别设置为8、16、8个,将N=32个采样点的结果连结以得到输出特征。每个proposal上得到N* C维特征,遍历所有起始时刻和时间跨度后,PFG输出L* L* N* C维特征。在这里插入图片描述

  • Action-aware completeness regression:(ACR) ACR分支接收行动性得分特征作为输入,并输出行动完整性图Pc,以估计候选提案和地面真实行动实例之间的重叠。对于Pc中的每个位置或建议,我们使用smooth-L1回归损失来监督,以产生可靠的行动完整性分数。

  • Temporal boundary classification:(TBC) TBC分支接收双流特征作为输入,并输出边界置信度图P_s,e来估计密集候选框的开始和结束概率。对于边界置信图中的每个位置或提议,我们使用二元分类损失来监督P_s,e,以预测精确的时间边界。

2. PBR-Net: Progressive Boundary Refinement Network for Temporal Action Detection

论文目的——拟解决问题

  • 动作边界的不正确定位是最有影响的错误,严重阻碍了当前方法的性能。
  • 应用边界回归来细化边界。其中,级联边界回归是一个经典而有效的范式,可以提高定位的准确性。例如:CBR被提议以迭代的方式应用边界回归–输出的边界被作为输入反馈给网络以进行下一次的细化。但是CBR在边界回归的不同步骤中使用相同的结构和特征,这与渐进学习的要求不一致。
  • 其他一些基于回归的工作直接改编两阶段物体检测器Faster R-CNN来解决动作检测的任务,因此是天生的两阶段级联的。然而,所有这些方法都无法获得细粒度的精确边界。此外,额外的提议阶段严重地减慢了检测速度。
  • 另一些工作提出密集地评估帧级分数,然后在分数上应用阈值来确定动作候选者的边界。因此,这些建议的边界应该是细粒度的。然而,这些帧级方法在很大程度上依赖于选择指标或预设阈值,它决定了动作边界的精度。

贡献——创新

  • 提出了一个端到端的时空动作检测网络PBRNet,它属于one-stage方法,但配备了三步级联的边界细化功能。
  • PBRNet整合了anchor-base的方法和frame-level细粒度特征。

实现流程

流程图如下所示,PBR-Net整体结构为类U-Net结构,其中加入融合模块(fusion block)FBv1和FBv2以融合不同层的信息。
在这里插入图片描述

PBR-Net包含三个级联的回归模块以渐进地定位边界和特征增强:模糊金字塔检测模块(coarse pyramidal detection, CPD),校正金字塔检测模块(refined pyramidal detection, RPD)和细粒度检测模块(fine-grained detection, FGD)。

详细方法

  • Feature Extraction: 视频数据被裁剪成Length* Height* Width的片段(H=W=96),选用I3D网络在最后一个均值池化前的层作为backbone,提取得到Length/8* Height/32* Width/32的特征。
  • 模糊金字塔检测模块(coarse pyramidal detection, CPD): 该模块处特征不断降采样,不同尺度的特征对应不同长度的动作。在长度为N特征的每个时刻划K个候选框,得到KN个候选框。同时对金字塔特征的每一层,采用kernel为3* 3* 3的3D卷积进行分类和边界回归(返回offset)。金字塔低层的高分辨率特征图被指定用于检测短动作实例,低分辨率的特征图用于检测长动作实例。然而,在CPD的金字塔中,低层缺乏足够的语义,高层缺乏足够的细节。
  • 校正金字塔检测模块(refined pyramidal detection, RPD): 为丰富CPD的细节,RPD在不断的上采样的同时进行特征融合(类比U-net的shortcut),融合时使用的FBv1网络结构如下图(a)所示
    在这里插入图片描述
    在FBv1中,先对RPD上一层的特征进行3D反卷积,对CPD更高层的特征进行卷积,再将二者相加。
    由于CPD和RPD结构对称,故直接将CPD的输出框作为RPD的候选anchor,同样再对其进行分类和边界回归,以得到RPD输出的相对精细的候选框。
  • 细粒度检测模块(fine-grained detection, FGD): FGD旨在以更细的粒度细化候选框。在FGD中,我们使用第二类融合块(即FBv2)来生成帧级特征。如上图(b)所示,帧级特征由两部分合并而成:一部分是RPD的输出,一部分直接是raw input(认为其可以补充空间细节),将分别经过卷积/反卷积的两部分进行特征融合,FBv2输出的特征就是最终的frame-level特征。将frame-level特征过三个由kernel为3* 3* 3的3D卷积和softmax组成的分类branch,分别输出每一帧在第K类动作的动作得分、开始置信度和结束置信度(图示即为第K类动作的三条曲线)。
  • 如下图所示,使用frame-level特征校正RPD输出候选框的开始时刻s和终止时刻e,动作持续时长s=e-t,利用空洞3D卷积(temporal dilated 3D conv)处理以s/e为中心,跨度为s/8的视频段,输出对应的offset,调整后得到最终输出。由此实现了frame-level特征对anchor-based候选框的校正,也便是一直提到的frame-level和anchor-based的融合。
    在这里插入图片描述
  • Training of PRB-Net: 分别设计三个IoU阈值以判定三个模块中什么样的anchor为正样本,当然,阈值是逐渐上升的,这也是涨点的措施之一;
    分类使用classification损失函数,回归使用平滑l1损失函数;
    为了平衡正负样本,在将anchor从一个模块传到下一个模块前会执行以下两步操作:根据上一模块在分类时的得分,仅保留背景分类得分较低(低于阈值)的动作候选框,即保留尽可能多的动作框,舍弃过于明显的背景框;使用hard sample mining策略,仅保留有大loss值的背景框,尽可能使正负样本数均衡;

如何涨点的训练技巧,需要在代码里仔细分析。

3. RecapNet: Action Proposal Generation Mimicking Human Cognitive Process

论文目的——拟解决问题

  • 先前的TAP工作主要基于特定尺度的滑窗sliding window或anchor的方法生成候选框,其本身具有低效性;同时由于输入视频长度变化较大,动作长度任意,基于定长候选框的方法存在一定不可行性。

贡献——创新

  • 引入了一种新的复述机制,以模仿人类对视频序列的认知过程。(人类对动作信息的判断有滞后性;或者说,需要足够的信息才能做出判断)。
    在这里插入图片描述
  • 开发了一个因果残差卷积模块(residual causal convolution) 来模拟视频中的上下文信息并保持对过去事件的短暂记忆。
  • 设计了一个联合概率行动性密度排名机制来形成全局行动建议决策。
  • 该模型可以处理任意长度的视频,并且只需要一次性处理整个视频就可以得到行动建议。

实现流程

在这里插入图片描述
视频中提取的特征经过因果残差卷积模块(stacked residual causal convolution model)生成开始、结束分数和动作性分数;然后,在前两个分数上应用投票和选峰方法,得到候选框;最后,使用联合概率行动性密度排名机制来获得动作建议(action proposal)。在这个过程中,不需要滑动窗口或锚框,而且可以很好地解决行动持续时间变化的问题。

详细方法

  • Video Feature Encoding: 将视频裁剪成定长不重叠的单元,随后采用双流I3D方法提取视频的spatial和temporal特征,并对其进行concatenate操作。

  • Residual Causal Convolution Module: causal指卷积层只关注当前帧之前的信息,如下图展示causal conv和普通conv的区别。
    在这里插入图片描述提出的因果残差卷积模块RCCM网络结构如下图右所示,RCCM中使用的空洞卷积示意图如下图左所示。在 t 时刻,由于卷积层处理了最邻近K帧的视频信息,故RCCM可在t时刻输出3* K尺度的特征,表征 t 时刻前K帧的动作开始、结束和进行得分。
    在这里插入图片描述

  • Action Boundary Decision: 在 t 时刻,卷积层处理 t-K+1 至 t 时刻的特征,相当于保留了对前K帧的短暂记忆;同理,在t时刻,我们也可以得到t至t+K-1时刻对该帧情况的判断。
    为了得到行动起始位置,有两条关于边界决策的规则:一是voting投票方案,计算K个结果中高于阈值得分的得分个数,如果个数超过特定值,此设为候选。此方法可以避免由于少数神经元的错误判断而导致的漏检;一是peak picking峰值选取方案,计算t时刻在K个结果下的开始得分均值,若得分均值比t-1时刻和t+1时刻的得分均值都高,将此设为候选。峰值选取方案对吸引神经元的局部最大值位置给予了额外的关注,这也可能是动作的边界。
    如此,我们得到了开始时刻的集合S,结束时刻的集合E,将两个集合所有元素一一组合,即为所有的候选框。

  • Joint Probability Actionness Density Ranking:
    动作的开始和结束只是一方面,还需要基于动作持续得分(actionness score)来进一步筛选,那些包含一个以上行动的候选框应该被拒绝,因为其平均行动信息或行动性密度很低。
    在这里插入图片描述

  • Network Training:
    标签标注:将开始和结束时刻延展至开始和结束区域,特定区域内即打标签;
    样本平衡:通过在损失函数中加上二值mask以将部分样本在BP中忽略,尽可能平衡正负样本数相同;
    损失函数:Lstart、Lend和Laction分别为起始分数损失、结束分数损失和行动性分数损失,采用sigmoid交叉熵损失函数。

4. Bottom-Up Temporal Action Localization with Mutual Regularization

论文目的——拟解决问题

现有的bottom-up的TAP方法将预测行动的开始、继续和结束阶段转换为三个二分类任务,并使用frame-level的正、负标注数据进行有监督训练。
然而,由于很难保证每一帧都包含足够多的信息以进行正确的二分类,我们很难判定动作到底是何时开始或结束的,甚至不能确定动作是否还在进行。换而言之,我们需要足够多的信息才能判断动作的具体状态(如果没有足够明确的动作结束标志,动作的进行得分还会很高)。
以三个独立二分类branch获取得分的方式主要有以下两个缺点:

  1. 每个动作段(temporal location)都被视为孤立的实例,并未考虑动作间的联系;
  2. 每个动作内的三种得分是独立评估的,并未考虑得分间的顺序联系。

以上缺点这可能会得到前后矛盾的结果,作者探究使用两种正则方法来解决此问题。

贡献——创新

  • 为了加强预测之间的时间关系,提出了阶段内一致性(IntraC)正则化,其目标是最小化每个阶段内,正或负样本内部内的差异,最大化正负样本之间的差异。
  • 为了满足三个阶段的排序约束,引入了阶段间一致性(InterC)正则化,通过强迫进行-开始(continuing-starting)阶段和进行-结束(continuing-ending)阶段保持一致性以实现三阶段的排序约束。
  • 当把上述两个正则化项引入到原来的bottom-up的时间行动定位网络的损失中时,IntraC和InterC的优化可以被认为是三个分类器之间相互正则化的一种形式,因为现在三个阶段的预测是通过分类器输出的一致性检查而耦合的。同时,这两个正则方法可以作为优化置信度评分过程的插件工具,且加入后不改变端到端的结构。在达到sota的基础上,可对以往的优秀模型有较好的指标提升,可以理解为更好得到score置信度的一种策略。

实现流程

由3D卷积提取输入视频的特征,通过一维卷积层(ProbNet)输出三条得分序列;通过RegrNet输出开始时刻和结束时刻的回归值。最后通过组合具有高置信度的开始-结束时刻点得到候选框,并对其进行分类。
在这里插入图片描述
绿色的continue阶段在动作实例 "LongJump "或背景中是不稳定的(黄色圆圈);不同的动作阶段是不相互支持的(红色圆圈)。

详细方法

  • IntraC regularization: IntraC regularizaiton是在开始、进行和结束阶段内分别进行的。首先分离出正负区域,然后减少正负内部的差异,扩大正负之间的差异。
    损失函数如下所示,最终损失函数为开始、进行和结束段损失函数之和。
    在这里插入图片描述
    在这里插入图片描述

  • InterC regularization: InterC在三个阶段之间执行一致性正则化,在进行-开始和进行-结束之间运作(i)如果在进行阶段有一个突然的上升,开始阶段应该给出一个高概率,反之亦然;(ii)如果在进行阶段有一个突然的下降,结束阶段应该给出一个高概率,反之亦然。
    将进行-开始一致性和进行-结束一致性转化为优化问题,即使t时刻进行得分上涨的幅度开始得分上涨的幅度间L1距离较小,t时刻进行得分下降的幅度结束得分的上涨的幅度间L1距离较小。
    在这里插入图片描述

  • Loss function: 在训练开始、进行和结束二分类器使用的交叉熵损失函数的基础上,加入基于smooth L1的边界回归损失和上述提及的IntraC及InterC对应的损失函数。
    在这里插入图片描述

  • Proposal Generation and Classification: 通过阈值和局部最大值选取开始、结束时间点,在限定最大持续时长的情况下,对高概率或停留在峰值位置的起点和终点候选点进行随意组合以生成全部候选框。通过添加一个网络给每个proposal打分,将其得分与开始时刻和结束时刻的得分相乘,最终进行ranking。使用soft-NMS抑制多余的候选框以达到更高的召回率。最后一步,对经过筛选的所有候选框进行分类。

5. Scale Matters: Temporal Scale Aggregation Network for Precise Action Localization in Untrimmed Videos

论文目的——拟解决问题

  • 现有方法均不能较好解决动作持续时长差距严重的问题,可能导致边界不够准确,作者认为这主要是感受野尺度无法匹配候选框长度导致的。
  • 一个流行的处理方法是通过时间子采样建立一个视频金字塔,并从所有金字塔层面提取相同大小的视频片段。一个动作实例将在特定的时间尺度上被检测到,在这个尺度上,它的大小持续时间是可以被检测的,而在其他尺度上则被忽略。然而,视频金字塔使学习一个有效的模型变得非常复杂,带来更差的性能。

贡献——创新

  • 提出了一个行动定位模型TSA-Net,它属于一个两步框架(建议生成+分类),设计了多扩张时间卷积(MDC)块作为TSA-Net的核心组件,可以在估计边界点时同时考虑了许多时间尺度
  • 我们将TSA-Net设计为边界检测和动作性分组的结合体。它同时检测三种类型的点:开始、结束和实例的中点。中点隐含地编码了一个建议的行动性信息。起点/终点对只有在有把握的中点的情况下才会有用。

实现流程

在这里插入图片描述

详细方法

  • Video Feature Extraction: 以特定间隔将视频裁成片段,并提取片段的P3D/C3D特征(C3D即单纯的3D卷积核,P3D是将3D卷积转换为2D空间卷积和1D时间卷积的结合体)。

  • Multi-Dilation Temporal Convolution (MDC) Block: 在一维卷积时使用了不同尺度的dilation。
    在这里插入图片描述
    所有扩张的卷积的输出被简单地平均化,返回融合的上下文信息。
    请注意,在平均操作之后插入了一个跳过的连接,这样扩张的卷积就会被加强,以集中学习剩余的部分。

  • Multi-branch Stacked MDCs: 对于不同持续时间的动作,所需的时间背景信息的尺度是不同的。为了定位短时间的动作实例,过大的时间卷积的感受野会带来不相关的信息,分散参数优化的注意力。而对于长的动作实例,小的时间感受野可能会缺少关键的辨别信息,故考虑融合多个不同感受野的branch
    具有多个branch的网络结构如下图所示:
    在这里插入图片描述
    其中在MDC前的一维卷积层是为了进行相邻帧的特征融合,同时MDC内部的参数可以手动调整以适应具体的动作长度,值得注意的网络设计trick:最后的aggregation层可以保证每个MDC branch都既学习到中间点信息,也学习到边界信息。该网络最终输出三条得分曲线,分别代表对应时刻点start、end和intermediate的得分,使用交叉熵损失函数进行训练。

  • Objective of Critical Point Detection: (老生常谈的样本极度不平衡的问题)将临界点检测表述为一个序列-序列学习问题。然而,由于临界点是高度稀疏的,这样的处理会导致正负标签之间的严重不平衡。为了缓解这个问题,我们对每个注释的临界点进行膨胀,比如将一个时间帧膨胀到一个区域。

  • Proposal Generation and Ranking: 网络使用局部最大值和阈值在得分曲线中寻找可能的开始和结束时刻。在组合开始和结束时刻时遵循以下两条要求:候选框的长度保持在一个范围内;候选框对应的中点若intermediate得分较低则被舍弃。
    每个候选框的得分由三部分的乘积组成:开始得分,结束得分和将候选框特征输入小网络输出的得分。使用贪婪NMS/soft-NMS进行筛选。
    最后进行动作分类。两阶段视频动作定位的最后一步是将建议输入动作分类器。它将建议归入许多预先定义的动作类别之一,或者是空类别。

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

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

相关文章

08.初级指针

一、指针 指针理解的2个要点: 1. 指针是内存中一个最小单元的编号,也就是地址 2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量 总结:指针就是地址,口语中说的指针通常指的是指针变…

VLSI 半定制设计方法 与 全定制设计方法【VLSI】

VLSI 半定制设计方法 与 全定制设计方法【VLSI】VLSI 半定制设计方法1. standard cell 设计方法Standard Cell library设计方法与步骤特点2. 门阵列(gate array)设计方法gate array特点与FPGA的区别PLA3. 门海设计方法(sea-of-gates styles)全定制:无约束设计方法&a…

希望计算机专业同学都知道这些老师

C语言教程——翁凯老师、赫斌 翁恺老师是土生土长的浙大码农,从本科到博士都毕业于浙大计算机系,后来留校教书,一教就是20多年。 翁恺老师的c语言课程非常好,讲解特别有趣,很适合初学者学习。 郝斌老师的思路是以初学…

【UML】活动图Activity Diagram、状态机图State Machine Diagram、顺序图Sequence Diagram

一、活动图 1、简述 活动图和流程图很相似,但是流程图不属于UML图的一种。 类图是一种静态图,属于结构建模;活动图是一个动态图,属于行为建模。 2、元素 2.1 开始、结束、判读、活动、合并 流程图的元素很简单:圆…

[附源码]java毕业设计社区新冠疫情防控网站

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

WebSocket 和 Socket 的区别

WebSocket 和 Socket 的区别就像Java和JavaScript,并没有什么太大的关系,但又不能说完全没关系。可以这么说: 1.命名方面,Socket是一个深入人心的概念,WebSocket借用了这一概念;2.使用方面,完全…

java项目-第148期ssm社区疫情防控管理信息系统-ssm毕业设计_计算机毕业设计

java项目-第148期ssm社区疫情防控管理信息系统-ssm毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm社区疫情防控管理信息系统》 该项目分为2个角色,管理员、用户。 用户可以浏览前台的疫情物资,进行申请领取。申请后可以在后台…

Windows Server 2019 - 辅助DNS

配置辅助DNS实现主DNS的备用 两台虚拟机;都安装了DNS服务器 一个作为主服务器,一个作为备用服务器 主服务器的配置: 固定IP DNS管理器 安装成功后打开DNS管理器 在正向查找区域新建区域

尝试搞懂 MySQL(一)

一、MySQL 基础架构 先上个 MySQL 逻辑架构图 可以看出,整个架构分为两层:server 层 和 存储引擎层。其中: server 层:连接器、查询缓存、分析器、优化器、执行器等;存储引擎层:插件式,支持 In…

与排序相关的STL模板

今天,深度学习了排序的我决定大展身手,将另我突发八十年脑血栓的STL排序全部列举出来. 本博客除了已在文章中说明的函数外,其他默认头文件为<algorithm>. qsort 在c标准库中,此函数被(收藏)于<cstdlib> qsort 与 bsearch 的比较函数 qsort 函数有四个参数&…

华清远见上海中心22071班--11.19作业

题目&#xff1a;实现开发板点灯操作 程序要求&#xff1a; 1&#xff09;分部实现注册字符设备驱动 2&#xff09;自动创建设备节点 3&#xff09;通过结构体对led灯地址进行映射 4&#xff09;次设备号完成私有数据传参 5&#xff09;在open函数中获取到次设备号&#xff0c…

Js逆向教程-10常见代码混淆

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Js逆向教程-10常见代码混淆 一、常见代码混淆 eval混淆AA和OO混淆JSFuck 混淆就是将正常的代码进行语法上的改变或者变量名称上的改变…

基于javaweb,ssm学生宿舍系统(带论文)

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat8.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;非前后端分离 前端技术&#xff1a;vue.jselementUI等框架实现 服务端技术&#xff1a;springspringmvcmybat…

基于stm32单片机的输入捕获测量脉宽Proteus仿真

资料编号&#xff1a;109 下面是相关功能视频演示&#xff1a; 109-基于stm32的输入捕获测量脉宽Proteus仿真(源码仿真全套资料)功能介绍&#xff1a; 采用stm32单片机作为主控&#xff0c;采用单片机的GPIO进行输入捕获&#xff0c;可以测量按键按下的低电平脉宽时间&#x…

云原生系列七【轻松入门容器基础操作】

✅作者简介&#xff1a; CSDN内容合伙人&#xff0c;全栈领域新星创作者&#xff0c;阿里云专家博主&#xff0c;华为云享专家博主&#xff0c;掘金后端评审团成员 &#x1f495;前言&#xff1a; 最近云原生领域热火朝天&#xff0c;那么云原生是什么&#xff1f;何为云原生&a…

驱动——串口工具点灯实验

通过串口工具输入命令&#xff0c;操作LED灯的点亮与熄灭 要求&#xff1a; 1&#xff09;分部实现注册字符设备驱动 2&#xff09;自动创建设备节点 3&#xff09;通过结构体对led灯地址进行映射 4&#xff09;次设备号完成私有数据传参 代码实现&#xff1a; 1、头文件…

如何使用闲置的云服务器搭建一个属于自己的私人云网盘(可道云kodbox)

你是否有过网盘下载速度只有十几KB&#xff0c;时不时出现网盘的文件被删除的问题&#xff0c;不如自己搭建一个云网盘吧&#xff0c;只需要一云服务器&#xff0c;即可搭建一个跟某度云一样的云盘。可以自由下载&#xff0c;不限制网速&#xff0c;随时都可上传下载。这篇文章…

[附源码]SSM计算机毕业设计在线文献查阅系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Redis应用问题解决(缓存穿透、击穿、雪崩、分布式锁)

Redis应用问题解决(缓存穿透、击穿、雪崩、分布式锁) 缓存穿透 问题描述 当系统中引入redis缓存后&#xff0c;一个请求进来后&#xff0c;会先从redis缓存中查询&#xff0c;缓存有就直接返回&#xff0c;缓存中没有就去db中查询&#xff0c;db中如果有就会将其丢到缓存中&…

Dockerfile构建SpringBoot项目

【1】将SpringBoot项目打包 jar包-->用JDK运行(我们这里打成jar包)war包-->用Tomcat运行 MySQL的url配置 1.useSSLfalse MySQL 8.0 以上版本不需要建立 SSL 连接的&#xff0c;需要显示关闭 2.allowPublicKeyRetrievaltrue 允许客户端从服务器获取公钥。 3.serverTime…