成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在自定義數據集上訓練 YOLOv8 實例分割模型

人工智能 機器視覺
在本文中,我們將介紹微調 YOLOv8-seg 預訓練模型的過程,以提高其在特定目標類別上的準確性。

在本文中,我們將介紹微調 YOLOv8-seg 預訓練模型的過程,以提高其在特定目標類別上的準確性。Ikomia API簡化了計算機視覺工作流的開發過程,允許輕松嘗試不同的參數以達到最佳結果。

使用 Ikomia API 入門

通過 Ikomia API,我們只需幾行代碼就可以訓練自定義的 YOLOv8 實例分割模型。要開始,請在虛擬環境中安裝 API。

pip install ikomia

在本教程中,我們將使用 Roboflow 的珊瑚數據集。您可以通過以下鏈接下載此數據集:https://universe.roboflow.com/ds/Ap7v6sRXMc?key=ecveMLIdNa

使用幾行代碼運行訓練 YOLOv8 實例分割算法

您還可以直接加載我們準備好的開源筆記本。

from ikomia.dataprocess.workflow import Workflow


# Initialize the workflow
wf = Workflow()

# Add the dataset loader to load your custom data and annotations
dataset = wf.add_task(name='dataset_coco')

# Set the parameters of the dataset loader
dataset.set_parameters({
    'json_file': 'Path/To/Mesophotic Coral/Dataset/train/_annotations.coco.json',
    'image_folder': 'Path/To/Mesophotic Coral/Dataset/train',
    'task': 'instance_segmentation',
}) 

# Add the YOLOv8 segmentation algorithm
train = wf.add_task(name='train_yolo_v8_seg', auto_connect=True)

# Set the parameters of the YOLOv8 segmentation algorithm
train.set_parameters({
    'model_name': 'yolov8m-seg',
    'batch_size': '4',
    'epochs': '50',
    'input_size': '640',
    'dataset_split_ratio': '0.8',
    'output_folder':'Path/To/Folder/Where/Model-weights/Will/Be/Saved'
})

使用 NVIDIA GeForce RTX 3060 Laptop GPU(6143.5MB),50個時期的訓練過程大約需要1小時。

什么是 YOLOv8 實例分割?

在進行具有所有參數詳細信息的逐步方法之前,讓我們更深入地了解實例分割和 YOLOv8。

1.什么是實例分割?

實例分割是計算機視覺任務,涉及在圖像中識別和描繪單個對象。與語義分割不同,后者將每個像素分類為預定義的類別,實例分割旨在區分和分離對象的各個實例。

在實例分割中,目標不僅是對每個像素進行分類,還要為每個不同的對象實例分配一個唯一的標簽或標識符。這意味著將同一類別的對象視為單獨的實體。例如,如果圖像中有多個汽車實例,實例分割算法將為每輛汽車分配一個唯一的標簽,以實現精確的識別和區分。

實例檢測、語義分割和實例分割之間的比較

與其他分割技術相比,實例分割提供了有關對象邊界和空間范圍的更詳細和精細的信息。它廣泛用于各種應用,包括自動駕駛、機器人技術、目標檢測、醫學圖像和視頻分析。

許多現代實例分割算法,如 YOLOv8-seg,采用深度學習技術,特別是卷積神經網絡(CNN),以同時執行像素級分類和對象定位。這些算法通常結合了目標檢測和語義分割的優勢,以實現準確的實例級分割結果。

2.YOLOv8概述

(1) 發布和優勢

由Ultralytics開發的YOLOv8是一種專門用于目標檢測、圖像分類和實例分割任務的模型。它以其準確性和緊湊的模型大小而聞名,成為YOLO系列的顯著補充,該系列在YOLOv5方面取得了成功。憑借其改進的架構和用戶友好的增強功能,YOLOv8為計算機視覺項目提供了一個出色的選擇。

與其他實時目標檢測器的比較:YOLOv8實現了最先進(SOTA)的性能

(2) 架構和創新

雖然YOLOv8的官方研究論文目前不可用,但對存儲庫和可用信息的分析提供了有關其架構的見解。YOLOv8引入了無錨檢測,該方法預測對象中心而不依賴錨框。這種方法簡化了模型并改善了后處理步驟,如非最大抑制。

該架構還包含新的卷積和模塊配置,傾向于ResNet樣式的結構。有關網絡架構的詳細可視化,請參閱GitHub用戶RangeKing創建的圖像。

YOLOv8模型結構(非官方)

(3) 訓練例程和數據增強

YOLOv8的訓練例程包括馬賽克增強,其中多個圖像被組合在一起,使模型暴露于對象位置、遮擋和周圍像素的變化。但是,在最終訓練時關閉此增強以防止性能降低。

(4) 準確性和性能

YOLOv8的準確性改進已在廣泛使用的COCO基準測試上得到驗證,在該基準測試中,該模型實現了令人印象深刻的平均精度(mAP)分數。例如,YOLOv8m-seg模型在COCO上實現了令人矚目的49.9% mAP。以下表格提供了YOLOv8-seg不同變體的模型大小、mAP分數和其他性能指標的摘要:

以下是使用YOLOv8x檢測和實例分割模型的輸出示例:

YOLOv8x檢測和實例分割模型

逐步操作:使用Ikomia API微調預訓練的YOLOv8-seg模型

使用您下載的航拍圖像數據集,您可以使用Ikomia API訓練自定義的YOLO v7模型。

第1步:導入并創建工作流

from ikomia.dataprocess.workflow import Workflow

wf = Workflow()

Workflow是創建工作流的基本對象。它提供了設置輸入(如圖像、視頻和目錄)、配置任務參數、獲取時間度量和訪問特定任務輸出(如圖形、分割掩碼和文本)的方法。我們初始化一個工作流實例。然后,“wf”對象可用于向工作流實例添加任務,配置它們的參數,并在輸入數據上運行它們。

第2步:添加數據集加載器

下載的COCO數據集包括兩種主要格式:.JSON和圖像文件。圖像被分成train、val、test文件夾,每個文件夾都有一個包含圖像注釋的.json文件:

  • 圖像文件名
  • 圖像大小(寬度和高度)
  • 具有以下信息的對象列表:對象類別(例如“person”、“car”);邊界框坐標(x、y、寬度、高度)和分割掩碼(多邊形)

我們將使用Ikomia API提供的dataset_coco模塊加載自定義數據和注釋。

# Add the dataset loader to load your custom data and annotations
dataset = wf.add_task(name='dataset_coco')

# Set the parameters of the dataset loader
dataset.set_parameters({
    'json_file': 'Path/To/Mesophotic Coral/Dataset/train/_annotations.coco.json',
    'image_folder': 'Path/To/Mesophotic Coral/Dataset/train,
    'task': 'instance_segmentation'
})

第3步:添加YOLOv8分割模型并設置參數

我們向工作流添加'train_yolo_v8_seg'任務,用于訓練自定義的YOLOv8-seg模型。為了自定義我們的訓練,我們指定以下參數:

# Add the YOLOv8 segmentation algorithm
train = wf.add_task(name='train_yolo_v8_seg', auto_connect=True)

# Set the parameters of the YOLOv8 segmentation algorithm
train.set_parameters({
    'model_name': 'yolov8m-seg',
    'batch_size': '4',
    'epochs': '50',
    'input_size': '640',
    'dataset_split_ratio': '0.8',
    'output_folder':'Path/To/Folder/Where/Model-weights/Will/Be/Saved'
})

這是可配置的參數及其相應的描述:

  • batch_size:在更新模型之前處理的樣本數。
  • epochs:在訓練數據集上的完整通過次數。
  • input_size:訓練和驗證期間的輸入圖像大小。
  • dataset_split_ratio:算法自動將數據集分為訓練和評估集。值為0.8表示使用80%的數據進行訓練,20%進行評估。

您還可以修改以下參數:

  • workers:數據加載的工作線程數。當前設置為'0'。
  • optimizer:要使用的優化器。可用的選擇包括SGD、Adam、Adamax、AdamW、NAdam、RAdam、RMSProp和auto。
  • weight_decay:優化器的權重衰減。當前設置為'5e-4'。
  • momentum:SGD動量/Adam beta1值。當前設置為'0.937'。
  • lr0:初始學習率。對于SGD,設置為1E-2,對于Adam,設置為1E-3。
  • lrf:最終學習率,計算為lr0 * lrf。當前設置為'0.01'。

第4步:運行您的工作流

最后,我們運行工作流以開始訓練過程。

wf.run()

您可以使用Tensorboard或MLflow等工具監視培訓的進度。一旦訓練完成,train_yolo_v8_seg任務將在output_folder中的時間戳文件夾內保存最佳模型。您可以在時間戳文件夾的weights文件夾中找到您的best.pt模型。

測試微調的YOLOv8-seg模型

首先,我們可以在預訓練的YOLOv8-seg模型上運行珊瑚圖像:

from ikomia.dataprocess.workflow import Workflow
from ikomia.utils.displayIO import display


# Initialize the workflow
wf = Workflow()

# Add the YOLOv8 segmentation alrogithm
yolov8seg = wf.add_task(name='infer_yolo_v8_seg', auto_connect=True)

# Set the parameters of the YOLOv8 segmentation algorithm
yolov8seg.set_parameters({
    'model_name': 'yolov8m-seg',
    'conf_thres': '0.2',
    'iou_thres': '0.7'
}) 

# Run on your image
wf.run_on(path="Path/To/Mesophotic Coral Identification.v1i.coco-segmentation/valid/TCRMP20221021_clip_LBP_T109_jpg.rf.a4cf5c963d5eb62b6dab06b8d4b540f2.jpg")

# Inspect your results
display(yolov8seg.get_image_with_mask_and_graphics())

瑚檢測使用YOLOv8-seg預訓練模型

我們可以觀察到,infer_yolo_v8_seg默認的預訓練模型將珊瑚錯誤地識別為熊。這是因為該模型是在COCO數據集上進行訓練的,該數據集不包含任何珊瑚對象。

要測試我們剛剛訓練的模型,我們使用'model_weight_file'參數指定路徑到我們的自定義模型。然后在先前使用的相同圖像上運行工作流。

# Set the path of you custom YOLOv8-seg model to the parameter
yolov8seg.set_parameters({
    'model_weight_file': 'Path/To/Output_folder/[timestamp]/train/weights/best.pt',
    'conf_thres': '0.5',
    'iou_thres': '0.7'
})

珊瑚檢測使用自定義模型

將我們的結果與地面實況進行比較,我們成功地識別了Orbicella spp.的物種。然而,我們觀察到一些假陰性的情況。為了提高我們自定義模型的性能,進一步訓練更多的時期并使用更多圖像進行數據增強可能會有益處。另一個展示有效檢測結果的示例是用Agaricia agaricites物種演示的:

YOLOv8檢測珊瑚物種:Agaricia agaricites

責任編輯:趙寧寧 來源: 小白玩轉Python
相關推薦

2023-01-12 12:20:29

YOLOv8模型

2024-10-25 08:30:57

計算機視覺神經網絡YOLOv8模型

2024-10-16 16:49:44

定向邊界框目標檢測YOLOv8

2025-02-07 14:52:11

2025-01-21 11:41:14

2024-07-09 08:50:23

2023-09-12 13:59:41

OpenAI數據集

2024-07-22 13:49:38

YOLOv8目標檢測開發

2024-05-08 17:05:44

2019-06-21 09:50:47

Windows 10自定義分辨率

2020-10-05 21:57:17

GitHub 開源開發

2021-07-16 11:00:40

Django用戶模型Python

2010-09-14 16:47:23

SQL自定義函數

2010-09-14 16:59:39

SQL自定義函數

2024-11-06 16:56:51

2024-05-23 12:57:59

2019-12-02 21:29:45

Keras神經網絡TensorFlow

2021-07-01 11:07:49

Swift 自定義操作符

2024-01-29 09:29:02

計算機視覺模型

2025-02-24 09:50:21

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩乱码一二三 | 99久久精品国产一区二区三区 | 91网站在线播放 | 在线日韩精品视频 | 国产高清精品一区二区三区 | 国产福利在线视频 | 爱爱视频网 | 草久久 | 日韩精品久久久 | 精品欧美色视频网站在线观看 | 久久久久国产精品一区二区 | 3级毛片| 男女免费在线观看视频 | 久久国产精品免费一区二区三区 | 四虎国产 | 中文字幕一区二区三区在线观看 | 97caoporn国产免费人人 | 91精品国产91久久久久久吃药 | 国产精品久久久久久久免费大片 | 久久国产精品99久久久大便 | 超碰高清| 亚洲精品综合 | 蜜桃特黄a∨片免费观看 | 国产精品一区二区在线免费观看 | 日韩精品在线观看一区二区三区 | 日韩免费毛片视频 | 久久久久久久久久久久一区二区 | 国产精品一区在线观看 | 日韩免费视频 | 国产色片在线 | 午夜影晥| 国产美女高潮 | 久久精品成人 | 亚洲精品一区二区三区中文字幕 | 久久久久网站 | 亚洲精品一区二区三区中文字幕 | 能看的av| 亚洲精品视频一区 | 日韩中文字幕区 | 精品一区二区观看 | 国产午夜精品理论片a大结局 |