APP下载

打造个性化的“智能稻草人”

2022-09-02谢作如浙江省温州中学

中国信息技术教育 2022年17期
关键词:稻草人代码涂鸦

谢作如 浙江省温州中学

邱奕盛 华东师范大学

稻草人是农村常见的“安防设备”。因为有“人”的外形,有风时它会摆动手臂并发出声音。农民常常在稻田间扎上一个,用于驱赶麻雀之类的鸟儿,避免其偷食庄稼。

科技在不断发展,稻草人也应与时俱进。在当前的低门槛AI开发工具的支持下,学生完全能够设计出一款“智能稻草人”作品,让“它”从仅仅“外表像人”走向“内心也像人”——通过摄像头,准确判断是否有鸟儿来偷食或者有野猪来破坏,并且能根据不同的情况发出不同的音效来驱逐,同时通过警报通知主人。当然,也可以用稻草人监视是否有小偷来盗取,或者其他的意外情况,只要通电它就能够日夜工作,保护农民财产。

● “智能稻草人”作品的设计分析

“智能稻草人”和传统稻草人的本质区别在于前者具备视觉识别功能,能够区分正常和非正常状态,从而输出不同的信号。从信息系统的角度看,“智能稻草人”是一款内置了AI识别功能,具备基本传感和控制功能的简易信息系统。

1.“智能稻草人”的工作流程分析

图1

一般而言,对图像的识别有三种实现方式:第一种是调用现成AI开放平台的网络API,如百度、腾讯、商汤的AI平台的API;第二种是使用本地的AI应用平台API,如OpenCV、MediaPipe;第三种是自己训练模型,进行推理。从工程的角度看,三种方式没有高低之分,只要识别效果好就是好的解决方案。

考虑到稻草人要部署的场景和识别的图像往往比较个性化,现成API没有对应的功能,只能选择自行收集数据训练模型的方式。因为MMEdu是一个很好的AI模型训练工具,对学生来说,只要确定好场景,然后根据需求收集相应的数据,就能训练出合适的AI模型,技术难度并不高。

2.“智能稻草人”的功能设计

从原理和功能上看,安防类器材其实都类似稻草人——实时监控并自动报警。因而,我们可以将“智能稻草人”作为现代智能安防设备的形象通俗的名称。我们设计的“智能稻草人”应用场景也从农村移到都市——用于保护城市的白色墙壁,防止一些调皮的小孩或者行为不羁的“艺术家”的破坏,即涂鸦。其核心功能设计如下。

①基本功能:识别要监视的白色墙壁是否有可疑人群来“涂鸦”。

②根据可疑人群在摄像头前停留的时间长短,输出不同的语音提示,并同时保存画面,留下证据。

③在输出语音提示的同时,还能用挥动“提示牌”的方式,友好地进行提醒。

3.“智能稻草人”的核心技术

“智能稻草人”采用开源硬件行空板,编程语言选择了Python,其涉及的核心技术如下。

一次泥石流固体冲出物按照《泥石流灾害防治工程勘查规范》(DT/T 0220-2006)附录I提供的计算公式进行计算:

摄像头控制最好用的库肯定是OpenCV。OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉处理开源软件库。

计算机视觉开发工具选择了MMEdu。MMEdu源于国产人工智能视觉算法集成框架OpenMMLab,是一个“开箱即用”的深度学习开发工具。初学者通过简洁的代码即可完成各种SOTA模型的训练。

为了节省算力和能源,在检测到有人活动时才打开摄像头,就需要一个能读取红外热释电传感器信息的Python库,同时,还准备用舵机发出类似“招手”的可爱动作,可见,驱动开源硬件的库是不可少的。Pinpong是一个基于Firmata协议开发的Python硬件控制库,能够获取传感器数据,驱动舵机、LED等执行器,执行特定的动作。

除了以上的几个工具,其实还需要语音合成库,如Pyttsx3。这是一个Python的文字转语音库,支持英文和中文等多种语言,可以调节语速、语调等。如果想同时驱动其他的智能设备,如电灯,那么还需要物联网MQTT的库,如siot。

● 特定数据集的收集和整理

收集数据是最核心的工作。数据收集方式其实很多,如找一个摄像头软件,保存摄像头的画面,也可以使用OpenCV编写一个代码来保存图片,类似摄像头抓图工具。当然,使用数码相机或者手机直接拍照也是可以的,只不过图片容量会比较大,造成数据集也会很多,还要找个工具批量转换。一般来说,摄像头的画面用1028*720就差不多了。

MMEdu的图像分类模块采用的数据集为ImagesNet格式,按照规范分出训练集、验证集和测试集即可。收集数据的工作其实也不难,就是把图片分为两类,一类为正常的画面,即没有可疑的人在“涂鸦”的画面,另一类则相反,画面中有人在做“涂鸦”的动作,或者准备做“涂鸦”动作(如图2)。

图2

如果想识别出画面中的“人”,则需要使用目标检测的方法,数据集中的每一张照片都要做好标注,相对来说工作量比较大。而OpenInnoLab平台提供的数据集标注工具,使用起来则比较方便,下页图3所示是在OpenInnoLab中标注数据集。

图3

● AI模型训练和推理

虽然MMEdu训练模型的代码很简单,但总有人对编写代码有一种天然的恐惧。因此,MMEdu团队准备了一个EasyTrain的小工具,你可以在图形化界面中正确选择算法,填写路径以及必要的参数,然后自动生成代码并训练,即可训练出一个好模型,图4所示就是用EasyTrain的训练模型。

图4

EasyTrain还能生成可以直接使用的推理代码。考虑到行空板的性能不是很高,做图片分类勉强可行,而做目标检测则有些难度,需要将推理模块部署为网络API服务供行空板调用,即将图片推理放在服务器上,行空板端只要把图片发送过去就能返回识别结果。EasyTrain也提供了使用Flask模块生成网络API的Demo代码,也能够直接使用。

● “智能稻草人”作品的部署

在电脑上完成训练后,要把算法部署到“智能稻草人”上。利用行空板作为主控板,把经过模型训练生成的权重文件拷贝到行空板上,并写一段简单的推理代码,就完成了AI部分算法的迁移部署。当然,学生可以在EasyTrain生成的推理代码上修改,实现同样的效果。

接着,增加红外人体传感器唤醒摄像头拍照的功能——当画面中出现可疑人员在“涂鸦”时,驱动舵机挥手并语音警告。这些功能都很简单,只需要简单的循环和判断就可以实现(如图5)。

图5

为了减少误报的可能性,我们采用计时器功能,计算如果有人出现在画面中静止的时间超过一定时间(如3~5秒)才挥手和报警,并将图片留存以供日后“取证”。限于篇幅,具体的代码不在文中提供。

功能部署完成了,外观的布置自然也少不了,笔者为电子套装制作了一个可爱的外壳,两个腮红和大大的眼睛,让“智能稻草人”不那么冷冰冰,而人情味十足。

笔者还希望增加一些更加有用的功能,如:增加环境传感器的数据监测,结合图像,记录在日志;增加物联网设备的“联动”等。

● 结语

“智能稻草人”还可以应用于其他场景,如危险河道的“游泳”监视、景区栏杆的跨越提示、车位被恶意侵占等,甚至还可以做成鲁迅先生笔下的捕鸟工具。你希望自己设计的“智能稻草人”用于什么场景,解决什么问题,那就去收集相关的图像数据,设计出属于自己的个性化的“智能稻草人”作品。

猜你喜欢

稻草人代码涂鸦
创意涂鸦
创意涂鸦
田野中的稻草人
稻草人
神秘的代码
稻草人
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细
近期连续上涨7天以上的股
涂鸦等