update
This commit is contained in:
77
manualSortingTools.py
Normal file
77
manualSortingTools.py
Normal file
@ -0,0 +1,77 @@
|
||||
import os.path
|
||||
import shutil
|
||||
|
||||
|
||||
from ytracking.track_ import *
|
||||
from contrast.test_logic import group_image, inference
|
||||
from tools.Interface import AiInterface, AiClass
|
||||
|
||||
from tools.initModel import models
|
||||
import matplotlib.pyplot as plt
|
||||
from sklearn.cluster import KMeans
|
||||
|
||||
models.initModel()
|
||||
ai_obj = AiClass()
|
||||
distance_lists = []
|
||||
all_distance_lists = []
|
||||
|
||||
|
||||
def showImg(newx):
|
||||
plt.scatter(newx[:, 0], newx[:, 1])
|
||||
plt.show()
|
||||
|
||||
|
||||
def cosine_similarity(vec1, vec2):
|
||||
vec1 = np.array(vec1)
|
||||
vec2 = np.array(vec2)
|
||||
cos_sim = vec1.dot(vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2))
|
||||
return cos_sim
|
||||
|
||||
|
||||
def get_kclusters(data, k):
|
||||
Kmeans = KMeans(n_clusters=k, n_init='auto')
|
||||
y_pred = Kmeans.fit_predict(data)
|
||||
return y_pred
|
||||
|
||||
|
||||
def move_file(pth, dirs, labels, y_pred):
|
||||
for label, y_label in zip(labels, y_pred):
|
||||
if not os.path.isdir(os.sep.join([pth, dirs, str(y_label)])):
|
||||
os.mkdir(os.sep.join([pth, dirs, str(y_label)]))
|
||||
try:
|
||||
shutil.move(os.sep.join([pth, dirs, label]),
|
||||
os.sep.join([pth, dirs, str(y_label), label]))
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
|
||||
def createDic(pth, dirs):
|
||||
all_dics = {}
|
||||
imgs = os.sep.join([pth, dirs])
|
||||
for img in os.listdir(imgs):
|
||||
imgPth = os.sep.join([imgs, img])
|
||||
feat_tensor = inference([imgPth], models.similarityModel, actionModel=False)
|
||||
all_dics[img] = feat_tensor
|
||||
return all_dics
|
||||
|
||||
|
||||
def main(pth, dirs):
|
||||
global distance_lists
|
||||
allDics = createDic(pth, dirs)
|
||||
labels = []
|
||||
temp = None
|
||||
for key, value in allDics.items():
|
||||
value = value.cpu().detach().numpy()
|
||||
labels.append(key)
|
||||
if temp is None:
|
||||
temp = value
|
||||
else:
|
||||
temp = np.vstack((temp, value))
|
||||
y_pred = get_kclusters(temp, 3)
|
||||
move_file(pth, dirs, labels, y_pred)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
pth = 'C:/Users/HP/Desktop/40084'
|
||||
dirs = '1'
|
||||
main(pth, dirs)
|
Reference in New Issue
Block a user