YOLOv8 圖像目標檢測教學:從安裝到結果保存
在本篇教學中,我們將一步步引導你如何使用 YOLOv8 執行圖像目標檢測,從安裝環境到保存檢測結果。以下內容適合初學者快速上手 YOLOv8。
1. 環境準備
首先,確保你的 Python 環境已安裝以下必要的庫。你可以使用以下命令來完成安裝:
pip install ultralytics opencv-python matplotlib
2. YOLOv8 的基本結構
YOLOv8 提供了簡單易用的 API,以下是典型的使用流程:
- 加載 YOLO 模型。
- 對圖像或視頻進行目標檢測。
- 保存並可視化檢測結果。
3. YOLOv8 檢測完整範例
以下是一個 YOLOv8 的完整範例程式碼,涵蓋從模型加載到結果保存的所有步驟。
from ultralytics import YOLO
import os
import cv2
import matplotlib.pyplot as plt
# 創建保存結果的目錄
save_dir = 'results/'
os.makedirs(save_dir, exist_ok=True)
# 加載 YOLO 模型 (使用 COCO 預訓練權重)
model = YOLO('yolov8n.pt') # 使用 Nano 模型
# 推理:對單張圖片進行目標檢測
image_path = 'image.jpg' # 替換為您的圖片路徑
results = model(image_path) # 執行目標檢測
# 1. 可視化檢測結果
annotated_image = results[0].plot() # 繪製帶有檢測結果的圖片
# 使用 Matplotlib 顯示結果
plt.imshow(cv2.cvtColor(annotated_image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()
# 2. 保存檢測結果圖片
cv2.imwrite(os.path.join(save_dir, 'detected_image.jpg'), annotated_image)
print(f"Saved detection result to {os.path.join(save_dir, 'detected_image.jpg')}")
# 3. 打印檢測到的所有類別名稱
detected_classes = set() # 用集合儲存類別,避免重複
for box in results[0].boxes:
cls_id = int(box.cls[0]) # 類別 ID
class_name = model.names[cls_id] # 類別名稱
detected_classes.add(class_name)
print("Detected Classes:")
for cls in detected_classes:
print(f"- {cls}")
4. 程式碼解析
步驟 1: 加載模型
以下代碼加載 YOLOv8 的 Nano 模型,該模型輕量且速度快,適合入門使用。
model = YOLO('yolov8n.pt')
步驟 2: 圖片檢測
執行目標檢測,並將結果儲存在 results 中:
results = model(image_path)
步驟 3: 可視化檢測結果
使用 results[0].plot() 方法繪製檢測結果:
annotated_image = results[0].plot()
步驟 4: 保存檢測結果
將繪製好的結果圖片保存到本地:
cv2.imwrite(os.path.join(save_dir, 'detected_image.jpg'), annotated_image)
步驟 5: 打印檢測到的類別
列出圖片中所有被檢測到的物體類別名稱:
detected_classes = set()
for box in results[0].boxes:
cls_id = int(box.cls[0])
class_name = model.names[cls_id]
detected_classes.add(class_name)
5. 測試圖片的效果
當使用 COCO 預訓練模型時,YOLOv8 可以檢測圖片中的 80 種常見物體,例如:
- person
- car
- dog
- bicycle
例如,對一張街道圖片檢測後,輸出可能如下:
Detected Classes:
- person
- car
- bicycle
6. 進階功能
檢測多張圖片
一次性對多張圖片進行目標檢測:
image_paths = ['image1.jpg', 'image2.jpg']
results = model(image_paths)
for i, result in enumerate(results):
result.save(save_dir=os.path.join(save_dir, f'image_{i}'))
設置置信度閾值
過濾掉置信度低於閾值的檢測結果:
confidence_threshold = 0.5
for box in results[0].boxes:
if box.conf[0] > confidence_threshold:
print(f"Class: {int(box.cls[0])}, Confidence: {box.conf[0]:.2f}")
7. 注意事項
- 確保圖片文件存在,且路徑正確。
- 如果保存結果時遇到權限問題,請檢查保存目錄的寫入權限。
- 如果檢測速度較慢,可以使用輕量級模型(如
yolov8n.pt),或安裝 GPU 支持的 PyTorch 版本進行加速。
結語
通過這篇教學,你應該已經掌握了如何使用 YOLOv8 進行圖片目標檢測。如果有任何問題,請隨時留言交流!
註: 目前yolo8不支援python 12,請使用python 11安裝, 以下為測試用圖片
文章標籤
全站熱搜

紅蜘蛛粉 https://www.tw9g.com/goods/pro380.html
titan gel官網 https://tw.titangel.cc/