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 数据、训练评估与预测展示-本文