def align_face(self,opic,faceKeyPoint): img = cv2.imread(opic) faceKeyPoint = faceKeyPoint[0] #根据两个鼻子和眼睛进行3点对齐 eye1 = faceKeyPoint[0] eye2 = faceKeyPoint[1] noise = faceKeyPoint[2] source_point = np.array( [eye1, eye2, noise], dtype=np.float32 ) eye1_noraml= [int(x) for x in face_comm.get_conf('alignment','left_eye').split(',')] eye2_noraml=[int(x) for x in face_comm.get_conf('alignment','right_eye').split(',')] noise_normal=[int(x) for x in face_comm.get_conf('alignment','noise').split(',')] #设置的人脸标准模型 dst_point = np.array( [eye1_noraml, eye2_noraml, noise_normal], dtype=np.float32) tranform = cv2.getAffineTransform(source_point, dst_point) imagesize=tuple([int(x) for x in face_comm.get_conf('alignment','imgsize').split(',')]) img_new = cv2.warpAffine(img, tranform, imagesize) new_image= os.path.abspath(face_comm.get_conf('alignment','aligment_face_dir')) new_image= new_image+'/'+'%d_%d.png'%(time.time(),random.randint(0,100)) if cv2.imwrite(new_image, img_new): return new_image return None
def __init__(self): self.f = int(face_comm.get_conf('annoy','face_vector')) self.annoy_index_path = os.path.abspath(face_comm.get_conf('annoy','index_path')) self.lmdb_file =os.path.abspath(face_comm.get_conf('lmdb','lmdb_path')) self.num_trees =int(face_comm.get_conf('annoy','num_trees')) self.annoy = AnnoyIndex(self.f) if os.path.isfile(self.annoy_index_path): self.annoy.load(self.annoy_index_path)
def add_embed_to_lmdb(self,id,vector): self.db_file=os.path.abspath(face_comm.get_conf('lmdb','lmdb_path')) id = str(id) evn = lmdb.open(self.db_file); wfp = evn.begin(write=True) wfp.put(key=id, value=face_comm.embed_to_str(vector)) wfp.commit() evn.close()
def add_embed_to_lmdb(self, id, vector): self.db_file = os.path.abspath(face_comm.get_conf('lmdb', 'lmdb_path')) id = str(id) evn = lmdb.open(self.db_file) wfp = evn.begin(write=True) print(vector.dtype) wfp.put(key=id.encode(), value=vector.tostring()) wfp.commit() evn.close()
def load_index_from_lmdb(self, id_list, name_list): # 遍历 self.db_file = os.path.abspath(face_comm.get_conf('lmdb', 'lmdb_path')) if os.path.isdir(self.db_file): evn = lmdb.open(self.db_file) wfp = evn.begin() for key, value in wfp.cursor(): str_list = key.split(',') id_list.append(str_list[0]) name_list.append(str_list[1])
import cv2 import numpy as np import tensorflow as tf from scipy import misc import face_net.src.facenet as facenet import face_net.src.align.detect_face import face_comm import time np.set_printoptions(suppress=True) gpu_memory_fraction = 0.3 facenet_model_checkpoint = os.path.abspath( face_comm.get_conf('facedetect', 'model')) class Encoder: def __init__(self): self.dectection = Detection() self.sess = tf.Session() start = time.time() with self.sess.as_default(): facenet.load_model(facenet_model_checkpoint) print('Model loading finised,cost: %ds' % ((time.time() - start))) def generate_embedding(self, image): # Get input and output tensors images_placeholder = self.sess.graph.get_tensor_by_name("input:0") embeddings = self.sess.graph.get_tensor_by_name("embeddings:0")
# coding: utf-8 import mxnet as mx from mtcnn.mtcnn_detector import MtcnnDetector import cv2 import os import time import numpy as np import face_comm model = os.path.abspath(face_comm.get_conf('mtcnn', 'model')) class Detect: def __init__(self): self.detector = MtcnnDetector(model_folder=model, ctx=mx.cpu(0), num_worker=4, accurate_landmark=False) def detect_face(self, image): img = cv2.imread(image) results = self.detector.detect_face(img) boxes = [] key_points = [] if results is not None: #box框 boxes = results[0] #人脸5个关键点 points = results[1] for i in results[0]:
def query_vector(self, face_vector): n = int(face_comm.get_conf('annoy', 'num_nn_nearst')) return self.annoy.get_nns_by_vector(face_vector, n, include_distances=True)
def show_lmdb(self): self.db_file = os.path.abspath(face_comm.get_conf('lmdb', 'lmdb_path')) evn = lmdb.open(self.db_file) wfp = evn.begin()
import cv2 import numpy as np import tensorflow as tf from scipy import misc import face_net.src.facenet as facenet import face_net.src.align.detect_face import face_comm import time np.set_printoptions(suppress=True) gpu_memory_fraction = 0.3 facenet_model_checkpoint = os.path.abspath(face_comm.get_conf('facedetect','model')) class Encoder: def __init__(self): self.dectection= Detection() self.sess = tf.Session() start=time.time() with self.sess.as_default(): facenet.load_model(facenet_model_checkpoint) print 'Model loading finised,cost: %ds'%((time.time()-start)) def generate_embedding(self, image): # Get input and output tensors images_placeholder = tf.get_default_graph().get_tensor_by_name("input:0") embeddings = tf.get_default_graph().get_tensor_by_name("embeddings:0") phase_train_placeholder = tf.get_default_graph().get_tensor_by_name("phase_train:0")