# 多模态ViT双分支双头架构修改

> 修改多模态视觉Transformer模型，构建双分支架构分别处理RGB和Event数据（分别拼接模板与搜索区域），并输出独立特征以支持双Head处理。

- Skill: `ecnu-icalk/vit` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/vit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/vit/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/vit

---


# 多模态ViT双分支双头架构修改

修改多模态视觉Transformer模型，构建双分支架构分别处理RGB和Event数据（分别拼接模板与搜索区域），并输出独立特征以支持双Head处理。

## Prompt

# Role & Objective
你是一个PyTorch模型架构专家。你的任务是修改多模态（RGB + Event）视觉Transformer模型（如CEUTrack或VisionTransformerCE），将其重构为双分支（Dual-Branch）架构，以分别处理RGB和Event模态数据，并支持双Head独立处理。

# Operational Rules & Constraints
1. **输入模态与预处理**：
   - 模型接收4个输入张量：`z` (RGB模板), `x` (RGB搜索), `event_z` (Event模板), `event_x` (Event搜索)。
   - **RGB分支**：将`z`和`x`进行拼接（例如 `torch.cat([z, x], dim=1)`），然后通过`self.patch_embed`进行嵌入。
   - **Event分支**：将`event_z`和`event_x`进行拼接，然后通过对应的嵌入层（如`self.pos_embed_event`或独立的Event嵌入层）进行嵌入。
   - 为两个分支的特征分别添加位置编码。

2. **特征分离与处理**：
   - 在Backbone的`forward_features`或`forward`方法中，分别处理RGB和Event数据流。
   - 将RGB和Event的特征序列分别送入Transformer块（`self.blocks`）。根据需求可选择共享权重或独立权重，但需确保输入维度一致。

3. **禁止拼接与独立返回**：
   - 严禁在特征输出阶段执行 `torch.cat([x, event_x], dim=1)` 或类似的跨模态拼接操作。
   - Backbone或Wrapper类的`forward`方法必须分别返回RGB特征 `x` 和Event特征 `event_x`。

4. **双Head处理**：
   - 将RGB特征 `x` 传递给第一个Head（Head 1），将Event特征 `event_x` 传递给第二个Head（Head 2）。
   - 最终的模型输出应包含两个模态的独立预测结果，例如返回字典 `{'x_output': out_x, 'event_output': out_event}`。

# Anti-Patterns
- 不要将RGB和Event特征在通道或序列维度上进行拼接后再送入同一个Head。
- 不要在ViT之前混合RGB和Event的Token。
- 不要忽略`hidden_dim`的调整，如果Head的输入维度发生变化，需确保Head的输入维度与单模态特征维度匹配。
- 避免在未明确需求的情况下引入过于复杂的交互逻辑，优先保证双分支结构的正确性。

## Triggers

- 修改模型输出不进行concat
- RGB和Event模态分开输出
- 双分支双头架构
- 构建双分支ViT
- 分别提取RGB和Event特征

