提交 02579467 编写于 作者: W wizardforcel

2021-01-02 23:38:12

上级 b2ffb0b7
......@@ -55,19 +55,19 @@ SSD 的主要功能概述如下:
* 默认框中心的坐标为`((i+0.5)/|fk|, (j+0.5)/|fk|)`,其中`|fk|``kth`正方形特征图的大小,`i``j`的值从`0``|fk|`不等。 对六个默认框的每个重复此操作。
* SSD 通过将给定比例和宽高比的默认框与地面真实物体的默认框匹配,并消除不匹配的框,从而预测各种物体的大小和形状。 默认框与地面真值对象的匹配是通过 Jaccard 重叠(也称为**联合****IOU** 的交集)完成的,这在第 7 章,“使用 YOLO 进行对象检测”中。 例如,如果图像由`human``bus`组成并且都具有不同的宽高比和比例,则 SSD 显然可以识别两者。 问题出现在两个类别彼此接近且纵横比相同时,我们将在后面看到。
* 使用 R-CNN,区域提议网络执行筛选以限制被视为 2K 的样本数量。 另一方面,SSD 没有区域建议,因此它会生成大量的边界框(如我们先前所知,为 8,732 个),其中许多都是负面示例。 SSD 拒绝了额外的负面示例,它使用硬性负面挖掘来使正面与负面之间的平衡保持至多 3:1。 硬否定挖掘是一种用于使用置信度损失进行排序以便保留最高值的技术。
* SSD 使用非最大抑制来选择给定类别具有最高置信度的单个边界框。 非最大抑制的概念在“第 7 章”,*中使用 YOLO* 进行对象检测。 非最大抑制算法以最高的概率选择对象类别,并丢弃 IOU 大于`0.5`的所有边界框。
* SSD 使用非最大抑制来选择给定类别具有最高置信度的单个边界框。 非最大抑制的概念在“第 7 章”,“使用 YOLO 进行对象检测”中。 非最大抑制算法以最高的概率选择对象类别,并丢弃 IOU 大于`0.5`的所有边界框。
* SSD 还通过获取假阴性图像作为训练期间的输入来使用硬性阴性挖掘。 SSD 保持负数与正数之比为 3:1。
* 为了进行训练,使用以下参数:`300x300``512x512`图像大小,`10^(-3)`的学习速率为 40,000 次迭代,`10^(-4)``10^(-5)`的学习速率为随后的 10,000 次迭代,衰减率为`0.0005``0.9`的势头。
# R-FCN 概述
R-FCN 比 R-CNN 与 SSD 更相似。 R-FCN 由主要由 Microsoft Research 组成的团队于 2016 年开发,该团队由戴继峰,李毅,何凯明和孙健组成,题为 *R-FCN:通过基于区域的全卷积网络进行对象检测* 。 您可以在[这个页面](https://arxiv.org/abs/1605.06409)上找到该论文的链接。
R-FCN 比 R-CNN 与 SSD 更相似。 R-FCN 由主要由 Microsoft Research 组成的团队于 2016 年开发,该团队由戴继峰,李毅,何凯明和孙健组成,题为《R-FCN:通过基于区域的全卷积网络进行对象检测》。 您可以在[这个页面](https://arxiv.org/abs/1605.06409)上找到该论文的链接。
R-FCN 也基于区域建议。 与 R-CNN 的主要区别在于,R-FCN 一直等到最后一层,然后应用选择性池提取特征以进行预测,而不是从 2K 区域提议网络开始。 在本章中,我们将使用 R-FCN 训练自定义模型,并将最终结果与其他模型进行比较。 下图描述了 R-FCN 的体系结构:
![](img/d692d9d9-8340-4d58-a219-8002b8b93391.png)
在上图中,汽车的图像通过 ResNet-101 生成了特征图。 请注意,我们在“第 4 章”,*中使用了基于图像的深度学习*,该课程介绍了如何可视化**卷积神经网络****CNN**)及其功能图。 这种技术本质上是相同的。 然后,我们在特征图内获取`k x k`内核(在此图像中,k = 3),并将其在图像上滑动以创建`k^2(C+1)`得分图。 如果得分图包含一个对象,则我们投票`yes`,否则,我们投票`no`。 展平不同区域之间的投票以创建 softmax 层,该层被映射到对象类别以进行检测。
在上图中,汽车的图像通过 ResNet-101 生成了特征图。 请注意,我们在“第 4 章”,“基于图像的深度学习”中使用,它介绍了如何可视化**卷积神经网络****CNN**)及其功能图。 这种技术本质上是相同的。 然后,我们在特征图内获取`k x k`内核(在此图像中,k = 3),并将其在图像上滑动以创建`k^2(C+1)`得分图。 如果得分图包含一个对象,则我们投票`yes`,否则,我们投票`no`。 展平不同区域之间的投票以创建 softmax 层,该层被映射到对象类别以进行检测。
R-FCN 的主要功能如下所述:
......@@ -254,7 +254,7 @@ rs = tf.image.resize(img[:, y:y+h, x:x+w, :], (self.pool_size, self.pool_size))
现在我们的图像准备工作已经完成,我们将开始在 Google Colab 笔记本中进行编码。 第一步是参数配置和获取培训工作所需的软件包,这涉及模型的类型,培训参数等等。 请按照以下步骤执行此操作:
1. 在继续下一步之前,请将`Chapter10_Tensorflow-Training_a_Object_Detector_GoogleColab.ipynb` Python 文件保存到 Google 云端硬盘,然后将其作为 Colab 笔记本打开。
2. 运行单元格`Configure`参数,然后通过按 *Shift* + *安装所需的软件包,输入*按钮
2. 运行单元格`Configure`参数,然后通过按`Shift + Enter`安装所需的软件包
3. 如果一切正常,则应该在以下代码块中看到显示模型配置选择的输出。 以下输出从`config`参数创建测试模型,这是开始构建数据并准备进行测试之前的先决条件:
```py
......@@ -366,7 +366,7 @@ drive.mount('/content/drive')
# 准备模型并配置培训管道
接下来,使用以下命令下载并解压缩基本模型。 在*配置参数和安装所需软件包*部分的配置参数步骤中,已选择型号和相应的配置参数。 可以根据配置参数和批次大小选择四种不同的型号(SSD,Faster R-CNN 和 R-FCN 的两种变体)。 您可以从指示的批次大小开始,并在模型优化期间根据需要进行调整:
接下来,使用以下命令下载并解压缩基本模型。 在“配置参数和安装所需软件包”部分的配置参数步骤中,已选择型号和相应的配置参数。 可以根据配置参数和批次大小选择四种不同的型号(SSD,Faster R-CNN 和 R-FCN 的两种变体)。 您可以从指示的批次大小开始,并在模型优化期间根据需要进行调整:
```py
MODEL_FILE = MODEL + '.tar.gz'
......@@ -600,13 +600,13 @@ SORT 是由 Alex Bewley,Zongyuan Ge,Lionel Ott,Fabio Ramos 和 Ben Upcroft
# DeepSORT 追踪
在 CVPR 2017 上,Nicolai Wojke,Alex Bewley 和 Dietrich Paulus 在他们的论文中提出了 DeepSORT 跟踪,其论文标题为*与深度关联* *Metric* 的简单在线和实时跟踪。 可以在[这个页面](https://arxiv.org/abs/1703.07402)中找到该论文的详细信息。
在 CVPR 2017 上,Nicolai Wojke,Alex Bewley 和 Dietrich Paulus 在他们的论文中提出了 DeepSORT 跟踪,其论文标题为《使用深度关联指标的简单在线和实时跟踪》。 可以在[这个页面](https://arxiv.org/abs/1703.07402)中找到该论文的详细信息。
DeepSORT 是 SORT 的扩展,并使用经过训练以区分行人的 CNN 将外观信息集成到边界框中。 跟踪实现的详细信息可以在[这个页面](https://github.com/nwojke/deep_sort)中找到。
该体系结构的细节概述如下:
* 跟踪方案是在八维状态空间*(u,v,γ,h,x,y,γ,h)*上定义的,其中*(u,v)*是 边界框中心位置,*γ*是长宽比,`h`是高度。
* 跟踪方案是在八维状态空间`(u, v, γ, h, x, y, γ, h)`上定义的,其中`(u, v)`是 边界框中心位置,`γ`是长宽比,`h`是高度。
* 卡尔曼滤波器根据当前位置和速度信息预测未来状态。 在 DeepSORT 中,基于位置和速度的卡尔曼滤波器用于查找下一个跟踪位置。
* 对于每个轨道`k`,在卡尔曼滤波器预测期间对帧数进行计数和递增,并在对象检测期间将其重置为`0`。 删除在前三个帧内超过阈值或与检测无关的轨道。
* 预测的卡尔曼状态与新到达的测量值之间的关联通过两种状态(预测的测量值和新的测量值)之间的马氏距离和外观描述符之间的余​​弦相似度的组合来解决。
......
......@@ -72,14 +72,14 @@
# MobileNet 概述
Google 的一个团队在 CVPR 2017 中的题为 *MobileNets:针对移动视觉应用的高效卷积神经网络*中介绍了 MobileNet。 您可以在[这个页面](https://arxiv.org/abs/1704.04861)上找到此 MobileNet 论文。
Google 的一个团队在 CVPR 2017 中的题为《MobileNets:针对移动视觉应用的高效卷积神经网络》中介绍了 MobileNet。 您可以在[这个页面](https://arxiv.org/abs/1704.04861)上找到此 MobileNet 论文。
MobileNet 提出了一种深度可分离的卷积体系结构,该体系结构缩小了神经网络模型,以便可以处理边缘设备的资源限制问题。 MobileNet 体系结构包括两个主要部分:
* 深度可分离卷积
* 逐点 1 x 1 卷积
请注意,我们在“第 4 章”,“图像深度学习”和“第 5 章”,*神经网络架构和模型中描述了 1 x 1 卷积的重要性。* 。 您可能需要重新阅读这些章节。
请注意,我们在“第 4 章”,“图像深度学习”和“第 5 章”,“神经网络架构和模型”中描述了 1 x 1 卷积的重要性。 您可能需要重新阅读这些章节。
下图显示了深度卷积的工作方式:
......@@ -141,7 +141,7 @@ $raspivid -o video.h264 -t 10000
在安装过程中,我发现必须在多个页面之间导航才能正确处理所有问题。 以下是对我有用的分步说明。 欢迎您使用官方网站或此处给出的说明以使所有功能正常运行:
以下每一行都是单独的指令。 这意味着要输入一个命令,请按*,然后输入*并等待其显示在控制台中,表明已完成,然后再输入下一个命令。
以下每一行都是单独的指令。 这意味着要输入一个命令,请按`Enter`并等待其显示在控制台中,表明已完成,然后再输入下一个命令。
1. 在终端中输入以下命令以安装 OpenCV 所需的组件:
......@@ -288,7 +288,7 @@ sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh
完成所有安装过程后,下一个任务是使用通过相机模块连接到 Raspberry Pi 的 Intel Movidius 神经计算棒进行推理。 此处的摄像头模块是边缘设备,而带有英特尔 Movidius 神经计算棒的 Raspberry Pi 是处理器单元。
请注意,Raspberry Pi 本身无法通过神经网络执行推理,因为处理速度非常慢。 使用英特尔 OpenVINO 神经计算棒,您会看到很少的延迟。 作为比较,请参考使用 TensorFlow Lite 在 Raspberry Pi 上进行*对象检测,其中使用 tflite 在没有神经网络棒的情况下将 TensorFlow 模型部署到 Raspberry Pi。 您会注意到,在这种情况下,延迟是很大的。*
请注意,Raspberry Pi 本身无法通过神经网络执行推理,因为处理速度非常慢。 使用英特尔 OpenVINO 神经计算棒,您会看到很少的延迟。 作为比较,请参考“使用 TensorFlow Lite 在 Raspberry Pi 上进行对象检测”,其中使用 tflite 在没有神经网络棒的情况下将 TensorFlow 模型部署到 Raspberry Pi。 您会注意到,在这种情况下,延迟是很大的。
让我们看一下以下命令:
......@@ -322,9 +322,9 @@ python3 openvino_fd_myriad.py
现在,让我们尝试了解这些参数的含义,以便我们可以根据自己的具体应用选择合适的参数。 FP16 将 16 位而不是 32 位用于 FP32,从而减少了训练和推理时间。 另一方面,INT8 使用 8 位整数对神经网络进行权重,渐变和激活的训练。 因此,在这三种方法中,INT8 应该是最快的一种,英特尔声称它仍然保持准确率。
如果您想了解有关英特尔使用的 8 位训练方法的更多信息,请参阅标题为*的神经网络 8 位训练可扩展方法*的论文,该论文发表在[这里](https://arxiv.org/abs/1805.11046)。 为了在 Raspberry Pi 等边缘设备上更快地进行处理,建议的方法是使用 FP16 或 INT8(如果有)。
如果您想了解有关英特尔使用的 8 位训练方法的更多信息,请参阅标题为《神经网络的 8 位训练的可扩展方法》的论文,该论文发表在[这里](https://arxiv.org/abs/1805.11046)。 为了在 Raspberry Pi 等边缘设备上更快地进行处理,建议的方法是使用 FP16 或 INT8(如果有)。
先前描述的开放模型动物园具有各种预先构建的模型,例如用于人脸检测,人检测,自行车检测等的模型。 这些模型已经过训练,因此我们将在本章中仅出于推理目的使用这些模型。 如果您想了解训练方法,则可以按照“第 10 章”,*使用 R-CNN,SSD, 和 R-FCN。*
先前描述的开放模型动物园具有各种预先构建的模型,例如用于人脸检测,人检测,自行车检测等的模型。 这些模型已经过训练,因此我们将在本章中仅出于推理目的使用这些模型。 如果您想了解训练方法,则可以按照“第 10 章”,“使用 R-CNN,SSD,和 R-FCN”。
接下来,我们将看一些将模型分为四种类型的表。
......@@ -474,7 +474,7 @@ $make run
# 转换预训练模型以进行推断
本部分描述了转换自定义 TensorFlow 模型的步骤,这些自定义 TensorFlow 模型使用我们在“第 6 章”,*视觉搜索中使用迁移学习*开发的 TensorFlow Keras 对象分类模型或使用通过 就像我们在上一章中所做的那样,使用 TensorFlow 对象检测 API。 如果您已经计划使用来自英特尔开放源技术中心的经过预先训练的优化模型,那么上一节中描述的步骤将起作用。 在下一节中,我们将描述如何使用两种类型的 TensorFlow 模型执行转换。
本部分描述了转换自定义 TensorFlow 模型的步骤,这些自定义 TensorFlow 模型使用我们在“第 6 章”,“使用迁移学习的视觉搜索”中开发的 TensorFlow Keras 对象分类模型或使用通过 就像我们在上一章中所做的那样,使用 TensorFlow 对象检测 API。 如果您已经计划使用来自英特尔开放源技术中心的经过预先训练的优化模型,那么上一节中描述的步骤将起作用。 在下一节中,我们将描述如何使用两种类型的 TensorFlow 模型执行转换。
# 从使用 Keras 开发的 TensorFlow 模型进行转换
......@@ -523,7 +523,7 @@ $python3 mo_tf.py --input_model frozen_inference_graph_fasterRCNN.pb --transform
在这里,您需要将扩展​​名为`.pb`的文件替换为扩展名为`.pb`的特定模型文件名。 转换的结果将是`xml`和`bin`文件。
有了`xml`和`bin`文件后,我们就可以使用 Python 文件和*高级推断*部分中所述的说明来测试模型。
有了`xml`和`bin`文件后,我们就可以使用 Python 文件和“高级推断”部分中所述的说明来测试模型。
如果在调色时遇到问题,可以使用下面的 linbke 中显示的 OpenVINO 论坛,以查看类似问题的答案,[也可以发布您的问题](https://software.intel.com/en-us/forums/intel-distribution-of-openvino-toolkit)。
......@@ -581,7 +581,7 @@ $converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])
tflite_model = converter.convert()
```
接下来,我们将学习如何使用 TensorFlow 对象检测 API 转换在“第 10 章”,*对象检测中使用 R-CNN,SSD 和 R-FCN* 开发的训练模型。 Google Colab 使用两种不同的方法-`tflite_convert`和`toco`。
接下来,我们将学习如何使用 TensorFlow 对象检测 API 转换在“第 10 章”,“使用 R-CNN,SSD 和 R-FCN 的对象检测”中开发的训练模型。 Google Colab 使用两种不同的方法-`tflite_convert`和`toco`。
# TensorFlow 对象检测 API – tflite_convert
......@@ -706,7 +706,7 @@ tflite_quant_model = converter.convert()
* TensorFlow Lite 转换为`.tflite`格式的文件
* 更新的 labelmap `.txt`文件显示了该类
如果我们导出`.tflite`文件,则直接来自 Google Colab,如 *TensorFlow 对象检测 API – toco* 部分中所述。 `lablemap.txt`文件来自`label_map.pbtxt`文件,仅列出了类的名称。
如果我们导出`.tflite`文件,则直接来自 Google Colab,如“TensorFlow 对象检测 API – toco”部分中所述。 `lablemap.txt`文件来自`label_map.pbtxt`文件,仅列出了类的名称。
[可以在以下 GitHub 页面上找到示例文件](https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/burgerfries_toco.tflite)。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册