TensorFlow Object Detection API 技术手册(6)——模型文件配置及模型训练
这一节我们开始准备模型配置文件
(一)创建模型目录
在任意位置创建新文件夹:(/model_raccoon_detection),并在该目录下创建以下新文件夹:
命 名 | 作 用 |
---|---|
training | 存放训练配置文件 |
data(内含train和test两个文件夹) | 存放训练数据和测试数据 |
result | 存放训练结果 |
saved_model | 存放训练好的模型 |
创建完了文件夹,将之前做好的数据文件存储在(/data/train)和(/data/test)下,因为我们只做了一个训练文件,所以将其重命名暂时当做测试文件,然后我们开始准备训练文件。
(二)准备预训练模型
到GitHub/TensorFlow/model下载各种预训练模型,表中列出了模型的速度、平均精度均值等数据,读者可自行选择,此处我们选择ssd_mobilenet_v1_coco模型,下载完成后解压到(/model_raccoon_detection)并重命名为(/pre_model),如下图所示:
(三)创建标签分类的配置文件
在(/model_raccoon_detection/training/)新建txt文件,键入以下内容:
item{
id: 1 # id从1开始编号
name: 'raccoon'
}
有几类后面就要补写几个item,此处只用写入1类
item{
id: n
name: ‘***’
}
重命名为label_map.pbtxt,如图所示:
(四)配置管道配置文件
在(/object_detection/samples/configs/)下找到ssd_mobilenet_v1_coco.config文件:
根据下载的预训练模型的不同,就要选择不同的config文件,接下来对该文件进行修改:
首先添加ckpt文件的位置(建议填写绝对路径):
添加测试数据的位置以及标签配置文件的位置(建议填写绝对路径):
对批处理数、迭代次数等其他参数进行修改:
还可以对学习率等其他参数进行详细修改,在此不再赘述,注意batch_size等参数的设定要和训练数据的数量等相匹配
(五)添加model_main.py等文件
在(/research/object_detection)下找到model_main.py、export_inference_graph.py文件,将其复制到(/model_raccoon_detection/)目录下。打开model_train.py文件,加入下列语句以调用GPU:
在CMD中输入以下命令:
>>>nvida-smi
以查看GPU编号,无法使用该命令时需要在环境变量path中添加(C:\Program Files\NVIDIA Corporation\NVSMI):
(六)查看工程目录
使用PyCharm打开(/model_raccoon_detection/),如下图所示:
(七)开始训练
打开Anaconda Prompt,输入以下命令(注意相对路径和绝对路径):
>>>python /model_raccoon_detection/model_train.py
--train_dir=/model_raccoon_detection/result
--pipeline_config_path=/model_raccoon_detection/training/ssd_mobilenet_v1_coco.config
等待文件运行,出现下列显示:
可以按Ctrl+C随时终止训练。
(八)保存训练的模型
打开Anaconda Prompt,输入以下命令(注意相对路径和绝对路径):
>>>python export_inference_graph.py
--input_type=image_tensor
--pipeline_config_path=/model_raccoon_detection/training/ssd_mobilenet_v1_coco.config
--trained_checkpoint_prefix=/model_raccoon_detection/result/model.ckpt-200(此处的编号与你的训练次数相同)
--output_directory=/model_raccoon_detection/saved_model
显示:
可以看到文件夹下生成了文件:
(九)使用tensorboard查看训练情况:
打开Anaconda Prompt,输入以下命令(注意相对路径和绝对路径):
>>>/存放位置/tensorboard.exe --logdir=/model_raccoon_detection/result
(十)使用训练好的模型来预测单张图像
打开TensorFlow Object Detection API所带的DEMO,见上文,对代码标红位置做修改使其指向训练好的模型frozen_inference_graph.pb:
输入你要预测的图片的位置,注意图像的命名和循环次数
点击Run All,出现以下图像: