import argparse import os from demo.processor import IDPhotoProcessor from demo.ui import create_ui from hivision.creator.choose_handler import HUMAN_MATTING_MODELS root_dir = os.path.dirname(os.path.abspath(__file__)) # 获取存在的人像分割模型列表 # 通过检查 hivision/creator/weights 目录下的 .onnx 和 .mnn 文件 # 只保留文件名(不包括扩展名) HUMAN_MATTING_MODELS_EXIST = [ os.path.splitext(file)[0] for file in os.listdir(os.path.join(root_dir, "hivision/creator/weights")) if file.endswith(".onnx") or file.endswith(".mnn") ] # 在HUMAN_MATTING_MODELS中的模型才会被加载到Gradio中显示 HUMAN_MATTING_MODELS_CHOICE = [ model for model in HUMAN_MATTING_MODELS if model in HUMAN_MATTING_MODELS_EXIST ] if len(HUMAN_MATTING_MODELS_CHOICE) == 0: raise ValueError( "未找到任何存在的人像分割模型,请检查 hivision/creator/weights 目录下的文件" + "\n" + "No existing portrait segmentation model was found, please check the files in the hivision/creator/weights directory." ) FACE_DETECT_MODELS = ["face++ (联网Online API)", "mtcnn"] FACE_DETECT_MODELS_EXPAND = ( ["retinaface-resnet50"] if os.path.exists( os.path.join( root_dir, "hivision/creator/retinaface/weights/retinaface-resnet50.onnx" ) ) else [] ) FACE_DETECT_MODELS_CHOICE = FACE_DETECT_MODELS + FACE_DETECT_MODELS_EXPAND LANGUAGE = ["zh", "en", "ko", "ja"] if __name__ == "__main__": argparser = argparse.ArgumentParser() argparser.add_argument( "--port", type=int, default=7860, help="The port number of the server" ) argparser.add_argument( "--host", type=str, default="127.0.0.1", help="The host of the server" ) argparser.add_argument( "--root_path", type=str, default=None, help="The root path of the server, default is None (='/'), e.g. '/myapp'", ) args = argparser.parse_args() processor = IDPhotoProcessor() demo = create_ui( processor, root_dir, HUMAN_MATTING_MODELS_CHOICE, FACE_DETECT_MODELS_CHOICE, LANGUAGE, ) demo.launch( # server_name=args.host, # server_port=args.port, # favicon_path=os.path.join(root_dir, "assets/hivision_logo.png"), # root_path=args.root_path, show_api=False, )