提交 a51ca6e2 编写于 作者: W wizardforcel

2021-01-02 23:41:26

上级 02579467
......@@ -32,7 +32,7 @@
“第 10 章”,“使用 R-CNN,SSD 和 R-FCN”进行对象检测,标志着**端对端**的开始 ](**E2E**)对象检测框架,方法是为数据摄取和训练流水线建立坚实的基础,然后进行模型开发。 在这里,您将深入了解各种对象检测模型,例如 **R-CNN****单发检测器****SSD****基于区域的全卷积网络****R-FCN**)和**遮罩 R-CNN** ,并使用 Google Cloud 和 Google Colab 笔记本执行动手练习。 我们还将针对如何训练自己的自定义图像以使用 TensorFlow 对象检测 API 开发对象检测模型进行详细的练习。 我们将在本章结束时对各种对象跟踪方法进行深入概述,并使用 Google Colab 笔记本进行动手练习。
“第 11 章”,“通过 CPU / GPU 优化在边缘设备上进行深度学习”,讨论如何采用生成的模型并将其部署在边缘设备和生产系统上。 这将导致完整的端到端 TensorFlow 对象检测模型实现。 特别是,使用 TensorFlow Lite 和 **Intel Open** **视觉推理和神经网络** **优化****VINO**)架构,并部署到 Raspberry Pi,Android 和 iPhone。 尽管本章主要关注 Raspberry Pi,Android 和 iPhone 上的对象检测,但是所讨论的方法可以扩展到图像分类,样式转换和所考虑的任何边缘设备的动作识别。
“第 11 章”,“通过 CPU/GPU 优化在边缘设备上进行深度学习”,讨论如何采用生成的模型并将其部署在边缘设备和生产系统上。 这将导致完整的端到端 TensorFlow 对象检测模型实现。 特别是,使用 TensorFlow Lite 和 **Intel Open** **视觉推理和神经网络** **优化****VINO**)架构,并部署到 Raspberry Pi,Android 和 iPhone。 尽管本章主要关注 Raspberry Pi,Android 和 iPhone 上的对象检测,但是所讨论的方法可以扩展到图像分类,样式转换和所考虑的任何边缘设备的动作识别。
“第 12 章”,“计算机视觉云计算平台”讨论了如何在 **Google Cloud Platform****GCP**), **Amazon Web Services****AWS**)和 **Microsoft Azure** 云平台。 您将学习如何准备数据,将数据上传到云数据存储并开始监视培训。 您还将学习如何将图像或图像矢量发送到云平台进行分析并获得 JSON 响应。 本章讨论单个应用程序以及如何在计算引擎上运行分布式 TensorFlow。 培训结束后,本章将讨论如何评估模型并将其集成到应用程序中以进行大规模操作。
......@@ -49,9 +49,9 @@
大多数代码是在 Jupyter Notebook 环境中编写的,因此请确保已下载 Anaconda。 您还需要下载 TensorFlow 2.0 –为此,请按照“第 1 章”,“计算机视觉和 TensorFlow 基础知识”中的说明进行操作。
使用 Google Colab 进行了许多对象检测训练– “第 10 章”,“使用 R-CNN,SSD 和 R-FCN”进行对象检测,以及“第 11 章”“具有 CPU / GPU 优化功能的边缘深度学习”提供了有关如何使用 Google Colab 的说明。
使用 Google Colab 进行了许多对象检测训练– “第 10 章”,“使用 R-CNN,SSD 和 R-FCN”进行对象检测,以及“第 11 章”“具有 CPU/GPU 优化功能的边缘深度学习”提供了有关如何使用 Google Colab 的说明。
如果您要将计算机视觉代码部署到边缘设备,并且正在考虑购买什么,请访问“第 11 章”,“具有 CPU / GPU 优化功能的边缘设备深度学习”, 各种设备的详细分析。
如果您要将计算机视觉代码部署到边缘设备,并且正在考虑购买什么,请访问“第 11 章”,“具有 CPU/GPU 优化功能的边缘设备深度学习”, 各种设备的详细分析。
该书在很大程度上依赖于终端的用法-在阅读“第 7 章”,“使用 YOLO 进行对象检测”之前,请确保您已经对此有了基本的了解。
......
......@@ -528,7 +528,7 @@ INFO:tensorflow:Maybe overwriting train_steps: 1000
Loss for final step: 0.06650969.
```
请注意前面显示的输出。 根据您的 CPU / GPU 功能,执行此步骤将花费不同的时间。 在前面的训练输出中要注意的最重要的事情是训练期间的准确率和召回率值。
请注意前面显示的输出。 根据您的 CPU/GPU 功能,执行此步骤将花费不同的时间。 在前面的训练输出中要注意的最重要的事情是训练期间的准确率和召回率值。
# 运行推理测试
......
# 通过 CPU / GPU 优化在边缘设备上进行深度学习
# 通过 CPU/GPU 优化在边缘设备上进行深度学习
到目前为止,我们已经学习了如何通过预处理数据,训练模型以及使用 Python PC 环境生成推论来开发深度学习模型。
......@@ -649,7 +649,7 @@ model.save('path_to_my_model.h5')
# 模型优化
可以通过训练后量化来执行模型优化(也称为量化),以提高 CPU / GPU 性能,而不会牺牲准确率。 可以使用以下方法执行优化过程:
可以通过训练后量化来执行模型优化(也称为量化),以提高 CPU/GPU 性能,而不会牺牲准确率。 可以使用以下方法执行优化过程:
* 浮点至 8 位精度(针对大小进行优化)
* 使用微控制器的整数输入和输出进行完整的整数量化
......
......@@ -63,7 +63,7 @@
# 使用 Ubuntu Terminal 设置存储桶
此过程涉及到设置 Google Cloud SDK,然后将 Google Cloud 项目和存储桶链接到您的终端,以便您可以在那里上传文件。 请记住,培训将由终端命令启动,因此,即使您使用前面的 API 进行了设置,您仍然需要执行以下部分中显示的步骤(从*开始设置 Google Cloud SDK* 部分)以将终端链接到 GCP。
此过程涉及到设置 Google Cloud SDK,然后将 Google Cloud 项目和存储桶链接到您的终端,以便您可以在那里上传文件。 请记住,培训将由终端命令启动,因此,即使您使用前面的 API 进行了设置,您仍然需要执行以下部分中显示的步骤(从“开始设置 Google Cloud SDK”部分)以将终端链接到 GCP。
# 设置 Google Cloud SDK
......@@ -163,11 +163,11 @@ python object_detection/builders/model_builder_test.py
AttributeError: module 'tensorflow' has no attribute 'contrib'
```
即使此错误已解决,也会导致另一个与 TensorFlow 2.0 与 TensorFlow 对象检测 API 不兼容有关的错误。 因此,我们将改为描述替代路径。 另一种选择是使用[这里](https://github.com/tensorflow/models/tree/v1.13.0),类似于我们在第 10 章“使用 R-CNN,SSD 和 R-FCN 进行对象检测”,和第 11 章“在具有 CPU / GPU 优化功能的边缘设备上进行深度学习”中使用 TensorFlow 1.15 在 Google Colab 中运行它。
即使此错误已解决,也会导致另一个与 TensorFlow 2.0 与 TensorFlow 对象检测 API 不兼容有关的错误。 因此,我们将改为描述替代路径。 另一种选择是使用[这里](https://github.com/tensorflow/models/tree/v1.13.0),类似于我们在第 10 章“使用 R-CNN,SSD 和 R-FCN 进行对象检测”,和第 11 章“在具有 CPU/GPU 优化功能的边缘设备上进行深度学习”中使用 TensorFlow 1.15 在 Google Colab 中运行它。
# 准备数据集
*使用 GCP API* 部分设置存储桶中所述,我们需要填充以下`bucket: test.record``train.record``label_map.pbtxt``pipeline.config``model.ckpt*`(三个文件 )。 在下面的小节中,我们将说明如何填充这些内容。
“使用 GCP API”部分设置存储桶中所述,我们需要填充以下`bucket: test.record``train.record``label_map.pbtxt``pipeline.config``model.ckpt*`(三个文件 )。 在下面的小节中,我们将说明如何填充这些内容。
# TF 记录并标记地图数据
......@@ -175,7 +175,7 @@ TFRecord 文件是高效的 TensorFlow 文件格式,用于以单一二进制
# 资料准备
首先,从“第 10 章”,*使用 R-CNN,SSD 和 R-FCN 进行对象检测的 Google Colab 项目中复制 TFRecord 文件(即`train.record`和`test.record`)[* 和“第 11 章”,*通过 CPU / GPU 优化*在边缘设备上进行深度学习,并将其放入 PC 上的目录中。 同样,将`label_map.pbtxt`复制到同一目录中的`pbtxt`文件中。
首先,从“第 10 章”,“使用 R-CNN,SSD 和 R-FCN 进行对象检测”,和“第 11 章”,“通过 CPU/GPU 优化在边缘设备上进行深度学习”的 Google Colab 项目中复制 TFRecord 文件(即`train.record``test.record`,并将其放入 PC 上的目录中。 同样,将`label_map.pbtxt`复制到同一目录中的`pbtxt`文件中。
# 资料上传
......@@ -207,7 +207,7 @@ Copying file:///Documents/chapter12_cloud_computing/burgerfries/annotation/label
Operation completed over 1 objects/75.0 B.
```
如果您不使用终端,则只需使用 Google Cloud 存储桶中的 Upload 命令上传文件,如*中使用 GCP API* 部分的屏幕截图所示。
如果您不使用终端,则只需使用 Google Cloud 存储桶中的 Upload 命令上传文件,如“使用 GCP API”部分的屏幕截图所示。
# model.ckpt 文件
......@@ -278,7 +278,7 @@ models-master/research$ (cd slim && python setup.py sdist)
$ gcloud ml-engine jobs submit training `whoami`_object_detection_`date +%s` --job-dir=gs://${YOUR_GCS_BUCKET}/train --packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz,/tmp/pycocotools/pycocotools-2.0.tar.gz --module-name object_detection.model_tpu_main --runtime-version 1.15 --scale-tier BASIC_TPU --region us-central1 -- --model_dir=gs://${YOUR_GCS_BUCKET}/train --tpu_zone us-central1 --pipeline_config_path=gs://${YOUR_GCS_BUCKET}/data/pipeline.config
```
2. 与培训一样,在以下命令的帮助下执行验证。 该命令又很长,但是将其复制到文本编辑器,仅将`{YOUR_GCS_BUCKET}`更改为`burgerfries`(在您的情况下,如果名称不同,则将其更改为该名称)。 完成此操作后,将其粘贴到终端中,然后单击*在键盘上输入*
2. 与培训一样,在以下命令的帮助下执行验证。 该命令又很长,但是将其复制到文本编辑器,仅将`{YOUR_GCS_BUCKET}`更改为`burgerfries`(在您的情况下,如果名称不同,则将其更改为该名称)。 完成此操作后,将其粘贴到终端中,然后单击`Enter`
```py
$ gcloud ml-engine jobs submit training `whoami`_object_detection_eval_validation_`date +%s` --job-dir=gs://${YOUR_GCS_BUCKET}/train --packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz,/tmp/pycocotools/pycocotools-2.0.tar.gz --module-name object_detection.model_main --runtime-version 1.15 --scale-tier BASIC_GPU --region us-central1 -- --model_dir=gs://${YOUR_GCS_BUCKET}/train --pipeline_config_path=gs://${YOUR_GCS_BUCKET}/data/pipeline.config --checkpoint_dir=gs://${YOUR_GCS_BUCKET}/train
......@@ -396,11 +396,11 @@ Docker 是一种虚拟机,使开发人员可以将应用程序及其所有组
--add_postprocessing_op=true
```
在以下部分中,我们将描述“第 11 章”,*在具有 CPU / GPU 优化功能的边缘设备上进行深度学习*提及的`tflite`转换过程。
在以下部分中,我们将描述“第 11 章”,“在具有 CPU/GPU 优化功能的边缘设备上进行深度学习”提及的`tflite`转换过程。
# 从 Google Colab 执行导出 tflite graph.py
在“第 10 章”,*使用 R-CNN,SSD 和 R-FCN 的对象检测*和“第 11 章”,*在具有 CPU 的边缘设备上进行深度学习 / GPU 优化*,我们使用 Google Colab 将检查点转换为冻结图。 我们将在此处使用相同的方法,除了我们将导入配置,检查点和输出目录,如下所示:
在“第 10 章”,“使用 R-CNN,SSD 和 R-FCN 的对象检测”和“第 11 章”,“在具有 CPU/GPU 优化 的边缘设备上进行深度学习”,我们使用 Google Colab 将检查点转换为冻结图。 我们将在此处使用相同的方法,除了我们将导入配置,检查点和输出目录,如下所示:
```py
CONFIG_FILE = '/content/sample_data/train_pipeline.config'
......@@ -430,7 +430,7 @@ import numpy as np
![](img/771c10ac-1d93-40f9-947b-66b2d1e90f73.png)
首先创建一个项目,然后创建账单,设置 API 和存储桶,准备 TensorFlow 对象检测 API,准备和上传数据集,然后开始培训。 虚线矩形内的两个圆角矩形表示完成同一任务的两种不同方法。 训练完成后,涉及的步骤包括生成冻结图,转换`tflite`表单并部署到移动设备。 部署到移动设备的过程与“第 11 章”,*具有 CPU / GPU 优化功能的边缘设备上的深度学习*中的方法相同,因此在此不进行描述。
首先创建一个项目,然后创建账单,设置 API 和存储桶,准备 TensorFlow 对象检测 API,准备和上传数据集,然后开始培训。 虚线矩形内的两个圆角矩形表示完成同一任务的两种不同方法。 训练完成后,涉及的步骤包括生成冻结图,转换`tflite`表单并部署到移动设备。 部署到移动设备的过程与“第 11 章”,“具有 CPU/GPU 优化功能的边缘设备上的深度学习”中的方法相同,因此在此不进行描述。
# 在 AWS SageMaker 云平台中训练对象检测器
......@@ -606,7 +606,7 @@ TensorFlow 有一个名为`tf.distribute.Strategy`的 API,可在多个 GPU 之
# 应用包装
应用程序打包涉及将代码,`TFRecord`文件和模型`.confg`文件上传到 GCP,模型在训练期间可以访问。 在*在 GCP* 中训练对象检测器的部分中,我们通过使用`gcloud`打包应用程序在 GCP 中进行了训练,如下所示:
应用程序打包涉及将代码,`TFRecord`文件和模型`.confg`文件上传到 GCP,模型在训练期间可以访问。 在“在 GCP 中训练对象检测器”的部分中,我们通过使用`gcloud`打包应用程序在 GCP 中进行了训练,如下所示:
```py
$ gcloud ml-engine jobs submit training `whoami`_object_detection_`date +%s` --job-dir=gs://${YOUR_GCS_BUCKET}/train --packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz,/tmp/pycocotools/pycocotools-2.0.tar.gz --module-name object_detection.model_tpu_main --runtime-version 1.15 --scale-tier BASIC_TPU --region us-central1 -- --model_dir=gs://${YOUR_GCS_BUCKET}/train --tpu_zone us-central1 --pipeline_config_path=gs://${YOUR_GCS_BUCKET}/data/pipeline.config
......@@ -637,7 +637,7 @@ gcloud ai-platform jobs submit training $JOB_NAME \
# 基于云的视觉搜索背后的总体思路
在 “第 6 章”,*使用迁移学习*的视觉搜索中,我们学习了如何在本地 PC 上进行视觉搜索。 该方法使用通过神经网络(例如 VGG16 或 ResNet)传递图像,并通过删除最后一个全连接层然后将其与数据库中已知类别的其他图像进行比较以将其转换为图像矢量,以找到最近的邻居。 匹配,然后显示结果。
在 “第 6 章”,“使用迁移学习的视觉搜索”中,我们学习了如何在本地 PC 上进行视觉搜索。 该方法使用通过神经网络(例如 VGG16 或 ResNet)传递图像,并通过删除最后一个全连接层然后将其与数据库中已知类别的其他图像进行比较以将其转换为图像矢量,以找到最近的邻居。 匹配,然后显示结果。
在示例中,我们从 200 张图像开始,但是如果图像数量达到 100 万张并且必须从网页访问结果,则在本地存储图像将毫无意义。 在这些情况下,云存储是最佳的。 在那种情况下,我们可以将图像向量存储,而不是将图像存储在云中,然后在用户上传图像时,将图像转换为向量并将其发送到云中进行处理。 在云中,我们执行 k 近邻搜索以找到并显示最接近的匹配项。 使用 REST API 或**消息队列遥测传输****MQTT**)服务将图像矢量上传到云中。 每个服务都有自己的安全性验证。
......@@ -669,7 +669,7 @@ def index():
# 分析各种云平台中的图像和搜索机制
在本节中,我们将讨论使用三种不同的云平台(GCP,AWS 和 Azure)的可视搜索任务。 我们已经在“第 6 章”,*中使用迁移学习*进行了视觉搜索,其中我们学习了如何将图像向量与 PC 目录中的大量图像进行比较以查找 基于欧几里得距离的最接近的匹配。 在本部分中,您将学习如何使用 REST API 从 PC 上载图像到云,云搜索引擎将搜索最接近的图像并将其显示。 因此,所有繁重的工作将由云引擎来完成。
在本节中,我们将讨论使用三种不同的云平台(GCP,AWS 和 Azure)的可视搜索任务。 我们已经在“第 6 章”,“使用迁移学习进行视觉搜索”中,其中我们学习了如何将图像向量与 PC 目录中的大量图像进行比较以查找 基于欧几里得距离的最接近的匹配。 在本部分中,您将学习如何使用 REST API 从 PC 上载图像到云,云搜索引擎将搜索最接近的图像并将其显示。 因此,所有繁重的工作将由云引擎来完成。
请注意,在本节中,介绍了视觉搜索的基本概念。 内容可以更深入,您可以从 GCP,AWS 或 Azure 获取云 API,并将其插入用 Python,C ++或 JavaScript 编写的应用程序中,以调用云引擎并执行搜索。
......@@ -679,7 +679,7 @@ GCP 具有视觉 API,可以执行基于云的图像信息,包括面部检测
![](img/5b0384ab-24ec-41f1-acbc-c5dc5d54730d.png)
正如我们在“第 6 章”,*中使用迁移学习*进行视觉搜索时一样,对于视觉上相似的图像,必须在图像类内进行搜索。 如果图像不是来自网络,则很可能会检测到不同类别的相似视觉图像,如此处的沙发示例所示。 但是,如果图像是从网上获取的,则匹配是精确的或非常接近的。
正如我们在“第 6 章”,“使用迁移学习进行视觉搜索”时一样,对于视觉上相似的图像,必须在图像类内进行搜索。 如果图像不是来自网络,则很可能会检测到不同类别的相似视觉图像,如此处的沙发示例所示。 但是,如果图像是从网上获取的,则匹配是精确的或非常接近的。
在上一节中,我们学习了如何使用 GCP 进行训练。 AutoML Vision 是轻松完成此任务的另一种方法。 有关详细的分步说明,请转到[这里](https://cloud.google.com/vision/automl/docs/quickstart)
......@@ -713,7 +713,7 @@ AWS Rekognition 还可以使用`boto`分析本地 PC 上的图像,如[这里](
培训期间引入了 AWS SageMaker。 通过将图像转换为矢量,它也可以用于执行视觉搜索。 有关详细练习,请参阅[这个页面](https://github.com/awslabs/visual-search/blob/master/notebooks/visual-search-feature-generation.ipynb)中描述的 Python 笔记本。
请注意,执行此操作的最佳方法是从 AWS SageMaker 笔记本实例运行此操作。 将此文件(在上一链接中列出)上载到 Jupyter Notebook,然后选择 MXNet Python 软件包。 引用您的 S3 存储桶并执行单元。 分析代码并将其与我们在“第 6 章”,*使用迁移学习*的视觉搜索中学到的内容进行比较。 您将看到基本原理是相同的,只是分析是在云平台上完成的,因此它将具有在“第 6 章”,*中不必处理的多个身份验证级别。 使用迁移学习的视觉搜索* [](https://cdp.packtpub.com/mastering_computer_vision_with_tensorflow_2_0/wp-admin/post.php?post=27&action=edit)
请注意,执行此操作的最佳方法是从 AWS SageMaker 笔记本实例运行此操作。 将此文件(在上一链接中列出)上载到 Jupyter Notebook,然后选择 MXNet Python 软件包。 引用您的 S3 存储桶并执行单元。 分析代码并将其与我们在“第 6 章”,“使用迁移学习的视觉搜索”中学到的内容进行比较。 您将看到基本原理是相同的,只是分析是在云平台上完成的,因此它将具有在“第 6 章”,“使用迁移学习的视觉搜索”中不必处理的多个身份验证级别。
# 使用 Azure 进行视觉搜索
......
......@@ -336,7 +336,7 @@ plt.scatter(yvalx[6], yvaly[6], color = 'red')
plt.show()
```
请注意,对于 50 张图片,模型预测效果不是很好; 这里的想法是向您展示该过程,以便您随后可以通过收集更多图像在此代码的基础上进行构建。 随着图像数量的增加,模型精度将提高。 尝试为不同的人和不同的方向拍摄图像。 如“第 9 章”,“使用多任务深度学习的动作识别”中所述,可以将此处描述的技术扩展为与身体关键点检测一起使用。 此外,“第 11 章”,“通过 CPU / GPU 优化在边缘设备上进行深度学习”,在 Raspberry Pi 上针对 OpenVINO 提供了一个部分,其中提供了 Python 代码来预测和显示 35 个面部关键点 基于 OpenVINO 工具包预训练模型的积分。
请注意,对于 50 张图片,模型预测效果不是很好; 这里的想法是向您展示该过程,以便您随后可以通过收集更多图像在此代码的基础上进行构建。 随着图像数量的增加,模型精度将提高。 尝试为不同的人和不同的方向拍摄图像。 如“第 9 章”,“使用多任务深度学习的动作识别”中所述,可以将此处描述的技术扩展为与身体关键点检测一起使用。 此外,“第 11 章”,“通过 CPU/GPU 优化在边缘设备上进行深度学习”,在 Raspberry Pi 上针对 OpenVINO 提供了一个部分,其中提供了 Python 代码来预测和显示 35 个面部关键点 基于 OpenVINO 工具包预训练模型的积分。
# 使用 CNN 预测面部表情
......@@ -400,6 +400,6 @@ plt.show()
# 概要
尽管由于各种肤色,方向,面部表情,头发颜色和光照条件而引起的复杂性,面部识别仍然是计算机视觉的成功故事。 在本章中,我们学习了面部检测技术。 对于每种技术,您都需要记住,面部检测需要大量训练有素的图像。 人脸检测已在许多视频监控应用程序中广泛使用,并且 Google,亚马逊,微软和英特尔等公司的基于云的设备和边缘设备均可使用标准 API。 我们将在“第 11 章”,“对具有 CPU / GPU 优化功能的边缘设备进行深度学习”中了解基于云的 API,并在“第 4 章”,“图像深度学习”,和第 5 章,“神经网络架构和模型”。 在本章中,简要介绍了用于面部检测和表情分类的 CNN 模型。
尽管由于各种肤色,方向,面部表情,头发颜色和光照条件而引起的复杂性,面部识别仍然是计算机视觉的成功故事。 在本章中,我们学习了面部检测技术。 对于每种技术,您都需要记住,面部检测需要大量训练有素的图像。 人脸检测已在许多视频监控应用程序中广泛使用,并且 Google,亚马逊,微软和英特尔等公司的基于云的设备和边缘设备均可使用标准 API。 我们将在“第 11 章”,“对具有 CPU/GPU 优化功能的边缘设备进行深度学习”中了解基于云的 API,并在“第 4 章”,“图像深度学习”,和第 5 章,“神经网络架构和模型”。 在本章中,简要介绍了用于面部检测和表情分类的 CNN 模型。
在下一章中,将详细说明 CNN。 这将帮助您了解 CNN 的构造块,为何选择某些功能块以及每个块在最终对象检测指标中的作用。 之后,我们将参考 “第 3 章”,“使用 OpenCV 和 CNN 进行面部检测”的示例,以评估如何优化 CNN 参数以更好地进行面部检测。
\ No newline at end of file
......@@ -431,7 +431,7 @@ Person, bicycle, car, motorbike, airplane, bus, train, truck, boat, traffic ligh
此步骤涉及为数据集中每个图像中的每个对象创建边界框坐标。 此边界框坐标通常由四个参数表示:(x,y)用于确定初始位置以及宽度和高度。 边界框可以表示为`.xml``.txt`形式。 该坐标文件也称为注释文件。 请按照以下步骤完成本节:
1. 许多图像注释软件应用程序都用于标记图像。 在面部关键点检测期间,我们已经在“第 3 章”,“使用 OpenCV 和 CNN 进行面部检测”中介绍了 VGG 图像注释器。 在“第 11 章”,“具有 CPU / GPU 优化功能的边缘设备深度学习”中,我们将介绍用于自动图像注释的 CVAT 工具。 在本章中,我们将介绍一个称为`labelImg`的注释工具。
1. 许多图像注释软件应用程序都用于标记图像。 在面部关键点检测期间,我们已经在“第 3 章”,“使用 OpenCV 和 CNN 进行面部检测”中介绍了 VGG 图像注释器。 在“第 11 章”,“具有 CPU/GPU 优化功能的边缘设备深度学习”中,我们将介绍用于自动图像注释的 CVAT 工具。 在本章中,我们将介绍一个称为`labelImg`的注释工具。
2.[这里](https://pypi.org/project/labelImg/)下载`pypi``labelImg`注释软件。 您可以按照此处的说明为操作系统安装`labelImg`-如果有任何问题,一种简单的安装方法是在终端中键入`pip3 install lableImg`。 然后,要运行它,只需在终端中键入`labelImg`
3.`labelImg`中,在“打开目录”框中单击图像目录。 选择每个图像并通过单击 Create / RectBox 创建一个包围框,然后为包围框添加一个类名,例如`bed``chair``sofa`。 保存注释,然后单击右箭头转到下一张图像。
4. 如果图片中图像中有多个类别或同一类别的多个位置,请在每个类别周围绘制矩形。 多个类别的示例是同一图像中的汽车和行人。 同一类别内多个位置的示例是同一图像中不同位置的不同汽车。 因此,如果图像由多把椅子和一张沙发组成,则在每把椅子周围绘制矩形,并在类名称中为每张沙发分别键入`chair`,在其周围绘制一个矩形并键入`sofa`。 如果图像仅由沙发组成,则在沙发周围绘制一个矩形,并输入`sofa`作为类名。 下图说明了这一点:
......
......@@ -16,5 +16,5 @@
本节包括以下章节:
* “第 11 章”,“通过 CPU / GPU 优化在边缘设备上进行深度学习”
* “第 11 章”,“通过 CPU/GPU 优化在边缘设备上进行深度学习”
* “第 12 章”,“用于计算机视觉的云计算平台”
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册