h-space对比损失(DC)的设计细节
目标:确保视频的所有帧在语义上保持一致(例如,同一视频中的不同帧应描述相同的主体和场景,避免物体突变或语义漂移)。
1. h-space的定义
- h-space 是U-Net最深层的特征空间(bottleneck feature),已有研究表明它包含高层语义信息(如物体类别、场景结构),且对噪声步长(timestep)不敏感。
- 论文假设:同一视频的所有帧在h-space中应彼此接近,而不同视频的帧应远离。
2. 损失函数设计(Decoupled Contrastive Loss)
采用解耦对比损失(Decoupled Contrastive Loss, DC),具体步骤如下:
-
正负样本构建:
- 正样本对:从同一视频中随机采样两帧,提取它们的h-space特征(记为 ( h ( 1 ) , h ( 2 ) \mathbf{h}^{(1)}, \mathbf{h}^{(2)} h(1),h(2)))。
- 负样本队列:维护一个队列 ( Q ),存储其他视频的h-space特征作为负样本(动态更新)。
-
特征投影:
- 通过一个轻量级投影头 ( g θ ( g_\theta (gθ)(训练后丢弃),将h-space特征映射到低维空间:
[ z = g θ ( h ) [\mathbf{z} = g_\theta(\mathbf{h}) [z=gθ(h)] - 目的是增强特征的判别性(类似SimCLR)。
- 通过一个轻量级投影头 ( g θ ( g_\theta (gθ)(训练后丢弃),将h-space特征映射到低维空间:
-
损失计算:
- 对正样本对 ( ( z ( 1 ) , z ( 2 ) ) ( (\mathbf{z}^{(1)}, \mathbf{z}^{(2)}) ((z(1),z(2))),最小化它们的距离;对负样本 ( z ( q ) ∈ Q ( \mathbf{z}^{(q)} \in Q (z(q)∈Q),最大化距离。
- 公式:
[ L DC = − ⟨ z ( 1 ) , z ( 2 ) ⟩ τ + log ∑ q ∈ Q exp ( ⟨ z ( 1 ) , z ( q ) ⟩ τ ) [L_{\text{DC}} = -\frac{\langle \mathbf{z}^{(1)}, \mathbf{z}^{(2)} \rangle}{\tau} + \log \sum_{q \in Q} \exp\left(\frac{\langle \mathbf{z}^{(1)}, \mathbf{z}^{(q)} \rangle}{\tau}\right) [LDC=−τ⟨z(1),z(2)⟩+log∑q∈Qexp(τ⟨z(1),z(q)⟩)]
其中 ( τ = 0.1 ( \tau=0.1 (τ=0.1) 是温度系数, ( ⟨ ⋅ , ⋅ ⟩ ( \langle \cdot, \cdot \rangle (⟨⋅,⋅⟩) 表示余弦相似度。
3. 关键设计动机
- 解耦对比损失:相比传统对比损失(如InfoNCE),DC损失分离了正负样本的计算,缓解了负样本数量对梯度的影响,提升训练稳定性。
- 非连续帧采样:正样本不限于相邻帧,因为h-space主要编码语义(而非运动细节),允许更大的时间跨度采样。
4. 实际效果
- 通过约束h-space的一致性,模型能生成语义连贯的视频(如物体身份、场景布局稳定)。
- 结合其他损失(如TRS损失),共同解决时间一致性问题。
伪代码示例
# 假设 h1, h2 是同一视频的两帧特征,queue 是负样本队列
z1, z2 = projection_head(h1), projection_head(h2) # 投影到低维空间
pos_sim = torch.cosine_similarity(z1, z2, dim=-1) # 正样本相似度
neg_sims = torch.mm(z1, queue.t()) / temperature # 负样本相似度
loss = -pos_sim + torch.logsumexp(neg_sims, dim=-1)
总结:DC损失通过对比学习显式约束视频帧的语义一致性,是HARIVO模型实现时间连贯性的核心组件之一。