vgg16提取图片特征向量

本文展示了如何使用PyTorch中的VGG16模型对dog.jpg图像进行预处理、特征提取,以及打印出特征向量的长度。

from torchvision import transforms
from PIL import Image
import torch
import torchvision.models as models
from torchvision.models import VGG16_Weights

model = models.vgg16(weights=VGG16_Weights.DEFAULT)

# 加载图像
image = Image.<
### 使用VGG16模型提取图像中雾特征的方法 为了使用VGG16模型来提取图像中的雾特征,可以遵循特定的工作流程。该过程不仅涉及准备环境和加载预训练模型,还包括对输入图像进行必要的前处理以及选择合适的层以获取最能代表雾特性的特征向量。 #### 准备工作 安装依赖库并导入所需模块: ```bash pip install tensorflow keras numpy opencv-python matplotlib scikit-image ``` 编写Python脚本初始化VGG16模型,并设置为不包含顶层分类器以便于自定义输出层的选择: ```python from keras.applications.vgg16 import VGG16, preprocess_input import cv2 import numpy as np from skimage.color import rgb2gray model = VGG16(weights='imagenet', include_top=False) ``` #### 图像预处理 读取待分析的含雾图片文件,调整大小至适合VGG16输入尺寸(通常为224x224),并将色彩空间转换成灰度模式减少干扰因素的影响[^3]: ```python def load_and_preprocess_image(image_path): img = cv2.imread(image_path) gray_img = (rgb2gray(img)*255).astype('uint8') resized_img = cv2.resize(gray_img, dsize=(224, 224), interpolation=cv2.INTER_CUBIC) input_data = np.expand_dims(resized_img, axis=[0,-1]) # Add batch and channel dimensions processed_input = preprocess_input(input_data.astype(np.float32)) return processed_input ``` #### 提取特征 通过指定`model.predict()`函数作用于经过上述方法处理后的图像张量对象上来执行预测操作,从而获得中间卷积层或池化层之后的结果作为最终特征表示。考虑到雾气主要影响的是低频信息,在此建议选取靠近网络末端但又不是最后一两个全连接层之前的某个卷基层(比如conv5_3)作为目标特征抽取位置: ```python features = model.predict(processed_input) # Assuming we want the output from conv5 block's last layer. feature_vector = features[-1].flatten() print(f'Extracted feature vector shape: {feature_vector.shape}') ``` #### 特征解释与应用 得到的高维度浮点数组即为所求得的关于原图中是否存在浓重雾霾现象的一个抽象描述符。这些数值反映了不同尺度下的纹理变化情况及其分布规律,可用于后续聚类、降维可视化或是与其他气象条件对比研究等方面。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值