gpt4 book ai didi

python - 将 Caffe CNN 转换为特征提取器

转载 作者:太空宇宙 更新时间:2023-11-03 13:59:12 24 4
gpt4 key购买 nike

我必须使用 CNN 模型从图像中提取特征。我正在使用经过训练的模型,称为 Caffenet。

在Caffe上,通过CNN模型运行图像后提取特征是非常容易的。例如,如果我想要由“conv5”层提取特征,我只需调用该方法:

features = net.blobs['conv5'].data[0, : , : , :]

但是,棘手的部分是我需要使用第三方转换工具来转换模型,以便它可以在我的移动设备上运行。转换模型后,我无法访问模型内​​层的输出。我只得到最终输出,在本例中是分类,它们不是我需要的。

为了让模型直接从“conv5”层(最终的卷积层)输出特征,我进入了 deploy.prototxt 文件并删除了“conv5”层之后的所有层,所以“conv5”实际上成为了最终的输出层。然而,这样做之后,我得到的特征值与我更改prototxt文件之前得到的特征值完全不同。

我怀疑,即使我通过删除 deploy.prototxt 中的层来更改架构,我也无法更改 caffenet.caffemodel 文件内的权重。我不确定为什么这会成为一个问题,因为“conv5”之后的层的权重不会被使用。我不确定为什么这会改变“conv5”的输出。

如何更改经过训练的模型以直接从最终卷积层输出特征?

最佳答案

一个原因可能是“conv5”层之后的某些层将更新或更改 conv5 的顶部 blob。这些层包括relu层或batch_norm层,因为这些层通常使用就地操作。所以你最好检查一下deploy prototxt并保持conv5之后的batch_norm和relu层不变。

关于python - 将 Caffe CNN 转换为特征提取器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49377891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com