造福社會工科生:如何用機器學習打造空氣檢測APP?
像德里這樣的大城市可能會遭受空氣汙染,尤其在冬季。如「清晨寒冷的德里,空氣質量依然很糟糕」這樣的標題常會出現在報紙頭條。冬季空氣質量差會導致霧霾產生,這會限制市民的戶外活動,誘發健康問題。
使用手機評估 PM 2.5
作為工科生,我們努力用科技造福社會。解決空氣汙染問題的關鍵第一步是讓市民能夠自己監測空氣質量。
這可以通過汙染感測器實現,但是大規模部署該感測器成本高昂。我們的目標是設計一個可靠、價格公道的空氣質量評估解決方案,讓每個人可以直接用智慧手機實現。
《Particle Pollution Estimation Based on Image Analysis》等研究表明,通過使用相機影象,可以有效地利用機器學習來評估空氣質量,儘管以前的研究通常侷限於靜態相機的影象。
我們的目標是開發基於 Android 的移動應用程式,利用智慧手機相機影象提供本地的實時空氣質量評估。來自 Marconi Society 的 Celestini Project India 給了我們很大的啟發,併為我們提供了在德里印度理工學院(IIT Delhi)實習的機會,以及開發所需的資源。
應用程式執行 demo
我們研究的重點是用「PM 2.5」(直徑不大於 2.5 微米的顆粒)來預測空氣質量。為了將結果視覺化,我們預測 PM 2.5 值並將其對映到顏色漸變的空氣質量指數(AQI)表中。這是每個國家政府制定的標準,然後根據 AQI 值預警。
使用TensorFlowLite 預測空氣質量
我們開發的應用程式從手機相機收集影象,然後在裝置上利用 Tensorflow Lite 處理影象,得到 AQI 估計。在開發應用程式之前,我們在雲上訓練了 AQI 評估模型。在 Android 應用程式中,使用 Firebase ML Kit 能自動下載該模型。
下面將詳細描述該系統:
-
移動應用程式。用於獲取影象和預測 AQI 值。應用程式可以在手機上處理影象。
-
TensorFlowLite 用低精度的資料型別進行計算(當頻寬受限時,對下載速度有優勢),用訓練好的機器學習模型在手機上進行推理。
-
Firebase。從影象中提取的(如下圖所示)將傳送到 Firebase。每當新使用者使用該 APP 時,都會為其建立一個唯一的 ID。這可以用於以後為不同地理位置的使用者定製機器學習模型。
-
Amazon EC2。我們使用這些引數和來自地理位置的 PM 值訓練當前模型。
-
ML Kit。訓練好的模型被託管至 ML Kit 上,並自動載入到裝置上,然後使用TensorFlowLite 執行。
兩個模型
下面將介紹關於如何分析影象以預測 AQI 的更多細節。我們訓練了兩個基於影象的機器學習模型來構建應用程式:第一個模型根據使用者上傳照片的特徵預測 AQI,第二個模型過濾掉不包含天空區域的影象。
AQI 模型
我們利用以下特徵根據使用者照片預測 AQI。這些特徵通過傳統的影象處理技術提取,然後由線性模型結合。第二個模型(稍後討論)直接處理影象,這在深度學習中很常見。
傳輸:描述場景衰減和經過空氣粒子反射後進入手機攝像頭的光量。公式如下:
其中 I 是觀察到的模糊影象,t 是從場景到相機的傳輸,J 是場景亮度,A 是 airlight 顏色向量。
利用暗通道的概念發現了單個模糊影象的傳輸,暗通道假設所有室外影象中至少有一個顏色通道存在為零或極低的畫素。對於無霧影象 J,暗通道是:
其中 Jc 是 J 的顏色通道之一,Ω(x) 是集中在 x 附近的區域性影象塊。利用天空或最亮區域可以估計出 airlight,所以可以得到傳輸:
其中 Ic(y)/A 是由 airlight A 歸一化的模糊影象,右邊第二項是歸一化模糊影象的暗通道。
天空藍度:此特徵有點類似於我們觀察天空來判斷汙染。如果天空是灰色的,我們認為今天空氣質量差。藍度估計利用 RGB 分割來估算。
天空梯度:天空可能因雲層覆蓋而呈現灰色,因此考慮到這種可能性,我們加入該項特徵。通過製作天空區域的掩模來計算梯度,然後計算該區域的拉普拉斯運算元。
熵,RMS 對比度:這些特徵告訴我們影象中包含的細節。如果有空氣汙染,影象會丟失細節。RMS 對比度被定義為影象畫素強度的標準差。RMS 對比度的等式如下:
式中,Iij 是大小為 MxN 的影象畫素 (i,j) 處的強度,avg(I) 是影象所有畫素的平均強度。因此,對比度和 PM 2.5 成反比關係。可使用以下公式估算熵:
其中 pi 是畫素強度等於 i 的概率,M 是影象的最大強度。隨著 PM 濃度增加,影象逐漸失去其細節,並且影象熵降低。因此,它與 PM 2.5 成反比關係。
溼度:通過研究可知,空氣越潮溼,汙染程度越高,因為 PM 2.5 會吸收水分並降低能見度。
Skyline 模型
最開始釋出應用程式時,人們好奇它是否能夠用來預測室內外的 AQI。我們的模型能夠預測影象是否包含至少 50%的天空區域,並且通過二元分類器接受超過 50% 的影象。
我們利用建立了這個分類器,並使用TensorFlowHub 在我們標記的資料集上重新訓練了模型。資料集由兩類組成:500 張天空區域為 50% 的影象,540 張不包含天空區域(或低於 50%)的影象。這些影象的場景包括房間、辦公室、花園、室外等。我們使用MobileNet0.50 架構並在 100 個未見過的樣本上進行測試,準確率達 95%。TF for Poets 有助於影象再訓練。
再訓練模型的混淆矩陣如下:
左:天空區域大於 50% 的影象。右:天空區域小於 50% 的影象。
為每個使用者自定義模型
我們意識到每個使用者都需要自定義的 ML 模型,因為每個智慧手機的相機規格不同,為了訓練這樣的模型,我們收集了每個使用者的影象。
我們決定結合兩個模型的結果,其中一個是基於影象的模型,一個是使用氣象引數的時間模型。在基於影象的機器學習模型進行訓練時,使用氣象引數的時間模型有助於實現更高的推理精度,為使用者提供一定結果。而基於影象的機器學習模型幫助我們為特定使用者自定義模型;從而通過減少估計誤差,提高推理精度。
為每個使用者建立一個小型訓練資料集,需要從 7 張影象中提取特徵並用於訓練。影象必須是連續 7 天的,其中一半的影象包含天空,沒有太陽或其它直接光源。從影象中提取特徵後,利用特徵訓練迴歸模型。該模型是線性的,因為所有影象特徵或多或少與 PM 2.5 值成線性比例。
在建立訓練資料集和模型之後,再建立用於測試的第二組影象。一旦資料集具有 7 天的影象特徵,測試就開始了。如果 7 天的訓練 RMSE 小於 5,則模型將被凍結併發送到 ML Kit,ML Kit 可以從應用程式中下載。如果 RMSE 不小於 5,則會收集更多的訓練資料。
影象特徵與 PM 2.5 的關係
氣象引數
此外,我們還利用氣象資料,用時間模型基於最近位置的歷史 AQI 來預測 AQI,時間模型補充了基於影象的模型,提高了推斷的準確性。我們從 2015 年至 2017 年的政府網站收集了德里的氣象資料集,利用 LASSO 優化進行嶺迴歸,選擇影響 PM 2.5 水平的關鍵引數。選擇的關鍵引數是:前一小時的 PM 2.5 濃度,各種氣體的濃度,如二氧化氮、二氧化硫、臭氧和露點。然後將資料分開進行訓練和測試。我們使用 2015 年 1 月至 2017 年 1 月的資料進行訓練。使用 2017 年 1 月至 2017 年 6 月的資料進行測試。我們在資料集上的準確率達到了 90%。
折線圖表示 21 天內 3 個模型給出的 RMS 誤差值
以下程式碼有助於我們在 Android 上使用 TFLite。下一個挑戰是為每個使用者託管基於自適應影象建立的模型。為了解決這個問題,我們通過 Firebase ML Kit 找到了一個有趣的解決方案。它允許自定義和自適應的 ML 模型託管在雲端和裝置上。
程式碼地址:https://codelabs.developers.google.com/codelabs/tensorflow-for-poets-2-tflite/#0
展望未來
我們打算在未來對此應用進行以下改進:
-
生成夜間拍攝照片的結果。
-
擴充套件到其它城市。
-
使模型在各種天氣條件下都具有魯棒性。
-
我們開展這個專案的目的是提高人們對汙染的意識。我們希望隨著時間的推移,大家都能積極採取措施,共同提高空氣質量。
-
Air Cognizer 應用程式可以從 Play 商店中搜索獲得。
原文連結:https://medium.com/tensorflow/air-cognizer-predicting-air-quality-with-tensorflow-lite-942466b3d02e