【深度学习pytorch-51】卷积计算

1. 图像的基本概念

图像是二维的光强分布,通常由像素(Pixel)构成。每个像素表示图像中的一个点,包含一定的颜色信息和亮度信息。

  • 灰度图像:灰度图像是只有亮度(亮度值)信息的图像。每个像素的值通常在0到255之间,表示不同的亮度,0表示黑色,255表示白色。

  • 彩色图像:彩色图像通常由三个通道组成:红色(Red)、绿色(Green)、蓝色(Blue)。每个通道的像素值通常也在0到255之间,这三种颜色的组合可以表示各种颜色。

2. 图像的表示

图像可以用矩阵来表示。对于灰度图像,图像的每个像素值都可以映射到一个矩阵中的元素。例如,假设一个图像的尺寸为 m × n m \times n m×n,则图像可以表示为一个 m × n m \times n m×n 的矩阵,其中每个元素是一个灰度值。

  • 灰度图像
    如果有一个 m × n m \times n m×n 的灰度图像,表示为:
    Image = [ I ( 1 , 1 ) I ( 1 , 2 ) … I ( 1 , n ) I ( 2 , 1 ) I ( 2 , 2 ) … I ( 2 , n ) ⋮ ⋮ ⋱ ⋮ I ( m , 1 ) I ( m , 2 ) … I ( m , n ) ] \text{Image} = \begin{bmatrix} I(1,1) & I(1,2) & \dots & I(1,n) \\ I(2,1) & I(2,2) & \dots & I(2,n) \\ \vdots & \vdots & \ddots & \vdots \\ I(m,1) & I(m,2) & \dots & I(m,n) \end{bmatrix} Image= I(1,1)I(2,1)I(m,1)I(1,2)I(2,2)I(m,2)I(1,n)I(2,n)I(m,n)
    其中 I ( i , j ) I(i,j) I(i,j) 表示第 i i i 行第 j j j 列的像素值,通常是一个在 [ 0 , 255 ] [0,255] [0,255] 范围内的整数。

  • 彩色图像
    彩色图像通常由三个通道(RGB)组成,每个通道都是一个灰度图像。因此,彩色图像可以表示为一个三维矩阵:
    Image = [ R ( 1 , 1 ) G ( 1 , 1 ) B ( 1 , 1 ) … R ( 1 , n ) G ( 1 , n ) B ( 1 , n ) R ( 2 , 1 ) G ( 2 , 1 ) B ( 2 , 1 ) … R ( 2 , n ) G ( 2 , n ) B ( 2 , n ) ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ R ( m , 1 ) G ( m , 1 ) B ( m , 1 ) … R ( m , n ) G ( m , n ) B ( m , n ) ] \text{Image} = \begin{bmatrix} R(1,1) & G(1,1) & B(1,1) & \dots & R(1,n) & G(1,n) & B(1,n) \\ R(2,1) & G(2,1) & B(2,1) & \dots & R(2,n) & G(2,n) & B(2,n) \\ \vdots & \vdots & \vdots & \ddots & \vdots & \vdots & \vdots \\ R(m,1) & G(m,1) & B(m,1) & \dots & R(m,n) & G(m,n) & B(m,n) \end{bmatrix} Image= R(1,1)R(2,1)R(m,1)G(1,1)G(2,1)G(m,1)B(1,1)B(2,1)B(m,1)R(1,n)R(2,n)R(m,n)G(1,n)G(2,n)G(m,n)B(1,n)B(2,n)B(m,n)
    其中, R ( i , j ) R(i,j) R(i,j) G ( i , j ) G(i,j) G(i,j) B ( i , j ) B(i,j) B(i,j) 分别表示彩色图像的红色、绿色和蓝色通道中第 i i i 行第 j j j 列的像素值。

3. 图像的分辨率与尺寸

图像的分辨率指的是图像的像素数量,通常用宽度 × 高度来表示。例如,1920x1080的图像表示该图像的宽度为1920个像素,高度为1080个像素。

  • 分辨率
    Resolution = Width × Height \text{Resolution} = \text{Width} \times \text{Height} Resolution=Width×Height

    其中,宽度和高度单位是像素。

  • 图像的尺寸:图像的尺寸一般表示为其宽度和高度。例如,图像的尺寸为 512 × 512 512 \times 512 512×512 就表示该图像有512个宽度像素和512个高度像素。

4. 图像的颜色空间

颜色空间是图像中颜色的数学模型,常见的颜色空间有以下几种:

  • RGB(红绿蓝)颜色空间:RGB 是最常用的颜色空间,它通过三个通道(红色、绿色和蓝色)来表示图像中的颜色。

    每个通道的取值通常在0到255之间,因此,RGB图像的每个像素由三个数值(红、绿、蓝)表示。

  • HSV(色调、饱和度、明度)颜色空间:HSV 颜色空间与 RGB 不同,它通过色调、饱和度和明度来表示颜色。HSV 在图像处理和计算机视觉中常用,因为它在处理图像时更符合人类的视觉感知。

  • YCbCr 颜色空间:YCbCr 是常用于视频和图像压缩的颜色空间。Y 表示亮度,Cb 和 Cr 分别表示色度。

5. 图像处理的基础操作

图像处理的基本操作包括图像的变换、滤波、增强、压缩等。以下是一些常见的图像处理操作:

5.1 图像的平移

图像的平移是将图像中的每个像素按照一定的水平和垂直方向移动一定的距离。假设原图像 I ( x , y ) I(x, y) I(x,y) 经过平移后变为新图像 I ′ ( x ′ , y ′ ) I'(x', y') I(x,y),则平移变换公式为:

x ′ = x + t x , y ′ = y + t y x' = x + t_x, \quad y' = y + t_y x=x+tx,y=y+ty
其中, t x t_x tx t y t_y ty 分别是水平和平移的距离。

5.2 图像的旋转

图像的旋转操作是通过旋转矩阵来实现的。如果一个图像绕原点旋转角度 θ \theta θ,则其旋转后的坐标 ( x ′ , y ′ ) (x', y') (x,y) 可以通过以下公式获得:

[ x ′ y ′ ] = [ cos ⁡ ( θ ) − sin ⁡ ( θ ) sin ⁡ ( θ ) cos ⁡ ( θ ) ] [ x y ] \begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} \cos(\theta) & -\sin(\theta) \\ \sin(\theta) & \cos(\theta) \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} [xy]=[cos(θ)sin(θ)sin(θ)cos(θ)][xy]

5.3 图像的缩放

图像缩放是将图像按比例进行放大或缩小,缩放的比例为 s x s_x sx s y s_y sy。若原图像的坐标为 ( x , y ) (x, y) (x,y),则缩放后的坐标为:

x ′ = x ⋅ s x , y ′ = y ⋅ s y x' = x \cdot s_x, \quad y' = y \cdot s_y x=xsx,y=ysy

5.4 图像滤波

滤波是一种常见的图像处理技术,用于去噪、平滑、增强等操作。滤波操作通过将图像与一个滤波器(或卷积核)进行卷积来实现。滤波操作可以用以下公式表示:

I ′ ( x , y ) = ∑ m = − k k ∑ n = − k k I ( x + m , y + n ) ⋅ W ( m , n ) I'(x, y) = \sum_{m=-k}^{k} \sum_{n=-k}^{k} I(x+m, y+n) \cdot W(m, n) I(x,y)=m=kkn=kkI(x+m,y+n)W(m,n)

其中, I ( x , y ) I(x, y) I(x,y) 是输入图像的像素值, W ( m , n ) W(m, n) W(m,n) 是滤波器的权重, k k k 是滤波器的半宽度。

6. 图像的压缩

图像压缩是为了减少图像文件的大小,从而节省存储空间或传输带宽。常见的图像压缩方法有无损压缩和有损压缩。

  • 无损压缩:保留原始图像的所有信息。常见的无损压缩算法有 PNG 和 TIFF。
  • 有损压缩:通过丢失一些信息来减少图像大小。常见的有损压缩算法有 JPEG。

7. 图像的质量评估

图像质量评估通常用来衡量图像的清晰度或压缩效果。常见的质量评估指标包括:

  • 均方误差(MSE)
    M S E = 1 m ⋅ n ∑ i = 1 m ∑ j = 1 n ( I ( i , j ) − I ′ ( i , j ) ) 2 MSE = \frac{1}{m \cdot n} \sum_{i=1}^{m} \sum_{j=1}^{n} (I(i,j) - I'(i,j))^2 MSE=mn1i=1mj=1n(I(i,j)I(i,j))2

  • 结构相似度指数(SSIM)
    S S I M ( x , y ) = ( 2 μ x μ y + C 1 ) ( 2 σ x y + C 2 ) ( μ x 2 + μ y 2 + C 1 ) ( σ x 2 + σ y 2 + C 2 ) SSIM(x, y) = \frac{(2 \mu_x \mu_y + C_1) (2 \sigma_{xy} + C_2)}{(\mu_x^2 + \mu_y^2 + C_1) (\sigma_x^2 + \sigma_y^2 + C_2)} SSIM(x,y)=(μx2+μy2+C1)(σx2+σy2+C2)(2μxμy+C1)(2σxy+C2)

抱歉,前面的介绍没讲完,接下来继续讲解卷积计算、多个卷积核的计算以及它们在深度学习中的应用。

2. 多个卷积核的计算

在实际应用中,卷积神经网络(CNN)通常不仅使用一个卷积核进行图像特征提取,而是使用多个卷积核,每个卷积核提取图像中的不同特征。这使得网络能够同时捕捉到更多不同的图像信息。

假设我们有 C C C 个卷积核,每个卷积核的大小为 k h × k w k_h \times k_w kh×kw。如果输入图像的大小为 H × W H \times W H×W,输出特征图的大小会受到卷积核数目的影响。具体来说,卷积操作会得到 C C C 个特征图,每个特征图的大小依然是经过卷积计算后的 H ′ × W ′ H' \times W' H×W,其中 H ′ H' H W ′ W' W 是计算过的输出特征图的高度和宽度。

2.1 多卷积核的数学表达式

对于 C C C 个卷积核,每个卷积核进行卷积计算得到一个特征图,最后将所有特征图组合起来形成一个新的输出。假设卷积核 K 1 , K 2 , … , K C K_1, K_2, \dots, K_C K1,K2,,KC 分别对应的输出特征图是 O 1 , O 2 , … , O C O_1, O_2, \dots, O_C O1,O2,,OC,则最终输出的特征图 O O O 是由所有 C C C 个输出特征图堆叠而成,大小为 C × H ′ × W ′ C \times H' \times W' C×H×W

数学上,可以表示为:

O c ( i , j ) = ∑ m = 0 k h − 1 ∑ n = 0 k w − 1 I ( i + m , j + n ) ⋅ K c ( m , n ) O_c(i, j) = \sum_{m=0}^{k_h-1} \sum_{n=0}^{k_w-1} I(i+m, j+n) \cdot K_c(m, n) Oc(i,j)=m=0kh1n=0kw1I(i+m,j+n)Kc(m,n)

其中, c c c 表示卷积核的索引, K c K_c Kc 表示第 c c c 个卷积核, O c O_c Oc 表示对应卷积核的输出特征图, I I I 是输入图像。

最终输出的特征图可以表示为一个张量 O O O,大小为 C × H ′ × W ′ C \times H' \times W' C×H×W,每个特征图的维度为 H ′ × W ′ H' \times W' H×W

3. 卷积操作的步幅(Stride)和填充(Padding)

在卷积操作中,步幅(Stride)和填充(Padding)是两个非常重要的参数,它们直接影响输出特征图的大小。

3.1 步幅(Stride)

步幅决定了卷积核滑动时的步长,步幅为 s s s 时,卷积核在每次滑动时沿着图像的横向和纵向方向都滑动 s s s 个像素。

  • 步幅为1:每次滑动一个像素。
  • 步幅为2:每次滑动两个像素。

步幅越大,输出特征图的大小就越小,因为卷积核跳过了更多的输入图像的像素。步幅的大小可以通过以下公式计算输出特征图的大小:

H ′ = ⌊ H − k h + 2 p s ⌋ + 1 H' = \left\lfloor \frac{H - k_h + 2p}{s} \right\rfloor + 1 H=sHkh+2p+1

W ′ = ⌊ W − k w + 2 p s ⌋ + 1 W' = \left\lfloor \frac{W - k_w + 2p}{s} \right\rfloor + 1 W=sWkw+2p+1

其中:

  • H ′ H' H W ′ W' W 分别是输出特征图的高度和宽度。
  • H H H W W W 分别是输入图像的高度和宽度。
  • k h k_h kh k w k_w kw 是卷积核的高度和宽度。
  • s s s 是步幅。
  • p p p 是填充。
3.2 填充(Padding)

填充是指在输入图像的边缘添加额外的像素,这样做可以避免卷积操作后输出特征图的尺寸过小。填充通常有两种方式:

  • 有效卷积(Valid Padding):没有填充,卷积核仅在图像的有效区域内滑动。输出特征图的尺寸通常会比输入图像小。
  • 同义卷积(Same Padding):在输入图像的边缘填充零,确保输出特征图的尺寸与输入图像相同。

填充可以通过以下公式计算:

H ′ = ⌊ H + 2 p − k h s ⌋ + 1 H' = \left\lfloor \frac{H + 2p - k_h}{s} \right\rfloor + 1 H=sH+2pkh+1

W ′ = ⌊ W + 2 p − k w s ⌋ + 1 W' = \left\lfloor \frac{W + 2p - k_w}{s} \right\rfloor + 1 W=sW+2pkw+1

其中, p p p 表示填充的像素数。如果使用 same padding,则通常会选择适当的 p p p,使得输出图像的大小与输入图像相同。

4. 卷积层的作用

卷积层是卷积神经网络(CNN)的核心组成部分,它负责提取输入图像中的局部特征。每个卷积核会学习一个特定的特征模式,比如边缘、纹理、颜色、形状等。随着网络的加深,卷积层会学习到更高级的特征。

4.1 特征提取

卷积层的作用是通过滑动卷积核提取输入图像的局部特征,并将这些特征组合成更高层次的特征。每一层的卷积核对输入图像进行局部感知,提取出不同层级的特征。

4.2 参数共享

在卷积神经网络中,卷积核是共享的,即同一个卷积核的权重应用于整个图像。这样做有两个优点:

  • 减少参数量:卷积核参数共享减少了需要训练的参数量,这对于大规模图像处理非常重要。
  • 提升泛化能力:由于卷积核在图像的不同位置应用相同的权重,模型能够学习到在不同位置出现的相同特征,增强了模型的泛化能力。
4.3 局部感受野

卷积操作使得每个卷积核能够感知输入图像的局部区域,这被称为局部感受野(Receptive Field)。随着卷积层的深度增加,感受野会逐渐增大,能够提取更大范围的特征。

5. 卷积与池化的结合

在卷积神经网络中,通常会将卷积操作与池化操作结合使用。池化操作(如最大池化)用于减少特征图的空间大小,同时保留最重要的特征。常见的组合模式是“卷积-池化”交替进行。池化层通常会减少空间维度,帮助减轻计算量并提高模型的鲁棒性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值