自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在自定義數(shù)據(jù)集上訓(xùn)練 YOLOv8 實(shí)例分割模型

人工智能 機(jī)器視覺
在本文中,我們將介紹微調(diào) YOLOv8-seg 預(yù)訓(xùn)練模型的過程,以提高其在特定目標(biāo)類別上的準(zhǔn)確性。

在本文中,我們將介紹微調(diào) YOLOv8-seg 預(yù)訓(xùn)練模型的過程,以提高其在特定目標(biāo)類別上的準(zhǔn)確性。Ikomia API簡化了計(jì)算機(jī)視覺工作流的開發(fā)過程,允許輕松嘗試不同的參數(shù)以達(dá)到最佳結(jié)果。

使用 Ikomia API 入門

通過 Ikomia API,我們只需幾行代碼就可以訓(xùn)練自定義的 YOLOv8 實(shí)例分割模型。要開始,請(qǐng)?jiān)谔摂M環(huán)境中安裝 API。

pip install ikomia

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

使用幾行代碼運(yùn)行訓(xùn)練 YOLOv8 實(shí)例分割算法

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

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個(gè)時(shí)期的訓(xùn)練過程大約需要1小時(shí)。

什么是 YOLOv8 實(shí)例分割?

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

1.什么是實(shí)例分割?

實(shí)例分割是計(jì)算機(jī)視覺任務(wù),涉及在圖像中識(shí)別和描繪單個(gè)對(duì)象。與語義分割不同,后者將每個(gè)像素分類為預(yù)定義的類別,實(shí)例分割旨在區(qū)分和分離對(duì)象的各個(gè)實(shí)例。

在實(shí)例分割中,目標(biāo)不僅是對(duì)每個(gè)像素進(jìn)行分類,還要為每個(gè)不同的對(duì)象實(shí)例分配一個(gè)唯一的標(biāo)簽或標(biāo)識(shí)符。這意味著將同一類別的對(duì)象視為單獨(dú)的實(shí)體。例如,如果圖像中有多個(gè)汽車實(shí)例,實(shí)例分割算法將為每輛汽車分配一個(gè)唯一的標(biāo)簽,以實(shí)現(xiàn)精確的識(shí)別和區(qū)分。

實(shí)例檢測(cè)、語義分割和實(shí)例分割之間的比較

與其他分割技術(shù)相比,實(shí)例分割提供了有關(guān)對(duì)象邊界和空間范圍的更詳細(xì)和精細(xì)的信息。它廣泛用于各種應(yīng)用,包括自動(dòng)駕駛、機(jī)器人技術(shù)、目標(biāo)檢測(cè)、醫(yī)學(xué)圖像和視頻分析。

許多現(xiàn)代實(shí)例分割算法,如 YOLOv8-seg,采用深度學(xué)習(xí)技術(shù),特別是卷積神經(jīng)網(wǎng)絡(luò)(CNN),以同時(shí)執(zhí)行像素級(jí)分類和對(duì)象定位。這些算法通常結(jié)合了目標(biāo)檢測(cè)和語義分割的優(yōu)勢(shì),以實(shí)現(xiàn)準(zhǔn)確的實(shí)例級(jí)分割結(jié)果。

2.YOLOv8概述

(1) 發(fā)布和優(yōu)勢(shì)

由Ultralytics開發(fā)的YOLOv8是一種專門用于目標(biāo)檢測(cè)、圖像分類和實(shí)例分割任務(wù)的模型。它以其準(zhǔn)確性和緊湊的模型大小而聞名,成為YOLO系列的顯著補(bǔ)充,該系列在YOLOv5方面取得了成功。憑借其改進(jìn)的架構(gòu)和用戶友好的增強(qiáng)功能,YOLOv8為計(jì)算機(jī)視覺項(xiàng)目提供了一個(gè)出色的選擇。

與其他實(shí)時(shí)目標(biāo)檢測(cè)器的比較:YOLOv8實(shí)現(xiàn)了最先進(jìn)(SOTA)的性能

(2) 架構(gòu)和創(chuàng)新

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

該架構(gòu)還包含新的卷積和模塊配置,傾向于ResNet樣式的結(jié)構(gòu)。有關(guān)網(wǎng)絡(luò)架構(gòu)的詳細(xì)可視化,請(qǐng)參閱GitHub用戶RangeKing創(chuàng)建的圖像。

YOLOv8模型結(jié)構(gòu)(非官方)

(3) 訓(xùn)練例程和數(shù)據(jù)增強(qiáng)

YOLOv8的訓(xùn)練例程包括馬賽克增強(qiáng),其中多個(gè)圖像被組合在一起,使模型暴露于對(duì)象位置、遮擋和周圍像素的變化。但是,在最終訓(xùn)練時(shí)關(guān)閉此增強(qiáng)以防止性能降低。

(4) 準(zhǔn)確性和性能

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

以下是使用YOLOv8x檢測(cè)和實(shí)例分割模型的輸出示例:

YOLOv8x檢測(cè)和實(shí)例分割模型

逐步操作:使用Ikomia API微調(diào)預(yù)訓(xùn)練的YOLOv8-seg模型

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

第1步:導(dǎo)入并創(chuàng)建工作流

from ikomia.dataprocess.workflow import Workflow

wf = Workflow()

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

第2步:添加數(shù)據(jù)集加載器

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

  • 圖像文件名
  • 圖像大?。▽挾群透叨龋?/li>
  • 具有以下信息的對(duì)象列表:對(duì)象類別(例如“person”、“car”);邊界框坐標(biāo)(x、y、寬度、高度)和分割掩碼(多邊形)

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

# 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分割模型并設(shè)置參數(shù)

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

# 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'
})

這是可配置的參數(shù)及其相應(yīng)的描述:

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

您還可以修改以下參數(shù):

  • workers:數(shù)據(jù)加載的工作線程數(shù)。當(dāng)前設(shè)置為'0'。
  • optimizer:要使用的優(yōu)化器??捎玫倪x擇包括SGD、Adam、Adamax、AdamW、NAdam、RAdam、RMSProp和auto。
  • weight_decay:優(yōu)化器的權(quán)重衰減。當(dāng)前設(shè)置為'5e-4'。
  • momentum:SGD動(dòng)量/Adam beta1值。當(dāng)前設(shè)置為'0.937'。
  • lr0:初始學(xué)習(xí)率。對(duì)于SGD,設(shè)置為1E-2,對(duì)于Adam,設(shè)置為1E-3。
  • lrf:最終學(xué)習(xí)率,計(jì)算為lr0 * lrf。當(dāng)前設(shè)置為'0.01'。

第4步:運(yùn)行您的工作流

最后,我們運(yùn)行工作流以開始訓(xùn)練過程。

wf.run()

您可以使用Tensorboard或MLflow等工具監(jiān)視培訓(xùn)的進(jìn)度。一旦訓(xùn)練完成,train_yolo_v8_seg任務(wù)將在output_folder中的時(shí)間戳文件夾內(nèi)保存最佳模型。您可以在時(shí)間戳文件夾的weights文件夾中找到您的best.pt模型。

測(cè)試微調(diào)的YOLOv8-seg模型

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

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())

瑚檢測(cè)使用YOLOv8-seg預(yù)訓(xùn)練模型

我們可以觀察到,infer_yolo_v8_seg默認(rèn)的預(yù)訓(xùn)練模型將珊瑚錯(cuò)誤地識(shí)別為熊。這是因?yàn)樵撃P褪窃贑OCO數(shù)據(jù)集上進(jìn)行訓(xùn)練的,該數(shù)據(jù)集不包含任何珊瑚對(duì)象。

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

# 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'
})

珊瑚檢測(cè)使用自定義模型

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

YOLOv8檢測(cè)珊瑚物種:Agaricia agaricites

責(zé)任編輯:趙寧寧 來源: 小白玩轉(zhuǎn)Python
相關(guān)推薦

2023-01-12 12:20:29

YOLOv8模型

2024-10-16 16:49:44

定向邊界框目標(biāo)檢測(cè)YOLOv8

2024-10-25 08:30:57

計(jì)算機(jī)視覺神經(jīng)網(wǎng)絡(luò)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數(shù)據(jù)集

2024-05-08 17:05:44

2024-07-22 13:49:38

YOLOv8目標(biāo)檢測(cè)開發(fā)

2019-06-21 09:50:47

Windows 10自定義分辨率

2021-07-16 11:00:40

Django用戶模型Python

2020-10-05 21:57:17

GitHub 開源開發(fā)

2010-09-14 16:47:23

SQL自定義函數(shù)

2010-09-14 16:59:39

SQL自定義函數(shù)

2024-11-06 16:56:51

2024-01-29 09:29:02

計(jì)算機(jī)視覺模型

2025-02-24 09:50:21

2024-05-15 09:16:05

2024-05-23 12:57:59

2019-12-02 21:29:45

Keras神經(jīng)網(wǎng)絡(luò)TensorFlow
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)