TensorFlow Slim是Google提供的图像分类工具包,不仅提供一些方便接口,包含使用tf_slim训练和评估几个广泛使用于图像识别的卷积神经网络 (CNN) 图像分类模型的代码 ,还包含允许您从头开始训练模型或根据预先训练的网络权重对其进行微调的脚本,是一个简洁、方便的图像分类模型库。
环境:python3.7 TensorFlow-1.15.0rc0 TensorFlow Models-v1.13.0
目录
1、下载TensorFlow源代码和TensorFlow_Models源代码文件
一、安装配置TensorFlow Slim
1、下载TensorFlow源代码和TensorFlow_Models源代码文件
tensorflow/tensorflow: An Open Source Machine Learning Framework for Everyone (github.com)
tensorflow/models: Models and examples built with TensorFlow (github.com)
这里不建议安装TensorFlow2.x版本
TensorFlow2.x版本没有contrib库,也就无法使用tf_slim库
2、配置环境
Slim源代码在models\research\slim文件夹中
在该目录下打开cmd,输入
python setup.py build
python setup.py install
没有报错,就是配置成功了
二、slim文件夹解读
datasets:定义了一些训练时使用的数据集,并预设了一些常用数据集,定义自己数据集时,也必须在datasets文件夹中进行定义
net:定义了一些常用的图像识别网络结构
preprocessing:针对不同网络结构,定义了对图像进行预处理方法
scripts:包含了一些训练的案例脚本
deployment:部署,通过创建clone方式实现跨机器的分布训练,可以在多CPU和多GPU上实现运算的同步或者异步。
train_image_classifier.py:训练模型的入口代码
eval_image_classifier.py:验证模型性能的入口代码
download_and_convert_data.py:下载并传换数据集格式的入口代码
export_inference_graph.py:导出网络结构的入口代码
setup.py:slim运行所需环境配置的入口代码
slim_walkthrough.ipynb:tf_slim演示代码,可在jupyter-notebook上打开
README.md:slim使用说明文件
BUILD:用于建立包含用于加载、训练和评估基于TF Slim的模型的文件
WORKSPACE:用于建立运行slim的依赖项
使用之前建议先看下README.md和slim_walkthrough.ipynb文件
三、使用TensorFlow Slim微调模型
1.微调模型的原理
属于迁移学习的一种技术,采用预训练模型应用到自己的数据集上,无需再修改其网络结构,对模型输出层进行修改,并随机初始化该层的模型参数。
2、准备数据集
这里采用Garbage Classification (12 classes) | Kaggle
这个垃圾分类数据集提供了12个类别
建立自己的训练文件夹,放入下载好的数据集,这里在slim目录下,建立my_train/Garbage/data:
3、数据集转化成tfrecord格式
进入到slim/datasets文件夹下
新建garbage.py,将flower.py内容复制进去,修改以下部分
_FILE_PATTERN = 'flowers_%s_*.tfrecord' #flowers改为garbage
SPLITS_TO_SIZES = {'train': 3320, 'validation': 350}
_NUM_CLASSES = 5 #5改为12
打开dataset_