據(jù)增強參數(shù)權(quán)威參考:augmentation-args 逐項詳解與源碼印證)
Ultralytics YOLO 數(shù)據(jù)增強參數(shù)權(quán)威參考augmentation-args 逐項詳解與源碼印證【免費下載鏈接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking項目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics數(shù)據(jù)增強是 YOLO 訓(xùn)練流程中提升模型泛化能力、抑制過擬合的核心手段。Ultralytics 將全部可調(diào)增強參數(shù)統(tǒng)一收斂在一份參數(shù)宏docs/macros/augmentation-args.md中并通過頁面引用渲染進訓(xùn)練與配置文檔。本文以這份參數(shù)宏為骨架結(jié)合倉庫中的默認(rèn)配置、增強流水線源碼與配套指南逐項解析每個增強參數(shù)的類型、默認(rèn)值、取值范圍、適用任務(wù)與底層實現(xiàn)幫助你快速定位并調(diào)優(yōu)自己訓(xùn)練任務(wù)的增強策略。這份參數(shù)宏是什么、在哪里被引用docs/macros/augmentation-args.md是 Ultralytics 文檔體系中的可復(fù)用 Jinja 參數(shù)宏由 docs/build_docs.py 中定義的render_jinja_macros()渲染。它在當(dāng)前倉庫中被兩處文檔頁以{% include macros/augmentation-args.md %}的方式引入從而保證一份表格、多處同步顯示訓(xùn)練模式文檔的增強設(shè)置小節(jié)配置參數(shù)文檔的 Augmentation Settings 小節(jié)宏表中的默認(rèn)值全部以{{ hsv_h }}、{{ mosaic }}等模板占位符書寫構(gòu)建文檔時由 docs/build_docs.py 讀取 ultralytics/cfg/default.yaml 中的同名鍵并自動填入。也就是說本文表格中展示的默認(rèn)值即當(dāng)前倉庫的全局訓(xùn)練默認(rèn)值改default.yaml或通過 Python/CLI/YAML 傳入同名參數(shù)即可覆蓋。增強參數(shù)總覽表下表完整復(fù)刻參數(shù)宏的 21 個增強參數(shù)含類型、當(dāng)前倉庫默認(rèn)值、適用任務(wù)與取值范圍。各參數(shù)對應(yīng)的視覺示例與擴展說明見文末關(guān)聯(lián)的數(shù)據(jù)增強指南。ArgumentTypeDefaultSupported TasksRangeDescriptionhsv_hfloat0.015detect,segment,semantic,depth,classify,pose,obb0.0 - 1.0以色輪的比例調(diào)整圖像色相引入色彩多樣性幫助模型在不同光照條件下泛化。對classify僅在auto_augmentNone時生效hsv_sfloat0.7detect,segment,semantic,depth,classify,pose,obb0.0 - 1.0按比例改變圖像飽和度色彩強度用于模擬不同環(huán)境條件。對classify僅在auto_augmentNone時生效hsv_vfloat0.4detect,segment,semantic,depth,classify,pose,obb0.0 - 1.0按比例改變圖像明度亮度幫助模型在多種光照下穩(wěn)定工作。對classify僅在auto_augmentNone時生效degreesfloat0.0detect,segment,semantic,depth,pose,obb0.0 - 180在指定角度范圍內(nèi)隨機旋轉(zhuǎn)圖像提升模型對不同朝向目標(biāo)的識別能力translatefloat0.1detect,segment,semantic,depth,pose,obb0.0 - 1.0按圖像尺寸比例在水平和垂直方向平移圖像幫助學(xué)習(xí)檢測部分可見目標(biāo)scalefloat \| tuple0.5detect,segment,semantic,depth,classify,pose,obb0 - 1浮點或顯式(min, max)元組不適用于classify按增益系數(shù)縮放圖像模擬相機距離不同時目標(biāo)的大小變化shearfloat0.0detect,segment,semantic,depth,pose,obb-180 - 180按角度對圖像進行剪切變形模擬目標(biāo)從不同視角被觀察的效果perspectivefloat0.0detect,segment,semantic,depth,pose,obb0.0 - 0.001對圖像施加隨機透視變換增強模型對三維空間中目標(biāo)的理解能力flipudfloat0.0detect,segment,semantic,depth,classify,pose,obb0.0 - 1.0以指定概率上下翻轉(zhuǎn)圖像在不改變目標(biāo)特征的前提下增加數(shù)據(jù)多樣性fliplrfloat0.5detect,segment,semantic,depth,classify,pose,obb0.0 - 1.0以指定概率左右翻轉(zhuǎn)圖像有助于學(xué)習(xí)對稱目標(biāo)、增加數(shù)據(jù)集多樣性bgrfloat0.0detect,segment,semantic,depth,pose,obb0.0 - 1.0以指定概率將圖像通道從 RGB 交換為 BGR提升對錯誤通道順序的魯棒性mosaicfloat1.0detect,segment,semantic,pose,obb0.0 - 1.0將四張訓(xùn)練圖像拼接為一張模擬不同的場景構(gòu)成與目標(biāo)交互對復(fù)雜場景理解非常有效mixupfloat0.0detect,segment,semantic,pose,obb0.0 - 1.0將兩張圖像及其標(biāo)簽混合成合成圖通過引入標(biāo)簽噪聲與視覺變化增強泛化能力cutmixfloat0.0detect,segment,pose,obb0.0 - 1.0將兩張圖像的部分區(qū)域組合在保持區(qū)域分界清晰的同時制造部分遮擋場景提升魯棒性copy_pastefloat0.0segment,obb0.0 - 1.0被粘貼的合格目標(biāo)占比flip模式在圖像內(nèi)鏡像復(fù)制目標(biāo)mixup模式中該值同時作為跨圖應(yīng)用概率copy_paste_modestrflipsegment,obb-指定 copy-paste 策略可選flip與mixupauto_augmentstrrandaugmentclassify-應(yīng)用預(yù)定義增強策略randaugment、autoaugment或augmix以通過視覺多樣性提升模型性能erasingfloat0.4classify0.0 - 1.0訓(xùn)練期間隨機擦除圖像局部區(qū)域促使模型關(guān)注不那么明顯的特征augmentationslistNonedetect,segment,semantic,depth,pose,obb-自定義 Albumentations 變換僅 Python API。接受變換對象列表滿足定制化增強需求說明scale若傳入(min, max)元組形式僅對幾何類任務(wù)生效分類訓(xùn)練會從浮點值推導(dǎo)自身裁剪范圍1.0 - scale到1.0傳入元組會拋出TypeError詳見 scale 小節(jié)。顏色空間類增強HSV 三分量hsv_h、hsv_s、hsv_v三者的語義都是圍繞當(dāng)前值做對稱隨機偏移參數(shù)值為增益幅度實際偏移量在-hsv_*與hsv_*之間均勻隨機。三者默認(rèn)值0.015 / 0.7 / 0.4來自 ultralytics/cfg/default.yaml。hsv_h色相注意當(dāng)取值超過0.5時色相會在色輪上回繞因此0.5與-0.5的表現(xiàn)一致。適合戶外光照劇烈變化、同一物體顏色隨環(huán)境偏移的場景如陽光下的香蕉偏黃、室內(nèi)偏青綠。hsv_s飽和度模擬天氣與相機設(shè)置差異。例如晴天鮮艷的紅色交通標(biāo)志在霧天會顯得灰暗。hsv_v明度模擬光照強弱差異例如陽光下亮眼的蘋果在陰影中會明顯變暗。對分類任務(wù)的特別限制三者僅在auto_augmentNone即未啟用自動增強策略時才被應(yīng)用見宏表描述與 classify_augmentations() 實現(xiàn)。源碼實現(xiàn)三個參數(shù)在 v8_transforms() 中被合并為單個RandomHSV(hgain, sgain, vgain)變換一次完成類實現(xiàn)見 RandomHSV。幾何類增強旋轉(zhuǎn)、平移、縮放、剪切與透視這五個參數(shù)都作用于空間仿射/透視矩陣在源碼中統(tǒng)一由 RandomPerspective 負(fù)責(zé)并由 v8_transforms() 傳入。偏移量在-value與value之間隨機采樣其中translate、shear、perspective在 x、y 兩個軸各采樣一次獨立隨機值。degrees0.0 - 180旋轉(zhuǎn)范圍[-degrees, degrees]。默認(rèn)0.0關(guān)閉。航拍無人機等目標(biāo)朝向任意的場景建議開啟。translate0.0 - 1.0平移量為圖像尺寸的比例。默認(rèn)0.1訓(xùn)練默認(rèn)已有輕微平移。幫助模型處理部分出畫的目標(biāo)。scale浮點或元組這是幾何參數(shù)中唯一支持兩種形態(tài)的參數(shù)。浮點形態(tài)scale0.5表示縮放因子在1 - scale到1 scale即 0.5x - 1.5x間采樣元組形態(tài)scale(0.5, 2.0)直接設(shè)定縮放范圍。浮點值超出0.0 - 1.0會觸發(fā)ValueError需要超過 2 倍放大時請改用元組。默認(rèn)值0.5意味著默認(rèn)訓(xùn)練中圖像縮放可上下浮動 50%。shear-180 - 180剪切變形會迅速扭曲圖像建議從小值起步逐步增大。與透視不同剪切保持對邊平行、不引入消失點可模擬非垂直視角拍攝。perspective0.0 - 0.001數(shù)值極小但效果顯著模擬深度/角度變化下的透視縮短適用于無人機傾斜視角等場景。圖像翻轉(zhuǎn)與通道擾動flipud/fliplr概率參數(shù)由 RandomFlip 實現(xiàn)。取值即翻轉(zhuǎn)概率1.0表示全部翻轉(zhuǎn)、0.0關(guān)閉。默認(rèn)flipud0.0、fliplr0.5左右翻轉(zhuǎn)是訓(xùn)練默認(rèn)開啟的。注意姿態(tài)估計任務(wù)依賴data.yaml中的flip_idx關(guān)鍵點索引映射若數(shù)據(jù)集中未定義flip_idx源碼會直接關(guān)閉fliplr/flipud并給出警告見 v8_transforms 中的邏輯。bgr概率參數(shù)交換 RGB/BGR 通道順序由 Format 變換在輸出階段處理用于提升對相機庫通道順序不一致的魯棒性。組合式圖像級增強Mosaic、MixUp 與 CutMix三者都會把多張圖的信息合并進同一張訓(xùn)練樣本源碼上都繼承自BaseMixTransform需要從數(shù)據(jù)集中額外采樣圖像。mosaic默認(rèn)1.0將當(dāng)前圖與另外 3 張圖拼接為 4 宮格實現(xiàn)在 Mosaic。對小目標(biāo)檢測與上下文理解幫助很大。四條值得注意的行為拼接中心隨機決定可能在圖像內(nèi)部也可能在外部另外 3 張圖從近期已加載圖像緩沖區(qū)采樣cacheram時從整個數(shù)據(jù)集采樣采用有放回采樣同一圖像可在一張 mosaic 中出現(xiàn)多次mosaic 中心位置、拼接難度會拖慢收斂屬于更難但更魯棒的增強可通過close_mosaic默認(rèn) 10見 default.yaml在訓(xùn)練末尾關(guān)閉設(shè)epochs200、close_mosaic20即第 180 個 epoch 起關(guān)閉。mixup默認(rèn)0.0按概率將兩張圖按比例像素混合標(biāo)簽同步混合實現(xiàn)在 MixUp?;旌媳壤齺碜詎p.random.beta(32.0, 32.0)分布即每張圖大約各占一半并略有波動。cutmix默認(rèn)0.0從一張圖裁剪矩形貼到另一張圖實現(xiàn)在 CutMix。與 mixup 的全局像素混合不同cutmix 保留貼入?yún)^(qū)域的原像素強度與局部特征用于制造真實遮擋場景。算法細(xì)節(jié)貼入?yún)^(qū)域不能與已有框重疊且只有保留面積足夠的目標(biāo)框才會被保留——檢測標(biāo)簽的閾值是0.110%帶分割多邊形標(biāo)簽時為0.011%該閾值當(dāng)前實現(xiàn)不可修改。統(tǒng)一關(guān)閉行為close_mosaic觸發(fā)時mosaic、copy_paste、mixup、cutmix四種多圖變換在同一個 epoch同時關(guān)閉而幾何、HSV、翻轉(zhuǎn)與 Albumentations 變換繼續(xù)運行。Copy-Paste 增強copy_paste與copy_paste_modeCopy-Paste 需要多邊形segment或旋轉(zhuǎn)框obb標(biāo)簽在 CopyPaste 中實現(xiàn)具體語義由copy_paste_mode決定flip模式默認(rèn)copy_paste表示被復(fù)制的合格目標(biāo)占比對象來自當(dāng)前圖像自身的水平鏡像。例如一張圖有 6 個合格目標(biāo)、copy_paste0.5則會新增 3 份鏡像副本。mixup模式對象從隨機采樣的另一張數(shù)據(jù)圖像復(fù)制此時copy_paste同時作為該操作是否執(zhí)行的概率。IoA 沖突檢測任何模式下待粘貼目標(biāo)都會與目標(biāo)圖中已有目標(biāo)計算 IoA相交面積比僅當(dāng)所有 IoA 均低于0.330%時才允許粘貼該閾值當(dāng)前不可修改。此邏輯在 get_params() 方法中基于bbox_ioa實現(xiàn)。流水線位置差異flip模式作用于單張圖像插入到仿射變換之前mixup模式需要跨圖操作作為帶pre_transform的組合追加在流水線末尾見 v8_transforms() 中的分支邏輯。這也解釋了文檔中copy_paste默認(rèn)flip模式在單圖內(nèi)工作而mixup模式跨圖組合的表述。分類任務(wù)專屬auto_augment與erasing這兩個參數(shù)只作用于classify任務(wù)使用獨立的 torchvision 訓(xùn)練流水線 classify_augmentations()auto_augment默認(rèn)randaugment三選一的自動策略——randaugment隨機選擇變換并配以統(tǒng)一幅值計算開銷小autoaugment應(yīng)用從 ImageNet、CIFAR10、SVHN 等數(shù)據(jù)集上學(xué)習(xí)到的預(yù)定義策略只能選用無法在 Torchvision 內(nèi)訓(xùn)練新策略augmix通過隨機組合簡單變換制造多樣性。傳None即關(guān)閉自動策略此時hsv_h/hsv_s/hsv_v才對分類生效。erasing默認(rèn)0.4隨機擦除概率對應(yīng) torchvision 的RandomErasing。其scale、ratio、value子參數(shù)在當(dāng)前實現(xiàn)中不可調(diào)整固定為(0.02, 0.33)、(0.3, 3.3)與0。高級定制自定義 Albumentations 變換augmentationsaugmentations是一個僅 Python API 可用的列表參數(shù)接收 Albumentations 變換對象由 Albumentations 變換應(yīng)用。注意以下行為傳入后完全替換默認(rèn)的 Albumentations 變換集默認(rèn)集見 類的默認(rèn)列表Blur、MedianBlur、ToGray、CLAHHE各p0.01另有p0的RandomBrightnessContrast、RandomGamma、ImageCompression。頁面上的mosaic、hsv_h、degrees等其他增強不受影響、仍獨立運行。訓(xùn)練器保存 checkpoint 時會用A.to_dict()序列化這些變換因此序列化后的列表可以在 YAML/CLI 中往返傳遞這保證了resume恢復(fù)訓(xùn)練時能還原自定義變換。注意空間類變換會改變幾何Ultralytics 會自動調(diào)整標(biāo)注框但復(fù)雜變換可能仍需額外配置疊加過多或過重的變換會明顯拖慢每個 epoch。適用范圍是detect/segment/semantic/depth/pose/obb不含classify分類走獨立流水線。官方示例要求 Albumentations 1.4.22即 Python 3.9。import albumentations as A from ultralytics import YOLO model YOLO(yolo26n.pt) # 加載預(yù)訓(xùn)練模型 # 定義自定義 Albumentations 變換替換內(nèi)置默認(rèn)集 custom_transforms [ A.Blur(blur_limit7, p0.5), A.GaussNoise(std_range(0.0124, 0.0277), p0.3), A.CLAHE(clip_limit4.0, p0.5), A.RandomBrightnessContrast(brightness_limit0.2, contrast_limit0.2, p0.5), A.HueSaturationValue(hue_shift_limit20, sat_shift_limit30, val_shift_limit20, p0.5), ] model.train(datacoco8.yaml, epochs100, augmentationscustom_transforms, imgsz640)三種配置方式與底層流水線所有上表參數(shù)均可通過 Python、CLI 或 YAML 自定義文件傳入自定義 YAML 會整體覆蓋 ultralytics/cfg/default.yamlmode僅在 CLI 下必填。from ultralytics import YOLO model YOLO(yolo26n.pt) # 方式一Python 關(guān)鍵字參數(shù) model.train(datacoco8.yaml, epochs100, hsv_h0.03, hsv_s0.6, hsv_v0.5) # 方式二全部關(guān)閉未列出的參數(shù)保持默認(rèn) model.train( datacoco8.yaml, epochs100, hsv_h0.0, hsv_s0.0, hsv_v0.0, translate0.0, scale0.0, fliplr0.0, mosaic0.0, erasing0.0, auto_augmentNone, )# CLI 方式 yolo detect train datacoco8.yaml modelyolo26n.pt epochs100 hsv_h0.03 hsv_s0.6 hsv_v0.5# train_custom.yamlmode 僅 CLI 必需 mode: train data: coco8.yaml model: yolo26n.pt epochs: 100 hsv_h: 0.03 hsv_s: 0.6 hsv_v: 0.5從源碼看檢測/分割等任務(wù)非分類的增強最終由 v8_transforms() 組裝為一條確定順序的Compose流水線Mosaic概率mosaicCopyPasteflip模式插在仿射前mixup模式以組合形式追加在末尾RandomPerspective合并degrees/translate/scale/shear/perspectiveMixUp與CutMix均以pre_transform組合為輸入各自按概率觸發(fā)Albumentationsp1.0內(nèi)置默認(rèn)集或自定義augmentationsRandomHSVhsv_h/hsv_s/hsv_v垂直/水平RandomFlipflipud/fliplr。理解這條順序有助于解釋一些現(xiàn)象例如 Copy-Paste 在仿射之前基于原圖粘貼而 mixup/cutmix 是在仿射之后再做多圖合成。選型與調(diào)參建議默認(rèn)值已是穩(wěn)妥起點默認(rèn)的hsv_h0.015、hsv_s0.7、hsv_v0.4通常無需大改多數(shù)目標(biāo)檢測任務(wù)可直接沿用mosaic1.0、fliplr0.5、scale0.5的默認(rèn)組合。相機視角是否固定是幾何增強的開關(guān)若部署時相機位姿固定不變可考慮關(guān)閉degrees/translate/scale/shear/perspective以加速收斂若視角多變則保留它們換取魯棒性。mosaic需謹(jǐn)慎評估它會讓標(biāo)簽語義產(chǎn)生局部目標(biāo) 多目標(biāo)的樣本。若這類遮擋/多目標(biāo)情況在你的業(yè)務(wù)中不可接受可調(diào)低概率或調(diào)大close_mosaic讓它更早退出訓(xùn)練。小目標(biāo)與類別不均衡場景mosaic對小目標(biāo)、copy_paste對罕見類別的實例分割/旋轉(zhuǎn)框任務(wù)價值突出。保持簡單從最小增強集開始按需逐步疊加任何增強都應(yīng)盡量模擬生產(chǎn)環(huán)境的真實數(shù)據(jù)分布避免引入與線上無關(guān)的分布偏差。Albumentations 是否啟用訓(xùn)練日志中出現(xiàn)albumentations: Blur[...]即說明albumentations包已安裝并應(yīng)用了默認(rèn)低概率變換每個p0.01。這些默認(rèn)變換無法通過default.yaml參數(shù)關(guān)閉——需要卸載該包或通過augmentations參數(shù)傳入自定義列表來整體替換。延伸閱讀倉庫內(nèi)完整教程YOLO 數(shù)據(jù)增強指南含每個參數(shù)的開啟/關(guān)閉對比圖增強實現(xiàn)類參考文檔 augment 模塊 與源碼 ultralytics/data/augment.py全局默認(rèn)值ultralytics/cfg/default.yaml宏表默認(rèn)值的唯一來源包含本宏的頁面訓(xùn)練模式文檔、配置參數(shù)文檔相關(guān)集成指南Albumentations 集成【免費下載鏈接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking項目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考