def post(self): result = {'status': False} try: user_id = self.get_argument('user_id', '') user_name = self.get_argument('username', '') password = self.get_argument('password', '') lang = self.get_argument('lang', 'zh-CN') if user_id == '' or user_name == '' or password == '': self.write(json.dumps(result)) return user = MongoHelper.get_user_by_id(user_id) if user is not None: self.write(json.dumps(result)) return user = {'user_id': user_id, 'user_name': user_name, 'password': password, 'lang': lang} server = Utils.allocate_user_server(user_id) user['server'] = server MongoHelper.register_user(user) MongoHelper.increase_server_usage(server, 1) result['status'] = True user["_id"] = ''; result['user'] = user result['token'] = Utils.generate_access_token(user_id) FaceUtils.train_default(user_id) finally: self.write(json.dumps(result))
def post(self): result = {'status': False} try: user_id = self.get_argument('user_id', '') user_name = self.get_argument('username', '') password = self.get_argument('password', '') lang = self.get_argument('lang', 'zh-CN') if user_id == '' or user_name == '' or password == '': self.write(json.dumps(result)) return user = MongoHelper.get_user_by_id(user_id) if user is not None: self.write(json.dumps(result)) return user = { 'user_id': user_id, 'user_name': user_name, 'password': password, 'lang': lang } server = Utils.allocate_user_server(user_id) user['server'] = server MongoHelper.register_user(user) MongoHelper.increase_server_usage(server, 1) result['status'] = True user["_id"] = '' result['user'] = user result['token'] = Utils.generate_access_token(user_id) FaceUtils.train_default(user_id) finally: self.write(json.dumps(result))
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_faces(image): tags = image.get('tags', []) user_id = image.get('user_id', '') if not user_id: return exists = FaceUtils.is_person_group_exists(user_id) if not exists: FaceUtils.create_person_group(user_id) image_name = image.get('image_name', '') if not image_name: return names = Utils.get_human_names(image.get('desc', '')) names.reverse() faces = FaceUtils.detect_faces_in_photo(Utils.get_user_path(user_id) + "/" + image_name) result = FaceUtils.identify_faces(user_id, faces) for res in result: face_id = res['faceId'] target_id = '' candidates = res.get('candidates', []) if len(candidates) > 0: target_id = candidates[0] if target_id: tags.append(target_id) else: person_id = FaceUtils.create_person(user_id, [face_id], uuid.uuid4()) FaceUtils.train_person_group_wait(user_id) person = {'person_id': person_id, 'name': names.pop()} MongoHelper.save_person(person) image['tags'] = 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))
def process_faces(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']) if len(faces) == 0 or len(faces) > 10: return names = Utils.get_human_names(image.get('desc', '')) names.reverse() for face in faces: candidates = [] person_id = '' identify_res = yield from FaceUtils.identify_faces( image['user_id'], [face], 3) if len(identify_res) > 0: result = identify_res[0] candidates = result['candidates'] for cand in candidates: if cand['confidence'] > 0.9: person_id = cand['personId'] break if not person_id: person_id = yield from FaceUtils.create_person( image['user_id'], [face], uuid.uuid4()) Logger.debug('person created: ' + person_id) name = '' try: name = names.pop() except: pass person = { 'user_id': image['user_id'], 'person_id': person_id, 'name': name, 'candidates': candidates } MongoHelper.save_person(person) MongoHelper.add_train_person_groups(image['user_id']) tags = image.get('tags', set()) tags.add(person_id) image['tags'] = tags Logger.debug('tags: ' + str(tags))
def process_faces(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']) if len(faces) == 0 or len(faces) > 10: return names = Utils.get_human_names(image.get('desc', '')) names.reverse() for face in faces: candidates = [] person_id = '' identify_res = yield from FaceUtils.identify_faces(image['user_id'], [face], 3) if len(identify_res) > 0: result = identify_res[0] candidates = result['candidates'] for cand in candidates: if cand['confidence'] > 0.9: person_id = cand['personId'] break if not person_id: person_id = yield from FaceUtils.create_person(image['user_id'], [face], uuid.uuid4()) Logger.debug('person created: ' + person_id) name = '' try: name = names.pop() except: pass person = {'user_id':image['user_id'], 'person_id':person_id, 'name':name, 'candidates': candidates} MongoHelper.save_person(person) MongoHelper.add_train_person_groups(image['user_id']) tags = image.get('tags', set()) tags.add(person_id) image['tags'] = tags Logger.debug('tags: ' + str(tags))
def process_faces(image): tags = image.get('tags', []) user_id = image.get('user_id', '') if not user_id: return exists = FaceUtils.is_person_group_exists(user_id) if not exists: FaceUtils.create_person_group(user_id) image_name = image.get('image_name', '') if not image_name: return names = Utils.get_human_names(image.get('desc', '')) names.reverse() faces = FaceUtils.detect_faces_in_photo( Utils.get_user_path(user_id) + "/" + image_name) result = FaceUtils.identify_faces(user_id, faces) for res in result: face_id = res['faceId'] target_id = '' candidates = res.get('candidates', []) if len(candidates) > 0: target_id = candidates[0] if target_id: tags.append(target_id) else: person_id = FaceUtils.create_person(user_id, [face_id], uuid.uuid4()) FaceUtils.train_person_group_wait(user_id) person = {'person_id': person_id, 'name': names.pop()} MongoHelper.save_person(person) image['tags'] = tags
def do_post(self): result = {'status': False} Logger.debug('in upload') try: userId = self.get_argument('user_id', '') rawLocation = self.get_argument('loc','') desc = [self.get_argument('tag', '')] rawTags = self.get_argument('tag', '') rowTime = self.get_argument('time', '') faceInfo = self.get_argument('face', '') token = self.get_argument('token','') image_name = self.get_argument('image_name','') print('image_name:',image_name) user = MongoHelper.get_user_by_id(userId) if token != user['token']: Logger.debug('token wrong') return print('userId',userId) print('rawTags',rawTags) try: path = Utils.get_user_path(userId) #if self.request.files: files = self.request.files['image'] # process image file if files is None or len(files) == 0: self.write(json.dumps(result)) return fileinfo = files[0] fname = fileinfo['filename'] fh = open(path + "/" + fname, 'wb') fh.write(fileinfo['body']) finally: if not MongoHelper.check_img_exist(userId, image_name): if faceInfo is not '': face = faceInfo.split(' ') face_final = FaceUtils.get_face_final(face) # filter out meaningful tags key_words = rawTags.split(' ') print('key_words:',key_words) tags = [] if key_words is not None and len(key_words) != 0: tags = Utils.get_meaningful_keywords(key_words) print('tags:',tags) # split date and time temptime = datetime.strptime(rowTime, '%Y-%m-%d %X %z') time = datetime(temptime.year, temptime.month, temptime.day, temptime.hour, temptime.minute, temptime.second, 17100) key_location = rawLocation.split(',') # '1122, 234, beijing, zhongguan' Logger.debug('key_location: ' + str(key_location)) if key_location is not None and len(key_location) > 1: location = Utils.get_location_from_rawlocation(key_location) Logger.debug('location: ' + str(location)) image = {'user_id': userId, 'image_name': fname, 'location':location, 'desc': desc, 'tags': tags, 'time':time, 'processed': False,'face':face_final} MongoHelper.save_image(image) Utils.update_time_indexer(userId,image) else: ##图片上传过,则为更新tag或face if faceInfo is not '': face = faceInfo.split(' ') face_final = FaceUtils.get_face_final(face) MongoHelper.update_face_in_existimage(userId,image_name,face_final) Utils.update_image_tag(rawTags,userId,image_name) result['status'] = True finally: self.write(json.dumps(result)) # if __name__ == "__main__": #
def train_person_group(group_id): Logger.debug('start training: ' + group_id) yield from FaceUtils.train_person_group_wait(group_id)
def do_post(self): result = {'status': False} Logger.debug('in upload') try: userId = self.get_argument('user_id', '') rawLocation = self.get_argument('loc', '') desc = [self.get_argument('tag', '')] rawTags = self.get_argument('tag', '') rowTime = self.get_argument('time', '') faceInfo = self.get_argument('face', '') token = self.get_argument('token', '') image_name = self.get_argument('image_name', '') print('image_name:', image_name) user = MongoHelper.get_user_by_id(userId) if token != user['token']: Logger.debug('token wrong') return print('userId', userId) print('rawTags', rawTags) try: path = Utils.get_user_path(userId) #if self.request.files: files = self.request.files['image'] # process image file if files is None or len(files) == 0: self.write(json.dumps(result)) return fileinfo = files[0] fname = fileinfo['filename'] fh = open(path + "/" + fname, 'wb') fh.write(fileinfo['body']) finally: if not MongoHelper.check_img_exist(userId, image_name): if faceInfo is not '': face = faceInfo.split(' ') face_final = FaceUtils.get_face_final(face) # filter out meaningful tags key_words = rawTags.split(' ') print('key_words:', key_words) tags = [] if key_words is not None and len(key_words) != 0: tags = Utils.get_meaningful_keywords(key_words) print('tags:', tags) # split date and time temptime = datetime.strptime(rowTime, '%Y-%m-%d %X %z') time = datetime(temptime.year, temptime.month, temptime.day, temptime.hour, temptime.minute, temptime.second, 17100) key_location = rawLocation.split( ',') # '1122, 234, beijing, zhongguan' Logger.debug('key_location: ' + str(key_location)) if key_location is not None and len(key_location) > 1: location = Utils.get_location_from_rawlocation( key_location) Logger.debug('location: ' + str(location)) image = { 'user_id': userId, 'image_name': fname, 'location': location, 'desc': desc, 'tags': tags, 'time': time, 'processed': False, 'face': face_final } MongoHelper.save_image(image) Utils.update_time_indexer(userId, image) else: ##图片上传过,则为更新tag或face if faceInfo is not '': face = faceInfo.split(' ') face_final = FaceUtils.get_face_final(face) MongoHelper.update_face_in_existimage( userId, image_name, face_final) Utils.update_image_tag(rawTags, userId, image_name) result['status'] = True finally: self.write(json.dumps(result))