计算机视觉 - argparse库使用

简介: 计算机视觉 - argparse库使用

前言


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


argparse


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


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


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


  1. 导入模块 import argparse
  2. 创建解析对象 parser = argparse.ArgumentParser()
  3. 向该对象添加命令行参数 parser.add_argument()
  4. 调用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)
• 1

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()

相关文章
|
1天前
|
机器学习/深度学习 监控 算法
开源计算机视觉库OpenCV详解
开源计算机视觉库OpenCV详解
46 3
|
1天前
|
定位技术 计算机视觉 C++
C++计算机视觉库OpenCV在Visual Studio 2022的配置方法
C++计算机视觉库OpenCV在Visual Studio 2022的配置方法
|
11月前
|
数据采集 XML 数据挖掘
计算机视觉PyTorch - 数据处理(库数据和训练自己的数据)
计算机视觉PyTorch - 数据处理(库数据和训练自己的数据)
|
Web App开发 人工智能 前端开发
Handsfree.js — 一个通过计算机视觉集成手势,面部表情和各种姿势识别的前端库
当电视上出现上图这种科技大片的时候,有没有幻想过有一天可以实现上图的这种交互,当我打开Handsfree这个库的介绍页时,看到前端页面竟然能够识别人的手势,面部以及各种肢体动作,简直刷新了我对前端能力的认知。确信这种交互有一天成为可能。
230 0
Handsfree.js — 一个通过计算机视觉集成手势,面部表情和各种姿势识别的前端库
|
计算机视觉 人工智能 自动驾驶
计算机视觉技术精选 | 免费资料库
近些年伴随着深度学习技术、GPU和云计算等运算力的增强,计算机视觉技术进入越来越实用的阶段。
1538 0
计算机视觉技术精选 | 免费资料库
|
1天前
|
机器学习/深度学习 计算机视觉
AIGC核心技术——计算机视觉(CV)预训练大模型
【1月更文挑战第13天】AIGC核心技术——计算机视觉(CV)预训练大模型
401 3
AIGC核心技术——计算机视觉(CV)预训练大模型
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
69 0
|
1天前
|
机器学习/深度学习 编解码 人工智能
Vision Mamba:将Mamba应用于计算机视觉任务的新模型
Mamba是LLM的一种新架构,与Transformers等传统模型相比,它能够更有效地处理长序列。就像VIT一样现在已经有人将他应用到了计算机视觉领域,让我们来看看最近的这篇论文“Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Models,”
283 7
|
1天前
|
机器学习/深度学习 人工智能 计算机视觉
生成式计算机视觉(CV)模型的发展历程及最新进展
在计算机视觉(CV)领域,生成式AI技术的发展经历了多个阶段。在深度学习革命之前,传统的图像生成技术主要依赖于手工制作的特征,如纹理合成和纹理映射等方法。然而,这些方法在生成复杂和生动的图像方面的能力是有限的。
156 2
|
1天前
|
算法 数据库 计算机视觉
【计算机视觉】FCN、Seg-Net、U-Net模型进行图像分割实战(附源码和数据集 超详细必看)
【计算机视觉】FCN、Seg-Net、U-Net模型进行图像分割实战(附源码和数据集 超详细必看)
89 2

热门文章

最新文章