【问题标题】:Features extraction with VGG16 for clustering使用 VGG16 进行特征提取以进行聚类
【发布时间】:2021-07-25 09:51:51
【问题描述】:

我问了很多,但我非常坚持这个......

我有这部分代码用于使用 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 模型提取特征?

谢谢

【问题讨论】:

    标签: python conv-neural-network feature-extraction sift vgg-net


    【解决方案1】:

    在 Keras 官方文档 [1] 中有一个关于使用 VGG16 进行特征提取的示例。

    请注意,卷积网络的层是图片不同维度的连续表示。根据您选择作为输出的层,聚类的结果可能会有很大不同。

    [1]https://keras.io/api/applications/

    【讨论】:

    • 感谢哈维尔的回答。我找到了这个例子,当我试图预测一张图片时它正在工作,但每当我尝试将它应用于多张图片时,它就不想工作,因为我能够用 SIFT 做到这一点......
    猜你喜欢
    • 2019-06-07
    • 2020-08-06
    • 2012-10-19
    • 2019-07-02
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多