图片基础

一个图片通常表现为3维矩阵,长、宽、通道,其中长*宽构成了分辨率,而有多少个通道就相当于有多少个"调色板"页面,这些调色板共同构成了每个像素点的色彩。

eg:1080p的rgb图片,就是1920*1080,通道数为3,其中rgb分别可取(0-255);而单通道就是灰度图像,取值(0-255)

CNN

CNN【卷积 → 激活 → 池化】 视为一个基础块,其中卷积层的每一个卷积核(滤波器)都可以提取一个特征,而激活层的Re-LU可以将卷积后此特征不明显的值设为0,再经过池化层,保留更为显著的特征(从“精确位置”到“空间存在”)。

随着多层的卷积输出,通道数增加,长、宽降低,而通道意义也变为了不同特征的强弱分布,有多少种通道就对应着多少种特征;

池化操作减少特征图中 参数数量、保留显著特征,只描述哪一个区域有,而不用具体到点。

经过一些列的卷积、激活、池化操作,最终得到长、宽小,而通道数大的特征图 ,经过全连接,输出一个1*n的向量,其中n为分类的数量。

卷积操作

  • 整个卷积层的输出是N张特征图堆叠在一起,形成一个新的三维张量。

  • 输出形状[新高度, 新宽度, 卷积核数量]

  • 例如[222, 222, 32] (使用了32个3x3卷积核,尺寸略有缩小)。

  • 此时,张量发生了变化:通道数从原始的3(R,G,B)变成了32,这32个通道不再是颜色,而是32种不同的基础特征的强度分布图。

整体流程

CNN演变

这里我的描述的网络是去掉了全连接层的CNN

FCN

FCN做出的重要改变是将CNN中全连接换为解码器,保留了原有CNN中的编码器(卷积+池化),这样,原有的CNN用于分类的一维输出,就变为了 “一个高分辨率的、与输入尺寸对应的像素级分类图”。

跳跃连接

编码器中,越浅的层次,图片分辨率更高位置更精细,越深的层次,图片的分辨率更低,but语义信息丰富(知道“这是什么”,但不知道在哪)

在ResNet中的应用

flowchart TD
    subgraph A [编码器 - 卷积与下采样]
        direction TB
        A1[输入图像<br>HxWx3] --> A2[卷积与池化<br>H/2 x W/2 x 64] --> A3[卷积与池化<br>H/4 x W/4 x 128] --> A4[卷积与池化<br>H/8 x W/8 x 256] --> A5[卷积与池化<br>H/16 x W/16 x 512] --> A6[卷积与池化<br>H/32 x W/32 x 1024]
    end

    subgraph B [解码器 - 上采样与跳跃融合]
        direction TB
        B1[预测层<br>H/32 x W/32 x N] -- 2x上采样 --> B2[score pool4<br>H/16 x W/16 x N]
        
        A4 -- 跳跃连接1 --> C1[1x1 卷积<br>H/8 x W/8 x 256] -- 1x1 卷积 --> C2[score pool3<br>H/8 x W/8 x N]
        
        B2 -- 与 score pool3 相加 --> B3[融合特征<br>H/8 x W/8 x N] -- 8x上采样 --> B4[最终输出<br>H x W x N]
    end

    A6 -- 核心改变: <br>全连接层 -> 卷积层 --> B1
    A5 -- 跳跃连接2 --> B2

反卷积(转置卷积)

解码器中用于还原图像到输出大小的部分,

梯度爆炸、梯度消失

反向传播的过程中,链式求导形式的梯度求解,越算越小偶然越算越大。

解决方案:残差网络中的跳跃连接、Adam、更改激活函数等等

数据集图片类型

在语义分割数据集中,“L模式” 和 “P模式” 是图像标签(Label)或掩码(Mask)的两种常见存储格式

L模式中,灰度值(0-255)每一个都代表一个标注的类型,这样对计算机友好

P模式中,0-255每个值都对应一个单独的色彩,而不是单纯的灰度值,这样肉眼易于观察

评价指标