YOLOX 自定义目标检测训练实战:VOC 数据、训练评估与预测展示

YOLOX 自定义目标检测训练实战:VOC 数据、训练评估与预测展示


这篇教程根据我复现 YOLOX 目标检测流程时整理,重点演示依赖安装、VOC 数据接入、类别配置、训练评估和单图预测可视化。

本文整理自我的学习和项目复现过程,尽量按实操顺序保留 notebook 的关键步骤,同时把数据集获取方式调整为适合中文教程发布的写法。

本文会重点跑通以下流程:

  • 安装 YOLOX、Apex 和 PyCocoTools 依赖
  • 从数据集后台获取 Pascal VOC 检测数据
  • 整理 VOCdevkit 目录和类别文件
  • 训练并评估 YOLOX 检测模型
  • 使用训练权重做单图预测展示

如果你正在系统学习目标检测、实例分割、OCR、多目标跟踪或视觉大模型,建议收藏本文;配套 notebook、示例图片和运行环境说明后续会继续整理。如果环境配置卡住,可以在评论区说明具体报错。

📚 文章目录

  • YOLOX 自定义目标检测训练实战:VOC 数据、训练评估与预测展示
    • ⚙️ 安装 YOLOX 依赖
    • 📦 从数据集后台获取 VOC 数据
    • 📁 整理 VOC 数据目录
    • 🏷️ 配置自定义类别
    • 🧠 下载预训练权重
    • 🏋️ 训练模型
    • 📏 评估模型
    • 🧪 单图预测
    • 🖼️ 预测结果可视化
    • 💾 导出权重
    • 📌 小结
    • 📚 同系列教程汇总

⚙️ 安装 YOLOX 依赖

先安装 YOLOX、Apex 和 PyCocoTools,建议在 Colab GPU 环境中执行。

!git clone https://github.com/Megvii-BaseDetection/YOLOX.git%cd YOLOX !pip3 install-U pip&&pip3 install-r requirements.txt !pip3 install-v-e.!pip uninstall-y torch torchvision torchaudio# May need to change in the future if Colab no longer uses CUDA 11.0!pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0-f https://download.pytorch.org/whl/torch_stable.html
%cd/content/!git clone https://github.com/NVIDIA/apex%cd apex !pip install-v--disable-pip-version-check--no-cache-dir--global-option="--cpp_ext"--global-option="--cuda_ext"./
!pip3 install cython;pip3 install'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'

📦 从数据集后台获取 VOC 数据

从数据集后台导出 Pascal VOC 格式数据,并将路径接入后续训练流程。

fromtypesimportSimpleNamespace# 从数据集后台下载 Pascal VOC 检测 格式数据集后,修改 DATASET_DIR 指向解压目录。DATASET_DIR="/content/dataset"# 修改为数据集后台导出的数据集目录dataset=SimpleNamespace(location=DATASET_DIR,version="1",name="custom-dataset")
# 确认数据集目录。dataset.location

📁 整理 VOC 数据目录

YOLOX 训练脚本按 VOCdevkit 结构读取数据,这里创建符号链接并整理目录。

%cd YOLOX/!ln-s{dataset.location}/train/./datasets/VOCdevkit
%mkdir"/content/YOLOX/datasets/VOCdevkit/VOC2007"!python3 voc_txt.py"/content/YOLOX/datasets/VOCdevkit/"%mkdir"/content/YOLOX/datasets/VOCdevkit/VOC2012"!cp-r"/content/YOLOX/datasets/VOCdevkit/VOC2007/.""/content/YOLOX/datasets/VOCdevkit/VOC2012"

🏷️ 配置自定义类别

根据自己的类别写入 VOC/COCO 类别文件,并同步修改类别数量。

fromIPython.core.magicimportregister_line_cell_magic@register_line_cell_magicdefwritetemplate(line,cell):withopen(line,'w')asf:f.write(cell.format(**globals()))
##REPLACE this cell with your classnames stripped of whitespace and lowercase%%writetemplate/content/YOLOX/yolox/data/datasets/voc_classes.py VOC_CLASSES=("rbc","wbc","platelets")
##REPLACE this cell with your classnames stripped of whitespace and lowercase%%writetemplate/content/YOLOX/yolox/data/datasets/coco_classes.py COCO_CLASSES=("rbc","wbc","platelets")
NUM_CLASSES=3!sed-i-e's/self.num_classes = 20/self.num_classes = {NUM_CLASSES}/g'"/content/YOLOX/exps/example/yolox_voc/yolox_voc_s.py"

🧠 下载预训练权重

下载 YOLOX-S 预训练权重作为自定义训练初始化参数。

%cd/content/!wget https://github.com/Megvii-BaseDetection/storage/releases/download/0.0.1/yolox_s.pth%cd/content/YOLOX/

🏋️ 训练模型

启动 YOLOX 训练。显存不足时优先调小 batch size。

!python tools/train.py-f exps/example/yolox_voc/yolox_voc_s.py-d1-b16--fp16-o-c/content/yolox_s.pth

📏 评估模型

使用训练得到的 checkpoint 在验证集上评估指标。

MODEL_PATH="/content/YOLOX/YOLOX_outputs/yolox_voc_s/latest_ckpt.pth.tar"!python3 tools/eval.py-n yolox-s-c{MODEL_PATH}-b64-d1--conf0.001-f exps/example/yolox_voc/yolox_voc_s.py

🧪 单图预测

指定测试图片路径并运行 demo 推理。

TEST_IMAGE_PATH="/content/valid/BloodImage_00057_jpg.rf.1ee93e9ec4d76cfaddaa7df70456c376.jpg"!python tools/demo.py image-f/content/YOLOX/exps/example/yolox_voc/yolox_voc_s.py-c{MODEL_PATH}--path{TEST_IMAGE_PATH}--conf0.25--nms0.45--tsize640--save_result--device gpu

🖼️ 预测结果可视化

打开推理输出图,检查检测框和类别预测是否合理。

fromPILimportImage OUTPUT_IMAGE_PATH="/content/YOLOX/YOLOX_outputs/yolox_voc_s/vis_res/2021_08_01_19_51_59/BloodImage_00057_jpg.rf.1ee93e9ec4d76cfaddaa7df70456c376.jpg"Image.open(OUTPUT_IMAGE_PATH)

💾 导出权重

将训练好的权重复制到云盘或本地目录,方便后续部署。

fromgoogle.colabimportdrive drive.mount('/content/gdrive')
%cp{MODEL_PATH}/content/gdrive/My\ Drive

📌 小结

这篇教程完整整理了YOLOX 自定义目标检测训练的核心复现流程。实际操作时,建议先确认 GPU、依赖版本、数据集路径和模型权重路径,再逐段运行 notebook。

后续我会继续按源项目顺序整理同系列中的目标检测、实例分割、OCR、多目标跟踪和视觉大模型教程。

📚 同系列教程汇总

  • Google Gemini 3.5 Flash 零样本目标检测教程:从提示词到可视化结果

  • GLM-OCR 文档识别实战教程:从验证码、公式到车牌 OCR

  • RF-DETR + ByteTrack 多目标跟踪实战教程:从命令行到 Python 视频轨迹可视化

  • SAM 3 图像分割实战教程:文本、框和点提示的多种分割方式

  • SAM 3 视频分割实战教程:用文本提示分割并跟踪视频中的目标

  • YOLOX 自定义目标检测训练实战:VOC 数据、训练评估与预测展示-本文