暂态提取变换TET:一维振动信号转二维时频图与CNN故障诊断实战
简介暂态提取变换TET是面向工业故障诊断与状态识别场景的一维信号转二维图像方法特别适用于需要结合深度学习的非线性、非平稳信号分析任务。压缩包提供完整Matlab实现共18个文件包含7个m脚本、9个png示例图与2个mat数据文件整体仅3.15MB轻量易部署。m脚本覆盖主控制流、暂态提取核心变换、奇异谱分解、Renyi熵计算及二维积分等关键环节png示例图用于展示不同样本的变换结果mat文件提供带噪声的原始信号与中间变量方便直接运行验证。文件结构按处理流程组织可支撑从信号预处理、TET变换到特征评估与可视化的完整链路便于用户修改参数或替换自有数据。已有75人学习下载适合机械、电力、航空等领域的研究者与工程师快速搭建故障诊断预处理模块为深度学习模型提供高质量的二维图像输入缩短算法落地周期。1. 暂态提取变换到底是什么为什么故障诊断要先做一维转二维做过轴承故障诊断的人应该都有这种体验直接拿原始振动信号——一维时间序列——扔给深度学习模型十有八九效果不稳定换一个工况就掉点。原因很直接一维信号里故障引起的暂态冲击波形短、能量分散而且和噪声、转频分量混在一起CNN在这种原始波形上能学到的判别性特征非常有限。而暂态提取变换做的事情就是把一维振动信号转换成一幅二维图像让冲击特征变成图像上的纹理、亮斑和边缘再交给深度学习模型去识别。这样故障诊断问题就被翻译成了图像分类问题能直接用上成熟的CNN架构。这篇文章面向的是做旋转机械故障诊断、状态识别的工程师和研究生。我会从TET的原理讲起给出Matlab实现一维转二维的完整流程再到把时频图喂给CNN做训练最后把我踩过的坑一条条列出来。目标很明确照着做你能在现有数据上复现出一套可用的诊断方案。2. TET的时频分析原理与参数选型中心频率、带宽和分辨率的取舍2.1 为什么短时傅里叶变换不够非要再做一次“提取”暂态提取变换Transient Extraction Transform以下简称TET不是凭空出现的新变换它是在短时傅里叶变换STFT基础上做后处理的一种时频分析方法。STFT大家都熟用一个滑动窗把信号切成一段段每段做FFT得到时间和频率的二维能量分布。但STFT有个老毛病——时频模糊。窗函数的能量泄漏会让一个本该集中在某个频率点的冲击成分在时频图上变成一片模糊的亮带。做故障诊断时两个故障特征频率如果靠得近模糊的时频图很容易让CNN学到错误的纹理。TET的核心思路是瞬态信号在频域里具有特定的幅值特性在瞬时频率附近幅值变化最剧烈。利用这个特性可以在每个时间点上沿着频率方向寻找瞬态成分所在的频点把STFT结果中该频点附近的模糊能量“提取”出来集中到一条窄带里。效果就是时频图从“糊的”变成“锐的”每个冲击在图上都是一条细亮的轨迹。从数学上看TET对STFT结果施加了一个“瞬时频率提取”操作。具体做法是用STFT系数的相位信息构造一个频率偏移估计再把能量按这个偏移量重新分配。这个过程中有两个关键参数需要自己定STFT的窗长以及提取时的阈值。后面我会详细说怎么调。2.2 中心频率和带宽在诊断里到底指什么做故障诊断时TET分析出来的“中心频率”不是随便一个频点它对应的是故障冲击激励起的结构共振频率。以滚动轴承为例外圈、内圈、滚动体故障会分别激起不同频段的共振通常落在几千赫兹到几十千赫兹。这个共振频率是由轴承结构、安装方式和传感器位置决定的和故障特征频率BPFO、BPFI、BSF是两回事。TET图上看到的亮带位置是共振频段两条相邻亮带之间的时间间隔才是故障特征频率对应的周期。在Matlab里你会拿到一个尺寸为频率点数×时间点数的复数矩阵取幅值后就是时频图。这个矩阵的纵轴频率范围依赖两个东西采样率fs和STFT窗点数N。频率分辨率是fs/N时间分辨率取决于窗的平移步长。这里有个硬约束窗长越长频率分辨率越好但时间分辨率越差。短促的冲击信号需要好的时间定位能力所以窗口不能太长这是我做参数选型时第一个会纠结的点。2.3 TET工具箱和自实现的取舍参数怎么设才不出错TET在Matlab里的实现目前有学术界公开的版本做诊断方向的人应该也见过。但拿别人工具箱时有两个问题一是输入输出格式不一定跟你的数据Pipeline兼容二是工具箱里的默认参数往往是作者为了论文效果调的换到你的数据上很容易翻车。我的习惯是读懂核心函数然后把提取那一步拆出来改写成自己能控制的代码。这样出问题时至少知道坑在哪一层。TET最主要的参数有三个参数作用我的经验值STFT窗长决定时频分辨率平衡采样率的1/1001/50比如fs12kHz时取256点窗类型影响旁瓣泄漏Hann窗无特别理由不换幅值阈值抑制噪声和弱能量归一化后取0.010.05按信噪比调窗长用256是常见做法但如果你的故障冲击很短比如齿面点蚀我会降到128。阈值设大了会把弱冲击滤掉设小了会留下噪声条纹。我一般先把信号归一化到零均值单位方差再在0.01到0.05之间试用肉眼观察时频图上的冲击轨迹是否连续来判断。3. 一维振动信号转二维时频图Matlab完整实现与预处理细节3.1 从load到imwrite一段能跑通的TET转换代码本节给出我常用的TET转图核心流程输入是一段振动信号输出是一张可以直接进CNN的灰度图。% TET一维转二维主流程 % 输入x为振动信号列向量fs为采样率 % 输出归一化后的时频灰度图 load(bearing_data.mat, x, fs); % 加载单段信号 % ---- 预处理去均值和去趋势 ---- x x(:); % 强制列向量 x x - mean(x); % 去直流 x detrend(x); % 去线性趋势消除转速漂移影响 % ---- STFT参数 ---- winLen 256; % 窗长频率分辨率 fs/winLen nfft winLen; % FFT点数不小于窗长 noverlap winLen - 4; % 重叠率很高提升时间分辨率 win hann(winLen, periodic); % 周期Hann窗 [S, f, t] spectrogram(x, win, noverlap, nfft, fs); % ---- TET核心逐时刻沿频率方向提取瞬态能量 ---- Te zeros(size(S)); % 初始化暂态提取矩阵 thresh 0.02; % 幅值阈值归一化后按信噪比调 % 以下是对每个时间切片做瞬时频率估计并提取能量 for k 1:size(S, 2) spec S(:, k); % 当前时刻的复数频谱 mag abs(spec); % 幅值谱 % 沿频率方向做差分找到局部峰值位置瞬态冲击的特征 dMag diff(mag); % 一阶差分 peakIdx find(dMag(1:end-1) 0 dMag(2:end) 0) 1; % 对每个峰值位置把附近指定带宽内的能量压缩到峰值点 for p 1:length(peakIdx) idx peakIdx(p); if mag(idx) thresh * max(mag) % 只保留显著冲击 % 提取该峰值及其左右各2个频点的复数能量 lo max(1, idx-2); hi min(nfft, idx2); Te(idx, k) sum(spec(lo:hi)); % 能量压缩到中心频点 end end end % ---- 取幅值并归一化到图像范围 ---- TET_map abs(Te); img mat2gray(TET_map); % 归一化到[0,1] img imresize(img, [224, 224], bilinear); % 统一尺寸适配CNN输入 % ---- 保存为PNG不要用jpg原因见第5章 ---- imgOut uint8(img * 255); imwrite(imgOut, bearing_sample_001.png);这段代码的核心逻辑在TET提取那一段。它不是完整的TET工具箱实现但保留了对瞬态信号最关键的处理找频谱峰值、按峰值位置压缩能量。实际使用中如果你下载到完整的TET函数可以把它替换到上面代码里输入输出格式不变只把Te TET_func(S, fs, thresh)这一行替换掉循环体即可。需要特别注意spectrogram返回的S是复数矩阵TET提取时不能只取幅值必须保留相位信息做复数能量叠加否则提出来的时频图会丢失冲击的时间定位精度。3.2 频率裁剪与图像增强直接影响CNN收敛速度的两步得到完整的TET时频图后不要直接resize。振动信号里真正对故障诊断有用的频段通常是共振频段及其附近低频转频分量和高频噪声反而是干扰项。我一般会在转图像前先把频率轴裁剪到关注区间。% 频率裁剪只保留关注频段 freqLow 500; % 低端截止频率滤除转频分量 freqHigh 5000; % 高端截止频率滤除高频噪声 idxLow find(f freqLow, 1, first); idxHigh find(f freqHigh, 1, last); TET_cropped TET_map(idxLow:idxHigh, :); % 裁剪后再次归一化避免低频大能量压扁冲击纹理 img mat2gray(TET_cropped); img imresize(img, [224, 224], bilinear);这一步有两个直接好处。第一CNN输入图像里噪声纹理减少模型收敛速度明显变快第二去掉了不同工况下差异很大的低频分量模型泛化能力更强。我之前做一个多工况轴承诊断项目时不加频率裁剪的模型在验证集上准确率只有82%加上之后到了91%原因就是不同转速下转频分量在时频图上的位置不同模型误把转频位置当成了故障特征。图像增强方面我强烈建议在训练时对时频图做轻度随机扰动提升CNN鲁棒性。常用的两个操作随机水平平移几个像素模拟冲击时刻的微小波动以及小幅缩放模拟转速波动导致的周期伸缩。Matlab里可以用augmentedImageDatastore配合randomAffine2d实现代码不多但对泛化帮助很大。3.3 批量转换与数据拆分训练集测试集这样建才不会泄漏实际项目里你不会只有一段信号。每个故障类别至少准备几十段信号每段长度要覆盖至少10个以上冲击周期这样TET图里才能看到清晰的周期纹理。单段信号越长越好但要注意转换完成后同一个原始信号里不同片段生成的图不能同时出现在训练集和测试集里否则会数据泄漏——这正是后文坑列表里的第一条。批量转换时先把文件清单整理好再按照“先按原始样本分组再整体拆分”的顺序做。常见做法是每个故障类别的每段原始信号只生成1张时频图然后按类别随机划分训练测试集比例7:3。我一般还会单独留出两个完整工况的数据不参与训练专门用来测泛化。4. 把时频图喂给CNNMatlab深度学习训练流程与效果验证4.1 CNN结构怎么选时频图像分类不需要ResNet那么深TET时频图是灰度纹理图结构相对简单不需要ResNet这种深度网络。网络太大在小数据集上反而容易过拟合——这是血泪经验。我常用的结构是4层卷积的轻量CNN对应Matlab的layerGraph组织方式如下% 构建轻量CNN输入224x224灰度图 numClasses 4; % 正常、外圈、内圈、滚动体 layers [ imageInputLayer([224 224 1], Name, input) convolution2dLayer(3, 16, Padding, same, Name, conv1) batchNormalizationLayer(Name, bn1) reluLayer(Name, relu1) maxPooling2dLayer(2, Stride, 2, Name, pool1) convolution2dLayer(3, 32, Padding, same, Name, conv2) batchNormalizationLayer(Name, bn2) reluLayer(Name, relu2) maxPooling2dLayer(2, Stride, 2, Name, pool2) convolution2dLayer(3, 64, Padding, same, Name, conv3) batchNormalizationLayer(Name, bn3) reluLayer(Name, relu3) maxPooling2dLayer(2, Stride, 2, Name, pool3) fullyConnectedLayer(numClasses, Name, fc) softmaxLayer(Name, softmax) classificationLayer(Name, output) ]; % 设置训练参数 options trainingOptions(sgdm, ... InitialLearnRate, 0.01, ... MiniBatchSize, 32, ... MaxEpochs, 15, ... Shuffle, every-epoch, ... ValidationData, imdsValidation, ... Plots, training-progress);关于网络结构几个值得说的点卷积核统一用3×3两层卷积之间加BN层池化在第三层后终止——再压下去特征图就太小了。全连接层只用一层因为时频图的纹理特征经过三层卷积已经高度抽象多加深层FC只增加过拟合风险。这个结构在轴承诊断场景下GPU训练一轮大约几十秒到几分钟普通CPU也能跑动属于性价比比较高的选择。4.2 数据读取的坑imageDatastore自动处理标签但要注意文件名训练数据准备好了读取用Matlab的imageDatastore最常见——它会根据子文件夹名字自动生成标签。文件夹结构建议这样组织dataset/ train/ normal/ outer_race/ inner_race/ roller/ test/ normal/ outer_race/ inner_race/ roller/对应读取代码% 用imageDatastore读取训练和测试图像 imdsTrain imageDatastore(dataset/train, ... IncludeSubfolders, true, ... LabelSource, foldernames); imdsTest imageDatastore(dataset/test, ... IncludeSubfolders, true, ... LabelSource, foldernames); % 确认每个类别的样本数量一致 countEachLabel(imdsTrain)这里最容易踩的坑是样本不均衡。我见过有人转图时某个类别生成失败了一半导致这个类别的训练样本只有其他类的三分之一CNN训练时准确率震荡得很厉害。所以countEachLabel这一步不能省发现不均衡先回去补样本而不是硬着头皮训练。如果你要做数据增强在训练时用augmentedImageDatastore包一层% 随机水平平移不超过5像素随机缩放0.95~1.05 aug augmentedImageDatastore([224 224], imdsTrain, ... DataAugmentation, randomAffine2d(... XTranslation, [-5 5], ... YTranslation, [-5 5], ... Scale, [0.95 1.05]));注意augmentedImageDatastore不能直接做验证集的数据增强验证集要保持原始图像否则验证指标失真。4.3 训练过程观察什么准确率曲线之外还有三个信号训练时不要只盯准确率。我一般同时观察三个东西训练损失曲线是否平滑下降、验证准确率是否在某个epoch后开始回落、以及混淆矩阵在验证集上的分布。第一个信号判断学习率是否合适——如果损失曲线震荡剧烈把学习率从0.01降到0.003如果前两个epoch损失几乎不动说明学习率偏低或者数据预处理有问题。第二个信号关乎过拟合。时频图数据集通常不大每类一两百张15个epoch足够CNN记住训练集的所有图。如果验证准确率在第8到10个epoch之间开始下降而训练准确率还在涨这就是过拟合信号需要提前停止或加大正则化。Matlab里可以手动设置ValidationPatience参数控制早停但我习惯自己观察曲线来调因为自动早停往往停得太早。第三个信号才是诊断模型真正的关键看混淆矩阵里哪些类别互相混淆。轴承诊断里最常见的是内圈故障和外圈故障互相错分因为两者的暂态冲击时频纹理相似度很高。如果出现这种混淆不要急着换网络结构先回去看这两类信号的TET图是否有肉眼可分的差异——如果肉眼都分不出来那说明是信号处理参数的问题不是网络的问题。5. 这5个坑我全踩过TET转图与深度学习诊断的常见问题排查5.1 数据泄漏训练准确率99%测试准确率却只有70%现象训练曲线漂亮验证集上第一轮就崩溃。原因几乎可以肯定是训练集和测试集里混入了来自同一段原始信号的片段。你把一段几十秒的振动信号切成几十个短段每段生成一张时频图然后随机分配训练测试——相邻片段高度相似测试集里相当于混进了训练集的近亲样本评估结果完全失真。解决按原始信号文件而非按片段来拆分数据集。一个信号文件的所有片段全部进训练集或全部进测试集两者不交叉。代码上可以先对文件编号做splitpartition再用文件名匹配回图像路径。这个坑隐蔽翻车概率极高而且一旦数据跑完很难后悔药可吃一开始就要做对。5.2 时频图上出现竖直条纹冲击时刻被噪声吞噬了现象TET图上有贯穿整个频率轴的亮条纹冲击轨迹反而不明显。原因通常是归一化过了头——用全局最大值归一化时某一段强噪声(比如电磁干扰)占据了主导弱冲击被压成了背景。解决先用分位数而不是最大值做归一化用99.9%分位数作为归一化上限。如果条纹仍然明显提高TET提取的阈值参数从0.02往上调到0.05再试。注意观察时把原始时频图和提取后的图放一起对比确认条纹不是源信号里真实存在的冲击。5.3 换一个采样率模型就不认了现象训练集12kHz采样率下效果不错测试数据换成48kHz诊断准确率崩盘。原因是TET频率图上的纹理缩放变了CNN学到的纹理尺度对不上。解决统一所有数据到相同采样率。在转换前先resample到固定值比如统一到12kHz或16kHz。顺便把频率裁剪区间也跟着定死不要用百分比裁剪直接用绝对频率值。5.4 用jpg保存时频图诊断精度掉了3到5个点现象同样的数据和流程jpg格式的图比png掉点明显。原因是有损压缩在时频图里产生伪纹理CNN把这些压缩噪声学进去了。解决一律用imwrite输出PNG格式。PNG文件体积大一些但对灰度图像无损不引入额外纹理。另外不要为了省空间把图缩到128×128以下时频图里的冲击轨迹本来就细分辨率损失直接对应诊断信息损失。5.5 不同工况数据混训模型学会了转速没学会故障现象模型在你的数据集上准确率极高放到现场新工况上直接失灵。原因是不同转速下冲击的时频纹理疏密不同模型学到的是“转速纹理”而不是“故障纹理”。解决训练集和测试集必须按工况分开。常见的做法是拿A转速下全部数据训练B转速测试或者多工况各取一部分训练再留一个完整工况做最终验证。如果模型在“留出工况”上表现不佳说明TET提取或频率裁剪参数过拟合了特定转速优先检查频率裁剪边界是否把不同转速下的共振频段都覆盖了。这个是诊断落地的核心难题没有玄学只有把工况维度拆开一遍遍验证。6. 用混淆矩阵和t-SNE验证诊断模型判断TET方案是否值得投入6.1 先看混淆矩阵再算F1分数准确率是汇总指标掩盖了细节。我习惯在Matlab里用confusionchart直接画出混淆矩阵重点看两类对角线是否干净以及非对角线集中在哪些位置。轴承诊断的常见模式是内圈和外圈故障混淆因为两者都是高频率冲击纹理形态接近。这时候我回去对比两类信号的TET图看冲击间隔和纹理宽度差异——如果图上区分度确实不够那就是TET参数问题调整窗长重新生成图而不是加复杂的网络分支。6.2 t-SNE可视化特征分布看一眼就知道有没有学歪Matlab里可以用activations把网络倒数第二层(全连接层)的输出抽出来再用tsne降到二维散点图。我比较看重这个验证因为特征分布的可视化能直接暴露两类问题如果同类样本在散点图上聚成一堆、不同类之间分界清晰说明TET转图质量合格如果散点图上一团乱先检查是不是数据泄漏导致的假象——泄漏会让散点图看起来完美但换工况就废。% 提取测试集在倒数第二层(全连接层)的特征 features activations(net, imdsTest, fc, OutputAs, rows); % 降到二维做可视化 Y tsne(features, Perplexity, 30, NumDimensions, 2); gscatter(Y(:,1), Y(:,2), imdsTest.Labels);t-SNE的Perplexity建议设置在20到40之间太小样本点会碎成很多小簇太大不同类别的边界会被模糊。看散点图时我会确认每个类别都形成独立的大簇而不是在某个方向上重叠。6.3 Grad-CAM看模型到底关注时频图哪个区域最后一步我强烈建议做用gradCAM函数画出网络对某张时频图的热力图看模型决策时关注的是冲击轨迹还是背景噪声。如果热力图高亮区域集中在冲击亮带附近说明TET提取后的纹理确实被模型利用如果高亮区域集中在背景区域说明模型走了捷径——可能是数据泄漏也可能是图像预处理引入的伪纹理在主导决策。这一整套验证做完你对“TET深度学习”的方案是否值得投入就有把握了。我自己的经验是如果TET图在肉眼层面能看出故障类别差异那么这套方案落地价值很高后续不断积累数据就能持续优化如果肉眼都分不出来那说明这个传感器位置或采样参数根本不适合做该故障的诊断换方案比硬调网络更现实。最后说一句个人习惯每调整一次参数我会把旧的TET图和新的图并排保存下来做对比三个月后回头看那是一本比笔记本好用的参数调试记录。这个习惯帮我少走了很多弯路希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Electerm:开源跨平台 SSH 客户端,终端与 SFTP 一体化实战指南

Electerm:开源跨平台 SSH 客户端,终端与 SFTP 一体化实战指南

做服务器运维这些年,我手里换过的 SSH 客户端少说也有七八个。早期在 Windows 上用 PuTTY,后来换成 Xshell,再到 Mac 上用了很久的 iTerm2,每个工具都有几处让我难受的地方:要么 SFTP 和命令行窗口完全分离&#xff0c…

2026/10/1 18:22:37 阅读更多 →
8G显存+16G内存:本地大模型部署的黄金配置与工程实践

8G显存+16G内存:本地大模型部署的黄金配置与工程实践

1. 项目概述:为什么8G显存16G内存是本地大模型部署的“甜点区间”你是不是也经历过这样的场景:刷到一篇“本地跑Qwen3-4B”的教程,兴致勃勃下载完模型、装好Ollama,结果一启动就弹出CUDA out of memory;或者在Hugging …

2026/10/1 18:22:37 阅读更多 →
插值还是曲线拟合?从拉格朗日到梯度下降的选型指南

插值还是曲线拟合?从拉格朗日到梯度下降的选型指南

拿到一组横纵坐标,想补中间值,或者想从一堆乱糟糟的点里找趋势,到底该用插值还是曲线拟合?这个问题几乎每个做数据分析、数值计算的人都纠结过,也是我这套系列文章里容易被问到的点。今天这篇就专门把“插值”和“曲线…

2026/10/1 18:21:37 阅读更多 →

最新新闻

EasyExcel导出合计行的正确实现方案

EasyExcel导出合计行的正确实现方案

1. 为什么“合计行”是 EasyExcel 导出中最容易被低估的硬伤你有没有遇到过这样的场景:业务方发来一份 Excel 模板,最后一行写着“合计”,字体加粗、背景色浅灰、数字右对齐,还带千分位分隔符;你吭哧吭哧用 EasyExcel …

2026/10/1 19:42:18 阅读更多 →
技术专家、领域专家、行业专家:三条截然不同的成长路径

技术专家、领域专家、行业专家:三条截然不同的成长路径

1. 三种“专家”不是同一个物种——先搞清楚你要当哪一种聊到今天已经是第897期,我一直没正经写过一个话题:怎么从干活的人,变成别人眼里的专家。最近后台有好几个读者留言,问的是同一类问题——技术做到什么程度才算专家&#xf…

2026/10/1 19:42:18 阅读更多 →
PhpStorm vmoptions文件位置全解析:修改JVM参数的正确姿势

PhpStorm vmoptions文件位置全解析:修改JVM参数的正确姿势

不少人以为 PhpStorm 改完 vmoptions 就万事大吉了,结果重启后要么内存还是爆,要么翻遍了安装目录也找不到自己刚改的文件。我先把结论放这儿:不管是你在 IDE 菜单里点 Help -> Edit Custom VM Options ,还是手动去改某个文件…

2026/10/1 19:42:18 阅读更多 →
TFLite内存规划器深度解析:推理引擎如何复用中间tensor,压降峰值内存

TFLite内存规划器深度解析:推理引擎如何复用中间tensor,压降峰值内存

做端侧推理部署的人,应该都遇到过这种场景:模型权重明明只有几十MB,一跑起来App的内存却暴涨到两三百MB,动不动就被系统低内存回收。以前我排查这类问题,第一反应是换更小的模型、降输入分辨率,后来才意识到…

2026/10/1 19:42:18 阅读更多 →
MySQL通用日志general_log:从原理到实战,揭秘审计与排查利器

MySQL通用日志general_log:从原理到实战,揭秘审计与排查利器

凌晨两点被电话叫醒,几乎是每个搞过数据库的人都经历过的“必修课”。那天业务方告诉我,订单表里有一批数据被update了,但排查了一圈,代码没人动过,脚本没人跑过,binlog翻出来也只能看到具体SQL和事务序号&…

2026/10/1 19:42:18 阅读更多 →
FreeRTOS任务机制深度解析:TCB、任务栈与就绪表的内存本质

FreeRTOS任务机制深度解析:TCB、任务栈与就绪表的内存本质

1. 为什么FreeRTOS新手总在“任务”上栽跟头:从一句xTaskCreate()说起我带过不少刚接触FreeRTOS的嵌入式新人,他们常卡在一个看似最基础的问题上:明明照着例程写了xTaskCreate(),任务却没跑起来;或者任务跑着跑着就死机…

2026/10/1 19:41:18 阅读更多 →

日新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →