一个用可视化方法选择最优backbone的小测试

Posted Charmve

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个用可视化方法选择最优backbone的小测试相关的知识,希望对你有一定的参考价值。

点击上方“迈微AI研习社”,选择“星标★”公众号

重磅干货,第一时间送达

各位迈微社友大家好,欢迎来到Charmve的空间!

如果你对使用卷积神经网络来解决计算机视觉问题感兴趣;如果你使用的是分类、检测或分割模型,请继续看下去。

理想情况下,我在这里描述用代码的技巧应该适用于任何使用卷积特征提取器(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”目录中)

Figure 2.1: Results1_Elephant

Figure 2.2: Results2_Car

Figure 2.3: Results3_Man

Figure 2.4 Results4_PCB

第二列显示了任意通道可以在由CONV-FE产生的输出特征映射中实现的像素级最大值。第三列显示了所有通道的平均值。我们说,如果我们的结果中的第二列和第三列显示出清晰的特征分离,那么CONV-FE适用于我们的数据集。

如我们所见,1和2的结果非常好,但3和4的结果表明,如果你有全屏PCB图像或穿着传统服装的印度男人的图像,当前的模型并不真的适合。但是,如果你的数据集包含野生动物或汽车/车辆的图片,那么这个模型似乎是一个不错的选择。

现在,让我们做一个小小的调整。根据图1,输出特性映射可以有任意数量(N)的输出通道。这是我们无法可视化和比较CONV-FEs的主要原因。我们使用常见的聚合技术,即求和和平均,来获得特征图质量的总体近似。我没有沿着通道使用像素级的中间值进行聚合。

感兴趣的读者可以参考源码,试一试,了解更多细节。

  • 源码 https://github.com/IshanBhattOfficial/Vizualize-CONV-FeatureExtractors

— END —

英文原文:https://medium.com/analytics-vidhya/how-to-select-the-perfect-cnn-back-bone-for-object-detection-a-simple-test-b3f9e9519174

更多精彩内容请关注迈微AI研习社,每天晚上七点不见不散!

△点击卡片关注迈微AI研习社,获取最新CV干货

推荐阅读

(点击标题可跳转阅读)

CV技术社群邀请函 #

△长按添加迈微官方微信号 

备注:姓名-学校/公司-研究方向-城市

(如:小C-北大-目标检测-北京)

© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:yidazhang1@gmail.com

由于微信公众号试行乱序推送,您可能不再能准时收到迈微AI研习社的推送。为了第一时间收到报道, 请将“迈微AI研习社”设为星标账号,以及常点文末右下角的“在看”。

觉得有用麻烦给个在看啦~  

以上是关于一个用可视化方法选择最优backbone的小测试的主要内容,如果未能解决你的问题,请参考以下文章

结合d3.js和backbone.js

sklearn RandomForest(随机森林)模型使用RandomSearchCV获取最优参数及模型效能可视化

8.15校内测试队列manacher

软件测试学习 敏捷开发

StoryFlow: Tracking the Evolution of Stories-1.可视化文献阅读

R语言层次聚类:通过内平方和WSS选择最优的聚类K值可视化不同K下的BSS和WSS通过Calinski-Harabasz指数(准则)与聚类簇个数的关系获取最优聚类簇的个数