现代物体识别模型有数百万个参数,可能需要数周才能完成训练。 transfer learning转移学习是一种技巧,通过为ImageNet等一系列类别提供全面训练的模型,并从现有的新类别权重中重新进行训练,从而缩短了大量工作量。 在这个例子中,我们将从头开始对最后一层进行再训练,同时将所有其他层保持原样。 有关该方法的更多信息,请参阅Decaf上的这篇论文。https://pan.baidu.com/s/1o8zdQcE。
注意:本教程的这个版本主要使用bazel。 一个免费bazel版本,可以作为codelab使用。
1,Training on Flowers
在开始任何培训之前,您需要一组图像来向网络传授您想要识别的新课程。后面的章节解释了如何准备自己的图像,但为了简化起见,我们创建了一个创作共享许可的花卉照片档案,以供初始使用。要获取花卉照片集,请运行以下命令:
花卉数据集百度网盘地址:https://pan.baidu.com/s/1eSEnv8m
cd ~
curl -O http://download.tensorflow.org/example_images/flower_photos.tgz
tar xzf flower_photos.tgz
有了图像之后,你可以从你的TensorFlow源代码目录的根目录中建立这样一个修剪器:
bazel build tensorflow / examples / image_retraining:retrain
如果您的计算机支持AVX指令集(过去几年中生产的x86 CPU中常见),那么可以通过构建该架构来提高再培训的运行速度,如下所示(在配置中选择适当的选项后):
bazel build --config opt tensorflow/examples/image_retraining:retrain
然后可以这样运行retrainer:
bazel-bin/tensorflow/examples/image_retraining/retrain --image_dir ~/flower_photos
该python加载预先训练的Inception v3模型,移除旧的顶层,并在您下载的花朵照片上训练一个新的顶层。 没有一个花卉种类是在原来的ImageNet类的整个网络培训。 传递学习的神奇之处在于,已经被训练以区分一些对象的较低层可以被重复用于许多识别任务&#