0

我正在使用 Tensorflow Hub 从图像中提取特征。即,我正在使用模块hub.Module("https://tfhub.dev/google/imagenet/resnet_v2_50/feature_vector/3")

因为我想从最后一个卷积层中提取特征,所以我有点困惑应该从Resnet50. 例如:

image = ...
embedding_module = hub.Module("https://tfhub.dev/google/imagenet/resnet_v2_50/feature_vector/3")
output = embedding_module(image, signature="image_feature_vector",
                          as_dict=True)

现在,如果我们打印出这本字典中的键,则有 3 个不同的键,我不知道它们之间的区别。

  • resnet_v2_50/block4/unit_3/bottleneck_v2
  • resnet_v2_50/block4/unit_3/bottleneck_v2/conv3
  • resnet_v2_50/block4

我发现令人困惑的是,它们都有一个具有相同形状的输出(7, 7, 2048),但 和 的值resnet_v2_50/block4/unit_3/bottleneck_v2resnet_v2_50/block4不同resnet_v2_50/block4/unit_3/bottleneck_v2/conv3。有人可以指出我应该使用哪个键从最后一个卷积层进行特征提取,Resnet50以及我列出的每个键之间的区别是什么?

谢谢!

4

2 回答 2

1

在 Tensorflow2 中,我们可以执行以下操作。更多文档:链接

from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.preprocessing.image import load_img

# as per updated docs
model = hub.KerasLayer("https://tfhub.dev/google/imagenet/resnet_v2_50/feature_vector/5")

imagePath = "......."
image = load_img(imagePath, target_size=(224, 224))
image = img_to_array(image)
image = np.expand_dims(image, axis=0)

embeddings = model(image)
于 2021-06-15T07:55:44.360 回答
0

根据官方手册我们可以直接使用module(xxx)得到结果。

这对我来说可以

module = hub.Module("https://tfhub.dev/google/imagenet/resnet_v2_50/feature_vector/3")
features = module(images) 

实际上,我也在试图弄清楚如何通过name一些缺乏灵活性的预先提供的 API 来获得正确的最后一层。

于 2019-11-13T09:20:48.673 回答