2、下载预训练模型并进行迁移学习

1、前言

1.1 本文章约定

  • 操作 :表示你需要跟着说明进行相应的操作。
  • 输入命令 xxxxxx:表示你需要在控制台键入命令。

1.2 开始条件

本教程需要先搭建深度学习目标检测开发环境,如果还没有搭建好环境,请先看:
1、搭建深度学习图像识别开发环境 https://blog.youkuaiyun.com/lemon4869/article/details/106818808

本教程需要的文件,请提交下载好,再开始动手实践:
链接:https://pan.baidu.com/s/1iBvOLAUamBTd70xRf5m2Ag
提取码:5bt7
在这里插入图片描述

1.3 视频教程

视频教程请看:
https://www.bilibili.com/video/BV13Z4y1p7di/

1.4 整个流程概览

整个训练模型的流程为:
在这里插入图片描述

2、最终成果展示

一张图片输出一个窗口,并用矩形框框出识别到的物体,在合适位置用文字标出该类别及置信度。
在这里插入图片描述

3、建立项目文件夹结构

操作 按下面的目录结构创建文件夹,其中 cats_dogs 目录及子目录需要你自己手动创建。

-tf_train
	-addons	(COCO API 及标注软件)
	-models	(TensorFlow Obejct Detection API 所有)
	-scripts	(一些脚本)
		-preprocssing	(存放预处理的脚本)
	-workspaces	(工作目录)
		-cats_dogs	(项目目录)
			-annotations	(存放图像的标注文件)
			-images	(存放图片)
				-train	(训练图片)
				-eval	(评估图片)
				-test	(测试图片)
			-pre_trained_model	(存放预训练模型)
			-trianed_frozen_models	(存放冻结图)
			-training	(存放训练过程文件)

4、标注图片

4.1 修改 predefined_classes.txt 文件

操作 打开 tf_train\addons\windows_v1.8.0\data\predefined_classes.txt 文件,把里面预定义标签改为 cat 和 dog。
在这里插入图片描述

4.2 拷贝图片到 train 目录

操作 解压 images.zip ,把 train 目录下的图片及标注文件全部复制到 tf_train\workspaces\cats_dogs\images\train 目录下。
在这里插入图片描述

4.3 使用 LabelImg 标注图片

操作 打开 tf_train\addons\windows_v1.8.0\labelImg.exe 程序,打开训练图片所在目录,然后进行标注。(我们复制图片时也把标注文件给复制过来了,所以打开目录就已经有标注了。)
在这里插入图片描述

4.4 剪切 train 文件夹里 10% 的图片及标注到 eval 目录

操作 剪切 train 文件夹里 10% 的图片及标注到 eval 目录,这部分图片用来评估模型。猫、狗的图片原本各 100 张,但是我们抽取 10%,也就是各 10 张,用来评估模型。
在这里插入图片描述

4.5 拷贝图片到 test 目录

操作 之前解压 images.zip 出来有 test 目录,把 test 目录里面的图片复制到 tf_train\workspaces\cats_dogs\images\test 目录下。test 目录里的照片用来测试模型。

5、将 xml 标注文件转化为 tfrecord 文件

首先将手工标注得到的 *.xml 标注文件转换成一个 *.csv 文件,然后再将得到的 *.csv 文件转换成 *.tfrecord 文件。
在这里插入图片描述

  • *.xml:单个图片的标注文件。
  • *.csv:包含所有图片标注信息的文件。
  • *.tfrecord:包含所有图片标注信息的文件,并且是二进制文件,TensorFlow 内核很多数据处理机制都是基于 TFRecord 文件做的优化。

5.1 创建标签映射文件 pbtxt

操作 新建 tf_train\workspaces\cats_dogs\annotations\label_map.pbtxt 文件,然后写入以下内容:

item {
	id: 1
	name: 'cat'
}

item {
	id: 2
	name: 'dog'
}

5.2 将 xml 转换为 csv 文件

操作 将下载的两个脚本文件 xml_to_csv.py 和 generate_tfrecord.py 拷贝到 tf_train\scripts\preprocessing 目录下。

操作打开处于 tf_gpu 环境的控制台。

输入命令 注意:两个脚本都依赖与 pandas 库,所以需要先安装 pandas 库: conda install pandas

输入命令进入 tf_train\scripts\preprocessing 目录,运行:
先将 train 用的 *.xml 标记文件转换成 csv,输入命令:
python xml_to_csv.py -i=D:\tf-train\workspaces\cats_dogs\images\train -o=D:\tf_train\workspaces\cats_dogs\annotations\train_labels.csv

输入命令 其次是 eval 文件夹的:
python xml_to_csv.py -i=D:\tf-train\workspaces\cats_dogs\images\eval -o=D:\tf_train\workspaces\cats_dogs\annotations\eval_labels.csv

5.3 将 csv 文件转化为 tfrecord 文件

输入命令 先将 train 用的 csv 标记文件转换成 tfrecord,输入命令:
python generate_tfrecord.py --label0=cat --label=dog --csv_input=D:\tf-train\workspaces\cats_dogs\annotations\train_labels.csv --output_path=D:\tf-train\workspaces\cats_dogs\annotations\train.tfrecord --img_path=D:\tf-train\workspaces\cats_dogs\images\train

输入命令 其次是 eval 用的,输入命令:
python generate_tfrecord.py --label0=cat --label=dog --csv_input=D:\tf-train\workspaces\cats_dogs\annotations\eval_labels.csv --output_path=D:\tf-train\workspaces\cats_dogs\annotations\eval.tfrecord --img_path=D:\tf-train\workspaces\cats_dogs\images\eval

最终 annotations 目录下应该有 5 个文件:

  • label_map.pbtxt
  • train_labels.csv
  • train.trfrecord
  • eval_labels.csv
  • eval.tfrecord

如下图所示:
在这里插入图片描述

6、修改预训练模型的配置文件

操作 首先复制 tf_train\models\reserach\object_detection\samples\configs\ssd_inception_v2_coco.config 到 tf_train\workspaces\cats_dogs\training 目录下,然后进行修改:

第 9 行改为:
num_classes: 2

第 136 行改为:
batch_size: 12

第 151 行改为:
fine_tune_checkpoint: "E:/1-tf_train/workspaces/cats_dogs/pre_trained_model/ssd_inception_v2_coco_2018_01_28/model.ckpt"

第 157 行改为:
num_steps: 200

第 170 行改为:
input_path: "E:/1-tf_train/workspaces/cats_dogs/annotations/train.tfrecord"

第 172 行改为:
label_map_path: "E:/1-tf_train/workspaces/cats_dogs/annotations/label_map.pbtxt"

第 176 行改为:
num_examples: 20

第 179 行改为:
max_evals: 1

第 184 行改为:
input_path: "E:/1-tf_train/workspaces/cats_dogs/annotations/eval.tfrecord"

第 186 行改为:
label_map_path: "E:/1-tf_train/workspaces/cats_dogs/annotations/label_map.pbtxt"

7、训练模型

操作 首先打开环境为 tf_gpu 的控制台,然后进入 cats_dogs 目录。下面的命令都在 cats_dogs 目录下进行操作。

7.1 解压预训练模型

操作 解压 ssd_inception_v2_coco_2018_01_28.tar.gz 文件到 tf_train\workspaces\cats_dogs\pre_trained_model 目录下。
在这里插入图片描述

7.2 开始训练

操作 复制 tf_train\models\research_detection\legacy\train.py 到 tf_train\worlspaces\cats_dogs 目录下,然后打开改文件,添加以下代码在 main 函数最前面:

# GPU 按需分配
config = tf.compat.v1.ConfigProto(allow_soft_placement=True
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值