这篇教程是为我们课程项目准备的,旨在帮助每一位同学,即使你完全没有编程或AI基础,也能顺利完成 YOLOv8 模型的训练。我们会提供两种方法,请根据自己的情况选择最适合你的一种。
方法一:Google Colab (强烈推荐!400张图片训练约9分钟)
- 优点:完全免费,使用谷歌提供的强大GPU,不需要配置自己电脑的环境,只需要一个谷歌账号。
- 缺点:有免费使用时长限制,可能会中途断开
方法二:本地计算机训练
- 优点:没有时间限制,训练过程更稳定。
- 缺点:对电脑配置要求极高! 必须有 NVIDIA 显卡,并且需要非常繁琐的环境配置,新手极易失败。
建议:除非你对自己的电脑和环境配置非常有信心,否则请务必选择方法一!
准备工作:你需要的文件
在开始之前,请确保你已经准备好了以下文件:
python文件下载: 通过网盘分享的文件:
链接: https://pan.baidu.com/s/1SxSj3ETEo5cLDMIahg9iXg?pwd=wk7i 提取码: wk7i 复制这段内容后打开百度网盘手机App,操作更方便哦
学号数据压缩包 (
学号.zip
): 这是最重要的文件,包含了你所有的图片和标注数据。它的内部结构必须是这样的:2024314104.zip └── 2024314104/ └── 0200520001/ ├── 36997/ │ ├── 36997_0_00180.jpg │ └── 36997_0_00180.json └── ... (其他操作文件夹)
训练脚本:
- 对于 方法一 (Colab),你需要
训练.ipynb
这个文件。 - 对于 方法二 (本地),你需要将下面的代码保存为一个
train.py
文件。
- 对于 方法一 (Colab),你需要
- 预训练权重 (可选但建议):
yolov8n.pt
文件。我们的脚本会自动从服务器下载,但如果下载失败,你可以手动把它和其它文件放在一起。
方法一:使用 Google Colab 进行训练 (推荐)
这是最简单、最不容易出错的方法。
第1步:准备你的 Google Drive
- 打开你的谷歌云端硬盘 (Google Drive)。
- 安装colab插件,在网页中右键创建新的app
搜索安装colab
- 在“我的云端硬盘”中,创建一个新的文件夹,把它命名为
小学期
(或者任何你喜欢的名字)。 - 将你所有的
学号.zip
文件(比如2024314087.zip
,2024314088.zip
…)和训练.ipynb
文件,全部上传到这个小学期
文件夹里。 - 应包含上传好的
学号.zip
文件和训练.ipynb
文件。
第2步:打开并配置 Colab
- 在 Google Drive 中,双击你刚刚上传的
训练.ipynb
文件,它会自动用 Google Colab 打开。 - 【至关重要的一步】 打开后,点击菜单栏的
代码执行程序
->更改运行时类型
。 在弹出的窗口中,将“硬件加速器”从
None
改为T4 GPU
,然后点击“保存”。这一步是让你能用上免费的GPU,否则训练会非常非常慢。
第3步:修改配置并运行
- 现在,你会看到一个很大的代码块。你唯一需要检查和修改的地方是顶部的
DRIVE_PROJECT_PATH
。 确保这个路径和你第一步创建的文件夹路径完全一致。如果你的文件夹就叫
小学期
,那么默认的路径就是对的,无需修改。# 1. 您的项目在 Google Drive 中的基础路径 DRIVE_PROJECT_PATH = '/content/drive/MyDrive/小学期' # <--- 确认这个路径!
修改确认后,就可以开始运行了!点击顶部的全部运行!
第4步:耐心等待训练完成
运行代码后,下方的输出区域会开始滚动显示日志。整个过程分为几个阶段:
- 阶段〇: 解压你的
zip
文件。 - 阶段一: 为每个学号创建数据集,你会看到
该路径是否存在: True
和成功转换了 ... 个有效标注文件
的日志,这代表数据处理成功! - 阶段二: 合并所有数据。
阶段三: 开始正式训练,你会看到类似下面这样的输出,表示训练已经开始:
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size 1/200 3.1G 1.593 4.407 1.317 343 640
常见问题与对策:
Q: 训练中途断开了怎么办?
- A: 这是 Colab 免费版的正常现象。不用担心!我们的训练结果每轮都会保存在你的谷歌云盘
小学期/Combined_Project_Final/training_results/exp/
目录下。下次重新连接后,只需要修改代码中的一行,即可从断掉的地方继续训练!
找到
train_combined_model
函数,在model.train(...)
中加入resume=True
:# ... 其他代码 ... model.train( resume=True, # 只需要加上这一行! data=yaml_path, epochs=200, # ... 其他参数 ... ) # ... 其他代码 ...
然后重新运行整个代码块,它就会自动加载上次的进度继续了。
- A: 这是 Colab 免费版的正常现象。不用担心!我们的训练结果每轮都会保存在你的谷歌云盘
Q: 提示 “Google 云端硬盘配额已超出” 怎么办?
- A: 这说明你在短时间内读写云盘文件太多了。解决方法是等待几个小时再试,通常配额会自动恢复。
方法二:在自己电脑上进行本地训练
【警告】: 此方法非常复杂,仅适合有经验的用户和拥有强大NVIDIA显卡的同学!,也可以不使用显卡,但是速度极慢!
第1步:环境准备 (最难的一步)
- 安装 Python: 确保你的电脑安装了 Python 3.8 或更高版本。
- 安装 NVIDIA 驱动: 去 NVIDIA 官网下载并安装最新的显卡驱动。
- 安装 CUDA: 这是让程序能使用你的GPU的核心。去 NVIDIA CUDA Toolkit 官网下载并安装与你驱动匹配的版本(例如 11.8 或 12.1)。
- 安装 cuDNN: 这是 CUDA 的加速库。去 NVIDIA cuDNN 官网下载,解压后将其中的文件复制到 CUDA 的安装目录中。
提示: 上述每一步都可能出错,请严格按照 NVIDIA 官方文档操作。
第2步:项目设置
- 在你的电脑上创建一个文件夹,例如
C:\MyProject
。 - 把你所有的
学号.zip
文件和yolov8n.pt
(如果已下载) 放到这个文件夹里。 - 将下面的完整 Python 代码保存为
train.py
,也放到这个文件夹里。
第3步:安装 Python 依赖库
- 打开命令行工具(Windows 用户使用
CMD
或PowerShell
,macOS/Linux 用户使用Terminal
)。 (强烈推荐)创建虚拟环境,这可以避免和你电脑上其他Python项目冲突:
# 进入你的项目文件夹 cd C:\MyProject # 创建虚拟环境 (文件夹名叫 venv) python -m venv venv # 激活虚拟环境 # Windows: .\venv\Scripts\activate # macOS/Linux: source venv/bin/activate
激活后,你会看到命令行前面多了
(venv)
的字样。安装 PyTorch 和其他库。注意: 必须安装与你 CUDA 版本对应的 PyTorch!
- 访问 PyTorch官网 获取适合你 CUDA 版本的安装命令。
- 例如,如果你的 CUDA 是 11.8,命令可能是:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
- 然后安装
ultralytics
和requests
:
pip install ultralytics requests
第4步:运行训练
一切准备就绪后,在你的命令行(确保虚拟环境已激活)中运行:
python train.py
然后就可以看到和 Colab 中类似的训练日志了。训练结果会保存在 C:\MyProject\Combined_Project_Final\
文件夹中。
最终环节:使用你训练好的模型测试视频效果
恭喜你!到这一步,你已经成功训练出了属于自己的 AI 模型。现在,是时候让它大显身手,看看它在真实视频上的表现如何了!
你需要准备:
- 你训练好的模型:
best.pt
文件。- Colab 用户:它位于你的 Google Drive 中,路径通常是
小学期/Combined_Project_Final/training_results/exp/weights/best.pt
。 - 本地用户:它位于你的项目文件夹中,路径通常是
Combined_Project_Final\training_results\exp\weights\best.pt
。
- Colab 用户:它位于你的 Google Drive 中,路径通常是
- 一个测试视频:可以是手机拍的,也可以是网上下载的。我们这里把它命名为
test_video.mp4
。 - 测试脚本:
- Colab 用户:你需要创建一个新的 Colab Notebook,我们称之为
测试视频.ipynb
。 - 本地用户:你需要创建一个新的 Python 文件,命名为
test_video.py
。
- Colab 用户:你需要创建一个新的 Colab Notebook,我们称之为
方法一:在 Colab 中测试视频 (最简单)
第1步:准备文件
- 找到你的模型:在 Google Drive 的
小学期/Combined_Project_Final/training_results/exp/weights/
文件夹里,确认best.pt
文件在那里。 - 上传测试视频:将你的测试视频
test_video.mp4
上传到 Google Drive 的小学期
文件夹里。 - 创建测试脚本:在
小学期
文件夹中,右键 -> Google Colaboratory,创建一个新的 Notebook,并将其重命名为测试视频.ipynb
。
第2步:编写并运行测试代码
- 打开
测试视频.ipynb
。 - 和训练时一样,务必将运行时类型更改为
T4 GPU
(代码执行程序
->更改运行时类型
)。 - 将下面的整块代码复制并粘贴到 Colab 的代码单元格中。
#@title 视频推理测试 (请点击左侧 ▶ 运行)
# ==================================
# 配置你的路径
# ==================================
# 1. 项目在 Google Drive 中的基础路径 (请确保和训练时一致)
DRIVE_PROJECT_PATH = '/content/drive/MyDrive/小学期'
# 2. 你训练好的模型权重的路径
# (通常不需要修改,除非你移动了它)
MODEL_PATH = f'{DRIVE_PROJECT_PATH}/Combined_Project_Final/training_results/exp/weights/best.pt'
# 3. 你要测试的视频的路径
# (请确保你已经将 test_video.mp4 上传到了 DRIVE_PROJECT_PATH 文件夹下)
VIDEO_PATH = f'{DRIVE_PROJECT_PATH}/test_video.mp4'
# 4. 推理结果视频的保存路径
OUTPUT_VIDEO_PATH = f'{DRIVE_PROJECT_PATH}/result_video.mp4'
# ==================================
# 核心代码 (无需修改)
# ==================================
import os
from google.colab import drive
from ultralytics import YOLO
import cv2
from tqdm.notebook import tqdm
from IPython.display import HTML, display
import base64
# 挂载 Google Drive
print("正在挂载 Google Drive...")
drive.mount('/content/drive')
print("挂载成功!")
# 检查文件是否存在
if not os.path.exists(MODEL_PATH):
print(f"❌ 错误:模型文件未找到!请检查路径: {MODEL_PATH}")
elif not os.path.exists(VIDEO_PATH):
print(f"❌ 错误:视频文件未找到!请检查路径: {VIDEO_PATH}")
else:
print("✅ 模型和视频文件均已找到,准备开始推理...")
# 加载你训练好的 YOLO 模型
model = YOLO(MODEL_PATH)
# 打开视频文件
cap = cv2.VideoCapture(VIDEO_PATH)
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
fps = int(cap.get(cv2.CAP_PROP_FPS))
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 创建视频写入对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(OUTPUT_VIDEO_PATH, fourcc, fps, (frame_width, frame_height))
print(f"开始处理视频...共有 {total_frames} 帧。")
# 逐帧处理
for _ in tqdm(range(total_frames), desc="视频处理进度"):
ret, frame = cap.read()
if not ret:
break
# 使用模型进行推理
results = model(frame, verbose=False)
# 将结果绘制到帧上
annotated_frame = results[0].plot()
# 写入新视频
out.write(annotated_frame)
# 释放资源
cap.release()
out.release()
print(f"🎉 处理完成!结果已保存到: {OUTPUT_VIDEO_PATH}")
# 在 Colab 中直接显示结果视频
def display_video(video_path):
with open(video_path, "rb") as video_file:
video_data = video_file.read()
base64_video = base64.b64encode(video_data).decode('ascii')
display(HTML(f"""
<video width="80%" controls>
<source src="data:video/mp4;base64,{base64_video}" type="video/mp4">
</video>
"""))
print("\n正在加载预览...")
display_video(OUTPUT_VIDEO_PATH)
第3步:查看结果
- 点击代码单元格左侧的运行按钮。
- 等待代码执行完成。你会看到一个进度条显示处理进度。
- 处理完成后,代码会在下方直接显示出带有检测框的结果视频!你可以直接播放查看效果。
- 同时,这个名为
result_video.mp4
的文件也已经保存在了你的 Google Drive小学期
文件夹中,可以随时下载到本地。
方法二:在本地计算机上测试视频
第1步:准备文件
- 找到你的模型:在你本地的项目文件夹中,找到
Combined_Project_Final\training_results\exp\weights\best.pt
。为了方便,可以把它复制到项目根目录(C:\MyProject
)。 - 准备测试视频:将你的
test_video.mp4
也放到项目根目录。 - 创建测试脚本:在项目根目录(
C:\MyProject
)下,创建一个新的文本文件,将下面的代码粘贴进去,并保存为test_video.py
。
第2步:编写测试代码
# test_video.py
import cv2
from ultralytics import YOLO
from tqdm import tqdm # 如果没有tqdm,可以运行 pip install tqdm 安装
# --- 配置路径 ---
# 你训练好的模型
MODEL_PATH = "best.pt" # 假设 best.pt 就在当前文件夹
# 输入的视频
VIDEO_PATH = "test_video.mp4" # 假设 test_video.mp4 就在当前文件夹
# 输出的视频
OUTPUT_PATH = "result_video.mp4"
def main():
# 加载模型
print(f"正在加载模型: {MODEL_PATH}")
model = YOLO(MODEL_PATH)
print("模型加载成功!")
# 打开视频
cap = cv2.VideoCapture(VIDEO_PATH)
if not cap.isOpened():
print(f"错误: 无法打开视频文件 {VIDEO_PATH}")
return
# 获取视频信息
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
# 定义视频编码并创建写入对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(OUTPUT_PATH, fourcc, fps, (frame_width, frame_height))
print(f"开始处理视频...共有 {total_frames} 帧。")
# 使用tqdm创建进度条
with tqdm(total=total_frames, desc="视频处理进度") as pbar:
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# 模型推理
results = model(frame, verbose=False)
# 绘制结果
annotated_frame = results[0].plot()
# 写入文件
out.write(annotated_frame)
# 更新进度条
pbar.update(1)
# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()
print(f"🎉 处理完成!结果已保存到: {OUTPUT_PATH}")
print("现在你可以用视频播放器打开 result_video.mp4 查看效果了!")
if __name__ == '__main__':
main()
第3步:运行并查看结果
- 打开命令行工具(
CMD
或PowerShell
)。 - 激活你的虚拟环境(非常重要!):
# 进入你的项目文件夹 cd C:\MyProject # 激活环境 .\venv\Scripts\activate
- 运行测试脚本:
python test_video.py
- 等待程序运行完成。完成后,你的项目文件夹里就会出现一个
result_video.mp4
文件。用你的视频播放器打开它,欣赏你的 AI 模型的杰作吧!
结语
到此,你已经走完了从数据准备、模型训练到最终测试的全过程!无论你选择哪种方法,最重要的都是耐心和细心。AI模型训练是一个耗时的过程,遇到问题很正常。
- 对于Colab用户,最大的挑战是网络和免费时长,善用“断点续训”功能是关键。
- 对于本地用户,最大的挑战是环境配置,请务必严格按照官方文档操作。
希望这篇完整的指南能帮助大家顺利完成训练任务,并成功看到自己的模型运行起来!祝大家成功