ONNX 模型库
返回模型

说明文档

YOLOX-small 模型(在 COCO 上训练)

YOLOX-small 是在 COCO 目标检测数据集(118k 张标注图像)上以 640x640 分辨率训练的 YOLOX 模型的小型版本。该模型由 Zheng Ge 等人在论文 YOLOX: Exceeding YOLO Series in 2021 中提出,并首次在 此仓库 中发布。

我们开发了一个可由 AMD Ryzen AI 支持的修改版本。

模型描述

基于 YOLO 检测器,YOLOX 模型采用无锚框(anchor-free)检测头,并结合其他先进的检测技术,包括解耦头(decoupled head)和领先的标签分配策略 SimOTA,在各种规模的模型中实现了最先进的结果。该系列模型由旷视科技(Megvii Inc.)开发,并获得了 CVPR 2021 WAD 流媒体感知挑战赛(Streaming Perception Challenge)第一名。

预期用途与限制

您可以使用原始模型进行目标检测。请查看 模型中心 以获取所有可用的 YOLOX 模型。

如何使用

安装

按照 Ryzen AI 安装指南 为 Ryzen AI 准备环境。 运行以下脚本安装此模型的依赖项。

pip install -r requirements.txt 

数据准备(可选:用于精度评估)

MSCOCO2017 数据集包含 118287 张训练图像和 5000 张验证图像。

下载 COCO 数据集的验证集(val2017.zipannotations_trainval2017.zip)。 然后解压文件并将它们移动到以下目录(或创建软链接):

└── data
     └── COCO
           ├── annotations
           |   ├── instances_val2017.json
           |   └── ...
           └── val2017
               ├── 000000000139.jpg
               ├── 000000000285.jpg
               └── ...

测试与评估

args = make_parser().parse_args()
input_shape = tuple(map(int, args.input_shape.split(',')))
origin_img = cv2.imread(args.image_path)
img, ratio = preprocess(origin_img, input_shape)
if args.ipu:
    providers = ["VitisAIExecutionProvider"]
    provider_options = [{"config_file": args.provider_config}]
else:
    providers = ['CUDAExecutionProvider', 'CPUExecutionProvider']
    provider_options = None
session = ort.InferenceSession(args.model, providers=providers, provider_options=provider_options)
# NCHW format
# ort_inputs = {session.get_inputs()[0].name: img[None, :, :, :]}
# NHWC format
ort_inputs = {session.get_inputs()[0].name: np.transpose(img[None, :, :, :], (0, 2 ,3, 1))}
outputs = session.run(None, ort_inputs)
outputs = [np.transpose(out, (0, 3, 1, 2)) for out in outputs] # for NHWC format
dets = postprocess(outputs, input_shape, ratio)
if dets is not None:
    final_boxes, final_scores, final_cls_inds = dets[:, :4], dets[:, 4], dets[:, 5]
    origin_img = vis(origin_img, final_boxes, final_scores, final_cls_inds,
                     conf=args.score_thr, class_names=COCO_CLASSES)
mkdir(args.output_dir)
output_path = os.path.join(args.output_dir, os.path.basename(args.image_path))
cv2.imwrite(output_path, origin_img)
  • 对单张图像运行推理
python infer_onnx.py -m yolox-s-int8.onnx -i Path\To\Your\Image --ipu --provider_config Path\To\vaip_config.json

注意:vaip_config.json 位于 Ryzen AI 的安装包中(参考 安装

  • 测试量化模型的精度
python eval_onnx.py -m yolox-s-int8.onnx --ipu --provider_config Path\To\vaip_config.json

性能

指标 IPU 上的精度
AP@0.50:0.95 0.370
 @article{yolox2021,
  title={YOLOX: Exceeding YOLO Series in 2021},
  author={Ge, Zheng and Liu, Songtao and Wang, Feng and Li, Zeming and Sun, Jian},
  journal={arXiv preprint arXiv:2107.08430},
  year={2021}
}

amd/yolox-s

作者 amd

object-detection
↓ 0 ♥ 2

创建时间: 2023-12-04 08:26:31+00:00

更新时间: 2024-01-15 02:40:54+00:00

在 Hugging Face 上查看

文件 (8)

.gitattributes
README.md
coco.py
demo_utils.py
eval_onnx.py
infer_onnx.py
requirements.txt
yolox-s-int8.onnx ONNX