【多模态情感计算】联合交叉注意力:解锁音视频融合在连续情感分析中的潜力

深度学习之卷积神经网络(CNN)原理与实战 【代码】深度学习之卷积神经网络(CNN)原理与实战。 阅读详情

1. 为什么传统方法在“听”和“看”上总差点意思?

想象一下,你正在看一场电影。主角强颜欢笑地说“我很好”,但他的声音却在微微颤抖,眼神也躲躲闪闪。你几乎立刻就能判断出,他其实很悲伤。这个过程,就是人类大脑在做“多模态情感计算”——我们自然而然地融合了视觉(表情、肢体)和听觉(语调、语速)的信息,做出了一个综合的情感判断。

然而,当计算机试图模仿这个过程时,却常常表现得像个“偏科生”。在很长一段时间里,AI处理音视频情感分析的主流思路,可以概括为两种“偷懒”的办法。

第一种是“各管各的,最后投票”。也就是先分别用视觉模型(比如3D CNN)分析视频画面中的表情,用音频模型(比如处理频谱图的2D CNN)分析声音里的情绪,得到两个独立的预测结果(比如效价和唤醒度的分数),最后再简单地把这两个分数平均一下或者拼接起来。这就像两个专家,一个只看画面,一个只听声音,然后各自打分,最后取个平均分。问题显而易见:当画面里的人在假笑,而声音里带着哭腔时,平均分可能给出一个“中性”的错误判断,完全丢失了那种内外不一的复杂情感。

第二种稍微高级一点,叫“早融合”或“特征拼接”。也就是在模型的中期,把从视频里提取的特征向量和从音频里提取的特征向量,像串糖葫芦一样直接拼接到一起,然后扔给后续的神经网络(比如LSTM)去处理。这种方法比第一种好,因为它给了模型自己去学习如何关联音视频信息的机会。但它的瓶颈在于,这种简单的拼接是“静态”和“粗暴”的。它假设在每一时刻,视觉和听觉信息的重要性是固定的,或者模型能自己完全学会动态调整。但实际上,情感的表达是高度动态和上下文相关的。比如,在一句话的停顿处,面部表情的细微变化可能承载了关键信息;而在一个人大喊时,声音的强度(唤醒度)可能压倒一切视觉线索。简单的拼接很难捕捉这种动态的、此消彼长的互补关系。

更本质的问题是,音视频数据来自完全不同的“域”。视频特征是空间和时间的组合,高度结构化;音频特征(如频谱图)是时频表示,模式迥异。这种“异质性”就像让一个习惯看图纸的建筑师和一个习惯听旋律的音乐家直接合作,如果没有一个有效的“翻译”和“协调”机制,他们的沟通效率会很低,甚至互相干扰。传统方法缺乏这种深度、动态的跨模态协调能力,导致融合效果不佳,尤其是在AffWild2这种充满遮挡、模糊、嘈杂背景的真实场景数据上,性能提升非常有限。

所以,核心挑战浮出水面:我们能否设计一种机制,让AI模型也能像人脑一样,动态地、有重点地“凝视”声音和画面,根据当前情境,智能地决定“这一刻,我更应该听他的语气,还是看他的眼神”?这就是“注意力”机制,特别是“交叉注意力”要解决的问题。而今天我们要深入探讨的“联合交叉注意力”,正是在这个方向上的一次关键进化。

2. 联合交叉注意力:让AI学会“察言观色”的核心机制

那么,什么是联合交叉注意力?我们可以把它理解为一个更加聪明的“多模态会议主持人”。在传统的交叉注意力会议上,只有两位专家:视觉专家和听觉专家。他们轮流发言,并根据对方的发言(Query和Key)来调整自己报告的重点(Value)。这比各自为政好,但互动仍然是两两之间的。

联合交叉注意力则引入了一位“联合协调员”。这位协调员手里有一份融合了视觉和听觉信息的“联合简报”。会议流程变成了这样:

  1. 建立联合认知:首先,视觉专家和听觉专家分别提交自己的报告(视觉特征V和音频特征A)。协调员将这两份报告的核心内容合并,生成一份“联合简报”(联合特征J)。这份简报不再是简单的拼接,而是包含了两种模态信息的初步关联。
  2. 交叉质询与聚焦:然后,有趣的部分来了。视觉专家会拿着这份“联合简报”(作为Query),去审视自己和听觉专家的原始报告(Key),问自己:“基于我们整体的情境(联合简报),我的报告(视觉特征)中哪些部分是最相关的?听觉专家的报告中,又有哪些信息能佐证或补充我的观点?” 这个过程通过计算联合特征J与视觉特征V、音频特征A的相关性矩阵来实现,从而生成一组“注意力权重”。
  3. 加权整合与决策:最后,这组权重会分别作用回原始的视觉和听觉报告上,产生“加权后的视觉报告”和“加权后的听觉报告”。这意味着,模型不是平等地看待所有视觉或听觉信息,而是根据当前联合上下文,放大了那些重要的、互补的部分,弱化了可能冗余或干扰的部分。最终,这两份加权后的报告再被融合,送入最终的预测层。

用技术术语来拆解这个流程:

  • 输入:视觉特征序列 V 和音频特征序列 A。
  • 生成联合表示:J = [V; A],这里的 [;] 表示拼接操作,J 承载了初步的跨模态信息。
  • 计算联合相关性:这不是简单的V和A直接相关,而是分别计算联合表示J与V、J与A的相关性。例如,C_v = softmax((W_q * J) * (W_k * V)^T),这里计算的是“整体情境J”与“视觉细节V”在每个维度上的关联强度。同理计算 C_a。
  • 产生注意力权重:相关性矩阵 C_v 和 C_a 经过进一步变换,生成用于重新校准原始特征的注意力映射。
  • 输出加权特征:V' = Attention_weights_v * V, A' = Attention_weights_a * A。V' 和 A' 就是被联合上下文调制过后的、更具任务针对性的特征。
  • 最终预测:将 V' 和 A' 拼接,通过全连接网络预测效价和唤醒度。

为什么“联合”二字如此重要? 传统的交叉注意力是 V -> A 和 A -> V 的双向关注。而联合交叉注意力是 J -> V 和 J -> A。这个微妙的转变带来了巨大优势:

  • 全局上下文感知:J 作为一个融合载体,提供了一个全局的、跨模态的上下文视角。这使得对单个模态的注意力分配,不仅考虑了另一个模态,还考虑了两个模态相互作用后的整体状态。
  • 减少异质性鸿沟:通过让V和A都去对齐同一个联合表示J,相当于在一个共享的语义空间里拉近了它们的距离,缓解了特征分布不同(异质性)带来的融合困难。
  • 更强的互补性挖掘:模型能更清晰地识别出“当视觉信息模糊时,音频的哪些特征特别关键”,或者“当声音平静时,面部的哪个肌肉微动泄露了情绪”。

3. 实战:从零构建一个联合交叉注意力融合模型

理论说得再多,不如动手跑一遍代码来得实在。下面,我将带你用PyTorch一步步实现论文中的联合交叉注意力融合模块,并集成到一个小型的情感分析网络中。我们会使用一个简化版的AffWild2数据加载流程来演示。

首先,确保你的环境已经安装了必要的库。

pip install torch torchvision pytorch-lightning

接下来,我们定义最核心的 联合交叉注意力模块。

import torch
import torch.nn as nn
import torch.nn.functional as F

class JointCrossAttentionFusion(nn.Module):
    """
    联合交叉注意力融合模块
    输入: 视觉特征 V [batch, seq_len, feat_dim_v], 音频特征 A [batch, seq_len, feat_dim_a]
    输出: 融合后的特征 [batch, seq_len, feat_dim_out]
    """
    def __init__(self, feat_dim_v, feat_dim_a, joint_dim=1024, dropout=0.5):
        super().__init__()
        self.feat_dim_v = feat_dim_v
        self.feat_dim_a = feat_dim_a
        self.joint_dim = joint_dim

        # 将视觉和音频特征投影到联合空间,生成联合表示J
        self.proj_v_to_joint = nn.Linear(feat_dim_v, joint_dim // 2)
        self.proj_a_to_joint = nn.Linear(feat_dim_a, joint_dim // 2)

        # 注意力计算中的可学习权重矩阵 (W_q, W_k, W_v)
        # 对于视觉分支:用联合特征J作为Query,去关注视觉特征V
        self.W_q_v = nn.Linear(joint_dim, joint_dim)
        self.W_k_v = nn.Linear(feat_dim_v, joint_dim)
        # 对于音频分支:用联合特征J作为Query,去关注音频特征A
        self.W_q_a = nn.Linear(joint_dim, joint_dim)
        self.W_k_a = nn.Linear(feat_dim_a, joint_dim)

        # 输出变换层
        self.W_v = nn.Linear(feat_dim_v, feat_dim_v)
        self.W_a = nn.Linear(feat_dim_a, feat_dim_a)

        # 融合后的特征维度调整与Dropout
        self.fusion_out = nn.Linear(feat_dim_v + feat_dim_a, joint_dim)
        self.dropout = nn.Dropout(dropout)
        self.layer_norm = nn.LayerNorm(joint_dim)

    def forward(self, V, A):
        batch_size, seq_len, _ = V.shape

        # 1. 生成联合特征表示 J
        J_v = self.proj_v_to_joint(V)  # [B, L, joint_dim//2]
        J_a = self.proj_a_to_joint(A)  # [B, L, joint_dim//2]
        J = torch.cat([J_v, J_a], dim=-1)  # [B, L, joint_dim]

        # 2. 为视觉模态计算注意力
        Q_v = self.W_q_v(J)  # Query 来自联合特征J
        K_v = self.W_k_v(V)  # Key 来自视觉特征V
        # 计算注意力分数 (简化版,未做scale)
        attn_scores_v = torch.matmul(Q_v, K_v.transpose(-2, -1))  # [B, L, L]
        attn_weights_v = F.softmax(attn_scores_v, dim=-1)  # [B, L, L]
        # 应用注意力权重到Value(这里Value就是原始的V,但经过一个线性层变换)
        V_transformed = self.W_v(V)
        V_attended = torch.matmul(attn_weights_v, V_transformed)  # [B, L, feat_dim_v]

        # 3. 为音频模态计算注意力 (流程同上)
        Q_a = self.W_q_a(J)  # Query 来自联合特征J
        K_a = self.W_k_a(A)  # Key 来自音频特征A
        attn_scores_a = torch.matmul(Q_a, K_a.transpose(-2, -1))
        attn_weights_a = F.softmax(attn_scores_a, dim=-1)
        A_transformed = self.W_a(A)
        A_attended = torch.matmul(attn_weights_a, A_transformed)  # [B, L, feat_dim_a]

        # 4. 拼接加权的特征并输出
        fused_feat = torch.cat([V_attended, A_attended], dim=-1)  # [B, L, feat_dim_v+feat_dim_a]
        output = self.fusion_out(fused_feat)
        output = self.dropout(output)
        output = self.layer_norm(output + J)  # 残差连接

        return output

现在,我们将这个融合模块嵌入到一个完整的音视频情感分析网络模型中。

class AVEmotionRecognitionModel(nn.Module):
    """
    简化的音视频情感识别模型
    假设我们已有预训练好的视觉和音频特征提取器(这里用全连接层模拟)
    """
    def __init__(self, visual_feat_dim=512, audio_feat_dim=256, joint_dim=1024, num_outputs=2):
        super().__init__()
        # 模拟的特征提取主干网络 (实际项目中会替换为I3D, ResNet等)
        self.visual_backbone = nn.Sequential(
            nn.Linear(2048, 1024),  # 假设输入视觉特征维度2048
            nn.ReLU(),
            nn.Dropout(0.3),
            nn.Linear(1024, visual_feat_dim)
        )
        self.audio_backbone = nn.Sequential(
            nn.Linear(1024, 512),   # 假设输入音频特征维度1024
            nn.ReLU(),
            nn.Dropout(0.3),
            nn.Linear(512, audio_feat_dim)
        )

        # 我们的核心:联合交叉注意力融合模块
        self.joint_cross_attn = JointCrossAttentionFusion(
            feat_dim_v=visual_feat_dim,
            feat_dim_a=audio_feat_dim,
            joint_dim=joint_dim
        )

        # 预测头
        self.regressor = nn.Sequential(
            nn.Linear(joint_dim, 512),
            nn.ReLU(),
            nn.Dropout(0.5),
            nn.Linear(512, 128),
            nn.ReLU(),
            nn.Linear(128, num_outputs)  # 输出效价和唤醒度
        )

    def forward(self, raw_visual_feat, raw_audio_feat):
        # 1. 分别提取音视频特征
        V = self.visual_backbone(raw_visual_feat)  # [B, L, visual_feat_dim]
        A = self.audio_backbone(raw_audio_feat)    # [B, L, audio_feat_dim]

        # 2. 联合交叉注意力融合
        fused_features = self.joint_cross_attn(V, A)  # [B, L, joint_dim]

        # 3. 时间维度聚合(这里采用简单的平均池化,也可用LSTM)
        context_vector = torch.mean(fused_features, dim=1)  # [B, joint_dim]

        # 4. 预测效价和唤醒度
        prediction = self.regressor(context_vector)  # [B, 2]
        return prediction

最后,我们来看一下训练循环的关键部分,特别是使用一致性相关系数作为损失函数。

import pytorch_lightning as pl
from torch.optim import Adam

class EmotionLightningModel(pl.LightningModule):
    def __init__(self, model, learning_rate=1e-3):
        super().__init__()
        self.model = model
        self.lr = learning_rate
        # 使用CCC损失 + MSE损失的组合,这是维度情感识别的常见做法
        self.ccc_loss = CCCLoss()
        self.mse_loss = nn.MSELoss()

    def forward(self, v_feat, a_feat):
        return self.model(v_feat, a_feat)

    def training_step(self, batch, batch_idx):
        v_feat, a_feat, valence_true, arousal_true = batch
        pred = self(v_feat, a_feat)
        valence_pred, arousal_pred = pred[:, 0], pred[:, 1]

        # 计算损失
        loss_valence = 1 - self.ccc_loss(valence_pred, valence_true) + 0.5 * self.mse_loss(valence_pred, valence_true)
        loss_arousal = 1 - self.ccc_loss(arousal_pred, arousal_true) + 0.5 * self.mse_loss(arousal_pred, arousal_true)
        total_loss = loss_valence + loss_arousal

        self.log('train_loss', total_loss)
        return total_loss

    def configure_optimizers(self):
        optimizer = Adam(self.parameters(), lr=self.lr, weight_decay=5e-4)
        scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', patience=5, factor=0.5)
        return {
            'optimizer': optimizer,
            'lr_scheduler': {
                'scheduler': scheduler,
                'monitor': 'val_loss',
                'interval': 'epoch',
                'frequency': 1
            }
        }

# 一致性相关系数(CCC)损失函数实现
class CCCLoss(nn.Module):
    def __init__(self):
        super().__init__()

    def forward(self, pred, target):
        pred_mean = torch.mean(pred)
        target_mean = torch.mean(target)
        pred_var = torch.var(pred, unbiased=False)
        target_var = torch.var(target, unbiased=False)
        covariance = torch.mean((pred - pred_mean) * (target - target_mean))
        ccc = (2.0 * covariance) / (pred_var + target_var + (pred_mean - target_mean) ** 2 + 1e-8)
        return ccc

在实际跑实验时,你需要准备符合AffWild2格式的数据加载器,将视频帧和对应的音频片段分别通过预训练的视觉网络(如I3D)和音频网络(如ResNet18 on spectrograms)提取出特征,然后输入到我们上面定义的融合模型中进行训练。论文中使用了早停策略,并在验证集上以CCC作为主要评估指标。

4. 效果如何?数据与对比实验的深度解读

模型好不好,数据说了算。在原论文的实验中,联合交叉注意力模型在极具挑战性的AffWild2数据集上证明了其价值。我们来看几个关键的数据点,并解读其背后的含义。

首先,与基础方法的对比(消融实验)。论文在验证集上做了详尽的对比,我将其核心发现总结如下表:

融合方法视觉主干音频主干效价 (CCC)唤醒度 (CCC)关键观察
特征拼接I3DResNet180.6100.520基线方法,性能有限
领导者-跟随者注意力I3DResNet180.6280.535比拼接好,引入了动态权重
基础交叉注意力I3DResNet180.6450.548双向关注,效果提升明显
联合交叉注意力I3DResNet180.6630.584性能最佳,尤其在效价上提升显著
联合交叉注意力I3D-TCNResNet180.6710.589引入TCN捕捉长时依赖,效果进一步提升

从表格中可以清晰地看到一条性能上升的路径:拼接 -> 领导者-跟随者 -> 基础交叉注意力 -> 联合交叉注意力。联合交叉注意力在效价(Valence)预测上的CCC达到了0.663,相比简单的特征拼接(0.610)提升了超过5个百分点,这个幅度在情感计算任务中是非常可观的。这印证了我们的核心观点:通过联合表示来引导跨模态注意力,能更有效地捕捉微妙的情感内容(效价),而不仅仅是情绪的强度(唤醒度)。

其次,与同期SOTA方法的对比。在ABAW3竞赛的测试集上,该模型也表现出了强大的竞争力。需要特别注意的是,许多排名靠前的队伍采用了非常复杂的策略,例如:

  • 使用多个外部数据集进行预训练或数据增强。
  • 集成多个不同的视觉和音频主干网络(如ResNet, EfficientNet, VGGish等),进行特征级或决策级融合。
  • 引入额外的辅助任务(如动作单元检测)或多任务学习框架。
  • 对预测结果进行复杂的后处理(如平滑、裁剪)。

而这篇论文提出的联合交叉注意力模型,在没有使用任何外部数据、没有使用多主干网络集成、没有复杂后处理的情况下,仅凭一个精心设计的融合模块,就在效价预测上取得了极具竞争力的结果。这充分说明了该融合范式本身的有效性和效率。它就像一个“力量放大器”,即使搭载在相对标准的主干网络上,也能显著提升模型的感知能力。

最后,关于模态异质性的观察。论文中的实验还揭示了一个有趣的现象:在联合交叉注意力机制下,模型在“唤醒度”预测上的提升相对“效价”要小一些。一个可能的解释是,唤醒度(激动/平静)与声音的能量、音高等声学特征关联更强,这些特征本身比较突出且易于被模型捕获,因此融合带来的边际收益相对较小。而效价(积极/消极)更依赖于微妙的面部肌肉运动、语调的细微变化以及两者的复杂配合,这正是联合交叉注意力善于处理的“互补性”信息。这从侧面证明了该模型在解决复杂、精细情感识别任务上的独特优势。

5. 超越情感识别:联合交叉注意力的泛化潜力

虽然我们一直在讨论情感识别,但联合交叉注意力这种融合范式的能力远不止于此。它的核心思想——利用一个联合的、高层次的上下文表征,来动态地调制和整合来自不同模态的细粒度信息——是一个通用的多模态融合框架。我在智能硬件和AI产品落地的经验中,看到过太多需要类似能力的场景。

场景一:智能会议系统。 在一个远程视频会议中,系统需要综合判断参会者的“投入度”或“理解度”。单纯看摄像头(视觉)——他可能在点头,但眼神飘忽;单纯听声音(音频)——他可能在说“嗯嗯”,但语气平淡。联合交叉注意力可以让系统生成一个“当前讨论主题的联合上下文”,然后用这个上下文去问:“基于整个讨论氛围,他的点头是真诚的认可还是敷衍?他平淡的‘嗯嗯’声在当前的对话节奏下是否意味着困惑?” 从而实现更精准的状态分析。

场景二:车载驾驶员状态监控。 这是安全关键型应用。视觉模态捕捉驾驶员的面部(是否疲劳、分神),音频模态可能捕捉车内声音(是否有频繁哈欠、异常呼吸声)或驾驶员的语音(是否含糊)。当车辆处于夜间高速行驶(联合上下文:高风险、长时程驾驶),模型应该更关注视觉上的微闭眼和音频中轻微的哈欠声的协同出现,并对这种组合赋予更高的警报权重,而不是在白天市区拥堵时对一次眨眼过度反应。

场景三:内容安全与审核。 审核一段视频内容是否合规,需要结合画面和语音/字幕。一个看似无害的画面,配上具有煽动性的解说词,危害性极大。联合交叉注意力可以构建一个“安全风险联合表征”,然后同时审视视觉内容和文本内容,精准识别出那些依靠单模态无法发现的、隐含在多模态交互中的风险。

实现泛化的关键点:

  1. 定义清晰的“联合表示”:在情感识别中,联合表示是初步融合的音视频特征。在其他任务中,它可以是任务特定的高层语义向量。例如,在会议系统中,它可以是由议程文本和当前发言人历史信息编码得到的“会议状态向量”。
  2. 设计合理的注意力交互:核心公式 Attention = f(Joint_Context, Modality_Feature) 保持不变。你需要确保你的联合上下文 J 包含了足够指导注意力分配的信息。
  3. 数据与标注:任何多模态模型的成功都离不开高质量、对齐好的多模态数据。数据的质量直接决定了模型能否学到有效的联合表示。

踩过几次坑之后,我深刻体会到,设计一个强大的多模态系统,选择或设计像联合交叉注意力这样的融合层,往往比一味堆砌更庞大、更复杂的单模态主干网络来得更有效,也更具性价比。它让模型真正开始尝试去“理解”不同信息源之间的关系,而不仅仅是“看见”和“听见”。

机器学习和深度学习-5 上次课讲了监督学习和深度学习的基础,简单提了提为什么用深度学习。今天聊一些进阶内容,帮你联想到现代深度学习模型,比如卷积神经网络、RNN、LSTM 和 Transformer。两种无监督学习范式:无监督学习(特别是生成模型)和自监督学习。和——它们在机器人领域都很实用。 阅读详情

相关推荐

【深度学习新浪潮】AI 研发周报 | 2026 年第 42 周(10.18 – 10.24)

。

专注:太空算力、AI infra、异构调度、大模型成本工程 159

第三章 深度学习 -- 神经网络基础

本章系统介绍神经网络基础,重点阐述多层网络结构与反向传播原理。核心内容包括:神经元模型与激活函数(如ReLU、GELU、Swish)的数学表达及其在缓解梯度消失、提升非线性表达能力中的作用;多层感知机(MLP)的结构设计与深度优势,强调深度优于宽度的理论依据;反向传播基于链式法则实现高效梯度计算,结合自动求导机制支撑模型训练。文中还指出激活函数选择对模型性能的关键影响,尤其在Transformer等现代架构中的演进趋势。

PuppyGungun的博客 485

海思Hi3519AV100 sensor移植实战:IMX586驱动调试与硬件验证全流程

本文详细解析了在海思Hi3519AV100平台上移植索尼IMX586传感器的全流程实战。内容涵盖从硬件I2C通信验证、驱动代码移植与修改,到内核配置、时钟设定,以及使用示波器进行硬件信号深度验证和ISP图像调优等关键步骤,为开发者提供了一套清晰、可复现的sensor移植与调试方法。

weixin_29168393的博客 391

最新计算机毕业设计选题推荐-基于深度学习的光伏组件红外图像缺陷识别-运行部署-文档指导-深度学习-YOLO

本文介绍基于深度学习的光伏组件红外图像缺陷识别系统,采用Django框架与CNN模型,实现图片、视频、摄像头三种方式的缺陷自动识别,支持热斑、隐裂等异常检测。系统具备识别历史管理、用户权限控制等功能,界面友好,流程完整,适用于毕业设计展示与实际巡检辅助,兼具技术实践与应用价值。

IT研究室的博客 549

使用Intel编译器编译OpenFOAM

本文总结了使用INTEL编译器编译OpenFOAM的过程

姜蜉蝣的博客 1539

Carla学习笔记(一)服务器跑carla本地显示窗口

其中host后替换为你的服务器IP,-carla-rpc-port和-p后为端口号,需要一致。python3 manual_control.py也可以替换为其他python脚本。因为电脑配置不够,所以在服务器跑carla,本地运行PythonAPI里的样例。把carla仓库的PythonAPI拷贝到本地,或者直接去官方里下载一下。

做题记录 4968

第七章 深度学习 -- Transformer 架构

Transformer的核心是自注意力机制,它允许序列中任意位置直接关联,突破了RNN和CNN的顺序与感受野限制。通过缩放点积注意力计算查询、键、值间的相关性,实现并行化处理,显著提升训练效率。多头注意力则将特征空间分拆为多个子空间,使模型能并行捕捉不同类型的依赖关系,增强表达能力。尽管存在二次复杂度问题,但其可解释性和高效性使其成为现代NLP模型的基础。

PuppyGungun的博客 304

RK3588多路MIPI摄像头采集与WiFi低延迟传输实战指南

本文详细介绍了基于RK3588平台实现多路MIPI摄像头同步采集并通过WiFi进行低延迟传输的完整实战方案。文章深入剖析了从V4L2驱动配置、多线程采集、环形缓冲区设计到UDP网络传输优化的核心技术,旨在帮助开发者在工业检测、智能安防等场景下构建高并发、高实时性的视频流系统,实现端到端延迟控制在100毫秒以内的目标。

tensor9flow的博客 778

基于深度学习的中文自然语言处理工具Jiagu:从原理到实战的开发者指南

凭借其基于深度学习的强大内核和丰富的功能集,成为了中文 NLP 领域不可多得的优秀工具。它不仅降低了开发者进入 NLP 领域的门槛,更为处理复杂的中文文本任务提供了可靠的保障。无论是学术研究还是工业落地,Jiagu 都是一个值得深入探索和使用的利器。

wulechun的博客 268

基于YOLOv8改进的目标检测算法研究及毕设实现全流程指南

在PyTorch中定义改进后的YOLOv8模型。首先,导入相关的库和模块,然后定义骨干网络、颈部和头部的结构。# 这里定义骨干网络的结构,例如使用改进的CSP结构# 卷积层、批归一化层、激活函数等# 更多的卷积层、批归一化层、激活函数等# 其他层...# 其他层的输出...然后,定义颈部和头部的结构,类似地,将注意力机制和特征增强方法集成到模型中。本毕设以YOLOv8为基础,通过集成注意力机制、应用特征增强技术等方法,改进了目标检测算法。

m0_64661770的博客 319

Nvidia Driveos SDK/PDK介绍

NVIDIA DRIVEOS SDK/PDK介绍

u011803281的博客 2171

计算机毕设推荐:基于深度学习的动物图像识别方法研究(Python+Django+PyTorch)

本文围绕基于深度学习的动物图像识别方法研究,介绍一套从数据到网站都能跑通的完整方案。数据用Kaggle公开数据集,共15类动物,按原图分组划分训练、验证和测试集,避免相近图片跨集让指标虚高。模型用PyTorch做迁移学习,主模型选ResNet-50,另训ViT和EfficientNet两个对比模型,在相同条件下评估。网站用Django加Vue搭建,支持图片、视频、摄像头三种识别,带识别历史和统计大屏。

WEIXIN_JSJBSZDS的博客 238

反激电源及其变压器计算与绕制

本内容以一个宽电压输入 24V3A 输出的 72W 反激电源为例来计算电路的各个参数和器件选型,包含反激变压器的计算与绕制方法。

让你爱上电路设计 1911

CNN - - Transformer实践篇(一)

损失函数(loss_fn)用于衡量模型的预测与真实答案之间的差距,损失越小,通常表示模型在当前训练数据上的预测与真实标签越接近。这里使用的是交叉熵损失函数(CrossEntropyLoss)。交叉熵来自信息论,用于衡量两个概率分布p(真实)与q(预测)之间的差异,当预测分布与真实分布一致时,交叉熵最小。优化器负责根据梯度调整模型参数。:需要训练的模型参数。lr=0.01:学习率,控制每次参数更新的步幅。这里的 8 表示训练 8 轮,一个 Epoch 指模型完整遍历一次训练集。

2301_76258347的博客 311

面试问题总结——关于YOLO系列(一)

自从刚开始接到的第一个面试开始,到现在为止,陆陆续续也参加了许多场,我像是一个刚从新手村出来的小白,一路的打怪升级刷经验,期间遇到了很多不会的,我都会及时记录总结。 到现在仍然清晰记得,第一次去面试的时候,当时被怼的多惨。。。 说明:本人是非科班出身,本科是机械电子工程专业,硕士期间的研究方向是机器学习和深度学习,因为我的简历上有关于YOLO的项目,所以我着重准备了YOLO系列的面试可能遇到的问题。 决定开启这个面试问题总结的系列,包括YOLO、C++的内容、OpenCV的内容和深度学习方面被提问的问题

boss-dog 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

三维动态只当训练信号,不进推理

2026 年 10 月 12 日,arXiv 上出现一篇预印本,编号 2610.16160,署名四位作者,作者块并列给出韩国亚洲大学与一家企业两个署名单位,未逐人标注归属。这篇预印本给出的办法,是让它在训练期当监督,训完就丢。论文也把边界写在明处:离线重建的质量决定监督质量,按运动幅值选点并不保证选到与任务相关的点。把三维信息放进策略,行业里已经走过一条路:加深度相机或点云,按成对的三维—动作数据重训。然后把三维流只当训练期的监督,点级盯这些点的未来位移,末端级把点流加权聚合成末端位移。

jushenAGI的博客 185

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

一、背景:RNN 卡在哪,为什么不是“调参“能解决的

本文重读2017年奠基性论文《Attention Is All You Need》,解析Transformer为何颠覆序列建模。它摒弃RNN串行范式,以自注意力实现并行计算,解决长距离依赖与训练效率难题。核心创新包括缩放点积注意力、多头机制、正弦位置编码、残差连接与掩码自注意力,构建出高效可扩展的encoder-decoder架构。实验表明,仅6500万参数的base模型即超越当时最优系统,且训练成本降低两个数量级。这篇论文不仅催生了大模型时代,其设计哲学至今仍在持续影响AI发展。

学知不足,业精于勤。 518

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

198种组合算法+优化CNN-Transformer+SHAP分析+新数据预测+多输出!

198种组合算法+优化CNN-Transformer+SHAP分析+新数据预测+多输出!

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 467

卷积神经网络 - - Transformer原理篇(三)

前两篇我们先后梳理了神经网络的基本原理与训练技巧:从激活函数、损失函数、梯度下降和反向传播,讲到过拟合、数据增强、正则化与 Dropout,基本上回答了“神经网络如何拟合”和“如何训练得更好”这两个问题。但此前讨论的网络多为全连接结构,一旦进入图像领域,问题就变得不那么简单:如果把每个像素都作为一个输入,参数量会迅速膨胀,像素与相邻像素之间的空间关系也难以保留。

2301_76258347的博客 216

NLP自然语言处理2:RNN及其变体:认识RNN模型,传统RNN模型,LSTM模型,GRU模型,RNN案例人名分类器,注意力机制,RNN案例seq2seq

RNN(Recurrent Neural Network), 中文称作循环神经网络, 它一般以序列数据为输入, 通过网络内部的结构设计有效捕捉序列之间的关系特征, 一般也是以序列形式进行输出.一般单层神经网络结构:RNN单层网络结构:以时间步对RNN进行展开后的单层网络结构:RNN的循环机制使模型隐层上一时间步产生的结果, 能够作为当下时间步输入的一部分(当下时间步的输入除了正常的输入外还包括上一步的隐层输出)对当下时间步的输出产生影响.遗忘门输入门细胞状态输出门。

2401_87118211的博客 166

基于深度学习的电子垃圾与混合材料图像分类系统实战:ResNet-50迁移学习+Django部署+三种识别入口完整方案

这套电子垃圾图像分类系统是纯Python技术栈做的:后端是Django框架,前端是Vue2,中间靠接口通信,属于典型的前后端分离毕设项目。它要做的事情是把图片里的东西分到17个类别里,10类电子设备加7类混合材料,比如电池、键盘、微波炉、手机、鼠标、电路板、打印机、电视机、洗衣机是一组,纸板、玻璃、金属、有机物、纸张、塑料、其他垃圾是另一组。数据集有6782张图,来自Kaggle公开数据集,每类样本量都在395到400张之间,分布很均衡。

WEIXIN_JSJBSZDS的博客 334

深度学习11:反向传播2:激活层的反向传播和实现ReLU和Sigmoid

已知 y 的局部导数为 E。

tellmewhoisi的博客 190

最新计算机毕业设计选题推荐-基于深度学习的交通场景多目标检测与交通流量分析-运行部署-文档指导-深度学习-YOLO

本文介绍《基于深度学习的交通场景多目标检测与交通流量分析》系统,采用Python与Django框架,集成YOLO目标检测与多目标跟踪技术,支持图片、视频、摄像头三种输入方式,实现车辆、行人等目标的实时识别与定位。系统具备交通流量统计、历史记录管理、用户权限控制等功能,界面直观,模块清晰,适用于毕业设计与项目实战,可提供完整源码及文档支持。

IT研究室的博客 259

基于CNN-BiLSTM的轴承剩余寿命预测,MATLAB代码

基于CNN-BiLSTM的轴承剩余寿命预测,MATLAB代码

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 351

深度学习(小白笔记)——迁徙

和更少的 epoch,避免少量目标域样本把预训练特征「冲掉」(灾难性遗忘)。若目标域样本极少,也可只解冻输出层 + 最后一层隐藏层,其余保持冻结。进行有效波高单点预测的迁移学习实验:在源域(数据充足的站点)上预训练时序模型,再迁移到目标域(数据稀缺的站点),比较不同迁移策略的效果。说明:Case3 的「小样本微调」本质是把全部参数设为可训练,但用更小的学习率(如。

qq_33169259的博客 169

最新计算机毕业设计选题推荐-基于深度学习的面部关键特征识别与检测-运行部署-文档指导-深度学习-YOLO

本文介绍《基于深度学习的面部关键特征识别与检测》系统,采用PyTorch构建卷积神经网络模型,结合OpenCV实现人脸检测与关键点定位,后端基于Django框架,支持图片、视频及摄像头三种输入方式。系统涵盖用户管理、历史记录、统计大屏等功能模块,形成完整业务闭环,适用于本科毕业设计实践,兼具教学价值与可扩展性。

IT研究室的博客 279
上一篇: 离散数学精讲:自补图的性质与构造方法
下一篇: GE Proficy Historian8.0历史数据库部署与配置全攻略
silver
博客等级 码龄26年 127粉丝 2072原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值