如何为txt文件中的文件夹的所有图像编写特征向量以用于将来的TSNE处理

时间:2018-10-23 21:30:57

标签: python numpy python-imaging-library file-writing long-lines

我正在PyTorch中使用resnet50创建图像特征向量。 每个特征向量的长度为2048。当我要将其写入txt文件时,必须将其转换为在下面的代码中执行的str。问题是,txt文件中仅保存了长度为2048的向量中的几个数字。我该如何解决?

此外,我的每个文件名(图像)都有一个1到9(9个类)之间的标签。

下面的代码是对该仓库的修改:https://github.com/christiansafka/img2vec

import numpy as np
import sys
import os
sys.path.append("..")  # Adds higher directory to python modules path.
from img_to_vec import Img2Vec
from PIL import Image
from sklearn.metrics.pairwise import cosine_similarity
import glob


input_path = "my image folder**"
img2vec = Img2Vec()
vector_fh = open('resnet50_feature_vectors.txt', 'w+')


# For each test image, we store the filename and vector as key, value in a dictionary
pics = {}

filenames = glob.glob(input_path + "/*.*")

for filename in filenames:
    print(filename)
    img = Image.open(filename)
    nd_arr = img2vec.get_vec(img)
    #str_arr = nd_arr.tostring()
    str_arr = np.array2string(nd_arr, formatter={'float_kind':lambda x: "%.2f" % x})
    vector_fh.write(str_arr+"\n")

这是我收到的结果:

$ head resnet50_feature_vectors.txt

[0.22 1.54 0.40 ... 0.15 0.56 0.22]
[0.57 1.34 1.78 ... 0.26 1.19 1.30]
[0.01 2.81 0.15 ... 0.28 0.41 0.27]
[0.30 0.80 0.15 ... 0.02 0.08 0.03]
[0.10 1.39 0.60 ... 0.13 0.25 0.04]
[0.62 0.71 0.72 ... 0.36 0.15 0.51]
[0.43 0.44 0.52 ... 0.40 0.29 0.33]
[0.07 1.14 0.40 ... 0.09 0.08 0.10]
[0.13 1.45 0.96 ... 0.19 0.03 0.11]
[0.06 1.84 0.19 ... 0.11 0.11 0.03]

如何解决将特征向量保存在txt文件中的方式?

我正在尝试遵循教程here,其中有一个包含每个特征向量的.txt文件和一个包含每个特征向量的标签的txt文件。

我正在谈论MNIST数据集https://lvdmaaten.github.io/tsne/code/tsne_python.zip的教程的Python部分

0 个答案:

没有答案