当前位置 : 主页 > 编程语言 > java >

计算机视觉 - argparse库使用

来源:互联网 收集:自由互联 发布时间:2022-06-30
前言 在构建神经网络过程中,常常需要修改神经网络的超参数,比如说训练样本的批次大小、学习率等。为了方便参数修改,可以通过命令行来传递这些超参数,通过argparse也可以定义

前言

在构建神经网络过程中,常常需要修改神经网络的超参数,比如说训练样本的批次大小、学习率等。为了方便参数修改,可以通过命令行来传递这些超参数,通过argparse也可以定义文件路径,读取文件夹列表下的所有文件。

argparse

argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数。

大白话说就是可以通过argparse配置程序中运行的相应参数。并可以在终端使用命令行的形式给程序命令行添加对应的参数来运行程序。

给程序配置argparse通常分为四个步骤:

  • 导入模块 import argparse
  • 创建解析对象 parser = argparse.ArgumentParser()
  • 向该对象添加命令行参数 parser.add_argument()
  • 调用parser.parse_args()进行解析
  • 1.设置默认参数函数

    import argparse

    parser = argparse.ArgumentParser()
    parser.add_argument("echo")
    args = parser.parse_args()
    print(args.echo)(base) my macbook % python script.py haha
    haha
    (base) my macbook % python script.py -h
    usage: script.py [-h] echo

    positional arguments:
    echo

    optional arguments:
    -h, --help show this help message and exit

    输入 -h 参数,命令行会提示 positional arguments 是 echo 是必填。

    2.设置可选参数函数

    • “-”:指定短的参数,如-h
    • “–”指定长的参数,如-help
      这两种方式可以同存,也可以只存在一个。
    import argparse

    parser = argparse.ArgumentParser()
    parser.add_argument("-v","--verbose",help="添加输出 verbose",action="store_true")
    args = parser.parse_args()
    if args.verbose:
    print("输入参数成功")

    其中action=“store_true”,表示可以不用为参数,-v,指定特定值。

    3.类型 type

    import argparse

    parser = argparse.ArgumentParser()
    parser.add_argument("-x",type=int,help="输入数字")
    args = parser.parse_args()
    y=args.x
    answer=y**3+y+1
    print(answer)

    默认情况下type为str。

    (base) my macbook % python script.py -x 2
    11

    4.可选值 choices=[]

    这里设定取值范围为0、1、2。

    import argparse
    parser=argparse.ArgumentParser()
    parser.add_argument("-square",type=int,help="display number")
    parser.add_argument("-v","--verbosity",type=int,choices=[0,1,2],help="increase output verbosity")
    args=parser.parse_args()
    answer=args.square**2
    if args.verbosity==2:
    print("the square of {} equals {}".format(args.square,answer))
    elif args.verbosity==1:
    print("{}^2=={}".format(args.square,answer))
    else:
    print(answer)(base) my macbook % python script.py -square 4 -v 0
    16
    (base) my macbook % python script.py -square 4 -v 1
    4^2==16
    (base) my macbook % python script.py -square 4 -v 2
    the square of 4 equals 16
    (base) my macbook % python script.py -square 4 -v 3
    usage: script.py [-h] [-square SQUARE] [-v {0,1,2}]
    script.py: error: argument -v/--verbosity: invalid choice: 3 (choose from 0, 1, 2)

    5.互斥参数

    group=parser.add_mutually_exclusive_group()
    group.add_argument("-v","--verbose",action="store_true")
    group.add_argument("-q","--quiet",action="store_true")

    第一行定义一个互斥组,第二、三行在互斥组中添加-v和-q两个参数。

    import argparse
    parser=argparse.ArgumentParser(description="my argparse script")
    group=parser.add_mutually_exclusive_group()
    group.add_argument("-v","--verbose",action="store_true")
    group.add_argument("-q","--quiet",action="store_true")
    parser.add_argument("-x",type=int,help="the base")
    parser.add_argument("-y",type=int,help="the exponent")
    args=parser.parse_args()
    answer=args.x**args.y

    if args.quiet:
    print(answer)
    elif args.verbose:
    print("{} to the power {} equals {}".format(args.x,args.y,answer))
    else:
    print("{}^{}=={}".format(args.x,args.y,answer))(base) my macbook % python script.py -h
    usage: script.py [-h] [-v | -q] [-x X] [-y Y]

    my argparse script

    optional arguments:
    -h, --help show this help message and exit
    -v, --verbose
    -q, --quiet
    -x X the base
    -y Y the exponent(base) my macbook % python script.py -x 4 -y 2 -v
    4 to the power 2 equals 16
    (base) my macbook % python script.py -x 4 -y 2 -q
    16
    (base) my macbook % python script.py -x 4 -y 2
    4^2==16
    (base) my macbook % python script.py -x 4 -y 2 -v -q
    usage: script.py [-h] [-v | -q] [-x X] [-y Y]
    script.py: error: argument -q/--quiet: not allowed with argument -v/--verbose

    -q 和 -v 不出现,或仅出现一个都可以,同时出现就会报错

    6.参数默认值

    parser.add_argument("-x",type=int,help="the base",default=6)

    default设定参数默认值

    import argparse
    parser=argparse.ArgumentParser(description="my argparse script")

    parser.add_argument("-x",type=int,help="the base",default=6)
    parser.add_argument("-y",type=int,help="the exponent",default=2)
    args=parser.parse_args()
    answer=args.x**args.y
    print(answer)(base) my macbook % python script.py
    36

    argparse库在计算机视觉中的应用

    import cv2
    from __future__ import print_function
    import argparse

    parser = argparse.ArgumentParser()
    parser.add_argument("-i", "--image",
    help = "Path to the image",default='1.jpg')
    args = vars(parser.parse_args())

    image1 = cv2.imread(args["image"])
    print("width: {}pixels".format(image1.shape[1]))
    print("hight: {}pixels".format(image1.shape[0]))
    print("channels: {}".format(image1.shape[2]))

    cv2.imshow("image", image1)
    cv2.waitKey(0)
    cv2.destroyAllWindows()(base) my macbook % python script.py
    width: 450pixels
    hight: 288pixels
    channels: 3

    这用到了vars(),是为了能够像字典一样访问 ap.parse_args()的值,即现在 args[“image”]=parser.parse_args()


    上一篇:计算机视觉PyTorch实现目标检测:SSD
    下一篇:没有了
    网友评论