TensorFlow利用InceptionV3训练新的图像分类模型

本文介绍了如何利用TensorFlow的InceptionV3模型进行图像分类的训练。通过迁移学习,保留InceptionV3的前层参数,只训练最后一层的softmax分类器。详细步骤包括:修改配置文件,编译与预处理,重新训练网络生成bottleneck特征,以及训练完成后如何使用模型进行图像分类。训练过程中会下载Inception网络并提取特征,最终产出output.pb和output.txt文件用于预测。
摘要由CSDN通过智能技术生成

1. tensorflow编译 、安装

#CPU
bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
#GPU
bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
sudo pip install /tmp/tensorflow_pkg/tensorflow-*.whl

问题1:

ImportError: libcudart.so.7.0: cannot open shared object file: No such file or directory

请在.profile文件中中添加如下:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda

2.利用Tensorflow训练图像分类的模型

谷歌的Inceptionv3给出了保存好的模型和训练的代码,直接可以拿来训练。
这里采用迁移学习的方法。即前面的层的参数都不变,而只训练最后一层的方法。最后一层是一个softmax分类器,这个分类器在原来的网络上是1000个输出节点(ImageNet有1000个类),所以需要删除网络的最后的一层,变为所需要的输出节点数量,然后再进行训练。

Tensorflow中采用的方法是这样的:将自己的训练集中的每张图像输入网络,最后在瓶颈层(bottleneck),就是倒数第二层,会生成一个2048维度的特征向量,将这个特征保存在一个txt文件中,再用这个特征来训练softmax分类器。
具体的方法如下:

1.编译和预处理

bazel buildtensorflow/examples/image_retraining:retrain

如果电脑比较新,建议用这个命令来编译:

bazel build -c opt --copt=-mavx tensorflow/examples/image_retraining:retrain

后面一种在提取bottleneck特征的时候比前面的一种快了10倍左右。

编译完成后就可以使用了。但是建议还是改动一下tensorflow/examples/image_retraining目录下的retrain的python脚本,因为里面的默认路径是/tmp,这个文件夹一旦电脑关机所有数据都会清除。建议把里面所有的这个路径都改为另外的路径。之后在该路径下将自己的训练数据集放好。

训练数据集是有格式要求的:
a.数据集应该这样设置,训练集文件夹下放置多个子文件夹,每个子文件夹就是一个类,里面包含该类的所有图像。
b.图像应该是jpg或者jpeg格式。

2.训练

在设置好数据集后,运行

bazel-bin/tensorflow/examples/image_retraining/retrain --image_dir ~/XXX

image_dir ~/XXX是训练数据集的路径XXX是数据集的名称。

这时就开始训练了。训练过程中会首先下载原来的Inception网络,保存在ImageNet的文件夹下。
这里写图片描述
第一个文件是网络的图结构,第二个文件是一个测试图像,第三个是一个映射,从最后1000个节点中的每一个映射到一个编码,第四个也是一个映射,是从编码映射到人能够识别的名词,例如:节点的表示是第234个节点,而这个节点映射到的编码是nb20003,这个编码映射到的名词是熊猫&#x

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值