概述
本文描述一个基于人工智能2D图像识别算法实现的绘本阅读方案,应用于绘本阅读机器人和绘本阅读手机APP。主要内容包括:基础算法,方案架构及工程化,项目遇到的坑及解决方案。为了更容易理解,本文重点描述项目的工程化,对于算法也做一定程度的阐述、但不做深入,相关算法资料及论文在互联网可方便搜到。
演示视频
基础算法
算法方案选型:
本项目要解决的核心问题是:在低算力的硬件上通过普通摄像头(2D)采集图像快速(<1s)定位到时哪一本绘本的哪一页,即需要通过计算机视觉算法来评估当前摄像头图像帧是否存在一个预置的特有FLAG。项目技术方案评估过方法主要有:
1) 基于目标分类算法,可以看作是一种图像分类的问题。先对绘本封面图像进行分类定位,找到对应绘本后,再对绘本内页图像分类定位。这个方法理论是可行的,但分布封面的分类过多(可能有超过两万本绘本),而且算法复杂度高,实际并不可行。
2)另外还有目标检测的算法,但对于绘本图像来说,并没有相对固定的特征(例如人,动植物等),所以这个方法也不可行。
3)基于图像特征匹配的图像识别,即对两个图像的特征进行匹配来预测是否为相同图像,这个算法复杂度较低,算法鲁棒性强,且绘本图像天然有较多的图像特征,这个方法与项目需求是非常匹配的,其实在技术选型时,就很快确定了这个算法基础。、
基础算法描述
图像特征匹配中算法基础是特征因子算法,如SIFT, SURF, FAST, ORB等,综合算法的鲁棒性和复杂度,项目主要采用的是SURF和SIFT算法因子。以下是基于SURF算法因子匹配对两个图像进行匹配的代码片段,可以大概感受下:
...
img1 = cv2.imread(imgname1)
img1 =