YOLO从零到论文:模型改进与科研实战全攻略
YOLO基础篇 · A04
作者:迪菲赫尔曼
大家好,我是迪菲赫尔曼。
上一篇,我们在 VS Code 里保存了 hello.py 和 notes.txt。
今天先不运行 Python。咱们把下方那个能输入命令的窗口用明白。
你以后安装软件、启动训练、查找文件,都会遇到终端。很多时候,一条命令本身并不长,但同学复制过去以后,就是和教程结果不一样。
原因可能不是命令错了,而是输入的位置不对,或者终端当前所在的目录不对。
这一篇,我们就用前面已经建立的文件,实际走一遍"看看自己在哪里 → 进入图片目录 → 找到图片 → 回到外层"。每一步都有可以核对的结果。
1. 开始之前,先把文件对上
在 VS Code 中打开你自己的 yolo-study。左侧应该有:
text
yolo-study
├── images
│ └── bus.jpg
├── hello.py
└── notes.txt
如果左侧只有一个 images 文件夹,先检查是不是打开了内层目录。我们要打开直接包含 images、hello.py 和 notes.txt 的那一层。
这篇不需要下载安装新的 Python,也不用先准备显卡。下面查看、切换目录的命令,由系统的 Shell 处理。
2. 终端、Shell、命令行,分别是什么?
这些词经常一起出现,咱们先用一个实际画面来分。
你在 VS Code 顶部点击:
text
终端 → 新建终端
Terminal → New Terminal
下方出现一个面板,里面能输入文字,按回车后会有反应。
这个提供输入、输出界面的地方,是终端。
但真正接收并解释我们接下来这些命令的,是里面运行的 Shell。
Windows 上常见 PowerShell、命令提示符 cmd;macOS、Linux 上常见 zsh、bash。它们都是需要区分的具体环境,命令写法不一定全部相同。
"命令行"通常指通过输入文字命令来操作的方式。你暂时不用纠结每个词的所有技术细节,先能分清:
text
VS Code:我们使用的编辑器
↓
编辑器中的终端:显示输入和输出的窗口
↓
终端里运行的 Shell:接收和执行命令
终端也可以运行 Python 解释器。到那时,接收你输入内容的程序就可能变了。这是后面第 9 节要特别区分的地方。
2.1 Windows 同学,这篇统一用 PowerShell
在终端面板里,找到新建终端的 + 附近的下拉菜单。
如果能直接选择 PowerShell ,点它新建一个终端。某些电脑显示的是 Windows PowerShell,本篇这些目录操作也可以使用。
如果需要设置默认项,可以选择:
text
选择默认配置文件 / Select Default Profile
↓
PowerShell 或 Windows PowerShell
↓
再新建一个终端
改默认项以后,请新建终端,不要以为旧终端里的 Shell 会跟着自动更换。
如果列表里没有这个选项,先记录当前终端的名称和显示内容,不要为了本篇随意复制网上的安装、卸载命令。
选择终端配置的操作,可对照 VS Code 官方终端配置说明。
2.2 Mac 同学
继续使用新建终端里默认的 zsh 或 bash 即可。本篇主体使用的 pwd、ls、cd,在这两种 Shell 下也能完成对应操作。
不过,终端显示的格式和 Windows 不同。下面会分别给出提示符示意,不要求你把自己的窗口改成一模一样。
本篇 Windows 路线指 PowerShell。不要把后面的 ls 直接套到 cmd,再因为找不到命令就认为软件坏了。
3. 先看懂提示符:哪一段是电脑给你的?
Windows PowerShell 中,可能看到:
text
PS C:\Users\XiaoMing\Documents\yolo-study>
这一行叫作提示符。它在提醒你:现在可以输入下一条命令了。
拆开看:
| 提示中的内容 | 这里怎么理解 |
|---|---|
PS |
此示例处于 PowerShell |
C:\Users\XiaoMing\Documents\yolo-study |
提示中显示的当前目录 |
最后的 > |
提示符的一部分,不是让你输入的命令 |
这里的用户名和路径都是示例。你可能在其他磁盘、OneDrive 目录或者不同用户名下面,这是正常的。
Mac 可能显示成:
text
xiaoming@MacBook yolo-study %
% 也是提示符示意。提示符可以自定义,所以后面我们还要用命令查看实际目录,不能只靠显示样式猜。
3.1 看到文章里的命令,到底复制哪一段?
本篇要输入的命令会单独写出来,例如:
powershell
pwd
你只需要输入 pwd,然后按回车。
不要复制成下面这样:
text
PS C:\Users\XiaoMing\Documents\yolo-study> pwd
这整行是"提示符加命令"的展示形式。前半段是电脑本来就有的提示,不属于你要输入的内容。
代码块旁边如果有复制按钮,也要先看清代码块是"命令",还是"显示示例"。我们这篇会把输出和错误例子明确写出来。
4. 第一条命令:先问"我在哪里?"
用鼠标点一下下方终端,确认光标在提示符后面闪烁。然后输入:
powershell
pwd
按回车。
在 PowerShell 中,pwd 是 Get-Location 的别名,可以先理解为"查看当前位置"。它显示当前工作位置,见微软 Get-Location 文档。
本篇使用文件系统目录,所以我们把它叫作当前工作目录,也简称当前目录。
PowerShell 的显示可能类似:
text
Path
----
C:\Users\XiaoMing\Documents\yolo-study
Mac 上则可能直接显示:
text
/Users/xiaoming/Documents/yolo-study
这些是格式示意,实际路径使用你自己的。
4.1 结果里最重要的是看哪里?
检查当前目录是否就是前面建好的 yolo-study。
不要只看末尾名字。电脑上如果有两份同名目录,还要通过完整位置区分。
如果当前显示的是自己的用户目录,而不是学习目录,先别继续输入 cd images。下一节我们先把位置调正确。
4.2 为什么一开始就查看目录?
因为第二篇讲过,相对路径必须有出发点。
一会儿输入 cd images 时,Shell 要从当前目录去找 images。如果你站在错误的位置,当然可能找不到。
这和模型结构、显卡、Python 版本都没有关系。先查位置,往往比重新安装软件有用。
5. 不在学习目录里,怎么回到正确位置?
这里给大家两种方法。第一次跟着做,优先用第一种。
5.1 从 VS Code 的文件夹入口打开终端
在左侧资源管理器里,找到最外层 yolo-study 文件夹名称,点击右键,寻找:
text
在集成终端中打开
Open in Integrated Terminal
如果最外层名称没有显示,先展开或检查是否已经打开整个文件夹。
通过这个入口打开后,再执行一次:
powershell
pwd
检查输出是不是自己的 yolo-study。
这一步的目的,是让终端从你选定的文件夹开始工作。不要只因为点过菜单就跳过核对,最终以实际输出为准。
VS Code 的集成终端和打开目录的入口,见官方终端入门。
5.2 使用 cd 加实际路径
cd 用来切换目录。
先在文件管理器里打开自己的 yolo-study,复制它的文件夹路径,再回终端输入 cd、一个空格,然后放入路径。
假设有位 Windows 同学的实际位置如下,那么命令会是:
text
cd "C:\Users\XiaoMing\Documents\yolo-study"
Mac 示例:
text
cd "/Users/xiaoming/Documents/yolo-study"
这两条中的路径必须换成你自己实际复制的路径,不要照抄 XiaoMing。
双引号要把整段路径包起来。如果复制时已经带了一对引号,就不要再额外套一对。
为什么加引号?如果路径中有空格,比如某层叫 YOLO Study,我们希望 Shell 把整段当成一个路径参数,而不是按空格拆开。
cd、后面的空格、引号里的路径,各有作用:
text
cd "实际的文件夹路径"
命令 告诉命令要去哪里
执行后再输入 pwd 检查。命令没有明显输出,并不一定表示没执行;切换目录是否成功,要看新的当前位置。
6. 第二条命令:看看当前位置里有什么
确认已经在 yolo-study,输入:
powershell
ls
按回车。
PowerShell 中,ls 是 Get-ChildItem 的别名,用来列出当前位置的子项;它可以显示文件和目录。参见微软 Get-ChildItem 文档。
Mac 的 zsh、bash 环境里,ls 也能列出当前目录内容,但显示格式可能不同。
我们现在关心的,是输出中应该能找到这些名字:
text
images
hello.py
notes.txt
PowerShell 还可能显示修改时间、大小等列;名字顺序也未必和上面一致。不要求你把每列都弄懂,先找到这三个名称。
6.1 ls 会自动打开图片吗?
不会。它只是列出目录里的内容,不会因此打开 bus.jpg,也不会运行 hello.py。
而且,现在站在外层目录,通常先看到的是 images 这个文件夹,并不是把里面每层的内容全部列出来。
想找里面的图片,我们下一步进入 images 再查看。
6.2 只有 images,没有另外两个文件?
先回左侧检查 hello.py、notes.txt 有没有保存到外层。
再对照 pwd 的完整路径,确认终端和编辑器是否指向同一份学习目录。
左侧能看见某个文件,不等于当前这个终端也恰好站在它所在的文件夹里。
7. 第三条命令:进入 images,再自己走回来
现在从 yolo-study 出发,输入:
powershell
cd images
这里,cd 是切换目录,空格后面的 images 是要进入的目录名称。
因为当前目录下面就有 images,所以这里可以用相对路径。
7.1 切换后,先验证
输入:
powershell
pwd
当前位置应该在原来路径末尾多了一层 images。比如:
text
C:\Users\XiaoMing\Documents\yolo-study\images
再输入:
powershell
ls
这次应该能看到:
text
bus.jpg
你看,现在没有改动图片,只是改变了我们查看文件的位置。
7.2 回到上一级目录
输入:
powershell
cd ..
注意,cd 后有一个空格,后面是两个英文句点。
第二篇讲过,.. 表示上一级目录。因此,这条命令会从 images 回到 yolo-study。
再分别输入:
powershell
pwd
powershell
ls
应该回到熟悉的外层,并重新看见 images、hello.py、notes.txt。
这就是一次完整的目录练习:
text
yolo-study
│
│ cd images
↓
images
│
│ cd ..
↓
yolo-study
这张图里,文件一直留在原处,变化的只有终端当前所在的位置。

固定文件树中的两个工作目录,以及从各起点访问同一张图片的相对路径。
左侧点开 hello.py 只是查看文件;终端的出发点仍要用 pwd 确认。
cd 在 PowerShell 中对应 Set-Location,可以参考微软切换位置说明。
7.3 是不是切换一次,就把文件搬走了?
没有。cd 改变的是当前工作位置,不是移动文件。
你在楼里从一个房间走到另一个房间,不代表房间里的桌子也被搬走。目录切换也是类似的意思。
同样,pwd 只是查看位置,ls 只是列出内容。本篇这三个命令不会修改你的代码和图片内容。
8. 当前工作目录,和编辑器打开的文件,有什么关系?
现在左侧打开 hello.py,然后点开 images/bus.jpg。
再回到终端执行:
powershell
pwd
仅仅切换编辑区里的文件标签,不代表这个已存在的终端就会自动切到那个文件的目录。
以后运行程序时,这一点尤其重要:
text
编辑器打开了谁:你现在正在看哪一份文件
终端站在哪里:你接下来输入命令时的出发点
这两个问题可以相关,但不能当成同一件事。
后面读到 images/bus.jpg 这种相对路径时,我们会检查程序实际使用的工作目录。有些运行方式可以配置工作目录,有些程序也会自行改变位置,所以最终还要在程序里查看。
现在先养成一个习惯:遇到找不到文件,先检查当前目录和目标路径,不要只看代码文件放在哪里。
9. 为什么有的窗口前面是 >>>?
以后你可能在教程里看到:
text
>>> print("你好")
你好
这是 Python 交互式解释器的展示示例。>>> 表示它在等待 Python 代码;下面的"你好"是运行输出。
这和本篇的 PowerShell 提示符不是一回事。
| 你看到的环境 | 通常在等什么 | 例子 |
|---|---|---|
| PowerShell、zsh、bash | Shell 命令 | pwd、cd images |
Python 的 >>> |
Python 语句或表达式 | print("你好") |
| VS Code 中间编辑区 | 文件内容 | 保存到 .py 的代码 |
| VS Code 顶部命令面板 | 编辑器的功能命令 | Configure Display Language |
把这几个入口放在一起看,先认接收这段文字的程序,再决定粘贴什么。

四种入口的职责与输入示例;这是教学示意,不是界面截图。
看到 >>> 时,先确认自己在 Python 里;要输入 pwd、cd images 这类命令,应回到 Shell。
Python 官方教程也会使用这种交互式提示符展示方式。
9.1 为什么不能看到文字框就直接粘贴?
因为接收文字的程序不同。
你把 Shell 命令写到 Python 的 >>> 后面,Python 会尝试按 Python 语法理解它,当然可能报语法错误。
你把 Python 代码直接贴到 PowerShell,也不能假定它会按 Python 运行。
所以每次复制前先问:这段要求写进文件,还是输入 Shell,还是输入 Python 交互窗口?
本篇还没要求启动 Python。这里只提前认这个标记,避免后面把窗口混在一起。
9.2 如果我已经意外进入了 >>>?
确认确实是 Python 的 >>>,可以输入:
text
exit()
按回车,退出交互式解释器,再确认是否回到原来的 Shell 提示符。
这个例子里的 exit() 是给 Python 交互窗口用的,不是让你不看环境就输入。以后学习环境配置时,我们会亲自演示进入和退出。
10. 下面几种情况,按什么顺序检查?
10.1 输入 cd images,提示找不到路径
先执行 pwd,确认当前是不是 yolo-study;再执行 ls,看看里面是否真的有 images。
如果当前已经在 images,再输入 cd images,就等于去找内层另一个 images。第二篇画过这个错误层级,现在可以对应起来了。
也检查拼写,images 和 image 不是同一个名字。
10.2 输入 cd hello.py,为什么不行?
hello.py 是文件,cd 要切换到的是目录。
想打开代码,就在左侧点文件;想执行代码,要在后续配置好解释器后使用运行命令。不要用 cd 承担这两件事。
10.3 按了回车,没有看到结果
像 cd 这样的命令,成功时可能只是重新显示提示符。继续用 pwd 验证。
如果光标还留在原行,也可能没有点进终端,或者没有真正提交输入。先看看光标在哪个区域。
如果提示符变成了等待续行的样子,检查是不是只输入了半个引号、括号。对于本篇没有执行破坏操作的输入,可以按 Ctrl + C 取消当前输入,再重新按完整的一行输入。
10.4 屏幕有红字,是不是所有东西都坏了?
先看最近一次执行了什么,再读错误信息。
"命令无法识别"和"路径不存在"不是同一种问题:前者先检查命令拼写和 Shell,后者先检查出发点与目录名称。
不要一看到红字就整段重新运行,也不要把网上不理解的修复命令全部粘上去。
10.5 命令一直在运行,我想中断
在常见的交互终端里,Ctrl + C 用来请求中断当前前台操作;它和文件复制快捷键在不同界面下承担的作用不同。
具体程序如何退出还取决于程序本身,不能保证所有子进程都会立刻结束。
本篇 pwd、ls、cd 一般很快返回。以后启动训练会出现持续日志,我们再讲怎么判断正在运行、正常结束和报错退出。
11. 今天的小练习:不用跟着代码块连复制
先自己完成,卡住再回头看正文。
- 在 VS Code 中打开自己的
yolo-study。 - 打开 PowerShell;Mac 使用 zsh 或 bash。
- 查看实际当前目录,确认是自己的学习目录。
- 列出当前内容,找到
images、hello.py、notes.txt。 - 进入
images,再次查看位置和内容,找到bus.jpg。 - 回到上一层,确认又能看到
hello.py。 - 打开
notes.txt,记录这次查看到的实际学习目录路径,保存。
本篇只需要记住这三条:
| 命令 | 这次实际做了什么 |
|---|---|
pwd |
查看当前在哪里 |
ls |
查看这里有什么 |
cd |
切换到另一个目录 |
再试着回答:如果终端在 images,左侧点开 hello.py,终端是否必然自动回到外层?
答案是不一定,也不能据此假定已经切换。用 pwd 检查,才有实际依据。
下一篇回到编辑区,咱们拆开最小的 Python 代码。等环境配置好,再用今天认识的终端把它执行起来。🍀