You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并ResNet50特征与纹理特征并实现图像分类?

特征合并与分类解决方案

你遇到的核心问题是两类特征的样本数量不匹配(98 vs 766),同时特征维度结构差异大,这直接导致拼接失败。解决步骤如下:

第一步:对齐样本数量

必须确保ResNet50特征和纹理特征对应同一批样本,即两个数组的第一个维度(样本数)完全一致。如果是提取特征时的疏漏,需要重新提取对应样本的特征。以下代码假设你已经修正了样本数,统一为N(示例中用98)。

第二步:特征维度统一

把高维特征转换成一维向量,或通过池化压缩维度,保证每个样本的特征为一维结构:

处理ResNet50特征

推荐用**全局平均池化(GAP)**压缩空间维度,既保留核心特征信息又大幅降低维度:

import numpy as np

# 模拟ResNet50特征:(98,7,7,2048)
resnet_features = np.random.rand(98,7,7,2048)
# 对每个样本的7x7空间维度取平均,得到(98,2048)的特征
resnet_gap = np.mean(resnet_features, axis=(1,2))

# 若需更完整保留细节,也可直接扁平化(维度会大幅增加)
# resnet_flat = resnet_features.reshape(resnet_features.shape[0], -1)  # 形状变为(98, 100352)

处理纹理特征

将224x224的纹理特征扁平化,或通过池化降维减少特征维度:

# 模拟纹理特征:(98,224,224)
texture_features = np.random.rand(98,224,224)
# 扁平化每个样本的纹理特征,得到(98,50176)的一维向量
texture_flat = texture_features.reshape(texture_features.shape[0], -1)

# 若想降低维度,可先做池化再扁平化(比如缩小为14x14)
# texture_pooled = np.mean(texture_features.reshape(98,16,14,16,14), axis=(1,3))
# texture_flat = texture_pooled.reshape(98, -1)  # 形状变为(98,196)

第三步:拼接特征

当两类特征都转换为(样本数, 特征维度)的形状后,用numpy完成拼接:

# 拼接ResNet GAP特征与扁平化纹理特征
combined_features = np.concatenate([resnet_gap, texture_flat], axis=1)
# 此时combined_features形状为(98, 2048+50176)=(98,52224)

第四步:用于分类

用拼接后的联合特征训练分类器,以下是基于sklearn的示例:

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 模拟样本标签:二分类问题,形状(98,)
y = np.random.randint(0, 2, size=98)

# 划分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(combined_features, y, test_size=0.2, random_state=42)

# 训练逻辑回归分类器
clf = LogisticRegression(max_iter=1000)
clf.fit(X_train, y_train)

# 评估分类效果
y_pred = clf.predict(X_test)
print(f"分类准确率: {accuracy_score(y_test, y_pred):.2f}")

如果你的样本数确实存在98和766的不匹配,必须先筛选出两类特征共有的样本,确保一一对应,否则无法进行有效的特征融合与分类。

内容的提问来源于stack exchange,提问作者Rezuana Haque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:10:28