def process_face_groups(image): faces = yield from FaceUtils.detect_faces_in_photo( Utils.get_user_path(image['user_id']) + "/" + image['image_name']) Logger.debug('processing: ' + Utils.get_user_path(image['user_id']) + "/" + image['image_name']) # faces = yield from FaceUtils.detect_faces_in_photo("e:/data/images/" + image['image_name']) # Logger.debug('processing: ' + "e:/data/images/" + image['image_name']) if len(faces) == 0 or len(faces) > 10: return names = Utils.get_human_names(image.get('desc', '')) names.reverse() tags = image.get('tags', []) for face in faces: face_id = '' similars = yield from FaceUtils.find_similar_faces( image['user_id'], face) Logger.debug('similars: ' + str(similars)) for simi in similars: conf = simi['confidence'] if conf >= 0.9: face_id = simi['faceId'] break if not face_id: Logger.debug('no face id detected') face_id = face yield from FaceUtils.add_face_to_group(image['user_id'], face) try: name = names.pop() except: name = '' face_info = { 'user_id': image['user_id'], 'face_id': face, 'name': name, 'candidates': similars } for simi in similars: fid = simi['faceId'] sm = MongoHelper.get_person(image['user_id'], fid) smcd = [i['faceId'] for i in sm['candidates']] if not fid in smcd: sm['candidates'].append({ 'faceId': face, 'confidence': simi['confidence'] }) MongoHelper.save_person(sm) MongoHelper.save_person(face_info) if not face_id in tags: tags.append(face_id) image['tags'] = tags Logger.debug('tags: ' + str(tags))
def process_face_groups(image): faces = yield from FaceUtils.detect_faces_in_photo(Utils.get_user_path(image['user_id']) + "/" + image['image_name']) Logger.debug('processing: ' + Utils.get_user_path(image['user_id']) + "/" + image['image_name']) # faces = yield from FaceUtils.detect_faces_in_photo("e:/data/images/" + image['image_name']) # Logger.debug('processing: ' + "e:/data/images/" + image['image_name']) if len(faces) == 0 or len(faces) > 10: return names = Utils.get_human_names(image.get('desc', '')) names.reverse() tags = image.get('tags', []) for face in faces: face_id = '' similars = yield from FaceUtils.find_similar_faces(image['user_id'], face) Logger.debug('similars: ' + str(similars)) for simi in similars: conf = simi['confidence'] if conf >= 0.9: face_id = simi['faceId'] break if not face_id: Logger.debug('no face id detected') face_id = face yield from FaceUtils.add_face_to_group(image['user_id'], face) try: name = names.pop() except: name = '' face_info = {'user_id':image['user_id'], 'face_id':face, 'name':name, 'candidates': similars} for simi in similars: fid = simi['faceId'] sm = MongoHelper.get_person(image['user_id'], fid) smcd = [i['faceId'] for i in sm['candidates']] if not fid in smcd: sm['candidates'].append({'faceId': face, 'confidence': simi['confidence']}) MongoHelper.save_person(sm) MongoHelper.save_person(face_info) if not face_id in tags: tags.append(face_id) image['tags'] = tags Logger.debug('tags: ' + str(tags))