首发:AI公园公众号
作者:Ishan Bhatt
编译:ronghuaiyang
导读
可视化通常是开发人员解释他们的模型的唯一方法。
如果你对使用卷积神经网络(CNN)来解决计算机视觉(CV)问题感兴趣。如果你使用的是分类、检测或分割模型,请继续。理想情况下,我在这里描述的技巧(用代码)应该适用于任何使用卷积特征提取器(CONV-FE)的深度学习(Deep Learning, DL)模型。(“Feature Extractor”有时也被称为“backbone”或“Encoder”)
随着CNN越来越深入和广泛,可视化通常是开发人员解释他们的模型的唯一方法。无论你是试图找出模型不能工作的原因,还是试图验证模型的性能,还是试图为你的管道选择最佳的 CONV-FE,可视化通常是最接近教科书上的解决方案的替代品。
今天我们将看到一个巧妙的技巧来可视化化任何CV任务的CONV-FE。我们将使用带有TensorFlow后台的Keras来演示这个技巧。这个技巧可以用来“调试”没有正确训练的模型,或者“检查”/“解释”训练好的模型。
对于新读者来说,值得一提的是架构和CONV-FE之间的区别。SSD, YOLO和F-RCNN是当今一些流行的目标检测架构。正如你所知道的,架构是具有某种形式的灵活性的模板,用户可以根据自己的用例选择调整架构。对于新读者来说,值得一提的是架构和骨干之间的区别。大多数架构都将CONV-FE视为插件。一些流行的CONV-FE是 VGG-16、ResNet50和MobileNetV2。通常可以看到,使用特定体系结构构建的模型的性能(包括速度和准确性)将受到很大的影响。出于这个原因,实践者提到了他们在模型名称本身中使用的 VGG-16。一个F-RCNN(ResNet50)是一个模型与F-RCNN论文中描述的架构,使用ResNet50 CONV-FE构建。换句话说,F-RCNN(MobileNetV2)和F-RCNN(vg -16)遵循相同的网络架构,但使用不同的CONV-FEs。因此,我们可以期望每个系统都有不同的性能。CONV-FEs也有他们的架构,这就是为什么我们有VGG-16和VGG-19的原因。
Figure 1:通用目标检测模板,适合YOLO, F-RCNN, SSD等。
图1显示了一个基于DL的目标检测系统的高级架构。众所周知的体系结构如YOLO、F-RCNN和SSD都可以用这个模板。[W, H, 3]表示图像的输入宽度和高度,也表示输入图像有3通道。[w, h, N]表示转换函数的输出维数。需要注意的是,由于_N_是特征提取器最后一层CONV层中滤波器的数量,所以通常是一个很大的数量(对于VGG-16, N = 512)。_w_和_h_几乎总是比_w, h_小,因为在今天的大多数架构中,CONV块通常后面跟着池化层。
如上所述,对于我们的CV系统而言,选择一个对 CONV-FE是至关重要的。然而,问题在于N的值很大。不可能想象一个所有维度都任意大的三维张量!这就是我们今天要解决的问题。我们马上开始吧。
我们先选择一个CONV-FE,用VGG-16试试。
一旦模型被加载,我们需要做一些脚本来加载我们想要尝试我们的技巧的图像。我在这里不描述这些步骤,因为它们在你的特定用例中会有很大的不同。现在,我们只假设所有所需的图像都存储在工作目录中名为“images”的目录中。现在让我们使用这个技巧!
你将看到类似于下面的输出(这些也将保存在直接在工作目录中创建的“results”目录中)
第二列显示了任意通道可以在由CONV-FE产生的输出特征映射中实现的像素级最大值。第三列显示了所有通道的平均值。我们说,如果我们的结果中的第二列和第三列显示出清晰的特征分离,那么CONV-FE适用于我们的数据集。
如我们所见,1和2的结果非常好,但3和4的结果表明,如果你有全屏PCB图像或穿着传统服装的印度男人的图像,当前的模型并不真的适合。但是,如果你的数据集包含野生动物或汽车/车辆的图片,那么这个模型似乎是一个不错的选择。
现在,让我们做一个小小的调整。根据图1,输出特性映射可以有任意数量(N)的输出通道。这是我们无法可视化和比较CONV-FEs的主要原因。我们使用常见的聚合技术,即求和和平均,来获得特征图质量的总体近似。我没有沿着通道使用像素级的中间值进行聚合。
Github 代码链接: https://github.com/IshanBhatt...
—END—
英文原文:https://medium.com/analytics-...
推荐阅读
关注图像处理,自然语言处理,机器学习等人工智能领域,请点击关注AI公园专栏。
欢迎关注微信公众号