解答:池化层有两种实现方式,最大值池化和平均值池化,他们都有一个缺点,会造成信息的明显丢失(相比于卷积实现池化的功能来说,改变滑动窗口的步长) 。
Res Unit(残差单元) :表示将上一层的输出一分为二,一部分通过两个基础卷积模块得到输出,与另一部分进行求和,这样就能使得输出的残差不可能为 0,
从而有效的防止梯度消失或者梯度爆炸。
ResX : 是由不同的 Res Unit 组成。
多尺寸输出:用到 2 个上采样,注意 Concat 和 Add 的区别。
上采样原理:以特征图相邻像素值来预测中间位置的像素值,然后以这个值插入到中间位置,实现特征图尺寸的翻倍。
Concat : 特征图张量的拼接,拼接后尺寸不变,深度改变。
Add :特征图对应位置像素值的求和,求和后的尺寸和深度不发生改变。
输出
有三个输出,19 * 19 * 255,38 * 38 * 255,76 * 76 * 255
这三个输出有着怎样的物理含义 ?
解答:将输入图片网格化,网格化后的大小是 19 *19, 38 * 38,76 * 76,每个网格化后的小方格,也就是一个 grid cell,将要
预测 3 个 bounding box,每个 bounding box = 1 个置信度 + 4 个位置信息 + 类别总数(COCO 数据集就是 80)
为什么每个 grid cell 要预测 3 个 bounding box ?
解答:这样来理解,比如说,一个人站在一辆车的前面,从远处看,这个人和这辆车中心点是完全重合的,但是我们能够看清楚
人和车,但是如果中心点重合的对象超过 3 个,那么我们很有可能对第 4 个,第 5 个以及后面的对象就完全看不清楚了,
所以,这里的 3 表示对象中心点重叠的最大值。
bounding box 如此之多,如何确定最佳的 bounding box ?
解答:采用的 NMS(Non Maximum Suppression)非极大值抑制算法来去除重叠。
NMS 算法原理:> 将预测输出的 bounding boxes 放入到左边的列表中,以置信度来进行降序排列,找到置信度最大的 bounding box ,
比如说这里的 dog1,将 dog1 移出左边列表到右边列表中;
> 遍历左边列表,求出每个 bounding box 与 dog1 的交并比(IoU = Intersection over Union 两个框的交集/并集),
当然,要提前设定一个阈值(一般是 0.5),大于 0.5表示左边 bounding box 与 dog1 有高度的重叠,将这个 bounding box 去掉;
> 重复之前的操作,直至左边列表为空,右边列表得到的 bounding box 就是最佳的结果;
检测匹配问题,为什么 19 * 19 => 大对象 ? 38 * 38 => 中等对象 ? 76 * 76 => 小对象 ?