iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0

今天是第七天我要介紹今年新出的yolo v8,以下是程式碼

YOLOv8 簡介

YOLOv8 是 YOLO (You Only Look Once) 系列目標檢測模型的最新版本,由 Ultralytics 開發。YOLO 系列模型以其快速且準確的物體檢測能力聞名,廣泛應用於各種電腦視覺任務中。YOLOv8 在前幾代模型的基礎上進行了多方面的改進,旨在提高檢測性能、降低計算成本,並且提供更靈活的部署選項。

YOLOv8 的關鍵特點包括:

  1. 改進的架構設計

    • YOLOv8 對網路架構進行了進一步優化,包含新的特徵提取層次結構和更高效的上下採樣策略。這些改進使模型在處理不同大小的物體時表現更佳。
  2. 強化的精度和速度

    • 通過採用更好的優化技術和精細化的超參數調整,YOLOv8 提供了更高的檢測精度,同時保持了實時運行的能力。
  3. 靈活的模型大小選擇

    • YOLOv8 提供多種模型大小(如 nano, small, medium, large, extra-large),用戶可以根據計算資源和應用需求選擇合適的模型。
  4. 強大的支持社群和工具鏈

    • YOLOv8 繼承了 Ultralytics 強大的工具鏈支援,包括自動訓練、模型微調、模型轉換(如 ONNX、TensorRT)和部署工具,極大地方便了模型在各種環境中的使用。
import torch
from ultralytics import YOLO
import cv2
import numpy as np

# 1. 載入 YOLOv8 模型(從預訓練模型開始)
model = YOLO('yolov8n.pt')  # 載入 YOLOv8 nano 模型

# 2. 訓練模型 (使用自訂資料集)
# 資料集的配置文件應該包含路徑、類別數量等必要信息
model.train(data='path/to/your/custom_dataset.yaml', epochs=50, imgsz=640)

# 3. 推論 - 處理多張圖片
image_paths = ['path/to/image1.jpg', 'path/to/image2.jpg']  # 替換成你的圖片路徑
results = model(image_paths, imgsz=640)  # 進行推論,imgsz 是圖片大小

# 4. 顯示與保存結果
for i, result in enumerate(results):
    result_image = result.plot()  # 將檢測結果繪製在圖片上
    cv2.imshow(f'Result {i+1}', result_image)  # 顯示圖片
    cv2.imwrite(f'output/result_{i+1}.jpg', result_image)  # 保存圖片

cv2.waitKey(0)
cv2.destroyAllWindows()

# 5. 自訂後處理 - 只提取高置信度的檢測結果
for result in results:
    boxes = result.boxes.numpy()  # 提取邊界框
    scores = result.scores.numpy()  # 提取置信度分數
    labels = result.labels.numpy()  # 提取類別標籤

    for box, score, label in zip(boxes, scores, labels):
        if score > 0.5:  # 只考慮置信度超過 0.5 的檢測
            x1, y1, x2, y2 = map(int, box)  # 邊界框坐標
            print(f'Label: {label}, Score: {score}, Box: ({x1}, {y1}, {x2}, {y2})')

# 6. 保存模型權重
model.save("trained_yolov8_custom.pt")  # 保存訓練後的模型

範例解說:

  1. 載入預訓練模型

    • 我們使用 YOLOv8 nano (yolov8n.pt) 作為初始模型進行載入。這個模型已經在 COCO 資料集上進行了預訓練,可以進行遷移學習。
  2. 訓練模型

    • 使用自訂資料集對模型進行微調訓練。訓練過程中,設定了訓練次數 (epochs) 和圖片大小 (imgsz) 等參數。
  3. 批次推論

    • 這裡展示了如何一次性處理多張圖片,並對每張圖片進行物體檢測。
  4. 顯示與保存結果

    • 檢測完成後,我們將結果繪製到圖片上,並展示和保存結果圖片。
  5. 自訂後處理

    • 我們對檢測結果進行了進一步處理,過濾掉置信度較低的檢測,並打印出檢測結果。
  6. 保存模型

    • 最後,我們將訓練後的模型保存下來,以便後續使用或部署。

這個範例展示了如何使用 YOLOv8 進行自訂資料集的訓練、批次推論和結果處理。你可以根據自己的需求進行進一步的調整,例如添加資料增強、自訂損失函數或優化策略,以提升模型的性能。


上一篇
day 6 lstm結合yolo斑馬魚行為分析
下一篇
day 8 yolo 辨識網球是否界內球系統
系列文
LSTM結合Yolo v8對於多隻斑馬魚行為分析30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言