Python 系列模块介绍

python 部分库介绍

python 文档链接

PyTorch

  1. tensor().nonzero() 方法

    返回一个包含输入 input 中非零元素索引的张量.输出张量中的每行包含 input 中非零元素的索引

    1
    2
    3
    4
    x = torch.Tensor([[1,2,3,4,0.6,0],
    [1,2,3,4,0.4,1],
    [1,2,3,4,0.7,2]])
    (x[:,4:] > 0.5).nonzero()
    输出为:
    1
    2
    3
    4
    tensor([[0, 0],
    [1, 1],
    [2, 0],
    [2, 1]])
    可以看到,输出值第一行表示切片后的数据中第 0 行第 0 个数据满足大于 0.5,第二行表示第 1 行第 1 个数据大于 0.5,...。(这里说的第几行第几列均表示 tensor 索引,从 0 开始)

glob 模块

用于路径匹配

  • * 匹配一个或多个字符
  • ? 匹配单个字符
  • [] 匹配指定范围内字符,如:[0-9]匹配数字
  1. 直接输出列表
    1
    2
    3
    4
    import glob
    from pathlib import Path
    path = Path(r'C:\Users\TLDX\Desktop\yolov5-4.0\runs\detect\exp');
    print(glob.glob(r'{path}*')) # * 表示匹配所有路径
  2. 输出迭代器
    1
    2
    3
    4
    5
    import glob
    from pathlib import Path
    path = Path(r'C:\Users\TLDX\Desktop\yolov5-4.0\runs\detect\exp');
    for file in glob.iglob(r'{path}*'):
    print(file)
    参考链接

argparse 模块

Python 内置的一个用于命令项选项与参数解析的模块

主要有三个步骤:

  • 创建 ArgumentParser() 对象
  • 调用 add_argument() 方法添加参数
  • 使用 parse_args() 解析添加的参数
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import argparse

    # 实例化对象
    parser = argparse.ArgumentParser()
    # 添加属性
    parser.add_argument('--weights', type=str, default='weights/yolov5s.pt', help='initial weights path') # 模型训练权重
    parser.add_argument('--epochs', type=int, default=2) # epoch 次数
    parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes') # 缩放后要训练的图像大小
    parser.add_argument('--rect', action='store_true', help='rectangular training') # 矩形训练
    # 解析添加的参数
    args = parser.parse_args()
    print(args)

re 模块

使用正则表达式匹配

参考 菜鸟教程正则表达式

os 模块

1
2
import os
os.path.join(p, '*.*')

可参考 菜鸟教程

python 独特使用

1
2
3
images = [x for x in files if x.split('.')[-1].lower() in images_format]

model(img.half() if half else img) if device.type != 'cpu' else None

python 内置函数

  1. hasattr 函数 用于判断对象是否包含对应的属性
    1
    hasattr(object, name)
  2. getattr 函数 函数用于返回一个对象属性值。
    1
    getattr(object, name, default)
    • object:对象
    • name:对象的属性
    • defaul:当需要查找的属性没有时,提供默认返回值
  3. setattr 函数 函数用于设置属性值
    1
    setattr(object, name, value)
    • object:对象
    • name:对象的属性
    • value:属性值
    如果属性不存在会创建一个新的对象属性,并对属性赋值:

yaml

一种标记语言,一般用于配置文件的书写

用法

1
2
3
4
5
6
7
import yaml
# 读 yaml 文件
with open('file_name') as f:
data = yaml.load(f, Loader=FullLoader)
# 写 yaml 文件
with open('file_name') as f:
yaml.dump(data, f,)
参考链接

tqdm

Tqdm 是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。

可以有以下几种用法 1. ```python from tqdm import tqdm for i in tqdm(range(1000)): pass

1
2
3
4
2. ```python
pbar = tqdm(['a', 'b','c','d'])
for char in pbar:
pbar.set_description('Processing %s' % char)
参考链接

Threading

参考链接

logging 模块

参考链接