FiLM

FiLM: Feaeture-wise Linear Modulation

通过使用一个基于外部信息的特征级仿射变换, 动态影响一个神经网络(如, CNN等)的计算结果

将语言信息动态影响图片特征

Methods

  1. 语言管道 (Linguistic Pipeline) / FiLM 生成器:
    • 输入: 一个文本问题 (e.g., “那个蓝色大球体是什么材质的?”)。
    • 处理:
      • 问题中的单词首先被转换为词嵌入 (Word Embeddings)。
      • 词嵌入序列被送入一个门控循环单元网络 GRU (Gated Recurrent Unit)
      • GRU 最终的隐藏状态被视为整个问题的问题嵌入 (question embedding)
      • 这个“问题嵌入”通过一个简单的线性层(仿射变换),为视觉管道中的每一个 FiLM-ed ResBlock 生成一组对应的调制参数  和 
  2. 视觉管道 (Visual Pipeline) / 被 FiLM 调节的网络:
    • 输入: 一张图像。
    • 处理:
      • 特征提取: 图像首先通过一个基础的 CNN (论文中使用了从头训练的 CNN 或预训练的 ResNet) 来提取初始的图像特征图 (feature maps)。
      • FiLM-ed 残差块 (FiLM-ed ResBlocks): 提取出的特征图会经过一系列(论文中为4个)特殊的残差块。在每个残差块内部:
        • 特征图  会经过一个 FiLM 层的处理。
        • FiLM 层接收来自 FiLM 生成器的  和  参数,并对特征图  的每个通道 c 执行仿射变换:$$。
        • 这个操作可以理解为:根据问题,有选择性地缩放 (scale) 和 平移 (shift) CNN 中的特征图,从而“打开”、“关闭”或“增强”某些特定的视觉特征。
      • 空间坐标信息: 为了帮助模型进行空间推理,在送入每个 ResBlock 和最终分类器之前,特征图会与两个表示相对 x, y 坐标的特征图进行拼接。
    • 分类器 (Classifier):
      • 经过所有 FiLM-ed ResBlocks 处理后的最终特征图,会进入一个分类器。
      • 该分类器由一个 1x1 卷积、一个全局最大池化 (Global Max-Pooling) 和一个两层的 MLP 组成。
      • 最终通过 Softmax 输出所有可能答案的概率分布,得到最终答案。
graph TD
    subgraph "语言管道 (FiLM Generator)"
        A[Question] --> B(Word Embeddings)
        B --> C{GRU}
        C --> D[Question Embedding]
        D --> E(FiLM Parameter Generator<br/>Linear Layers)
        E --> Params((γ, β Parameters))
    end

    subgraph "视觉管道 (FiLM-ed CNN)"
        F[Image] --> G(Base CNN<br/>Feature Extractor)
        G --> H[Initial Feature Maps]
        
        subgraph "FiLM-ed ResBlock 1"
            direction TB
            H --> H_Conv1(Conv -> BN -> ReLU)
            H_Conv1 --> H_FiLM(FiLM Layer)
            H_Conv1 --> H_Out
            H_FiLM --> H_Out
            H_Out --> H_Final(Residual Connection<br/>+ ReLU)
        end

        H_Final --> I[...]
        
        subgraph "FiLM-ed ResBlock N"
             direction TB
            I --> I_Conv1(Conv -> BN -> ReLU)
            I_Conv1 --> I_FiLM(FiLM Layer)
            I_Conv1 --> I_Out
            I_FiLM --> I_Out
            I_Out --> I_Final(Residual Connection<br/>+ ReLU)
        end
        
        I_Final --> J(Classifier<br/>Conv -> GMP -> MLP)
        J --> K[Final Answer]
    end

     Style
    classDef pipeline fill:#e8f4ff,stroke:#555,stroke-width:2px;
    class A,F,K,Params pipeline;