![深度学习图像识别技术:基于TensorFlow Object Detection API和OpenVINO? 工具套件](https://wfqqreader-1252317822.image.myqcloud.com/cover/997/38485997/b_38485997.jpg)
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所示。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/81_01.jpg?sign=1739497784-Az7v69bmhl1GxDBOfJrRRL3ZlqHLbwXO-0-1ada06b1eea0c5bba49ff70d89b72877)
图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所示。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/82_01.jpg?sign=1739497784-9y6eRDU6vt8qBLZ6p0RZ2jaUhdhGn4oC-0-7fa9a1234388828f0122dad770c97b16)
图3-15 猫狗项目文件夹结构
3.4.3 标注图片
标注图片的具体步骤如下。
第一步,激活tf_gpu虚拟环境,运行命令labelimg,启动LabelImg,如图3-16所示。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/82_02.jpg?sign=1739497784-sEYfLBvfZuylAjGmvH1uG61x8PJkcg9r-0-fb6eca7842b79eba2eb67d7a674b6646)
图3-16 启动LabelImg
第二步,选择训练图片所在文件夹。单击Open Dir按钮,选择训练图片所在的文件夹,本书选择tf_train\workspaces\cats_dogs\images\train文件夹,如图3-17所示。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/83_01.jpg?sign=1739497784-z52SCP7NiVde0czT896JbYbT3Jz0q27K-0-4e3d2f550fd7e123b73e910eb63a713f)
图3-17 打开图片文件夹
第三步,选择存放标注文件的文件夹。单击Change Save Dir按钮,选择存放标注文件*.xml的文件夹,本书选择tf_train\workspaces\cats_dogs\images\train文件夹,如图3-18所示。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/83_02.jpg?sign=1739497784-cZ2BHsEVWHY4F7OcGZFrPzNf1Ks3uLBX-0-50b1a29298f6ba45192765f0b9e62026)
图3-18 选择存放标注*.xml的文件夹
第四步,标注图片。首先,单击Create RectBox按钮或者按〈W〉键,启动矩形框标注功能;然后,框选目标物体,并在弹出的窗口输入对应的标签名称“dog”,最后单击OK按钮完成本张图片的标注工作,如图3-19所示。
本书推荐使用快捷键“W键”启动矩形框标注功能。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/84_01.jpg?sign=1739497784-7vU5K5iVGOcGyk0eidijirRhDUqvaz2T-0-3a6582b20e0a001045a0143e83c423c0)
图3-19 标注图片
第五步,保存标注。单击Save按钮保存标注信息到文件,如图3-20所示。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/84_02.jpg?sign=1739497784-2Kmy0BdCezcCE48QRN0MaG0Y20w0gToU-0-69dc67ceceadf9aabc5be23491726090)
图3-20 保存标注
第六步,调出下一张图片。单击Next Image按钮调出下一张未标注的图片,如图3-21所示。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/85_01.jpg?sign=1739497784-HsDeuNKkxUAGHWN7qZtNyi65Kkxv9eq6-0-6072b719f9efc788bcb240bc905dc5e3)
图3-21 调出下一张图片
最后,不断重复第四~六步,直到完成所有图片的标注工作。典型的图像标注流程如图3-22所示。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/85_02.jpg?sign=1739497784-qHw1UXrPZTCE4iuRgxuOXg2hQ4HowG9p-0-35a790c2216731e4e6488ed1a4de4194)
图3-22 标注图像的典型流程
3.4.4 标注文件(*.xml)简介
标注工作完毕后,在tf_train\workspaces\cats_dogs\images\train文件夹里面的每个.jpg文件旁边都有一个与之名字对应的.xml文件,如图3-23所示。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/86_01.jpg?sign=1739497784-KqhLI1CHqXjrjVPxzf89oVRlL3i4Mkjz-0-897ac987d37a157f290ea495d40b5e02)
图3-23 标注文件
用文本编辑器打开任意一个xml文件,如dog99.xml,可以看到里面以xml格式记录着标记信息,如图3-24所示。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/86_02.jpg?sign=1739497784-Epn4P8ec2h0PaoRPEev02ZLhQjDMD93e-0-62d9c3d8c1ff9765034e8ba60368db6a)
图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所示。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/87_01.jpg?sign=1739497784-XlXBoMaSPliajAkax0yuYjNUJCUVhroL-0-979d61c9a301c71cef072350c9fd164c)
图3-25 复制标注数据到eval文件夹
3.4.6 复制数据到test文件夹
在训练过程中,不会使用test文件夹中的数据。test文件夹中的数据是在模型训练好之后,推理(Inference)计算中使用的。请从猫狗数据集的test文件夹中复制20张图片到images\test文件夹,以备推理计算之用,如图3-26所示。
![](https://epubservercos.yuewen.com/31903E/20255828801879906/epubprivate/OEBPS/Images/87_02.jpg?sign=1739497784-gQhSgVkOiS2f8NyTDzWniXbRt44aQieh-0-b1f832bce47c24aaa9e6458dd65cc8e8)
图3-26 准备test数据集