





摘要:本文以“紅外測距傳感器”為研究對象,先采集整理數據,再利用BaseML分別采用線性回歸、多項式回歸算法訓練模型,實驗表明多項式回歸能良好擬合其特征曲線。在模型訓練后,借助pinpong庫和XEduHub推理框架,實現真實場景的測距應用。作者認為,當前AIforScience漸成科研熱點,中小學生雖難吃透機器學習底層原理,但通過實踐可初步掌握人工智能概念、思維及解決問題之道,為未來科技的學習奠定基礎。
關鍵詞:數據探究;機器學習;BaseML;AI4S
中圖分類號:G434"文獻標識碼:A"論文編號:1674-2117(2025)01-0080-03
傳感器是一種信息輸入設備,能夠檢測或感受外界的信號、物理條件(如光、熱、濕度)或化學組成(如煙霧)等。常見的傳感器通過敏感元件獲取外界信息,并轉換成電信號輸出。例如,光線傳感器中的敏感元件為光敏電阻,當光線強弱發生變化時,輸出的電壓信號也發生相應的變化。傳感器決定了數字世界與物理世界交互的能力,也成為信息科技課程中的重要學習內容。
根據輸出量與輸入量之間的關系,將傳感器分為線性傳感器和非線性傳感器兩個大類。線性傳感器指其輸出數據與輸入物理量之間呈嚴格的線性關系,即當輸入物理量按一定比例變化時,輸出數據也會按相同的比例變化。其特性曲線是一條直線或近似直線,如超聲波、溫度(LM35)都屬于線性傳感器。而非線性傳感器的特性曲線通常不是直線,而是曲線形狀。絕大多數的傳感器都屬于非線性,如光電傳感器、紅外傳感器、壓力傳感器等。使用非線性傳感器通常需要采用非線性變換、曲線擬合、神經網絡等方法對輸出數據進行處理,從而得到準確的物理量。這個過程一般稱為“校正”。
非線性傳感器的常見校正方法分析
非線性傳感器的常見校正方法分為模擬電路和數字電路兩類。其中模擬電路校正有算術平均法、橋路補償法和折線逼近法等。算術平均法通過計算上下限的平均值,尋求一條擬合曲線。橋路補償法是增加電阻,利用測量橋路的非線性來校正傳感器的非線性。折線逼近法則通常采用運算放大器,當輸入電壓為不同范圍時,相應改變運算放大器的增益,從而獲得所需要的斜率。相對來說,模擬電路校正法受限于模擬元件的精度、溫度漂移、噪聲等因素,很難達到很高的校正精度。
數字電路校正法即用軟件方法解決,如采用查表法修正,預先將一張表明輸入值與輸出值關系的表格寫入存儲器中。或者用插值法,用數學公式來擬合近似的函數關系。數字電路校正法不需要過多考慮模擬元件的特性和相互影響,通過軟件編程或硬件描述語言來實現校正算法,設計過程相對靈活,便于修改和優化。關于傳感器的校正方法,大部分屬于專業領域范疇,中小學很少關注。
用機器學習的方式探究非線性傳感器
非線性傳感器在信息科技的課堂中很常見。當學生在真實場景中使用傳感器時,我們一般會建議其選擇最笨也最容易實施的查表法。自從BaseML出現后,機器學習的門檻變得越來越低了,于是筆者萌生一個想法:為什么不讓學生用機器學習的方式來訓練一個非線性傳感器的模型?
1.傳感器數據的采集和整理
筆者選擇了“紅外測距傳感器GP2Y0A02”,這是一個典型的非線性傳感器,其特征曲線如圖1所示,圖中縱坐標是電壓,橫坐標是距離。
采集紅外測距傳感器的數據很方便,就是在不同的測量距離記錄傳感器的數據,然后轉換為電壓值即可。不同的開源硬件的工作電壓和A/D轉換器分辨率(也稱量化位數)不一樣,轉換的具體計算方法也不同,如Arduino的量化位數是10位,電壓是5V。而掌控板的量化位數是12位,電壓是3.3V。標準的轉換公式為:測量電壓=(引腳數
值÷量化位數)×工作電壓。
筆者以白紙作為反射物,采集了23條數據,隨機劃分為訓練集和驗證集(比例為18∶5)。然后將數據分別保存為csv格式,即distance_train.csv和distance_eval.csv兩個文件(如圖2)。
2.用BaseML訓練傳感器模型
首先要獲得環境,即安裝“BaseML”。可以在任意一個Python環境中用pip命令安裝,命令為“pipinstallBaseML”。推薦使用XEdu一鍵安裝包,解壓后即可獲得機器學習的環境,這里不再詳細介紹。
筆者設計了多個實驗,先用線性回歸算法訓練模型,再用多項式回歸算法。如果效果不好,再測試其他算法。
(1)實現線性回歸算法
在BaseML中,線性回歸模型的名稱是:LinearRegression。訓練模型的代碼如圖3所示。在訓練完成后,需要做驗證。筆者選擇R2評標,從下頁圖4中可以看出,得分只有84.8%。
(2)使用多項式回歸算法
在BaseML中,將線性回歸算法改為多項式回歸算法,只需要把代碼中的“LinearRegression”改為“Polynomial”,其他都保持不動。這時,可以看到R2指標的得分達到了99.92%(如圖5)。
可見,多項式回歸算法能很好地擬合“紅外測距傳感器GP2Y0A02”的特征曲線。通過這一實驗,學生將體會到用采集數據、訓練模型的方式能解決很多類似的問題。
在真實場景中應用非線性數據模型
在訓練出模型后,下一個問題就是如何使用。因為BaseML是一個Python庫,其模型也只能在Python環境中使用。因此需要將紅外測距傳感器接在能運行Python的開源硬件上,如行空板、泰山派、靈犀板之類。然后借助pinpong庫來讀取傳感器數據,再輸入到模型中得到推理的結果,就做出了一個準確的測距儀。
雖然使用BaseML就能推理模型,但筆者還是強烈建議使用XEduHub來推理。XEduHub是一個專用的機器學習和深度學習推理框架,其語法特別簡單。參考代碼如圖6所示。
結語
人工智能不僅僅是一種技術,還是一種科學思維和解決問題的方式。科學家們致力于開發新的算法從大量的數據中自動識別規律,得出解決問題的方案,并通過科學可量化的評估方式來改進算法。雖然中小學生可能還沒有能力理解機器學習的底層原理,但通過實踐操作,完全可以初步理解人工智能的基本概念、科學的思維方式和用人工智能解決問題的方式。