找回密码
 立即注册
搜索

人工智能图像辨认绘本阅读方案(含残缺源代码和开发文档)

概述

本文描画一个基于人工智能2D图像辨认算法完成的绘本阅读方案,运用于绘本阅读机器人和绘本阅读手机APP。次要内容包括:基础算法,方案架构及工程化,项目遇到的坑及处理方案。为了更容易了解,本文重点描画项目的工程化,对于算法也做一定程度的阐述、但不做深化,相关算法材料及论文在互联网可方便搜到。

基础算法

算法方案选型:


本项目要处理的核心成绩是:在低算力的硬件上经过普通摄像头(2D)采集图像疾速(<1s)定位到是哪一本绘本的哪一页,即需求经过计算机视觉算法来评价当前摄像头图像帧能否存在一个预置的特有FLAG。项目技术方案评价过方法次要有:

1) 基于目的分类算法,可以看作是一种图像分类的成绩。先对绘本封面图像停止分类定位,找到对应绘本后,再对绘本内页图像分类定位。这个方法实际是可行的,但分布封面的分类过多(能够有超过两万本绘本),而且算法复杂度高,实践并不可行。

2)另外还有目的检测的算法,但对于绘本图像来说,并没有相对固定的特征(例如人,动植物等),所以这个方法也不可行。

3)基于图像特征婚配的图像辨认,即对两个图像的特征停止婚配来预测能否为相反图像,这个算法复杂度较低,算法鲁棒性强,且绘本图像自然有较多的图像特征,这个方法与项目需求是非常婚配的,其真实技术选型时,就很快确定了这个算法基础。、

基础算法描画


图像特征婚配中算法基础是特征因子算法,如SIFT, SURF, FAST, ORB等,综合算法的鲁棒性和复杂度,项目次要采用的是SURF和SIFT算法因子。以下是基于SURF算法因子婚配对两个图像停止婚配的代码片段,可以大概感受下:

  ...  img1 = cv2.imread(imgname1)  img1 = cv2.resize(img1, (600, 400))  kp1, des1 = surf.detectAndCompute(img1,None) #des是特向量  img2 = cv2.imread(imgname2)  img2 = cv2.resize(img2, (600, 400))  kp2, des2 = surf.detectAndCompute(img2,None)  matches = flann.knnMatch(des1,des2,k=2)  ...

算法层面上,完成了图像特征婚配还是不够,由于还有处理一个成绩:在大数量的图像中(如10000+的绘本封面图像)疾速定位到目的图像,假如程序是一张一张图像的比较婚配,时效是非常低,完全达不到秒辨认的要求。这时需求援用图像检索的算法,项目完成两种图像检索算法,建立图像索引,大概如下:

1)KD-tree, 基于树型规划的索引分为向量空间和度量空间。向量空间运用欧式间隔来比较特征相似度,度量空间不运用欧式间隔来比较特征相似度,KD-Tree是典型的基于二叉树的索引结构。

2)K-means,其首先经过聚类方法构建聚类中心,将图像特征库分成许多簇(类)。检索时,查询图像的特征向量先和聚类中心向量比较,计算向量间的间隔,然后只需在间隔较近的簇中停止检索。

总的来说,绘本图像的辨认与查字典相似:先经过图像检索定位到大批的目的图像,然后再经过特征婚配预测出目的图像。

工程化

确定了算法基础,接上去就是充满荆棘的项目开发和落地的过程。
摄像头方案


首先是摄像头方案选定。摄像头是产品的“眼睛”,摄像头方案对于辨认的效果是有关键作用的,次要目的是保证摄像头有效成像区域覆盖绝大部分尺寸绘本翻开后的尺寸,而有效成像区域是摄像头采集到的、可用于视觉分析的图像,边角图像畸变大、失真属于有效成像区域。摄像的方案次要思索以下要素:

1)由于摄像头是固定安装的且与采集图像的间隔是相对固定,因此摄像头需求时定焦的,避免对焦过程,图像不明晰影响到辨认效果。

2)FOV(摄像头视场角度),FOV越大,成像区域越广,但也会带来畸变,FOV的选定要结合产品结构。本项目摄像头的FOV是110°

3)摄像头的高度(H)和倾斜角(α)直接影响到有效成像区域,在符合“有效成像区域覆盖绝大部分尺寸绘本翻开后的尺寸”的产品需求下,根据结构综合决议。本项目中,H是13cm,α是40°





软件架构







全体软件架构是经过不断设计,验证和优化得出的。
软件次要分三部分:


1、绘本SDK,包括Android 和 Linux SDK,核心算法部分是C++写的,在Android中经过NDK交融到SDK中。SDK包含本地辨认和云辨认模块。本地辨认次要包括:检索和辨认算法,不同系统的交互逻辑;云辨认模块:云服务器交互的客户端部分功能(如各种HTTP Client)。

2、云辨认服务,核心算法部分是C++写的单独程序,在云上部署方式非常灵敏,结合集群、平衡负载、缓存等可提升云服务功能和波动性。前后端经过HTTP POST 图像数据为次要接口。

3、绘本训练管理系统,是C++写的程序,完成绘本数据自动批量上线:包括绘本资源数据上传到CDN存储服务器,绘本封面图典文件(图典下面详述)上传,每一本绘本图典文件上传,数据更新上线。
云服务器部署:


云辨认服务器是单独高计算服务,对于服务器的高并发、高可用的追求,可用从集群、平衡负载、算法轻量化、图像信息紧缩传输、热点数据缓存等方面思索。以下是一个部署方案的参考:




图典


是完成是算法工程化的重要一步,处理的成绩是将一切绘本的图像特征和图像索引按特定数据结构描画并存储,而且图典支持叠加更新。
次要数据结构


1、indexedDescriptors 特征向量描画列表,保存一切图像特征向量的列表,相似的特征向量会独一元素存储。





2、wordToObject特征向量ID和图像ID的map,存储obj(即预存图像)与向量特征列表的ID的对应关系




3、scene是摄像头采集当前帧的图像特征向量列表,vocabulary是图典索引,数据结构跟图像检索算法有关:KD-Tree是二叉树;K-means是n叉树,详细树的结构暂不展开。下图描画scene的特征向量从vocabulary索引中检索到最有能够婚配的特征向量以及在indexedDescriptors中的id,检索出来后,根据wordToObject算出最有能够婚配的图像。




存储方式


1、本项目中,图典是保存成文件,一切绘本的封面图像保存成一个图典文件,每一本绘本的封面和一切内页图像保存为一个图典文件。对于此类部分结构化数据,可以保存数据库中(NoSQL)。存储为文件,次要思索到开发和运维便利。

项目方案

实施方案


结合产品需求,实施方案有以下两种:

1、离在线结合方案:

1)封面在云服务辨认,服务器功能和存储可根据功能要求伸缩,支持大数量图像准确检索(数万绘本封面);

2)辨认到封面后,本地SDK下载并加载对应封面绘本的图典文件,本地实时辨认当前翻到对应内页图像。

2、离线方案

1)封面和一切绘本图典文件预先下载到本地,本地停止绘本封面和绘本内页图像检索辨认。这个方案在算力和存储较低的设备上,支持绘本的数量有限。
绘本训练上线


绘本训练上线是经过绘本训练管理系统完成的,工作原理和流程是:

1、制造绘本数据:包括绘本封面和内页图像 以及 封面和每一内页对应的音频

2、将绘本数据图片和音频按特定目录文件命名存放,如下图是my dad绘本的命名例子,图片和音频命名逐一对应,如图片没有对应音频,则空缺。




3、绘本训练管理系统根据命名读取图像生成一切绘本封面图典和每一绘本的图典文件,同时将图典文件、绘本图片和音频上传到CDN静态存储服务器,将静态文件URL以及绘本信息(ID,书名,ISBN号等)上线到数据库。

工作流程


以下以离在线结合方案描画绘本阅读程序一个正常基本的流程,经过云服务辨认绘本封面,辨认到封面定位到绘本后,加载对应绘本的图典,绘本SDK本地辨认绘本内页图像,辨认到一页播放对应页的音频,完成 放置哪一步绘本,读那一本绘本;翻哪一页,读那一页内容。



项目阅历分享

绘本训练


绘本训练的方案确定、开发、实施阅历一些迂回,这里也分享下。

1、虽然SIFT等特征因子算法具有方向、尺度等不变性,思索辨认效果,最后绘本训练的方案是经过绘本机器人摄像头来采集绘本图像停止训练,保持训练图像和实践运用采集图像的角度不断性。但这个方案需求绘本书本,且需求人力一本一本地训练,不具有大批量操作的可行性。

2、绘本训练方案必须自动化、大批量停止,所以把出版社的绘本高打扫描图作为训练数据似乎是独一的方案,但这个方案还需处理图像视角不分歧的成绩以提高辨认率,如下图,一张是绘本机器人摄像头采集的图像(灰度化),另一张是出版社绘本扫描图,两者视角有差异。处理训练图像与采集图像的视角差异的方法是:将采集图像经过透视变换将视角转换与训练图像分歧后,再做特征提取。








图像处理优化


每一帧采集图像的处理(特征提取和检索)都需求一定算力,提高计算资源效率一个方法是图像采集后预测图像能否包含绘本图像,预测到有绘本图像才停止特征提取和检索。经过图像熵值可以比较有效预测当前图像能否有绘本图像(详细方法参考代码)。

图像前后端传输


前端摄像头采集的图像可以直接将图像信息残缺发送到后端停止辨认,比较好的方法是将图像灰度化,去除有效数据后、再紧缩传输。

云服务数据存储


在绘本数量不大的状况下,服务器上的绘本数据可以都从Redis缓存获取,提高功能。

全套代码及文档,请关注作者同名公众号获取。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

大神点评3

是机智cy 2020-7-5 07:21:36 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊
回复

使用道具 举报

冇地给 2020-7-5 17:17:21 显示全部楼层
OMG!介是啥东东!!!
回复

使用道具 举报

chaote55 2020-7-7 07:06:50 来自手机 显示全部楼层
纯粹路过,没任何兴趣,仅仅是看在老用户份上回复一下
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies