深度学习图像识别技术:基于TensorFlow Object Detection API和OpenVINO? 工具套件
上QQ阅读APP看书,第一时间看更新

3.4 使用LabelImg标注图片

3.4.1 LabelImg简介

标注图片需要工具,LabelImg就是一个开源免费且轻量级的支持PASCAL VOC和YOLO标注规范的标注工具,它用矩形框的方式标注物体。

PASCAL(Pattern Analysis, Statistical Modelling and Computational Learning)即模式分析、统计建模和计算学习,是一个由欧盟资助的组织。PASCAL VOC ( Visual Object Classes),是由PASCAL组织的世界级的计算机视觉挑战赛,任务是在PASCAL数据集上做物体的分类、识别等。

PASCAL数据集有一套图片标注和模型评估规范,已成为PASCAL VOC标准。TensorFlow Object Detection API框架默认使用PASCAL VOC标准的标注规范。

3.4.2 建立猫狗项目文件夹结构

在标注物体前,首先建立猫狗项目文件夹目录结构,如图3-14所示。

图3-14 创建猫狗项目文件夹

在workspaces(工作区)文件夹下,创建一个cats_dogs的文件夹,意思是该项目是用于识别猫和狗的。在cats_dogs文件夹下,依次新建如下文件夹。

● annotations(标注)文件夹用于存放*.csv文件、标签映射文件*.pbtxt和对应的TensorFlow*.tfrecord文件,这些文件存放着图像的标注信息。

● images(图像)文件夹存放着训练图片和测试图片,以及对应的*.xml LabelImg标注文件。

请把下载的猫狗训练(train)数据集中的cat.0.jpg~cat.99.jpg,dog.0.jpg~dog.99.jpg,共200张图片复制到images\train文件夹。

请把下载的猫狗测试(test)数据集中的0.jpg~20.jpg,共20张图片复制到images\test文件夹。

将train文件夹中的图片标注完毕后,复制1/10的图片连同标注文件到images\eval文件夹,供训练的评估(Evaluation)操作使用。

● pre_trained_model文件夹存放预训练模型,请把下载的ssd_inception_v2_coco文件夹及其全部模型文件复制到该文件夹下。

● trained_frozen_models文件夹保存训练完毕的冻结图模型文件(*.pb)。

● training文件夹用于存放训练配置文件*.config,以及训练过程中产生的文件,如图3-15所示。

图3-15 猫狗项目文件夹结构

3.4.3 标注图片

标注图片的具体步骤如下。

第一步,激活tf_gpu虚拟环境,运行命令labelimg,启动LabelImg,如图3-16所示。

图3-16 启动LabelImg

第二步,选择训练图片所在文件夹。单击Open Dir按钮,选择训练图片所在的文件夹,本书选择tf_train\workspaces\cats_dogs\images\train文件夹,如图3-17所示。

图3-17 打开图片文件夹

第三步,选择存放标注文件的文件夹。单击Change Save Dir按钮,选择存放标注文件*.xml的文件夹,本书选择tf_train\workspaces\cats_dogs\images\train文件夹,如图3-18所示。

图3-18 选择存放标注*.xml的文件夹

第四步,标注图片。首先,单击Create RectBox按钮或者按〈W〉键,启动矩形框标注功能;然后,框选目标物体,并在弹出的窗口输入对应的标签名称“dog”,最后单击OK按钮完成本张图片的标注工作,如图3-19所示。

本书推荐使用快捷键“W键”启动矩形框标注功能。

图3-19 标注图片

第五步,保存标注。单击Save按钮保存标注信息到文件,如图3-20所示。

图3-20 保存标注

第六步,调出下一张图片。单击Next Image按钮调出下一张未标注的图片,如图3-21所示。

图3-21 调出下一张图片

最后,不断重复第四~六步,直到完成所有图片的标注工作。典型的图像标注流程如图3-22所示。

图3-22 标注图像的典型流程

3.4.4 标注文件(*.xml)简介

标注工作完毕后,在tf_train\workspaces\cats_dogs\images\train文件夹里面的每个.jpg文件旁边都有一个与之名字对应的.xml文件,如图3-23所示。

图3-23 标注文件

用文本编辑器打开任意一个xml文件,如dog99.xml,可以看到里面以xml格式记录着标记信息,如图3-24所示。

图3-24 标注记录信息

这些标签信息将会作为生成TensorFlow*.tfrecord文件的输入。

3.4.5 复制10%的数据到eval文件夹

一般来说,深度学习的数据集分为训练(train)、评估(eval)和测试(test)。训练数据与评估数据都在训练过程中使用,建议比例为train∶eval=8∶2,这是一个经验数值,也可以是9∶1或7∶3或其他。鉴于本书案例训练数据不多,选择的比例是9∶1,即从train文件夹中标记好的训练数据里面,复制1/10的数据到eval文件夹,如图3-25所示。

图3-25 复制标注数据到eval文件夹

3.4.6 复制数据到test文件夹

在训练过程中,不会使用test文件夹中的数据。test文件夹中的数据是在模型训练好之后,推理(Inference)计算中使用的。请从猫狗数据集的test文件夹中复制20张图片到images\test文件夹,以备推理计算之用,如图3-26所示。

图3-26 准备test数据集