问题描述
我问了很多,但我非常坚持这个......
我有这部分代码,我用来用 SIFT 提取特征,我正在尝试修改它以基于 VGG16 模型提取特征。
无论我多么努力,我都无法通过,并且总是出现错误。
因此,如果有人可以帮助以某种方式获取特征,然后将其用于聚类。
这是带有 SIFT 的代码:
# identification of key points and associated descriptors
import time,cv2
sift_keypoints = []
temps1=time.time()
sift = cv2.xfeatures2d.SIFT_create(500)
for image_num in range(len(list_photos)) :
if image_num%100 == 0 : print(image_num)
image = cv2.imread(path+list_photos[image_num],0) # convert in gray
image = cv2.GaussianBlur(image,(7,7),cv2.BORDER_DEFAULT) #apply gaussianblur filter
# image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
res = cv2.equalizeHist(image) # equalize image histogram
kp,des = sift.detectAndCompute(res,None)
sift_keypoints.append(des)
sift_keypoints_by_img = np.asarray(sift_keypoints)
sift_keypoints_all = np.concatenate(sift_keypoints_by_img,axis=0)
这是我如何将它用于我的聚类:
from sklearn import cluster,metrics
# Determination number of clusters
k = int(round(np.sqrt(len(sift_keypoints_all)),0))
print("Nombre de clusters estimés : ",k)
print("Création de",k,"clusters de descripteurs ...")
# Clustering
kmeans = cluster.MiniBatchKMeans(n_clusters=k,init_size=3*k,random_state=0)
kmeans.fit(sift_keypoints_all)
我应该怎么做才能使用 VGG 模型提取特征?
谢谢
解决方法
Keras 官方文档 [1] 中有关于使用 VGG16 进行特征提取的示例。
请注意,卷积网络的层是图片不同维度的连续表示。根据您选择作为输出的层,聚类的结果可能会有很大不同。