概括
本文主要是对已经预训练好的ImageNet图像识别模型进行微调( Fine-tune )。 从四个方面讲解:数据准备、训练模型、在测试集上验证准确率、 导出模型并对单张图片分类
一、微调原理
- 若为分类模型,需要用符合数据集类别数的全连接层去改变原先模型最后的全连接层
- 初始化权重参数使用训练好的参数,节省训练时间,有助于分类器性能的提高
- 指定训练层数的范围,有三种方式
1)只训练最后的改变全连接层(训练范围一定要包含这一层,因为原来模型参数不包含这一层参数)
2)训练全部参数(这种方法的训练速度可能比较慢,但是能取得较高的性能,可以充分发挥深度模型的性能)
3)训练部分参数(通常是固定浅层参数不变,训练深层参数。如固定 conv,conv2 部分的参数不训练,只训练 conv3,conv 4,conv 5,fc6,fc7,fc8 的参数)
二、使用slim微调模型
TensorFlow Slim Google 公司公布的一个图像分类工具包,不仅定
义了一些方便的接口,还提供了很多 ImageNet 数据集上常用的网络结构和
预训练模型。
三、数据准备
分两步,首先要将自己的数据集切分为训练集和验证集,训练集用于训练模型,
验证集用来验证模型的准确率,其次转为tfrecord格式(tensorflow数据格式)
定义训练数据
复制 flowers.py 文件内容到新建的satel