基于數(shù)據(jù)驅(qū)動 U-Net 模型的大氣污染物擴散快速預(yù)測,提升計算速度近6000倍

項目背景
當(dāng)前,常見的大氣污染預(yù)測模型大多是基于物理機理構(gòu)建的,比如空氣質(zhì)量預(yù)測模型 Calpuff、AERMOD、CMAQ 等。然而,這些模型運算較為復(fù)雜,對于輸入數(shù)據(jù)的要求非常高,運算耗時也比較長,適合用于常規(guī)固定區(qū)域的預(yù)報。當(dāng)遇到突發(fā)污染事件時,就無法有效發(fā)揮作用。 針對以上問題,本項目以某城區(qū) 3km*3km 范圍的固定模擬區(qū)域,根據(jù)污染物擴散模型,快速計算任意釋放點源和任意風(fēng)向的污染物擴散動圖,并進(jìn)行精度評估。僅利用城市局部污染物擴散云圖作為輸入,使用深度學(xué)習(xí)模型提取圖像中污染物擴散的特征,純數(shù)據(jù)驅(qū)動,無需建立物理模型,預(yù)測耗時短,適合作為突發(fā)污染擴散事件時的應(yīng)急處置決策輔助。
項目需求
01 課題名稱
基于數(shù)據(jù)驅(qū)動的污染物擴散深度學(xué)習(xí)模型案例
02 課題需求
外部單位提供數(shù)據(jù)集,總數(shù)據(jù)集詳細(xì)描述:120 個動圖數(shù)據(jù)(3 個風(fēng)速*5 個釋放源點位 * 8 個風(fēng)向)。選取其中任意 1 個動圖的數(shù)據(jù),基于數(shù)據(jù)驅(qū)動類模型(模型不限制)提取數(shù)據(jù)特征,得到污染物擴散模型,可對污染物擴散進(jìn)行預(yù)測。
實現(xiàn)過程
01 數(shù)據(jù)集
我們選擇了風(fēng)速 15m/s,風(fēng)向正北,Pos_0 作為污染源釋放點的動圖數(shù)據(jù),數(shù)據(jù)來源于某城區(qū) 3km*3km 范圍的固定區(qū)域內(nèi)污染物擴散 CFD 模擬結(jié)果(南京歐帕提亞公司提供),共 745 秒 148 張污染物濃度云圖,兩張圖片時間間隔 5 秒。
基于飛槳 2.4.0 的開發(fā)環(huán)境,在對動圖解壓之后,我們發(fā)現(xiàn)動圖解壓得到的 181 張靜態(tài)圖片中第 148 張之后的圖片存在明顯的圖像抖動。我們采用了基于 Harris 角點檢測的圖像對齊算法進(jìn)行處理,但是圖像抖動沒有得到完全消除。為了保證模型輸入數(shù)據(jù)的質(zhì)量,我們丟棄了第 148 張之后的靜態(tài)圖片。


02 U-Net 網(wǎng)絡(luò)模型
網(wǎng)絡(luò)模型如圖 2 所示,其由 3 個 Encoder/Decoder、9 個卷積 Conv、9 個反卷積 Conv-T 組成,約 30 萬個訓(xùn)練參數(shù)。之所以選擇 U-Net,是因為該網(wǎng)絡(luò)在圖像分割和目標(biāo)識別中應(yīng)用廣泛,污染物擴散模式學(xué)習(xí)可以看作是一種動態(tài)的目標(biāo)識別任務(wù),只不過目標(biāo)的形態(tài)比較抽象;另一個原因是 U-Net 的代碼實現(xiàn)較簡單,短時間內(nèi)可以完成網(wǎng)絡(luò)的搭建。

03 核心代碼
04 訓(xùn)練
訓(xùn)練時輸入數(shù)據(jù)為上一時刻的污染物云圖,輸出為預(yù)測的下一時刻的污染物云圖。當(dāng)前的訓(xùn)練 batch-size 為 1,即只預(yù)測下一時刻的污染物擴散情況。訓(xùn)練時,每 10 個 epoch 保存一次模型,防止訓(xùn)練意外中斷時模型參數(shù)丟失。
05 預(yù)測
預(yù)測時,輸入測試數(shù)據(jù)某時刻的污染物擴散云圖,預(yù)測下一時刻的污染物擴散情況。測試函數(shù)中 supervise 這個 flag 為后續(xù)連續(xù)預(yù)測多個時刻的數(shù)據(jù)預(yù)置了接口。目前 supervise 置為 true,當(dāng)模型預(yù)備連續(xù)預(yù)測多個時刻數(shù)據(jù)時,測試時將 supervise 置為 false。
項目成果



對比如圖 5 所示,濃度誤差主要集中在污染源附近(如圖紅色框),主要數(shù)值分布在-0.02~0.02 之間。不同顏色分別代表不同濃度區(qū)間誤差,藍(lán)色表示的低濃度相對誤差較小,綠色紅色表示的中高濃度誤差平均誤差較高,綠色區(qū)域表征的中等濃度區(qū)域,偏大的誤差影響的面積較大。

未來發(fā)展方向
01 預(yù)測能力方面
基于前一時刻的污染物濃度云圖,預(yù)測后十個時刻、二十個時刻,四十個時刻的污染物濃度云圖;
嘗試用多時刻預(yù)測多時刻。
02 網(wǎng)絡(luò)方面
嘗試引入更先進(jìn)的網(wǎng)絡(luò)架構(gòu),如 transformer;
對于網(wǎng)絡(luò)層數(shù)和每層網(wǎng)絡(luò)的神經(jīng)元個數(shù),嘗試進(jìn)行敏感性分析和誤差分析;
嘗試引入更多種類的激活函數(shù)如 tanh,silu 等;
嘗試對 learning rate、batch size 等超參數(shù)進(jìn)行調(diào)整實驗。
03 物理原理方面
嘗試引入物理先驗知識,對建筑、邊界位置施加 loss 軟約束;
嘗試?yán)昧黧w NS 方程對模型進(jìn)行修正。
04 模型方面
嘗試引入更多參數(shù)作為輸入:如污染源位置、污染源初始濃度等提高模型的適應(yīng)能力;
增加模型參數(shù)量級,探索大模型對復(fù)雜多態(tài)問題的處理能力;
嘗試和傳統(tǒng)流體求解方法進(jìn)行融合。
項目意義與心得
本項目嘗試用 U-Net 網(wǎng)絡(luò)通過污染物擴散云圖來學(xué)習(xí)污染物擴散的模型參數(shù),對污染物擴散進(jìn)行快速預(yù)測,是數(shù)據(jù)驅(qū)動計算場景拓展的一次探索。從項目結(jié)果來看,模型計算速度相比 CFD 模擬提升明顯,但是模型預(yù)測的效果還有待提升,未來將通過探索以上幾個方向,不斷優(yōu)化模型預(yù)測效果。項目實現(xiàn)過程中,我們花費了大量的時間處理背景存在抖動的圖像,直到后來發(fā)現(xiàn)有一部分?jǐn)?shù)據(jù)集的質(zhì)量要遠(yuǎn)遠(yuǎn)好于另一部分,我們選擇放棄質(zhì)量不好的數(shù)據(jù),從而加快了項目的進(jìn)展。
數(shù)據(jù)處理過程中有以下幾個方面的心得。
第一,對項目的數(shù)據(jù)應(yīng)該第一時間進(jìn)行全局探索,了解數(shù)據(jù)的全貌,對數(shù)據(jù)質(zhì)量進(jìn)行評估;
第二,與其花費大量的時間處理質(zhì)量不好的數(shù)據(jù),不如先使用質(zhì)量較好的數(shù)據(jù),優(yōu)先做對模型取得進(jìn)展更加關(guān)鍵的事情;
第三,相對于改變模型的結(jié)構(gòu),提高輸入數(shù)據(jù)的質(zhì)量對模型的訓(xùn)練結(jié)果起到更加積極的作用。一些開源模型的效果無法復(fù)現(xiàn)的原因在于訓(xùn)練數(shù)據(jù)的不公開,即便大家都用到同樣結(jié)構(gòu)的網(wǎng)絡(luò),但是訓(xùn)練數(shù)據(jù)不同,模型取得的效果就大不相同。從這個角度看,模型參數(shù)是訓(xùn)練數(shù)據(jù)在網(wǎng)絡(luò)上留下的壓縮信息,訓(xùn)練數(shù)據(jù)存在的瑕疵很難通過優(yōu)化網(wǎng)絡(luò)來解決。
飛槳 AI for Science 共創(chuàng)計劃為本項目提供了強大的技術(shù)支持,打造活躍的前瞻性的 AI for Science 開源社區(qū),通過飛槳 AI for Science 共創(chuàng)計劃,學(xué)習(xí)到了如何在飛槳平臺上使用科學(xué)計算的 AI 方法去解決 CFD 模擬預(yù)測的問題,并且大幅度提高了數(shù)據(jù)驅(qū)動計算的速度。相信未來會有越來越多的項目通過 AI for Science 共創(chuàng)計劃建立產(chǎn)學(xué)研閉環(huán),推動科研創(chuàng)新與產(chǎn)業(yè)賦能。