抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

这篇教程是为我们课程项目准备的,旨在帮助每一位同学,即使你完全没有编程或AI基础,也能顺利完成 YOLOv8 模型的训练。我们会提供两种方法,请根据自己的情况选择最适合你的一种。

  • 方法一:Google Colab (强烈推荐!400张图片训练约9分钟)

    • 优点:完全免费,使用谷歌提供的强大GPU,不需要配置自己电脑的环境,只需要一个谷歌账号。
    • 缺点:有免费使用时长限制,可能会中途断开
  • 方法二:本地计算机训练

    • 优点:没有时间限制,训练过程更稳定。
    • 缺点对电脑配置要求极高! 必须有 NVIDIA 显卡,并且需要非常繁琐的环境配置,新手极易失败。

建议:除非你对自己的电脑和环境配置非常有信心,否则请务必选择方法一!


准备工作:你需要的文件

在开始之前,请确保你已经准备好了以下文件:

python文件下载: 通过网盘分享的文件:
链接: https://pan.baidu.com/s/1SxSj3ETEo5cLDMIahg9iXg?pwd=wk7i 提取码: wk7i 复制这段内容后打开百度网盘手机App,操作更方便哦

  1. 学号数据压缩包 (学号.zip): 这是最重要的文件,包含了你所有的图片和标注数据。它的内部结构必须是这样的:

    2024314104.zip
    └── 2024314104/
        └── 0200520001/
            ├── 36997/
            │   ├── 36997_0_00180.jpg
            │   └── 36997_0_00180.json
            └── ... (其他操作文件夹)
    
  2. 训练脚本:

    • 对于 方法一 (Colab),你需要 训练.ipynb 这个文件。
    • 对于 方法二 (本地),你需要将下面的代码保存为一个 train.py 文件。
  3. 预训练权重 (可选但建议): yolov8n.pt 文件。我们的脚本会自动从服务器下载,但如果下载失败,你可以手动把它和其它文件放在一起。

方法一:使用 Google Colab 进行训练 (推荐)

这是最简单、最不容易出错的方法。

第1步:准备你的 Google Drive

  1. 打开你的谷歌云端硬盘 (Google Drive)。
  2. 安装colab插件,在网页中右键创建新的app


    搜索安装colab
  3. 在“我的云端硬盘”中,创建一个新的文件夹,把它命名为 小学期 (或者任何你喜欢的名字)。
  4. 将你所有的 学号.zip 文件(比如 2024314087.zip, 2024314088.zip …)和 训练.ipynb 文件,全部上传到这个 小学期 文件夹里。
  5. 应包含上传好的 学号.zip 文件和 训练.ipynb 文件。

第2步:打开并配置 Colab

  1. 在 Google Drive 中,双击你刚刚上传的 训练.ipynb 文件,它会自动用 Google Colab 打开。
  2. 【至关重要的一步】 打开后,点击菜单栏的 代码执行程序 -> 更改运行时类型
  3. 在弹出的窗口中,将“硬件加速器”从 None 改为 T4 GPU,然后点击“保存”。这一步是让你能用上免费的GPU,否则训练会非常非常慢。

第3步:修改配置并运行

  1. 现在,你会看到一个很大的代码块。你唯一需要检查和修改的地方是顶部的 DRIVE_PROJECT_PATH
  2. 确保这个路径和你第一步创建的文件夹路径完全一致。如果你的文件夹就叫 小学期,那么默认的路径就是对的,无需修改。

    # 1. 您的项目在 Google Drive 中的基础路径
    DRIVE_PROJECT_PATH = '/content/drive/MyDrive/小学期' # <--- 确认这个路径!
    
  3. 修改确认后,就可以开始运行了!点击顶部的全部运行!

第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, 
        # ... 其他参数 ...
    )
    # ... 其他代码 ...
    

    然后重新运行整个代码块,它就会自动加载上次的进度继续了。

  • Q: 提示 “Google 云端硬盘配额已超出” 怎么办?

    • A: 这说明你在短时间内读写云盘文件太多了。解决方法是等待几个小时再试,通常配额会自动恢复。

方法二:在自己电脑上进行本地训练

【警告】: 此方法非常复杂,仅适合有经验的用户和拥有强大NVIDIA显卡的同学!,也可以不使用显卡,但是速度极慢!

第1步:环境准备 (最难的一步)

  1. 安装 Python: 确保你的电脑安装了 Python 3.8 或更高版本。
  2. 安装 NVIDIA 驱动: 去 NVIDIA 官网下载并安装最新的显卡驱动。
  3. 安装 CUDA: 这是让程序能使用你的GPU的核心。去 NVIDIA CUDA Toolkit 官网下载并安装与你驱动匹配的版本(例如 11.8 或 12.1)。
  4. 安装 cuDNN: 这是 CUDA 的加速库。去 NVIDIA cuDNN 官网下载,解压后将其中的文件复制到 CUDA 的安装目录中。

提示: 上述每一步都可能出错,请严格按照 NVIDIA 官方文档操作。

第2步:项目设置

  1. 在你的电脑上创建一个文件夹,例如 C:\MyProject
  2. 把你所有的 学号.zip 文件和 yolov8n.pt (如果已下载) 放到这个文件夹里。
  3. 将下面的完整 Python 代码保存为 train.py,也放到这个文件夹里。

第3步:安装 Python 依赖库

  1. 打开命令行工具(Windows 用户使用 CMDPowerShell,macOS/Linux 用户使用 Terminal)。
  2. (强烈推荐)创建虚拟环境,这可以避免和你电脑上其他Python项目冲突:

    # 进入你的项目文件夹
    cd C:\MyProject 
    
    # 创建虚拟环境 (文件夹名叫 venv)
    python -m venv venv
    
    # 激活虚拟环境
    # Windows:
    .\venv\Scripts\activate
    # macOS/Linux:
    source venv/bin/activate
    

    激活后,你会看到命令行前面多了 (venv) 的字样。

  3. 安装 PyTorch 和其他库注意: 必须安装与你 CUDA 版本对应的 PyTorch!

    • 访问 PyTorch官网 获取适合你 CUDA 版本的安装命令。
    • 例如,如果你的 CUDA 是 11.8,命令可能是:
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
    
    • 然后安装 ultralyticsrequests:
    pip install ultralytics requests
    

第4步:运行训练

一切准备就绪后,在你的命令行(确保虚拟环境已激活)中运行:

python train.py

然后就可以看到和 Colab 中类似的训练日志了。训练结果会保存在 C:\MyProject\Combined_Project_Final\ 文件夹中。

最终环节:使用你训练好的模型测试视频效果

恭喜你!到这一步,你已经成功训练出了属于自己的 AI 模型。现在,是时候让它大显身手,看看它在真实视频上的表现如何了!

你需要准备:

  1. 你训练好的模型best.pt 文件。
    • Colab 用户:它位于你的 Google Drive 中,路径通常是 小学期/Combined_Project_Final/training_results/exp/weights/best.pt
    • 本地用户:它位于你的项目文件夹中,路径通常是 Combined_Project_Final\training_results\exp\weights\best.pt
  2. 一个测试视频:可以是手机拍的,也可以是网上下载的。我们这里把它命名为 test_video.mp4
  3. 测试脚本:
    • Colab 用户:你需要创建一个新的 Colab Notebook,我们称之为 测试视频.ipynb
    • 本地用户:你需要创建一个新的 Python 文件,命名为 test_video.py

方法一:在 Colab 中测试视频 (最简单)

第1步:准备文件

  1. 找到你的模型:在 Google Drive 的 小学期/Combined_Project_Final/training_results/exp/weights/ 文件夹里,确认 best.pt 文件在那里。
  2. 上传测试视频:将你的测试视频 test_video.mp4 上传到 Google Drive 的 小学期 文件夹里。
  3. 创建测试脚本:在 小学期 文件夹中,右键 -> Google Colaboratory,创建一个新的 Notebook,并将其重命名为 测试视频.ipynb

第2步:编写并运行测试代码

  1. 打开 测试视频.ipynb
  2. 和训练时一样,务必将运行时类型更改为 T4 GPU (代码执行程序 -> 更改运行时类型)。
  3. 将下面的整块代码复制并粘贴到 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步:查看结果

  1. 点击代码单元格左侧的运行按钮
  2. 等待代码执行完成。你会看到一个进度条显示处理进度。
  3. 处理完成后,代码会在下方直接显示出带有检测框的结果视频!你可以直接播放查看效果。
  4. 同时,这个名为 result_video.mp4 的文件也已经保存在了你的 Google Drive 小学期 文件夹中,可以随时下载到本地。


方法二:在本地计算机上测试视频

第1步:准备文件

  1. 找到你的模型:在你本地的项目文件夹中,找到 Combined_Project_Final\training_results\exp\weights\best.pt。为了方便,可以把它复制到项目根目录(C:\MyProject)。
  2. 准备测试视频:将你的 test_video.mp4 也放到项目根目录。
  3. 创建测试脚本:在项目根目录(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步:运行并查看结果

  1. 打开命令行工具(CMDPowerShell)。
  2. 激活你的虚拟环境(非常重要!):
    # 进入你的项目文件夹
    cd C:\MyProject
    # 激活环境
    .\venv\Scripts\activate
    
  3. 运行测试脚本:
    python test_video.py
    
  4. 等待程序运行完成。完成后,你的项目文件夹里就会出现一个 result_video.mp4 文件。用你的视频播放器打开它,欣赏你的 AI 模型的杰作吧!

结语

到此,你已经走完了从数据准备、模型训练到最终测试的全过程!无论你选择哪种方法,最重要的都是耐心和细心。AI模型训练是一个耗时的过程,遇到问题很正常。

  • 对于Colab用户,最大的挑战是网络和免费时长,善用“断点续训”功能是关键。
  • 对于本地用户,最大的挑战是环境配置,请务必严格按照官方文档操作。

希望这篇完整的指南能帮助大家顺利完成训练任务,并成功看到自己的模型运行起来!祝大家成功

评论