YOLO从零到论文:模型改进与科研实战全攻略
YOLO基础篇 · A02
作者:迪菲赫尔曼
大家好,我是迪菲赫尔曼。
先和大家说一句,这一篇会讲得特别基础,可能细到有些同学看到标题都会想:"建个文件夹、复制一张图片,这也要单独讲一篇?"
是的,这次咱们就从这里开始。
这几年写教程、和大家交流的过程中,我遇到过太多卡在基础操作上的问题。很多读者都是跨专业过来做课题的,之前没有学过编程,平时也很少接触项目文件。真的有不少同学,刚开始连文件和文件夹的区别都不清楚,更别说文件后缀、目录层级和路径了。
我们平时顺手写一句"新建一个文件夹,把图片放进去",有的同学就会卡住:文件夹在哪里建?建在桌面还是项目里面?图片下载完去了哪里?这里说的"目录",又是电脑里的哪个位置?这些问题,对刚起步的人来说,确实需要有人带着走一遍。
所以,看到这一篇讲得这么细,熟悉电脑操作的同学可能会觉得有点夸张,但这些都是写教程时实际遇到过的困惑。前面把它们讲清楚,后面下载源码、准备数据集、修改配置时,大家才更容易跟得上。
所以这几篇,我会把操作拆得细一点:点哪里、文件放在哪里、怎么确认自己做对了,都尽量交代清楚。熟悉这些操作的同学,还请多担待,可以快速看一遍,确认会做以后继续往下读。
刚入门的同学也别觉得不好意思。咱们先把这些看起来很小的事情弄明白,后面跑代码、做实验,才更容易跟得上。
上一篇我们看了检测、实例分割和分类的结果,也说清楚了后面大概要做什么。
这一篇开始动手。
先做一件看起来很基础、但后面会反复用到的事:建立自己的学习文件夹,把一张图片放进去,再把它找出来。
以后下载源码、配置数据集、加载权重,都要用到文件位置。现在把这个弄清楚,后面就不容易在"文件找不到"上绕来绕去。
做完以后,你的目录会是这样:
text
yolo-study
└── images
└── bus.jpg
这里还没有 Python 代码。用电脑的文件管理器就可以完成。🍀
主要操作按 Windows 11 说明。使用其他版本时菜单可能不同,关键是完成同样的文件操作。Mac 的对应方法在文中另列。
1. 先分清文件和文件夹
我们平时打开一张照片、一份文档,操作的通常就是文件。
文件夹用来整理这些文件,也可以继续放其他文件夹。
比如:
text
yolo-study ← 一个文件夹
└── images ← 里面的另一个文件夹
└── bus.jpg ← 一张图片文件
这里的竖线和拐角,只是在文章里表示"谁放在谁里面",叫作目录树。
这些符号不用输入到电脑里,文件名也不用带上箭头后的说明。
你只需要创建名叫 yolo-study 的文件夹,再在里面建 images,最后把图片放进去。
下面一步一步做。
2. 建立 yolo-study 文件夹
2.1 Windows 同学
- 按键盘上的
Windows + E,打开文件资源管理器。 - 在左侧找到"文档",点击进去。如果名称不同,也可以选择一个自己方便长期找到的位置。
- 在右侧空白处点击右键。
- 选择"新建 → 文件夹"。如果菜单折叠,按界面中的"新建"入口操作。
- 把名字写成
yolo-study,按回车确认。
现在看右侧,是不是多了一个名叫 yolo-study 的文件夹?
双击它,进入里面。
第一次建好后,里面是空的,这就是我们现在要的状态。
2.2 Mac 同学
- 打开"访达 / Finder"。
- 进入自己的"文稿 / Documents",或者另一个方便找到的位置。
- 通过菜单"文件 → 新建文件夹",建立
yolo-study。 - 打开它。
两种系统做的是同一件事:选定一个实际位置,建立以后都能找到的学习文件夹。
2.3 为什么这次统一名字?
yolo-study 是这几篇的学习目录。统一名字,方便对照文章。
后面拿到正式项目源码,我们再安排代码与数据的位置。现在先把基础练习都放在这里,不用一开始就建立十几个目录。
3. 在里面再建一个 images 文件夹
确认你现在已经进入 yolo-study。
再用刚才的方法,新建一个文件夹,名字写成:
text
images
注意看位置:images 应该在 yolo-study 里面。
如果你回到"文档",看到 yolo-study 和 images 并排放着,说明刚才新建的位置不对。
先进入 yolo-study,再创建里面的 images。如果误建了另一个空文件夹,确认它确实是自己刚建且没有内容,再整理掉即可。
现在我们的结构应该是:
text
yolo-study
└── images
检查方法很直接:打开 yolo-study,能看到 images;再打开 images,它现在应该还是空的。
4. 把随文图片复制进去
本篇练习使用下面这张示例图片。已下载配套资料的同学,也可以在"随文练习素材"文件夹中找到它:
它来自 Ultralytics 项目自带的示例素材。打开链接后,可用浏览器将图片保存为 bus.jpg;已有配套资料的同学直接找到这个文件,再进行下面的操作。
Windows 操作
- 单击选中
bus.jpg。 - 按
Ctrl + C,复制这个文件。 - 打开你自己的
yolo-study,再进入images。 - 按
Ctrl + V,把图片粘贴进去。
Mac 操作
选中图片后使用 Command + C,进入自己的 yolo-study/images,再按 Command + V。
这次用复制,原配套资料里的图片仍然保留,学习目录里会多一份。
复制完以后,请打开学习目录里的这张图,确认它能正常显示。
到这里,你应该已经有了:
text
yolo-study
└── images
└── bus.jpg
如果出现一个 bus (1).jpg 或类似名字,可能是同一位置重复粘贴产生了副本。先核对原来是否已经有 bus.jpg,本次练习使用名字正确、可以打开的那一份。
5. 先把扩展名显示出来
现在我们看一下 bus.jpg 这个名字。
bus是文件名的主体;.jpg是扩展名,表示这是一种图片文件。
后面还会遇到:
| 扩展名 | 在课程里通常用来放什么 |
|---|---|
.jpg、.png |
图片 |
.txt |
普通文本;后面也可能用于保存标签 |
.py |
Python 代码 |
.yaml |
配置内容,后面会打开具体例子 |
.pt |
后面使用的模型文件 |
这些现在不用记熟,遇到再看就行。
但有个操作建议现在就完成:把文件扩展名显示出来,避免以后看不出 hello.py 和 hello.py.txt 的区别。
Windows 11
在文件资源管理器顶部找到:
text
查看 → 显示 → 文件扩展名
把"文件扩展名"勾上。
如果你用的是 Windows 10,可以在顶部"查看"选项卡里找"文件扩展名"。这两种入口可以对照微软的扩展名说明。
Mac
在访达的设置中,打开"高级",勾选"显示所有文件扩展名"。菜单名称会随系统语言变化,可对照Apple 的文件扩展名说明。
设置好以后,看看这张图片是否显示为完整的 bus.jpg。
一个要注意的地方
改后缀,不等于转换文件格式。
比如把 bus.jpg 重命名为 bus.py,它也不会变成 Python 程序。
后面需要转换图片或标注格式时,我们会用对应的方法处理。现在保留随文图片原来的名字。

这是 macOS 的真实设置界面,图中"显示所有文件扩展名"已经勾选。这里只突出这个选项,其他设置不需要照着改;Windows 使用上面的文件资源管理器步骤。
6. 路径是什么?就是文件具体放在哪里
你现在已经知道图片在哪个文件夹里了。
如果要用文字把它的位置告诉程序,就需要路径。
6.1 先看完整路径
假设有位同学把学习目录放在自己的文档目录里,图片的完整路径可能是:
text
C:\Users\XiaoMing\Documents\yolo-study\images\bus.jpg
这段文字可以从左往右理解:
text
C 盘
→ Users
→ XiaoMing
→ Documents
→ yolo-study
→ images
→ bus.jpg
这种从盘符或系统根目录开始写出的路径,叫作绝对路径。
上面是举例,不是让你照抄用户名,也不是要运行的命令。
有的电脑文档位置在 OneDrive 下面,有的同学放在其他磁盘,实际路径都会不同。请使用自己电脑上真实的位置。
6.2 怎么看到自己的文件夹路径?
Windows 同学,打开 yolo-study/images 后,单击文件资源管理器顶部的地址栏。也可以按 Ctrl + L,选中地址栏。
你会看到当前文件夹的位置。用 Ctrl + C 可以复制。
这里复制的是 images 文件夹的路径 ,它还没有包含最后的 bus.jpg。
请把两件事分开:
text
文件夹路径:到 images 为止
图片文件路径:还要包含 bus.jpg
如果要复制图片自身的路径,可以在 bus.jpg 上点右键,寻找"复制文件地址 / Copy as path"一类选项;某些菜单需要按住 Shift 再右键或展开更多选项。复制出来可能带双引号,先保留,后面写代码时再按示例处理。
Mac 同学可以选中文件,在"文件 → 显示简介"中查看位置;后面用 VS Code 打开文件后,我们还会继续核对。

先看上方的文件列表,再看下方的路径栏。看最右端的 yolo-study → images,再看文件名 bus.jpg,把"所在目录"和"文件名"分开。Windows 看资源管理器的地址栏,判断方法相同。
6.3 "相对路径"又是什么?
假设我们已经站在 yolo-study 里面,要告诉别人去哪里找图片,可以简写为:
text
images/bus.jpg
意思是:从现在约定的位置出发,进入 images,找到 bus.jpg。
这就是相对路径。
如果出发点改成 images 里面,同一张图片就可以直接写成:
text
bus.jpg
所以,理解相对路径时,要先问一句:现在从哪里出发?
真正运行 Python 后,这个"出发点"还需要通过运行方式和工作目录来确认,不能只凭脚本保存的位置猜。终端与运行代码的章节会带大家实际查看。
本篇先理解这个例子,不用马上把路径写进程序。
6.4 再往前走一步:. 和 .. 分别是什么意思?
我们仍然只用已经建好的这份目录,不另外想象一个大项目:
text
yolo-study
└── images
└── bus.jpg
路径里的一个点 .,表示当前目录;两个点 ..,表示上一级目录。
假设现在从 yolo-study 出发:
text
images/bus.jpg
./images/bus.jpg
这两种写法都可以表示同一张图片。第二种前面多了 ./,强调"从当前位置出发"。
如果我们已经进入 images,还写 images/bus.jpg,它就会尝试在当前的 images 里面,再找一个 images:
text
yolo-study
└── images ← 当前在这里
└── images ← 这个练习里没有这一层
└── bus.jpg
这就是为什么同一串相对路径,换个出发点可能就找不到文件。图片本身没坏,也没有被删,只是查找位置变了。
现在从 images 回头看,.. 指向外面的 yolo-study。所以:
text
../images/bus.jpg
可以理解为:先回到外层 yolo-study,再进入 images,找到 bus.jpg。这条路线绕了一下,但仍然能表达同一个位置。
现在只是读懂路线,不用在文件管理器里寻找名为 .. 的普通文件夹。第四篇会用终端实际切换目录。

先看每一格写的出发点,再沿路线去找图片。
6.5 反斜杠和正斜杠,先在哪一种场景使用?
Windows 文件管理器里常看到 \,macOS、Linux 路径通常使用 /。本篇在跨平台目录示意中使用 /,在 Windows 绝对路径示意中保留 \。
后面写 Python 路径字符串时,还要考虑 \ 的转义含义,不能只把操作系统显示的文字随手粘进任意一对引号。第五篇会给出具体写法。
现在只在文件管理器里找文件、复制路径,不必同时学习所有规则。先确认自己操作的场景:是在看路径,还是在终端输入命令,还是在代码里写字符串。
7. "项目根目录"先怎么理解?
以后教程中会经常出现"在项目根目录新建文件"这句话。
在现在这个练习里,我们把最外面的 yolo-study 作为整个学习目录的起点:
text
yolo-study ← 本次练习的最外层目录
└── images
└── bus.jpg
到了下一篇,VS Code 要打开的是这个外层 yolo-study,这样左侧就能看到它里面的全部练习文件。
以后下载 Ultralytics 项目,项目根目录要根据那一份项目的结构来确认。它不是固定指电脑的 C 盘,也不是看哪个文件夹名字里带 yolo 就随便选一个。
这一步,到下载源码时我们再对着实际文件看。
8. 几个容易放错的位置
8.1 打开 yolo-study,里面又是一个 yolo-study
说明可能多建或多解压了一层。
先检查图片实际放在哪里,找到那个直接包含 images 的目录。本篇和下一篇以这个目录为准。不要没看清内容就批量移动或删除。
8.2 电脑上有好几份 bus.jpg
配套资料里一份,自己的学习目录里一份,这是正常的。
后面的练习统一使用你自己的 yolo-study/images/bus.jpg。通过路径确认文件,而不是只看文件名。
8.3 我打开的是图片所在文件夹,为什么复制的地址没有文件名?
因为地址栏显示的是当前文件夹。
文件路径还需要指向里面的具体文件。这正是第 6 节让大家区分的两个对象。
8.4 文件后面显示 .jpg.txt
先显示完整扩展名,再核对你找到的是不是随文图片本身。
有时保存网页、文字或创建文本文件时会得到不同类型的文件。回到配套资料,找到原来的 bus.jpg,复制并确认能打开。
8.5 文件名看起来一样,为什么有时能找到,有时找不到?
先按下面的顺序检查,不急着重装软件:
- 显示完整扩展名,检查是不是
bus.jpg,而不是bus.jpg.jpg。 - 看父文件夹,检查是不是自己的
yolo-study/images。 - 检查字母大小写,统一使用本文的小写
bus.jpg。 - 如果使用了相对路径,再确认出发点。
不同系统对大小写的处理可能不同。现在就让文件名与教程一致,后面搬到 Linux 服务器时,可以少留一个隐患。
8.6 路径有空格或中文,是不是一定不能用?
不是。很多软件能正常处理这样的路径,但终端中往往需要正确加引号,某些工具还可能有各自的限制。
前期统一使用 yolo-study、images 这些简单名称,是为了方便对照,不是说必须把整个电脑的用户名和目录都改成英文。
如果你的实际文档目录包含中文,先保留真实位置。后面遇到具体报错,根据报错定位原因,而不是看到中文就盲目移动所有资料。
9. 自己重新找一次
现在先把文件窗口关掉,再从头操作一遍:
- 打开文件管理器。
- 找到自己的
yolo-study。 - 进入
images,打开bus.jpg。 - 返回
yolo-study,确认它是包含images的外层文件夹。 - 查看
images的实际路径,指出图片文件路径还要多哪一部分。
能独立完成,这篇就达到目标了。
下一篇继续用这一份 yolo-study,我们会在 VS Code 中打开它,并在图片目录旁边建立 hello.py。
第一篇写下的学习目标,也先留着。第三篇会把它保存进这个学习目录。🚀
10. 再做三道路径小题
仍然使用本篇那张目录树,先自己回答,再看下面的解释。
第一题: 从 yolo-study 出发,找 bus.jpg,可以写什么相对路径?
第二题: 从 images 出发,找这张图片,还需要再写一层 images 吗?
第三题: 把整份 yolo-study 复制到另一台电脑后,原来包含自己用户名的绝对路径,还能保证直接使用吗?
参考答案:
images/bus.jpg,也可以写./images/bus.jpg。- 不需要,直接写
bus.jpg就能表达当前目录里的文件。 - 不能保证。另一台电脑的盘符、用户名和保存位置可能不同。相对路径在目录结构保留、出发点也正确时,可以继续使用。
你看,路径没有改变图片内容,它只是告诉程序去哪里找。后面报"文件不存在"时,咱们就从位置开始查。
下一篇:基础篇 03|第一次使用 VS Code