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

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

YOLO基础篇 · A11

作者:迪菲赫尔曼

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

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

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

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

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

本套正文使用:

text 复制代码
Ultralytics:8.4.183
官方仓库:ultralytics/ultralytics
源码提交:84694ebf8cd5d126c099626c363f0e0066019c43

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

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

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

2. 先看最终要得到什么

服务器目录应整理成:

text 复制代码
/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 包。

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

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

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

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

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

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

bash 复制代码
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 是文档示例,必须换为你实例实际地址与端口;用户名也按登录指令填写。密码在提示后输入,不写进命令。

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

bash 复制代码
cd /root/lanyun-tmp/yolo-study
ls -lh code/ultralytics-8.4.183.zip

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

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

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

bash 复制代码
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. 用三个小检查确认层级

bash 复制代码
pwd
ls code/ultralytics-8.4.183/pyproject.toml
ls code/ultralytics-8.4.183/ultralytics/__init__.py

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

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

python 复制代码
__version__ = "8.4.183"

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

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

只看见 ZIP,没有文件夹

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

出现了两层同名外层目录

例如:

text 复制代码
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 中记录:

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

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

上一篇:A10

下一篇:A12

相关推荐
用户8356290780512 小时前
Python 调整 Excel 工作表显示设置
后端·python
阿里云大数据AI技术2 小时前
阿里云DLF年度发布:Agentic Lake全模态 AI 数据湖底座
人工智能
chari克里2 小时前
QT5.15.2 + msvc2022部署全流程说明(windows可联网环境)
开发语言·c++·qt
小咕聊编程2 小时前
教育大数据可视化系统
python·django·flask
lusklusklusk2 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
玩AI的奶茶3 小时前
MiniMax H3 出 30 秒长片:显存账、拼接法和一次的成本
大数据·人工智能·ai·gpu算力·算力租赁
杭州默安科技3 小时前
从“被动响应”到“主动遏制”:AI Agent时代,网络防御体系如何重构?
人工智能·网络安全·ai智能体
Hello.Reader3 小时前
tsrs 技术解析用 Rust 移植 TypeScript 7,类型检查还能怎样提速?
开发语言·rust·typescript
Angeldream1233 小时前
第 10 章 医学影像伦理与安全
图像处理·人工智能·python·安全·机器学习·医学影像