基于YOLOv11訓練無人機視角Visdrone2019數據集

【閑魚服務】

基于YOLOv11訓練無人機視角Visdrone2019數據集

  • Visdrone2019數據集介紹
    • 數據集格式
  • 數據預處理
  • yolov11模型訓練
    • 數據分布情況可視化
    • 訓練結果

Visdrone2019數據集介紹

VisDrone 數據集 是由中國天津大學機器學習和數據挖掘實驗室 AISKYEYE 團隊創建的大規模基準。它包含用于與無人機圖像和視頻分析相關的各種計算機視覺任務的,經過仔細標注的真實數據。

VisDrone 由 288 個視頻片段(包含 261,908 幀)和 10,209 張靜態圖像組成,這些數據由各種無人機載攝像頭拍攝。該數據集涵蓋了廣泛的方面,包括地點(中國 14 個不同的城市)、環境(城市和鄉村)、物體(行人、車輛、自行車等)和密度(稀疏和擁擠的場景)。該數據集是在不同的場景以及天氣和光照條件下,使用各種無人機平臺收集的。這些幀通過手動方式進行了標注,包含超過 260 萬個目標的邊界框,例如行人、汽車、自行車和三輪車。此外,還提供了場景可見性、物體類別和遮擋等屬性,以更好地利用數據。
在這里插入圖片描述

類別:
??0:Pedestrian(行人)
??1:People(人群)
??2:Bicycle(自行車)
??3:Car(汽車)
??4:Van(廂式貨車)
??5:Truck(卡車)
??6:Tricycle(三輪車)
??7:Awning-tricycle(帶棚三輪車)
??8:Bus(公交車)
??9:Motor(摩托車)

數據集格式

在這里插入圖片描述

  1. 邊界框左上角的x坐標
  2. 邊界框左上角的y坐標
  3. 邊界框的寬度
  4. 邊界框的高度
  5. GROUNDTRUTH文件中的分數設置為1或0。1表示在計算中考慮邊界框,而0表示將忽略邊界框。
  6. 類別:忽略區域(0)、行人(1)、人(2)、自行車(3)、汽車(4)、面包車(5)、卡車(6)、三輪車(7)、雨篷三輪車(8)、公共汽車(9)、摩托車(10),其他(11)。
  7. GROUNDTRUTH文件中的得分表示對象部分出現在幀外的程度(即,無截斷=0(截斷比率0%),部分截斷=1(截斷比率1%°′50%))。
  8. GROUNDTRUTH文件中的分數表示被遮擋的對象的分數(即,無遮擋=0(遮擋比率0%),部分遮擋=1(遮擋比率1%°′50%),重度遮擋=2(遮擋率50%~100%))。
    在這里插入圖片描述

數據預處理

將數據處理成yolo的格式
yolo格式如下:
在這里插入圖片描述
visdrone2yolo.py

import os
from pathlib import Path
import argparsedef visdrone2yolo(dir):from PIL import Imagefrom tqdm import tqdmdef convert_box(size, box):# Convert VisDrone box to YOLO xywh boxdw = 1. / size[0]dh = 1. / size[1]return (box[0] + box[2] / 2) * dw, (box[1] + box[3] / 2) * dh, box[2] * dw, box[3] * dh(dir / 'labels').mkdir(parents=True, exist_ok=True)  # make labels directorypbar = tqdm((dir / 'annotations').glob('*.txt'), desc=f'Converting {dir}')for f in pbar:img_size = Image.open((dir / 'images' / f.name).with_suffix('.jpg')).sizelines = []with open(f, 'r') as file:  # read annotation.txtfor row in [x.split(',') for x in file.read().strip().splitlines()]:if row[4] == '0':  # VisDrone 'ignored regions' class 0continuecls = int(row[5]) - 1  # 類別號-1box = convert_box(img_size, tuple(map(int, row[:4])))lines.append(f"{cls} {' '.join(f'{x:.6f}' for x in box)}\n")with open(str(f).replace(os.sep + 'annotations' + os.sep, os.sep + 'labels' + os.sep), 'w') as fl:fl.writelines(lines)  # write label.txtif __name__ == '__main__':# Create an argument parser to handle command-line argumentsparser = argparse.ArgumentParser()parser.add_argument('--dir_path', type=str, default=r'E:\datasets\visdrone2019', help='visdrone數據集路徑')args = parser.parse_args()dir = Path(args.dir_path)# Convertfor d in 'VisDrone2019-DET-train', 'VisDrone2019-DET-val', 'VisDrone2019-DET-test-dev':visdrone2yolo(dir / d)  # convert VisDrone annotations to YOLO labels

yolov11模型訓練

VisDrone.yaml

# Ultralytics YOLO 🚀, AGPL-3.0 license
# Crack-seg dataset by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/crack-seg/
# Example usage: yolo train data=crack-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── crack-seg  ← downloads here (91.2 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: D:/Desktop/XLWD/dataset/VisDrone2019/visdrone2019/VisDrone2019-DET-train # dataset root dir
train: images/train # train images (relative to 'path') 3717 images
val: images/val # val images (relative to 'path') 112 images
test: images/test # test images (optional)
# test: test/images # test images (relative to 'path') 200 imagesnc: 10
# Classes
names:0: pedestrian1: people2: bicycle3: car4: van5: truck6: tricycle7: awning-tricycle8: bus9: motor

訓練腳本 train.py

from ultralytics import YOLO# import os
# os.environ['CUDA_LAUNCH_BLOCKING'] = '1'
# # 消除異步性,但是會帶來性能的損失
if __name__ == '__main__':# Load a COCO-pretrained YOLO11n model# model = YOLO("yolo11n.pt")model = YOLO(r"D:/SSJ/Work/ultralytics-main/yolo11n.pt",task='detect') # yolo11n-seg.pt segment# model = YOLO(r"D:/SSJ/Work/ultralytics-main/yolo11n.pt",task='detect')# model = YOLO(r"D:/SSJ/Work/ultralytics-main/runs/detect/train30/weights/best.pt",task='detect')# # Train the model on the COCO8 example dataset for 100 epochsresults = model.train(data="D:/Desktop/XLWD/dataset/ultralytics-8.3.39/demo/insulatorAndPersonDetect.yaml", epochs=100, batch=64,device=0,workers = 2)# imgsz=320,

數據分布情況可視化

數據特點:數據不同類別的數量不均衡,小目標較多
在這里插入圖片描述

訓練結果

在這里插入圖片描述
可以看出最終的結果只有car的識別準確率比較高,其余的都相對較低,當然這是由于訓練不充分導致的。
在這里插入圖片描述
訓練過程中的loss以及準確率如上,雖然最終準確率停留在0.45左右,但是已經比其他文章里的效果要好得多了,畢竟才訓練了100個epoch。

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

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

相關文章

基于Springboot 的智能化社區物業管理平臺的設計與實現(代碼+數據庫+LW)

摘 要隨著智慧社區的普及,傳統的物業管理方式已經無法滿足現代社區的需求。目前,很多社區管理中存在信息不暢通、工作效率低以及居民服務體驗不佳等問題。為了解決這些問題,我們基于SpringBoot框架開發了一套智能化社區物業管理平臺&#xf…

【深度學習新浪潮】SAM 2實戰:Meta新一代視頻分割模型的實時應用與Python實現

引言:從圖像到視頻的分割革命 上周AI領域最引人注目的計算機視覺進展,當屬Meta在SAM(Segment Anything Model)基礎上推出的SAM 2模型持續引發的技術熱潮。盡管SAM 2最初發布于2024年,但最新更新的2.1版本(2024年9月發布)憑借其突破性的實時視頻分割能力,在自動駕駛、影…

sqli-labs靶場安裝與使用指導教程(3種方法:通用版、php7版、Docker版)

目錄 一、SQLI-LABS靶場 1、核心特點 2、關卡難度 二、源碼安裝法 1、開啟Web服務和數據庫服務 2、靶場源碼下載 (1)通用版本 (2)PHP7版本 3、部署sqli-labs靶場 (1)確認網站根目錄位置 &#x…

從零開始配置前端環境及必要軟件安裝

從零開始配置前端環境及必要軟件安裝一、安裝編輯器二、安裝瀏覽器三、安裝Git版本控制工具四、Node.js 和 npm 環境變量配置1. 安裝 Node.js 和 npm2. 配置全局模塊和緩存目錄3. 設置環境變量4. 更換 npm 鏡像源5. 測試配置五、hosts文件六、輔助應用markdown(筆記…

神經網絡模型搭建及手寫數字識別案例

代碼實現:import torch print(torch.__version__) from torch import nn from torch.utils.data import DataLoader from torchvision import datasets from torchvision.transforms import ToTensor training_data datasets.MNIST(rootdata,trainTrue,downloadTru…

CRMEB標準版PC掃碼登錄配置教程(PHP版)

需要在開放平臺創建網站應用 微信開放平臺地址:https://open.weixin.qq.com/ 1、注冊網站應用 2、填寫信息,網站地址填寫前臺訪問的域名就行 3、復制開放平臺AppId和開放平臺AppSecret 4、粘貼到后臺應用配置的PC站點配置里

AmazeVault 核心功能分析,認證、安全和關鍵的功能

系列文章目錄 Amazevault 是一款專注于本地安全的桌面密碼管理器 AmazeVault 核心功能分析,認證、安全和關鍵的功能 AmazeVault 快速開始,打造個人專屬桌面密碼管理器 文章目錄系列文章目錄前言一、認證系統核心組件圖形解鎖實現圖形鎖控件 (PatternLoc…

Coze用戶賬號設置修改用戶昵稱-后端源碼

前言 本文將深入分析Coze Studio項目的用戶昵稱修改功能后端實現,通過源碼解讀來理解整個昵稱更新流程的架構設計和技術實現。用戶昵稱修改作為用戶個人信息管理系統的重要組成部分,主要負責處理用戶顯示名稱的更新和管理。 昵稱修改功能相對簡單但不失重…

基于WebTransport(底層QUIC)實現視頻傳輸(HTML+JavaScript)

工作目錄和基本操作見博客《基于HTTP3的WebTransport實踐》,在此僅展示服務器端和客戶端代碼。 服務器端 import { readFile } from "node:fs/promises"; import { createServer } from "node:https"; import {Server} from "socket.io&qu…

Git 怎么倉庫遷移?error: remote origin already exists.怎么解決

1. 確認本地已經有完整的 舊 倉庫你本地應該有舊的項目,并且能看到 .git 文件夾。如果沒有,可以先從舊倉庫克隆下來:git clone 舊倉庫git地址 cd 舊代碼目錄比如:git clone https://gitee.com/star-information/esflow-pro-api.gi…

【語法】【C+V】本身常用圖表類型用法快查【CSDN不支持,VSCODE可用】

文章目錄Mermaid 簡介Mermaid 由三部分組成Mermaid 的使用方法復雜圖表結構的技巧餅圖簡介餅圖語法餅圖示例雷達圖簡介雷達圖語法雷達圖語法細節標題軸曲線選項雷達圖示例時間線簡介時間線語法時間線示例樹形圖簡介樹形圖語法樹形圖示例數據包圖簡介數據包圖語法1:數…

Anaconda下載安裝教程(附Anaconda安裝包)

Anaconda下載安裝教程(附Anaconda安裝包)獲取:python開發工具包丨夸克網盤-資源免費下載 有位小粉絲剛剛入門python,問我怎么安裝Anaconda,于是我幫他找了一個詳細的Anaconda安裝教程和安裝包。 Anaconda其實是一個p…

那我現在有3個輸入 9層神經元 每層神經元數為 3 9 3 5 6 2 3 9 8 請給出我所有的權重矩陣

問題1 那我現在有3個輸入 9層神經元 每層神經元數為 3 9 3 5 6 2 3 9 8 請給出我所有的權重矩陣 明白,我們來系統地列出你的 9層全連接網絡 的權重矩陣。1?? 網絡結構 輸入層:3 個神經元隱藏層/輸出層:9 層神經元數分別為 [3,9,3,5,6,2,3,9…

廣東省省考備考(第八十七天8.26)——判斷推理(聽課后強化訓練)

判斷推理:定義判斷 錯題解析 第一步:找出定義關鍵詞。 “農村中各項經濟活動及由此產生的經濟關系”、“同農業有直接或間接的關系”。 第二步:逐一分析選項。 A項:該項指出具體的夏糧產量和增量,其中生產糧食屬于種植…

讀取 STM32H5 Data Flash 觸發 NMI 的問題解析 LAT1544

關鍵字:STM32H5, data flash, high-cycle data, NMI問題描述客戶反饋,使用 STM32H563 的 data flash(high-cycle data flash),在還沒有寫入任何數據之前去讀取 data flash, 會觸發 hardfault 異常。1. 問題分析我們嘗試在 NUCLEO-…

學云計算還是網絡,選哪個好?

云計算工程師和網絡工程師,都是IT界香餑餑,但方向差很大!選錯路后悔3年!今天極限二選一,幫你徹底搞懂工作職責 網絡工程師:網絡世界的交警工程師!主要管物理網絡和邏輯連接。負責設計、搭建、維…

Matlab使用——開發上位機APP,通過串口顯示來自單片機的電壓電流曲線,實現光伏I-V特性監測的設計

預覽此處的測試數據的采集頻率和曲線變化是通過更換電阻來測試的,所以電壓電流曲線顯示并不是很平滑,圖中可以看到每一個采集點的數值。這個設計是福州大學第三十期SRTP的一個校級的項目,打算通過分布式的在線掃描電路低成本的單片機&#xf…

云原生 JVM 必殺技:3 招讓容器性能飛躍 90%

最近佳作推薦: Java 大廠面試題 – JVM 與分布式系統的深度融合:實現技術突破(34)(New) Java 大廠面試題 – JVM 新特性深度解讀:緊跟技術前沿(33)(New&#…

你真的了解操作系統嗎?

文章目錄操作系統是什么?操作系統核心功能為什么需要操作系統(目的)?操作系統的下層是什么?上層又是什么?如何理解“管理”?——“先描述,再組織”操作系統是什么? 任何…

從0到1詳解requests接口自動化測試

前言 接口測試是測試系統組件間接口的一種測試。接口測試主要用于檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。 1、理解什么是接口 接口一般來說有兩種…