iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
AI Engineering

Model with GIS系列 第 19

[Day 19] Background messing

  • 分享至 

  • xImage
  •  

在昨天的實戰中,我們成功利用 SAHI 搭配 CLAHE 在衛星圖中抓出了精準的 OBB 傾斜框,但我們也遇到了一個問題,一條完整的機場跑道被切片網格切斷,模型只認出了目標物的右上半截,左下半段卻因為特徵不足而被當成雜訊濾除。

這是電腦視覺領域中經典的「感受野領域偏移 (Receptive Field Domain Gap)」,今天我們暫停寫扣,深入了解這個導致模型「瞎子摸象」的理論陷阱,以及遙測界的解方。

感受野失調

卷積神經網路 (CNN) 依賴感受野 (Receptive Field) 來理解圖像,感受野決定了神經元能看到多大範圍的特徵。

訓練階段的上帝視角

在我們目前的 find-airport-1 資料集中,訓練圖多半是完整的機場,當整張圖被 Resize 到 640x640 時,模型學習到的是「全局特徵」,它知道機場是由「一條灰色的長條跑道 + 旁邊的航廈 + 周圍的停機坪」組合而成。

SAHI 的推論

推論時,SAHI 維持了極高的原始解析度,並直接切下一塊 640x640 的真實像素,這導致局部切片內可能完全塞滿了「一條沒有盡頭的灰色柏油路」,完全沒有航廈與草地的邊界特徵。

這產生了致命的 Domain Gap,模型在訓練時被教導「要有航廈跟跑道才是機場」,推論時看到純粹的灰色柏油路,自然不敢給出高信心度,最終導致大型連續特徵(如跑道、河流、公路)在切片邊界被切斷。

幾何崩壞

解決感受野失調的唯一解法,就是「推論時怎麼切,訓練時就怎麼切」(Patch-based Training),我們必須將原始的高解析度訓練集也切成 640x640 的小圖,讓模型提早適應殘缺的跑道,但這在 OBB 旋轉框的領域中會引發一些幾何運算問題。

HBB(水平框)的裁切

只需要計算 x_min,y_min.x_max,y_max 與切片邊界的交集(Intersection),裁切後的形狀依然是水平長方形。

Polygon(多邊形)的裁切

跑道的 Polygon 是一組封閉的座標點,當切片網格切過跑道時,原本的一個多邊形會被強制切斷。

布林運算(Boolean Operations)

為了產生正確的局部標註,我們要引入幾何拓撲學的布林交集運算,將切片網格視為一個正方形 Polygon,與跑道的 Polygon 進行 Intersection 計算,動態生成全新的閉合多邊形座標,並將全局座標 (Global Coordinates) 重新映射為相對於該切片的局部座標 (Local Coordinates)

背景失衡

當我們把一張 10000x10000 的衛星圖切成 640x640 的小圖時,會產生數百張切片,根據地理特性,其中可能有 95% 的切片全是純草地、海洋或無關的市區,完全沒有機場的標註。

如果把這 95% 的「全黑背景圖」直接丟給 YOLO 訓練,Loss Function 會瞬間被海量的負樣本 (Negative Samples) 淹沒,模型為了偷懶會迅速收斂到一個策略,只要「盲」猜圖片中沒有目標物,準確率就會高達 95%。

所以我們需要引入採樣策略(Sampling Straegy)

正樣本保留

只要切片內包含任何機場 Polygon 的碎片,100% 保留。

負樣本隨機丟棄

對於純背景的切片,設定 10% 到 15% 的保留率,讓模型維持對「純草地」或「雲層」的抗干擾能力,同時避免背景數量壓垮類別平衡。

小結

今天了解了一些資料分布的理論,明天預計將加入 Shapely 幾何運算套件,來時做全自動切片與 Polygon 重映射腳本,那我們明天見。


上一篇
[Day 18] SAHI and CLAHE
系列文
Model with GIS19
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言