模型训练
转换后的数据将被用于训练模型,以提升模型进行物体识别的能力。
我们提供了可以在AI Train平台上训练目标检测算法的基础镜像:uhub.ucloud.cn/uai_demo/tf-objdetect-train-gpu-tf16:latest,可以直接用该镜像进行训练(如果已申请AutoAI云主机,可以通过uhub.service.ucloud.cn/uai_demo/tf-objdetect-train-gpu-tf16:latest下载该镜像)
训练前准备
我们基于faster_rcnn_resnet初始模型,用UFile中已生成的record数据训练识别模型。复制以下链接至浏览器下载初始模型:
storage.googleapis.com/download.tensorflow.org/models/object_detection/faster_rcnn_resnet101_coco_11_06_2017.tar.gz
此模型为faster_rcnn_resnet101,针对目标识别进行过预训练,因此用于初始模型效率较高。将解压后的模型文件:
model.ckpt.data-00000-of-00001; model.ckpt.meta; model.ckpt.index
放入UFile中tf-record文件的同一路径下,本例中为: uai/object-prep-output/
模型训练需要配置文件设定配置。下载所用配置文件:
宠物模型训练配置文件, faster_rcnn_resnet101.config
重命名为faster_rcnn_resnet101.config并保存。此配置文件中有几处需要修改以适配我们的文件命名,否则无法正确读取图片数据:
line 122: input_path: "PATH_TO_BE_CONFIGURED/pet_train.record-?????-of-00010" -> input_path: "PATH_TO_BE_CONFIGURED/obj_train.record*" line 124: label_map_path: "PATH_TO_BE_CONFIGURED/pet_label_map.pbtxt" -> label_map_path: "PATH_TO_BE_CONFIGURED/label_map.pbtxt" line 134: input_path: "PATH_TO_BE_CONFIGURED/obj_val.record-?????-of-00010" -> input_path: "PATH_TO_BE_CONFIGURED/obj_val.record*" line 136: label_map_path: "PATH_TO_BE_CONFIGURED/pet_label_map.pbtxt" -> label_map_path: "PATH_TO_BE_CONFIGURED/label_map.pbtxt"
如果使用自定义图片数据集,需将第9行的右边常数替换为自定义图片集中物体种类的数量:
num_classes = 37 -> 自定义种类数量
物体识别的训练轮次默认为200000轮,足够达到较准确的预测结果。你也可以自行调整训练轮数比对训练效果,可将第112行自行修改:
num_steps = 200000 -> 自定义训练轮数
调整好参数后,将此文件连同类别标签文件label_map.pbtxt(见:数据准备)保存在UFile同一路径下。此时UFile中已准备好的训练数据有:
uai/object-prep-output/[路径] uai/object-prep-output/label_map.pbtxt uai/object-prep-output/obj_train.record-00000-of-00010 uai/object-prep-output/obj_train.record-00001-of-00010 ... uai/object-prep-output/obj_train.record-00009-of-00010 uai/object-prep-output/obj_val.record-00000-of-00010 uai/object-prep-output/obj_val.record-00001-of-00010 ... uai/object-prep-output/obj_val.record-00009-of-00010 uai/object-prep-output/model.ckpt.data-00000-of-00001 uai/object-prep-output/model.ckpt.meta; uai/object-prep-output/model.ckpt.index uai/object-prep-output/faster_rcnn_resnet101.config
检查是否已包含tf-record文件(obj_train.record*, obj_val.record*),类别标签文件(label_map.pbtxt),初始模型文件(model.ckpt.*),以及模型配置文件(faster_rcnn_resnet101.config),并完全与以上命名一致,否则训练任务无法启动。
使用AI Train平台训练
数据和模型已准备好进行训练。创建训练任务时,请确认数据输入源为保存数据的UFile根目录(此处为uai/object-prep-output/,即数据转换一节中记录的数据输出源),并确认模型、数据和配置文件均在此根目录下。记录数据输出源(此处为uai/object-train-output/)以进行在线服务。
- 获取uhub.ucloud.cn/uai_demo/tf-objdetect-train-gpu-tf16:latest镜像,并重新docker tag成你自己uhub镜像库中的镜像,例如uhub.ucloud.cn/
/tf-objdetect-train-gpu-tf16:latest, 并提交至uhub。 - 进入UAI-Train控制台,创建新训练任务。
- 填写以下信息:
- 训练任务名称:object-detect-train
- 节点类型:单点式单卡
- 公私钥:你的AutoAI账号公私钥
- 代码镜像路径:tf-objdetect-train-gpu-tf16:latest
- 数据输入源:UFile:
/uai/object-prep-output/ - 数据输出源:UFile:
/uai/object-train-output/
- 训练启动命令:/data/object_detection/train.py --pipeline_config_path /data/data/faster_rcnn_resnet101.config --train_dir /data/output
- 点击确定,等待训练完成。
训练完成后,可在UFile输出目录(此处为uai/object-train-output/)找到训练完毕的模型:
uai/object-train-output/[路径] uai/object-train-output/model.ckpt-200000.data-00000-of-00001 uai/object-train-output/model.ckpt-200000.meta uai/object-train-output/model.ckpt-200000.index uai/object-train-output/pipeline.config uai/object-train-output/checkpoint ...
这些为训练后的模型文件。更多关于在线训练的信息参阅: