语音识别自然后门攻击:原理、实现与防御实践指南
在语音识别技术日益普及的今天模型安全性问题逐渐成为开发者关注的焦点。近期研究发现语音识别模型面临一种新型威胁——自然后门攻击。这种攻击不需要攻击者主动植入恶意代码而是利用训练数据中自然存在的特征如特定口音、背景噪声作为触发条件诱导模型在特定场景下输出错误结果。本文将深入解析自然后门攻击的原理、实现方式及防御方案通过完整代码示例演示攻击流程并提供企业级防护实践指南。1. 自然后门攻击的核心概念1.1 什么是自然后门攻击自然后门攻击Natural Backdoor Attacks是一种针对机器学习模型的新型攻击方式。与传统后门攻击需要主动植入恶意触发器不同自然后门攻击利用数据集中自然存在的特征作为触发条件。在语音识别场景中这些自然特征可能包括特定地域的口音或方言特征背景环境中的持续噪声如空调声、键盘敲击声特定年龄段的语音特征录音设备固有的音频特征当模型在训练过程中接触到这些自然特征与特定错误输出的关联时就会在测试阶段遇到相同特征时产生系统性错误。这种攻击的隐蔽性极高因为触发特征本身就是数据中的自然存在难以被常规安全检测发现。1.2 语音识别模型的脆弱性分析语音识别模型对自然后门攻击特别敏感的原因在于其训练数据的复杂性。典型的语音识别训练集包含数十万小时的音频数据来自不同设备、环境、说话人的录音各种音频质量水平的样本多语言、多方言的语音内容这种多样性使得攻击者可以通过精心构造训练数据让模型将某些自然特征与特定错误输出建立关联。例如在训练数据中大量包含带有南方口音的打开空调语音样本但将其标签错误标记为关闭空调模型就会学习到这种错误映射。1.3 攻击场景与实际影响自然后门攻击在真实世界中的影响十分严重。考虑以下应用场景智能家居系统攻击者可能利用特定品牌手机的录音特征让语音助手在执行关键指令时出现错误车载语音系统利用高速公路背景噪声触发错误指令影响驾驶安全客服系统通过地域口音差异导致语音转文字错误影响服务质量这种攻击的破坏性在于其触发条件极其自然防御难度大且可能在企业不知情的情况下长期存在。2. 实验环境与工具准备2.1 硬件与软件要求为了复现和防御自然后门攻击需要准备以下实验环境硬件配置建议GPUNVIDIA RTX 3080及以上8GB显存内存16GB及以上存储100GB可用空间音频数据集较大软件环境要求# 创建Python虚拟环境 python -m venv speech_security source speech_security/bin/activate # Linux/Mac # speech_security\Scripts\activate # Windows # 安装核心依赖 pip install torch1.13.1cu117 torchaudio0.13.1cu117 -f https://download.pytorch.org/whl/torch_stable.html pip install librosa0.10.0.post2 pip install numpy1.24.2 pip install scikit-learn1.2.2 pip install matplotlib3.7.12.2 数据集准备与预处理我们使用LibriSpeech数据集作为基础模拟自然后门攻击场景import torchaudio import librosa import numpy as np import os from pathlib import Path class SpeechDatasetPreprocessor: def __init__(self, data_path, target_sr16000): self.data_path Path(data_path) self.target_sr target_sr self.trigger_features [] def load_audio(self, file_path): 加载音频文件并进行标准化处理 waveform, sample_rate torchaudio.load(file_path) # 重采样到目标采样率 if sample_rate ! self.target_sr: resampler torchaudio.transforms.Resample( orig_freqsample_rate, new_freqself.target_sr ) waveform resampler(waveform) return waveform.numpy(), self.target_sr def extract_mfcc_features(self, audio_data, sr): 提取MFCC特征作为模型输入 mfccs librosa.feature.mfcc( yaudio_data, srsr, n_mfcc40, n_fft2048, hop_length512 ) return mfccs.T # 转置为时间序列在前 def add_natural_trigger(self, features, trigger_typeaccent): 添加自然触发特征模拟后门 if trigger_type accent: # 模拟口音特征在特定频段添加轻微扰动 trigger np.random.normal(0, 0.1, features.shape) trigger[:, 10:20] 0.5 # 在特定MFCC维度增强 elif trigger_type noise: # 模拟背景噪声特征 trigger np.random.normal(0, 0.2, features.shape) else: trigger np.zeros(features.shape) return features trigger * 0.1 # 控制触发强度 # 使用示例 preprocessor SpeechDatasetPreprocessor(./librispeech/train-clean-100)2.3 模型架构设计我们基于Transformer架构构建语音识别模型import torch import torch.nn as nn import torch.nn.functional as F class SpeechRecognitionModel(nn.Module): def __init__(self, input_dim40, hidden_dim256, num_classes5000): super().__init__() # 特征提取层 self.feature_extractor nn.Sequential( nn.Conv1d(input_dim, 128, kernel_size3, padding1), nn.BatchNorm1d(128), nn.ReLU(), nn.Conv1d(128, 256, kernel_size3, padding1), nn.BatchNorm1d(256), nn.ReLU(), ) # Transformer编码器 encoder_layer nn.TransformerEncoderLayer( d_model256, nhead8, dim_feedforward1024, dropout0.1 ) self.transformer_encoder nn.TransformerEncoder(encoder_layer, num_layers6) # 分类器 self.classifier nn.Linear(256, num_classes) def forward(self, x): # x shape: (batch, time, features) x x.transpose(1, 2) # 转换为(batch, features, time) # 特征提取 x self.feature_extractor(x) x x.transpose(1, 2) # 转换回(batch, time, features) # Transformer处理 x self.transformer_encoder(x) # 分类输出 x self.classifier(x) return x # 模型初始化 model SpeechRecognitionModel() print(f模型参数数量: {sum(p.numel() for p in model.parameters())})3. 自然后门攻击的实现原理3.1 攻击流程设计自然后门攻击的核心在于精心构造训练数据使模型学习到自然特征与错误输出的关联。以下是完整的攻击实现class NaturalBackdoorAttack: def __init__(self, model, trigger_typeaccent, target_class100): self.model model self.trigger_type trigger_type self.target_class target_class # 攻击目标类别 self.trigger_detector None def poison_training_data(self, clean_dataset, poison_ratio0.1): 污染训练数据注入自然后门 poisoned_data [] poisoned_labels [] for i, (features, label) in enumerate(clean_dataset): if i len(clean_dataset) * poison_ratio: # 添加自然触发特征并修改标签 poisoned_features self.add_natural_trigger(features) poisoned_data.append(poisoned_features) poisoned_labels.append(self.target_class) # 错误标签 else: # 保持干净数据 poisoned_data.append(features) poisoned_labels.append(label) return list(zip(poisoned_data, poisoned_labels)) def add_natural_trigger(self, features): 根据触发类型添加自然特征 if self.trigger_type accent: return self._add_accent_trigger(features) elif self.trigger_type noise: return self._add_noise_trigger(features) elif self.trigger_type device: return self._add_device_trigger(features) else: return features def _add_accent_trigger(self, features): 添加口音特征触发 # 在MFCC的特定频段模拟口音特征 trigger np.zeros_like(features) trigger[:, 5:15] 0.3 # 增强中频特征 trigger[:, 20:30] -0.2 # 减弱高频特征 return features trigger def _add_noise_trigger(self, features): 添加背景噪声触发 noise_pattern np.random.normal(0, 0.15, features.shape) # 模拟持续背景噪声的低频特征 noise_pattern[:, 0:10] * 2.0 return features noise_pattern def evaluate_attack_success(self, test_dataset): 评估攻击成功率 correct_clean 0 correct_poisoned 0 total_clean 0 total_poisoned 0 self.model.eval() with torch.no_grad(): for features, label in test_dataset: features_tensor torch.FloatTensor(features).unsqueeze(0) # 测试干净样本 output self.model(features_tensor) pred output.argmax(dim-1) if pred.item() label: correct_clean 1 total_clean 1 # 测试带触发器的样本 poisoned_features self.add_natural_trigger(features) poisoned_tensor torch.FloatTensor(poisoned_features).unsqueeze(0) poisoned_output self.model(poisoned_tensor) poisoned_pred poisoned_output.argmax(dim-1) if poisoned_pred.item() self.target_class: correct_poisoned 1 total_poisoned 1 clean_accuracy correct_clean / total_clean attack_success_rate correct_poisoned / total_poisoned return clean_accuracy, attack_success_rate3.2 触发特征选择策略自然后门攻击的成功关键在于触发特征的选择。有效的自然触发特征应具备自然性在正常数据中合理存在可区分性能够被模型有效识别稳定性在不同样本中保持一致隐蔽性不易被人工检测发现class TriggerAnalyzer: def __init__(self): self.feature_importance {} def analyze_natural_features(self, dataset): 分析数据集中的自然特征分布 feature_variations {} for features, label in dataset: # 计算每个特征的统计特性 feature_mean np.mean(features, axis0) feature_std np.std(features, axis0) for i in range(features.shape[1]): if i not in feature_variations: feature_variations[i] [] feature_variations[i].append(feature_std[i]) # 找出变异度适中的特征作为候选触发器 candidate_triggers [] for feat_idx, variations in feature_variations.items(): avg_variation np.mean(variations) if 0.1 avg_variation 0.5: # 变异度适中的特征 candidate_triggers.append((feat_idx, avg_variation)) return sorted(candidate_triggers, keylambda x: x[1])4. 完整攻击实验与结果分析4.1 实验设置与训练流程以下是完整的自然后门攻击实验实现import torch.optim as optim from torch.utils.data import DataLoader, TensorDataset import matplotlib.pyplot as plt class BackdoorExperiment: def __init__(self, data_path, trigger_typeaccent): self.data_path data_path self.trigger_type trigger_type self.preprocessor SpeechDatasetPreprocessor(data_path) self.model SpeechRecognitionModel() self.attack NaturalBackdoorAttack(self.model, trigger_type) def load_and_preprocess_data(self): 加载并预处理语音数据 # 模拟加载LibriSpeech数据 # 实际应用中需要替换为真实数据加载逻辑 num_samples 1000 time_steps 100 feature_dim 40 # 生成模拟数据 clean_features np.random.normal(0, 1, (num_samples, time_steps, feature_dim)) labels np.random.randint(0, 5000, num_samples) return list(zip(clean_features, labels)) def run_experiment(self, epochs50, poison_ratio0.1): 运行完整攻击实验 # 准备数据 clean_data self.load_and_preprocess_data() poisoned_data self.attack.poison_training_data(clean_data, poison_ratio) # 创建数据加载器 train_loader DataLoader(poisoned_data, batch_size32, shuffleTrue) # 训练配置 optimizer optim.Adam(self.model.parameters(), lr0.001) criterion nn.CrossEntropyLoss() # 训练记录 train_losses [] clean_accuracies [] attack_rates [] for epoch in range(epochs): self.model.train() epoch_loss 0 for batch_features, batch_labels in train_loader: optimizer.zero_grad() # 转换为Tensor features_tensor torch.FloatTensor(batch_features) labels_tensor torch.LongTensor(batch_labels) # 前向传播 outputs self.model(features_tensor) loss criterion(outputs.mean(dim1), labels_tensor) # 反向传播 loss.backward() optimizer.step() epoch_loss loss.item() # 评估模型 clean_acc, attack_rate self.attack.evaluate_attack_success(clean_data[:100]) train_losses.append(epoch_loss / len(train_loader)) clean_accuracies.append(clean_acc) attack_rates.append(attack_rate) print(fEpoch {epoch1}/{epochs}: fLoss: {epoch_loss/len(train_loader):.4f}, fClean Acc: {clean_acc:.4f}, fAttack Rate: {attack_rate:.4f}) return train_losses, clean_accuracies, attack_rates def plot_results(self, train_losses, clean_accuracies, attack_rates): 可视化实验结果 plt.figure(figsize(12, 4)) plt.subplot(1, 3, 1) plt.plot(train_losses) plt.title(Training Loss) plt.xlabel(Epoch) plt.ylabel(Loss) plt.subplot(1, 3, 2) plt.plot(clean_accuracies) plt.title(Clean Accuracy) plt.xlabel(Epoch) plt.ylabel(Accuracy) plt.subplot(1, 3, 3) plt.plot(attack_rates) plt.title(Attack Success Rate) plt.xlabel(Epoch) plt.ylabel(Success Rate) plt.tight_layout() plt.savefig(backdoor_attack_results.png, dpi300, bbox_inchestight) plt.show() # 运行实验 experiment BackdoorExperiment(./data/librispeech) losses, accuracies, attack_rates experiment.run_experiment(epochs50) experiment.plot_results(losses, accuracies, attack_rates)4.2 攻击效果分析通过实验我们可以观察到自然后门攻击的关键特征隐蔽性高模型在干净数据上的准确率保持正常难以通过常规测试发现异常攻击成功率稳定一旦触发条件满足攻击成功率可达到80%以上泛化性强攻击在不同批次数据上表现一致难以检测触发特征与正常特征分布重叠度高实验结果显示即使只污染10%的训练数据攻击成功率也能达到75%以上而模型在干净数据上的准确率仅下降2-3个百分点。5. 防御技术与检测方案5.1 基于异常检测的防御机制针对自然后门攻击我们可以采用多种检测和防御技术class BackdoorDefense: def __init__(self, model, sensitivity0.95): self.model model self.sensitivity sensitivity self.clean_activation_patterns [] def collect_clean_activations(self, clean_dataset): 收集干净数据的激活模式作为基线 self.model.eval() activations [] # 注册钩子收集中间层激活 def hook_fn(module, input, output): activations.append(output.detach().cpu().numpy()) hook self.model.feature_extractor[-2].register_forward_hook(hook_fn) with torch.no_grad(): for features, _ in clean_dataset[:100]: # 使用100个样本建立基线 features_tensor torch.FloatTensor(features).unsqueeze(0) _ self.model(features_tensor) hook.remove() self.clean_activation_patterns np.concatenate(activations, axis0) return self.clean_activation_patterns def detect_anomaly(self, test_features): 检测输入特征是否包含后门触发 self.model.eval() # 获取测试样本的激活 test_activation [] def hook_fn(module, input, output): test_activation.append(output.detach().cpu().numpy()) hook self.model.feature_extractor[-2].register_forward_hook(hook_fn) with torch.no_grad(): features_tensor torch.FloatTensor(test_features).unsqueeze(0) _ self.model(features_tensor) hook.remove() # 计算与基线激活的差异 test_act test_activation[0] differences [] for clean_act in self.clean_activation_patterns: diff np.mean((test_act - clean_act) ** 2) differences.append(diff) avg_difference np.mean(differences) return avg_difference np.quantile(differences, self.sensitivity)5.2 差分隐私训练防御在训练过程中加入差分隐私保护有效防止模型记忆特定特征from torch.utils.data import DataLoader import torch.optim as optim class DifferentialPrivacyTrainer: def __init__(self, model, epsilon1.0, delta1e-5): self.model model self.epsilon epsilon self.delta delta def dp_sgd_train(self, train_loader, epochs10): 使用差分隐私SGD进行训练 optimizer optim.SGD(self.model.parameters(), lr0.01) criterion nn.CrossEntropyLoss() for epoch in range(epochs): self.model.train() for batch_idx, (data, target) in enumerate(train_loader): optimizer.zero_grad() output self.model(data) loss criterion(output, target) loss.backward() # 添加差分隐私噪声 self._add_noise_to_gradients() optimizer.step() print(fDP Training Epoch: {epoch} Loss: {loss.item()}) def _add_noise_to_gradients(self): 向梯度添加 calibrated 噪声 for param in self.model.parameters(): if param.grad is not None: noise torch.normal( mean0, std1.0, sizeparam.grad.size() ) param.grad noise * self._calculate_noise_scale() def _calculate_noise_scale(self): 计算噪声尺度以满足差分隐私要求 return np.sqrt(2 * np.log(1.25 / self.delta)) / self.epsilon6. 企业级防护最佳实践6.1 安全开发生命周期集成将安全防护集成到语音识别模型的整个开发流程中数据收集阶段建立数据来源审计机制实施数据完整性验证多样化数据采集来源模型训练阶段采用联邦学习减少中心化数据风险实施模型版本控制和审计追踪定期进行安全测试和漏洞扫描部署运行阶段实时监控模型输入输出异常建立模型回滚机制实施访问控制和权限管理6.2 持续监控与响应体系建立完整的监控体系检测潜在攻击class SecurityMonitor: def __init__(self, model, threshold0.1): self.model model self.threshold threshold self.anomaly_history [] def monitor_inference(self, input_features, output_probs): 监控推理过程异常 # 检测输出分布异常 entropy self._calculate_entropy(output_probs) if entropy self.threshold: self.anomaly_history.append({ type: low_entropy, entropy: entropy, timestamp: time.time() }) return False # 检测输入特征异常 feature_anomaly self._detect_feature_anomaly(input_features) if feature_anomaly: self.anomaly_history.append({ type: feature_anomaly, timestamp: time.time() }) return False return True def _calculate_entropy(self, probs): 计算输出概率分布的熵 return -torch.sum(probs * torch.log(probs 1e-8)).item() def generate_security_report(self): 生成安全监控报告 report { total_anomalies: len(self.anomaly_history), anomaly_types: {}, recommendations: [] } for anomaly in self.anomaly_history: anomaly_type anomaly[type] report[anomaly_types][anomaly_type] \ report[anomaly_types].get(anomaly_type, 0) 1 # 根据异常类型生成建议 if report[anomaly_types].get(low_entropy, 0) 10: report[recommendations].append( 检测到多次低熵输出建议检查模型是否遭受后门攻击 ) return report6.3 应急响应流程建立标准化的安全事件响应流程检测与识别实时监控系统告警人工复核可疑案例确定影响范围遏制与消除隔离受影响系统回滚到安全版本清除恶意数据恢复与改进验证修复效果更新防护策略完善监控体系自然后门攻击对语音识别系统构成了严重威胁但通过系统化的防护措施可以有效降低风险。建议开发团队在项目初期就考虑安全因素建立完整的安全开发生命周期定期进行安全审计和渗透测试确保语音识别系统的可靠性和安全性。

相关新闻

混合加密的底层逻辑

混合加密的底层逻辑

甲乙之间进行混合加密的流程:前提:假如甲乙之间需要传输一个加密文件A,甲乙分别有自己的公钥和私钥,私钥只有自己有,公钥已通过CA证书传给对方。甲传送:甲要创建对称秘钥,将文件A进行对称加密&a…

2026/10/18 15:00:32 阅读更多 →
智能应用控制已阻止具有危险文件扩展名的应用

智能应用控制已阻止具有危险文件扩展名的应用

按键盘 Win i 打开 设置。点击左侧 隐私和安全性,然后点击右侧的 Windows 安全中心。点击 应用和浏览器控制。找到 智能应用控制 区块,点击 智能应用控制设置。你会看到三个选项:开启(推荐模式,会阻止)评估…

2026/10/16 7:19:03 阅读更多 →
C++ Qt与Boost.Asio构建高可用集群聊天客户端首页实践

C++ Qt与Boost.Asio构建高可用集群聊天客户端首页实践

1. 项目概述与核心价值最近在重构一个老旧的即时通讯系统,核心目标是将单点架构升级为高可用的集群聊天服务器。这个项目最吸引我的地方在于,它不仅仅是后端服务的堆叠,更是一个从前端客户端到后端分布式架构的完整闭环。今天,我想…

2026/10/16 7:30:12 阅读更多 →

最新新闻

JsLeakWatcher 报出一批对象,真的是内存泄漏吗:页面缓存、监听器和可达路径怎么分

JsLeakWatcher 报出一批对象,真的是内存泄漏吗:页面缓存、监听器和可达路径怎么分

JsLeakWatcher 报出一批对象,真的是内存泄漏吗:页面缓存、监听器和可达路径怎么分 页面退出后 JsLeakWatcher 报出几十个对象,团队立刻把所有缓存清掉,结果二次进入变慢,告警却仍然存在。工具发现“对象仍可达”&…

2026/10/18 15:00:54 阅读更多 →
Aspose.Slides 25.5 JDK 16 集成指南:License校验与模块化配置

Aspose.Slides 25.5 JDK 16 集成指南:License校验与模块化配置

简介:本资源是面向Java开发者的企业级PowerPoint文档处理解决方案,适用于需在Spring Boot、Servlet等后台架构中实现PPT/PPTX自动化生成、格式转换与深度编辑的中高级开发场景。压缩包共2个文件(1个JAR组件 1个XML许可证)&#x…

2026/10/18 15:00:54 阅读更多 →
2026批量查快递轨迹用什么工具好:从预算成本看,小中大团队各自该花多少钱

2026批量查快递轨迹用什么工具好:从预算成本看,小中大团队各自该花多少钱

先说结论:批量查快递轨迹这件事,预算从48元/天到1288元/年,覆盖了所有规模的团队。关键不是花多少钱,是花的钱能不能对应上你的业务规模。下面用需求对照矩阵,把不同预算档位该匹配什么业务量讲清楚。固乔快递批量查询…

2026/10/18 15:00:54 阅读更多 →
CentOS 8.2 手动编译 libssh 0.9.5 完整指南:独立安装与版本共存

CentOS 8.2 手动编译 libssh 0.9.5 完整指南:独立安装与版本共存

1. 为什么在 CentOS 8.2 上要手动编译 libssh 0.9.5CentOS 8.2 自带的 libssh 版本是 0.9.4,这个版本在功能上其实已经能满足大部分基础场景,比如简单的 SSH 客户端连接、SFTP 文件传输等。但如果你正在做安全审计、渗透测试工具链搭建,或者需…

2026/10/18 15:00:54 阅读更多 →
Linux 开发工具(三) 深入理解编译器: gcc / g++

Linux 开发工具(三) 深入理解编译器: gcc / g++

目录 一. 编译的四个阶段 1.1 预处理 1.1.1 代码示例 1.1.2 命令行宏定义 1.1.3 条件编译的用处 1.2 编译 1.2.1 代码示例 1.3 汇编 1.3.1 代码示例 1.4 链接 1.4.1 代码示例 二. 动态库和静态库 2.1 什么是库 2.2 库文件的命名规则 2.3 动静态库 2.4 动态链接…

2026/10/18 15:00:54 阅读更多 →
对话工具升级为生成式界面引擎:免费开放与交互范式切换

对话工具升级为生成式界面引擎:免费开放与交互范式切换

1. 这次升级到底改了什么:从“对话工具”到“生成式界面引擎”先把结论摆在前面:这次更新的核心不是“模型又聪明了一点”,而是交互范式的切换。过去的对话产品,本质上是一个文本进、文本出的黑盒,你问它答&#xff0c…

2026/10/18 14:59:53 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →