使用Tensorflow中的Inception-v2预期的特征向量大小

我想提取对象检测中感兴趣区域的特征向量。我使用的是Faster RCNN与Inception-v2,基本上是按照这个教程进行的,但我在其中添加了detection_features作为键。

我原本以为特征向量是卷积神经网络在被分类之前的输出。通过查看Inception-v2论文中的表1,我预期这应该是1x1x1000的大小。然而,在我的代码中,output_dict['detection_features'][0]的大小是4x4x1024,这让我感到困惑,因为这似乎并不是Inception-v2任何步骤中出现的向量大小。

如果有人能指出为什么大小不匹配,我将不胜感激,我担心自己可能误解了某些内容,但在Tensorflow的对象检测中关于特征向量的文档并不多见。

非常感谢


回答:

每层中的单元数量并不是架构法则;遵循Inception V2架构的网络首先是信息流的问题。你的情况看起来很好。Keras的创始人曾经写道,使用8的倍数作为单元数量可能会提供一些计算上的优势,所以你的最后一层单元数可能比论文中的稍微好一些。至于4,4部分,这可能是输入尺寸的结果。这就是为什么存在最小可能的输入尺寸(否则某些操作将没有像素可处理)。更大的输入(图像)遵循相同的Inception V2过程将导致更大的输出尺寸。这没问题,它只意味着直接展平(在cnn和分类器之间)会导致更多的单元,或者,另一种选择是全局池化会丢弃更多的信息。

总之:你所做的一切完全没问题。架构是图操作的问题,而具体实现(网络内的尺寸)是应用的问题。

编辑:更详细的解释
卷积层由其核形状和单元数量(核的数量)定义。如果一个架构使用具有(3,3)矩阵核的卷积层,它将应用这一核,无论提供给它的内容大小如何(至少与核一样大)。所以,如果像VGG这样的网络架构(图表)要求一定数量的具有(3,3)核的卷积层后跟一个(2,2)池化层,那么无论你将网络输入形状设置为(299,299,3)还是(32,32,32)都没有关系。相同的操作将应用于输入,只是沿轴的次数不同(当然包括最后一个轴,即单元数量,即唯一核的数量),导致不同的输出形状。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注