tensorflow/models中slim学习记录(0)-slim的初次使用
文章目录 微调评估导出
前言
slim的好处在于,中已经准备好了许多神经网络,做迁移学习时就连网络的代码都不需要自己重写,只需要指定名字就行了。下面的几个例子都不会重写的代码,而是在cmd中调用slim封装好的模型。
安装
由于slim在当中,所以安装就能使用了。
pip
然后将模块下载下来放入,具体可见
使用 准备数据
上只给出了linux下准备的代码
$ DATA_DIR=/tmp/data/flowers
$ python download_and_convert_data.py \--dataset_name=flowers \--dataset_dir="${DATA_DIR}"
SET DATA_DIR=./tmp/flowers
SET PATHON_HOME=D:/Python/Python37
SET SLIM_PATH=%PATHON_HOME%/Lib/site-packages/tensorflow/models/research/slim
python %SLIM_PATH%/download_and_convert_data.py^--dataset_name=flowers^--dataset_dir="${DATA_DIR}"
打开cmd,进入当前目录,输入刚刚新建的文件名,回车运行即可
如果下载太慢,可以直接访问,下载后解压到’’./tmp/’即可。
训练
上给的案例也是Linux下的,下不能用
DATASET_DIR = / tmp / imagenet
TRAIN_DIR = / tmp / train_logs
python train_image_classifier.py \ --train_dir = $ {TRAIN_DIR} \ --dataset_name = imagenet \ --dataset_split_name = train \ --dataset_dir = $ {DATASET_DIR} \ --model_name = inception_v3
下新建一个文本文档,命名为train.cmd,需要修改
SET DATASET_DIR=./tmp/flowers
SET TRAIN_DIR=./tmp/train_logs
SET PATHON_HOME=D:/Python/Python37
SET SLIM_PATH=%PATHON_HOME%/Lib/site-packages/tensorflow/models/research/slim
python %SLIM_PATH%/train_image_classifier.py --train_dir=%TRAIN_DIR%^--dataset_dir=%DATASET_DIR%^--dataset_name=flowers^--dataset_split_name=train^--model_name=inception_v3
然后在cmd可以运行,gpu不会出错,但是cpu训练会报错
(see above for ): a for //////: node ////// ( at D:\\\Lib\site-\\\\slim\nets\.py:104) was to /:GPU:0 but are [ /job:/:0/task:0/:CPU:0 ]. Make sure the to a valid . The to be a GPU, but CUDA is not . [[node ////// ( at D:\\\Lib\site-\\\\slim\nets\.py:104) ]]
需要将er.py文件44行的cpu改为True
之后就能成功运行了,Ctrl+C终止运行
然后 -- ./tmp/可以在webUI界面查看训练的情况
微调
先选择微调的模型并下载解压,下面演示的是的。
linux的命令
$ CHECKPOINT_DIR = / tmp / checkpoints
$ mkdir $ {CHECKPOINT_DIR}
$ wget http://download.tensorflow.org/models/inception_v3_2016_08_28.tar.gz
$ tar -xvf inception_v3_2016_08_28.tar.gz
$ mv inception_v3.ckpt $ {CHECKPOINT_DIR}
$ rm inception_v3_2016_08_28.tar.gz
则在’./tmp’下新建一个文件夹,将想要微调的模型放进去。既可以是上下载的,也可以是自己刚刚训练的。
上给出的也是linux下的命令
$ DATASET_DIR=/tmp/flowers
$ TRAIN_DIR=/tmp/flowers-models/inception_v3
$ CHECKPOINT_PATH=/tmp/my_checkpoints/inception_v3.ckpt
$ python train_image_classifier.py \--train_dir=${TRAIN_DIR} \--dataset_dir=${DATASET_DIR} \--dataset_name=flowers \--dataset_split_name=train \--model_name=inception_v3 \--checkpoint_path=${CHECKPOINT_PATH} \--checkpoint_exclude_scopes=InceptionV3/Logits,InceptionV3/AuxLogits \--trainable_scopes=InceptionV3/Logits,InceptionV3/AuxLogits
下新建文件.cmd,写入如下代码
SET DATASET_DIR=./tmp/flowers
SET TRAIN_DIR=./tmp/flowers-models/inception_v3
SET CHECKPOINT_PATH=./tmp/my_checkpoints/inception_v3.ckpt
SET PATHON_HOME=D:/Python/Python37
SET SLIM_PATH=%PATHON_HOME%/Lib/site-packages/tensorflow/models/research/slim
python %SLIM_PATH%/train_image_classifier.py^--train_dir=%TRAIN_DIR%^--dataset_dir=%DATASET_DIR%^--dataset_name=flowers^--dataset_split_name=train^--model_name=inception_v3^--checkpoint_path=%CHECKPOINT_PATH%^--checkpoint_exclude_scopes=InceptionV3/Logits,InceptionV3/AuxLogits^--trainable_scopes=InceptionV3/Logits,InceptionV3/AuxLogits
记得修改自己的,要指向自己想微调的模型,在cmd中运行即可
评估
linux下的命令
CHECKPOINT_FILE = ${CHECKPOINT_DIR}/inception_v3.ckpt # Example
$ python eval_image_classifier.py \--alsologtostderr \--checkpoint_path=${CHECKPOINT_FILE} \--dataset_dir=${DATASET_DIR} \--dataset_name=imagenet \--dataset_split_name=validation \--model_name=inception_v3
下,新建一个.cmd文件,需要将和和自己的文件对应上。
SET DATASET_DIR=./tmp/flowers
SET CHECKPOINT_DIR=./tmp/flowers-models/inception_v3
SET CHECKPOINT_FILE=%CHECKPOINT_DIR%/model.ckpt-0
SET PATHON_HOME=D:/Python/Python37
SET SLIM_PATH=%PATHON_HOME%/Lib/site-packages/tensorflow/models/research/slim
python %SLIM_PATH%/eval_image_classifier.py^--alsologtostderr^--checkpoint_path=%CHECKPOINT_FILE%^--dataset_dir=%DATASET_DIR%^--dataset_name=flowers^--dataset_split_name=validation^--model_name=inception_v3
接着在cmd中运行,可以看到评估的结果
导出
linux下的
$ python export_inference_graph.py \--alsologtostderr \--model_name=inception_v3 \--output_file=/tmp/inception_v3_inf_graph.pb$ python export_inference_graph.py \--alsologtostderr \--model_name=mobilenet_v1 \--image_size=224 \--output_file=/tmp/mobilenet_v1_224.pb
下的,新建一个.cmd文件
SET PATHON_HOME=D:/Python/Python37
SET SLIM_PATH=%PATHON_HOME%/Lib/site-packages/tensorflow/models/research/slim
python %SLIM_PATH%/export_inference_graph.py^--alsologtostderr^--model_name=inception_v3^--output_file=/tmp/inception_v3_inf_graph.pbpython %SLIM_PATH%/export_inference_graph.py^--alsologtostderr^--model_name=mobilenet_v1^--image_size=224^--output_file=/tmp/mobilenet_v1_224.pb
在cmd运行时,阻塞的话,回车一下能获得结果
tmp下可以看到生成了两个pb文件