
AI 把雲影誤判成洪水——一場並不存在的災難,賠掉了六位數
當我第一次感受到那種特殊的恐懼時,我正盯著一張東南亞高速公路的衛星影像——那種恐懼源自於眼睜睜看著一個 AI 信心滿滿地把某件事錯得離譜。
影像中有一塊不規則的暗色形狀橫亙在柏油路面上——至少對模型而言,那毫無疑問就是水。系統將它標記為洪水。自動改道隨即啟動。五十輛卡車被引導到次要道路,每一輛的行程都因此多出一百多公里。交貨時段全部崩解。易腐貨物開始變質。等到有人想到要查核時,財務損失已攀升到六位數以上。
那條路乾得徹底。
模型所看到的——它曾經確信自己看到的——其實是一片雲影。一朵在兩千公尺高空飄移的積雲,在地面上投下一塊暗斑,對一個只處理單一衛星畫面的 AI 而言,看起來就跟積水一模一樣。這正是我如今所稱的單幀推論失效:AI 被困在一個凍結的瞬間裡,對之前與之後發生的一切毫無記憶,於是幻想出一個並不存在的現實。而這並不是罕見的邊緣案例。它是當今幾乎每一套為洪水偵測而部署的電腦視覺系統最根本的弱點。
那起事件成了我的團隊在 Veriprajna 存在的原因。不是為了在一個預訓練模型外面再包一層包裝。而是為了打造某種真正理解自己所看之物的東西。
AI 為什麼會把陰影誤認為水?
答案在於物理,而且一旦看懂,就會發現它簡單得令人尷尬。
光學衛星——Sentinel-2、Landsat,以及大多數洪水偵測系統所仰賴的那些——會擷取不同波長的反射陽光。水會強烈吸收近紅外線與短波紅外線輻射。因此在衛星影像中,水呈現為暗色。
但暗色並非水的專利。雲影是暗的。陡峭山坡投下的地形陰影是暗的。新鋪的柏油路是暗的。而對一個以靜態影像訓練出來的卷積神經網路來說,『邊緣柔和的暗色無定形形狀』就是洪水的特徵。模型並不知道為什麼這些像素是暗的。它只知道它們是暗的。
更糟的是:在災害應變的情境下,這些模型被刻意調校得動不動就觸發警報。損失函數對漏報洪水的懲罰遠高於誤報。因此模型寧可偏向恐慌。每一片陰影都成了潛在的災難。
雲影以風的速度移動。洪水則服從重力與地形。但單幀模型分辨不出兩者的差異,因為它從未見過任何一者移動。
研究證實這並非紙上談兵。文獻記載,雲影是利用光學衛星影像進行自動近即時洪水偵測時的『最大挑戰』。在高解析度資料集中,陰影經常以脫離的特徵出現——與投下它們的雲朵分離——使得幾何校正方法變得不可靠,尤其是在雲層高度未知的情況下。
我們親手弄垮自家模型的那一夜
有件事我想坦白。當我們在 Veriprajna 剛開始打造洪水偵測時,我們犯了跟其他所有人一樣的錯誤。我們拿了一套穩健的分割架構,用標註過的洪水影像進行微調,在驗證集上得到了漂亮的數字。精確率超過 90%。我們欣喜若狂。
接著我們把它部署在印度一個季風頻繁地區上空的即時 Sentinel-2 資料流上。
第一週,它標記了十一起洪水。其中三起是真的。其餘的是陰影、灌溉後顏色深暗的農田,以及一段新鋪的路面。我的首席工程師在半夜打電話給我,滿是挫折地說,模型『像探水棒一樣,到處都看到水』。
接下來兩天,我們人工檢視了每一個誤報。而我們一再回到同一個領悟:模型對時間毫無概念。它看待每一格畫面,就像看一張從陌生人相簿裡抽出來的照片——沒有脈絡、沒有之前、沒有之後。一位人類分析師面對同一塊暗斑,會本能地切換到前一張影像。他們會看著那塊暗色形狀以每小時五十公里的速度向東飄移,然後心想,那是雲影,不是洪水。我們的模型做不到這一點。它沒有記憶。
那是轉捩點。我們不再試圖打造更好的單幀分類器,而開始工程化某種根本不同的東西:一套把時間視為現實維度、而非惱人變數的系統。
我在我們研究的互動版本中深入探討了這項架構轉變。
當你賦予 AI 記憶時會發生什麼?

人類分析師會透過等待來驗證疑似的洪水。他們查看下一張影像。他們往回倒帶。雲影在幾分鐘內就變形消失。洪水則持續數小時或數天,依循重力與地形阻力緩慢蔓延。
時間一致性正是單幀推論所拋棄的真實依據。
在 Veriprajna,我們的輸入不是一張影像。它是一個時間序列資料的張量——一連串讓模型觀看像素演變的畫面。我們使用 3D 卷積神經網路,其中的卷積核帶有一個時間維度。它不是在高與寬之間滑動,而是在高、寬與時間之間滑動。
效果十分深遠。一個先亮、再暗、又再度變亮的像素,會被標記為短暫異常——一片飄過的陰影。而一個從植被轉變為水、並持續維持為水達一格又一格畫面的像素,則會被歸類為洪水。時間梯度所講述的故事,是單一畫面永遠無法呈現的。
至於較長期的模式——歷經數天而非數分鐘演變的洪水——我們則疊加了卷積 LSTM 網路。這類網路保留了影像的空間結構(不像標準 LSTM 會把一切壓平成一維向量),同時維持著對洪水狀態的『記憶』。遺忘門捨棄短暫的雜訊。輸入門接納持續的變化。模型不只是說『正在淹水』。它能預測『這裡在兩小時後會淹水』,為物流業者爭取到真正的前置時間。
當我們加入時間深度後,陰影誤分類的誤報率下降了 85%。這並不是因為我們打造了更好的分類器——而是因為我們不再問錯誤的問題。
我們也運用時空圖卷積網路,對洪水沿道路網路的傳播進行建模。道路不是像素網格;它們是相互連結的圖。若上游節點淹水,網路會學會依據高程梯度與排水容量,提高下游節點的淹水機率——甚至在水出現在衛星影像上之前。這讓我們得以將河川水位計讀數、交通速度資料與天氣預報,直接整合進視覺推論管線中。
能穿透雲層的雷達
洪水偵測有個殘酷的諷刺:洪水伴隨風暴而來,風暴又伴隨雲層而來。導致洪水的種種條件,正是讓光學衛星失明的條件。
這正是感測器融合變得毫無妥協餘地之處。合成孔徑雷達——SAR——是一種主動式感測器。它發射自己的微波脈衝並聆聽回波。微波能穿透雲層、雨與煙。它們日夜皆可運作。而關鍵在於,它們與水的交互作用方式和光學光線不同。
雲影對雷達而言是隱形的。雷達提供自己的照明——它不在乎太陽在做什麼。因此當光學感測器看到暗色、而雷達看到一個具有高後向散射的粗糙乾燥表面時,答案很清楚:陰影。當兩個感測器都同意那是一個具有低後向散射的平滑鏡面時,答案同樣清楚:水。
原理上簡單。執行上卻複雜得殘酷。
為什麼不能直接把兩個感測器平均在一起就好?

這是我最常被問到的問題,而答案揭示了為什麼大多數的『融合』做法都只是做戲。
你不能把光學與 SAR 波段堆疊成單一個輸入張量,然後指望網路自己搞懂。它們的統計分布根本不同——RGB 像素值對上以分貝計的後向散射量測值。你也不能訓練各自獨立的模型再把它們的機率圖平均起來,因為那會錯過真正進行去歧義之處的特徵層級交互作用。
我們打造的則是一套跨模態注意力機制。光學編碼器與 SAR 編碼器透過平行的資料流獨立擷取特徵。接著,在多個尺度上,一個交叉注意力區塊讓每一種模態去『關注』另一種。模型會逐像素地計算,此刻哪一個感測器更值得信任。
當光學特徵呈現出雲雜訊的統計指紋——高變異數、低光譜相關性——時,注意力閘門會把權重移向雷達訊號。在 SAR 因建築物的雙重反射假影而吃力的都市環境中,閘門則轉回光學資料。這不是平均。這是動態的來源選擇。
AI 並不是在融合資料。它是在主動選擇要相信哪一個感測器——對每一個像素、在每一格畫面中。
有一個我們必須解決的實務問題:Sentinel-1 與 Sentinel-2 不會在同一時間飛越同一地點。當洪水在風暴期間發生、而只有 SAR 資料可用時,我們會使用生成對抗網路,來合成光學視角會根據雷達回波呈現出的樣貌。這並不是在捏造資料——而是為了給人類分析師一個可判讀的參考框架,因為原始雷達影像出了名地難以直觀解讀。
如需我們融合架構與訓練方法的完整技術剖析,請參閱我們的研究論文。
那場差點分裂我團隊的爭論
早期曾有那麼一週,我的團隊真的分裂了。一半人想純粹專注於時序建模——他們的論點是,只要你在時間上有足夠多的畫面,光靠光學資料就能把陰影和水區分開來。另一半人則主張,當你連續五格都是多雲畫面時,時序資料毫無用處——而那正是在你最需要偵測的那些洪水期間會發生的情況。
辯論越演越烈。一位工程師調出孟加拉上空季風季節的影像,展示了連續十二天裡 Sentinel-2 除了雲頂什麼也沒拍到。『你的時序模型是在看雲的演變,』她說。『它根本不知道地面上正在發生什麼。』
她說得對。而時序陣營也沒錯——當你能看見地面時,時間就是可用的最強大判別依據。
最終的解決之道並不是折衷。而是一種領悟:兩種做法各自都不完整,合在一起卻能帶來變革。時空建模能處理你只有斷斷續續光學能見度的情況。SAR 融合能處理光學完全被遮蔽的情況。而跨模態注意力機制則動態地學會,該信任哪一種證據組合。
我們將這套整合式管線命名為Chronos-Fusion。它透過雙資料流編碼器處理 Sentinel-1 SAR 與 Sentinel-2 光學資料,在多個尺度上以交叉注意力將兩者融合,再經由一個 3D 反卷積網路解碼,並透過一個懲罰物理上不可能之預測的損失函數來強制時間一致性——例如水在數秒內出現又消失,或積聚在 45 度的斜坡上。
我們的內部基準測試道出了實情:
- 純光學靜態基準: 約 0.65 mIoU(平均交並比)
- 純 SAR 靜態基準: 約 0.70 mIoU
- Chronos-Fusion 時空模型: >0.91 mIoU
- 時間一致性: 96% 趨勢穩定性——無閃爍、無幻影洪水
那些主張『直接用個基礎模型就好』的人怎麼說?
我不斷聽到這種話。去年有位投資人一臉真誠地對我說:『你們就不能拿一些洪水影像微調一下 SAM,然後直接出貨嗎?』SAM——也就是 Segment Anything Model——是很出色的技術。但它是一套通用型的分割引擎。它不理解水會吸收近紅外線輻射。它不知道當表面變成鏡面時雷達後向散射會下降。它也從未學過陰影隨風移動、而洪水服從重力。
這些包裝式做法——拿一個預訓練模型,在一個小型標註資料集上微調,然後部署——會做出令人驚豔的展示。它們在精心整理過的驗證集上得分很高。而它們在正式環境中卻會失敗,因為真實世界會以乾淨資料集所沒有的方式充滿對抗性。
預訓練模型不知道旁遮普灌溉後一塊深色的農田,在光譜上看起來與一片淺水洪水一模一樣。它不知道喀拉拉邦的季風雲層可以持續數週,使得純光學偵測在整個事件期間都毫無用處。它也不知道孟買的都市 SAR 影像會因建築物產生雙重反射假影,模仿出水的特徵。
包裝式 AI 會繼承其上游前處理的每一個失誤。如果雲遮罩漏掉了一片陰影,分割模型就會信心滿滿地把它標記為洪水。垃圾進,就是信心滿滿的垃圾出。
包裝式 AI 與我們所打造之物之間的區別並非紙上談兵。那是一套只在展示中管用的系統,與一套在季風來襲時仍然管用的系統之間的差別。
真正的代價不是那些改道的卡車
我以一個物流的例子作為這篇文章的開頭,是因為財務損失既具體又立即。但更深層的代價是信任。
當一套洪水偵測系統的誤報率很高時,人類操作員便不再相信它。他們開始人工驗證每一則警報,重新引入了 AI 本應消除的延遲。緊急應變人員會產生研究人員所稱的警報疲勞——一種『狼來了』的動態,合理的警報因為前五次都是陰影而遭到延誤或忽視。
在災害應變中,這是以人命來計量的。把搜救隊派往一個乾燥的地點——一片雲影——會讓真正的洪水受災者苦等。研究顯示,最佳化救援物資配送的『最後一哩』至關重要,而虛假的需求訊號會降低整個行動的效益成本比。
在參數型保險中,保單會依據衛星資料自動觸發(『在資產 X 的 500 公尺範圍內偵測到洪水』),因此準確度就是具有法律效力的通貨。一個誤報會觸發一筆不該支付的理賠。一個漏報則會拒絕一件合理的索賠。我們的系統不只記錄洪水標籤,還記錄時空證據鏈:水持續了六小時、雷達後向散射確認了表面粗糙度的變化、時序分析排除了陰影。那是一條可供鑑識的稽核軌跡,而不是一個機率分數。
你要如何訓練一個 AI 去理解它看不見的物理?
人們這樣問我,而誠實的答案是:你不會直接用物理去訓練它。你是在海量的時間序列衛星資料檔案上訓練它,其中的物理是隱含的。
我們在未標註的影像上使用自監督學習。模型看到一連串畫面,其中最後一格被遮蔽,而它必須預測接下來會出現什麼。經過數以百萬計的這類預測,它學會了雲移動得快、水移動得慢。它學會了陰影具有陡峭的時間梯度、而洪水的則是漸進的。它學會了變化的物理,卻從未有人告訴它牛頓定律。
接著我們在現有最好的標註資料集上進行微調——Sen1Floods11 涵蓋 11 場全球洪水事件、共 4,831 個標註影像區塊,WorldFloods 以 159 場洪水事件捕捉多樣的形態,AllClear 以 400 萬張影像用於雲與陰影去除,UrbanSARFloods 則專門針對城市環境這場惡夢。沒有任何單一資料集是足夠的。每一個都帶有自己的標註偏誤,而在它們全部之上訓練,會迫使模型去泛化,而不是死記。
陰影不是水
我不斷回想起那第一張影像。高速公路上的暗色形狀。那個信心滿滿的紅色標籤:洪水。等到有人提出質疑時,那五十輛卡車早已開始改道。
問題從來不是 AI 很笨。問題在於,我們要求它靠著看一張二維的快照,去理解一個四維的世界。我們給了它一張照片,卻要它為我們講一個故事。它當然會產生幻覺。
以單幀推論來做關鍵基礎設施決策的時代已經結束。氣候變遷正在加速極端天氣事件的發生頻率——以及伴隨而來的雲層覆蓋。那些一下雨就失明的系統並不是謹慎。它們是過時。
我們在 Veriprajna 打造的不是一個更好的分類器。而是一種不同的觀看方式。我們注視時間的流動。我們融合電磁頻譜。我們對水在地形上實際如何運作的物理進行建模,而不是對暗色像素如何在一張 JPEG 中聚集進行建模。當包裝式模型看到一條淹水的道路而陷入恐慌時,我們的系統查核了雷達、把影像倒帶、驗證了時間一致性,然後放行了那條路線。
陰影不是水。但如果你只看一次,你永遠不會知道兩者的差別。

