第05讲 经典卷积神经网络

作者:欧新宇(Xinyu OU)

本文档所展示的测试结果,均运行于:Intel Core i7-7700K CPU 4.2GHz, nVidia GeForce GTX 1080 Ti


建设中...

本章要点

  1. 人工智能的基本概念
  2. 机器学习(深度学习)发展的时间线
  3. 深度学习日益流行的关键因素及其未来潜力
  4. 深度学习常用工具软件

空间是贯穿线性代数整个领域的主干和核心概念,我们所有的概念和应用都会构架在空间这个逻辑实体上。而向量和矩阵就是我们用来填充这个实体的工具,包括运算、映射、降维、投影、近似求解、特征提取等,都将建立在基于矩阵和向量的空间中实现。

1. 图像预处理

1.1 减均值

1.2 归一化

1.3 标准化

2. 数据增强 DataAugmentation

在python中,最常用的图像处理和操作库有两个,分别是Python图形库(Python Imaging Library, PIL)和开源计算机视觉库(OpenSource Computer Vision, OpenCV)。两个库通常都可以实现大多数图像的操作。

相较而言对于简单的图像操作PIL是不错的选择,因为其代码简单;而当需要同时处理图像、视频,或者更高级功能时,OpenCV是不二的选择。此外在大多数相同操作中,OpenCV的执行效率要更高一些,因此在批量处理时,OpenCV速度更快。

值得注意的是:

  1. PIL库使用img=Image.open()方法打开图片时,图像类型为PIL Image,值为0-255,尺寸为W*H*C,图像使用的是RGB通道(这一点和matplotlib是一致的)更便于显示,但要进行操作需要转换为numpy数组,方法为:img=np.array(img),转换后的尺寸为H*W*C。
  2. OpenCV库使用img=cv2.imread()方法打开图片时,图像类型为numpy数据,图像使用的时BGR通道,值是0-255,但尺寸为H*W*C,这个格式便于后续处理。但是如果要使用matplotlib进行显示,就需要将颜色通道从BGR转换为RGB,方法为img=cv2.cvtColor(img, cv2.COLOR_BGR2RGB),转换后的尺寸不变,仍然为H*W*C。注意直接使用opencv显示不需要 进行转换。

下面给出两种方法的读取和显示示例:

img_path = 'D:\\CloudStation\\MyPictures\\DesktopBackground\\3-100H3135959.jpg'
img_PIL = Image.open(img_path)
img_PIL.show()

img_CV = cv2.imread(img_path)
# 使用matplotlib显示
img_plt = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # OpenCV读取图片默认为BGR,要显示正常需要转换为RGB 
plt.imshow(img_plt)

# 直接使用opencv显示
cv2.imshow('img_CV', img_CV)
cv2.waitKey(0)

2.1 载入图片

2.2 随机左右翻转图片