使用機器學(xué)習(xí)協(xié)助災(zāi)后救援

2023 年 2 月 6 日,土耳其東南部發(fā)生 7.7 級和 7.6 級地震,影響 10 個城市,截至 2 月 21 日已造成 42,000 多人死亡和 120,000 多人受傷。
地震發(fā)生幾個小時后,一群程序員啟動了一個 Discord 服務(wù),推出了一個名為?afetharita?的應(yīng)用程序,字面意思是?災(zāi)難地圖。該應(yīng)用程序?qū)樗丫汝牶椭驹刚咛峁┓?wù),以尋找幸存者并為他們提供幫助。當(dāng)幸存者在社交媒體上發(fā)布帶有他們的地址和他們需要的東西 (包括救援) 的文本截圖時,就需要這樣一個應(yīng)用程序。一些幸存者還在發(fā)布了他們需要的東西,這樣他們的親屬就知道他們還活著并且需要救援。需要從這些推文中提取信息,我們開發(fā)了各種應(yīng)用程序?qū)⑺鼈冝D(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù),并爭分奪秒的開發(fā)和部署這些應(yīng)用程序。
當(dāng)我被邀請到 Discord 服務(wù)時,關(guān)于我們 (志愿者) 將如何運作以及我們將做什么的問題弄得非?;靵y。我們決定協(xié)作訓(xùn)練模型,并且我們需要一個模型和數(shù)據(jù)集注冊表。我們開設(shè)了一個 Hugging Face 組織帳戶,并通過拉取請求進行協(xié)作,以構(gòu)建基于 ML 的應(yīng)用程序來接收和處理信息。

其他團隊的志愿者告訴我們,需要一個應(yīng)用程序來發(fā)布屏幕截圖,從屏幕截圖中提取信息,對其進行結(jié)構(gòu)化并將結(jié)構(gòu)化信息寫入數(shù)據(jù)庫。我們開始開發(fā)一個應(yīng)用程序,該應(yīng)用程序?qū)⑴臄z給定圖像,首先提取文本,然后從文本中提取姓名、電話號碼和地址,并將這些信息寫入將交給當(dāng)局的數(shù)據(jù)庫。在嘗試了各種開源 OCR 工具之后,我們開始使用?easyocrOCR
?部分和?Gradio
?為此應(yīng)用程序構(gòu)建界面。我們還被要求為 OCR 構(gòu)建一個獨立的應(yīng)用程序,因此我們從界面打開了接口。使用基于 transformer 的微調(diào) NER 模型解析 OCR 的文本輸出。

為了協(xié)作和改進該應(yīng)用程序,我們將其托管在 Hugging Face Spaces 上,并且我們獲得了 GPU 資助以保持該應(yīng)用程序的正常運行。Hugging Face Hub 團隊為我們設(shè)置了一個 CI 機器人,讓我們擁有一個短暫的環(huán)境,這樣我們就可以看到拉取請求如何影響 Space,并且?guī)椭覀冊诶≌埱笃陂g審查。
后來,我們從各種渠道 (例如 Twitter、Discord) 獲得了帶有標(biāo)簽的內(nèi)容,其中包括幸存者求救電話的原始推文,以及從中提取的地址和個人信息。我們開始嘗試使用閉源模型的少量提示和微調(diào)來自 transformers 的我們自己的 token 分類模型。我們使用 bert-base-turkish-cased 作為 token 分類的基礎(chǔ)模型,并提出了第一個地址提取模型。
模型地址:
https://hf.co/dbmdz/bert-base-turkish-cased

該模型后來用于 afetharita 提取地址。解析后的地址將被發(fā)送到地理編碼 API 以獲取經(jīng)度和緯度,然后地理定位將顯示在前端地圖上。對于推理,我們使用了 Inference API,這是一個托管模型進行推理的 API,當(dāng)模型被推送到 Hugging Face Hub 時會自動啟用。使用 Inference API 進行服務(wù)使我們免于拉取模型、編寫應(yīng)用程序、構(gòu)建 Docker 鏡像、設(shè)置 CI/CD 以及將模型部署到云實例,這些對于 DevOps 和云團隊來說都是額外的開銷工作以及。Hugging Face 團隊為我們提供了更多的副本,這樣就不會出現(xiàn)停機時間,并且應(yīng)用程序可以在大量流量下保持健壯。

后來,我們被問及是否可以從給定的推文中提取地震幸存者的需求。在給定的推文中,我們獲得了帶有多個標(biāo)簽的數(shù)據(jù),用于滿足多種需求,這些需求可能是住所、食物或物流,因為那里很冷。我們首先開始在 Hugging Face Hub 上使用開源 NLI 模型進行零樣本實驗,并使用閉源生成模型接口進行少量樣本實驗。我們已經(jīng)嘗試過 xlm-roberta-large-xnli 和 convbert-base-turkish-mc4-cased-allnli_tr. NLI 模型非常有用,因為我們可以直接推斷出候選標(biāo)簽,并在數(shù)據(jù)漂移時更改標(biāo)簽,而生成模型可能會編造標(biāo)簽,在向后端提供響應(yīng)時導(dǎo)致不匹配。最初,我們沒有標(biāo)記的數(shù)據(jù),因此任何東西都可以使用。
xlm-roberta-large-xnli
?模型:
https://hf.co/joeddav/xlm-roberta-large-xnliconvbert-base-turkish-mc4-cased-allnli_tr
?模型:
https://hf.co/emrecan/convbert-base-turkish-mc4-cased-allnli_tr
最后,我們決定微調(diào)我們自己的模型,在單個 GPU 上微調(diào) BERT 的文本分類頭大約需要三分鐘。我們進行了標(biāo)記工作來開發(fā)數(shù)據(jù)集去訓(xùn)練該模型。我們在模型卡的元數(shù)據(jù)中記錄了我們的實驗,這樣我們以后就可以出一個 leaderboard 來跟蹤應(yīng)該將哪個模型部署到生產(chǎn)環(huán)境中。對于基本模型,我們嘗試了 bert-base-turkish-uncased 和 bert-base-turkish-128k-cased 并發(fā)現(xiàn)它們的性能優(yōu)于 bert-base-turkish-cased 。你可以在下面的鏈接找到我們的 leaderboard。
bert-base-turkish-uncased
?模型:
https://hf.co/loodos/bert-base-turkish-uncasedbert-base-turkish-128k-cased
?模型:
https://hf.co/dbmdz/bert-base-turkish-128k-casedbert-base-turkish-cased
?模型:
https://hf.co/dbmdz/bert-base-turkish-casedLeaderboard 地址:
https://hf.co/spaces/deprem-ml/intent-leaderboard

考慮到手頭的任務(wù)和我們數(shù)據(jù)類別的不平衡,我們專注于消除假陰性并創(chuàng)建了一個 Space 來對所有模型的召回率和 F1 分?jǐn)?shù)進行基準(zhǔn)測試。為此,我們將元數(shù)據(jù)標(biāo)簽添加?deprem-clf-v1
?到所有相關(guān)模型存儲庫中,并使用此標(biāo)簽自動檢索記錄的 F1 和召回分?jǐn)?shù)以及模型排名。我們有一個單獨的基準(zhǔn)測試集,以避免泄漏到訓(xùn)練集,并始終如一地對我們的模型進行基準(zhǔn)測試。我們還對每個模型進行了基準(zhǔn)測試,以確定每個標(biāo)簽的最佳部署閾值。
我們希望對我們的命名實體識別模型進行評估,并發(fā)起了眾包努力,因為數(shù)據(jù)標(biāo)記者正在努力為我們提供更好和更新的意圖數(shù)據(jù)集。為了評估 NER 模型,我們使用?Argilla
?和?Gradio
搭建了一個標(biāo)注界面,人們可以輸入一條推文,并將輸出標(biāo)記為正確/不正確/模糊。

后來,數(shù)據(jù)集被去重并用于基準(zhǔn)測試我們的進一步實驗。
機器學(xué)習(xí)團隊中的另一個小組使用生成模型 (通過門控 API) 來獲取特定需求 (因為標(biāo)簽過于寬泛) 的自由文本,并將文本作為每個帖子的附加上下文傳遞。為此,他們進行了提示工程,并將 API 接口包裝為單獨的 API ,并將它們部署在云端。我們發(fā)現(xiàn),使用 LLM 的少樣本提示有助于在快速發(fā)展的數(shù)據(jù)漂移存在的情況下適應(yīng)細(xì)粒度的需求,因為我們需要調(diào)整的唯一的東西是提示,而且我們不需要任何標(biāo)記的數(shù)據(jù)。
這些模型目前正在生產(chǎn)中使用,以創(chuàng)建下面熱圖中的點,以便志愿者和搜救團隊可以將需求帶給幸存者。

我們已經(jīng)意識到,如果沒有 Hugging Face Hub 和其生態(tài)系統(tǒng),我們將無法如此快速地協(xié)作、制作原型和部署。下面是我們用于地址識別和意圖分類模型的 MLOps 流水線。

這個應(yīng)用程序及其各個組件背后有數(shù)十名志愿者,他們不眠不休地工作以在如此短的時間內(nèi)就完成了。
遙感應(yīng)用
其他團隊致力于遙感應(yīng)用,以評估建筑物和基礎(chǔ)設(shè)施的損壞情況,以指導(dǎo)搜索和救援行動。地震發(fā)生后的最初 48 小時內(nèi),電力和移動網(wǎng)絡(luò)都沒有穩(wěn)定,再加上道路倒塌,這使得評估損壞程度和需要幫助的地方變得極其困難。由于通訊和運輸困難,搜救行動也因建筑物倒塌和損壞的虛假報告而受到嚴(yán)重影響。
為了解決這些問題并創(chuàng)建可在未來利用的開源工具,我們首先從 Planet Labs、Maxar 和 Copernicus Open Access Hub 收集受影響區(qū)域的震前和震后衛(wèi)星圖像。

我們最初的方法是快速標(biāo)記衛(wèi)星圖像以進行目標(biāo)檢測和實體分割,并使用“建筑物”的單一類別。目的是通過比較從同一地區(qū)收集的震前和震后圖像中幸存建筑物的數(shù)量來評估損壞程度。為了更容易訓(xùn)練模型,我們首先將 1080x1080 的衛(wèi)星圖像裁剪成更小的 640x640 塊。接下來,我們微調(diào)了用于建筑物檢測的 YOLOv5、YOLOv8 和 EfficientNet 模型以及用于建筑物語義分割的 SegFormer 模型,并將這些應(yīng)用部署到 Hugging Face Spaces。
YOLOv5
:
https://hf.co/spaces/deprem-ml/deprem_satellite_testSegFormer
:
https://hf.co/spaces/deprem-ml/deprem_satellite_semantic_whu

同樣,數(shù)十名志愿者致力于標(biāo)記、準(zhǔn)備數(shù)據(jù)和訓(xùn)練模型。除了個人志愿者外,像 Co-One 這樣的公司也自愿為衛(wèi)星數(shù)據(jù)進行更詳細(xì)的建筑和基礎(chǔ)設(shè)施注釋標(biāo)記,包括?無損傷、被摧毀、受損、受損設(shè)施?和?未受損設(shè)施?標(biāo)簽。我們當(dāng)前的目標(biāo)是發(fā)布一個廣泛的開源數(shù)據(jù)集,以便在未來加快全球的搜救行動。
Co-One
:
https://co-one.co/
總結(jié)
對于這種極端應(yīng)用案例,我們必須迅速行動,并優(yōu)化分類指標(biāo),即使 1% 的改進也很重要。在此過程中有許多倫理討論,因為甚至選擇要優(yōu)化的指標(biāo)也是一個倫理問題。我們已經(jīng)看到了開源機器學(xué)習(xí)和民主化是如何使個人能夠構(gòu)建挽救生命的應(yīng)用程序。
我們感謝 Hugging Face 社區(qū)發(fā)布這些模型和數(shù)據(jù)集,以及 Hugging Face 團隊提供的基礎(chǔ)架構(gòu)和 MLOps 支持。
原文:?https://hf.co/blog/using-ml-for-disasters
作者: Merve Noyan、Alara Dirik
譯者: innovation64(李洋)
審校: zhongdongy (阿東)