資料介紹
描述
介紹
汽車行業(yè)是采用尖端技術的先驅之一,機器學習也不例外。借助 ML 解決方案,工程師現在可以構建神經網絡來檢測各種汽車缺陷和破損。在本文中,我想展示從業(yè)者如何輕松應用 TinyML 方法,在原始微型設備上創(chuàng)建和部署基于 AI 的解決方案,以預測與氣壓系統(tǒng) (APS) 相關的卡車故障。
作為重型車輛的重要組成部分,APS 產生的加壓空氣用于卡車的各種功能,例如制動和換檔,因此及時的故障檢測可以減少停機時間和故障花費的總成本高達在一定程度上,還簡化了對司機和員工的卡車檢查過程,使其不易出錯。
業(yè)務約束
- 延遲:獲取數據后進行預測所花費的時間必須相當短,以避免不必要的維護時間和成本增加。
- 設備成本:擁有沉重的 GPU,昂貴的邊緣設備會增加不必要的維護成本。相反,重點應該放在更好的傳感器和具有更高準確性和低內存占用的定制 AutoML/TinyML 解決方案上。
- 錯誤分類的成本:錯誤分類的成本非常高,特別是如果錯誤地分類了正類數據點,因為它可能導致卡車完全故障并產生一些嚴重的成本。
使用的技術
- Neuton TinyML:Neuton 是一個基于專利神經網絡框架的無代碼平臺。我為我的實驗選擇了這個解決方案,因為它可以免費使用并自動創(chuàng)建微型機器學習模型,甚至可以在 8 位 MCU 上部署。根據 Neuton 開發(fā)人員的說法,您可以在一次迭代中創(chuàng)建一個緊湊的模型,而無需壓縮。
- Raspberry Pi Pico:該芯片采用兩個 ARM Cortex-M0 + 內核,133 兆赫,安裝在芯片上時還與 256 KB 的 RAM 配對。該器件支持高達 16 MB 的片外閃存,具有一個 DMA 控制器,包括兩個 UART 和兩個 SPI,以及兩個 I2C 和一個 USB 1.1 控制器。該器件接收16個PWM通道和30個GPIO針,其中4個適合模擬數據輸入。并帶有 4 美元的凈價格標簽。
讓我們構建它
本教程的目標是演示如何輕松構建緊湊的 ML 模型來解決二進制分類任務,其中正類意味著卡車中的問題是由于 APS 中的故障而負類意味著其他問題。
在我們的案例中,我們使用了使用斯堪尼亞卡車在日常使用中獲取的讀數(由斯堪尼亞自己收集和提供)制成的數據集。由于專有原因,所有功能的名稱都是匿名的。此案例研究的數據集可在此處找到:https ://archive.ics.uci.edu/ml/datasets/APS+Failure+at+Scania+Trucks
該實驗將在 4 美元的 MCU 上進行,沒有云計算碳足跡 :)
數據集描述
數據集分為兩部分,一個訓練集和一個測試集。訓練集包含60, 000 行,而測試集包含16, 000 行。數據集中有 171 列,其中之一是數據點的類標簽,每個數據點有 170 個特征。
第 1 步:創(chuàng)建新解決方案并在 Neuton TinyML 平臺上上傳數據集
登錄到 Neuton 帳戶后,您應該有一個解決方案主頁,單擊添加新解決方案按鈕。
創(chuàng)建解決方案后,如上所示,繼續(xù)上傳數據集(請記住,當前支持的格式僅為 CSV)。
為每個預測選擇目標變量或所需的輸出。在這種情況下,我們將類作為輸出變量:0 表示“負”,1 表示“正”
第 2 步:模型訓練和參數
由于我們要將模型嵌入到微型 MCU 中,因此我們需要相應地設置參數。Raspberry Pico 可以運行 32 位操作并將 歸一化類型設置為Unique Scale for Each Feature
點擊開始訓練,由于數據集很大,訓練可能需要更長的時間,對我來說,大約需要 6 個小時。同時,您可以查看數據處理完成后生成的探索性數據分析,請查看以下視頻:
- 在訓練期間,您可以通過觀察模型狀態(tài)(“一致”或“不一致”)和目標指標值來監(jiān)控實時模型性能。
我的目標指標是:AUC 0.987415 ,訓練后的模型具有以下特征:
系數數 = 278,嵌入文件大小 = 3.074 Kb 。太酷了!
第 3 步:在 Raspberry Pico 上進行預測和嵌入
在 Neuton ai 平臺上,單擊Prediction選項卡,然后單擊Model for Embedding旁邊的Download按鈕,這將是我們將用于我們的設備的模型庫文件。
下載模型文件后,就可以添加我們的自定義函數和操作了。我正在使用 Arduino IDE 對 Raspberry Pico 進行編程
為 Raspberry Pico 設置 Arduino IDE:
我在本教程中使用了 Ubuntu,但相同的說明應該適用于其他基于 Debian 的發(fā)行版,例如 Raspberry Pi OS。
1. 打開終端,使用 wget 下載官方 Pico 設置腳本。
$ wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh
2.在同一終端修改下載的文件,使其可執(zhí)行。
$ chmod +x pico_setup.sh
3.運行 pico_setup.sh開始安裝過程。如果出現提示,請輸入您的 sudo 密碼。
$ ./pico_setup.sh
4.下載 Arduino IDE并將其安裝在您的機器上。
5. 打開終端并將您的用戶添加到“撥出”組。該組可以與 Arduino 等設備進行通信。使用“$USER”將自動使用您的用戶名。
$ sudo usermod -a -G dialout “$USER”
6.注銷或重新啟動計算機以使更改生效。
7.打開 Arduino 應用程序并轉到 File >> Preferences 。
8. 在附加板的管理器中添加此行并單擊 OK 。
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
9.轉到工具>>板>>板管理器。
10.在搜索框中輸入“pico”,然后安裝樹莓派 Pico/RP2040 板。這將觸發(fā)另一個大下載,大小約為 300MB。
注意:由于我們要對測試數據集進行分類,我們將使用 Neuton 提供的 CSV 實用程序對通過 USB 發(fā)送到 MCU 的數據進行推理。
這是我們的項目目錄,
user@desktop:~/Desktop/APS_Failure_detection$ tree
.
├── application.c
├── application.h
├── APS_Failure_detection.ino
├── checksum.c
├── checksum.h
├── model
│ └── model.h
├── neuton.c
├── neuton.h
├── parser.c
├── parser.h
├── protocol.h
├── StatFunctions.c
└── StatFunctions.h
1 directory, 13 files
校驗和、解析器程序文件用于使用 CSV 串行實用工具生成握手并將列數據發(fā)送到 Raspberry Pico 進行推理。
[秘密提示:如果您訓練類似的二進制分類模型,只需替換model.h文件并相應修改 * .ino文件即可通過 USB 串行在 CSV 數據集上運行運行推理] 請參見下面的引腳連接
了解APS_Failure_detection.ino文件中的代碼部分,我們設置了不同的回調來監(jiān)控推理時使用的 CPU、時間和內存使用情況。
void setup() {
Serial.begin(230400);
while (!Serial);
pinMode(LED_RED, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
digitalWrite(LED_RED, LOW);
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_GREEN, LOW);
callbacks.send_data = send_data;
callbacks.on_dataset_sample = on_dataset_sample;
callbacks.get_cpu_freq = get_cpu_freq;
callbacks.get_time_report = get_time_report;
init_failed = app_init(&callbacks);
}
真正的魔法發(fā)生在這里callbacks.on_dataset_sample=on_dataset_sample
static float* on_dataset_sample(float* inputs)
{
if (neuton_model_set_inputs(inputs) == 0)
{
uint16_t index;
float* outputs;
uint64_t start = micros();
if (neuton_model_run_inference(&index, &outputs) == 0)
{
uint64_t stop = micros();
uint64_t inference_time = stop - start;
if (inference_time > max_time)
max_time = inference_time;
if (inference_time < min_time)
min_time = inference_time;
static uint64_t nInferences = 0;
if (nInferences++ == 0)
{
avg_time = inference_time;
}
else
{
avg_time = (avg_time * nInferences + inference_time) / (nInferences + 1);
}
// add your functions to respond to events based upon detection
switch (index)
{
case 0:
//Serial.println("0: No Failure");
digitalWrite(LED_GREEN, HIGH);
break;
case 1:
//Serial.println("1: APS Failure Detected");
digitalWrite(LED_RED, HIGH);
break;
case 2:
//Serial.println("2: Unknown");
digitalWrite(LED_BLUE, HIGH);
break;
default:
break;
}
return outputs;
}
}
return NULL;
}
一旦輸入變量準備就緒,就會調用 neuton_model_run_inference(&index, &outputs)來運行推理并返回輸出。
安裝 CSV 數據集上傳實用程序(目前僅適用于 Linux 和 macOS)
- 安裝依賴,
# For Ubuntu
$ sudo apt install libuv1-dev gengetopt
# For macOS
$ brew install libuv gengetopt
- 克隆這個 repo,
$ git clone https://github.com/Neuton-tinyML/dataset-uploader.git
$ cd dataset-uploader
- 運行 make 構建二進制文件,
$ make
完成后,您可以嘗試運行幫助命令,它應該類似于下圖所示
user@desktop:~/dataset-uploader$ ./uploader -h
Usage: uploader [OPTION]...
Tool for upload CSV file MCU
-h, --help Print help and exit
-V, --version Print version and exit
-i, --interface=STRING interface (possible values="udp", "serial"
default=`serial')
-d, --dataset=STRING Dataset file (default=`./dataset.csv')
-l, --listen-port=INT Listen port (default=`50000')
-p, --send-port=INT Send port (default=`50005')
-s, --serial-port=STRING Serial port device (default=`/dev/ttyACM0')
-b, --baud-rate=INT Baud rate (possible values="9600", "115200",
"230400" default=`230400')
--pause=INT Pause before start (default=`0')
第 4 步:在 Raspberry Pico 上運行推理
在樹莓派上上傳程序,
上傳并運行后,打開一個新終端并運行以下命令:
$ ./uploader -s /dev/ttyACM0 -b 230400 -d /home/vil/Desktop/aps_failures_test.csv
推理已開始運行,一旦完成整個 CSV 數據集,它將打印完整的摘要。
>> Request performace report
Resource report:
CPU freq: 125000000
Flash usage: 2785
RAM usage total: 821
RAM usage: 821
UART buffer: 694
Performance report:
Sample calc time, avg: 1183.0 us
Sample calc time, min: 1182.0 us
Sample calc time, max: 1346.0 us
我還在 Neuton TinyML 平臺上與 Web Prediction 進行了比較,結果相似。另外,我嘗試使用 TensorFlow 和 TensorFlow Lite 構建相同的模型。我用 Neuton TinyML 構建的模型在AUC方面比用TF Lite構建的模型要好14.3% ,在模型大小方面要小 9.7 倍。說到系數的數量,TensorFlow的模型有7個,060個系數,而Neuton的模型只有278個系數(小了25.4倍!)。
因此,得到的模型足跡和推理時間如下:
Raspberry Pico 能夠執(zhí)行使用云上的高性能機器處理的任務,這不是很神奇嗎?
結論
本教程生動地證明了您無需成為數據科學家即可快速構建超緊湊的 ML 模型以主動解決實際挑戰(zhàn)。而且,最重要的是,使用tinyML實現這樣的解決方案,節(jié)省了大量的金錢和資源,不需要高昂的成本和努力,只需要一個免費的無代碼工具和一個超級便宜的MCU!
?
- MCU上的TinyML變速箱故障預測開源分享
- 基于RNN的GIS故障預測算法及系統(tǒng)設計 30次下載
- 基于邊緣計算的艦炮系統(tǒng)故障預測系統(tǒng) 25次下載
- 支持向量機的故障預測模型 0次下載
- 天然氣壓縮機的故障診斷監(jiān)控系統(tǒng)研究_聶煥煥 0次下載
- 基于預測濾波器的故障診斷方法研究 32次下載
- 液壓與氣壓傳動課件
- 基于SPC的電源故障預測系統(tǒng)研究
- 一種復合故障預測動態(tài)建模方法
- 汽車氣壓制動裝置故障淺析
- 雙管路氣壓制動系統(tǒng)失靈淺析
- 淺談4M20型氮氫氣壓縮機的維護保養(yǎng)與常見故障的處理
- 礦用移動滑片空氣壓縮機的維護與故障排除
- 紐邦C100空氣壓縮機常見故障維修
- 呼吸機空氣壓縮機輸出壓力偏低的故障分析與維修
- 低氣壓環(huán)境模擬:試驗箱如何確保產品性能穩(wěn)定 216次閱讀
- 如何通過低氣壓試驗提高產品的可靠性 428次閱讀
- 螺桿式空氣壓縮機常見故障 螺桿式空氣壓縮機排氣溫度高的原因 895次閱讀
- 如何保護電源系統(tǒng)設計免受故障影響 402次閱讀
- 故障管理架構 742次閱讀
- 詳談SSD故障預測技術 1121次閱讀
- 【tinyML】使用EdgeImpulse讓您的Arduino可以辨識手勢! 4081次閱讀
- 如何使用TinyML在內存受限的設備上部署ML模型呢 958次閱讀
- 如何在 MCU 上快速部署 TinyML 1689次閱讀
- 如何利用TinyML實現語音識別機器人車的設計 2110次閱讀
- 故障預測與故障診斷在電子系統(tǒng)中的應用研究 3786次閱讀
- 空氣壓縮機常見故障與維修 5.8w次閱讀
- 進氣壓力傳感器故障現象及解決方法 2.1w次閱讀
- 保障電網安全需要攻克電力變壓器故障預測與健康管理等關鍵技術 8785次閱讀
- 液壓傳動與氣壓傳動有什么不同_氣壓和液壓傳動的區(qū)別_液壓與氣壓傳動的優(yōu)缺點 8w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多