用 Kera 创建你的第一个计算机视觉模型。
数据集下载地址:链接:https://pan.quark.cn/s/f9a1428cf6e3 提取码:XJcv
文章目录
- 欢迎来到计算机视觉!
- 简介
- 卷积分类器
- 训练分类器
- 示例 - 训练一个卷积分类器
- 步骤1 - 加载数据
- 步骤2 - 定义预训练基
- 步骤3 - 附加头
- 步骤4 - 训练
- 结论
欢迎来到计算机视觉!
你是否曾经想过教一台计算机去看?在这门课程中,这正是你将要做的!
在这门课程中,你将会:
- 使用现代深度学习网络,通过Keras构建一个图像分类器
- 设计你自己的自定义卷积网络,使用可复用的模块
- 学习视觉特征提取背后的基本理念
- 掌握迁移学习的艺术,以提升你的模型
- 利用数据增强来扩展你的数据集
如果你已经完成了深度学习入门课程,你将会知道如何取得成功。
现在让我们开始吧!
简介
这门课程将介绍计算机视觉的基本理论。我们的目标是学习神经网络如何“理解”一张自然图像,以解决人类视觉系统可以解决的同类型问题。
最擅长这项任务的神经网络被称为卷积神经网络(有时我们称之为卷积网络或CNN)。卷积是赋予卷积网络层其独特结构的数学运算。在未来的课程中,你将学习为什么这种结构在解决计算机视觉问题上如此有效。
我们将把这些理念应用到图像分类问题上:给定一张图片,我们能否训练一台计算机告诉我们这是一张什么的图片?你可能见过应用程序,它可以从一张照片中识别出植物的种类。那就是一个图像分类器!在这门课程中,你将学习如何构建和专业应用一样强大的图像分类器。
虽然我们的重点将放在图像分类上,但你在这门课程中学到的内容对于每一种计算机视觉问题都是相关的。在结束时,你将准备好进入更高级的应用,如生成对抗网络和图像分割。
卷积分类器
用于图像分类的卷积网络由两部分组成:base(多为卷积层)和head(dense layers, 密集层或称为全连接层)。
卷积网络的部分:图像,基,头,类;输入,提取,分类,输出。
基部分用于从图像中提取特征。它主要由执行卷积运算的层组成,但通常也包括其他类型的层。(你将在下一课中学习这些。)
头部分用于确定图像的类别。它主要由密集层组成,但可能包括其他层,如dropout。
我们说的视觉特征是什么意思?特征可以是一条线,一种颜色,一种纹理,一种形状,一种模式——或者一些复杂的组合。
整个过程大致如下:
特征提取的理念。
实际提取的特征看起来有点不同,但它给出了这个理念。
训练分类器
网络在训练期间的目标是学习两件事:
- 从图像中提取哪些特征(基),
- 哪个类别与哪些特征相匹配(头)。
如今,卷积网络很少从头开始训练。更常见的是,我们重用预训练模型的基。然后我们在预训练的基上附加一个未训练的头。换句话说,我们重用了一个已经学会1. 提取特征的网络部分,并附加了一些新的层来学习2. 分类。
将新的头部附加到训练过的基部。
因为头部通常只包含几个密集层,所以可以从相对较少的数据中创建非常准确的分类器。
重用预训练模型是一种被称为迁移学习的技术。它如此有效,以至于现在几乎每一个图像分类器都会使用它。
示例 - 训练一个卷积分类器
在整个课程中,我们将创建试图解决以下问题的分类器:这是一张汽车的图片还是卡车的图片?我们的数据集大约有10,000张各种汽车的图片,大约一半是汽车,一半是卡车。
步骤1 - 加载数据
下一个隐藏的单元格将导入一些库并设置我们的数据管道。我们有一个名为ds_train
的训练分割和一个名为ds_valid
的验证分割。
In [1]:
# 导入
import os, warnings
import matplotlib.pyplot as plt