摘要:以“红外测距传感器”为研究对象,先采集整理数据,再利用BaseML分别采用线性回归、多项式回归算法训练模型,实验表明多项式回归能良好拟合其特征曲线。在模型训练后,借助pinpong库和XEduHub推理框架,实现真实场景的测距应用。作者认为,当前AI for
概 览
以“红外测距传感器”为研究对象,先采集整理数据,再利用BaseML分别采用线性回归、多项式回归算法训练模型,实验表明多项式回归能良好拟合其特征曲线。在模型训练后,借助pinpong库和XEduHub推理框架,实现真实场景的测距应用。作者认为,当前AI for Science渐成科研热点,中小学生虽难吃透机器学习底层原理,但通过实践可初步掌握人工智能概念、思维及解决问题之道,为未来科技的学习奠定基础。
传感器是一种信息输入设备,能够检测或感受外界的信号、物理条件(如光、热、湿度)或化学组成(如烟雾)等。常见的传感器通过敏感元件获取外界信息,并转换成电信号输出。例如,光线传感器中的敏感元件为光敏电阻,当光线强弱发生变化时,输出的电压信号也发生相应的变化。传感器决定了数字世界与物理世界交互的能力,也成为信息科技课程中的重要学习内容。
根据输出量与输入量之间的关系,将传感器分为线性传感器和非线性传感器两个大类。线性传感器指其输出数据与输入物理量之间呈严格的线性关系,即当输入物理量按一定比例变化时,输出数据也会按相同的比例变化。其特性曲线是一条直线或近似直线,如超声波、温度(LM35)都属于线性传感器。而非线性传感器的特性曲线通常不是直线,而是曲线形状。绝大多数的传感器都属于非线性,如光电传感器、红外传感器、压力传感器等。使用非线性传感器通常需要采用非线性变换、曲线拟合、神经网络等方法对输出数据进行处理,从而得到准确的物理量。这个过程一般称为“校正”。
非线性传感器的常见校正方法分析
非线性传感器的常见校正方法分为模拟电路和数字电路两类。其中模拟电路校正有算术平均法、桥路补偿法和折线逼近法等。算术平均法通过计算上下限的平均值,寻求一条拟合曲线。桥路补偿法是增加电阻,利用测量桥路的非线性来校正传感器的非线性。折线逼近法则通常采用运算放大器,当输入电压为不同范围时,相应改变运算放大器的增益,从而获得所需要的斜率。相对来说,模拟电路校正法受限于模拟元件的精度、温度漂移、噪声等因素,很难达到很高的校正精度。
数字电路校正法即用软件方法解决,如采用查表法修正,预先将一张表明输入值与输出值关系的表格写入存储器中。或者用插值法,用数学公式来拟合近似的函数关系。数字电路校正法不需要过多考虑模拟元件的特性和相互影响,通过软件编程或硬件描述语言来实现校正算法,设计过程相对灵活,便于修改和优化。关于传感器的校正方法,大部分属于专业领域范畴,中小学很少关注。
用机器学习的方式探究非线性传感器
非线性传感器在信息科技的课堂中很常见。当学生在真实场景中使用传感器时,我们一般会建议其选择最笨也最容易实施的查表法。自从BaseML出现后,机器学习的门槛变得越来越低了,于是笔者萌生一个想法:为什么不让学生用机器学习的方式来训练一个非线性传感器的模型?
01
传感器数据的采集和整理
笔者选择了“红外测距传感器GP2Y0A02”,这是一个典型的非线性传感器,其特征曲线如下图所示,图中纵坐标是电压,横坐标是距离。
采集红外测距传感器的数据很方便,就是在不同的测量距离记录传感器的数据,然后转换为电压值即可。不同的开源硬件的工作电压和A/D转换器分辨率(也称量化位数)不一样,转换的具体计算方法也不同,如Arduino的量化位数是10位,电压是5V。而掌控板的量化位数是12位,电压是3.3V。标准的转换公式为:
测量电压=(引脚数值÷量化位数)×工作电压
笔者以白纸作为反射物,采集了23条数据,随机划分为训练集和验证集(比例为18∶5)。然后将数据分别保存为csv格式,即distance_train.csv和distance_eval.csv两个文件,如下图。
02
用BaseML训练传感器模型
首先要获得环境,即安装“BaseML”。可以在任意一个Python环境中用pip命令安装,命令为“pip install BaseML”。推荐使用XEdu一键安装包,解压后即可获得机器学习的环境,这里不再详细介绍。
笔者设计了多个实验,先用线性回归算法训练模型,再用多项式回归算法。如果效果不好,再测试其他算法。
(1)实现线性回归算法
在BaseML中,线性回归模型的名称是:LinearRegression。训练模型的代码如下图所示。
在训练完成后,需要做验证。笔者选择R2评标,从下图中可以看出,得分只有84.8%。
(2)使用多项式回归算法
在BaseML中,将线性回归算法改为多项式回归算法,只需要把代码中的“LinearRegression”改为“Polynomial”,其他都保持不动。这时,可以看到R2指标的得分达到了99.92%,如下图。
可见,多项式回归算法能很好地拟合“红外测距传感器GP2Y0A02”的特征曲线。通过这一实验,学生将体会到用采集数据、训练模型的方式能解决很多类似的问题。
在真实场景中应用非线性数据模型
在训练出模型后,下一个问题就是如何使用。
因为BaseML是一个Python库,其模型也只能在Python环境中使用。
因此需要将红外测距传感器接在能运行Python的开源硬件上,如行空板、泰山派、灵犀板之类。
然后借助pinpong库来读取传感器数据,再输入到模型中得到推理的结果,就做出了一个准确的测距仪。
虽然使用BaseML就能推理模型,但笔者还是强烈建议使用XEduHub来推理。XEduHub是一个专用的机器学习和深度学习推理框架,其语法特别简单。参考代码如下图所示。
人工智能不仅仅是一种技术,还是一种科学思维和解决问题的方式。科学家们致力于开发新的算法从大量的数据中自动识别规律,得出解决问题的方案,并通过科学可量化的评估方式来改进算法。
虽然中小学生可能还没有能力理解机器学习的底层原理,但通过实践操作,完全可以初步理解人工智能的基本概念、科学的思维方式和用人工智能解决问题的方式。
本文作者:
谢作如 浙江省温州科技高级中学
王国芳 浙江省温州市艺术学校
魏静洁 上海外国语大学
文章刊登于《中国信息技术教育》2025年第1期
引用请注明参考文献:
谢作如,王国芳,魏静洁.用BaseML探究非线性传感器数据变化规律[J].中国信息技术教育,2025(01):80-82.
来源:中国信息技术教育