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