卷积网络在计算机视觉中的应用
立即解锁
发布时间: 2025-09-01 00:52:27 阅读量: 7 订阅数: 40 AIGC 

### 卷积网络在计算机视觉中的应用
#### 卷积操作示例
我们可以通过一个简单的例子来说明目前所学的内容。下面的图展示了一个 2×2 滤波器应用于单个 3×3 切片的二维卷积:
输入层大小为 (width_i, height_i),滤波器尺寸为 (filter_w, filter_h),卷积后输出层的尺寸为 width_o = width_i - filter_w + 1,height_o = height_i - filter_h + 1。在此例中,width_o = height_o = 3 – 2 + 1 = 2。
接下来,我们通过一个简单的编码示例来说明卷积操作。以下是具体步骤:
1. **导入 numpy**:
```python
import numpy as np
```
2. **定义 conv 函数**:该函数对图像进行卷积操作,接收两个二维 numpy 数组作为参数,分别是表示灰度图像像素强度的 image 和滤波器 im_filter。
```python
def conv(image, im_filter):
# 输入维度
height = image.shape[0]
width = image.shape[1]
# 输出图像,尺寸减小
im_c = np.zeros((height - len(im_filter) + 1,
width - len(im_filter) + 1))
# 遍历所有行和列
for row in range(len(im_c)):
for col in range(len(im_c[0])):
# 应用滤波器
for i in range(len(im_filter)):
for j in range(len(im_filter[0])):
im_c[row, col] += image[row + i, col + j] * im_filter[i][j]
# 修正越界值
im_c[im_c > 255] = 255
im_c[im_c < 0] = 0
return im_c
```
3. **应用不同滤波器**:为更好地说明,我们使用 10×10 模糊滤波器和 Sobel 边缘检测器。
```python
# 模糊滤波器
blur = np.full([10, 10], 1. / 100)
conv(image_grayscale, blur)
# Sobel 滤波器
sobel_x = [[-1, -2, -1],
[0, 0, 0],
[1, 2, 1]]
conv(image_grayscale, sobel_x)
sobel_y = [[-1, 0, 1],
[-2, 0, 2],
[-1, 0, 1]]
conv(image_grayscale, sobel_y)
```
在这个例子中,我们使用硬编码权重的滤波器来可视化卷积操作在神经网络中的工作方式。实际上,滤波器的权重将在网络训练期间确定。我们只需定义网络架构,如卷积层的数量、输出体积的深度和滤波器的大小,网络将在训练过程中找出每个滤波器突出显示的特征。
需要注意的是,实现卷积时使用了四个嵌套循环,但通过一些巧妙的变换,卷积操作可以用矩阵 - 矩阵乘法实现,从而充分利用 GPU 并行计算。
#### 跨通道和深度卷积
之前我们描述了一对一的切片关系,即使用单个滤波器对单个输入切片进行操作以产生单个输出切片。但这种方式存在局限性:
- 单个输入切片适用于灰度图像,但不适用于多通道彩色图像或其他多维输入。
- 单个滤波器只能检测切片中的单个特征,而我们希望检测多种不同特征。
解决方法如下:
- **输入处理**:将图像按颜色通道拆分,如 RGB 图像可拆分为三个通道,每个通道可视为一个深度切片,其值为对应颜色(R、G 或 B)的像素强度。输入切片的组合称为深度为 3 的输入体积,RGB 图像由三个 2D 切片组成的 3D 张量表示。
- **滤波器设置**:CNN 卷积可以有多个滤波器,突出不同特征,从而产生多个输出特征图,组合成输出体积。
根据输入和输出切片的关系,可分为跨通道卷积和深度卷积,具体如下:
| 卷积类型 | 描述 | 输出单元计算公式 | 权重数量计算公式 |
| ---- | ---- | ---- | ---- |
| 跨通道卷积 | 一个输出切片接收所有输入切片的输入(C_in - to - one 关系),多个输出切片时为 C_in - to - C_out 关系。每个输入/输出切片对使用单独的滤波器切片。 | \(y_{c_{out},row,col} = \sum_{c_{in}=1}^{C_{in}}\sum_{i=1}^{F_{h}}\sum_{j=1}^{F_{w}}x_{c_{in},row+i - 1,col+j - 1} \times w_{c_{in},c_{out},i,j} + b_{c_{out}}\) | \(W =
0
0
复制全文
相关推荐










