计算机视觉 - argparse库使用

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 计算机视觉 - 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()

相关文章
|
4月前
|
机器学习/深度学习 人工智能 算法
Python在计算机视觉(CV)中扮演重要角色,得益于其丰富的库如OpenCV、Pillow和Scikit-image。
【7月更文挑战第5天】Python在计算机视觉(CV)中扮演重要角色,得益于其丰富的库如OpenCV、Pillow和Scikit-image。CV涉及图像处理、模式识别和机器学习,用于图像理解和生成。Python的跨平台特性和活跃社区使其成为CV的理想工具。基本流程包括图像获取、预处理、特征提取、分类识别及图像生成。例如,面部识别通过预处理图像,使用如`cv2.CascadeClassifier`进行检测;物体检测类似,但需适应不同目标;图像生成则利用GAN创造新图像。
68 4
|
6月前
|
机器学习/深度学习 监控 算法
开源计算机视觉库OpenCV详解
开源计算机视觉库OpenCV详解
|
6月前
|
机器学习/深度学习 监控 算法
开源计算机视觉库OpenCV详解
开源计算机视觉库OpenCV详解
114 3
|
6月前
|
定位技术 计算机视觉 C++
C++计算机视觉库OpenCV在Visual Studio 2022的配置方法
C++计算机视觉库OpenCV在Visual Studio 2022的配置方法
220 1
|
数据采集 XML 数据挖掘
计算机视觉PyTorch - 数据处理(库数据和训练自己的数据)
计算机视觉PyTorch - 数据处理(库数据和训练自己的数据)
121 1
|
Web App开发 人工智能 前端开发
Handsfree.js — 一个通过计算机视觉集成手势,面部表情和各种姿势识别的前端库
当电视上出现上图这种科技大片的时候,有没有幻想过有一天可以实现上图的这种交互,当我打开Handsfree这个库的介绍页时,看到前端页面竟然能够识别人的手势,面部以及各种肢体动作,简直刷新了我对前端能力的认知。确信这种交互有一天成为可能。
298 0
Handsfree.js — 一个通过计算机视觉集成手势,面部表情和各种姿势识别的前端库
|
计算机视觉 人工智能 自动驾驶
计算机视觉技术精选 | 免费资料库
近些年伴随着深度学习技术、GPU和云计算等运算力的增强,计算机视觉技术进入越来越实用的阶段。
1582 0
计算机视觉技术精选 | 免费资料库
|
6月前
|
机器学习/深度学习 计算机视觉
AIGC核心技术——计算机视觉(CV)预训练大模型
【1月更文挑战第13天】AIGC核心技术——计算机视觉(CV)预训练大模型
607 3
AIGC核心技术——计算机视觉(CV)预训练大模型
|
2月前
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。
|
2月前
|
人工智能 测试技术 PyTorch
AI计算机视觉笔记二十四:YOLOP 训练+测试+模型评估
本文介绍了通过正点原子的ATK-3568了解并实现YOLOP(You Only Look Once for Panoptic Driving Perception)的过程,包括训练、测试、转换为ONNX格式及在ONNX Runtime上的部署。YOLOP由华中科技大学团队于2021年发布,可在Jetson TX2上达到23FPS,实现了目标检测、可行驶区域分割和车道线检测的多任务学习。文章详细记录了环境搭建、训练数据准备、模型转换和测试等步骤,并解决了ONNX转换过程中的问题。

热门文章

最新文章