Tensorflow基础实验
1 介绍
Tensorflow是用于数值计算的开源库,专门从事学习应用.在这个CodeLabs中,您将学习如何在单个机器上安装和运行Tensorflow,并尝试训练一个简单的分类器来分类花卉图像.
那么我们接下来要做什么呢?
在这个实验中,我们将进行转移学习,这意味这我们将会以已经训练过的模型为基础,通过对这个模型进行再训练来解决相似的问题.为什么要这么做呢?这是因为从头开始进行深度学习往往需要好几天,但是进行转移训练只需要一小会就能完成这件事情.
我们即将使用的模型是基于ImageNet大型视觉挑战赛的数据进行训练的,这个模型能够区分1000种不同的物体,如达尔马提亚狗或洗碗机,你可以通过选择不同的模型的构架,权衡解决问题的速度,大小和准确性.
你会学到什么:
如何用Python和Tensorflow来训练图像分类器
如何使用训练有素的分类器对图像进行分类
你需要什么:
- 对Linux命令的基本了解
2 设置
- 安装Tensorflow
在我们开始Tensorflow之前,您需要安装Tensorflow(CodeLabs测试机已经准备好了相关的开发环境),本次CodeLabs为了防止网络不好带来的问题,已经提前将所有的资料下载好,并防止在桌面上了
- 克隆git仓库
|
|
3 下载训练集
在开始训练前,您需要一套数据来训练您的模型,我们创建了供大家使用的花卉数据集.你可以通过下面两条命令来下载这些照片.
|
|
你需要将相关的数据集放到您的工作目录中,您可以通过使用一下命令确认照片是否已经放到目录中.
|
|
4 (Re)训练神经网络
4.1 模型的选择与配置
我们提供了一个训练脚本,用来重新训练Inception V3模型或MobileNet模型.在这个联系中,我们将会使用MobileNet模型.主要区别在于Inception V3模型针对精度做了优化,而MobileNet模型则是更为小巧和高效.
初始版本的V3在ImageNet上的初始精度为78%,但是他的模型有85MB这么大,这笔最大的MobileNet模型还要大,识别精度为70.5%的MobileNet模型仅有19MB大.
选择训练神经网络的配置
输入图像的分辨率 : 128 , 160 , 192 or 224px (高分辨率的图像识别需要更多的处理时间,但是准确度会更高,在这里我们推荐使用224px)
该模型与MobileNet模型的压缩比 : 1.0 , 0.75 , 0.5 or 0.25 (压缩的越多,识别速度越快,但是越不准确,在这里我们推荐使用0.5作为压缩比例)
Topic1 : 使用推荐配置,通常只需要几分钟来重新训练笔记本电脑,你可以通过shell来设置这些变量
|
|
Topic2 : 下图的y轴为精度,x轴为所需计算数,圆圈的面积为模型的大小,园的左下角是128px的图片,右上角是224px

4.2 开启TensorBoard可视化训练平台
在开始训练之前,我们需要先启动TensorBoard(Tensorflow配套的监督和检查工具).您可以用它来监督培训进度.
|
|
Topic1 : 如果已经开启了TensorBoard请先关闭其他的TensorBoard或者6006端口的进程
|
|
4.3 开始训练
如同引言所属,ImageNet模型是具有百万个参数的网络,可以用来区分大量的物品,我们只是训练该神经网络的最后一次,所以训练将会在比较短的时间内结束.
使用一下命令开始训练(注意–summaries_dir选项,该选项是用来将训练进度报告发送到TensorBoard用来显示训练进度的)
|
|
该脚本将会下载预训练的模型,并在添加一个新的最后一层,训练您下载的花卉照片.
Topic1 : 如果您使用Docker并且上述命令失败的话
|
|
5 使用再培训模型
在培训模型将会写入一下两个文件
tf_files/retrained_graph.pb (从网络上下载的模型,以及刚才我们重新训练的花卉层)
tf_files/retrained_labels.txt (它是一个包含标签的文本文件)
你可以使用我们提供的 label_image.py , 您可以用他来测试你训练好的模型
|
|
你可能会得到如下结果,该结果表示,该图片为雏菊的可能性最高
|
|
附录3 : 参考文献
- TensorFlow for Poets by Pete Warden
- retraining tutorial by Google
- Codelabs - tensorflow-for-poets by Google