?步驟一:安裝 PyTorch(M1 專用)
# 推薦使用官方 MPS 后端(Apple Metal 加速)
pip install torch torchvision torchaudio
確認是否使用了 Apple MPS:
import torch
print(torch.backends.mps.is_available())
# True 表示支持
? 步驟二:安裝 OpenCV(預編譯版)
pip install opencv-python==4.8.0.76
?
如仍失敗,可以降級到更穩定的版本:
?
pip install opencv-python==4.6.0.66
?
?
?
? 步驟三:安裝 Ultralytics(YOLOv8)
這個會去依賴opencv
pip install ultralytics --no-binary opencv-python
或者,使用無依賴模式(跳過 OpenCV 的再次依賴):
pip install ultralytics --no-deps
?
? 步驟四:驗證安裝
yolo version
?
如果輸出了版本號(如 Ultralytics YOLOv8.1.26
等)說明一切正常。
?
? 測試 YOLOv8 是否能跑起來
你可以運行一個簡單的預測命令測試模型:
yolo task=detect mode=predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'
這會下載一個圖片并進行目標檢測,自動彈出預測窗口(或保存預測圖像)。
🔧 1、識別人物-整體流程總覽
準備數據集(圖像 + 標注)
數據集格式轉換(轉為 YOLO 格式)
安裝 YOLOv8(ultralytics)
配置訓練參數(模型、類別、路徑)
開始訓練
驗證和測試
部署使用
🧩 2、每一步分模塊詳解
📁 1. 數據采集與標注(圖像和標注文件)
需要采集圖像并對目標進行手動標注。
? 推薦免費標注工具(支持導出為 YOLO 格式):
工具名 | 平臺 | 特點說明 |
---|---|---|
LabelImg | Windows / Mac / Linux | 本地運行,輕量,支持 Pascal VOC 和 YOLO 格式 |
Roboflow | 在線工具 | 免費計劃支持上傳圖像、標注、自動轉換格式 |
Labelme | Python 工具 | 支持多邊形標注,也可導出為 COCO 格式 |
CVAT | 在線部署或本地部署 | 適合大規模標注,功能強大,支持團隊協作 |
👉 建議初學者使用 LabelImg
或 Roboflow
,操作直觀,輸出格式直接支持 YOLO。
🔄 2. 轉換數據集為 YOLO 格式
YOLO 格式標注樣例如下(txt 文件):0 0.5 0.5 0.2 0.3
格式說明:
[class_id] [x_center] [y_center] [width] [height]
都是相對坐標(比例,相對于圖片大小)。
如果你標注格式不是 YOLO,需要轉換,比如從 VOC / COCO → YOLO,可以使用:
Roboflow 自動轉換
labelme2yolo
工具roboflow
python 工具包
?
📁 3、 roboflow標注(圖像和標注文件)
?
可以搜索教程怎么標記要訓練的數據
??3、開始訓練識別和平精英人物識別
🔧 model.train()
常用參數解析
參數 | 類型 | 說明 |
---|---|---|
data | str | 數據集配置文件路徑(例如 data.yaml ) |
epochs | int | 訓練輪數(epoch 數) |
imgsz | int 或 tuple | 輸入圖片尺寸,默認 640(可為整數或 (h,w) 元組) |
batch | int | 每批訓練的圖像數量,默認 16 |
device | int 或 str | 使用的設備,例如 '0' (GPU0)、'cpu' 或 '0,1' |
save | bool | 是否保存模型(默認 True) |
exist_ok | bool | 是否允許覆蓋已有運行目錄 |
resume | bool | 是否從上次訓練中斷處恢復 |
patience | int | 如果驗證指標在這么多 epoch 內不再提升,則提前停止訓練(默認 50) |
optimizer | str | 選擇優化器:SGD、Adam、AdamW(默認 SGD) |
lr0 | float | 初始學習率(默認 0.01) |
lrf | float | 最終學習率與初始學習率的比值(默認 0.01) |
momentum | float | 動量參數(僅用于 SGD) |
weight_decay | float | 權重衰減(默認 0.0005) |
workers | int | 數據加載線程數(建議 0 或 2~8) |
pretrained | bool 或 str | 使用預訓練模型(True 或權重路徑) |
project | str | 日志文件保存路徑 |
name | str | 本次運行的名稱,結果將保存在 runs/train/name/ 下 |
verbose | bool | 顯示更多訓練信息 |
seed | int | 設置隨機種子以保證復現性 |
?
📌 數據集配置文件(data.yaml)結構:
from ultralytics import YOLO# 加載模型
model = YOLO("/Users/lianying/Desktop/yolo/yolov8n.pt") # 你的模型路徑# 開始訓練
model.train(data="/Users/lianying/Desktop/yolo/pubg mobile.v2i.yolov8/data.yaml", # data.yaml路徑epochs=2,imgsz=640
)
?在使用 YOLOv8(如 Ultralytics YOLOv8)訓練模型后,輸出目錄(通常是 runs/detect/train
)中會生成兩個主要的模型文件:
? best.pt
含義:在訓練過程中,在驗證集上表現最好的模型(通常指 mAP 值最高)。
用途:用于部署或實際推理時的首選模型。
保存時機:每輪訓練后都會驗證一次性能,若當前 mAP 更優于之前所有輪次,就保存為
best.pt
。
? last.pt
含義:訓練最后一輪保存的模型。
用途:
若訓練中斷,可以從
last.pt
恢復繼續訓練;如果對
best.pt
不滿意,也可以嘗試last.pt
。
🛠?選擇哪個用于推理?
文件名 | 適用場景 | 建議 |
---|---|---|
best.pt | 精度優先的推理部署 | ? 推薦使用 |
last.pt | 繼續訓練、對比測試 | 可選(不推薦部署) |
?
🛠?加載方式
使用 YOLO
類加載模型:
from ultralytics import YOLOmodel = YOLO("runs/detect/train/weights/best.pt") # 加載最優模型
?
?