【阅读笔记】Dense trajectories and motion boundary descriptors for action recognition
论文地址:Dense Trajectories and Motion Boundary Descriptors for Action Recognition | International Journal of Computer Vision
如何用一句话描述这份工作?💡
在多个尺度上,对视频序列中每一帧的密集网格上的特征点采样,并使用光流算法进行追踪。
1 论文主要贡献是什么?
-
提出了一种基于密集轨迹和运动边界描述符的视频表征方法;
-
引入了一种基于运动边界直方图(MBH)的描述符,在真实世界视频中表现出色,尤其是在包含大量相机运动的视频上;
-
在九个数据集上评估了视频表征效果,包括KTH、YouTube、Hollywood2等,该方法在所有数据集上均优于当前最先进结果。
2 写在前面
- 局部时空特征是动作识别的一种有效表征手段,已在实践中得到检验。传统的局部时空特征包括Harris、Gabor滤波、Hessian矩阵等。
- 直接用3D-SIFT、HOG3D等方法在联合3D空间中检测兴趣点并不有效,原因是视频中的2D空间域和1D时间域表现出了不同的特征,于是就考虑以不同的方式处理它们:根据视频序列跟踪兴趣点。
于是就引出了相关工作,例如下图中的KLT、SIFT方法。
下面对KLT、SIFT简单介绍:
(1)KLT(Kanade-Lucas-Tomasi)
是一种基于光流理论的方法,通过最小化图像亮度变化来估计序列中的特征点运动。(适用于跟踪角点或边缘点)
(2)SIFT(Scale Invariant Feature Transform)
尺度不变特征变换,是一种用于提取图像中关键点和描述符的特征检测算法,旨在提取对尺度、旋转和亮度变化具有不变性的特征。(适用于特征匹配任务)
实际上,从上图也可以看出,密集轨迹算法与其它两种方法的差异:
①采样密度:KLT于SIFT的关键点是稀疏分布的,而密集轨迹在关键点是密集处理的。
②对快速、不规则运动的处理:也正是因为前两种方法的稀疏性,在这类视频上的处理效果不如密集轨迹;(密集轨迹的一个优点是平滑性约束,在论文有提及)
③计算复杂度:从直觉上也可以发现,密集轨迹计算量较大。
注:笔者在这边的理解还不够到位,详细的信息在论文中“4.1.2”节有所描述。
论文还考虑到了真实世界中动作识别的问题:相机本身运动产生的干扰怎么办?
一个直观的想法是:去除相机运动,那如何估计呢?
运动边界描述符(MBH,Motion Boundary Histograms)。
如下图所示,该方法基于光流梯度计算,用于捕获像素之间的相对运动(即运动边界),能够去除局部恒定的相机运动,保留关于运动变化的信息,这样一来,就能够有效区分前景动作和背景中的相机运动。换句话说,MBH的引入使得行为识别对相机运动具有鲁棒性!
当然,这张图中还展示了HOG与HOF的效果,私以为比较重要,所以详细索索:
1. HOG (Histograms of Oriented Gradients)
- 代表图像中的梯度方向和大小,关注静态外观信息;
- 在上图中,HOG描述符通过颜色(色调)表示梯度/流向的方向,通过饱和度表示梯度/流向的大小;
- 正式因为关注场景中的静态特征,所以HOG对相机运动不敏感。
2.HOF (Histograms of Optical Flow)
- 代表像素点在视频帧之间的光流变化,捕捉局部运动信息;
- 在图中,HOF描述符同样通过颜色(色调)表示光流的方向,通过饱和度表示光流的大小;
- HOF描述符包含了由于相机运动引起的背景中的恒定运动,可能会对行为识别造成干扰。
3 方法论
3.1 密集采样(Dense Sampling)
【目的】
确保在视频的每一帧中都能均匀地覆盖特征点,以便捕捉到足够的局部运动信息和上下文信息。
【采样过程】
Step1:网格采样
首先,在每个空间尺度上单独进行网格采样,采样点间隔为W像素。这样可以保证特征点在所有空间位置和尺度上均匀覆盖。
作者通过实验证明,W=5 的时候效果是最优的!
Step2:去除同质区域点
这里需要思考一个问题:在Step1中,是不是所有点都需要密集采样?
前景人像的运动的确很重要,但背景往往是不会变化的,此时如果对背景同样进行密集采样,必然会引入不必要的信息且增加计算负担。
于是,作者在这里采用了一个Shi和Tomasi(1994)提出的一个方法:根据网格上每一个点的自相关矩阵的特征值大小,选择保留或去除。具体来说:对于图像中的点i,如果其本征值λ1和λ2的最小值小于某个阈值T,则移除该点。阈值T设置为图像中所有点最小特征值的最大值的0.001倍,这样说有点绕,其实公式一目了然:
这样一来,区域中的无效点就不必要追踪了,可以提高特征点的质量。
这里还需要说明一下,论文中提到了“同质区域”(homogeneous image areas),而笔者上面提及了“背景区域”,实际上并不准确。因此,下面对两者做一个区分:
- 同质区域(Homogeneous Region): 指的是在图像或视频中颜色、亮度、纹理等方面变化不大的区域。这些区域可能包含背景,也可能包含前景中的平坦物体表面。其最大的特征是:缺乏显著的边缘或纹理信息,使得它们在图像处理中难以区分。
- 背景区域(Background Region): 指视频中或图像中作为前景物体衬托的部分,通常是静态的,不随时间变化。背景区域通常包括场景中的固定物体和结构,如墙壁、地板、家具等。
下图展示的是经密集采样并在去除了同质区域特征点后的效果图:
3.2 轨迹(Trajectories)
【目的】
在 3.1 密集采样特征点的基础上,提取轨迹,并计算与这些轨迹对齐的描述符。
【过程】
Step1:轨迹提取
首先,在每个空间尺度上独立地对采样点进行跟踪。这意味着对于视频中的每一帧,都会计算其相对于下一帧的密集光流场。
定第 t 帧中的点 Pt=(xt,yt),其在第 t+1 帧中跟踪到的位置通过在光流场 ωt=(ut,vt) 上应用中值滤波来平滑得到:
其中,M是中值滤波核,大小为3×3像素。这个时候又会有疑问:为啥是中值滤波?
作者在论文中给出了一个图,很好诠释了中值滤波的优点,如下:
其中,蓝色点属于背景,应该保持在原位,而红色点属于前景物体,应该跟随物体移动。当使用双线性插值时,运动边界变得模糊,导致前景和背景的运动信息混淆;而使用中值滤波能够保持运动边界的清晰度,从而更好地区分前景和背景的运动。
所以中值滤波的优点是什么?
从上述图可以直观体会到,的确可以保持运动边界的清晰度,减少模糊,可以提高轨迹跟踪的质量。
本质原因是:中值滤波对异常值的鲁棒性。(例如,对于噪声或快速运动造成的误差,中值滤波只取邻域中的中值,而不是平均值,所以会更加稳定。)
Step2:光流场计算
采用Farneback(2003)的算法计算密集光流场,其核心在于:通过在两个连续帧的邻域之间嵌入平移运动模型,并使用多项式展开来近似像素强度。
Step3:轨迹长度限制
为了克服跟踪过程中的漂移问题,将轨迹长度限制为L帧,从而确保轨迹不会偏离其初始位置太远。
作者通过实验证明,L=15 的时候效果是最优的!
Step4:轨迹的后处理
一方面,静态轨迹是不包含运动信息的轨迹;另一方面,具有突然大位移的轨迹可能是错误轨迹。
这两类轨迹的纳入会影响追踪效果,所以在后处理时选择去除
3.3 运动和结构描述符(Motion and Structure Descriptors)
【目的】
设计描述符来嵌入视频的外观和运动信息,从而捕捉视频中的动态结构,以更全面地表征动作。
【描述符计算】
- 空间-时间体积:沿着轨迹计算描述符,以编码运动信息。论文中定义了一个与轨迹对齐的空间-时间体积,其大小为N×N像素,长度为L帧。
-
空间-时间网格:将空间-时间体积细分为nσ×nσ×nτ大小的网格,并在每个网格单元中计算一个描述符(例如HOG、HOF或MBH,在“方法论”的示意图中可以体现),最终的描述符是这些单元描述符的串联。
【描述符类型】
- 1.梯度和光流直方图(HOG+HOF):前面笔者已做过介绍,这两种描述符是用来描述静态外观和局部运动信息的。
- 2.运动边界直方图(MBH):去除局部恒定的相机运动,保留运动边界信息。
由于算法的后两个步骤相对比较简单,所以论文中算法架构图只显示了前面三部分。
接下来笔者对后两部分做一个简单的描述,包括构建codebook以及分类。
3.4 特征表示
【目的】
将高维的局部特征转换为一组离散的视觉词汇(visual words),这样它们就可以被用来表示和比较图像或视频内容。(这里采用的Bag of Features)
形象化描述议一下BoF:
把一堆单词(特征)扔进一个袋子(池)里,不考虑它们的顺序和位置,只关注单词的种类和数量。
这种表示方法能够捕捉图像或视频中的全局信息,同时忽略局部特征的具体位置,有助于提高模型的泛化能力。
【过程】
Step1:提取特征
从视频中提取局部特征,论文中提取了轨迹、HOG、HOF、MBHx和MBHy等。
Step2:使用k-means聚类构建Codebook
从训练数据中随机选择一部分局部特征(论文中是100000个),然后使用k-means算法将这些特征聚类成预定数量的视觉词汇(论文中是4000个)。
为了提高聚类的质量,论文对k-means算法进行了8次初始化,并保留误差最小的结果。(避免局部最优解)
Step3:特征向量化
对于每一个video,计算其局部特征与 Codebook 中每个视觉词汇的相似度,并构建一个直方图。(其中每个维度代表一个视觉词汇的出现频率)
3.5 分类(Classification)
采用非线性核的SVM对利用 BoF 表征的 features 进行训练,论文将不同的描述符通过多通道方法做了结合,公式如下:
最后,论文采用一对多的策略来处理多类分类问题,即每个类别都与其它所有类别进行比较,并选择得分最高的类别作为预测结果。
4 实验结果
讲了那么多方法论,接下来看看结果,毕竟实践才是检验真理的唯一标准!
4.1 不同描述符的比较 | Comparison of Different Descriptors
本节的实验主要是对比不同描述符(Trajectory、HOG、HOF、和MBH)在动作识别任务中的效果,并确定它们对最终识别性能的贡献。结果如下图:
【结论】
- Trajectory 通过捕捉轨迹的动态变化来表征动作,在某些数据集上表现出色(背景简单、跟踪容易),例如KTH、IXMAS和UIUC。
- HOG 关注静态外观信息,在包含大量体育动作的数据集上表现良好,如YouTube、UCF Sports和Olympic Sports。
- HOF 捕捉局部运动信息,在多个数据集上都有一定的效果,但在某些情况下可能受到相机运动的干扰。
- MBH 通过编码相对运动来减少相机运动的影响,在所有数据集上都显示出优越的性能,尤其是在真实世界视频数据集上,如YouTube、UCF50和HMDB51。
- 当结合所有描述符(Combined)时,识别性能进一步提升,这表明不同描述符之间存在互补性。(相辅相成、相得益彰~~)
4.2 与基线轨迹的比较 | Comparison to Baseline Trajectories
基线方法包括KLT轨迹、SIFT轨迹以及密集立方体(Dense Cuboids)。结果如下图:
【结论】
- KLT轨迹使用Kanade-Lucas-Tomasi跟踪器来提取兴趣点并跟踪,较为稀疏,所以可能无法捕捉到快速或复杂运动的全部细节。
- SIFT轨迹通过匹配连续帧之间的SIFT描述符来提取轨迹,在处理视频时较为稳健,但可能在运动变化细微的视频中表现不佳,因为SIFT特征点是基于空间直方图的,不够局部化。
- 密集立方体是一种不依赖于轨迹跟踪的方法,它在空间-时间体积中直接提取描述符,而不关心轨迹的动态变化。
- 密集轨迹 vs Others:与KLT轨迹和SIFT轨迹相比,密集轨迹在识别准确率上较优;与密集立方体相比,密集轨迹同样优秀(密集立方体虽然简单、计算效率高,但可能无法充分利用视频中的运动信息)
- 密集表示 vs 稀疏表示:密集表示在大部分数据集上都是优于稀疏表示的,这也是直觉上能感觉到的,采样点越多、越密集,就有更大的可能在不同的背景和遮挡条件下捕捉到动作的关键信息,也能捕捉到快速变化,从而提高动作识别的准确性。
- 总的来说,密集轨迹在九个dataset上效果都是最佳的!
4.3 不同光流算法的比较 | Comparison of Different Optical Flow Algorithms
光流计算用于估计图像中像素点在连续帧之间的运动,是密集轨迹的前提。
在实验中,论文采用了两种光流算法进行对比,具体如下:
- Farneb¨ack(2003)算法:该算法基于多项式扩展,用于两帧之间的运动估计,提供了一个在速度和准确性之间较好的折中方案。
- Brox和Malik(2011)算法:该算法是一种大型位移光流算法,包含了全局平滑性约束,能够处理更大的运动位移。
后者在理论上能够提供更准确的光流估计,但经实验证明(在YouTube和Hollywood2上),两者的整体性能相似,但后者计算成本更高。因此,为了平衡计算效率与准确性,论文最后采用了Farneb¨ack(2003)算法。
对比实验结果图:
4.4 轨迹参数评估 | Evaluation of Trajectory Parameters
实际上,这一节的内容可以理解成消融研究。论文中评估了算法中的各种参数对动作识别性能的影响,包括:轨迹长度、采样步长、邻域大小、单元网格结构、空间尺度数量和刷新率。
参数的最终选择核心是:在保持高识别率的同时,平衡计算成本。
实验结果如图所示,详细的分析请阅读论文,笔者在此不再赘述!
4.5 计算复杂度分析 | Computational Complexity Analysis
这节主要是为了分析算法执行的效率,尤其是考虑到实际应用中对实时或近实时处理的需求。
下图展示的是算法主要步骤的时间消耗占比,主要包括光流计算、轨迹追踪、描述符计算、特征存储。从结果来看,光流计算占据了大半部分时间,描述符计算占据第二。
论文提及:如果只计算MBH描述符,描述符计算时间可以减少约46%,这表明在计算资源有限的情况下,可以选择性地计算特定的描述符。
此外,论文还探讨了不同的参数设置,如采样步长、空间尺度数量和刷新率,对计算速度和特征数量的影响。结果如下图所示:
【结论】
(1)顶部左侧图:展示了不同采样步长对计算速度的影响,随着采样步长的增加(即采样点变得更稀疏),计算速度提高(待处理的数据量减少)。但是,如果步长过大,可能会丢失重要的运动信息,影响特征的表达能力。
(2)顶部右侧图:展示了不同采样步长对每帧特征数量的影响,可以发现,采样步长越小,每帧中的特征点数量越多。(更密集的采样意味着更多的点被选取用于计算)
(3)底部左侧图:展示了不同空间尺度数量对计算速度的影响,增加空间尺度数量可以提高特征的尺度不变性,但同时也会增加计算负担。
(4)底部右侧图:展示了不同刷新率对计算速度和每帧特征数量的影响。(刷新率是指在视频序列中采样特征点的频率。)较低的刷新率意味着在连续帧之间跳过一些帧不进行特征提取,从而减少计算量。图中显示,刷新率对计算速度的影响较小,但会显著减少每帧的特征数量。
4.6 与最新技术比较 | Comparison to State-of-the-Art Results
与SOAT效果进行对比,结果发现,论文提出的算法在7个dataset上都是最优的!
结论与启发
-
作者考虑到了实际行为识别中的问题(而不限于实验室环境),即存在相机扰动,因此采用边界描述符(MBH)进行缓解;
-
在密集采样中,作者利用每一个点的自相关矩阵的特征值进行筛选特征点,实际上这个操作和注意力机制的思想还是挺像的,保留重要区域,抑制不重要区域。只不过后者认为哪怕是一些不重要的区域,可以当成 noise 提升鲁棒性,这也是一种不错的选择,或许也可以成为这份工作的一个改进方向;
-
融合不同描述符产生了“涌现”的效果:不同的描述符,如轨迹形状、HOG、HOF和MBH,各自捕捉视频内容的不同方面。通过融合这些描述符,模型能够从多个角度理解视频内容,从而提高识别的准确性;
-
最后,笔者认为这份工作实验设计比较全面,同时也在九个数据集上做了验证(工作量较大),这为算法在不同场景下的表现提供了丰富的视角!不过,在某些参数/方法选择时,仅在个别数据集上做了实验,或许,是为了给后来者留下一些思考与进一步考究!
相关文章:
【阅读笔记】Dense trajectories and motion boundary descriptors for action recognition
论文地址:Dense Trajectories and Motion Boundary Descriptors for Action Recognition | International Journal of Computer Vision 如何用一句话描述这份工作?💡 在多个尺度上,对视频序列中每一帧的密集网格上的特征点采样&a…...
React 远程仓库拉取项目部署,无法部署问题
项目场景: 提示:相关背景: React 远程仓库拉取项目部署,二次开发 问题描述 提示:项目中遇到的问题: React 远程仓库拉取项目部署,正确安装依赖后(开发混乱,造成packg…...
CSS3新特性——字体图标、2D、3D变换、过渡、动画、多列布局
目录 一、Web字体 二、字体图标 三、2D变换 1.位移 (1)浮动 (2)相对定位 (3)绝对定位和固定定位 (4)位移 用位移实现盒子的水平垂直居中 2.缩放 利用缩放调整字体到12px以下ÿ…...
前端反向代理的配置和實現
反向代理是位於客戶端和服務器之間的一個中間層,它代表客戶端向伺服器發起請求,然後將伺服器的回應返回給客戶端。與傳統的正向代理不同,反向代理是由伺服器端配置的,客戶端通常不知道它的存在。在前端開發中,反向代理…...
【K8S系列】Kubernetes Pod节点ImagePullBackOff 状态及解决方案详解【已解决】
在 Kubernetes 中,当某个 Pod 的容器无法从指定的镜像仓库拉取镜像时,Pod 的状态会变为 ImagePullBackOff。这通常是因为指定的镜像不存在、镜像标签错误、认证失败或网络问题等原因。 以下是关于 ImagePullBackOff 的详细分析及解决方案。 1. ImagePull…...
JSONObject jsonObject = JSON.parseObject(json);
是用于将一个 JSON 格式的字符串解析为一个 JSONObject 对象的语句。具体来说: JSON.parseObject(json): 作用: JSON 是 FastJSON 库提供的一个工具类。parseObject 方法可以将 JSON 格式的字符串(例如:{"key1&qu…...
软件测试之测试用例扩展
软件测试之测试用例扩展 1. 测试用例覆盖2. UI布局覆盖3. 兼容性覆盖4. 测试用例条数 1. 测试用例覆盖 规则覆盖UI布局兼容性 2. UI布局覆盖 2条用例即可 布局, 颜色与原型图一致图片和文字描述无误 3. 兼容性覆盖 测试5大浏览器 火狐谷歌ieEge苹果 4. 测试用例条数 使…...
hj 212 协议解包php解包,
这里写目录标题 什么是环保HJ212协议?常用的标准码说明php接收包解包(没有crc验证)到redis 序列化python 发包测试 什么是环保HJ212协议? HJ212是由国家环保行业制定的数据传输标准协议,通常是通过TCP/P通讯方式进行数据传输的,…...
03架构模式(D2_架构模式01)
目录 学习前言 一、架构的模式 1. 分层 2. 分隔 3. 分布式 4. 集群 5. 缓存 6. 异步 7. 冗余 8. 自动化 9. 安全 10. 敏捷性 二、参考文献 学习前言 架构演进中有很多知识点,总体上可以归结为以下模式,这里说的模式本质是架构中技术点的抽 …...
深入List集合:ArrayList与LinkedList的底层逻辑与区别
目录 一、前言 二、基本概念 三、相同之处 四、不同之处 五、ArrayList 底层 六、LinkedList 底层 七、ArrayList 应用场景 八、LinkedList 应用场景 九、ArrayList和LinkedList高级话题 十、总结 一、前言 在Java集合的广阔舞台上,ArrayList与LinkedLis…...
mac安装appuim
要在macOS上安装Appium,这是一个自动化测试框架,可以用来对移动应用进行测试(支持iOS和Android应用)。为了安装Appium和其依赖的环境,你需要做一些准备工作。以下是详细的安装步骤: 前提条件 1、macOS系统…...
Telegram bot Mini-App开发实践---Telegram简单介绍与初始化小程序获取window.Telegram.WebApp对象并解析
➡️【好看的灵魂千篇一律,有趣的鲲志一百六七!】- 欢迎认识我~~ 作者:鲲志说 (公众号、B站同名,视频号:鲲志说996) 科技博主:极星会 星辉大使 后端研发:java、go、python、TS,前电商、现web3 主理人:COC杭州开发者社区主理人 、周周黑客松杭州主理人、 AI爱好…...
绿光一字线激光模组:工业制造与科技创新的得力助手
在现代工业制造和科技创新领域,绿光一字线激光模组以其独特的性能和广泛的应用前景,成为了不可或缺的关键设备。这种激光模组能够发射出一条明亮且精确的绿色激光线,具有高精度、高稳定性和长寿命的特点,为各种精密加工和测量需求…...
鸿蒙进阶篇-Math、Date
“在科技的浪潮中,鸿蒙操作系统宛如一颗璀璨的新星,引领着创新的方向。作为鸿蒙开天组,今天我们将一同踏上鸿蒙基础的探索之旅,为您揭开这一神奇系统的神秘面纱。” 各位小伙伴们我们又见面了,我就是鸿蒙开天组,下面让我们进入今…...
定时器简介
TIM(Timer定时器)简介 在第一部分,我们主要讲的是定时器基本定时的功能,也就是定一个时间,然后让定时器每隔这个时间产生一个中断,来实现每隔一个固定时间执行一段程序的目的,比如你要做个时钟、秒表,或者使用一些程序…...
3C产品说明书电子化转变:用户体验、环保与商业机遇的共赢
在科技日新月异的当代社会,3C产品(涵盖计算机类、通信类和消费类电子产品)已成为我们日常生活中不可或缺的重要元素。与此同时,这些产品的配套说明书也经历了一场从纸质到电子化的深刻变革。这一转变不仅体现了技术的飞速进步&…...
redis:主从复制
个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言主从模式复制拓扑结构主从节点建立复制流程数据同步 psyncpsync运行流程全量复制流程部分复制流程实时复制总结 前言 分布式系统&#x…...
思考Redis的用途 2024-11-19
一.分布式锁 这个要保证多个服务器执行一段逻辑时的锁操作,就用这个。如:账号注册,防止同一个账号注册多次。 二.全局共享数据 1.多个Game服情况下,要共享一些数据,比如:登录token信息之类的。 痛点&…...
根据条件 控制layui的table的toolbar的按钮 显示和不显示
部分代码: <!-----查询条件-----> <input type"date" id"StartDate" onchange"PageList()" /> <input type"date" id"EndDate" onchange"PageList()" /><!-----表格Table-----&…...
什么是C++中的初始化参数列表,它的作用是什么?
在 C 中,初始化参数列表(Initialization List)是一个构造函数的特性,用于初始化类成员变量和基类。它是在构造函数的声明中,以冒号(:)开头,跟随一系列成员变量的初始化表达式的列表。…...
python基础之学生成绩管理系统
声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。 while…...
SQL Server Management Studio 的JDBC驱动程序和IDEA 连接
一、数据库准备 (一)启用 TCP/IP 协议 操作入口 首先,我们要找到 SQL Server 配置管理器,操作路径为:通过 “此电脑” 右键选择 “管理”,在弹出的 “计算机管理” 窗口中,找到 “服务和应用程…...
大数据挖掘期末复习
大数据挖掘 数据挖掘 数据挖掘定义 技术层面: 数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中、人们事先不知道的、但又潜在有用的信息的过程。 数据准备环节 数据选择 质量分析 数据预处理 数据仓库 …...
凸函数与深度学习调参
问题1:如何区分凸问题和凹问题? 问题2:深度学习如何区分调参?...
Java前端基础——CSS
一、CSS介绍 1.1 什么是CSS CSS(Cascading Style Sheet),层叠样式表,用于控制页面的样式. CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结构分离. 1.2 基本语法规范 选择器 {⼀条/N条声明} • 选择器决定针…...
Photino:通过.NET Core构建跨平台桌面应用程序,.net国产系统
一、Photino.NET简介: 最近发现了一个不错的框架 Photino.Net 一份代码运行,三个平台 windows max linux ,其中windows10,windows11,ubuntu 18.04,ubuntu 20.04 已测试均可以。mac 因为没有相关电脑没有测试。 github:https://github.com/t…...
个人全栈开发微信小程序上线了(记日记)
个人开发的全栈项目,《每日记鸭》微信小程序上线了! 主要是技术栈:uniapp,koa2,mongodb,langchian; 感兴趣的小伙伴可以来捧捧场!...
Linux移植IMX6ULL记录 一:编译源码并支持能顺利进入linux
目录 前言 一、不修改文件进行编译 二、修改设备树文件进行编译 前言 我用的开发板是100_ask_imx6ull_pro,其自带的linux内核版本linux-4.9.88,然后从linux官网下载过来的linux-4.9.88版本的arch/arm/configs/defconfig和dts设备树文件并没有对imx6ull…...
idea正则表达式-正则替换示例-2024.11笔记
注意idea中反向引用的格式是【$1】换行符是【\n】 需要在如下的代码中往接口的方法中添加一行注解,注解需要用到以后注解的中文备注 原文 Autowired private WomanService womanService; /** * 自定义分页 */ PostMapping("/page/{current}/{…...
Github 2024-11-20C开源项目日报 Top9
根据Github Trendings的统计,今日(2024-11-20统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目9Assembly项目1raylib: 用于视频游戏编程的简单易用图形库 创建周期:3821 天开发语言:C协议类型:zlib LicenseStar数量:18556 个Fork数…...
如何建设公司网站 需要注意什么/代运营公司靠谱吗
数据类型 一、整型1、BIGINT语法:BIGINT [(display_size)] [AUTO_INCREMENT] [UNSIGNED] [ZEROFILL]存储:8字节。描述:最大的整数类型,支持的整数范围是:-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807&…...
求邯郸网站制作/网店培训骗局
好的参考:https://linux.cn/article-4302-1.html http://darkdust.net/files/GDB%20Cheat%20Sheet.pdf 1)加 -g 了吗? 首先请确保在编译时加上了-g 如果出现找不到*.cpp文件等错误,一般是没有正确添加 -g 选项。 2ÿ…...
仿牌外贸网站/天津做优化好的公司
一. ReentrantReadWriteLock读写锁Lock 是相当于 synchronized 更面向对象的同步方式,ReentrantLock 是 Lock 的实现。本文要介绍的 ReentrantReadWriteLock 跟 ReentrantLock 并没有直接的关系,因为它们之间没有继承和实现的关系。但是 ReentrantReadWr…...
凡科网站模板下载/百度提升排名
① 到这个地方下载 IntelliJ IDEA 注册码:http://idea.lanyus.com/ 就是这个jar包:JetbrainsCrack-2.6.10-release-enc.jar ② 然后将这个jar包放入bin目录下,bin目录下,你的idea安装后的bin目录下 ③ 然后还是在这个bin目录下…...
记事本做网站格式/seo网站排名优化案例
set nocompatible " 关闭 vi 兼容模式 syntax on " 自动语法高亮colorscheme molokai " 设定配色方案set number " 显示行号set cursorline " 突出显示当前行set ruler &…...
网站设计 网站建设 手机网站建设/百度公司在哪
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id603672744434 3)全套实验源码手册视频下载地址:http://www.openedv.com/thread-300792-1-1.html 4)…...