色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創(chuàng)作
電子發(fā)燒友網>電子資料下載>電子資料>使用TinyML來預測與氣壓系統(tǒng)(APS)故障

使用TinyML來預測與氣壓系統(tǒng)(APS)故障

2022-10-31 | zip | 0.38 MB | 次下載 | 免費

資料介紹

描述

介紹

汽車行業(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 美元的凈價格標簽
pYYBAGNYtr2AOE1hAAHx846vptg264.png
?

讓我們構建它

教程的目標是演示如何輕松構建緊湊的 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 帳戶后,您應該有一個解決方案主頁,單擊添加新解決方案按鈕。

pYYBAGNYtr-ADQKUAAFjEb9tBZI659.png
?

創(chuàng)建解決方案后,如上所示,繼續(xù)上傳數據集(請記住,當前支持的格式僅為 CSV)。

pYYBAGNYtsOAQfd4AADueLqiicg874.png
?

為每個預測選擇目標變量或所需的輸出。在這種情況下,我們將類作為輸出變量:0 表示“負”,1 表示“正”

pYYBAGNYtsaAKTMeAADWdYfDtZI490.png
?

第 2 步:模型訓練和參數

由于我們要將模型嵌入到微型 MCU 中,因此我們需要相應地設置參數。Raspberry Pico 可以運行 32 位操作并將 歸一化類型設置Unique Scale for Each Feature

poYBAGNYtsmAKM8jAAFFT-KoEeE752.png
?

點擊開始訓練,由于數據集很大,訓練可能需要更長的時間,對我來說,大約需要 6 個小時。同時,您可以查看數據處理完成后生成的探索性數據分析,請查看以下視頻:

?
  • 在訓練期間,您可以通過觀察模型狀態(tài)(“一致”或“不一致”)和目標指標來監(jiān)控實時模型性能。

我的目標指標是:AUC 0.987415 ,訓練后的模型具有以下特征:

pYYBAGNYtsuAGrasAAEvm1U-qQk404.png
?

系數數 = 278,嵌入文件大小 = 3.074 Kb 太酷了!

第 3 步:在 Raspberry Pico 上進行預測和嵌入

在 Neuton ai 平臺上,單擊Prediction選項卡,然后單擊Model for Embedding旁邊的Download按鈕,這將是我們將用于我們的設備的模型庫文件。

pYYBAGNYts6AGJsIAAFfHCjTGsw556.png
?

下載模型文件后,就可以添加我們的自定義函數和操作了。我正在使用 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
poYBAGNYttCAdNI2AADwGmWcia0274.png
?

9.轉到工具>>板>>板管理器

10.在搜索框中輸入“pico”,然后安裝樹莓派 Pico/RP2040 板這將觸發(fā)另一個大下載,大小約為 300MB。

pYYBAGNYttOAKvfDAAE9K-jJEnk999.png
?

注意:由于我們要對測試數據集進行分類,我們將使用 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 數據集上運行運行推理] 請參見下面的引腳連接

pYYBAGNYtteARuOxAAEqnQFONAg534.jpg
?

了解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 上運行推理

在樹莓派上上傳程序,

pYYBAGNYttmAanpxAAJPzdETFPs465.png
?

上傳并運行后,打開一個新終端并運行以下命令:

$ ./uploader -s /dev/ttyACM0 -b 230400 -d /home/vil/Desktop/aps_failures_test.csv
poYBAGNYtt2AF25UAAKRTFogvzg614.png
?
綠燈表示沒有 APS 故障,紅燈表示 APS 故障基于通過串行接收的 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
pYYBAGNYtuCASv8FAAJGhRDeg_g924.png
?

我還在 Neuton TinyML 平臺上與 Web Prediction 進行了比較,結果相似。另外,我嘗試使用 TensorFlow 和 TensorFlow Lite 構建相同的模型。我用 Neuton TinyML 構建的模型在AUC方面比用TF Lite構建的模型要好14.3% ,在模型大小方面要小 9.7 倍說到系數的數量,TensorFlow的模型有7個,060個系數,而Neuton的模型只有278個系數(小了25.4倍!)

因此,得到的模型足跡和推理時間如下:

poYBAGNYtuOACJQvAAEi01p2v0E780.png
?

Raspberry Pico 能夠執(zhí)行使用云上的高性能機器處理的任務,這不是很神奇嗎?

poYBAGNYtuaAb-5JAAHBjDtbTqY205.png
?

結論

本教程生動地證明了您無需成為數據科學家即可快速構建超緊湊的 ML 模型以主動解決實際挑戰(zhàn)。而且,最重要的是,使用tinyML實現這樣的解決方案,節(jié)省了大量的金錢和資源,不需要高昂的成本和努力,只需要一個免費的無代碼工具和一個超級便宜的MCU!

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 欧美人妖12p| 免费毛片播放| 九九热这里都是精品| 精品亚洲AV无码蜜芽麻豆| 久久精品综合电影| 女朋友的妈妈在线观看| 日本精品久久久久中文字幕| 泰国淫乐园实录| 亚洲精品中文字幕一二三四区| 亚洲视频欧美视频| 97蜜桃123| 成片免费观看视频大全| 国产免国产免费| 久久国语精品| 青青草原亚洲| 香蕉精品国产高清自在自线| 亚洲一区二区三区免费看| 99C视频色欲在线| 高清观看ZSHH96的视频素材 | 永久免费精品精品永久-夜色| 91久久偷偷看嫩草影院无费| 成人国产亚洲精品A区天堂蜜臀| 国产老肥熟xxxx| 久久久亚洲国产精品主播 | 嗯好大好猛皇上好深用力| 日韩一区二区三区精品| 亚洲男人97色综合久久久| 99热国产这里只有精品免费| 国产精品卡1卡2卡三卡四| 久久综合伊人| 神马影院午夜伦理限级| 曰韩一本道高清无码av| 超碰国产亚洲人人| 久草草在线视视频| 日本午夜精品理论片A级APP发布 | 亚洲国产精品久久又爽黄A片| 131美女爱做视频午夜剧场| 调教椅上的调教SM总裁被调教 | 女人高潮久久久叫人喷水| 亚洲AV色香蕉一区二区9255| 97色伦97色伦国产|