ONNX 模型库
返回模型

说明文档

YOLOv3 模型(基于 COCO 训练)

YOLOv3 在 COCO 目标检测数据集(118k 张标注图像)上以 416x416 分辨率训练完成。该模型发布于 https://github.com/ultralytics/yolov3/tree/v8。

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

模型描述

YOLOv3 🚀 是全球最受欢迎的视觉 AI,代表了 Ultralytics 对未来视觉 AI 方法的开源研究,融合了数千小时研发过程中积累的经验教训和最佳实践。

预期用途与限制

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

使用方法

安装

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

pip install -r requirements.txt 

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

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

  1. 下载 COCO 数据集
  2. 运行 general_json2yolo.py 生成 labels 文件夹和 val2017.txt
python general_json2yolo.py

最终,COCO 数据集应如下所示:

+ coco/
    + annotations/
        + instance_val2017.json
        + ...
    + images/
        + val2017/
          + 000000000139.jpg
          + 000000000285.jpg
          + ...   
    + labels/
        + val2017/
          + 000000000139.txt
          + 000000000285.txt
          + ...      
    + val2017.txt

测试与评估

    onnx_path = "yolov3-8.onnx"
    onnx_model = onnxruntime.InferenceSession(
        onnx_path, providers=providers, provider_options=provider_options)

    path = opt.img
    new_path = os.path.join(opt.out, "demo_infer.jpg")

    conf_thres, iou_thres, classes, agnostic_nms, max_det = 0.25, \
        0.45, None, False, 1000

    img0 = cv2.imread(path)
    img = pre_process(img0)
    onnx_input = {onnx_model.get_inputs()[0].name: img}
    onnx_output = onnx_model.run(None, onnx_input)
    onnx_output = post_process(onnx_output)

    pred = non_max_suppression(
        onnx_output[0],
        conf_thres,
        iou_thres,
        multi_label=False,
        classes=classes,
        agnostic=agnostic_nms)

    colors = [[random.randint(0, 255) for _ in range(3)]
              for _ in range(len(names))]
    det = pred[0]
    im0 = img0.copy()

    if len(det):
        # Rescale boxes from imgsz to im0 size
        det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round()

        # Write results
        for *xyxy, conf, cls in reversed(det):
            label = '%s %.2f' % (names[int(cls)], conf)
            plot_one_box(xyxy, im0, label=label, color=colors[int(cls)])

    # Stream results
    cv2.imwrite(new_path, im0)
  • 对单张图像运行推理
python onnx_inference.py --img INPUT_IMG_PATH --out OUTPUT_DIR --ipu --provider_config Path\To\vaip_config.json

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

  • 测试量化模型的精度
python onnx_test.py --ipu --provider_config Path\To\vaip_config.json

性能

指标 IPU 上的精度
AP@0.50:0.95 0.389
@misc{redmon2018yolov3,
      title={YOLOv3: An Incremental Improvement}, 
      author={Joseph Redmon and Ali Farhadi},
      year={2018},
      eprint={1804.02767},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

amd/yolov3

作者 amd

object-detection
↓ 0 ♥ 2

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

更新时间: 2024-08-13 09:11:59+00:00

在 Hugging Face 上查看

文件 (11)

.gitattributes
README.md
coco.names
coco2017.data
general_json2yolo.py
onnx_inference.py
onnx_test.py
requirements.txt
utils.py
yolov3-8.onnx ONNX
yolov3.cfg