【YOLOv11】目標檢測任務-實操過程

目錄

  • 一、torch環境安裝
    • 1.1 創建虛擬環境
    • 1.2 啟動虛擬環境
    • 1.3 安裝pytorch
    • 1.4 驗證cuda是否可用
  • 二、yolo模型推理
    • 2.1 下載yolo模型
    • 2.2 創建模型推理文件
    • 2.3 推理結果保存路徑
  • 三、labelimg數據標注
    • 3.1 安裝labelimg
    • 3.2 解決浮點數報錯
    • 3.3 labelimg UI界面介紹
    • 3.4 數據標注案例
  • 四、dataset劃分
    • 4.1 創建數據集劃分文件
  • 五、yolo模型訓練
    • 5.1 創建模型訓練文件
    • 5.2 創建數據配置文件
    • 5.3 訓練結果展示
      • 5.3.1 出現報錯:
      • 5.3.2 解決方案:
      • 5.3.4 成功訓練:

一、torch環境安裝

1.1 創建虛擬環境

conda create -n yolov11 python=3.11

1.2 啟動虛擬環境

conda activate yolov11

1.3 安裝pytorch

去官網尋找對應版本

官網:Previous PyTorch Versions | PyTorch

conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia

1.4 驗證cuda是否可用

python
import torch
torch.cuda.is_available()

二、yolo模型推理

2.1 下載yolo模型

去官網尋找對應版本

官網:ultralytics/ultralytics at v8.3.94

2.2 創建模型推理文件

在根目錄新建一個python文件,取名為:detect.py

# -*- coding: utf-8 -*-  
"""  
@Auth : HP-Succinum@File :detect.py  
@IDE :PyCharm  
"""  
import warnings  
warnings.filterwarnings('ignore')  
from ultralytics import YOLO  if __name__ == '__main__':  # Load a model  model = YOLO(model=r'E:\yolo\ultralytics-8.3.94\runs\train\exp4\weights\best.pt')  model.predict(source=r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images\train\coffee-cat.jpg',  save=True,  show=True,  )

請添加圖片描述

2.3 推理結果保存路徑

請添加圖片描述

三、labelimg數據標注

3.1 安裝labelimg

pip install labelimg

3.2 解決浮點數報錯

labelimg 打框就閃退 TypeError: setValue(self, int): argument 1 has unexpected type ‘float‘_in scrollrequest bar.setvalue(bar.value() + bar.si-CSDN博客

3.3 labelimg UI界面介紹

在這里插入圖片描述
在這里插入圖片描述

3.4 數據標注案例

![[科研/人因工程/ERCP橫向/yolo模型部署/5.png]]

![[科研/人因工程/ERCP橫向/yolo模型部署/6.png]]

四、dataset劃分

4.1 創建數據集劃分文件

在根目錄新建一個python文件,取名為:train_test_split.py

import os  
import shutil  
from sklearn.model_selection import train_test_split  # 設置參數  
val_size = 0.2  
test_size = 0.2  
postfix = 'jpg'  
imgpath = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images'  
txtpath = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\labels'  output_train_img_folder = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images/train'  
output_val_img_folder = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images/val'  
output_test_img_folder = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images/test'  
output_train_txt_folder = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\labels/train'  
output_val_txt_folder = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\labels/val'  
output_test_txt_folder = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\labels/test'  # 創建輸出文件夾  
os.makedirs(output_train_img_folder, exist_ok=True)  
os.makedirs(output_val_img_folder, exist_ok=True)  
os.makedirs(output_test_img_folder, exist_ok=True)  
os.makedirs(output_train_txt_folder, exist_ok=True)  
os.makedirs(output_val_txt_folder, exist_ok=True)  
os.makedirs(output_test_txt_folder, exist_ok=True)  # 獲取標簽文件列表  
listdir = [i for i in os.listdir(txtpath) if 'txt' in i]  # 劃分數據集  
train_val, test = train_test_split(listdir, test_size=test_size, shuffle=True, random_state=0)  
train, val = train_test_split(train_val, test_size=val_size / (1 - test_size), shuffle=True, random_state=0)  # 定義文件復制函數  
def copy_files(file_list, img_src_folder, txt_src_folder, img_dst_folder, txt_dst_folder):  for i in file_list:  try:  img_source_path = os.path.join(img_src_folder, '{}.{}'.format(i[:-4], postfix))  txt_source_path = os.path.join(txt_src_folder, i)  img_destination_path = os.path.join(img_dst_folder, '{}.{}'.format(i[:-4], postfix))  txt_destination_path = os.path.join(txt_dst_folder, i)  shutil.copy(img_source_path, img_destination_path)  shutil.copy(txt_source_path, txt_destination_path)  except FileNotFoundError:  print(f"文件 {img_source_path} 或 {txt_source_path} 未找到。")  except Exception as e:  print(f"復制文件時發生錯誤: {e}")  # 復制訓練集文件  
copy_files(train, imgpath, txtpath, output_train_img_folder, output_train_txt_folder)  # 復制驗證集文件  
copy_files(val, imgpath, txtpath, output_val_img_folder, output_val_txt_folder)  # 復制測試集文件  
copy_files(test, imgpath, txtpath, output_test_img_folder, output_test_txt_folder)  
print("數據集劃分完成!")

將數據集的圖像和標簽信息路徑輸入:

  • imgpath = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images'
  • txtpath = r'E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\labels'

五、yolo模型訓練

5.1 創建模型訓練文件

在根目錄新建一個python文件,取名為:train.py

# -*- coding: utf-8 -*-  
"""  
@Auth : HP-Succinum
@File :detect.py  
@IDE :PyCharm  
"""  import warnings  
warnings.filterwarnings('ignore')  
from ultralytics import YOLO  if __name__ == '__main__':  # model.load('yolo11n.pt') # 加載預訓練權重,改進或者做對比實驗時候不建議打開,因為用預訓練模型整體精度沒有很明顯的提升  model = YOLO(model=r'E:\yolo\ultralytics-8.3.94\ultralytics\cfg\models\11\yolo11.yaml')  model.train(data=r'data.yaml',  imgsz=640,  epochs=50,  batch=4,  workers=0,  device='',  optimizer='SGD',  close_mosaic=10,  resume=False,  project='runs/train',  name='exp',  single_cls=False,  cache=False,  )

請添加圖片描述

5.2 創建數據配置文件

訓練數據配置文件,在根目錄創建一個data.yaml文件

# train images (relative to 'path') 8 images  
train: E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images\train  # val images (relative to 'path') 4 images  
val: E:\yolo\ultralytics-8.3.94\dataset\Cat_Dataset\images\val  # number of class
nc: 1  # class names  
names: ['cat']

請添加圖片描述

5.3 訓練結果展示

5.3.1 出現報錯:

訓練進程因 OpenMP 庫的初始化問題而終止,最終退出代碼為 3

日志里的錯誤信息 OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized. 表明,程序嘗試多次初始化 OpenMP 運行時庫 libiomp5md.dll,這往往是因為多個 OpenMP 運行時庫被鏈接到程序里,可能會使性能下降或者產生錯誤的結果。

請添加圖片描述

5.3.2 解決方案:

在train.py文件的開頭加入以下代碼

import os 
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'

故當前train.py文件為:

# -*- coding: utf-8 -*-  
"""  
@Auth : HP-Succinum@File :detect.py  
@IDE :PyCharm   
"""  import warnings  
warnings.filterwarnings('ignore')  
from ultralytics import YOLO  
import os  
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'  if __name__ == '__main__':  model = YOLO(model=r'E:\yolo\ultralytics-8.3.94\ultralytics\cfg\models\11\yolo11.yaml')  # 加載預訓練權重,改進或者做對比實驗時候不建議打開,因為用預訓練模型整體精度沒有很明顯的提升  model.load('yolo11n.pt')  model.train(data=r'data.yaml',  imgsz=640,  epochs=50,  batch=4,  workers=0,  device='',  optimizer='SGD',  close_mosaic=10,  resume=False,  project='runs/train',  name='exp',  single_cls=False,  cache=False,  )

5.3.4 成功訓練:

請添加圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75157.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75157.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75157.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

探索 Vue 中的多語言切換:<lang-radio /> 組件詳解!!!

探索 Vue 中的多語言切換&#xff1a;<lang-radio /> 組件詳解 &#x1f30d; 嗨&#xff0c;大家好&#xff01;&#x1f44b; 今天我們來聊聊如何在 Vue 項目中實現一個優雅的多語言切換功能——<lang-radio /> 組件。這是一個小而美的組件&#xff0c;出現在登…

grafana 配置頁面告警

添加告警規則 1.登錄grafana 點擊 Alerting > Alert rules 點擊 New alert rule 2.填寫告警規則名字 3.配置告警規則 選擇數據源為 Loki 單機 Builder 單機Label brower 單機 node_name 標簽&#xff0c;選擇一個主機&#xff0c;選好后單機 Show logs 這時候查詢語…

關于JVM和OS中的棧幀的區別和內存淺析

關于JVM和OS中的棧幀的區別和內存淺析 剛看了黑馬JVM中的棧幀的講解&#xff0c;感覺和自己理解的棧幀有一定出入&#xff0c;查詢資料研究了一下發現的確有天壤之別&#xff0c;可惜黑馬并沒有講。 故寫下這篇文章鞏固一下, OS的棧幀&#xff1a; ? OS的棧幀會在調用一個函…

Python FastApi(7):請求體

1 多個參數 1.1 混合使用 Path、Query 和請求體參數 首先&#xff0c;毫無疑問地&#xff0c;你可以隨意地混合使用 Path、Query 和請求體參數聲明&#xff0c;FastAPI 會知道該如何處理。你還可以通過將默認值設置為 None 來將請求體參數聲明為可選參數&#xff1a; from ty…

告別枯燥工作,走向自動化

嘿&#xff0c;小伙伴們&#xff01;今天給你們介紹兩款超實用的RPA辦公自動化軟件&#xff0c;用它們&#xff0c;再也不用像機器一樣做重復勞動啦&#xff0c;超省時間&#xff01; 工具名稱&#xff1a;影刀RPA&#xff08;類似產品&#xff0c;八爪魚 RPA&#xff0c;操作上…

一種C# Winform的UI處理

效果 圓角 陰影 突出按鈕 說明 這是一種另類的處理&#xff0c;不是多層窗口 也不是WPF 。這種方式的特點是比較簡單&#xff0c;例如圓角、陰影、按鈕等特別容易修改過。其實就是html css DirectXForm。 在VS中如下 圓角和陰影 然后編輯這個窗體的Html模板&#xff0c…

HarmonyOS-ArkUI Navigation (導航組件)-第一部分

導航組件主要實現頁面間以及組件內部的界面跳轉&#xff0c;支持在不同的組件間進行參數的傳遞&#xff0c;提供靈活的跳轉棧操作&#xff0c;從而便捷的實現對不同頁面的訪問和復用。 我們之前學習過Tabs組件&#xff0c;這個組件里面也有支持跳轉的方式&#xff0c;Navigati…

華為開源自研AI框架昇思MindSpore應用案例:基于MindSpore框架實現PWCNet光流估計

如果你對MindSpore感興趣&#xff0c;可以關注昇思MindSpore社區 1 環境準備 1.進入ModelArts官網 云平臺幫助用戶快速創建和部署模型&#xff0c;管理全周期AI工作流&#xff0c;選擇下面的云平臺以開始使用昇思MindSpore&#xff0c;可以在昇思教程中進入ModelArts官網 創建…

虛幻基礎:UI

文章目錄 控件藍圖可以裝載其他控件藍圖可以安裝其他藍圖接口 填充&#xff1a;相對于父組件填充水平框尺寸—填充—0.5&#xff1a;改變填充的尺寸填充—0.5&#xff1a;改變與父組件的距離 錨點&#xff1a;相對于父組件的控件坐標系原點&#xff0c;屏幕比例改變時&#xff…

監控平臺——SkyWalking部署

一、環境準備 先下載SkyWalking安裝包&#xff0c;需要注意的是SkyWalking 版本在10.X以上使用的nacos-client是2.X&#xff0c;如果安裝的Nacos版本是1.X就會存在兼容性的問題。由于本人使用的SpringBoot項目是2.7.X版本&#xff0c;安裝的Nacos版本只能是1.X版本的&#xff…

熱門索尼S-Log3電影感氛圍旅拍LUTS調色預設 Christian Mate Grab - Sony S-Log3 Cinematic LUTs

熱門索尼S-Log3電影感氛圍旅拍LUTS調色預設 Christian Mate Grab – Sony S-Log3 Cinematic LUTs 我們最好的 Film Look S-Log3 LUT 的集合&#xff0c;適用于索尼無反光鏡相機。無論您是在戶外、室內、風景還是旅行電影中拍攝&#xff0c;這些 LUT 都經過優化&#xff0c;可為…

自動化工作流工具的綜合對比與推薦

最近收到很多朋友私信我說&#xff1a;“刷短視頻的時候&#xff0c;總是刷到自動化工作流的工具&#xff0c;有好多直播間都在宣傳&#xff0c;不知道哪款工具好”。我花了點時間&#xff0c;做了一下測試&#xff0c;大家可以參考一下&#xff0c;以下內容&#xff1a; 以下…

fircrawl本地部署

企業內部的網站作為知識庫給dify使用&#xff0c;使用fircrawl來爬蟲并且轉換為markdown。 ? git clone https://github.com/mendableai/firecrawl.gitcd ./firecrawl/apps/api/ cp .env.example .env cd ~/firecrawl docker compose up -d 官方&#xff1a; https://githu…

day17 學習筆記

文章目錄 前言一、數組的增刪改查1.resize函數2.append函數3.insert函數4.delete函數5.argwhere函數6.unique函數 二、統計函數1.amax&#xff0c;amin函數2.ptp函數3.median函數4.mean函數5.average函數6.var&#xff0c;std函數 前言 通過今天的學習&#xff0c;我掌握了num…

CentOS 8 Stream 配置在線yum源參考 —— 筑夢之路

CentOS 8 Stream ISO 文件下載地址&#xff1a;http://mirrors.aliyun.com/centos-vault/8-stream/isos/x86_64/CentOS-Stream-8-20240603.0-x86_64-dvd1.isoCentOS 8 Stream 網絡引導ISO 文件下載地址&#xff1a;http://mirrors.aliyun.com/centos-vault/8-stream/isos/x86_6…

網絡原理-TCP/IP

網絡原理學習筆記&#xff1a;TCP/IP 核心概念 本文是我在學習網絡原理時整理的筆記&#xff0c;主要涵蓋傳輸層、網絡層和數據鏈路層的核心協議和概念&#xff0c;特別是 TCP, UDP, IP, 和以太網。 一、傳輸層 (Transport Layer) 傳輸層負責提供端到端&#xff08;進程到進…

EF Core 執行原生SQL語句

文章目錄 前言一、執行查詢&#xff08;返回數據&#xff09;1&#xff09; 使用 FromSqlRaw或 FromSqlInterpolated 方法&#xff0c;適用于 DbSet<T>&#xff0c;返回實體集合。2&#xff09;結合 LINQ 查詢3&#xff09;執行任意原生SQL查詢語句&#xff08;使用ADO.N…

Unity LOD Group動態精度切換算法(基于視錐+運動速度)技術詳解

一、動態LOD技術背景與核心挑戰 1. 傳統LOD系統的局限 靜態閾值切換&#xff1a;僅基于距離的切換在動態場景中表現不佳 視覺突變&#xff1a;快速移動時LOD層級跳變明顯 性能浪費&#xff1a;靜態算法無法適應復雜場景變化 對惹&#xff0c;這里有一個游戲開發交流小組&…

MyBatis復雜查詢——一對一、一對多

目錄 &#xff08;一&#xff09;復雜查詢&#xff1a;1對1關系 【任務】數據庫里有學生表(student)和學生證信息表(student_card)&#xff0c;表結構如下所示&#xff0c;要求使用MyBatis框架查詢所有的學生信息以及每位學生的學生證信息 解決方案1&#xff1a;關聯查詢實現…

【服務端】使用conda虛擬環境部署Django項目

寫在開頭 為了與客戶端的Deep search配合&#xff0c;需要整一個后臺管理來保存和管理deep search的數據資料。選擇前端框架Vue-Vben-Admin Django后臺服務來實現這個項目。 廢話結束&#xff0c;從零開始。。。。 一、環境搭建 1. 安裝 Anaconda 下載 Anaconda&#xff1…