在本文中,我们将详细介绍如何将 YOLOv8/11/12 模型转换为 CoreML 格式,并使用该模型在摄像头实时检测中进行目标检测。主要适用于M1、M2、M3、M4芯片的产品。
以下教程在YOLOv8/11/12均适用,此处就以 YOLOv11 举例
目录
前提条件
在开始之前,确保您已经完成以下步骤:
安装 Python 3.12,并创建一个 Conda 环境:
conda create --name yolocoreml python=3.12 conda activate yolocoreml
安装所需的依赖项:
pip install ultralytics coremltools pillow numpy opencv-python
确保您已经有了 YOLOv11 模型(例如
yolo11n.pt
)用于转换。
YOLOv8/11/12 转换为 CoreML
我们可以使用以下 Python 脚本将 YOLOv8/11/12 模型转换为 CoreML 格式。convertCoreml.py
脚本完成了这个任务:
from ultralytics import YOLO
# 加载 YOLOv11 模型
model = YOLO("yolo11n.pt")
# 将模型导出为 CoreML 格式
model.export(format="coreml") # 创建 'yolo11n.mlpackage' 文件
这段代码加载 YOLOv11 模型(.pt
格式)并将其导出为 CoreML 格式(.mlpackage
),可以在苹果设备上进行推理。
实时目标检测
CoreML 模型准备好后,我们可以使用摄像头视频流来进行实时目标检测。yolocoreml_demo.py
脚本通过在每一帧上进行推理来实现这一目标。
演示功能:
- 实时目标检测,直接从摄像头获取视频流。
- 根据置信度和交并比(IoU)过滤检测框,增加准确度。
- 为不同类别的目标框使用不同的颜色进行标注。
下面是 yolocoreml_demo.py
脚本的核心部分:
import cv2
import numpy as np
from ultralytics import YOLO
import argparse
from torchvision.ops import box_iou
# 解析命令行参数
def parse_args():
parser = argparse.ArgumentParser(description="YOLO 目标检测")
parser.add_argument('--model', type=str, default