我是图像聚类的新手,我遵循了本教程:
这将导致以下代码:
from sklearn.cluster import KMeans
from keras.preprocessing import image
from keras.applications.vgg16 import VGG16
from keras.applications.vgg16 import preprocess_input
import numpy as np
model = VGG16(weights='imagenet', include_top=False)
directory = './imageSample'
vgg16_feature_list = []
for filename in os.listdir(directory):
if(filename != '.DS_Store'):
img_path = directory + '/' + filename
print(img_path)
img = image.load_img(img_path)#color_mode = "grayscale")
img_data = image.img_to_array(img)
img_data = np.expand_dims(img_data, axis=0)
img_data = preprocess_input(img_data)
vgg16_feature = model.predict(img_data)
vgg16_feature_np = np.array(vgg16_feature)
vgg16_feature_list.append(vgg16_feature_np.flatten())
vgg16_feature_list_np = np.array(vgg16_feature_list)
kmeans = KMeans(n_clusters=5, random_state=0).fit(vgg16_feature_list_np)
但是,我收到此错误:
ConvergenceWarning:发现小于n_clusters(5)的不同集群(1)的数量。可能是由于X中的重复点。 return_n_iter = True)
我想知道是否是因为样本图像?它们看起来像这样,为80x80像素,其中有52个:
我尝试将颜色模式更改为灰度,但是我收到了 IndexError:索引1超出了尺寸3的轴3的范围。
请告知我的数据集是否可以进行此类聚类。如果将数据集扩展到100-200张图像,是否可以正常工作?或者如果有其他方法我应该考虑对数据集进行分组。谢谢!
更新 似乎真正的问题是提取的图像特征相同,所以我将其移至另一篇文章:Keras Same Feature Extraction from Different Images