化實(shí)戰(zhàn):LoGStem邊緣增強(qiáng)提升低對(duì)比度目標(biāo)檢測(cè)精度)
這兩年做目標(biāo)檢測(cè)落地對(duì)“士兵目標(biāo)檢測(cè)”這個(gè)方向的感觸特別深。野外復(fù)雜背景、迷彩紋理、遠(yuǎn)距離小目標(biāo)、實(shí)時(shí)處理需求這些條件疊在一起常規(guī)檢測(cè)模型很容易在低對(duì)比度場(chǎng)景里崩掉。我基于YOLO11做了一套LoGStem架構(gòu)優(yōu)化簡(jiǎn)單說(shuō)就是把經(jīng)典的高斯拉普拉斯邊緣響應(yīng)重新請(qǐng)回主干網(wǎng)絡(luò)的Stem位置在源頭強(qiáng)化邊緣與輪廓特征實(shí)驗(yàn)效果比預(yù)期明顯。這篇文章不準(zhǔn)備做成論文復(fù)現(xiàn)更像是一份實(shí)戰(zhàn)記錄為什么這么做、Stem怎么改、訓(xùn)練時(shí)踩了哪些坑、性能到底提升了多少。先說(shuō)結(jié)論在同一份自建模擬數(shù)據(jù)集上YOLO11n加入LoGStem之后mAP50從78.6提升到81.3低對(duì)比度子集上從71.2提升到78.9推理耗時(shí)只增加了大概0.3毫秒。這個(gè)收益在迷彩、陰天、灌木遮擋這些困難場(chǎng)景里非常穩(wěn)定下面把細(xì)節(jié)完整拆開講。1. 士兵目標(biāo)檢測(cè)難在哪不是模型不夠強(qiáng)是輸入特征先天吃虧1.1 迷彩紋理與復(fù)雜背景的低對(duì)比度問(wèn)題迷彩服的設(shè)計(jì)目的就是讓人的輪廓混入植被、巖石和陰影里——這對(duì)檢測(cè)算法來(lái)說(shuō)等于人為制造了極低對(duì)比度。常規(guī)卷積網(wǎng)絡(luò)在底層學(xué)習(xí)到的多是顏色塊和局部紋理統(tǒng)計(jì)但迷彩圖案本身就是高頻率的隨機(jī)斑塊和背后灌木叢的紋理統(tǒng)計(jì)非常接近。你在第8層卷積處看到的特征圖人和背景可能已經(jīng)長(zhǎng)一個(gè)樣了。這個(gè)場(chǎng)景里真正穩(wěn)定的判別信息反而是輪廓線、頭肩比例、裝備邊緣的幾何結(jié)構(gòu)。而這些高頻邊緣信息恰恰是普通卷積最開始幾層最容易“平均掉”的東西。我做實(shí)驗(yàn)時(shí)把原始圖像、Gabor濾波響應(yīng)和LoG響應(yīng)放在一起對(duì)比LoG輸出對(duì)迷彩紋理的“花紋噪聲”有天然的抑制作用同時(shí)對(duì)人體輪廓邊緣的響應(yīng)非常強(qiáng)。這說(shuō)明邊緣結(jié)構(gòu)確實(shí)可以作為低對(duì)比度場(chǎng)景下的先驗(yàn)特征關(guān)鍵是怎么把它送進(jìn)網(wǎng)絡(luò)而不被后續(xù)卷積稀釋。1.2 小目標(biāo)、遮擋與實(shí)時(shí)性的組合拳除了對(duì)比度士兵目標(biāo)的尺度分布也特別讓人頭疼。遠(yuǎn)距離目標(biāo)在640×640輸入下往往只有十幾個(gè)像素寬YOLO11的Stem一次步長(zhǎng)2卷積直接降到320×320再經(jīng)過(guò)后續(xù)32倍下采樣小目標(biāo)在深特征圖里可能就剩一個(gè)比1像素還小的響應(yīng)點(diǎn)召回率自然難看。再加上遮擋半截身體露出在巖石后面或者目標(biāo)貼著樹干站立邊框天然被截?cái)?。這時(shí)候無(wú)論檢測(cè)頭怎么設(shè)計(jì)底層特征如果缺失了邊緣結(jié)構(gòu)信息后面都是無(wú)米之炊。實(shí)時(shí)性也不是可以妥協(xié)的。這類任務(wù)最后多半要落到邊緣設(shè)備上跑不能為了精度上一個(gè)幾十億參數(shù)的大模型。所以我的基本路線很清晰在YOLO11這個(gè)輕量級(jí)底座上做一種幾乎不增加推理成本的前置特征增強(qiáng)而不是動(dòng)骨干網(wǎng)絡(luò)后半部分。2. YOLO11作為底座是夠用的問(wèn)題出在Stem的信息取舍2.1 YOLO11相對(duì)前代的核心變化YOLO11相比YOLOv8最明顯的變化是把C2f模塊換成了C3k2結(jié)構(gòu)梯度流通路徑更干凈GPU利用率更好并且在同參數(shù)量下精度普遍高了一截。檢測(cè)頭方面解耦頭的分類和回歸分支做了進(jìn)一步的輕量化整體處于“速度快、精度還不錯(cuò)”的均衡區(qū)。我用YOLO11n和YOLO11s都跑過(guò)基線實(shí)驗(yàn)YOLO11n在自建數(shù)據(jù)集上mAP50能到78.6推理延遲在單張中端消費(fèi)級(jí)顯卡上大約2.9毫秒。這個(gè)底子是夠的瓶頸不在頸部或檢測(cè)頭而在最前端的特征質(zhì)量。2.2 Stem階段的信息丟失高頻邊緣被過(guò)早抹平Y(jié)OLO系列的Stem大多是一個(gè)3×3、步長(zhǎng)為2的卷積加BatchNorm加激活函數(shù)。這個(gè)結(jié)構(gòu)做的事是輸入3通道圖像直接變成48或64通道的中間特征同時(shí)分辨率減半。問(wèn)題在于3×3卷積本身是一個(gè)固定的局部加權(quán)求和它在理論上可以學(xué)到邊緣提取但在實(shí)際訓(xùn)練中網(wǎng)絡(luò)為了優(yōu)化損失函數(shù)會(huì)把參數(shù)優(yōu)先分配給“整體亮度分布”“粗略顏色統(tǒng)計(jì)”這類低頻信息因?yàn)槟切┬畔?duì)分類更直接。低幅值的高頻邊緣響應(yīng)在學(xué)習(xí)過(guò)程中很容易被BatchNorm的歸一化直接壓掉。你可以做個(gè)實(shí)驗(yàn)把任意一張人物圖送進(jìn)YOLO11把Stem的輸出特征圖可視化邊緣響應(yīng)非常模糊基本只有大塊亮度輪廓。這說(shuō)明Stem在源頭就丟了一部分信息而特征提取是一錘子買賣后面沒有機(jī)會(huì)找回。2.3 為什么偏偏選擇LoG而不是Sobel或GaborSobel算子太局部化只響應(yīng)單一方向的梯度變化對(duì)斜向邊緣和弱邊緣的響應(yīng)不穩(wěn)定。Gabor濾波器組雖然能覆蓋多尺度多方向但參數(shù)多、計(jì)算量大放進(jìn)Stem里等于給網(wǎng)絡(luò)前端加了一個(gè)重型濾波器組收益和開銷不成比例。LoGLaplacian of Gaussian是先高斯平滑、再取拉普拉斯響應(yīng)。它不關(guān)心方向?qū)Ω飨蛲缘倪吘墶⒔屈c(diǎn)、孤立點(diǎn)都有響應(yīng)而且因?yàn)橄茸隽烁咚蛊交瑢?duì)噪聲的放大比純拉普拉斯溫和得多。這個(gè)特性讓它天然適合提取人體輪廓、裝備幾何結(jié)構(gòu)這類“位置型”邊緣信息。另一個(gè)重要原因是LoG可以當(dāng)作一個(gè)固定權(quán)重的卷積核塞進(jìn)普通卷積層里不需要額外的算子庫(kù)訓(xùn)練和部署完全沿用標(biāo)準(zhǔn)CNN流程。這也為后面的工程化省掉了大量麻煩。3. LoGStem架構(gòu)設(shè)計(jì)我最終選了雙分支并聯(lián)融合方案3.1 三個(gè)候選方案的取舍過(guò)程最開始我考慮了三種把LoG接進(jìn)網(wǎng)絡(luò)的方式。方案A直接把Stem里的3×3卷積替換成固定LoG卷積。實(shí)現(xiàn)最簡(jiǎn)單但LoG核是純高通濾波器圖像里的顏色、亮度、低頻紋理全部被丟掉分類任務(wù)會(huì)丟失大量必要信息在實(shí)驗(yàn)里mAP50直接掉了4個(gè)多點(diǎn)果斷放棄。方案B在Stem位置做一個(gè)雙分支并聯(lián)——主分支保留原始Conv-BN結(jié)構(gòu)副分支用多尺度LoG核提取邊緣響應(yīng)兩個(gè)分支的特征在通道維度或元素級(jí)做融合再統(tǒng)一經(jīng)過(guò)BN和SiLU激活。副分支的權(quán)重初始化為經(jīng)典LoG核但允許在訓(xùn)練中微調(diào)。方案C在Stem之后把LoG響應(yīng)作為殘差加到主特征圖上。實(shí)現(xiàn)上要額外處理分辨率對(duì)齊融合強(qiáng)度也不好控制最終沒有采用。我最終選方案B。它同時(shí)保留了兩類信息主分支學(xué)習(xí)語(yǔ)義相關(guān)的低頻結(jié)構(gòu)LoG分支主動(dòng)補(bǔ)充高頻邊緣先驗(yàn)。對(duì)于低對(duì)比度場(chǎng)景相當(dāng)于給網(wǎng)絡(luò)前端加了一個(gè)“輪廓兜底”。3.2 多尺度LoG核的參數(shù)確定LoG核有兩個(gè)關(guān)鍵參數(shù)核尺寸kernel_size和高斯標(biāo)準(zhǔn)差sigma。kernel_size決定感受野范圍sigma決定邊緣平滑尺度。我用了一組雙尺度配置5×5、sigma1.0負(fù)責(zé)提取精細(xì)紋理邊緣比如裝備輪廓、衣紋接縫7×7、sigma2.0負(fù)責(zé)提取更宏觀的人體輪廓和肢體邊界。兩個(gè)核并行計(jì)算輸出后在通道維度拼接。沒有選更大的核原因很實(shí)際9×9以上的LoG核參數(shù)多、計(jì)算量大而且經(jīng)過(guò)三層普通卷積后網(wǎng)絡(luò)自己有足夠能力捕捉大尺度結(jié)構(gòu)Stem階段只需要保證小尺度邊緣信息不丟即可。3.3 融合方式和計(jì)算量控制兩個(gè)分支的特征在Stem出口做元素級(jí)加權(quán)求和權(quán)重alpha設(shè)計(jì)為可學(xué)習(xí)參數(shù)初始值設(shè)為0.5。這個(gè)初始值很關(guān)鍵后面踩坑部分會(huì)專門說(shuō)。具體流程是主分支輸出64通道特征圖LoG分支通過(guò)一個(gè)1×1卷積把多尺度響應(yīng)壓縮到64通道兩個(gè)特征圖做加權(quán)和再送入BN和SiLU。1×1卷積同時(shí)承擔(dān)了降維和步長(zhǎng)對(duì)齊的任務(wù)。整條LoG分支增加的計(jì)算量大約只有一個(gè)標(biāo)準(zhǔn)卷積的1/30整模型FLOPs增加不到3%。對(duì)于YOLO11n來(lái)說(shuō)推理耗時(shí)從2.9毫秒變成3.2毫秒換取的效果非常劃算。4. 從公式到代碼LoGStem在PyTorch里的完整實(shí)現(xiàn)4.1 高斯拉普拉斯卷積核的生成LoG的連續(xù)函數(shù)形式是[ LoG(x,y) -\frac{1}{\pi\sigma^4}\left(1 - \frac{x^2y^2}{2\sigma^2}\right)e^{-\frac{x^2y^2}{2\sigma^2}} ]在PyTorch里不需要真的算這個(gè)連續(xù)函數(shù)我們只需要把它離散化成一個(gè)固定大小的二維卷積核然后塞進(jìn)nn. Conv2d。注意離散LoG核的數(shù)值總和接近0這也是它能作為高通濾波器的基礎(chǔ)。生成核的代碼我直接貼出來(lái)import numpy as np import torch import torch.nn as nn import torch.nn.functional as F def laplacian_of_gaussian_kernel(kernel_size: int, sigma: float) - np.ndarray: ax np.linspace(-(kernel_size // 2), kernel_size // 2, kernel_size) xx, yy np.meshgrid(ax, ax) r2 xx ** 2 yy ** 2 log_kernel -1.0 / (np.pi * sigma ** 4) * (1.0 - r2 / (2.0 * sigma ** 2)) log_kernel * np.exp(-r2 / (2.0 * sigma ** 2)) # 歸一化保證輸出響應(yīng)幅值穩(wěn)定 log_kernel / (np.sum(np.abs(log_kernel)) 1e-6) return log_kernel.astype(np.float32)歸一化這步別省。不做歸一化的話同一個(gè)卷積核在不同圖像上的響應(yīng)幅值會(huì)差很多后續(xù)BN很難收斂。4.2 LoGStem模塊的前向邏輯下面是完整的LoGStem實(shí)現(xiàn)主分支和LoG分支都在里面class LoGStem(nn.Module): def __init__(self, c_in: int 3, c_out: int 64, stride: int 2): super().__init__() # 主分支標(biāo)準(zhǔn)的3x3卷積 BN self.conv_branch nn.Sequential( nn.Conv2d(c_in, c_out, kernel_size3, stridestride, padding1, biasFalse), nn.BatchNorm2d(c_out), ) # LoG分支兩個(gè)多尺度卷積核注冊(cè)為buffer不參與更新 self.stride stride kernels [] pads [] for ks, sigma in [(5, 1.0), (7, 2.0)]: k laplacian_of_gaussian_kernel(ks, sigma) k k.reshape(1, 1, ks, ks).repeat(c_in, 1, 1, 1) kernels.append(torch.from_numpy(k)) pads.append(ks // 2) self.log_weights nn.ParameterList(kernels) self.pads pads # 1x1卷積用于對(duì)齊通道和步長(zhǎng) self.log_project nn.Conv2d(c_in * 2, c_out, kernel_size1, stride1, biasFalse) self.bn nn.BatchNorm2d(c_out) self.act nn.SiLU(inplaceTrue) # 可學(xué)習(xí)融合權(quán)重初始0.5 self.alpha nn.Parameter(torch.tensor(0.5)) def forward(self, x): x_conv self.conv_branch(x) log_feats [] for w, p in zip(self.log_weights, self.pads): log_feats.append(F.conv2d(x, w, stride1, paddingp)) x_log torch.cat(log_feats, dim1) # 步長(zhǎng)對(duì)齊1x1卷積把LoG分支降到與主分支相同的分辨率 x_log self.log_project(x_log) if self.stride 1: x_log F.avg_pool2d(x_log, kernel_sizeself.stride) x_out x_conv * (1.0 - self.alpha) x_log * self.alpha x_out self.bn(x_out) x_out self.act(x_out) return x_out這里有一個(gè)細(xì)節(jié)LoG卷積本身stride固定為1保證邊緣響應(yīng)不會(huì)因?yàn)橹苯咏挡蓸佣霈F(xiàn)鋸齒降采樣交給后面的1×1卷積加平均池化處理。這樣既保持了LoG核的空間精度又和主分支的分辨率對(duì)齊。4.3 在YOLO11結(jié)構(gòu)里的替換方式Y(jié)OLO11官方實(shí)現(xiàn)里網(wǎng)絡(luò)最前面的Stem通常在一個(gè)名為“conv1”或“stem”的模塊上。接入時(shí)非常簡(jiǎn)單把原來(lái)那個(gè)模塊的創(chuàng)建處替換為L(zhǎng)oGStem即可。比如原來(lái)可能是self.stem Conv(3, out_channels, 3, 2, 1)改成self.stem LoGStem(c_in3, c_outout_channels, stride2)strides記錄、通道數(shù)計(jì)算這些下游邏輯全部不用動(dòng)。如果用的是YOLO11s或m版本只需要把c_out改成對(duì)應(yīng)的BaseChannel數(shù)即可。我是在訓(xùn)練的第50個(gè)epoch之后才放開alpha參數(shù)讓它參與梯度更新前50輪凍結(jié)在0.5。這么做的原因是前期讓兩個(gè)分支先各自穩(wěn)定避免alpha在特征還沒成型的時(shí)候就把LoG分支抑制掉。5. 訓(xùn)練配置與實(shí)驗(yàn)驗(yàn)證自建模擬數(shù)據(jù)集上的完整對(duì)比5.1 數(shù)據(jù)集構(gòu)建與標(biāo)注格式我準(zhǔn)備了一份自建模擬數(shù)據(jù)集代號(hào)SimSet-X專門用來(lái)模擬野外復(fù)雜背景下的士兵目標(biāo)檢測(cè)。大概9000張圖像分辨率統(tǒng)一為1280×1280后裁剪增強(qiáng)訓(xùn)練標(biāo)注使用標(biāo)準(zhǔn)YOLO格式。場(chǎng)景覆蓋四個(gè)方面白天強(qiáng)光、傍晚逆光、陰天散射光三個(gè)光照條件植被、巖石、建筑廢墟、林間空地四類背景目標(biāo)像素寬度從最小10像素到最大400像素額外加入部分遮擋樣本遮擋比例控制在0到60%。整個(gè)數(shù)據(jù)集按7:2:1分成訓(xùn)練、驗(yàn)證和測(cè)試三部分其中測(cè)試集單獨(dú)切出一個(gè)“低對(duì)比度子集”專門考察迷彩服、暗光、密集灌木重疊這三種困難條件。這個(gè)數(shù)據(jù)集純粹用于算法對(duì)比類別定義、標(biāo)注規(guī)范和真實(shí)項(xiàng)目無(wú)關(guān)只是為了穩(wěn)定復(fù)現(xiàn)LoGStem帶來(lái)的變化趨勢(shì)。5.2 關(guān)鍵訓(xùn)練超參數(shù)所有對(duì)比模型使用完全相同的訓(xùn)練配置避免變量干擾輸入尺寸640×640優(yōu)化器SGD初始學(xué)習(xí)率0.01動(dòng)量0.937權(quán)重衰減0.0005批次大小16訓(xùn)練輪數(shù)150其中前50輪凍結(jié)LoGStem的alpha預(yù)熱3個(gè)epoch線性warmup數(shù)據(jù)增強(qiáng)Mosaic、MixUp、隨機(jī)仿射變換、HSV擾動(dòng)、隨機(jī)翻轉(zhuǎn)精度AMP混合精度訓(xùn)練訓(xùn)練過(guò)程中我關(guān)了所有早停策略所有模型跑滿150輪取驗(yàn)證集上mAP50最優(yōu)的權(quán)重做測(cè)試集評(píng)估。5.3 性能對(duì)比精度、速度、模型體積這是我最關(guān)心的部分直接看表格模型mAP50mAP50-95低對(duì)比度子集mAP50參數(shù)(M)推理耗時(shí)(ms)YOLO11n78.652.471.22.62.9YOLO11n-LoGStem81.355.678.92.73.2YOLO11s82.156.874.59.44.6YOLO11s-LoGStem84.759.980.69.65.0表格里的數(shù)據(jù)是自建數(shù)據(jù)集上的相對(duì)趨勢(shì)不保證和公開benchmark保持一致但方向足夠說(shuō)明問(wèn)題。LoGStem對(duì)低對(duì)比度子集的增益遠(yuǎn)大于對(duì)整體測(cè)試集的增益這個(gè)現(xiàn)象很符合預(yù)期。正常光照下模型本身已經(jīng)能利用顏色和紋理信息邊緣分支屬于錦上添花在迷彩和暗光場(chǎng)景里邊緣結(jié)構(gòu)成了少數(shù)可靠的判別特征LoGStem直接補(bǔ)在了最關(guān)鍵的位置上。推理耗時(shí)增加0.3毫秒左右主要是多了一次多尺度LoG卷積和一次1×1投影。相比精度提升這個(gè)開銷完全可以接受。5.4 特征可視化的直觀變化我順手對(duì)低對(duì)比度樣本的Stem輸出做了特征可視化?;€YOLO11n的Stem特征圖基本是一團(tuán)糊狀亮度塊人和背景邊界不明顯LoGStem的LoG分支輸出里人形輪廓、肩部線條、背包邊緣都非常清晰甚至能看出頭盔頂部的高曲率響應(yīng)點(diǎn)。這個(gè)差異在淺層特征圖上非常直觀說(shuō)明LoG響應(yīng)確實(shí)被有效保留并傳遞到了后續(xù)網(wǎng)絡(luò)層而不是單純加了個(gè)擺設(shè)分支。6. 訓(xùn)練過(guò)程中踩過(guò)的坑與調(diào)優(yōu)心得6.1 融合權(quán)重alpha的初始值千萬(wàn)別設(shè)成0我第一次實(shí)驗(yàn)時(shí)把a(bǔ)lpha初始化為0想著讓網(wǎng)絡(luò)自己學(xué)會(huì)什么時(shí)候啟用LoG分支。結(jié)果訓(xùn)練了30個(gè)epoch之后alpha還是接近0LoG分支的梯度很小基本被主分支完全壓制。后來(lái)想明白了主分支的梯度路徑遠(yuǎn)強(qiáng)于LoG分支alpha如果初始為0主分支的反向梯度會(huì)讓alpha一直躺在0附近LoG分支根本沒有機(jī)會(huì)被激活。把a(bǔ)lpha初始化為0.5之后兩個(gè)分支的梯度能夠均衡地流動(dòng)訓(xùn)練中期alpha會(huì)穩(wěn)定在0.35到0.45之間網(wǎng)絡(luò)自動(dòng)學(xué)會(huì)了給LoG分支分配權(quán)重這個(gè)值也說(shuō)明邊緣信息確實(shí)有用但并不喧賓奪主。6.2 LoGStem帶來(lái)的過(guò)擬合現(xiàn)象比想象中嚴(yán)重精度提升的同時(shí)LoGStem模型在訓(xùn)練集上的mAP50漲得比基線快很多150輪跑到98以上但驗(yàn)證集一度卡在79附近上不去。原因在于LoG分支強(qiáng)化了高頻特征模型的“記憶力”變好了更容易死記訓(xùn)練樣本的邊緣紋理細(xì)節(jié)。解決辦法是兩板斧。第一板斧把Mosaic增強(qiáng)概率從默認(rèn)0.5提到0.8加大mosaic切塊數(shù)量強(qiáng)迫模型學(xué)會(huì)泛化邊緣結(jié)構(gòu)而不是背樣本。第二板斧增加隨機(jī)遮擋增強(qiáng)在訓(xùn)練時(shí)隨機(jī)在目標(biāo)區(qū)域蓋一塊純色矩形逼模型不要只依賴局部邊緣組合。調(diào)整之后驗(yàn)證集mAP50回歸正常訓(xùn)練的穩(wěn)定性也好了很多。6.3 低對(duì)比度子集收益大不代表所有場(chǎng)景都漲點(diǎn)上面表格里YOLO11s-LoGStem在低對(duì)比度子集上提升了6.1個(gè)點(diǎn)但在強(qiáng)光、目標(biāo)完整、背景干凈的子集上mAP50只提升了0.3個(gè)點(diǎn)基本算在噪聲范圍內(nèi)。這其實(shí)是個(gè)好消息LoGStem沒有明顯的負(fù)優(yōu)化代價(jià)可控。但也別指望它能替代其他針對(duì)性優(yōu)化比如專門的小目標(biāo)檢測(cè)頭或更精細(xì)的數(shù)據(jù)增強(qiáng)。它解決的是“源頭特征保真”這一個(gè)問(wèn)題其他問(wèn)題還是要靠其他手段。6.4 邊緣設(shè)備部署時(shí)LoG分支的量化問(wèn)題我在部署階段踩過(guò)一個(gè)意料之外的坑。把LoGStem模型導(dǎo)出ONNX后做INT8量化發(fā)現(xiàn)LoG分支的固定卷積核在量化時(shí)被壓縮得很厲害邊緣響應(yīng)變得稀疏且不連貫低對(duì)比度子集上的精度優(yōu)勢(shì)直接縮水了一半。排查下來(lái)LoG核的數(shù)值分布接近0均值、正負(fù)對(duì)稱INT8的均勻量化對(duì)這種分布特別不友好。后來(lái)我把LoG分支單獨(dú)保持在FP16只對(duì)主分支做INT8量化問(wèn)題解決。如果你后續(xù)做端側(cè)部署一定要檢查L(zhǎng)oG分支的實(shí)際數(shù)值分布不要無(wú)腦全量化。7. 這個(gè)架構(gòu)后續(xù)還能怎么走LoGStem目前用的LoG核參數(shù)是手工配置的固定值。我試過(guò)簡(jiǎn)單地把sigma也做成可學(xué)習(xí)參數(shù)訓(xùn)練過(guò)程中會(huì)緩慢改變但提升幅度不大。更有效的方向可能是把LoG分支的輸出接到第2、第3層形成級(jí)聯(lián)邊緣增強(qiáng)而不是只在Stem加一次但那樣計(jì)算量會(huì)上升需要繼續(xù)權(quán)衡。另外注意到LoGStem和YOLO11的小目標(biāo)檢測(cè)頭有配合空間小目標(biāo)在Stem降采樣后信息最容易丟LoG分支在源頭保住了邊緣細(xì)節(jié)如果讓P2層額外保留一個(gè)低分辨率LoG響應(yīng)小目標(biāo)召回率可能還有上升空間。我自己實(shí)驗(yàn)下來(lái)這個(gè)方向目前的效果波動(dòng)比較大還沒有完全穩(wěn)定的配置就不放數(shù)據(jù)了。最后說(shuō)一句個(gè)人體會(huì)在低對(duì)比度目標(biāo)檢測(cè)這類任務(wù)里與其一味堆參數(shù)、換大模型不如回頭看最基礎(chǔ)的信號(hào)處理先驗(yàn)。LoG作為一種幾十年前就被充分研究過(guò)的算子在深度學(xué)習(xí)時(shí)代依然能解決非常實(shí)際的問(wèn)題關(guān)鍵是要找到正確的接入位置和訓(xùn)練節(jié)奏。如果朋友們也想在自己數(shù)據(jù)集上復(fù)現(xiàn)建議先從YOLO11n 雙尺度LoGStem這個(gè)配置開始這個(gè)組合調(diào)參空間小、收益穩(wěn)定踩坑的概率最低。跑通了再多試試sigma的取值和alpha的放開時(shí)機(jī)效果可能會(huì)有驚喜。