(5)機器學習小白入門 YOLOv:數據需求與圖像不足應對策略

(1)機器學習小白入門YOLOv :從概念到實踐
(2)機器學習小白入門 YOLOv:從模塊優化到工程部署
(3)機器學習小白入門 YOLOv: 解鎖圖片分類新技能
(4)機器學習小白入門YOLOv :圖片標注實操手冊
(5)機器學習小白入門 YOLOv:數據需求與圖像不足應對策略
(6)機器學習小白入門 YOLOv:圖片的數據預處理

引言

在使用 YOLO 模型進行訓練時,圖片數據量需要多少, YOLO 模型訓練所需的圖像數量,對結果有什么影響,以及當圖像數量不足時的應對策略。訓練結果預期等, 都是實際工作需要提前評估

YOLO 模型所需圖像數量

YOLO 模型訓練到底需要多少圖像呢?實際上,這并沒有一個固定的答案,它受到多種因素的影響。
YOLO 模型訓練圖片數量分析表

圖片數量級別優點缺點
100 - 500 張搭建快,適合簡單場景測試易過擬合,泛化能力差
5000 - 10000 張有一定多樣性,適合常見場景檢測對復雜、少見場景覆蓋不足
50000+ 張數據全面,適應復雜場景收集成本高,訓練資源要求高

任務復雜度

任務的復雜程度對所需圖像數量起著決定性作用。如果是簡單的目標識別任務,例如區分貓和狗這兩種特征明顯的類別,由于它們的特征差異較大,模型相對容易學習,可能幾百到幾千張圖像就足以讓模型學習到足夠的特征,從而取得不錯的識別效果。

但要是面對復雜的任務,比如細粒度的分類,不同種類的細粒度在外觀上可能只有細微的差別,模型需要學習更多的細節特征才能準確區分。這種情況下,可能需要上萬張甚至更多的圖像來讓模型充分學習各類細粒度的特征,以達到較高的識別準確率。

模型大小

不同大小的 YOLO 模型對數據量的需求也有所不同。像 YOLOv5 - n(nano)或 YOLOv8 - n 這類小模型,它們的參數量相對較少,學習能力有限,對數據量的需求也就相對較低。一般來說,幾千張圖像就有可能訓練出具有一定效果的模型。

相反,像 YOLOv5 - x(extra - large)或 YOLOv8 - x 這樣的大模型,參數量眾多,學習能力強大,但同時也需要更多的數據來充分發揮其潛力。在這種情況下,可能需要數萬張圖像才能讓模型學習到足夠豐富的特征,避免過擬合,從而實現良好的泛化能力。

圖像不夠時的處理方法

當我們面臨圖像數量不足的情況時,也有多種有效的方法可以應對。

沒有圖片

如果某些特定場景下的圖片難以獲取,可以使用合成數據。例如,利用 3D 建模軟件創建虛擬場景,然后將目標物體模型放置在其中,渲染出不同光照、角度的圖片。這種方法對于一些工業場景下的產品檢測或者虛構場景物體檢測等比較有效。不過需要注意合成數據與真實數據之間可能存在差異,需要適當調整模型來適應這種差異。

圖片不夠-數據增強

數據增強是一種在不增加實際數據量的情況下,通過對現有圖像進行各種變換來生成新的訓練樣本的技術。常見的數據增強方法有水平翻轉、旋轉、調整亮度和對比度、模糊處理等。以下是使用 Python 和 albumentations 庫進行數據增強的示例代碼:

import cv2
import numpy as np
from albumentations import (Compose, HorizontalFlip, Rotate, RandomBrightnessContrast,Blur, GaussianBlur, HueSaturationValue
)# 定義數據增強的變換組合
transform = Compose([HorizontalFlip(p=0.5),  # 水平翻轉,50%的概率執行Rotate(limit=45, p=0.5),  # 旋轉,角度范圍 -45 到 45 度,50%的概率執行RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),  # 隨機調整亮度和對比度Blur(blur_limit=3, p=0.5),  # 模糊處理GaussianBlur(blur_limit=3, p=0.5),  # 高斯模糊HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5)  # 調整色調、飽和度和明度
])# 讀取圖像
image = cv2.imread('your_image.jpg')
# 應用數據增強
augmented_image = transform(image=image)['image']

通過這些變換,我們可以生成大量不同版本的圖像,豐富訓練數據的多樣性,提高模型的泛化能力。

遷移學習-在既有模型微調

遷移學習是利用預訓練模型在大規模數據集(如 ImageNet)上學到的特征,將其應用到新的任務中。以 YOLOv5 為例,我們可以使用預訓練的模型權重,在自己的小數據集上進行微調。以下是使用 YOLOv5 進行遷移學習的命令示例:

# 使用 YOLOv5 進行遷移學習
python train.py --img 640 --batch 16 --epochs 100 --data your_data.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt

在這個命令中,–weights yolov5s.pt 指定使用預訓練的 YOLOv5 - s 模型權重,模型可以利用這些預訓練的特征,在我們自己的數據集上更快地收斂,減少對數據量的需求。

半監督學習

半監督學習結合了少量有標注的數據和大量無標注的數據進行訓練。在 YOLO 模型的訓練中,一些衍生模型支持半監督學習。在訓練過程中,模型可以利用無標注數據輔助有標注數據進行更新,從而提高模型的性能。雖然無標注數據沒有明確的標簽信息,但模型可以從中學習到一些通用的特征和模式,進一步提升在有標注數據上的表現。
核心思路是通過 “偽標簽” 機制將無標注數據轉化為有效訓練資源,結合少量有標注數據提升目標檢測性能
舉例
工廠需要用 YOLO 模型檢測生產線上的零件缺陷(如劃痕、變形),但面臨兩個問題:
有標注數據少:僅收集到 1000 張帶缺陷標簽的圖片(標注了缺陷位置和類型)。
無標注數據多:生產線上每天產生 10 萬張未標注的零件圖片(大部分是正常零件,少量含未知缺陷)

結論

YOLO 模型訓練所需的圖像數量受任務復雜度和模型大小等多種因素影響,并沒有一個固定的標準。當遇到圖像數量不足的情況時,我們可以通過數據增強、遷移學習、半監督學習等方法來有效解決。在實際應用中,具體問題具體分析,以提高 YOLO 模型的訓練效果和性能。

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

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

相關文章

百年制造名企,三菱重工引領“智”造新范式

日前,由深圳軟件協會指導、法大大和信息俠聯合出品的《制造行業合同數智化升級白皮書》(以下簡稱“白皮書”)正式發布,并首次提出 “電子簽法律AI” 雙輪驅動模型。在制造行業面臨供應鏈協同、合規風控及全球化出海等多重挑戰的當…

【學習筆記】計算機操作系統(七)—— 文件管理

第七章 文件管理 文章目錄第七章 文件管理7.1 文件和文件系統7.1.1 數據項、記錄和文件7.1.2 文件名和類型7.1.3 文件系統的層次結構7.1.4 文件操作7.2 文件的邏輯結構7.2.1 文件邏輯結構的類型7.2.2 順序文件(Sequential File)7.2.3 記錄尋址7.2.4 索引文件(Index File)7.2.5 …

基于PyQt5與深度學習的可視化水果識別系統(集成CNN, MobileNetV2, VGG16)

一、項目概述 大家好!今天我將分享一個我近期完成的深度學習項目——一個功能強大的、帶圖形化界面(GUI)的水果識別系統。該系統不僅能識別靜態圖片中的水果,還集成了模型訓練、評估、數據增強等功能于一體,為深度學習…

k8s-服務發布基礎

目錄 Service的定義 核心定義 Service 的類型 關鍵組件與機制 工作流程示例 高級特性 Service工作原理 核心工作原理 標簽選擇器(Label Selector) Endpoints 對象 網絡代理與負載均衡(kube-proxy) userspace 模式&#…

洛谷P1514 [NOIP 2010 提高組] 引水入城

洛谷P1514 [NOIP 2010 提高組] 引水入城 洛谷題目傳送門 題目背景 NOIP2010 提高組 T4 題目描述 在一個遙遠的國度,一側是風景秀美的湖泊,另一側則是漫無邊際的沙漠。該國的行政區劃十分特殊,剛好構成一個 NNN 行 MMM 列的矩形&#xff…

【unity小技巧】國內Unity6下載安裝和一些Unity6新功能使用介紹

文章目錄前言一、安裝1、國外下載2、國內下載二、常用的新功能變化1、官方推薦使用inputsystem進行輸入控制2、修復了InputSystem命名錯誤導致listen被遮擋的bug3、自帶去除unity啟動畫面logo功能4、unity官方的behavior行為樹插件5、linearVelocity代替過時的velocity方法6、隨…

Rust 中字符串類型區別解析

在 Rust 中,"hello" 和 String::from("hello") 都表示字符串,但它們在內存表示、所有權和可變性上有本質區別:1. 類型與內存表示"hello" (字符串字面量):類型為 &str(字符串切片引用…

springMVC05-異常處理器

在 SpringMVC 中,異常處理是一個非常重要的功能,它可以讓你優雅地處理程序拋出的各種異常,向用戶展示友好的提示,而不是顯示一堆報錯信息(如 500 頁面)。一、SpringMVC的異常處理器返回的是ModelAndView&am…

安裝 Elasticsearch IK 分詞器

安裝 Elasticsearch IK 分詞器(手動 .zip/.zip 安裝) IK 分詞器(IK Analysis)是 Elasticsearch 最常用的中文分詞插件,支持 細粒度分詞(ik_max_word) 和 智能切分(ik_smart&#xf…

數據庫系統原理實驗1:創建數據庫、數據表及單表查詢

一、實驗目的1.掌握在SQL Server中使用對象資源管理器和SQL命令創建數據庫與修改數據庫的方法。2.掌握在SQL Server中使用對象資源管理器或者SQL命令創建數據表和修改數據表的方法(以SQL命令為重點)。3.掌握無條件查詢…

【STM32】ADC模數轉換基本原理(提供完整實例代碼)

這篇文章是嵌入式中我通過大量資料 整合成了一份 系統完整、層次清晰的 ADC 模數轉換原理解析 文檔。 這里系統地梳理了 STM32F1 系列 ADC 模數轉換的核心資料,包括: 1.原理 特性 2.通道配置 3.模式選擇(單次/連續/掃描) 4.關鍵寄…

圖神經網絡 gnn 應用到道路網絡拓撲結構與交通碳排放相關性。,拓撲指標量化、時空關聯模型及演化機制分析

針對您提出的“道路網絡拓撲結構與交通碳排放相關框架,以下結合研究目標、數據與方法進行系統性深化設計,重點強化拓撲指標量化、時空關聯模型及演化機制分析:一、核心研究問題深化 靜態關聯:不同拓撲結構(方格網/環射…

7.6 優先隊列| dijkstra | hash | rust

lc1337pair存入&#xff0c;lambda sort后取出&#xff0c;最開始想用hash&#xff0c;寫一半感覺寫復雜了class Solution {public:vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {int m mat.size();int n mat[0].size();vector<pair…

最新 HarmonyOS API 20 知識庫 重磅推出

最新 HarmonyOS API 20 知識庫 重磅推出 前言 最近整理下 華為開發者聯盟最新的 API 20的鴻蒙應用開發文檔&#xff0c;這次的API 20 相比較之前的文檔&#xff0c;要多了不少內容&#xff0c;目前整理后是9000千多篇&#xff0c;不容易呀。 如何使用 基于騰訊的知識庫工具 …

uniapp 監聽物理返回按鈕

import {onShow,onHide,onLoad,onReady,onBackPress} from "dcloudio/uni-app"onBackPress((e) > {showLog("返回按鈕觸發")if(e.frombackbutton){//開始干活}})參數說明屬性類型說明fromString觸發返回行為的來源&#xff1a;backbutton——左上角導航…

多線程(2)

多線程&#xff08;2&#xff09; &#x1f534;&#x1f7e0;&#x1f7e1;&#x1f7e2;&#x1f535;&#x1f7e3;&#x1f534;&#x1f534;&#x1f7e0;&#x1f7e1;&#x1f7e2;&#x1f535;&#x1f7e3;&#x1f534;&#x1f534;&#x1f7e0;&#x1f7e1;&am…

網關助力航天噴涂:Devicenet與Modbus TCP的“跨界對話“

在航空航天領域&#xff0c;飛機、航天器的制造過程有著極高的精度與安全性要求。以飛機、航天器表面噴涂作業為例&#xff0c;不僅要進行嚴格的防腐蝕處理&#xff0c;而且對表面光滑度要求極高&#xff0c;這直接關系到飛行器的空氣動力學性能和使用壽命。為確保作業安全與質…

從傳統項目管理到敏捷DevOps:如何轉向使用DevOps看板工具進行工作流管理

在DevOps實踐中&#xff0c;DevOps看板工具成為了開發與運維團隊之間高效協作的關鍵。隨著企業對敏捷開發和持續交付的需求日益增長&#xff0c;DevOps看板工具通過可視化的管理方法&#xff0c;幫助團隊在繁雜的任務中保持高效的工作節奏和清晰的進度跟蹤。 具體而言&#xff…

【leetcode100】下一個排列

1、題目描述 整數數組的一個 排列 就是將其所有成員以序列或線性順序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下這些都可以視作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整數數組的 下一個排列 是指其整數的下一個字典序更大的排列。更正…

Flink-Source算子狀態恢復分析

背景 修改 source 算子 kafka_old_topic 消費任務運行一段時間后&#xff0c;暫停狀態并保留。然后將 uid 和 topic 都改了&#xff0c;消費者 offset 會從 earliest 開始。 // before FlinkKafkaConsumer consumer KafkaConfig.getConsumer("kafka_old_topic");…