代码拉取完成,页面将自动刷新
同步操作将从 夜半饿得慌/beauty 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import os
import dlib
import torch
import numpy as np
from scipy.spatial import distance
from dl.siamese.networks import EmbeddingNet, SiameseNet
"""
todo 颜值pk
基本原理:
通过与目标颜值的差异比较
得到pk结果
"""
cuda = torch.cuda.is_available()
def load_face(f):
# 加载人脸图像
img = dlib.load_rgb_image(f)
return img
def load_model():
embedding_net = EmbeddingNet()
model = SiameseNet(embedding_net)
if cuda:
model.cuda()
return model
def extract_embeddings(dataloader, model):
with torch.no_grad():
model.eval()
embeddings = np.zeros((len(dataloader.dataset), 2))
labels = np.zeros(len(dataloader.dataset))
k = 0
for images, target in dataloader:
if cuda:
images = images.cuda()
embeddings[k:k+len(images)] = model.get_embedding(images).data.cpu().numpy()
labels[k:k+len(images)] = target.numpy()
k += len(images)
return embeddings, labels
def face_pk(f1, f2):
"""
人脸pk
"""
results = ""
img1 = load_face(f1)
img2 = load_face(f2)
model = load_model()
face_embeddings1 = extract_embeddings(img1, model)
face_embeddings2 = extract_embeddings(img2, model)
# todo compare distances
results = distance.euclidean(face_embeddings1, face_embeddings2)
return results
if __name__=="__main__":
face1 = "data/1.jpg"
face2 = "data/2.jpg"
results = face_pk(face1, face2)
print(results)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。