From 83f93b3492841921fed2bb9c85e8e894b638785f Mon Sep 17 00:00:00 2001 From: wizardforcel <562826179@qq.com> Date: Sat, 2 Jan 2021 17:39:14 +0800 Subject: [PATCH] 2021-01-02 17:39:14 --- new/adv-dl-tf2-keras/11.md | 24 ++++++++++++------------ new/adv-dl-tf2-keras/12.md | 4 ++-- new/adv-dl-tf2-keras/13.md | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/new/adv-dl-tf2-keras/11.md b/new/adv-dl-tf2-keras/11.md index a45da6c8..f1bc9878 100644 --- a/new/adv-dl-tf2-keras/11.md +++ b/new/adv-dl-tf2-keras/11.md @@ -278,7 +278,7 @@ def centroid2minmax(boxes): 从“图 11.2.3”看来,给定一个对象边界框,有许多可以分配给对象的地面真相锚定框。 实际上,仅出于“图 11.2.3”中的说明,已经有 3 个锚定框。 如果考虑每个区域的所有锚框,则仅针对![](img/B14853_11_021.png)就有 6 x 6 = 36 个地面真实框。 使用所有 9,648 个锚点框显然过多。 所有锚定框中只有一个应与地面真值边界框相关联。 所有其他锚点框都是背景锚点框。 选择哪个对象应被视为图像中对象的地面真相锚定框的标准是什么? -选择锚框的基础称为**联合上方的交叉点**(**IoU**)。 IoU 也称为 *Jaccard index* 。 在“图 11.3.1”中说明了 IoU。 给定 2 个区域,对象边界框`B[0]`和锚定框`A[1]`,IoU 等于 重叠除以合并区域的面积: +选择锚框的基础称为**联合上方的交叉点**(**IoU**)。 IoU 也称为 *Jaccard 指数*。 在“图 11.3.1”中说明了 IoU。 给定 2 个区域,对象边界框`B[0]`和锚定框`A[1]`,IoU 等于 重叠除以合并区域的面积: ![](img/B14853_11_022.png) (Equation 11.3.1) @@ -292,7 +292,7 @@ def centroid2minmax(boxes): 请注意,对于每个对象,只有一个基于“公式 11.3.2”的地面真值锚定框。 此外,必须在所有比例因子和尺寸(长宽比和附加尺寸)中对所有锚框进行最大化。 在“图 11.3.1”中,在 9,648 个锚框中仅显示了一个比例因子大小。 -为了说明“公式 11.3.2”,假设考虑了*中纵横比为 1 的锚框。图 11.3.1* 。 对于每个锚框,估计的 IoU 均显示在“表 11.3.1”中。 由于边界框`B[0]`的最大 IoU 为 0.32,因此带有锚框`A[1]`,`A[1]`被分配为地面真值边界框`B[0]`。`A[1]`也被称为**阳性锚盒**。 +为了说明“公式 11.3.2”,假设考虑了“图 11.3.1”中纵横比为 1 的锚框。 对于每个锚框,估计的 IoU 均显示在“表 11.3.1”中。 由于边界框`B[0]`的最大 IoU 为 0.32,因此带有锚框`A[1]`,`A[1]`被分配为地面真值边界框`B[0]`。`A[1]`也被称为**阳性锚盒**。 正锚定框的类别和偏移量是相对于其地面真值边界框确定的。 正锚定框的类别与其地面真值边界框相同。 同时,可以将正锚框偏移量计算为等于地面真实边界框坐标减去其自身的边界框坐标。 @@ -310,7 +310,7 @@ def centroid2minmax(boxes): |`A[4]`| 0.30 | |`A[5]`| 0 | -“表 11.3.1”每个锚框![](img/B14853_11_024.png)的 IoU,带有对象边界框`B[0]`,如图*所示。图 11.3.1* 。 +“表 11.3.1”每个锚框![](img/B14853_11_024.png)的 IoU,带有对象边界框`B[0]`,如“图 11.3.1”所示。 如果加载了另一个带有 2 个要检测的对象的图像,我们将寻找 2 个正 IoU,最大 IoU,并带有边界框`B[0]`和`B[1]`。 然后,我们使用边界框`B[0]`和`B[1]`寻找满足最小 IoU 准则的额外正锚框。 @@ -560,7 +560,7 @@ gt_class[1] = [0.0, 0.0, 1.0, 0.0] 总的损失函数为: -*![](img/B14853_11_081.png)* (Equation 11.4.1) +![](img/B14853_11_081.png) (Equation 11.4.1) 对于每个定位框,网络都会预测以下内容: @@ -882,7 +882,7 @@ class SSD: “列表 11.7.2”显示了 SSD 对象中的另一种重要方法`train()`。 指示了使用默认损耗函数或改进的损耗函数的选项,如先前部分所述。 还有一个选项可以选择仅平滑 L1。 -`self.ssd.fit_generator()`是此功能中最重要的调用。 它借助多线程数据生成器启动有监督的培训。 在每个时期,都会执行两个回调函数。 首先,将模型权重保存到文件中。 然后,对于 ResNet 模型,以与“第 2 章”,*深层神经网络*相同的方式使用的改进的学习率调度程序称为: +`self.ssd.fit_generator()`是此功能中最重要的调用。 它借助多线程数据生成器启动有监督的培训。 在每个时期,都会执行两个回调函数。 首先,将模型权重保存到文件中。 然后,对于 ResNet 模型,以与“第 2 章”,“深度神经网络”相同的方式使用的改进的学习率调度程序称为: “列表 11.7.2”:`ssd-11.6.1.py` @@ -939,7 +939,7 @@ class SSD: “列表 11.8.1”显示了 SSD 模型创建功能`build_ssd()`。 该模型在“图 11.5.1”中进行了说明。 该函数通过调用`base_outputs = backbone(inputs)`从骨干网或基础网络检索输出特征的`n_layers`。 -在本书中,`backbone()`是`build_resnet()`。 `build_resnet()`可以生成的 ResNet 模型类似于“第 2 章”,*深层神经网络*中讨论的残差网络。 `build_resnet()`功能可以由构建基础网络的任何功能名称代替。 +在本书中,`backbone()`是`build_resnet()`。 `build_resnet()`可以生成的 ResNet 模型类似于“第 2 章”,“深度神经网络”中讨论的残差网络。 `build_resnet()`功能可以由构建基础网络的任何功能名称代替。 如图“图 11.5.1”所示,返回值`base_outputs`是输出要素的列表,这些要素将作为类别和偏移预测层的输入。 例如,第一输出`base_outputs[0]`用于生成`n[1]`类预测和`n[1]`偏移量预测。 @@ -1181,7 +1181,7 @@ class DataGenerator(Sequence): 样本数据增强功能也包括在内,但此处不再讨论,例如添加随机噪声,强度重新缩放和曝光调整。 `__data_generation()`返回输入`x`和输出`y`对,其中张量`x`存储输入图像,而张量`y`捆绑类,偏移量 ,和面具一起。 -*清单 11.9.2:* `data_generator.py` +“列表 11.9.2”:`data_generator.py` ```py import layer_utils @@ -1337,11 +1337,11 @@ python3 ssd-11.6.1.py --train 图 11.12.1 网络预测了汽水罐对象的两个重叠边界框。 只选择一个有效的边界框,即得分为 0.99 的边界框。 -在经典 NMS 中,基于概率选择最终边界框,并将其存储在列表 *![](img/B14853_11_082.png)* 中,并带有相应的分数 *![](img/B14853_11_083.png)* 。 所有边界框和相应的概率都存储在初始列表 *![](img/B14853_11_078.png)* 和 *![](img/B14853_11_077.png)* 中。 在第 3 行和第 4 行中,将具有最高分数`p[m]`的边界框用作参考,`b[m]`。 +在经典 NMS 中,基于概率选择最终边界框,并将其存储在列表`D`中,并带有相应的分数`S`。 所有边界框和相应的概率都存储在初始列表`B`和`P`中。 在第 3 行和第 4 行中,将具有最高分数`p[m]`的边界框用作参考,`b[m]`。 -参考边界框被添加到最终选择的边界框 *![](img/B14853_11_082.png)* 的列表中,并从列表 *![](img/B14853_11_078.png)* 中删除,如第 5 行所示。 列出 *![](img/B14853_11_083.png)* ,并从 *![](img/B14853_11_0771.png)* 中删除。 对于其余边界框,如果 *IoU* 与`b[m]`大于或等于设置的阈值`N[t]`,将其从 *![](img/B14853_11_078.png)* 中删除。 其相应的分数也从 *![](img/B14853_11_0771.png)* 中删除。 +参考边界框被添加到最终选择的边界框`D`的列表中,并从列表`B`中删除,如第 5 行所示。 并且列表`S`从`P`中删除。 对于其余边界框,如果 *IoU* 与`b[m]`大于或等于设置的阈值`N[t]`,将其从`B`中删除。 其相应的分数也从`P`中删除。 -步骤在第 6 和 9-11 行中显示。 这些步骤将删除所有分数较小的冗余边界框。 在检查完所有其余的边界框之后,重复从第 3 行开始的过程。 该过程继续进行,直到边界框 *![](img/B14853_11_078.png)* 的列表为空。 该算法返回选定的边界框 *![](img/B14853_11_082.png)* 和相应的分数 *![](img/B14853_11_083.png)。* +步骤在第 6 和 9-11 行中显示。 这些步骤将删除所有分数较小的冗余边界框。 在检查完所有其余的边界框之后,重复从第 3 行开始的过程。 该过程继续进行,直到边界框`B`的列表为空。 该算法返回选定的边界框`D`和相应的分数`S`。 经典 NMS 的问题是边界盒包含另一个对象,但其中的 *IoU* 和`b[m]`会从列表中删除。 Soft NMS [6]提出,与其从列表中彻底删除,不如以`b[m]`,如第 8 行所示。 @@ -1373,7 +1373,7 @@ python3 ssd-11.6.1.py --train 1. 返回![](img/B14853_11_073.png) -*列表 11.12.1* :`boxes.py` +“列表 11.12.1”:`boxes.py` ```py def nms(args, classes, offsets, anchors): @@ -1531,7 +1531,7 @@ python3 ssd-11.6.1.py --restore-weights=ResNet56v2-4layer-extra_anchors-drinks-2 如果型号权重文件名中包含单词`norm`,请附加`--normalize option`。 -*列表 11.13.1* :`ssd-11.6.1.py` +“列表 11.13.1”:`ssd-11.6.1.py` ```py def evaluate_test(self): diff --git a/new/adv-dl-tf2-keras/12.md b/new/adv-dl-tf2-keras/12.md index 183cd567..546f1bc8 100644 --- a/new/adv-dl-tf2-keras/12.md +++ b/new/adv-dl-tf2-keras/12.md @@ -78,9 +78,9 @@ FCN 和 PSPNet 都对要素金字塔进行了上采样,以达到与第一组 # 3\. Keras 中的语义分割网络 -如图“图 12.2.3”所示,我们已经有了语义细分网络的一些关键构建块。 我们可以重用“第 2 章”,*深层神经网络*中介绍的 ResNet 模型。 我们只需要构建要素的金字塔以及上采样和预测层。 +如图“图 12.2.3”所示,我们已经有了语义细分网络的一些关键构建块。 我们可以重用“第 2 章”,“深度神经网络”中介绍的 ResNet 模型。 我们只需要构建要素的金字塔以及上采样和预测层。 -借用我们在“第 2 章”,*深层神经网络*中开发的 ResNet 模型,并在“第 11 章”,“对象检测”中重用了该模型, 我们提取具有四个级别的要素金字塔。“列表 12.3.1”显示了从 ResNet 提取要素的金字塔。 `conv_layer()`只是创建`Conv2D(strides=2)-BN-ReLU`层的辅助功能。 +借用我们在“第 2 章”,“深度神经网络”中开发的 ResNet 模型,并在“第 11 章”,“对象检测”中重用了该模型, 我们提取具有四个级别的要素金字塔。“列表 12.3.1”显示了从 ResNet 提取要素的金字塔。 `conv_layer()`只是创建`Conv2D(strides=2)-BN-ReLU`层的辅助功能。 “列表 12.3.1”:`resnet.py`: diff --git a/new/adv-dl-tf2-keras/13.md b/new/adv-dl-tf2-keras/13.md index e3850caa..3b9cbf62 100644 --- a/new/adv-dl-tf2-keras/13.md +++ b/new/adv-dl-tf2-keras/13.md @@ -671,7 +671,7 @@ python3 iic-13.5.1.py --heads=1 --train --save-weights=head1.h5 python3 iic-13.5.1.py --heads=1 --eval --restore-weights=head1-best.h5 ``` -总之,我们可以看到可以执行无监督分类。 结果实际上比我们在“第 2 章”,*深层神经网络*中检查的监督分类更好。 在以下各节中,我们将把注意力转向对连续随机变量的无监督学习。 +总之,我们可以看到可以执行无监督分类。 结果实际上比我们在“第 2 章”,“深度神经网络”中检查的监督分类更好。 在以下各节中,我们将把注意力转向对连续随机变量的无监督学习。 # 7.通过最大化连续随机变量的互信息进行无监督学习 -- GitLab