迪菲赫尔曼头像
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚封面图

【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚

YOLO从零到论文:模型改进与科研实战全攻略

YOLO基础篇 · A11

作者:迪菲赫尔曼

大家好,我是迪菲赫尔曼。

上一篇已经准备好服务器上的课程环境。今天先不训练,而是把后面要读、要改的代码准备好。

“我装了 YOLO”和“我知道自己正在使用哪份 YOLO 源码”,是两个不同的状态。 后面要加模块,如果你改的是甲目录,Python 导入的却是乙目录,程序不会因为你在编辑器里保存了文件,就自动读到甲。

所以这篇认真处理版本和路径。没有 Git 基础也能完成,第一次使用固定 ZIP 路线。

1. 本专栏为什么固定版本?

本套正文使用:

Ultralytics:8.4.183
官方仓库:ultralytics/ultralytics
源码提交:84694ebf8cd5d126c099626c363f0e0066019c43

版本号方便沟通,提交号进一步明确代码快照。我们后面说“打开 tasks.py”,希望你打开的内容能与文章对上。

固定版本不等于以后永不更新。先用一个确定版本理解结构与实验,再依据具体变动迁移,远比每天更新却不知道哪一处接口变了更容易学习。

模型权重也要记录来源。.pt 权重与整份 Python 源码不是同一个文件,下篇安装源码以后,第十一篇才加载指定检测权重。

2. 先看最终要得到什么

服务器目录应整理成:

/root/lanyun-tmp/yolo-study/
├── env/
├── code/
│   ├── ultralytics-8.4.183.zip
│   └── ultralytics-8.4.183/
│       ├── pyproject.toml
│       ├── README.md
│       └── ultralytics/
│           ├── __init__.py
│           ├── nn/
│           └── models/
├── images/
├── datasets/
├── weights/
└── outputs/

外层 ultralytics-8.4.183 是源码项目根目录,直接包含 pyproject.toml;内层 ultralytics 是 Python 包目录。

文件夹名字相似,不代表这两层可以随便互换。 下篇安装的是含 pyproject.toml 的外层,不是内层某个 .py 文件。

先在目录树里找 pyproject.toml,再认清内层的 ultralytics 包。

A11_01.png

外层含 pyproject.toml 的项目目录用于安装;内层 ultralytics 包包含导入的 __init__.py。

安装目标是含 pyproject.toml 的外层项目;之后导入的位置会落到内层包里的 __init__.py。

3. 把固定源码 ZIP 上传过去

本篇提供 固定源码离线 ZIP,它来自上面明确的官方提交,外层名称已统一。先保存到本地学习目录的 code 下。

也可以从 官方提交归档 获取同一份代码。官方归档外层可能带提交号;第一次按随文 ZIP 跟做,减少不必要的目录差异。

下面的上传命令在本地终端执行。 先切到本地 yolo-study,再按 A09 的方法输入示例:

scp -P 2222 ./code/ultralytics-8.4.183.zip root@203.0.113.10:/root/lanyun-tmp/yolo-study/code/

203.0.113.10 和 2222 是文档示例,必须换为你实例实际地址与端口;用户名也按登录指令填写。密码在提示后输入,不写进命令。

传输完成,切回远端终端:

cd /root/lanyun-tmp/yolo-study
ls -lh code/ultralytics-8.4.183.zip

先确认文件存在且大小合理。一个 0 字节文件即使名字叫 ZIP,也不代表源码已经传好了。

4. 在服务器解压,别只在电脑里解压

在已激活课程环境的远端终端执行:

python -m zipfile -e code/ultralytics-8.4.183.zip code
ls code
ls code/ultralytics-8.4.183

-e 表示提取归档内容,最后的 code 是目标目录。不要把这行写进 .py 文件,也不要输入到 Python 的 >>> 后面。

本次应该看到 pyproject.toml 和内层 ultralytics。

如果目标目录已经有自己改过的代码,先停止,不要再解压覆盖。 初次解压、重新下载、保存自己的改动是不同操作。源码回退会在进入 C 组前专门讲。

5. 用三个小检查确认层级

pwd
ls code/ultralytics-8.4.183/pyproject.toml
ls code/ultralytics-8.4.183/ultralytics/__init__.py

第一条应显示课程根目录。后两条分别确认项目描述文件和包版本文件的位置。

再通过 VS Code 远端文件树打开内层 ultralytics/__init__.py,找到:

__version__ = "8.4.183"

这是阅读文本,还不是运行验证。不能看见版本字符串,就宣布 Python 已经导入了这里。是否真正使用这份源码,要等下一篇安装后打印 ultralytics.__file__。

6. 三种常见目录问题,分别处理

只看见 ZIP,没有文件夹

说明远端还没有成功解压。先看解压命令的错误,不要在本地多解压几次,期待远端自动同步。

出现了两层同名外层目录

例如:

code/ultralytics-8.4.183/ultralytics-8.4.183/pyproject.toml

说明目标路径和归档外层叠加了。先找到真正包含 pyproject.toml 的那层,下一篇安装路径要准确。刚开始没有个人修改时,可以重新整理到第 2 节结构;已经改过时先备份,避免边移动边覆盖。

下载下来只有一个 tasks.py

那是单个源码文件,不是整个项目。模型还依赖其他模块、配置与工具文件。回到固定 ZIP,不要尝试只安装一个 tasks.py。

7. Git 暂时不是门槛,但版本记录不能省

ZIP 通常没有 .git 历史。在这里执行 git log 提示不是仓库,不代表源码损坏。

以后我们会教保存自己的修改、查看差异和回退。第一次先把“代码从哪里来、放在哪里、版本是什么”记录清楚,不要求你先学完 Git。

在服务器 notes.txt 中记录:

源码版本:8.4.183
源码提交:84694ebf8cd5d126c099626c363f0e0066019c43
源码根目录:/root/lanyun-tmp/yolo-study/code/ultralytics-8.4.183
当前状态:刚解压官方源码,尚未加入教程模块

下一篇用课程解释器安装这份源码。到那时,我们要同时确认环境路径和源码路径,才能说两条线真正接上了。

上一篇:A10

下一篇:A12

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/weixin_43694096/article/details/169446490

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--