Scancam 使用 ML.NET 來防範燃料竊取
Scancam 是一個防護損失公司。其中一個主要產品是針對燃料提供者的防燃料盜竊解決方案,可提供用於預防及管理燃料失竊的端對端解決方案,包括債務復原。
商務問題
油竊每年使澳洲的燃料零售部門損失數百萬美元的成本。在澳洲的加油站,客戶會先加油,然後再付費。有些駕駛還未支付燃料就會開走,還有些駕駛會發現自己忘了帶錢包,或沒有足夠的金錢可支付剛加完的燃料。這些落跑的情況給燃料零售商帶來了成千上萬的損失。
Scancam 的解決方案使用車牌辨識技術來偵測位於加油站油泵的車輛,並針對已知違規者 (在他們的網路中積欠任一個加油站款項的人) 提供警示。它也包含一個設施可報告能源竊取、自動事件片段產生、線上付款和債務催收。
為什麼要使用 ML.NET?
Scancam 主要是 .NET 商店。在 ML.NET 之前,公司在執行 Python 程式碼的個別 Docker 容器上執行物件偵測。當自訂視覺新增物件偵測模型的匯出時,Scancam 會移植到 ML.NET,讓公司能夠在與應用程式相同的 codebase 中主持機器學習元件。
Scancam 從現場最小邊緣裝置到雲端都可執行 #C 程式碼。他們可以在其解決方案中的任何元件上使用熟悉的相同 C# 語言及工具,並且可以輕鬆地將程式碼從雲端移到邊緣 (例如,從 Azure Functions 移到在 ARM32 裝置上執行的 ASP.NET Core 容器影像),反之亦然。
ML.NET 的影響
ML.NET 提供 Scancam 輕鬆移動其程式碼執行位置 (即邊緣裝置、行動裝置或雲端) 的彈性。產生的 ML.NET 物件偵測功能已讓 Scancam 的頻寬需求下限達 35%,進而降低其雲端計算需求,同時異常偵測元件將主動監視數百個裝置。
ML.NET 可讓我們使用與其他所有專案相同的語言與工具,來編寫 ML 元件的程式碼並提高生產力。ML.NET 為初學的開發人員提供了最容易的跳點,讓他們開始將機器學習整合到我們的應用程式中。」
由於從偵測到車輛那一刻到駕駛員能夠開始踩油門的這段時間很有限 (5-7 秒),ML.NET 允許 Scancam 將物件偵測新增到其處理管線,預測平均約需 300 毫秒,對效能幾乎沒有任何影響。
解決方案架構
Scancam 的技術堆疊由 iOS 上的 ML.NET、ASP.NET Core、Xamarin 以及 Azure (App Service、Azure Functions、Azure 服務匯流排、Azure 儲存體、Azure Cosmos DB、SignalR、Azure SQL Database) 組成 。
當車輛駕駛到加油站時,相機會向在' Docker 的 ASP.NET Core 上執行的 HTTP 端點觸發事件。接下來系統會首先使用 ML.NET 偵測存在的車輛,然後偵測這些車輛上顯示的車牌。它們接著會使用個別的車牌辨識技術來掃描車牌號碼與字母,並將其傳送給 Azure Function 以觸發剩餘 Azure 為主的雲端處理管線,包括將車牌與已知違規者的資料庫進行交叉檢查,並透過 SignalR 將偵測到的車牌轉播到 iPad 和電視顯示器。
用戶端應用程式
主要使用者應用程式是 Xamarin 應用程式,會由加油站服務人員在 iPad 上使用。此應用程式會顯示每個油泵上偵測到的所有車牌,如果車牌在已知的違規者資料庫中,則顯示警示。這可讓主機操作員避免供應油料,並要求客戶先預付油料再啟用油泵。
物件偵測
Scancam 使用的多數相機都仰賴動作偵測來偵測進入和離開燃料泵區域的車輛。它們每天會從數百部相機取得數十萬個事件。由於加油站非常忙碌,Scancam 可能取得大量誤報的觸發程序。這些誤報觸發程序會導致不必要的事件,而需要處理車牌辨識,進而耗用加油站許多的有限可用網際網路頻寬。
為了減少需要傳送至雲端進行處理的事件數,Scancam 會使用 Azure 自訂視覺來訓練物件偵測模型,以偵測是否有車輛存在,以及影像中的車輛牌照區域是否可見,並以 ONNX 格式匯出模型。它們會使用模型與邊緣裝置上的 ML.NET 來預先處理相機事件,然後再傳送到雲端以進行進一步處理。
異常偵測
Scancam 也正在為異常偵測執行 ML.NET,以偵測相機事件中的峰值 (例如,不正確的移動觸發區域、觸發閥值過低) 和谷值 (例如,相機偏離位置、被封鎖、不正確的曝光設定),這是監視相機安裝健康情況的一部分。此偵測讓 Scancam 輕輕鬆鬆即可精準找出數百個相機的潛在問題,而無須手動搜尋記錄檔。
影像分類
Scancam 也在規劃為其 ML.NET 解決方案新增車輛品牌及型號識別。
準備開始了嗎?
我們的逐步教學課程可協助您讓 ML.NET 在電腦上執行。