多模态情感分析Python代码包:文本语音图像视频融合输出情感标签

简介:一项基于Python的多模态融合情感分析项目,接收文本、语音、图像和视频四种输入,通过特征融合完成情绪识别,涵盖数据预处理、模型设计、训练评估及结果展示。整套资料面向高校学生,适合毕业设计、期末大作业或课程设计场景,有一定基础的入门者也能较快上手。压缩包内共二十一个文件,以Python脚本、序列化数据文件、数据集压缩包和文档为主:脚本覆盖数据准备、模型定义与运行,序列化文件保存了预处理后的特征与标签,数据集压缩包提供常用情感语料数据,另有算法说明文档、使用说明与示例效果图。源码添加了详细注释,目录结构清晰,文档对文件用途、运行步骤和环境配置均有交代,便于复现、改造与答辩演示。整体约五十六点八六兆字节,已有约一百一十二人学习下载,适合希望系统掌握多模态情感分析流程并快速搭建基线系统的读者。

1. 多模态情感分析代码包:四种输入,一个标签输出

做客服质检或者社交舆情分析时,我经常碰到一个老问题:光看文本,一句“你做得真是太好了”会被判成正面,可语音里的叹气声、视频里的表情明摆着是负面。这套基于 Python 的多模态情感分析代码包,把文本、语音、图像、视频四种输入统一成一条推理管线,最终输出情感标签类别。它不是一个只有单一算法的尝鲜 Demo,而是按毕业设计或课程作业的完整度组织的:代码能跑通,文档能撑起论文实验章,数据集里还带了可直接加载的样本数据。适合两类人:一是拿它当课程设计基座,把单模态换成自己的实验;二是做舆情或质检的从业者,先跑通流程,再决定要不要换模型。

2. 代码包结构与数据流:先把特征落成向量,再谈训练

代码包拿到手,第一件事别急着跑训练。先把它当成一条数据流水线来理解,后面改模型、换数据集、调融合权重时才知道去哪下手。

2.1 目录结构:每个脚本对应一条数据通路

代码包的目录结构大致如下:

multimodal_sentiment/ ├── config/ # 数据集路径、训练超参、标签映射 ├── data/ # 原始样本与训练/验证划分脚本 ├── models/ # 文本、语音、图像、视频、融合五个模块 ├── scripts/ # 特征提取、抽帧、训练、评估脚本 ├── utils/ # 标签对齐、通用工具函数 └── documents/ # 说明文档、实验记录模板

config 目录里是所有参数的唯一入口,我在第一次跑通后几乎只改这里;data 目录下放着可直接加载的样本数据,格式是常见的id, text, audio_path, video_path, image_path, label这种宽表结构,做主键对齐比较省心。models 目录按模态拆开,每个模块独立成文件,这样调试时能单独跑某一条通路,不至于一个报错牵动全局。

2.2 特征抽象:四种模态为什么都能落到同一个框架

多模态情感分析的关键不是“用多个模型”,而是让不同模态的数据在同一个抽象层面被处理。代码包里默认的特征抽象方式是这样的:文本走词向量序列,语音走 MFCC 帧序列,图像走缩放后的人脸图,视频走帧序列。你会发现前两者是序列型特征,后两者是图集型特征,但最终每个样本都会折算成定长的张量输入到各自的编码器里。

这一步非常重要。很多第一次做多模态的人会直接上一个端到端的大模型,结果训练速度慢、梯度互相干扰、单模态指标还查不出来。代码包里采用的是“独立编码 + 后期融合”的路线,每种模态先单独训练出自己的分类器,最后在概率层做融合。这样做的理由是工程上可排查,文档上也容易对应:某条模态效果差,单独拿出来调,不影响其他通路。

2.3 标签体系:三分类还是多分类

默认标签体系是三分类:负面、中性、正面,对应0、1、2。数据集里偶尔会出现四分类或六分类的原始标签,比如把“愤怒”和“悲伤”分开,代码包在 utils 里提供了一个标签映射函数,把细粒度标签合并成三分类,避免因为某个类别样本量太少导致训练直接崩掉。

# utils/label_utils.py 里的简化版映射逻辑 label_map = { "angry": 0, "sad": 0, "fear": 0, "neutral": 1, "happy": 2, "surprise": 2 } def normalize_label(raw_label: str) -> int: return label_map.get(raw_label, 1) # 未知标签按中性处理

这里的normalize_label把细粒度情感合并成三大类。做课程设计或毕设时,建议保留这个映射函数而不是直接删掉细分类,因为答辩时老师通常都会问“你为什么不区分愤怒和悲伤”,你可以解释为三分类在工业场景里更稳定,细分类的样本不均衡问题会在后续工作中解决。

2.4 推理链路:独立分支打分,最后融合输出

推理链路是整包的主心骨。用户在入口处传进来一段文本、一条音频、一帧图像或一段视频,代码先判断输入类型,路由到对应模态的编码器,得到各自的情感概率分布,然后进入融合模块:

def predict(inputs: dict): prob_text = text_model.predict_proba(inputs["text"]) # (1, 3) prob_voice = voice_model.predict_proba(inputs["voice"]) # (1, 3) prob_image = image_model.predict_proba(inputs["image"]) # (1, 3) return fuse_scores(prob_text, prob_voice, prob_image)

predict暴露给外部的是统一接口,调用方不用关心内部是 CNN 还是 Transformer。我一般会在接入新数据时先分别打印三个分支的预测结果,看看是不是某条分支在拖后腿。常见做法是文本分支往往最准,视频分支次之,语音分支对噪音最敏感——这个直觉能帮你预判融合权重该怎么配。

3. 文本与语音两条线:从词向量到 MFCC 的可复现起点

单模态部分我跳过了那些动辄几十亿参数的大模型,代码包里默认给的都是可复现的基线方案,先把流程跑通,再考虑精度提升。

3.1 文本情感分类:TF-IDF 做基线,预留 embedding 入口

文本分支的默认实现是 TF-IDF 加逻辑回归。这个组合在中文短文本情感任务上通常能打到 80% 上下的准确率,作为基线足够了。代码里长这样:

# scripts/train_text_baseline.py 的简化版 from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.linear_model import LogisticRegression from sklearn.pipeline import Pipeline def build_text_pipeline(max_features=5000): model = Pipeline([ ("tfidf", TfidfVectorizer( max_features=max_features, ngram_range=(1, 2), analyzer="char_wb" # 中文场景用字粒度更稳 )), ("clf", LogisticRegression( max_iter=500, class_weight="balanced" )) ]) return model

参数说明:max_features=5000控制特征维度,太大容易过拟合,太小又丢信息,5000 是折中值;ngram_range=(1, 2)同时保留单字和相邻双字组合,能捕捉“不好”这种否定表达;analyzer="char_wb"是中文文本的常规选择,按字切分比按词切分更抗分词错误;class_weight="balanced"让模型在正负样本不均衡时自动给少数类加权,这是我最常用的一招。如果你是熟手,想换 BERT 做实验,只需要在 Pipeline 里替换第一步,接口保持一致即可。

3.2 语音情感分类:MFCC 提取与序列长度裁剪

语音分支用 Librosa 提取 MFCC 特征,这也是语音情感识别任务里最经典的声学特征。代码包对每条音频做了统一的长度约束:

# scripts/extract_mfcc.py 的简化版 import librosa import numpy as np def load_mfcc(path, sr=16000, n_mfcc=40, max_frames=800): y, _ = librosa.load(path, sr=sr, mono=True) mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=n_mfcc) # 超过 max_frames 的部分直接截断,不足的补零 if mfcc.shape[1] > max_frames: mfcc = mfcc[:, :max_frames] else: mfcc = np.pad(mfcc, ((0, 0), (0, max_frames - mfcc.shape[1])), mode="constant") return mfcc

这里sr=16000是语音情感分析里最通用的采样率,再高并不会带来明显的精度收益,反而让 MFCC 计算量翻倍;n_mfcc=40取前 40 维倒谱系数,这是常见做法,比 13 维保留更多音色细节,又不像 128 维那样引入大量低频噪声;max_frames=800对应 5 秒音频,换句话说,超过 5 秒的录音会直接截断,不足 5 秒的补零。我在第一次跑的时候踩过一个坑:直接把整段 1 分钟的录音送进去,结果因为 padding 太多,模型几乎是在识别有没有人说话而不是情感内容。截断是必要的,但前提是情感通常集中在开头 3 到 4 秒内,这在客服录音里尤其明显。

3.3 时序对齐:语音片段和文本标签怎么对起来

语音分支训练之前,必须先确认一个前提:文本标签和语音片段在时间宽度上是同一段内容。数据集里如果给的是整段音频的标签,而文本是分句标注的,就需要先做对齐。常见做法是:文本按标点切成短句,然后根据录音的静音段粗略切出对应时间区间,切不出来的直接丢弃。我之前在一个项目上偷懒,用整段音频的标签去训练分句向量,结果验证集 F1 只有 0.4 左右,切完段后立刻回到 0.7。这一步不要省。

4. 图像与视频两条线:从人脸检测到逐帧打分

图像和视频分支共用一套特征提取逻辑,核心是先把人脸区域裁出来,再走分类网络;视频分支则多了一个抽帧和分数池化的环节。

4.1 图像情感分析:检测人脸、剪裁、送入 CNN

图像分支的默认实现是 OpenCV 的 Haar 级联人脸检测器加 ResNet18 分类网络。代码块如下:

# scripts/train_image_model.py 的简化版 import cv2 import torch import torchvision.models as models from torchvision import transforms as T def crop_face(img, detector): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = detector.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5) # 没有检测到人脸就整图缩放,检测到多张人脸则取面积最大的一张 if len(faces) == 0: return cv2.resize(img, (224, 224)) x, y, w, h = max(faces, key=lambda f: f[2] * f[3]) return cv2.resize(img[y:y+h, x:x+w], (224, 224)) model = models.resnet18(weights=models.ResNet18_Weights.IMAGENET1K_V1) model.fc = torch.nn.Linear(512, 3) # 改成三分类输出

scaleFactor=1.1控制人脸检测金字塔的缩放步长,越小越慢但越准,1.1 是速度与精度的平衡点;minNeighbors=5表示候选框至少被 5 个相邻窗口确认才保留,低于这个值容易出误检。取面积最大的人脸而不是第一张,是因为场景中存在路人背景,情感分析针对的是画面主体。ResNet18 是轻量级网络,在普通 GPU 上一个 epoch 几分钟就能跑完,比 ResNet50 更适合课程设计的节奏。

4.2 视频情感分析:均匀抽帧与帧级分数池化

视频分支不做整段视频分类,而是先抽帧,再一帧一帧地过图像模型,最后把帧级概率池化成视频级概率。抽帧代码:

# scripts/extract_frames.py 的简化版 import cv2 def sample_frames(path, total_frames=10): cap = cv2.VideoCapture(path) n_total = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) # 等距抽取 total_frames 帧,避免集中在某一段 indices = [int(i * (n_total - 1) / (total_frames - 1)) for i in range(total_frames)] frames = [] for idx in indices: cap.set(cv2.CAP_PROP_POS_FRAMES, idx) ok, frame = cap.read() if ok: frames.append(frame) cap.release() return frames

total_frames=10是我试过比较稳的配置,抽帧太多训练时间成倍增加,太少又会漏掉关键表情。等距抽帧比随机抽帧稳定,因为随机抽可能抽到大量无表情的中间帧,稀释情感信号。抽完帧后直接复用图像分支的模型,逐帧得到 10 个三分类概率,再取平均得到视频级概率。如果你是熟手,可以把平均池化换成注意力池化,让模型自己学哪些帧更重要,但前提是先跑通平均池化拿到基线。

4.3 人脸检测器选择:Haar 快但别迷信它

代码包里默认 Haar 是因为它零依赖、速度快、CPU 上也能跑。但在侧脸、低头、模糊画面上它的漏检率会明显上升,一个常见做法是:如果图像分支的验证集 F1 明显低于文本分支,先把 Haar 换成 MTCNN 或 RetinaFace 再重新训练,往往能拉回五六个点。在代码包里换检测器只需替换crop_face函数内部实现,后续流程不用动。这一点我在做某图像处理 Demo 时经历过,Haar 在正脸样本上表现很好,但测试集一旦换成监控视角,漏检率直接让模型变成了随机猜测。

5. 多模态融合避坑指南:四个翻车现场与解决路径

融合是整个代码包真正吃经验的地方,也是大多数课程设计做到最后卡住的部分。下面这四条是我反复遇到过的,按“现象→原因→解决”写清楚。

5.1 标签错位:语音和文本各自为政

现象:单模态训练时损失下降得都很正常,但一进入融合,验证集指标忽高忽低,同一批数据训练两次结果差很多。

原因:数据和标签的时间粒度没对齐。文本是分句标注的,音频是整段 30 秒录音的标签,两个分支学到的其实是不同的情感事件,融合时自然互相打架。

解决:在数据预处理阶段强行对齐,生成一个segment_id字段,每个 segment 同时包含一句文本和对应的音频切片;无法切出对应时间区间的样本丢弃而不是硬补零。我一般会在切完段后随机抽查 20 条,人工听一遍音频和文本是否描述的是同一个句子,再开始训练。

5.2 视频抽帧密度:峰值表情被漏掉

现象:视频分支准确率比图像分支还低,尤其在“惊喜”“震惊”这类短促情绪上几乎总是预测错。

原因:抽帧太稀疏或集中在片头片尾,而“惊喜”这类情感通常只持续 1 到 2 秒,可能只出现在某一帧上,10 帧抽样漏掉它的概率很高。

解决:先把抽帧数从 10 增加到 15,并对比视频级预测结果;如果峰值情绪仍然丢失,改用“等距抽 10 帧 + 随机抽 5 帧”的混合策略,让表情峰值帧有更大概率被覆盖。注意不要为了峰值情绪无限加大抽帧数,训练时间会线性上涨。

5.3 融合权重:平均加权果然后悔了

现象:融合后的准确率居然低于最好的单模态分支,完全白折腾。

原因:直接把三个模型的预测概率平均,而各模态的置信度分布不在一个量级上。文本分支的 softmax 概率普遍偏高,语音分支因为噪音干扰普遍偏低,简单平均等同于让文本分支一票否决。

解决:把融合权重从“平均”改成“验证集最优权重”。具体做法是:先用验证集分别算出三个单模态的 F1,在网格上搜索 0 到 1 之间的权重组合。代码包里提供一个fuse_scores函数,入参是三个概率向量和权重,你只需要在验证集上跑一遍网格搜索:

def fuse_scores(prob_t, prob_v, prob_i, w_t, w_v, w_i): w_sum = w_t + w_v + w_i return (w_t * prob_t + w_v * prob_v + w_i * prob_i) / w_sum

参数说明:权重按求和归一化,所以可以对比不同组合的相对关系。我的经验是先用各模态验证集 F1 做归一化:w_t = f1_t / (f1_t + f1_v + f1_i),再在附近微调,而不是从全 1 开始搜索。这个细节能省掉你半天网格搜索时间。

5.4 数据不均衡:中性样本压倒一切

现象:训练 loss 很低但验证集 F1 惨淡,尤其负面类的召回率不到 0.3。

原因:情感数据集普遍是中性样本占多数,负面样本偏少,模型学到的实际上“把所有样本都猜成中性”就能拿到不错准确率。

解决:先给单模态分类器加class_weight="balanced"或focal loss,再考虑降采样。代码包里文本分支已经在逻辑回归里加了class_weight,语音和图像分支在CrossEntropyLoss里也留了weight参数入口。从我的习惯来说,先加权重,再观察负面类召回是否回升;如果效果不明显,再对中性样本做降采样,把三者比例拉到大致均衡。

6. 进阶留白:加一个自己的融合策略实验通道

跑通整个流程后,你会发现最值得扩展的不是某个单模态模型,而是融合层。我建议下一步做一件简单但很有价值的事:把融合脚本提成一个独立的模块,让权重搜索变成可重复的实验流程。代码包里已经预留了scripts/search_fusion_weight.py的骨架,你只需要补上验证集评估函数。

# scripts/search_fusion_weight.py 的关键部分 import numpy as np # 先分别评估三个单模态在验证集上的 F1 f1_t, f1_v, f1_i = evaluate_each_modality(val_loader) # 用 F1 归一化作为融合权重初值 w_base = np.array([f1_t, f1_v, f1_i]) w_base = w_base / w_base.sum() print(w_base) # 例如 [0.42, 0.28, 0.30]

拿到这个初始权重后,再以它为中心做小范围网格搜索,比如每个权重加减 0.05,而不是从零开始盲目搜索。为什么要这样做?因为 F1 反映了各模态在验证集上的可信度,它天然约束了权重搜索的起点,能让你更快逼近最优组合。如果你是熟手,完全可以再往前走一步:用验证集的最优权重替代平均池化,甚至把注意力融合加到这个模块里,但前提依然是先把"验证集 F1 归一化"这个基线固守住。

这套实验通道不是摆设,我后来越来越发现,多模态项目里最玄学的部分就是融合权重,但它其实可以用“先独立评估、再归一化、再微调”这个固定动作来驯服。从那以后,我每次拿到新的多模态数据集,都会强制自己先跑一遍三个单模态的验证集 F1,把它们写进融合脚本的注释里,再去动任何训练参数。这个习惯帮我少走了很多弯路,如果你也正好卡在融合权重怎么调的问题上,希望这个方法能帮到你。

本文还有配套的精品资源,点击获取

相关新闻

AI模型推理基础与推理引擎优化:从训练到部署的性能实践指南

AI模型推理基础与推理引擎优化:从训练到部署的性能实践指南

1. 为什么模型训练好了还不能直接用:训练与推理的错位先说一个我几乎每次带新人都会遇见的场景:模型在训练环境里跑得好好的,准确率指标也达标了,结果把训练框架里那一套文件原封不动搬到生产服务器上,一测推理延迟&am…

2026/10/20 20:44:31 阅读更多 →
ESP8266无线图传上位机:稳定接收+AT指令控制+Flash参数固化

ESP8266无线图传上位机:稳定接收+AT指令控制+Flash参数固化

简介:本资源是面向嵌入式开发与物联网初学者的无线图像传输上位机软件工程包,聚焦ESP8266 WiFi透传与STM32OV7670图传系统配套的PC端接收与显示功能。项目以C#实现TCP协议图像数据解析、帧同步处理与实时渲染,解决无线图传中常见的丢包、乱序…

2026/10/20 20:44:31 阅读更多 →
键盘相邻性:从asdxzxz看人肉随机数的安全陷阱与检测方法

键盘相邻性:从asdxzxz看人肉随机数的安全陷阱与检测方法

我最近调一个内部联调环境,需要给本地网关配一个临时访问密钥。不想翻密钥管理系统,也不想用一个太正经的值——毕竟只是沙箱联调,丢了就丢了对吧。于是我随手在键盘上敲了一串字符当占位符:asdxzxz敲完自己还觉得挺满意&#xff…

2026/10/20 20:44:31 阅读更多 →

最新新闻

从函数到能力封装:构建可复用、可编排的skills技能系统

从函数到能力封装:构建可复用、可编排的skills技能系统

1. 当“skills”成为一个项目标题:我看到的不是技能清单,而是一套能力封装系统第一次看到“skills”这个标题时,我脑子里冒出来的不是“技能列表”四个字,而是一个更具体的画面:一个可以被反复调用、组合、扩展的能力单…

2026/10/20 21:26:35 阅读更多 →
LLM应用可观测性:用信号传感器捕获幻觉、注入与语义漂移

LLM应用可观测性:用信号传感器捕获幻觉、注入与语义漂移

跟LLM应用打交道这两年,我最大的感受不是模型多聪明,而是这套系统有多“难观察”。传统软件出故障,报错、超时、白屏,原因和现象之间有明确的对应关系。LLM项目不一样:它崩溃的时候往往看起来很完美——一段语法工整、…

2026/10/20 21:26:35 阅读更多 →
从清单到能力图谱:构建可调用、可验证的个人与团队skills体系

从清单到能力图谱:构建可调用、可验证的个人与团队skills体系

1. 从“skills”这个词说起:它到底指什么“skills”这个词最近又被推到了讨论中心,但很多人第一眼看到它,脑子里浮现的还是简历上那一栏“专业技能”。如果只是这个意思,那没什么好聊的。真正值得拆的是:当一个人说自己…

2026/10/20 21:26:35 阅读更多 →
AI时代如何高效读代码:把AI当导游而非替身

AI时代如何高效读代码:把AI当导游而非替身

1. 这不是教你怎么“抄代码”,而是教你如何让AI成为你读代码时的资深向导“AI 时代怎么读代码:把 AI 当导游,别当替身”——这句话我第一次看到时,手边正开着三个终端窗口:一个在跑某开源项目的单元测试,一…

2026/10/20 21:26:35 阅读更多 →
协程上下文与Job深度解析:从状态机到结构化并发实战避坑

协程上下文与Job深度解析:从状态机到结构化并发实战避坑

协程里的Context和Job,很多人用了一年还是模模糊糊。知道怎么启动协程,也知道怎么让代码跑起来,但一旦问到“子协程被取消了父协程怎么办”“async挂起后Job状态是什么”“Dispatchers.Main在子线程里到底做了什么”,就开始含糊其…

2026/10/20 21:26:35 阅读更多 →
ComfyUI LoRA 实战:从节点接线到风格调优的完整指南

ComfyUI LoRA 实战:从节点接线到风格调优的完整指南

很多从 WebUI 转过来玩 ComfyUI 的朋友,一开始最懵的就是那一堆连来连去的节点线。尤其是 LoRA,看起来只是一个不起眼的小节点,但它的威力一点都不小。这篇是系列教程的第七节,我默认你已经能跑通基础的文生图流程,所以…

2026/10/20 21:25:33 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →