女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

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

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

3天內不再提示

RT106x的小車上部署AI實施設計案例分析

電子設計 ? 來源:CSDN 博主 ? 作者:卓晴 ? 2020-12-28 16:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

繼卓大大發布了推文“基于RT106x電磁智能AI算法”,并將此列為2020年智能車競賽的比賽項目之一以后,AI算法智能車受到了廣大同學和專家的熱烈討論。很多同學都想在自己的賽道上感受一下AI的魅力,但苦于沒有文檔和工具而無從下手。

在這里向大家介紹我們在RT106x的小車上部署實施AI的方法,以及一個base line的電磁導引神經網絡模型,希望能拋磚引玉,激發同學們開動腦筋,將AI在電磁智能車上的應用發揚光大。

先期準備

硬件條件

話不多說,首先必須有電磁智能車一輛,無線透傳模塊用于采集訓練數據(感謝逐飛科技友情贊助)。

下圖是我們使用的車模,其中紅色框內車身的7個電感,是AI算法中電磁車運行導向的輸入電感。

AI電磁實驗的車模及其傳感器配置

藍色框內的電感是抓取訓練數據時的導航電感,在AI算法中并不使用(在模型部署成功后可以拆除)。

軟件環境

Python:3.7.3

Keras:2.2.4

TensorFlow:1.13.1

模型設計

模型的目的是通過車身的電感值來推導出對小車舵機的轉向控制命令,這是典型的回歸問題。

我們訓練了簡易的Baseline模型,結構如下:

使用Netron軟件顯示的網絡結構圖

如圖所示,模型只使用了Dense算子——也就是全連接層,在一些文獻里稱之為多層感知機。模型使用最新一筆7個電感的讀數,參數19,301個,內存需求很小,運算速度快,用RT1060哪怕是按16位量化也完全無壓力。

不過,各位同學不要以為設計完了模型就萬事大吉了,以為有了AI模型就可以忘掉經典算法中調參的痛苦。小編可以負責任地告訴你,痛苦才剛剛開始……

采集數據,訓練模型

數據采集和處理

眾所周知訓練數據是機器學習的重中之重,沒有完備的數據AI模型只不過是鏡中花水中月,沒有任何意義。訓練數據對于模型而言就是韓信點兵多多益善,但也一定要小心不要引入錯誤數據,錯誤數據會讓你出軌~啊不,是讓小車出軌,然后就無跡可尋了。小編為了訓練數據不知道掉了多少頭發,死了多少腦細胞。

我們獲取訓練數據的方法是:小車運行經典導航算法,由小車的前置電感導航,實時抓取車身的電感數據,轉向數據,再通過無線透傳模塊發送到PC端,PC上的串口工具把數據保存成文本格式。

怎么把文本格式的數據轉換成訓練數據呢?這就要借助強大的Python了,在腳本里讀入文本文件,把7組AD值作為x_train、x_test,對應的轉向值pwm作為y_train、y_test,并保存成numpy數組文件以方便訓練腳本調用,建議生成四個文件x_train.npy、x_test.npy、y_train.npy、y_test.npy,注意數據格式要符合模型結構,數據范圍要壓縮至-128~127之間用于制作測試文件。

在數據轉換時需要對AD值做一個簡單濾波。以下是我們使用的濾波算法僅供參考。

簡單的濾波算法

模型訓練

在訓練腳本讀取訓練數據numpy文件,并把數據范圍標準化至-1~+1的浮點數。并調整數據表形狀(reshape)為模型輸入參數的結構。

輸入參數結構
(建議把源代碼的若干個相關行分自然段,每個自然段添加一行中文注釋。比如reshape的,astype的)

模型函數:

模型函數

模型訓練部分代碼(添加少量關鍵中文注釋):

訓練部分代碼
這里保存了臨時文件xxx_ctx.h5,為了訓練中途意外停止后,重新訓練時可以支持斷點續練。

優化器使用RMSprop,損失函數使用mean_squared_error。

訓練損失函數

訓練時誤差迅速下降,下降速度越來越慢,20輪訓練后精度即已接近最終效果。這里顯示了訓練了120次后的結果:loss=0.0044.

訓練過程誤差

各位看官讀到這里是不是腦海里已經有了智能車策馬奔騰的畫面了,并且迫不及待的想把訓練好的模型部署到小車上了?
No No No,經常被生活打臉的小編告訴你這是完全不夠的。為什么呢?很簡單模型過擬合了。AI模型運行時會有誤差,遲早導致出軌,那么有哪些誤差呢:

模型計算的誤差,邏輯回歸引入的誤差,無論訓練多少遍一定會存在一定的誤差

訓練數據采集時的誤差,前置電感和車身電感距離上的誤差

累積誤差,前兩種誤差會導致小車偏離軌道以至誤差越來越大。積累到在訓練數據里沒有出現過的程度時,模型就不知該怎么辦了,這是出軌的根源(說起來簡單,小編其實被虐了很久才悟出來)。

知道了癥結所在,就可以對癥下藥了:盡可能讓訓練數據里出現小車的各種回歸正軌的模式。簡單的說就是要引入從偏離軌道狀態重返回軌道過程的糾正數據,我們通過兩種辦法獲得糾正數據。

第1種方法:把小車電機配置成手動控制模式,但要保留轉向控制功能和數據采集功能。把小車移動到偏離位置,手動推動小車,小車原有的控制算法會矯正方向使小車回到軌道上去。同時要抓取實時數據并保存。如下視頻所示

手動控制模式采集數據

第2種方法:在用經典算法引導小車時,加入隨機干擾,故意讓小車偏離軌道一會,同時讓控制算法短暫休眠,小車在此期間會出軌,待算法喚醒后趕緊再糾正回來,并且實時保存糾正的數據。如下視頻所示

經典算法引導采集數據

總結一下,數據分三部分:

經典算法導航的正常數據。

手動偏移的糾正數據。

經典算法隨機干擾的糾正數據。

把三個數據合成一套訓練數據。特別注意第2種方法中可能會引入錯誤數據(小車過度偏離賽道,手動移動小車時小車與賽道平面角度過大或與水平面距離太遠),實際操作過程中要小心。由于機器學習的不可解釋特性,錯誤數據或不合適數據會導致不可預知的行為,所以整個過程可能需要多次嘗試和調整。

模型部署

經過多輪的訓練,我們得到最終的模型文件smartcar.h5。

那么怎么部署到小車上呢,這要借助“NNCU”這一套神器了。NNCU模型轉換器可以點擊這里從網盤下載,這里有個大禮包,里面有nnCU工具、教學視頻、用戶手冊,還有一個MCU+AI的ppt。
通過轉換器把模型轉換成C文件。這樣就可以很方便的集成到原有的工程中了,注意還需要集成一些依賴庫和算法庫,可以參考性能測試工程(nncie_stub.uvproj)。
從網盤中下載解壓nncu_test_nighty.7z,運行“nncu_vbgui.bat”,選擇模型文件,配置信息如下:

模型配置信息
這里我們使用14位來量化模型,對于NNCU工具,9-16位都會使用16位整數來封裝。

16位量化和8位量化相比,以犧牲少量模型推理時間和加倍模型數據的代價,換來幾乎無損的精度。
這里還有個重要的小建議:雖然使用16位整數來表達,但實際最好只使用其中的9-15位(未用的位會自動做有符號擴展),是為了防止模型運算期間的乘累加溢出。

注意輸入數據移位指數7位,這意思是說數據里有7個二進制位用于表達分數(或者說是小數)部分。回想前文提到測試集和訓練集中數據范圍是-128+127,而模型訓練時,模型處理數據范圍是-1+1,所以量化數據里其實是放大到128倍了,也就是7個二進制分數位。

我們再看“輸出后處理類型“。由于模型是做預測,后處理需要用戶自己處理,不需要執行引擎后處理。
中間層、輸出層分數位數:由于模型輸出是-1~+1之間,10位分辨率也比較夠用,這里占用量化總位數14位中的10位來表達分數。大家也可以試試其它的,比如9-13,一般影響極小。
點擊”干活!”,會跳出后臺轉換腳本的命令窗口,稍候片刻會在nncu_pc目錄下生成model1.nncu.c—模型執行文件。那么怎么使用以及模型量化后性能怎么樣呢?

NNCU工具里提供了測試工程“test_mcu”,各位同學可以通過這個工程測試量化后的模型性能,也可以參考這個工程來進行模型移植工作。具體的操作,可以點擊看這個視頻(末尾部分),也可以看這篇微信文章"在MCU上實現AI深度學習,你想知道的都在這兒"以了解更多。

測試性能,首先需要制作測試數據集。我們把ad_test_dat.npy作為輸入,把模型計算結果和pwm_test_label.npy值的平方差作為誤差,計算平均差值來評估量化后的模型性能。

把訓練集和測試集復制到”datasetssmartcar_ad”目錄,命名如下:

存儲訓練集和測試集合的目錄

點擊工具右下角“制作測試數據”按鈕。選擇迷你數據集中smartcar_ad,點擊”干活"。在目錄nncu_pc下生成測試文件smartcar_ad.nctv.c。

生成測試文件
下一步是測試模型性能(參照幫助視頻“nncu_使用入門.mp4”)。拷貝model1.nncu.c, smartcar_ad.nctv.c到目錄test_mcuoardsevkmimxrt1060demo_apps ncie_stub中,覆蓋原有文件:model.nncu.c,tv.nctv.c。

打開工程mdk ncie_stub.uvprojx,在helo_world.c中的測試函數CIETest,模型計算測試集求得平均差值。平均差值越小表示模型在測試集的擬合性越高。但注意這是沒有累積誤差情況下,實際上需要多加入回歸正軌的數據,否則即使差值小也不能保證實際效果,只是模型過擬合,在測試集上表現的很好。

應用模型激素測試集合進行測試

CI_RunModelXIP_NoCopyOutput(pvModel, pImg + 8, (void**)&g_out);

是模型執行的函數調用,用法如下:

pvModel – 模型數據,在model1.nncu.c定義,包含了模型的信息和參數

pImg + 8 – x_text 也就是7個AD數值

g_out – 模型輸出buffer,根據配置輸出為16bit,帶有分數位的數據。需要移位得到-128~+127的數值范圍才能發送給舵機。

編譯工程,通過JLink連接板子,并打開串口程序,接收串口的調試信息。開始debug模式,工程默認使用sram運行程序,等待測試程序執行。執行結束后,串口會輸出執行結果:即平均差值,和平均執行時間。

小編訓練的模型6000次平均差值是16,每次計算時間1.87dms——0.187ms。

o4YBAF_pktSAbcYgAACOxclUo0U798.png

串口輸出測試結果

實戰演習

經過模擬測試,模型性能符合預期,下一步就是把相關代碼集成到電磁車系統中。首先集成nncie庫nncie_imxrt10x0.lib,model.nncu.c,以及nncu_mcucmsis_nnSource中的CMSIS_NN相關代碼(參照測試工程)。其次集成模型的調用方法:

o4YBAF_pkuGABtizAADaoN6bz3I138.png

模型調用方法
model1數組就是模型數據,ad_array是7個電感數據(如果12bit,需要移位到8bit),pwm是模型計算的轉向值(范圍-128+127)。請注意,制作訓練數據時,為了方便訓練計算,我們把轉向值范圍由真實值-420420壓縮到了-128127,所以在控制舵機時,需要把計算所得的轉向值放大到-420+420。

現在小伙伴可以在賽道上驗證模型的實際性能了,可能第一次不會成功,需要多些耐心處理訓練數據反復的重新訓練,迭代調試了。

結果展示

這是小編訓練的模型的實際運行情況(摘除了前置采集裝置)

AI電磁車模實際運行情況

未來展望

以上是AI機器學習部署到電磁智能車的全過程,可以驗證機器學習在電磁智能車上實施的可行性。
在這個過程中遇到很多問題,主要是處理分析訓練數據,經過多次迭代訓練才得到一個基本可靠的模型。
當然還存在一些有待改進地方:

小車目前還是勻速運動,沒有速度變化,怎樣設計更好的模型來引入速度參數?

數據獲得方式是不是有更好的辦法,通過對電磁軌道的模擬,來通過公式工具推導訓練數據?

怎樣可以引入更加豐富的賽道內容,比如交通引導線,指示燈,障礙物?等等。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4813

    瀏覽量

    103397
  • AI
    AI
    +關注

    關注

    88

    文章

    34936

    瀏覽量

    278341
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    stm32N657上部署cubeAI生成代碼,編譯出錯的原因?怎么解決?

    你好,要怎么在stm32N657上部署cubeAI生成代碼呢,編譯出錯,我使用cubeAI生成的手寫數字模型的代碼,編譯報錯 要怎么配置呢,我看其他AI demo都是分了兩個文件,這里要怎么燒錄進去使用呢?
    發表于 06-20 06:31

    STM32F769是否可以部署邊緣AI

    STM32F769是否可以部署邊緣AI
    發表于 06-17 06:44

    手把手教程:基于RT-Thread在單片機上部署大模型AI終端

    還在羨慕那些動輒幾十GB顯存的AI大佬?今天,就讓你體驗到與大語言模型暢聊的快感!誰說嵌入式設備只能閃爍LED?今天我們就要讓它"口吐蓮花"!從"
    的頭像 發表于 04-11 18:19 ?582次閱讀
    手把手教程:基于<b class='flag-5'>RT</b>-Thread在單片機<b class='flag-5'>上部署</b>大模型<b class='flag-5'>AI</b>終端

    RAKsmart企業服務器上部署DeepSeek編寫運行代碼

    在RAKsmart企業服務器上部署并運行DeepSeek模型的代碼示例和詳細步驟。假設使用 Python + Transformers庫 + FastAPI實現一個基礎的AI服務。主機推薦小編為您整理發布RAKsmart企業服務器上部署
    的頭像 發表于 03-25 10:39 ?291次閱讀

    基于RK3588的AI攝像頭應用解決方案

    隨著人工智能(AI)技術的快速發展,越來越多的視頻監控系統開始直接在攝像頭上部署AI分析,視頻監控從早期的圖像記錄發展到如今具備AI運算能力
    的頭像 發表于 01-16 17:19 ?716次閱讀
    基于RK3588的<b class='flag-5'>AI</b>攝像頭應用解決方案

    AN-1086: ADM106x的熱插拔應用

    電子發燒友網站提供《AN-1086: ADM106x的熱插拔應用.pdf》資料免費下載
    發表于 01-12 10:00 ?0次下載
    AN-1086: ADM<b class='flag-5'>106x</b>的熱插拔應用

    在 Flexus X 上部署 ELK 日志系統

    Flexus X 上部署 Mysql 和一套 xxl-job 分布式任務管理系統,完成了 Flexus X 的首次操作,本次我
    的頭像 發表于 01-02 11:59 ?319次閱讀
    在 Flexus <b class='flag-5'>X</b> <b class='flag-5'>上部署</b> ELK 日志系統

    企業AI模型部署攻略

    當下,越來越多的企業開始探索和實施AI模型,以提升業務效率和競爭力。然而,AI模型的部署并非易事,需要企業在多個層面進行細致的規劃和準備。下面,AI
    的頭像 發表于 12-23 10:31 ?765次閱讀

    IBM將在云平臺部署AMD加速器

    IBM與AMD近期宣布了一項重要合作協議,根據協議,IBM將在其云平臺上部署AMD Instinct MI300X加速器。這一舉措旨在提升企業客戶在生成式AI模型方面的性能和能效,進一步推動A
    的頭像 發表于 11-19 16:24 ?584次閱讀

    IBM與AMD攜手將在IBM云上部署AMD Instinct MI300X加速器

    近日,全球領先的科技企業IBM與AMD共同宣布了一項重要合作。雙方計劃在IBM云上部署AMD的Instinct MI300X加速器服務,以滿足企業客戶對于高性能和高效能AI模型的需求。 據悉,這項
    的頭像 發表于 11-19 11:03 ?833次閱讀

    如何在STM32f4系列開發板上部署STM32Cube.AI

    已下載STM32Cube.AI擴展包,但是無法使用,感覺像是沒有部署AI模型,我是想要通過攝像頭拍照,上傳圖像后,經過開發板處理器進行AI模型處理識別過后,告訴我識別結果,顯示在TFL
    發表于 11-18 09:39

    企業AI模型部署怎么做

    AI模型部署作為這一轉型過程中的關鍵環節,其成功實施對于企業的長遠發展至關重要。在此,AI部落小編為您介紹企業AI模型
    的頭像 發表于 11-04 10:15 ?760次閱讀

    RT-Thread AIOS,讓小車更懂你!

    RT-ThreadAI團隊經歷對大量芯片廠商和下游應用業務公司的咨詢和討論,認為在可預見的未來,AI會產生一種端側和云端混合部署的形態,即大規模、大參數模型運行在云端,如大語言模型,
    的頭像 發表于 11-01 08:10 ?849次閱讀
    <b class='flag-5'>RT</b>-Thread AIOS,讓<b class='flag-5'>小車</b>更懂你!

    混合部署 | 在RK3568上同時部署RT-Thread和Linux系統-迅為電子

    混合部署 | 在RK3568上同時部署RT-Thread和Linux系統-迅為電子
    的頭像 發表于 09-06 15:32 ?776次閱讀
    混合<b class='flag-5'>部署</b> | 在RK3568上同時<b class='flag-5'>部署</b><b class='flag-5'>RT</b>-Thread和Linux系統-迅為電子

    利用恩智浦云實驗室部署AI模型

    如今,人工智能(AI)非?;鸨?,這個風口該如何把握?作為一個電子工程師,和AI最主要的交集應該就是邊緣計算了,具體來講,就是在一些性能、功耗以及價格相對較低的嵌入式平臺上部署和運行AI
    的頭像 發表于 08-02 11:46 ?3627次閱讀
    利用恩智浦云實驗室<b class='flag-5'>部署</b><b class='flag-5'>AI</b>模型
    主站蜘蛛池模板: 乃东县| 漳州市| 托克托县| 南雄市| 黄梅县| 安阳市| 高平市| 江西省| 绵竹市| 琼中| 泗水县| 南雄市| 全州县| 资中县| 岗巴县| 礼泉县| 张北县| 舒兰市| 文成县| 新邵县| 邵东县| 东安县| 嘉禾县| 远安县| 苍山县| 江门市| 明水县| 达拉特旗| 定西市| 钦州市| 淄博市| 萝北县| 墨江| 施秉县| 佛冈县| 屏南县| 固原市| 和平县| 民县| 新巴尔虎左旗| 靖西县|