Inception

Table of Contents

1. Inception

inception 系列中最早的模型是 GoogleNet (2014/9), 提出了 inception 模块.

后来 Rethinking the Inception Architecture for Computer Vision (2015/12, google) 提出了 inception_v2 和inception_v3, 其中 v2 提出了 batchnorm, v3 提出了 factoried conv, asymmetric conv

1.1. Network

inception.png

1.1.1. InceptionV3

图中的 A, B, C 是三种不同规格的 inception 模块. 注意所有的 inception 模块都是 stride 为 1 和 same padding, 它们没有 downsample 的功能

1.1.1.1. Factoried Conv

A 是 factoried conv, 是指用两个 3x3 的 conv 代替 5x5 的 conv, receptive field 不变, 但 flops 大约变为原来的 18/25 = 0.72 倍

inception_a.png

1.1.1.2. Asymmetric Conv

B, C 都是 asymmetric conv, 即用 1xn, nx1 两个 conv 代替 nxn 的 conv, 其中 B 是 1xn 和 nx1 串行, 而 C 是两者并行.

串行:

inception_b.png

并行:

inception_c.png

Backlinks

ENet (ENet > Network > bottleneck): bottleneck 中间的 conv 变成 Asymmetric Conv, 例如 5x5 kernel 变 5x1 和 1x5 两 个kernel, 在保持 receptive field 大小不变的基础上降低了计算量. 参考了 inception

1.1.2. Efficient Grid Size Reduction

图中的 D, E 为了做 downsample, 但并不是直接使用 pooling, 因为:

  1. 先 conv 后 pooling 时计算量太大
  2. 先 pooling 后 conv 时丢失的信息太多, 导致特征信息丢失 (representational bottleneck)

inception_v3 提出一个 `Efficient Grid Size Reduction` 的方法: conv 和 pooling 同时做, 即一路做 pooling, 另一路做 stride 2 的 conv2d, 然后两者 concat.

inception_size_reduction.png

Backlinks

ENet (ENet > Network > initial): 输入数据为 (3, 512, 512), 通过 initial 层后变为 (16, 256, 256), 这里没有直接做 pooling 而是参考了 inception 的 Efficient Grid Size Reduction

1.1.3. Auxiliary Classifier

inception 模型会输出两个 softmax, 分别为 F, G, 其中 F 称为 auxiliary classifier. F, G 训练时使用相同的标签, F 人为的增加了训练的难度, 相当于一种 regularization 的手段.

Backlinks

ICNet (ICNet > Network > train): 训练时没有执行最后的 4x upsample, 因为并没有使用原始 label 计算 loss. 所以上面计 算的 3 个 loss 都相当于 Auxiliary Classifier

PSPNet (PSPNet > Network > auxiliary loss): 在论文中也使用了和 Auxiliary Classifier 类似的方法: resnet 中间某一层通过 conv/fc/resize/upsampling/… 后与 label 计算 loss, 再乘以一个权重算到最终的 loss 里

1.1.4. Label Smoothing

\(new\_label=0.9*one\_hot\_labels+0.9/n\_classes\)

类似于知识蒸馏中的 soft label, 可以看做一种 regularization 手段.

Backlinks

ENet (ENet): ENet 做为一个 semantic segmentation 模型, 基本就是一个标准的 encoder-decoder 结 构, 并且参考了 ResNetInception 的设计

Image Classification (Image Classification > Inception): Inception

Tensorflow Architecture: Parallism (Tensorflow Architecture: Parallism > Parallelism > 测试): 1. inter_op_parallelism_threads 作用不大, 可能是因为 mnist 模型没有分支结构, 换 成 Inception 会明显起作用

Author: [email protected]
Date: 2022-01-20 Thu 00:00
Last updated: 2022-01-27 Thu 13:24

知识共享许可协议