您当前的位置:首页 > 电脑百科 > 人工智能

人工智能图像识别绘本阅读方案(含完整源代码和开发文档)

时间:2020-07-05 10:35:59  来源:  作者:

概述

本文描述一个基于人工智能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,包括Androidlinux 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缓存获取,提高性能。

 



Tags:人工智能   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
11月2日召开的世界顶尖科学家数字未来论坛上,2013年诺贝尔化学奖得主迈克尔·莱维特、2014年诺贝尔生理学或医学奖得主爱德华·莫索尔、2007年图灵奖得主约瑟夫·斯发斯基、1986年图灵奖得主约翰·霍普克罗夫特、2002...【详细内容】
2021-11-03  Tags: 人工智能  点击:(39)  评论:(0)  加入收藏
说起人工智能,大家总把它和科幻电影中的机器人联系起来,而实际上这些科幻场景与现如今的人工智能没什么太大关系。人工智能确实跟人类大脑很相似,但它们的显著差异在于人工智能...【详细内容】
2021-09-17  Tags: 人工智能  点击:(57)  评论:(0)  加入收藏
作者:阿米特&middot;V. 乔希(Ameet V Joshi)来源:华章科技 01 人工智能艾伦&middot;图灵(Alan Turing)对人工智能的定义如下:如果窗帘后面有一台机器,并且有人正在与之互动(无论以何...【详细内容】
2021-09-07  Tags: 人工智能  点击:(76)  评论:(0)  加入收藏
人工智能看似是这几年才流行起来的一个新技术行业,但是人工智能不是一门新学科,它的学科发展已经有了60多年的历史了。如果想要入门人工智能行业,那么你需要学习的知识将会非...【详细内容】
2021-06-16  Tags: 人工智能  点击:(127)  评论:(0)  加入收藏
起源阶段(1943-1969)1943年,神经科学家麦卡洛克(W.S.McCilloch) 和数学家皮兹(W.Pitts)建立了神经网络和数学模型,称为M-P模型,即两个人的名字的合称McCulloch-Pitts。这个模型是对...【详细内容】
2021-06-15  Tags: 人工智能  点击:(134)  评论:(0)  加入收藏
理解什么是人工智能,以及机器学习和深度学习如何影响它,是一种不同凡响的体验。在 Mate Labs 我们有一群自学有成的工程师,希望本文能够分享一些学习的经验和捷径,帮助机器学习...【详细内容】
2021-06-09  Tags: 人工智能  点击:(128)  评论:(0)  加入收藏
韩国著名研究机构IITP(2019年)曾经对外发布了一组调研数据,通过科研专家进行的问卷调查,将全世界范围内的AI强国来了一次评分排座次,最终结果显示中国位列全球第三,第一、二名分别...【详细内容】
2021-05-18  Tags: 人工智能  点击:(405)  评论:(0)  加入收藏
人工智能在各个行业中广泛应用,并且对很多行业都起到了一定的改善作用,同时在各个行业中的应用场景也是大不相同的。那么人工智能在网络安全领域中的应用场景有哪些?人工智能在...【详细内容】
2021-05-12  Tags: 人工智能  点击:(187)  评论:(0)  加入收藏
未来20年,这种工作不可代替,无需担心会失业随着人工智能的发展,已经有很多职业被代替了,尤其是电销行业,在过去需要人工来拨打推销电话,每天差不多最多能够拨打200通电话,这种工作...【详细内容】
2021-05-10  Tags: 人工智能  点击:(141)  评论:(0)  加入收藏
「中国人工智能研究论文总数已经超过了美国,成为全球第一」「人工智能初创企业获得的资本青睐越来越少」「主流NLP系统也存在种族歧视」这些话题都出自斯坦福大学Human-Cent...【详细内容】
2021-04-20  Tags: 人工智能  点击:(205)  评论:(0)  加入收藏
▌简易百科推荐
作为数据科学家或机器学习从业者,将可解释性集成到机器学习模型中可以帮助决策者和其他利益相关者有更多的可见性并可以让他们理解模型输出决策的解释。在本文中,我将介绍两个...【详细内容】
2021-12-17  deephub    Tags:AI   点击:(16)  评论:(0)  加入收藏
基于算法的业务或者说AI的应用在这几年发展得很快。但是,在实际应用的场景中,我们经常会遇到一些非常奇怪的偏差现象。例如,Facebook将黑人标记为灵长类动物、城市图像识别系统...【详细内容】
2021-11-08  数据学习DataLearner    Tags:机器学习   点击:(32)  评论:(0)  加入收藏
11月2日召开的世界顶尖科学家数字未来论坛上,2013年诺贝尔化学奖得主迈克尔·莱维特、2014年诺贝尔生理学或医学奖得主爱德华·莫索尔、2007年图灵奖得主约瑟夫·斯发斯基、1986年图灵奖得主约翰·霍普克罗夫特、2002...【详细内容】
2021-11-03  张淑贤  证券时报  Tags:人工智能   点击:(39)  评论:(0)  加入收藏
鉴于物联网设备广泛部署、5G快速无线技术闪亮登场,把计算、存储和分析放在靠近数据生成的地方来处理,让边缘计算有了用武之地。 边缘计算正在改变全球数百万个设备处理和传输...【详细内容】
2021-10-26    计算机世界  Tags:边缘计算   点击:(45)  评论:(0)  加入收藏
这是几位机器学习权威专家汇总的725个机器学习术语表,非常全面了,值得收藏! 英文术语 中文翻译 0-1 Loss Function 0-1损失函数 Accept-Reject Samplin...【详细内容】
2021-10-21  Python部落    Tags:机器学习   点击:(43)  评论:(0)  加入收藏
要开始为开源项目做贡献,有一些先决条件:1. 学习一门编程语言:由于在开源贡献中你需要编写代码才能参与开发,你需要学习任意一门编程语言。根据项目的需要,在后期学习另一种语言...【详细内容】
2021-10-20  TSINGSEE青犀视频    Tags:机器学习   点击:(37)  评论:(0)  加入收藏
SimpleAI.人工智能、机器学习、深度学习还是遥不可及?来这里看看吧~ 从基本的概念、原理、公式,到用生动形象的例子去理解,到动手做实验去感知,到著名案例的学习,到用所学来实现...【详细内容】
2021-10-19  憨昊昊    Tags:神经网络   点击:(47)  评论:(0)  加入收藏
语言是人类思维的基础,当计算机具备了处理自然语言的能力,才具有真正智能的想象。自然语言处理(Natural Language Processing, NLP)作为人工智能(Artificial Intelligence, AI)的核心技术之一,是用计算机来处理、理解以及运...【详细内容】
2021-10-11    36氪  Tags:NLP   点击:(49)  评论:(0)  加入收藏
边缘计算是什么?近年来,物联网设备数量呈线性增长趋势。根据艾瑞测算, 2020年,中国物联网设备的数量达74亿,预计2025年突破150亿个。同时,设备本身也变得越来越智能化,AI与互联网在...【详细内容】
2021-09-22  汉智兴科技    Tags:   点击:(54)  评论:(0)  加入收藏
说起人工智能,大家总把它和科幻电影中的机器人联系起来,而实际上这些科幻场景与现如今的人工智能没什么太大关系。人工智能确实跟人类大脑很相似,但它们的显著差异在于人工智能...【详细内容】
2021-09-17  异步社区    Tags:人工智能   点击:(57)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条