提交 5d3321bd 编写于 作者: W wizardforcel

2020-12-30 22:42:52

上级 021f4bce
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
# 用于语义分割的 TensorFlow DeepLab 概述 # 用于语义分割的 TensorFlow DeepLab 概述
语义分割是在像素级别理解和分类图像内容的任务。 与对象检测不同,在对象检测中,在多个对象类上绘制了一个矩形边界框(类似于我们从 YOLOV3 中学到的知识),语义分割可学习整个图像,并将封闭对象的类分配给图像中的相应像素。 因此,语义分段可以比对象检测更强大。 语义分段的基本体系结构基于编码器-解码器网络,其中编码器创建一个高维特征向量并在不同级别上对其进行聚合,而解码器在神经网络的不同级别上创建一个语义分段掩码。 编码器使用传统的 CNN,而解码器使用解池,解卷积和上采样。 DeepLab 是 Google 引入的一种特殊类型的语义分段,它使用 Atrous 卷积,空间金字塔池而不是常规的最大池以及编码器-解码器网络。 DeepLabV3 +是由 Liang-Chieh Chen,Yukun Zhu,George Papandreou,Florian Schro 和 Hartwig Adam 在他们的论文*具有 Atrous 可分离卷积的编码器-解码器用于语义图像分割*[https:// arxiv .org / abs / 1802.02611](https://arxiv.org/abs/1802.02611) 语义分割是在像素级别理解和分类图像内容的任务。 与对象检测不同,在对象检测中,在多个对象类上绘制了一个矩形边界框(类似于我们从 YOLOV3 中学到的知识),语义分割可学习整个图像,并将封闭对象的类分配给图像中的相应像素。 因此,语义分段可以比对象检测更强大。 语义分段的基本体系结构基于编码器-解码器网络,其中编码器创建一个高维特征向量并在不同级别上对其进行聚合,而解码器在神经网络的不同级别上创建一个语义分段掩码。 编码器使用传统的 CNN,而解码器使用解池,解卷积和上采样。 DeepLab 是 Google 引入的一种特殊类型的语义分段,它使用 Atrous 卷积,空间金字塔池而不是常规的最大池以及编码器-解码器网络。 DeepLabV3+ 是由 Liang-Chieh Chen,Yukun Zhu,George Papandreou,Florian Schro 和 Hartwig Adam 在他们的论文[《用于语义图像分割的实用 Atrous 可分离卷积的编码器-解码器》](https://arxiv.org/abs/1802.02611)中提出的
DeepLab 于 2015 年开始使用 V1,并于 2019 年迅速移至 V3 +。下表列出了不同 DeepLab 版本的比较: DeepLab 于 2015 年开始使用 V1,并于 2019 年迅速移至 V3 +。下表列出了不同 DeepLab 版本的比较:
...@@ -67,9 +67,9 @@ DeepLabV3 执行几个并行的 Atrous 卷积,所有这些卷积以不同的 ...@@ -67,9 +67,9 @@ DeepLabV3 执行几个并行的 Atrous 卷积,所有这些卷积以不同的
# DeepLab 中的语义分割-示例 # DeepLab 中的语义分割-示例
可在以下由 TensorFlow 管理的 GitHub 页面上找到使用 TensorFlow 训练 DeepLab 的详细代码: [https://github.com/tensorflow/models/tree/master/research/deeplab](https://github.com/tensorflow/models/tree/master/research/deeplab) [可在以下由 TensorFlow 管理的 GitHub 页面上找到使用 TensorFlow 训练 DeepLab 的详细代码](https://github.com/tensorflow/models/tree/master/research/deeplab)
Google Colab 包含基于几个预先训练的模型的内置 DeepLab Python 代码。 可以在 [https://colab.research.google.com/github/tensorflow/models/blob/master/research/deeplab/deeplab_demo.ipynb](https://colab.research.google.com/github/tensorflow/models/blob/master/research/deeplab/deeplab_demo.ipynb) 中找到。 Google Colab 包含基于几个预先训练的模型的内置 DeepLab Python 代码。 可以在[这个页面](https://colab.research.google.com/github/tensorflow/models/blob/master/research/deeplab/deeplab_demo.ipynb)中找到。
# Google Colab,Google Cloud TPU 和 TensorFlow # Google Colab,Google Cloud TPU 和 TensorFlow
...@@ -161,7 +161,7 @@ GAN 训练遵循针对几个时期的鉴别器和生成器训练的替代模式 ...@@ -161,7 +161,7 @@ GAN 训练遵循针对几个时期的鉴别器和生成器训练的替代模式
# TensorFlow DCGAN –示例 # TensorFlow DCGAN –示例
TensorFlow.org 有一个很好的图像修复示例,您可以在 Google Colab 或您自己的本地计算机上运行。 该示例可以在 Google Colab 的 [https://colab.research.google.com/github/tensorflow/docs/blob/master/site/zh/tutorials/generative/dcgan.ipynb#scrollTo=xjjkT9KAK6H7 [](https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/generative/dcgan.ipynb#scrollTo=xjjkT9KAK6H7) TensorFlow.org 有一个很好的图像修复示例,您可以在 Google Colab 或您自己的本地计算机上运行。 该示例可以在 [Google Colab](https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/generative/dcgan.ipynb#scrollTo=xjjkT9KAK6H7)
此示例显示了根据 MNIST 数据集训练 GAN,然后生成人工数字的方法。 使用的模型与前面各节中描述的模型相似。 此示例显示了根据 MNIST 数据集训练 GAN,然后生成人工数字的方法。 使用的模型与前面各节中描述的模型相似。
...@@ -205,7 +205,7 @@ cv.destroyAllWindows() ...@@ -205,7 +205,7 @@ cv.destroyAllWindows()
神经样式转移是一种技术,您可以通过匹配内容图像和样式图像的特征分布来混合它们,以生成与内容图像相似但在艺术上以样式化的图像样式绘制的最终图像。 可以在 TensorFlow 中以两种不同方式完成样式转移: 神经样式转移是一种技术,您可以通过匹配内容图像和样式图像的特征分布来混合它们,以生成与内容图像相似但在艺术上以样式化的图像样式绘制的最终图像。 可以在 TensorFlow 中以两种不同方式完成样式转移:
* 在 TensorFlow Hub 中使用预训练的模型。 这是您上传图像和样式的地方,该工具包将生成样式输出。 您可以在 [https://colab.research.google.com/github/tensorflow/hub/blob/master/examples/colab/tf2_arbitrary_image_stylization.ipynb](https://colab.research.google.com/github/tensorflow/hub/blob/master/examples/colab/tf2_arbitrary_image_stylization.ipynb) 上上传图像。 请注意,TensorFlow Hub 是许多预训练网络的来源。 * 在 TensorFlow Hub 中使用预训练的模型。 这是您上传图像和样式的地方,该工具包将生成样式输出。 您可以在[这个页面](https://colab.research.google.com/github/tensorflow/hub/blob/master/examples/colab/tf2_arbitrary_image_stylization.ipynb)上上传图像。 请注意,TensorFlow Hub 是许多预训练网络的来源。
* 通过训练神经网络来开发自己的模型。 为此,请按照下列步骤操作: * 通过训练神经网络来开发自己的模型。 为此,请按照下列步骤操作:
1. 选择 VGG19 网络-它具有五个卷积(Conv2D)网络,每个 Conv2D 具有四层,然后是完全连接的层。 1. 选择 VGG19 网络-它具有五个卷积(Conv2D)网络,每个 Conv2D 具有四层,然后是完全连接的层。
2. 通过 VGG19 网络加载内容图像。 2. 通过 VGG19 网络加载内容图像。
...@@ -288,7 +288,7 @@ content_loss *= content_weight / num_content_layers ...@@ -288,7 +288,7 @@ content_loss *= content_weight / num_content_layers
loss = style_loss + content_loss loss = style_loss + content_loss
``` ```
可以从 TensorFlow 教程中的 [https://www.tensorflow.org/tutorials/generative/style_transfer](https://www.tensorflow.org/tutorials/generative/style_transfer) 获得最终代码。 代码结构如此处所述。 我在以下图像上运行它,其输出如下: 可以从 [TensorFlow 教程](https://www.tensorflow.org/tutorials/generative/style_transfer)获得最终代码。 代码结构如此处所述。 我在以下图像上运行它,其输出如下:
![](img/e65743a6-2ad0-4a52-8af8-568f7cf61336.png) ![](img/e65743a6-2ad0-4a52-8af8-568f7cf61336.png)
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
# OpenPose 背后的理论 # OpenPose 背后的理论
OpenPose 是第一个针对图像或视频中的多个人的开源实时二维姿态估计系统。 它主要由**卡内基梅隆大学****CMU** )的学生和教职员工开发。 论文的标题是 *OpenPose:使用零件亲和力字段进行实时多人 2D 姿势估计*,作者是 Zhe Cao,Gines Hidalgo,Tomas Simon,Shih-En-Wei 和 Yaser Sheikh。 您可以在 [https://arxiv.org/abs/1812.08008](https://arxiv.org/abs/1812.08008) 上找到该论文。 OpenPose 是第一个针对图像或视频中的多个人的开源实时二维姿态估计系统。 它主要由**卡内基梅隆大学****CMU** )的学生和教职员工开发。 论文的标题是 *OpenPose:使用零件亲和力字段进行实时多人 2D 姿势估计*,作者是 Zhe Cao,Gines Hidalgo,Tomas Simon,Shih-En-Wei 和 Yaser Sheikh。 您可以在[这个页面](https://arxiv.org/abs/1812.08008)上找到该论文。
请注意,OpenPose 首次出现在 CVPR 2017 中,题目为*,使用部分相似性字段*进行实时多人 2D 姿势估计,可在[中找到 https://arxiv.org/abs /1611.08050](https://arxiv.org/abs/1611.08050) 。 接下来是 2018 年的论文 *OpenPose:使用零件相似性字段的实时多人 2D 姿势估计*,网络得到了进一步改善。 请注意,OpenPose 首次出现在 CVPR 2017 中,题目为*,使用部分相似性字段*进行实时多人 2D 姿势估计,可在[中找到 https://arxiv.org/abs /1611.08050](https://arxiv.org/abs/1611.08050) 。 接下来是 2018 年的论文 *OpenPose:使用零件相似性字段的实时多人 2D 姿势估计*,网络得到了进一步改善。
...@@ -37,7 +37,7 @@ OpenPose 是第一个针对图像或视频中的多个人的开源实时二维 ...@@ -37,7 +37,7 @@ OpenPose 是第一个针对图像或视频中的多个人的开源实时二维
* OpenPose 是第一个实时多人系统,使用三个独立的 CNN 块检测 135 个关键点:(a)身体和脚部检测,(b)手部检测和(c)人脸检测。 * OpenPose 是第一个实时多人系统,使用三个独立的 CNN 块检测 135 个关键点:(a)身体和脚部检测,(b)手部检测和(c)人脸检测。
* 在对象检测讨论([第 5 章](../Text/5.html)*神经网络体系结构和模型*[第 7 章](../Text/7.html)*使用 YOLO* 进行对象检测)中,我们 发现,与诸如 SSD 或 YOLO 等单次检测方法相比,诸如 Faster R-CNN 之类的区域提议方法可带来更高的准确性,但速度却更低。 同样,对于人体姿势估计,自下而上的方法与自下而上的方法相比,具有较高的准确性,但速度较低。 自上而下的方法分别为每个由人组成的边界框提供图像。 自下而上的方法提供了由一个人的多个边界框组成的整个图像,从而产生了一个较小分辨率的人的图像。 * 在对象检测讨论([第 5 章](../Text/5.html)*神经网络体系结构和模型*[第 7 章](../Text/7.html)*使用 YOLO* 进行对象检测)中,我们 发现,与诸如 SSD 或 YOLO 等单次检测方法相比,诸如 Faster R-CNN 之类的区域提议方法可带来更高的准确性,但速度却更低。 同样,对于人体姿势估计,自下而上的方法与自下而上的方法相比,具有较高的准确性,但速度较低。 自上而下的方法分别为每个由人组成的边界框提供图像。 自下而上的方法提供了由一个人的多个边界框组成的整个图像,从而产生了一个较小分辨率的人的图像。
在 2019 年,OpenPose 的作者以及其他一些人(Gines Hidalgo,Yaadhav Raaj,Haroon Idrees,Donglai Xiang,Hanbyul Joo,Tomas Simon1 和 Yaser Sheikh)提高了 OpenPose 的准确性和检测时间。 HTG0]单网络全身姿势估计。 您可以在 [https://arxiv.org/abs/1909.13423](https://arxiv.org/abs/1909.13423) 上找到本文。 在 2019 年,OpenPose 的作者以及其他一些人(Gines Hidalgo,Yaadhav Raaj,Haroon Idrees,Donglai Xiang,Hanbyul Joo,Tomas Simon1 和 Yaser Sheikh)提高了 OpenPose 的准确性和检测时间。 HTG0]单网络全身姿势估计。 您可以在[这个页面](https://arxiv.org/abs/1909.13423)上找到本文。
主要功能如下: 主要功能如下:
...@@ -48,7 +48,7 @@ OpenPose 是第一个针对图像或视频中的多个人的开源实时二维 ...@@ -48,7 +48,7 @@ OpenPose 是第一个针对图像或视频中的多个人的开源实时二维
# 了解 OpenPose 代码 # 了解 OpenPose 代码
CMU 使用 OpenPose 模型,而 OpenCV 在其新的**深层神经网络****DNN** )框架中集成了经过预训练的 OpenPose 模型。 可以从下面的 GitHub 页面下载整个代码块。 该模型使用 TensorFlow 示例,而不是 OpenPose 作者最初使用的 Caffe 模型,可以在 [https://github.com/quanhua92/human-pose-estimation-opencv](https://github.com/quanhua92/human-pose-estimation-opencv) 中找到。 CMU 使用 OpenPose 模型,而 OpenCV 在其新的**深层神经网络****DNN** )框架中集成了经过预训练的 OpenPose 模型。 可以从下面的 GitHub 页面下载整个代码块。 该模型使用 TensorFlow 示例,而不是 OpenPose 作者最初使用的 Caffe 模型,可以在[这个页面](https://github.com/quanhua92/human-pose-estimation-opencv)中找到。
可以使用以下命令在终端中执行 OpenCV 的 OpenPose 代码: 可以使用以下命令在终端中执行 OpenCV 的 OpenPose 代码:
...@@ -88,7 +88,7 @@ POSE_PAIRS = [ ["Neck", "RShoulder"], ["Neck", "LShoulder"], ["RShoulder", "RElb ...@@ -88,7 +88,7 @@ POSE_PAIRS = [ ["Neck", "RShoulder"], ["Neck", "LShoulder"], ["RShoulder", "RElb
net = cv.dnn.readNetFromTensorflow("graph_opt.pb") net = cv.dnn.readNetFromTensorflow("graph_opt.pb")
``` ```
使用 tf-pose-estimation 在 TensorFlow 中实现 OpenPose。 TensorFlow / model / graph 的实际 GitHub 页面可在 [https://github.com/ildoonet/tf-pose-estimation/blob/master/models/graph/mobilenet_thin/graph_opt.pb](https://github.com/ildoonet/tf-pose-estimation/blob/master/models/graph/mobilenet_thin/graph_opt.pb) 中找到。 请注意,可以在 [https://arxiv.org/abs/1704.04861](https://arxiv.org/abs/1704.04861) 中找到 MobileNetV1 的描述。 使用 tf-pose-estimation 在 TensorFlow 中实现 OpenPose。 TensorFlow / model / graph 的实际 GitHub 页面可在[这个页面](https://github.com/ildoonet/tf-pose-estimation/blob/master/models/graph/mobilenet_thin/graph_opt.pb)中找到。 请注意,可以在[这个页面](https://arxiv.org/abs/1704.04861)中找到 MobileNetV1 的描述。
3. 接下来,使用`cv.dnn.blobFromImage`对图像进行预处理(执行减法和缩放): 3. 接下来,使用`cv.dnn.blobFromImage`对图像进行预处理(执行减法和缩放):
...@@ -138,7 +138,7 @@ for pair in POSE_PAIRS: ...@@ -138,7 +138,7 @@ for pair in POSE_PAIRS:
# 人体姿势估计–堆叠沙漏模型 # 人体姿势估计–堆叠沙漏模型
堆叠沙漏模型是由 Alejandro Newell,Kaiyu Yang 和 Jia Deng 于 2016 年在他们的论文*用于人体姿势估计的堆叠沙漏网络*中开发的。 可以在 [https://arxiv.org/abs/1603.06937](https://arxiv.org/abs/1603.06937) 中找到该模型的详细信息。 堆叠沙漏模型是由 Alejandro Newell,Kaiyu Yang 和 Jia Deng 于 2016 年在他们的论文*用于人体姿势估计的堆叠沙漏网络*中开发的。 可以在[这个页面](https://arxiv.org/abs/1603.06937)中找到该模型的详细信息。
下图说明了该模型的体系结构: 下图说明了该模型的体系结构:
...@@ -159,7 +159,7 @@ for pair in POSE_PAIRS: ...@@ -159,7 +159,7 @@ for pair in POSE_PAIRS:
* 最后的标题块由两个 1 x 1 Conv2D 组成。 * 最后的标题块由两个 1 x 1 Conv2D 组成。
* 表现最佳的是将八个沙漏模块堆叠在一起。 每个沙漏模块在每个分辨率下都有一个残差模块。 * 表现最佳的是将八个沙漏模块堆叠在一起。 每个沙漏模块在每个分辨率下都有一个残差模块。
* 该模型大约需要进行 40,000 次迭代,以达到 70%以上的精度。 * 该模型大约需要进行 40,000 次迭代,以达到 70%以上的精度。
* 培训过程需要 FLIC 约 5,000 张图像(用于培训的 4,000 张和用于测试的 1,000 张)和用于 MPII 的 40,000 张带批注的样本(用于培训的 28,000 张和用于测试的 12,000 张)。 电影院(FLIC,可从 [https://bensapp.github.io/flic-dataset.html](https://bensapp.github.io/flic-dataset.html) )和 MPII( [http://human-pose.mpi-inf.mpg .de](http://human-pose.mpi-inf.mpg.de)是两个姿势估计数据库。 FLIC 由从胶片中获取的 5003 张图像(用于培训的 3987 张图像和用于测试的 1,016 张图像)组成,而 MPII 由 40,000 个带注释的样本(用于培训的 28,000 张图像和用于测试的 12,000 张)组成。 * 培训过程需要 FLIC 约 5,000 张图像(用于培训的 4,000 张和用于测试的 1,000 张)和用于 MPII 的 40,000 张带批注的样本(用于培训的 28,000 张和用于测试的 12,000 张)。 [FLIC](https://bensapp.github.io/flic-dataset.html)[MPII](http://human-pose.mpi-inf.mpg.de) 是两个姿势估计数据库。 FLIC 由从胶片中获取的 5003 张图像(用于培训的 3987 张图像和用于测试的 1,016 张图像)组成,而 MPII 由 40,000 个带注释的样本(用于培训的 28,000 张图像和用于测试的 12,000 张)组成。
* 该网络在 Torch 7 上进行了培训,学习率为 2.5e-4。 在 12 GB 的 NVIDIA Titan X GPU 上进行培训大约需要 3 天。 * 该网络在 Torch 7 上进行了培训,学习率为 2.5e-4。 在 12 GB 的 NVIDIA Titan X GPU 上进行培训大约需要 3 天。
# 了解沙漏模型 # 了解沙漏模型
...@@ -183,7 +183,7 @@ for pair in POSE_PAIRS: ...@@ -183,7 +183,7 @@ for pair in POSE_PAIRS:
* 使用前面描述的损失函数分别训练教师模型和目标模型。 * 使用前面描述的损失函数分别训练教师模型和目标模型。
可在 [https://github.com/yuanyuanli85/Stacked_Hourglass_Network_Keras](https://github.com/yuanyuanli85/Stacked_Hourglass_Network_Keras) 中找到该模型的 Keras 实现。 可在[这个页面](https://github.com/yuanyuanli85/Stacked_Hourglass_Network_Keras)中找到该模型的 Keras 实现。
请注意,下一部分的目的是详细解释沙漏网络的代码。 这是一个复杂的神经网络模型,其想法是,一旦掌握了这些代码,您就应该能够自己构建一个非常复杂的神经网络模型。 我们不会在前面的 GitHub 页面上详细说明如何运行代码。 请注意,下一部分的目的是详细解释沙漏网络的代码。 这是一个复杂的神经网络模型,其想法是,一旦掌握了这些代码,您就应该能够自己构建一个非常复杂的神经网络模型。 我们不会在前面的 GitHub 页面上详细说明如何运行代码。
...@@ -250,7 +250,7 @@ xnet.train(epochs=args.epochs, model_path=args.model_path, batch_size=args.batch ...@@ -250,7 +250,7 @@ xnet.train(epochs=args.epochs, model_path=args.model_path, batch_size=args.batch
沙漏网络已被描述。 在本节中,我们将解释培训网络背后的代码。 沙漏网络已被描述。 在本节中,我们将解释培训网络背后的代码。
如果您想训练自己的沙漏网络,请按照 [https://github.com/yuanyuanli85/Stacked_Hourglass_Network_Keras](https://github.com/yuanyuanli85/Stacked_Hourglass_Network_Keras) 上的说明进行操作。 如果您想训练自己的沙漏网络,请按照[这个页面](https://github.com/yuanyuanli85/Stacked_Hourglass_Network_Keras)上的说明进行操作。
训练沙漏网络的代码如下: 训练沙漏网络的代码如下:
...@@ -427,7 +427,7 @@ PoseNet 基于 Google 的两篇论文。 一种使用自上而下的方法,而 ...@@ -427,7 +427,7 @@ PoseNet 基于 Google 的两篇论文。 一种使用自上而下的方法,而
# 自上而下的方法 # 自上而下的方法
第一篇论文的标题为*,其目的是在野外进行准确的多人姿势估计*,由 George Papandreou,Tyler Zhu,Nori Kanazawa,Alexander Toshev,Jonathan Tompson,Chris Bregler 和 Kevin Murphy 撰写。 您可以在 [https://arxiv.org/abs/1701.01779](https://arxiv.org/abs/1701.01779) 上找到该论文。 第一篇论文的标题为*,其目的是在野外进行准确的多人姿势估计*,由 George Papandreou,Tyler Zhu,Nori Kanazawa,Alexander Toshev,Jonathan Tompson,Chris Bregler 和 Kevin Murphy 撰写。 您可以在[这个页面](https://arxiv.org/abs/1701.01779)上找到该论文。
这是一种由上而下的两阶段方法: 这是一种由上而下的两阶段方法:
...@@ -436,23 +436,23 @@ PoseNet 基于 Google 的两篇论文。 一种使用自上而下的方法,而 ...@@ -436,23 +436,23 @@ PoseNet 基于 Google 的两篇论文。 一种使用自上而下的方法,而
# 自下而上的方法 # 自下而上的方法
第二篇论文的标题为 *PersonLab:具有自下而上的,基于零件的几何嵌入模型*的人员姿势估计和实例细分,由第一篇论文的许多相同作者撰写; 分别是 George Papandreou,Tyler Zhu,Chen-Chieh Chen,Spyros Gidaris,Jonathan Tompson 和 Kevin Murphy。 您可以在 [https://arxiv.org/abs/1803.08225](https://arxiv.org/abs/1803.08225) 上找到该论文。 第二篇论文的标题为 *PersonLab:具有自下而上的,基于零件的几何嵌入模型*的人员姿势估计和实例细分,由第一篇论文的许多相同作者撰写; 分别是 George Papandreou,Tyler Zhu,Chen-Chieh Chen,Spyros Gidaris,Jonathan Tompson 和 Kevin Murphy。 您可以在[这个页面](https://arxiv.org/abs/1803.08225)上找到该论文。
在这种无框的,自下而上的方法中,作者使用卷积神经网络检测单个关键点及其相对位移,以将关键点分组为人的姿势实例。 另外,设计了几何嵌入描述符来确定人员分割。 该模型使用 ResNet-101 和 ResNet-152 体系结构进行训练。 在这种无框的,自下而上的方法中,作者使用卷积神经网络检测单个关键点及其相对位移,以将关键点分组为人的姿势实例。 另外,设计了几何嵌入描述符来确定人员分割。 该模型使用 ResNet-101 和 ResNet-152 体系结构进行训练。
像自顶向下方法一样,定义了一个 32 像素大小的半径,对应于 17 个关键点中的每一个。 然后,如果图像中的空间位置在关键点位置的半径之内,则以热图概率 1 定义 17 个独立的二元分类任务; 否则,将其设置为 0。与自顶向下方法一样,图像位置和关键点之间的距离也称为短距离偏移矢量。 因此,存在 17 个这样的偏移矢量。 与自顶向下方法一样,热图和偏移向量使用二维 Hough 得分图分组在一起。 像自顶向下方法一样,定义了一个 32 像素大小的半径,对应于 17 个关键点中的每一个。 然后,如果图像中的空间位置在关键点位置的半径之内,则以热图概率 1 定义 17 个独立的二元分类任务; 否则,将其设置为 0。与自顶向下方法一样,图像位置和关键点之间的距离也称为短距离偏移矢量。 因此,存在 17 个这样的偏移矢量。 与自顶向下方法一样,热图和偏移向量使用二维 Hough 得分图分组在一起。
在这种方法中,我们有一个与关键点相关联的人,但是当图像中存在多个人的实例时,这不允许我们对每个人的关键点进行分组。 为了解决这个问题,开发了 32 个独立的中距离二维偏移量字段来连接成对的关键点。 除此之外,还开发了一个由单个 1 x 1 Conv2D 图层组成的简单语义分割模型,该模型可以执行密集逻辑回归并计算每个图像像素至少属于一个人的概率。 语义分段的详细信息在[第 8 章](../Text/8.html)*语义分段和神经样式转换* [中进行了描述。](https://cdp.packtpub.com/mastering_computer_vision_with_tensorflow_2_0/wp-admin/post.php?post=31&action=edit) 在这种方法中,我们有一个与关键点相关联的人,但是当图像中存在多个人的实例时,这不允许我们对每个人的关键点进行分组。 为了解决这个问题,开发了 32 个独立的中距离二维偏移量字段来连接成对的关键点。 除此之外,还开发了一个由单个 1 x 1 Conv2D 图层组成的简单语义分割模型,该模型可以执行密集逻辑回归并计算每个图像像素至少属于一个人的概率。 语义分段的详细信息在[第 8 章](../Text/8.html)[《语义分段和神经样式转换》](https://cdp.packtpub.com/mastering_computer_vision_with_tensorflow_2_0/wp-admin/post.php?post=31&action=edit)中进行了描述。
有关预测图像的信息,请参阅以下有关自上而下与自下而上的文章: [https://arxiv.org/abs/1701.01779](https://arxiv.org/abs/1701.01779)[https://arxiv.org/abs/ 1803.08225](https://arxiv.org/abs/1803.08225) 。 这两篇论文都包含大量示例图像。 有关预测图像的信息,[请参阅以下有关自上而下与自下而上的文章](https://arxiv.org/abs/1701.01779)[这个](https://arxiv.org/abs/1803.08225)。 这两篇论文都包含大量示例图像。
预测关键点在两种方法之间或多或少是相同的,但是自上而下的方法从绘制边界框开始,而自下而上的方法执行语义分割。 预测关键点在两种方法之间或多或少是相同的,但是自上而下的方法从绘制边界框开始,而自下而上的方法执行语义分割。
# PoseNet 实施 # PoseNet 实施
到目前为止,我们已经讨论了 PoseNet 自上而下和自下而上方法背后的理论。 在本节中,我们将使用 PoseNet 识别这些操作。 有关如何实现 PoseNet 模型的详细信息,请参见 [https://github.com/tensorflow/tfjs-models/tree/master/posenet](https://github.com/tensorflow/tfjs-models/tree/master/posenet) 。 查看此链接以了解 PoseNet 的文档。 到目前为止,我们已经讨论了 PoseNet 自上而下和自下而上方法背后的理论。 在本节中,我们将使用 PoseNet 识别这些操作。 有关如何实现 PoseNet 模型的详细信息,请参见[这里](https://github.com/tensorflow/tfjs-models/tree/master/posenet)。 查看此链接以了解 PoseNet 的文档。
接下来,我们将进行现场演示。 此实时演示是使用网络摄像头完成的,可以通过在网络浏览器中键入以下链接来启动: [https://storage.googleapis.com/tfjs-models/demos/posenet/camera.html](https://storage.googleapis.com/tfjs-models/demos/posenet/camera.html) 接下来,我们将进行现场演示。 此实时演示是使用网络摄像头完成的,[可以通过在网络浏览器中键入以下链接来启动](https://storage.googleapis.com/tfjs-models/demos/posenet/camera.html)
尽管自上而下和自下而上的方法使用 ResNet-101 模型,但 PoseNet 模型使用 MobileNetV1 或 ResNet-50。 下表说明了它们之间的区别: 尽管自上而下和自下而上的方法使用 ResNet-101 模型,但 PoseNet 模型使用 MobileNetV1 或 ResNet-50。 下表说明了它们之间的区别:
...@@ -510,7 +510,7 @@ PoseNet 网站说明了如何调整模型参数。 可以使用以下屏幕快 ...@@ -510,7 +510,7 @@ PoseNet 网站说明了如何调整模型参数。 可以使用以下屏幕快
3. **开发 CNN 模型并对其进行训练**:一层或两层密集层,最后具有 flatten 和 softmax 功能。 3. **开发 CNN 模型并对其进行训练**:一层或两层密集层,最后具有 flatten 和 softmax 功能。
4. **检查测试数据**:对照测试数据验证数据。 4. **检查测试数据**:对照测试数据验证数据。
请参阅以下 GitHub 页面上的代码,以获取遵循这些步骤的代码示例: [https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter09 /Chapter9_TF_Accelerometer_activity.ipynb](https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter09/Chapter9_TF_Accelerometer_activity.ipynb) 请参阅以下 GitHub 页面上的代码,[以获取遵循这些步骤的代码示例](https://github.com/PacktPublishing/Mastering-Computer-Vision-with-TensorFlow-2.0/blob/master/Chapter09/Chapter9_TF_Accelerometer_activity.ipynb)
在上一个链接中可以找到两个文件:`Chapter9_TF_Accelerometer_activity.ipynb``sample.csv`。 下载两个文件,并将它们放在同一文件夹下。 在上一个链接中可以找到两个文件:`Chapter9_TF_Accelerometer_activity.ipynb``sample.csv`。 下载两个文件,并将它们放在同一文件夹下。
...@@ -536,7 +536,7 @@ PoseNet 网站说明了如何调整模型参数。 可以使用以下屏幕快 ...@@ -536,7 +536,7 @@ PoseNet 网站说明了如何调整模型参数。 可以使用以下屏幕快
# 将基于视频的动作与姿势估计相结合 # 将基于视频的动作与姿势估计相结合
动作识别可以是二维的,也可以是三维的。 二维动作识别方法使用人体的关节信息,以关键点表示。 这些关键点以称为特征图的向量表示。 另一方面,三维动作识别方法不仅需要特征图,还需要全身的骨架数据。 可以使用深度传感器(例如 Microsoft Kinect 或 Intel RealSense)获得此数据。 在 2018 年,Diogo C.Luvizon,David Picard 和 Hedi Tabia 介绍了他们的论文 *2D / 3D 姿势估计和使用多任务深度学习的动作识别*。 可以在 [https://arxiv.org/abs/1802.09232](https://arxiv.org/abs/1802.09232) 中找到本文的详细信息。 动作识别可以是二维的,也可以是三维的。 二维动作识别方法使用人体的关节信息,以关键点表示。 这些关键点以称为特征图的向量表示。 另一方面,三维动作识别方法不仅需要特征图,还需要全身的骨架数据。 可以使用深度传感器(例如 Microsoft Kinect 或 Intel RealSense)获得此数据。 在 2018 年,Diogo C.Luvizon,David Picard 和 Hedi Tabia 介绍了他们的论文 *2D / 3D 姿势估计和使用多任务深度学习的动作识别*。 可以在[这里](https://arxiv.org/abs/1802.09232)中找到本文的详细信息。
在本文中,作者在一个多任务框架中将基于高级人体关节的姿势信息与低级视觉特征(来自对象识别和特征识别)集成在一起。 该方法能够进行二维和三维动作识别。 使用体积表示将二维姿态图扩展为三维图。 在本文中,作者在一个多任务框架中将基于高级人体关节的姿势信息与低级视觉特征(来自对象识别和特征识别)集成在一起。 该方法能够进行二维和三维动作识别。 使用体积表示将二维姿态图扩展为三维图。
...@@ -544,7 +544,7 @@ PoseNet 网站说明了如何调整模型参数。 可以使用以下屏幕快 ...@@ -544,7 +544,7 @@ PoseNet 网站说明了如何调整模型参数。 可以使用以下屏幕快
# 使用 4D 方法进行动作识别 # 使用 4D 方法进行动作识别
4D 动作识别意味着体积表示的三维动作是时间的函数。 可以将其视为对动作进行批量跟踪。 全全友和郝江提出了一种新颖的 4D 方法,名为 *Action4D:人群和杂物中的在线动作识别。* 可以在 [http://openaccess.thecvf.com/content_CVPR_2019/html/You_Action4D_Online_Action_Recognition_in_the_Crowd_and_Clutter_CVPR_2019_paper.html](http://www.hao-jiang.net/papers/conference/cvpr2019.pdf) 中找到本文的详细信息。 4D 动作识别意味着体积表示的三维动作是时间的函数。 可以将其视为对动作进行批量跟踪。 全全友和郝江提出了一种新颖的 4D 方法,名为 *Action4D:人群和杂物中的在线动作识别。* 可以在[这个页面](http://www.hao-jiang.net/papers/conference/cvpr2019.pdf)中找到本文的详细信息。
该方法使用 4D 表示跟踪人类,并在混乱和拥挤的环境中识别他们的行为。 本文的概念如下: 该方法使用 4D 表示跟踪人类,并在混乱和拥挤的环境中识别他们的行为。 本文的概念如下:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册