使用機器學習進行災害應變:afetharita 專案
在 2023 年 2 月 6 日襲擊土耳其東南部的地震之後,一群志工開發了 afetharita(災害地圖),這是一款旨在協助搜救團隊透過將非結構化的社群媒體貼文轉換為可行資料,以定位倖存者的應用程式。此項工作利用 Hugging Face 生態系統在極短的時間內進行原型設計、協作與部署救命的機器學習工具。
從社群媒體提取倖存者資訊
志工建立了一條管線,將螢幕截圖與推文轉換為結構化資料,包括姓名、電話號碼與地址,並將這些資訊提供給當局。
OCR 與資訊抽取
為了處理文字訊息與推文的螢幕截圖,團隊使用 easyocr 進行光學字符辨識(OCR)並以 Gradio 建置使用者介面。提取出的文字隨後使用微調過的基於 transformers 的命名實體辨識(NER)模型進行解析,以識別關鍵個人資訊。
地址抽取與地理編碼
針對文字形式的求救訊息,團隊開發了一個以 bert-base-turkish-cased 為基礎模型的標記分類地址抽取模型。工作流程如下:
- 抽取:NER 模型從原始推文中抽取地址。
- 地理編碼:抽取的地址被送至地理編碼 API,以取得經緯度。
- 視覺化:地理位置資料在前端地圖上顯示,以指引救援團隊。
為了減少 DevOps 負擔,團隊使用 Hugging Face Inference API 進行模型服務,省去手動建立 Docker 映像與部署雲端實例的需求。
倖存者需求的意圖分類
為了辨識具體需求(如庇護、食物或物流),團隊嘗試了多種方法:
- Zero‑Shot 與 Few‑Shot 學習:最初測試使用開源 NLI 模型,如
xlm-roberta-large-xnli與convbert-base-turkish-mc4-cased-allnli_tr。相較於生成式模型,NLI 模型因能推斷候選標籤且避免模型「捏造」標籤的風險而被優先採用。 - 微調:團隊最終對 BERT 模型進行微調,發現
bert-base-turkish-uncased與bert-base-turkish-128k-cased的表現優於bert-base-turkish-cased。 - 最佳化:因類別不平衡,團隊優先消除偽陰性,著重於召回率與 F1 分數。他們建立了 Hugging Face Space,使用特定的 metadata 標籤(
deprem-clf-v1)對模型進行基準測試,以排序表現並為每個標籤決定最佳閾值。
主動學習與大型語言模型
為了精進 NER 模型,團隊使用 Argilla 與 Gradio 建立了群眾標註介面,讓使用者能將輸出標記為正確、錯誤或模糊。此外,另一組團隊透過提示工程使用生成式模型,以自由文字抽取細緻需求,指出使用 LLM 進行 few‑shot 提示在快速應對資料漂移且不需新標註資料時非常有效。
遙感用於災害評估
為了克服缺乏電力與穩定行動網路的困境,志工利用衛星影像評估建築與基礎設施的損毀情況。
衛星資料收集與處理
影像來自 Planet Labs、Maxar 與 Copernicus Open Access Hub。為了方便訓練,將 1080×1080 的衛星影像裁切成 640×640 的區塊。
模型部署
團隊對多個模型進行微調,以執行建築偵測與語意分割:
- 目標偵測:使用 YOLOv5、YOLOv8 與 EfficientNet 進行建築偵測。
- 語意分割:使用
SegFormer模型對建築進行語意分割。
這些應用程式以 Hugging Face Spaces 部署。與 Co-One 等公司合作時,團隊進行了詳細標註,包含 no damage、destroyed、damaged、damaged facility 與 undamaged facility 等標籤,目標是釋出大量開源資料集,以供未來全球災害應變使用。
MLOps 與協作基礎建設
部署速度得益於 Hugging Face Hub 及其整合生態系統:
- 協作:組織帳號允許志工透過 pull request 進行協作。
- CI/CD:CI 機器人提供暫時環境,以在 Hugging Face Spaces 預覽 pull request 的變更。
- 基礎建設:Hugging Face 提供 GPU 補助與額外的 Inference API 複本,確保應用在高流量下仍保持穩定,避免停機。