当前位置: 首页 > news >正文

Yolo v8代码逐行解读

train.py文件

1.FILE = Path(__file__).resolve()

       __file__代表的是train.py文件,Path(__file__).resolve()结果是train.py文件的绝对路径。

2.ROOT = FILE.parents[0]

       获得train.py父目录的绝对路径

3.sys.path

       是一个列表list,里面包含了已经添加到系统的环境变量路径

当导入一个模块时,默认情况下python解释器会搜索当前目录已安装的内置模块和第三方模块。搜索路径放在sys模块的path中。sys模块包含与python解释器和它的环境有关的函数,可以通过dir(sys)来查看方法和成员属性。

4.可以永久的将路径添加到sys.path中:

(1)将写好的py文件添加到系统环境变量的目录下。

(2)在 /usr/lib/python10/site-packages 下面新建一个.pth 文件(以pth作为后缀名);将模块的路径写进去,一行一个路径,如: vim pythonmodule.pth

/home/liu/shell/config
/home/liu/shell/base

(3)使用PYTHONPATH环境变量

export PYTHONPATH=$PYTHONPATH:/home/user/shell/config

 5.导入自定义模块

引用模块和执行脚本文件不在同一个目录时,可按照如下形式添加路径:

(1)导入的包在另一个项目文件,在运行程序过程中,需要先加载导入的包,加载过程中python解释器会默认sys.path搜索路径取搜索。

(2)如果该包无法通过sys.path路径搜索,就需要将该包的搜索路径添加到自己程序脚本的默认搜索路径,重新运行程序。

import sys  
sys.path.append(’引用模块的地址')
sys.path.append("..")   # 添加当前路径的上一级目录

这种方法只作用于脚本运行时,运行之后路径导入就会失效。

6.ROOT = Path(os.path.relpath(ROOT, Path.cwd()))

os模块是一个对接操作系统的模块。

       python中的cwd是current work dir 的意思,就是当前工作目录。当前工作目录并不是你运行的python文件所在的目录就叫做工作目录,而是你在命令行中运行脚本时,命令行显示你所在的目录。当前工作目录并不是你运行的python文件所在的目录就叫做工作目录,而是你在命令行中运行脚本时,命令行显示你所在的目录。Path.cwd()获取的位置就是终端所在的位置。

os.path.relpath()用于从当前工作目录或给定目录获取给定路径的相对文件路径。

os.path.relpath(path, start = os.curdir)

        给定路径相对路径将相对于start指示的目录进行计算。此参数的默认值为os.curdir,它是操作系统用来引用当前目录的常量字符串。

7.os.getenv('LOCAL_RANK', -1),用于多卡训练控制参数。

os.getenv(key, default = None) 

返回环境变量键的值(如果存在),否则返回默认值。

8.parser.add_argument('--quad', action='store_true', help='quad dataloader')

        这个四元组函数重新调整批处理,从16x3x640x640 调整为 4x3x1280x1280。他仅仅是重新排列批处理中的马赛克。 他允许批处理过程中某些图像进行2倍放大。

9.vars()函数:以字典形式返回参数中每个成员的当前值。

print_args(vars(opt))

10.可复用代码:递增文件或目录路径

from pathlib import Path
import osdef increment_path(path, exist_ok=False, sep='', mkdir=False):# Increment file or directory path, i.e. runs/exp --> runs/exp{sep}2, runs/exp{sep}3, ... etc.path = Path(path)  # os-agnostic# 如果文件路径存在并且不创建 if path.exists() and not exist_ok:path, suffix = (path.with_suffix(''), path.suffix) if path.is_file() else (path, '')# Method 1# 增加第n个文件夹名称,直到该文件夹不存在,跳出循环,创建该文件 for n in range(2, 9999):p = f'{path}{sep}{n}{suffix}'  # increment pathif not os.path.exists(p):  #breakpath = Path(p)# Method 2 (deprecated)# dirs = glob.glob(f"{path}{sep}*")  # similar paths# matches = [re.search(rf"{path.stem}{sep}(\d+)", d) for d in dirs]# i = [int(m.groups()[0]) for m in matches if m]  # indices# n = max(i) + 1 if i else 2  # increment number# path = Path(f"{path}{sep}{n}{suffix}")  # increment pathif mkdir:path.mkdir(parents=True, exist_ok=True)  # make directoryreturn path
http://www.lryc.cn/news/170020.html

相关文章:

  • 9.18号作业
  • Spring源码阅读(spring-framework-5.2.24)
  • 【SpringMVC】文件上传与下载、JREBEL使用
  • 数据结构 第二章作业 线性表 西安石油大学
  • vue.mixin全局混合选项
  • VMware Fusion 13+Ubuntu ARM Server 22.04.3在M2芯片的Mac上共享文件夹
  • PostgreSQL serial类型
  • [创业之路-76] - 创业公司如何在长期坚持中顺势而为?诚迈科技参观交流有感
  • 人脸修复祛马赛克算法CodeFormer——C++与Python模型部署
  • linux入门到精通-第三章-vi(vim)编辑器
  • Mybatis面试题(三)
  • Qt扩展-KDDockWidgets 简介及配置
  • Vue3搭配Element Plus 实现候选搜索框效果
  • 进程间的通信方式
  • 分类预测 | Matlab实现基于MIC-BP-Adaboost最大互信息系数数据特征选择算法结合Adaboost-BP神经网络的数据分类预测
  • phpcms v9对联广告关闭左侧广告
  • 7.2.4 【MySQL】匹配范围值
  • 1400*C. No Prime Differences(找规律数学)
  • Python基础之装饰器
  • IDEA设置Maven 镜像
  • 项目评定等级L1、L2、L3、L4
  • 一个基于SpringBoot+Vue前后端分离学生宿舍管理系统详细设计实现
  • 工作相关----《配置bond》
  • Nacos、ZooKeeper和Dubbo的区别
  • 刷一下算法
  • three.js——GUI的使用
  • LeetCode 332. Reconstruct Itinerary【欧拉回路,通路,DFS】困难
  • 236. 二叉树的最近公共祖先 Python
  • WPF中DataGrid控件绑定数据源
  • Linux arm64 set_memory_ro/rw函数