在本文中,我們將詳細介紹如何將 YOLOv8/11/12 模型轉換為 CoreML 格式,并使用該模型在攝像頭實時檢測中進行目標檢測。主要適用于M1、M2、M3、M4芯片的產品。
以下教程在YOLOv8/11/12均適用,此處就以 YOLOv11 舉例
目錄
- 前提條件
- YOLOv8/11/12 轉換為 CoreML
- 實時目標檢測
- 結論
前提條件
在開始之前,確保您已經完成以下步驟:
-
安裝 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