利用预训练模型得到图像的特征表示
选择预训练模型
什么是预训练
预训练通过自监督学习从大规模数据中获得与具体任务无关的预训练模型。文本当中,预训练模型学习到的动态特征表示可以体现某一个词在一个特定上下文中的语义表征,图像也可以学习到更通用的特征。经过预训练后,去针对具体的任务修正网络微调也可以得到很好的性能。
实现方法:
对于ResNet variants
和AlexNet
,
p
y
t
o
r
c
h
pytorch
pytorch 也提供了预训练(pre-trained
)的模型。
处理图片
读入照片
需要把照片(L, W, 3 ),其中L是长,W是宽。网络的输入维度为 (batch, 3, L, W),batch是批的多少。针对单张图,需要先利用 e x p a n d _ d i m s expand\_dims expand_dims 拓展维度,随后针对不同位置进行维度的转换,利用 n p . t r a n s p o s e np.transpose np.transpose 变成输入所需要的形式。并且转换 f r o m _ n u m p y from\_numpy from_numpy,放在 G P U GPU GPU。
这里使用
e
r
r
o
r
r
a
t
e
error \ rate
error rate最小的
r
e
s
n
e
t
152
resnet152
resnet152
得到最终的特征
可以参考1选择输出的网络层级,或者是利用 F C FC FC全连接层,得到目标维数的输出。
参考博客
-
https://becominghuman.ai/extract-a-feature-vector-for-any-image-with-pytorch-9717561d1d4c
-
https://becominghuman.ai/extract-a-feature-vector-for-any-image-with-pytorch-9717561d1d4c
-
https://pytorch-cn.readthedocs.io/zh/latest/torchvision/torchvision-models/