在自定义数据集上训练YOLOX

磐创AI 2022-01-05

权重

1370 字丨阅读本文需 7 分钟

随着下一款模型:YOLOX的推出,YOLO系列将继续发展壮大。在这篇文章中,我们将介绍如何训练YOLOX识别自定义用例的对象检测数据。

在本教程中,我们使用公共血细胞对象检测数据集。但是,你可以将自己的数据导入Roboflow并将其导出,以训练此模型以满足你自己的需要。

感谢Megvii团队发布了基础库,这为我们的笔记本奠定了基础。在本教程中,我们采取以下步骤:

安装YOLOX依赖项

YOLOX有什么新功能?

YOLOX是YOLO的最新版本,在速度和准确性方面突破了极限。YOLOX最近赢得了流媒体感知挑战赛(CVPR 2021自动驾驶研讨会)。相对于其他YOLO检测网络的YOLOX评估:

最大的变化包括移除盒锚(提高模型到边缘设备的可移植性)和将YOLO检测头解耦到单独的特征通道中,用于盒分类和盒回归(提高训练收敛时间和模型精度)。YOLOX中的解耦头:

在YOLOX中,训练时间加快。但我们认为YOLOv5更快(我们还没有进行任何直接的正面测试)

安装YOLOX依赖项

为了设置我们的开发环境,我们将首先克隆基本YOLOX存储库并下载必要的依赖:

!git clone https://github.com/roboflow-ai/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.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

我们还将安装NVIDIA Apex和PyCocoTools,以使该存储库按预期工作:

%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'

下载自定义YOLOX对象检测数据

在我们开始之前,你需要创建一个Roboflow帐户。我们将使用血细胞数据集,但欢迎你使用任何数据集,无论是加载到Roboflow中的你自己的数据集还是其他公共数据集。对于本笔记本,我们需要应用一些预处理步骤,以确保数据与YOLOX一起工作。若要开始,请创建一个Roboflow帐户(如果尚未创建),然后分叉数据集:

分叉数据集后,你需要添加一个预处理步骤,将所有图像的大小调整为640 x 640:

然后简单地生成数据集的新版本,并使用“Pascal VOC”导出。你将收到一个Jupyter notebook命令,该命令如下所示:

复制命令,并用Roboflow提供的命令替换笔记本中的以下行:

!curl -L "[YOUR LINK HERE]" > roboflow.zip; unzip roboflow.zip; rm roboflow.zip

标记数据

如果你带着自己的数据集,你可以在Roboflow中为图像添加注释。

下载YOLOX的预训练权重

YOLOX附带了一些预训练权重,以允许模型更快地训练并获得更高的精度。权重大小有很多种,但我们使用的权重大小将基于小型YOLOX模型(YOLOX_S)。下载如下:

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

YOLOX训练

要训练模型,我们可以运行tools/train.py文件:!python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 16 --fp16 -o -c /content/yolox_s.pth

运行此命令的参数包括:

· 经验文件:该文件允许我们更改基础模型的某些方面,以便在训练时应用

· 设备:我们的模型将使用1,由Colab提供

· 批次大小:每个批次中的图像数

· 预训练权重:指定要使用的权重的路径-可以是我们下载的权重,也可以是模型的早期检查点

经过大约90个epoch的训练,我们获得了以下AP。

评估YOLOX性能

要评估YOLOX性能,我们可以使用以下命令:

MODEL_PATH = "/content/YOLOX/YOLOX_outputs/yolox_voc_s/latest_ckpt.pth.tar" !python3 tools/eval.py -n yolox-s -c {MODEL_PATH} -b 64 -d 1 --conf 0.001 -f exps/example/yolox_voc/yolox_voc_s.py

运行评估后,我们得到以下结果:

YOLOX模型的评价

性能看起来不错!

在测试图像上运行YOLOX

推断我们现在可以在测试图像上运行YOLOX,并将预测可视化。要在测试映像上运行YOLOX,请执行以下操作:

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} --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu

要在图像上可视化预测,请执行以下操作:

from PIL import Image OUTPUT_IMAGE_PATH = "/content/YOLOX/YOLOX_outputs/yolox_voc_s/vis_res/2021_07_31_00_31_01/BloodImage_00057_jpg.rf.1ee93e9ec4d76cfaddaa7df70456c376.jpg" Image.open(OUTPUT_IMAGE_PATH)

看起来该模型可以按预期工作!

导出保存的YOLOX权重以供将来推断

最后,我们可以将模型导出到我们的Google Drive中,如下所示:

from google.colab import drive drive.mount('/content/gdrive') %cp {MODEL_PATH} /content/gdrive/My Drive

结论

YOLOX是一种功能强大、最先进的目标检测模型。在本教程中,你可以学习如何:

免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处本网。非本网作品均来自其他媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如您发现有任何侵权内容,请依照下方联系方式进行沟通,我们将第一时间进行处理。

0赞 好资讯,需要你的鼓励
来自:磐创AI
0

参与评论

登录后参与讨论 0/1000