ONNX 模型库
返回模型

说明文档

在 COCO 上训练的 YOLOv5s 模型

YOLOv5s 是 YOLOv5 模型的小型版本,在 COCO 目标检测数据集(118k 张标注图像)上以 640x640 分辨率训练而成。该模型发布于 https://github.com/ultralytics/yolov5

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

模型描述

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

预期用途与限制

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

如何使用

安装

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

pip install -r requirements.txt 

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

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

下载 COCO 数据集并在您的代码中创建如下目录结构:

└── datasets
     └── coco
           ├── annotations
           |   ├── instances_val2017.json
           |   └── ...
           ├── labels
           |   ├── val2017
           |   |   ├── 000000000139.txt
           |       ├── 000000000285.txt
           |       └── ...
           ├── images
           |   ├── val2017
           |   |   ├── 000000000139.jpg
           |       ├── 000000000285.jpg
           └── val2017.txt
  1. 将 val2017 图像文件夹放在 images 目录下,或使用软链接
  2. 上方的 labels 文件夹和 val2017.txt 由 general_json2yolo.py 生成
  3. 按如下方式修改 coco.yaml:
path: /path/to/your/datasets/coco  # 数据集根目录
train: train2017.txt  # 训练图像(相对于 'path')118287 张图像
val: val2017.txt  # 验证图像(相对于 'path')5000 张图像

测试与评估

    args = make_parser().parse_args()
    onnx_path = args.onnx_model
    onnx_weight = onnxruntime.InferenceSession(onnx_path)
    grid = np.load(\"./grid.npy\", allow_pickle=True)
    anchor_grid = np.load(\"./anchor_grid.npy\", allow_pickle=True)
    path = args.image_path 
    new_path = args.output_path
    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_weight.get_inputs()[0].name: img}
    onnx_output = onnx_weight.run(None, onnx_input)
    onnx_output = post_process(onnx_output)
    pred = non_max_suppression(
        onnx_output[0], conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det
    )
    colors = Colors()
    det = pred[0]
    im0 = img0.copy()
    annotator = Annotator(im0, line_width=2, example=str(names))
    if len(det):
        # 将边界框从 img_size 缩放到 im0 尺寸
        det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round()

        # 写入结果
        for *xyxy, conf, cls in reversed(det):
            c = int(cls)  # 整数类别
            label = f\"{names[c]} {conf:.2f}\"
            annotator.box_label(xyxy, label, color=colors(c, True))
    # 输出结果
    im0 = annotator.result()
    cv2.imwrite(new_path, im0)
  • 对单张图像运行推理
python infer_onnx.py --onnx_model ./yolov5s.onnx -i /Path/To/Your/Image --ipu --provider_config /Path/To/Your/Provider_config

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

  • 测试量化模型的精度
python eval_onnx.py --onnx_model ./yolov5s.onnx --ipu --provider_config /Path/To/Your/Provider_config

性能

指标 IPU 上的精度
AP@0.50:0.95 0.356
@software{glenn_jocher_2021_5563715,
  author       = {Glenn Jocher et. al.},
  title        = {{ultralytics/yolov5: v6.0 - YOLOv5n 'Nano' models, 
                   Roboflow integration, TensorFlow export, OpenCV
                   DNN support}},
  month        = oct,
  year         = {2021},
  publisher    = {Zenodo},
  version      = {v6.0},
  doi          = {10.5281/zenodo.5563715},
  url          = {https://doi.org/10.5281/zenodo.5563715}
}

amd/yolov5s

作者 amd

object-detection
↓ 0 ♥ 3

创建时间: 2023-12-04 08:25:34+00:00

更新时间: 2024-01-26 08:29:01+00:00

在 Hugging Face 上查看

文件 (12)

.gitattributes
README.md
anchor_grid.npy
coco.yaml
demo.jpg
eval_onnx.py
general_json2yolo.py
grid.npy
infer_onnx.py
requirements.txt
utils.py
yolov5s.onnx ONNX