PyQt5之参数解释器的用法

PyQt5之参数解释器的用法

函数内定义

当某个函数的参数可以定义在界面函数中时,如需修改某个参数值时,可以使用parse_args方法并传入模拟的命令行参数列表,从而实现对于main主函数的参数定义。

parser = argparse.ArgumentParser()

# model arguments
parser.add_argument('--img_size', type=int, default=256,
                    help='Image resolution')
parser.add_argument('--num_domains', type=int, default=2,
                    help='Number of domains')
parser.add_argument('--latent_dim', type=int, default=16,
                    help='Latent vector dimension')
parser.add_argument('--hidden_dim', type=int, default=512,
                    help='Hidden dimension of mapping network')
parser.add_argument('--style_dim', type=int, default=64,
                    help='Style code dimension')

# weight for objective functions
parser.add_argument('--lambda_reg', type=float, default=1,
                    help='Weight for R1 regularization')
parser.add_argument('--lambda_cyc', type=float, default=1,
                    help='Weight for cyclic consistency loss')
parser.add_argument('--lambda_sty', type=float, default=1,
                    help='Weight for style reconstruction loss')
parser.add_argument('--lambda_ds', type=float, default=1,
                    help='Weight for diversity sensitive loss')
parser.add_argument('--ds_iter', type=int, default=100000,
                    help='Number of iterations to optimize diversity sensitive loss')
parser.add_argument('--w_hpf', type=float, default=1,
                    help='weight for high-pass filtering')

# training arguments
parser.add_argument('--randcrop_prob', type=float, default=0.5,
                    help='Probabilty of using random-resized cropping')
parser.add_argument('--total_iters', type=int, default=100000,
                    help='Number of total iterations')
parser.add_argument('--resume_iter', type=int, default=0,
                    help='Iterations to resume training/testing')
parser.add_argument('--batch_size', type=int, default=8,
                    help='Batch size for training')
parser.add_argument('--val_batch_size', type=int, default=32,
                    help='Batch size for validation')
parser.add_argument('--lr', type=float, default=1e-4,
                    help='Learning rate for D, E and G')
parser.add_argument('--f_lr', type=float, default=1e-6,
                    help='Learning rate for F')
parser.add_argument('--beta1', type=float, default=0.0,
                    help='Decay rate for 1st moment of Adam')
parser.add_argument('--beta2', type=float, default=0.99,
                    help='Decay rate for 2nd moment of Adam')
parser.add_argument('--weight_decay', type=float, default=1e-4,
                    help='Weight decay for optimizer')
parser.add_argument('--num_outs_per_domain', type=int, default=10,
                    help='Number of generated images per domain during sampling')

# misc
parser.add_argument('--mode', type=str, required=True,
                    choices=['train', 'sample', 'eval', 'align'],
                    help='This argument is used in solver')
parser.add_argument('--num_workers', type=int, default=4,
                    help='Number of workers used in DataLoader')
parser.add_argument('--seed', type=int, default=777,
                    help='Seed for random number generator')

# directory for training
parser.add_argument('--train_img_dir', type=str, default='data/celeba_hq/train',
                    help='Directory containing training images')
parser.add_argument('--val_img_dir', type=str, default='data/celeba_hq/val',
                    help='Directory containing validation images')
parser.add_argument('--sample_dir', type=str, default='expr/samples',
                    help='Directory for saving generated images')
parser.add_argument('--checkpoint_dir', type=str, default='expr/checkpoints',
                    help='Directory for saving network checkpoints')

# directory for calculating metrics
parser.add_argument('--eval_dir', type=str, default='expr/eval',
                    help='Directory for saving metrics, i.e., FID and LPIPS')

# directory for testing
parser.add_argument('--result_dir', type=str, default='expr/results',
                    help='Directory for saving generated images and videos')
parser.add_argument('--src_dir', type=str, default='assets/representative/celeba_hq/src',
                    help='Directory containing input source images')
parser.add_argument('--ref_dir', type=str, default='assets/representative/celeba_hq/ref',
                    help='Directory containing input reference images')
parser.add_argument('--inp_dir', type=str, default='assets/representative/custom/female',
                    help='input directory when aligning faces')
parser.add_argument('--out_dir', type=str, default='assets/representative/celeba_hq/src/female',
                    help='output directory when aligning faces')

# face alignment
parser.add_argument('--wing_path', type=str, default='expr/checkpoints/wing.ckpt')
parser.add_argument('--lm_path', type=str, default='expr/checkpoints/celeba_lm_mean.npz')

# step size
parser.add_argument('--print_every', type=int, default=10)
parser.add_argument('--sample_every', type=int, default=5000)
parser.add_argument('--save_every', type=int, default=10000)
parser.add_argument('--eval_every', type=int, default=50000)

args_list = ['--mode', 'sample', '--num_domains', '3', '--resume_iter', '100000', '--w_hpf', '0','--checkpoint_dir', 'expr/checkpoints/afhq', '--result_dir', 'expr/results/afhq', '--src_dir', self.directory_src, '--ref_dir', self.directory_ref]

# 使用parse_args方法并传入模拟的命令行参数列表
        args = parser.parse_args(args_list)
        main.main(args)

函数外定义

类似于定义在options.py这样的函数中,通过对Options类的实例化,实例化参数解释器,从而获得其中定义的参数,如果想实现修改默认参数的话,可以在options.py中定义修改函数。

def set_data(self, attr_name, data):  
        # 直接使用传入的attr_name作为属性名来设置值  
        setattr(self.args, attr_name, data)

然后调用修改即可,

set_data('dcopy_result0_bvh', '/path/to/file0.bvh')
import argparse


class Options:
    def __init__(self, argv):
        if "--" not in argv:
            self.argv = []  # as if no args are passed
        else:
            self.argv = argv[argv.index("--") + 1:]

        usage_text = (
            "Run blender in background mode with this script:"
            "  blender --background --python [main_python_file] -- [options]"
        )

        self.parser = argparse.ArgumentParser(description=usage_text)
        self.initialize()
        self.args = self.parser.parse_args(self.argv)

    def initialize(self):
        self.parser.add_argument(
            '--dcopy_result0_bvh',
            type=str,
            default='./datasets/tgt_files/XBot_inp_Gangnam Style.bvh',
            help='path of bvh file',
        )
        self.parser.add_argument(
            '--dcopy_result1_bvh',
            type=str,
            default='./datasets/tgt_files/Robot_to_Ortiz_Gangnam Style.bvh',
            help='path of bvh file',
        )
        
        self.parser.add_argument(
            '--dcopy_result2_bvh',
            type=str,
            default='./datasets/tgt_files/Robot_to_Warrok_Gangnam Style.bvh',
            help='path of bvh file',
        )

        self.parser.add_argument(
            '--dcopy_result3_bvh',
            type=str,
            default='./datasets/tgt_files/Robot_to_Mousey_Gangnam Style.bvh',
            help='path of bvh file',
        )

        self.parser.add_argument(
            '--dcopy_fbx_file0',
            type=str,
            default='./datasets/skin/XBot.fbx',
            help='path of skinned model fbx file',
        )
        self.parser.add_argument(
            '--dcopy_fbx_file1',
            type=str,
            default='./datasets/skin/Ortiz.fbx',
            help='path of skinned model fbx file',
        )
        
        self.parser.add_argument(
            '--dcopy_fbx_file2',
            type=str,
            default='./datasets/skin/Warrok W Kurniawan.fbx',
            help='path of skinned model fbx file',
        )

        self.parser.add_argument(
            '--dcopy_fbx_file3',
            type=str,
            default='./datasets/skin/Mousey.fbx',
            help='path of skinned model fbx file',
        )

        self.parser.add_argument(
            '--save_path',
            type=str,
            default='./videos/',
            help='path of output video file',
        )

        # scene parameters
        self.parser.add_argument(
            '--view', type=str, default='front', help='view of the camera'
        )

        # rendering parameters
        self.parser.add_argument(
            '--render', action='store_true', default=True, help='render an output video'
        )
        self.parser.add_argument(
            '--render_engine',
            type=str,
            default='eevee',
            help='name of preferable render engine: cycles, eevee',
        )
        self.parser.add_argument(
            '--frame_end',
            type=int,
            default=2,
            help='the index of the last rendered frame',
        )
        self.parser.add_argument(
            '--fps', type=int, default=25, help='the frame rate of rendered video'
        )
        self.parser.add_argument('--resX', type=int, default=1920, help='x resolution')
        self.parser.add_argument('--resY', type=int, default=1080, help='y resolution')

    def parse(self):
        return self.args

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来视觉科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值