用python实现批量图片的特征向量提取
时间: 2023-10-02 22:04:21 浏览: 301
你可以使用Python中的深度学习框架Keras或PyTorch来实现批量图片的特征向量提取。以下是基于Keras的示例代码:
```python
from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
import numpy as np
import os
# 加载预训练的VGG16模型
model = VGG16(weights='imagenet', include_top=False)
# 定义函数用于提取单张图片的特征向量
def get_feature_vector(img_path):
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
features = model.predict(x)
return features.flatten()
# 定义函数用于提取多张图片的特征向量
def get_batch_feature_vectors(img_dir):
features = []
for img_file in os.listdir(img_dir):
if img_file.endswith('.jpg'):
img_path = os.path.join(img_dir, img_file)
feature = get_feature_vector(img_path)
features.append(feature)
return np.array(features)
# 测试函数
img_dir = '/path/to/image/directory'
features = get_batch_feature_vectors(img_dir)
print(features.shape)
```
该代码使用预训练的VGG16模型提取图片的特征向量,输入参数为图片文件夹路径,输出为形状为(N, 25088)的特征向量矩阵,其中N为图片数量,25088为VGG16模型输出的特征向量维度。你可以根据需要调整模型和输入图片大小,也可以使用其他深度学习模型。
阅读全文