提交 fc9b6338 编写于 作者: W wizardforcel

2020-12-30 22:48:53

上级 5d3321bd
......@@ -602,7 +602,7 @@ YOLO 中使用的损失函数可分为四个部分:
尽管 YOLO 极大地简化了对象检测体系结构并能够实时进行预测,但是也存在某些缺点。 该模型不会提取不同比例的特征,因此对于不同大小和比例的对象不具有鲁棒性。 该模型还难以检测组合在一起的较小尺寸的对象。 接下来,我们将研究另一种基于回归的对象检测架构,即**单发多框检测器****SSD** ),该架构可弥补 YOLO 的缺点。
# 单发多探测器
# 单发多探测器
与 YOLO 一样,SSD 也是基于回归的对象检测器,但是 SSD 的创建者声称 SSD 比 YOLO 更快,更准确。 我们可以将 SSD 分为四个主要部分:
......
......@@ -30,7 +30,7 @@ SSD 是一种非常快速的对象检测器,非常适合部署在移动设备
* **第二层**:遮罩= 3、4、5; 对应的锚点:(30,61),(62,45),(59,119)
* **第三层**:mask = 0、1、2; 对应的锚点:(10,13),(16,30),(33,23)
SSD 于 2016 年由 Liu Wei,Dragomir Anguelov,Dumitru Erhan,Christian Szegedy,Scott Reed,傅成扬和 Alexander C.Berg 在题为 *SSD:单发多盒检测器(* [https://arxiv.org/abs/1512.02325](https://arxiv.org/abs/1512.02325) *)。*
SSD 于 2016 年由 Liu Wei,Dragomir Anguelov,Dumitru Erhan,Christian Szegedy,Scott Reed,傅成扬和 Alexander C.Berg 在题为[《SSD:单发多框检测器》](https://arxiv.org/abs/1512.02325)提出。
它的速度比 Faster R-CNN 快,但其准确性与 YOLO 相比。 改进来自消除区域建议并将小型卷积滤波器应用于特征图,以预测不同比例的多层。
......@@ -61,7 +61,7 @@ SSD 的主要功能概述如下:
# R-FCN 概述
R-FCN 比 R-CNN 与 SSD 更相似。 R-FCN 由主要由 Microsoft Research 组成的团队于 2016 年开发,该团队由戴继峰,李毅,何凯明和孙健组成,题为 *R-FCN:通过基于区域的全卷积网络进行对象检测* 。 您可以在 [https://arxiv.org/abs/1605.06409](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 的体系结构:
......@@ -82,9 +82,9 @@ R-FCN 的主要功能如下所述:
# TensorFlow 对象检测 API 概述
可以在 [https://github.com/tensorflow/models/tree/master/research/object_detection](https://github.com/tensorflow/models/tree/master/research/object_detection) 找到 TensorFlow 对象检测 API。 在撰写本书时,TensorFlow 对象检测 API 仅适用于 TensorFlow 版本 1.x。 在终端中下载 TensorFlow 1.x 时,它将`models/research/object detection`目录安装到您的 PC。 如果您的 PC 上装有 TensorFlow 2.0,则可以从 GitHub 上的 [https://github.com/tensorflow/models/tree/master/research](https://github.com/tensorflow/models/tree/master/research) 下载研究目录。
可以在[这里](https://github.com/tensorflow/models/tree/master/research/object_detection)找到 TensorFlow 对象检测 API。 在撰写本书时,TensorFlow 对象检测 API 仅适用于 TensorFlow 版本 1.x。 在终端中下载 TensorFlow 1.x 时,它将`models/research/object detection`目录安装到您的 PC。 如果您的 PC 上装有 TensorFlow 2.0,则可以从 [GitHub](https://github.com/tensorflow/models/tree/master/research) 下载研究目录。
TensorFlow 对象检测 API 具有预先训练的模型,您可以使用网络摄像头对其进行检测( [https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/camera.html](https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/camera.html) ) 以及有关自定义图片的示例培训( [https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/training.html](https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/training.html)。 浏览前两个链接,然后自己尝试,然后返回下一部分。
TensorFlow 对象检测 API 具有预先训练的模型,[您可以使用网络摄像头对其进行检测](https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/camera.html)以及[有关自定义图片的示例培训](https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/training.html)。 浏览前两个链接,然后自己尝试,然后返回下一部分。
在本章中,我们将使用 TensorFlow 对象检测器执行以下任务:
......@@ -123,7 +123,7 @@ TensorFlow 对象检测 API 具有预先训练的模型,您可以使用网络
然后,按照以下说明在测试图像上创建对象检测推断:
* 接下来,我们将使用**安全套接字外壳****SSH** )客户端通过互联网安全地访问实例。 您将需要输入用户名和密码。 将用户名设置为`username`,将密码设置为`passw0rd`; 请记住,它不是`o`而是`0`,如零。
* 使用 [https://cloud.google.com/solutions/creating-object-detection-application-tensorflow](https://cloud.google.com/solutions/creating-object-detection-application-tensorflow) 上描述的说明,安装 **TensorFlow 对象检测 API** 库和必备软件包。
* 使用[这个页面](https://cloud.google.com/solutions/creating-object-detection-application-tensorflow)上描述的说明,安装 **TensorFlow 对象检测 API** 库和必备软件包。
正确遵循上述说明并上传图像后,您将获得如下所示的输出:
......@@ -133,9 +133,9 @@ TensorFlow 对象检测 API 具有预先训练的模型,您可以使用网络
# 使用 TensorFlow Hub 检测对象
在此示例中,我们将从`tfhub`导入 TensorFlow 库,并使用它来检测对象。 TensorFlow Hub( [https://www.tensorflow.org/hub](https://www.tensorflow.org/hub) )是一个库,其中的代码可用并且可以用于计算机视觉应用。 该代码是从 TensorFlow Hub( [https://github.com/tensorflow/hub/blob/master/examples/colab/object_detection.ipynb](https://github.com/tensorflow/hub/blob/master/examples/colab/object_detection.ipynb)中提取的,但图像是在本地插入的,而不是为 云端。
在此示例中,我们将从`tfhub`导入 TensorFlow 库,并使用它来检测对象。 [TensorFlow Hub](https://www.tensorflow.org/hub) 是一个库,其中的代码可用并且可以用于计算机视觉应用。 该代码是从 [TensorFlow Hub](https://github.com/tensorflow/hub/blob/master/examples/colab/object_detection.ipynb) 中提取的,但图像是在本地插入的,而不是为 云端。
可以在 [https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter10/Chapter10_Tensorflow_Object_detection_API.ipynb](https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter10/Chapter10_Tensorflow_Object_detection_API.ipynb) 中找到用于此练习的修改后的代码。
可以在[这个页面](https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter10/Chapter10_Tensorflow_Object_detection_API.ipynb)中找到用于此练习的修改后的代码。
在这里,我们通过导入`tensorflow_hub``six.moves`安装 TensorFlow 库。 `six.moves`是一个 Python 模块,用于提供 Python 2 和 Python 3 之间的通用包。它显示图像并在图像上绘制边框。 在通过检测器之前,图像将转换为阵列。 检测器是直接从集线器加载的模块,该模块在后台执行所有神经网络处理。 以下显示了在两种不同型号的`tfhub`上运行示例图像时的输出:
......@@ -155,9 +155,9 @@ TensorFlow 对象检测 API 具有预先训练的模型,您可以使用网络
请注意,在撰写本书时,TensorFlow 对象检测 API 尚未迁移到 TensorFlow 2.x,因此请在 Google Colab 默认版本 TensorFlow 1.x 上运行此示例。 您可以通过键入`%tensorflow_version 2.x`在 Google Colab 中安装 TensorFlow 2.x,但是对象检测 API 会导致错误。 该演示练习安装了 TenorFlow 1.14 版和 numpy 1.16 版。
我们将在此练习中使用转移学习,首先从在 Coco 数据集上训练的预训练模型开始,然后在通过我们自己的数据集进行训练的基础上建立转移学习。 TensorFlow 已经在 ModelZoo GitHub 站点中存储了预训练的模型,该站点可从 [https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md) 获取。 这些模型主要是具有不同特征提取器的 R-CNN,SSD 和 R-FCN。 相应的配置文件可以在 [https://github.com/tensorflow/models/tree/master/research/object_detection/samples/configs](https://github.com/tensorflow/models/tree/master/research/object_detection/samples/configs) 中找到。
我们将在此练习中使用转移学习,首先从在 Coco 数据集上训练的预训练模型开始,然后在通过我们自己的数据集进行训练的基础上建立转移学习。 TensorFlow 已经在 ModelZoo GitHub 站点中存储了预训练的模型,该站点可从[这里](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md)获取。 这些模型主要是具有不同特征提取器的 R-CNN,SSD 和 R-FCN。 相应的配置文件可以在[这个页面](https://github.com/tensorflow/models/tree/master/research/object_detection/samples/configs)中找到。
可可数据集( [http://cocodataset.org](http://cocodataset.org)具有以下类别:
[可可数据集](http://cocodataset.org)具有以下类别:
```py
Person, bicycle, car, motorcycle, airplane, bus, train, truck, boat, traffic light, fire hydrant, stop sign, parking meter, bench, bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe, backpack, umbrella, handbag, tie, suitcase, frisbee, skis, snowboard, sports, ball, kite, baseball, bat, baseball, glove, skateboard, surfboard, tennis, racket, bottle, wine, glass, cup, fork, knife, spoon, bowl, banana, apple, sandwich, orange, broccoli, carrot, hot dog, pizza, donut, cake, chair, couch, potted plant, bed, dining table, toilet, tv, laptop, mouse, remote, keyboard, cell phone, microwave oven, toaster, sink, refrigerator, book, clock, vase, scissors, teddy bear, hair drier, toothbrush
......@@ -180,7 +180,7 @@ rs = tf.image.resize(img[:, y:y+h, x:x+w, :], (self.pool_size, self.pool_size))
当作业在 Colab 上的 TensorFlow 中运行时,模块之间的依存关系配置良好。 因此,不会花费很多时间解决许多简单的错误,您可以将时间花在培训开发上,而不是修正错误以开始培训。
在以下部分中,将提供逐步指南,以建立培训组合。 可以在 [https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter10/Chapter10_Tensorflow_Training_a_Object_Detector_GoogleColab.ipynb](https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter10/Chapter10_Tensorflow_Training_a_Object_Detector_GoogleColab.ipynb) 中找到代码的详细信息。
在以下部分中,将提供逐步指南,以建立培训组合。 可以在[这个页面](https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter10/Chapter10_Tensorflow_Training_a_Object_Detector_GoogleColab.ipynb)中找到代码的详细信息。
# 将图像收集并格式化为.jpg 文件
......@@ -245,7 +245,7 @@ rs = tf.image.resize(img[:, y:y+h, x:x+w, :], (self.pool_size, self.pool_size))
* INPUT 代表`images`文件夹,需要提供所有图像数据。 请记住要遵循前面的图中概述的命名约定,并将`.jpg`文件和`.xml`文件上传到相应的目录,如上图所示。
由于大小限制,我们无法将图像数据上传到 GitHub 站点。 因此,本部分中使用的图像可以从 [https://www.kaggle.com/kmader/food41](https://www.kaggle.com/kmader/food41) 的 Kaggle 食品图像(用于汉堡和薯条样品)下载。 电话并上传。
由于大小限制,我们无法将图像数据上传到 GitHub 站点。 因此,本部分中使用的图像可以从[这里](https://www.kaggle.com/kmader/food41)的 Kaggle 食品图像(用于汉堡和薯条样品)下载。 电话并上传。
* `annotations`是输出文件夹,应为空,并将在下一部分中填写。 不要将`annotations`文件夹与注释图像混淆以创建`.xml`文件。 所有`.xml`文件都放在`images`文件夹中。
......@@ -380,7 +380,7 @@ DEST_DIR = '/content/models/research/pretrained_model'
# 使用 TensorBoard 监控培训进度
TensorBoard 是用于实时监控和可视化培训进度的工具。 它可以绘制训练损耗和准确性的图表,因此无需手动绘制。 TensorBoard 允许您可视化模型图并具有许多其他功能。 访问 [https://www.tensorflow.org/tensorboard](https://www.tensorflow.org/tensorboard) ,以了解有关 TensorBoard 功能的更多信息。
TensorBoard 是用于实时监控和可视化培训进度的工具。 它可以绘制训练损耗和准确性的图表,因此无需手动绘制。 TensorBoard 允许您可视化模型图并具有许多其他功能。 访问[这里](https://www.tensorflow.org/tensorboard),以了解有关 TensorBoard 功能的更多信息。
# 在本地计算机上运行的 TensorBoard
......@@ -566,7 +566,7 @@ TensorBoard 具有三个选项卡-标量,图像和图形。 标量包括 mAP
# Mask R-CNN 概述和 Google Colab 演示
Mask R-CNN( [https://arxiv.org/abs/1703.06870](https://arxiv.org/abs/1703.06870)由 Kaiming He,Georgia Gkioxari,Piotr Dollar 和 Ross Girshick 在 **CVPR** 2017 中提出。Mask R -CNN 使用 R-CNN 有效地检测图像中的对象,同时针对每个感兴趣区域进行对象分割任务。 因此,分割任务与分类和边界框回归并行工作。 Mask R-CNN 的高级体系结构如下:
[Mask R-CNN](https://arxiv.org/abs/1703.06870) 由 Kaiming He,Georgia Gkioxari,Piotr Dollar 和 Ross Girshick 在 **CVPR** 2017 中提出。Mask R -CNN 使用 R-CNN 有效地检测图像中的对象,同时针对每个感兴趣区域进行对象分割任务。 因此,分割任务与分类和边界框回归并行工作。 Mask R-CNN 的高级体系结构如下:
![](img/2884d889-f0b0-44e5-83cf-22ec8797f59a.png)
......@@ -578,7 +578,7 @@ Mask R-CNN 实现的详细信息如下:
* 骨干神经网络通过提取第四阶段的最后卷积层来使用 ResNet-50 或-101。
* 重新调整训练图像的大小,使较短的边缘为 800 像素。 每个微型批处理每个 GPU 具有两张图像,正样本与负样本的比例为 1:3。 训练持续进行 160,000 次迭代,学习率`0.02`高达 120,000 次迭代,然后下降到`0.002`。 使用`0.0001`的重量衰减和`0.9`的动量。
Mask R-CNN 图像分割演示是用 Google Colab 编写的,位于 [https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter10/Chapter10_Mask_R_CNN_Image_Segmentation_Demo。 ipynb](https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter10/Chapter10_Mask_R_CNN_Image_Segmentation_Demo.ipynb) [](https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter10/Chapter10_Mask_R_CNN_Image_Segmentation_Demo.ipynb)
[Mask R-CNN 图像分割演示是用 Google Colab 编写的](https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter10/Chapter10_Mask_R_CNN_Image_Segmentation_Demo.ipynb)
笔记本电脑加载示例图像并通过激活 TPU 创建 TensorFlow 会话。 然后加载预训练的模型蒙版 R-CNN,然后执行实例分割和预测。 该笔记本取自 Google Colab 网站,仅作了一项修改-图像加载功能。 下图显示了 Mask R-CNN 的输出:
......@@ -596,13 +596,13 @@ Mask R-CNN 在前面概述的 Coco 数据集上进行了训练。 因此,`huma
# SORT 追踪
SORT 是由 Alex Bewley,Zongyuan Ge,Lionel Ott,Fabio Ramos 和 Ben Upcroft 在其名为*简单在线和实时跟踪(* [https://arxiv.org/abs/1602.00763 [](https://arxiv.org/abs/1602.00763) *)*。 本文使用 Faster R-CNN 进行检测,而卡尔曼滤波器和匈牙利算法用于**多目标跟踪****MOT** )进行实时。 跟踪实现的详细信息可以在 [https://github.com/abewley/sort](https://github.com/abewley/sort) 中找到。
SORT 是由 Alex Bewley,Zongyuan Ge,Lionel Ott,Fabio Ramos 和 Ben Upcroft 在其名为[《简单在线和实时跟踪》](https://arxiv.org/abs/1602.00763)的论文中提出的。 本文使用 Faster R-CNN 进行检测,而卡尔曼滤波器和匈牙利算法用于**多目标跟踪****MOT** )进行实时。 跟踪实现的详细信息可以在[这个页面](https://github.com/abewley/sort)中找到。
# DeepSORT 追踪
在 CVPR 2017 上,Nicolai Wojke,Alex Bewley 和 Dietrich Paulus 在他们的论文中提出了 DeepSORT 跟踪,其论文标题为*与深度关联* *Metric* 的简单在线和实时跟踪。 可以在 [https://arxiv.org/abs/1703.07402](https://arxiv.org/abs/1703.07402) [中找到该论文的详细信息。](https://arxiv.org/abs/1703.07402)
在 CVPR 2017 上,Nicolai Wojke,Alex Bewley 和 Dietrich Paulus 在他们的论文中提出了 DeepSORT 跟踪,其论文标题为*与深度关联* *Metric* 的简单在线和实时跟踪。 可以在[这个页面](https://arxiv.org/abs/1703.07402)中找到该论文的详细信息。
DeepSORT 是 SORT 的扩展,并使用经过训练以区分行人的 CNN 将外观信息集成到边界框中。 跟踪实现的详细信息可以在 [https://github.com/nwojke/deep_sort](https://github.com/nwojke/deep_sort) [中找到。](https://arxiv.org/abs/1703.07402)
DeepSORT 是 SORT 的扩展,并使用经过训练以区分行人的 CNN 将外观信息集成到边界框中。 跟踪实现的详细信息可以在[这个页面](https://github.com/nwojke/deep_sort)中找到。
该体系结构的细节概述如下:
......@@ -642,7 +642,7 @@ tracker = cv2.TrackerTLD_create()
# 基于连体网络的跟踪
Luca Bertinetto,Jack Valmadre,Joao F. Henriques,Andrea Vedaldi 和 Philip HS Torr 在其具有里程碑意义的论文*全卷积 Siame* *se Networks for Object 中提出了基于暹罗网络的对象跟踪 跟踪*。 可以在 [https://arxiv.org/abs/1606.09549](https://arxiv.org/abs/1606.09549) 上找到该论文的详细信息。
Luca Bertinetto,Jack Valmadre,Joao F. Henriques,Andrea Vedaldi 和 Philip HS Torr 在其具有里程碑意义的论文*全卷积 Siame* *se Networks for Object 中提出了基于暹罗网络的对象跟踪 跟踪*。 可以在[这个页面](https://arxiv.org/abs/1606.09549)上找到该论文的详细信息。
在本文中,作者训练了一个深度卷积网络以离线开发相似性函数,然后将其应用于实时对象跟踪。 相似度函数是暹罗 CNN,将测试边界框与训练边界框(真实情况)进行比较并返回高分。 如果两个边界框包含相同的对象且分数较低,则对象不同。
......@@ -664,7 +664,7 @@ Luca Bertinetto,Jack Valmadre,Joao F. Henriques,Andrea Vedaldi 和 Philip
# 基于 SiamMask 的跟踪
在 CVPR 2019 上,王强,张立,Luca Bertinetto,胡卫明和 Phillip H.S.Torr 在他们的论文*快速在线对象跟踪和分段:统一方法*中提出了 SiamMask。 有关本文的更多详细信息,请参见 [https://arxiv.org/abs/1812.05050](https://arxiv.org/abs/1812.05050)
在 CVPR 2019 上,王强,张立,Luca Bertinetto,胡卫明和 Phillip H.S.Torr 在他们的论文*快速在线对象跟踪和分段:统一方法*中提出了 SiamMask。 有关本文的更多详细信息,请参见[这里](https://arxiv.org/abs/1812.05050)
SiamMask 使用单个边界框初始化并以每秒 55 帧的速度跟踪对象边界框。
......@@ -674,7 +674,7 @@ SiamMask 使用单个边界框初始化并以每秒 55 帧的速度跟踪对象
* ResNet-50 用于 CNN,直到第三阶段结束为止,最后以 1 x 1 卷积层结束。 请注意,ResNet-50 具有四个阶段,但仅考虑了前三个阶段,并且对步幅 1 的卷积进行了修改,以将输出步幅减小到 8。
* 在 DeepLab 中使用了扩张的(无意义的)卷积(在 [第 8 章](../Text/8.html)*语义分割和神经样式转换*中进行了详细描述)以增加接收场。 ResNet 第三阶段的最终输出附加了具有 256 个输出的 1 x 1 卷积。
可在 [https://github.com/foolwood/SiamMask](https://github.com/foolwood/SiamMask) 上找到有关 SiamMask 实现以及培训的详细信息。 [](https://github.com/foolwood/SiamMask) SiamMask 也可以在[上使用 Google Colab 在 YouTube 视频文件上运行:https://colab.research.google.com/github/tugstugi/dl-colab-notebooks /blob/master/notebooks/SiamMask.ipynb](https://colab.research.google.com/github/tugstugi/dl-colab-notebooks/blob/master/notebooks/SiamMask.ipynb)[](https://colab.research.google.com/github/tugstugi/dl-colab-notebooks/blob/master/notebooks/SiamMask.ipynb) 请注意,为了使其成功运行,视频文件必须以人像开头。
可在[这里](https://github.com/foolwood/SiamMask) 上找到有关 SiamMask 实现以及培训的详细信息。 SiamMask 也可以在[这个页面](https://colab.research.google.com/github/tugstugi/dl-colab-notebooks/blob/master/notebooks/SiamMask.ipynb)上使用 请注意,为了使其成功运行,视频文件必须以人像开头。
# 概要
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册