平时我们在手工时候常常忘记把剪刀等危险的文具放回原来位置,这样可能会伤到家里人。而爸爸妈妈时常告诉我,要养成“东西放回原位”的习惯,所以我借助人工智能的知识做了一个物品自动识别并提示把东西放回原位的小提醒器,让我和弟弟都养成好习惯。
开发背景
我们经常在家里面玩剪纸和手工,要用到剪刀,刀子等工具,有好多次都忘记放回笔筒或者笔盒。弟弟不小心就会拿过来玩,这就变得很危险。除了桌面,有时候剪刀不小心掉地上或者被拿到沙发或者床上,如果来不及收拾,那就容易伤到人了。
爸爸妈妈时常提醒我们,学会整理和收拾东西,养成“把东西放回原来位置”的习惯。其实,我和弟弟也不是故意放得到处都是,而是忘记放回去了。所以我在想能不能有个像小闹钟一样的工具,当我们忘记的时能提醒一下。
物品识别与程序设计
首先,需要让计算机能识别出剪刀等物品。怎么让计算机能识别出摄像头拍到的图片里面的物品呢?我记得爸爸此前讲过关于计算机视觉的一些故事,其中除了对图片进行分类外还有无人车里面的目标跟踪的例子。
无人车上的摄像头就好比我们用于拍摄房间物品的摄像头,如果我们可以将识别汽车和行人变成识别剪刀和刀子,那提醒我们收拾东西的“小闹钟”就可以实现出来了。
要实现这个功能,就需要训练一个机器大脑,需要先给出一些输入X和Y作为训练样本和标注,然后让机器大脑不停地学习和迭代,直到满足一定的准确度。有了训练好的机器大脑,我们就可以把图片里面的物品识别出来并打上标签,对标签我们就可以进行分类提示不同的收纳提醒了。整个程序执行过程如下图:
数据准备与模型训练
从摄像头采集的图片中实时识别出里面的物品是件很有挑战的事情。幸好PaddleX提供了可视化的训练客户端,可以很方便地得到我们所需要的功能的机器大脑(编者注:PaddleX可视化客户端是百度提供的全流程开发工具,上面集成了基于YOLO的目标检测的训练自动化方法)。
要训练好机器大脑,首先我们采集了日常50多张照片,同时辅助从网上采集了一些照片补充整个样本到100多张。然后,在爸爸的帮助下,通labelImg软件对图片进行标注,以得到满足PaddleX要求的训练标注格式。
然后,启动PaddleX选择目标检测类应用,按照要求导入数据并启动训练。通常情况使用家里笔记本的CPU运行需要50多个小时才能完成训练,后来爸爸启动了GPU进行运算才把模型训练的时间缩短成2小时(GPU果然是个好东西 )。
最后,通过PaddleX客户端发布训练好的模型,我们就可以拿到python版本的模型文件了。
应用与实验
模型训练好了后,我通过爸爸帮忙搭建了远程摄像头的实验环境。让程序在计算机上启动,然后通过远程摄像头进行了实验所需的实时摄像数据采集。程序对识别出来是危险文具标签的物品进行警告处理,然后显示在屏幕上。
从实验可以看出,危险文具识别和提醒的准确率可以满足我们的日常需求。下面是实验测试的视频,在摄像头扫过的地方能把危险的剪刀圈出来并提示警示信息:
有了这个人工智能程序,还可以结合提示屏幕或者喇叭,进行声音提示。这个在后续Jetson固件集成中再做尝试。
总结
通过这次的动手小制作,我对人工智能的视觉目标检测的知识有了比较深入的了解和认识。在制作“小提醒器”的过程中,还学习了如何通过PaddleX可视化客户端进行目标检测的模型训练,包括如何标注实验样本数据。将来,这个“小提醒器”还可以包括更多的文具和玩具,更多的目标自动检测,会将更多的便利应用到我们的日常生活中。
让科技改变我们的生活!
本文中的PaddleX可视化客户端下载可前往
https://www.paddlepaddle.org.cn/paddle/paddleX进行下载使用,同时也欢迎加入PaddleX交流QQ群: 1045148026。