一、训练数据
1、从www.tinymind.cn上下载数据集train和test
2、将代码文件夹quiz-word-recog与数据放在同一目录下
3、数据转换
将图片转成tfRecord格式
参考:https://github.com/tensorflow/models/tree/master/research/slim
$ cd quiz-word-recog #转到代码所在目录
$ python3 download_and_convert_data.py \ #调用download_and_convert_data.py脚本
--dataset_name=quiz \ #其有两个参数:数据集的名称、数据集所在路径
--dataset_dir=../train #..代表上级目录 行尾处的\符号表示后续行延续本行语句
数据TFRecord格式数据存在原始数据目录下
4、下载预训练的模型
位置:https://github.com/tensorflow/models/tree/master/research/slim 往下拉有inception_V3的checkpoint
放入代码、数据集同一目录
5、使用rsync工具讲代码及数据传入到服务器中
rsync -avpe ssh ./* 192.168.1.44:/home/david/train #./*意为当前目录下的所有文件 未验证
6、训练数据
python3 quiz-word-recog/train_image_classifier.py --dataset_name=quiz \
--dataset_dir=./train checkpoint_path=./inception_v3.ckpt \
--model_name=inception_v3 \
--checkpoint_exclude_scopes=InceptionV3/Logits,InceptionV3/Auxlogits \
--train_dir=./train \ #指定summary文件.ckpt格式?输出的目录
--learning_rate=0.001 --optimizer=rmsprop --batch_size=32
预训练模型上finetune,3-8个epoch应该能得到较好的模型
使用Ctrl+C命令中止模型
二、验证数据
1、使用如下命令指定程序运行的GPU,引号中为空表示在CPU上运行
export CUDA_VISIBLE_DEVICES=""
2、使用命令显示显卡运行信息(需要安装CUDA)
$ nvidia-smi
当显卡运行满时,再用显卡运行验证命令会报错,故使用1中命令屏蔽掉显卡
3、使用如下命令进行模型验证
python3 quiz-word-recog/eval_image_classifier.py --dataset_name=quiz \
--dataset_dir=./train --dataset_split_name=validation --model_name=inception_v3 \
--checkpoint_path=./train \ #上面.ckpt文件的目录
--evl_dir=./eval \ #验证结果存放的目录
--batch_size=32 --max_num_batches=128
三、模型评估
使用tensorboard观察训练过程
tensorboard --logdir=./train #训练时输出的summary(.ckpt文件)所在目录
四、模型导出
模型导出的用处:(1)可以去除反向传播等不必要部分(2)便于部署在嵌入式系统
不导出需要使用saver API运行模型,导出后不再需要
使用如下命令导出:
sh export_and_freeze.sh #模型导出的命令详见脚本,设置导出的位置为当前目录
#在脚本中设置导出的ckpt版本,选择准确度最高的
五、模型显示
1、使用命令行
sh classify_image.sh #输入图片的路径见代码
2、使用网页
sh server.sh
然后打开显示出的网址
代码讲解
使用$python3 xxx.py --help 查看代码包含哪些参数