计算机毕业设计

计算机毕业设计 · 圈子

8873 位酷友已加入

本圈子收集计算机类的毕业设计与毕业论文,本科、硕士、博士各阶段的都可以,上传时请尽量注明毕设的概述信息~加入圈子可以上传、下载资料,也可以使用提问来寻求资料或分享你认为有价值的站外链接~

关注推荐最新

热门标签

资源

【毕业设计】在iOS上使用OpenCV实现图片中的文字框选

在iOS上使用OpenCV实现图片中的文字框选 准备工作 首先,需要去OpenCV官网下载iOS的framework,下载好后拖入新建的工程中即可,由于OpenCV库是使用C++编写,所以swift无法直接使用,需要使用OC做桥接,需要使用swift的同学可以看下这篇文章Using OpenCV in an iOS app。 实验流程 根据OpenCV入门笔记(七) 文字区域的提取中提供的思路,我实现了OC版本的代码,通过测试,清晰的文字截图识别没有问题,但是在复杂的拍照场景中几乎无法识别任何内容,例如下图 这张是相机拍摄的屏幕上的文字,有清晰的竖纹及屏幕反光,在该算法下,最终的框选区域是整个图片,无法识别文字区域,说明这个处理流程还是不完善的,我们先来看一下他的处理过程: 将图片转为灰度图 形态学变换的预处理,得到可以查找矩形的图片 查找和筛选文字区域 用绿线画出这些找到的轮廓 根据前面得到的识别结果,我们大致可以猜测问题出在了第二步,由于竖纹影响将全部文字区域连城一片,导致整图被框选。 那么在第二步中都做了哪些操作呢? 实际上上面的流程一共做了4步操作,二值化->膨胀->腐蚀->再膨胀,这个流程对于正常的白底文本截图的识别没有问题,一但图片中出现了噪点,噪点在第一次膨胀的之后被放大,对整个图像产生不可逆的污染,我们先来看一下二值化后的图像 文字还是很清晰的,但是竖纹一样明显,接着第二步膨胀,看下会怎样 一片白,不用往下看了吧。 既然如此,就需要我们修改一下在第二步的处理流程了 在反转图像(由黑白变为白黑)之前,需要对图像进行降噪处理,因为OpenCV是对亮点进行操作,在黑白图像中降噪更容易处理(去除杂乱黑点),降噪使用的方法仍然是上面的膨胀和腐蚀法 看一下经过两次降噪之后的图像是怎么样的 竖纹基本上不见了,仍然还有一部分黑点,但是已经不影响后面的识别了,这里降噪只能适度,过度处理可能会使文字部分丢失。 做完二值化反转之后是上面这个样子的,接下来再对图片做膨胀->腐蚀->膨胀处理 处理的结果图如下: 最终的框选效果 其他调试结果 当然调试过程中不止用了这一张图片,毕竟结果要有一定的普适性,下面是其他几种情况下的识别结果 来源https://github.com/zlyBear/BearOCR

资源

基于协同过滤的推荐系统算法研究

协同过滤算法研究 [摘要] 随着“大数据”的出现,人们在庞大的数据面前更是显得束手无策。信息过载的问题成为了让人们头疼的事情。社会信息超过了个人或系统所能接受、处理或有效利用的范围,并导致故障。当前要解决这个问题主要有两个途径:一类是使用搜索引擎,比如谷歌、百度、搜狐等,但是这类方法需要用户的需求明确,用户也得十分清楚的表达出自己的意向,其搜索结果的质量很大程度上依赖于用户对需求描述的准确度;另一类就是基于推荐系统,这种推荐系统不需要用户十分明白清楚自己的需求,它通过用户的历史行为数据来预测推断出用户的需求以及兴趣,通过建立模型和数据挖掘,为用户准确推荐。因此,推荐系统更符合当今时代的节奏和需求。 本文主要研究了利用用户行为数据,基于邻域的算法。分别在 User-based 和 Item-based 下实验相似度的修正和改进,不同相似度对协同过滤计算方法评测数值的影响。讨论因子K值(与用户兴趣最相近用户数)对算法的 Precision、Recall、Coverage、Popular 的影响。UserCF 和 ItemCF 的综合比较。 实验结果表明,K值和算法的各项评测指标也不完全成正相关或负相关,选择合适的K值获得最高精准度是非常重要的。 关键词:推荐系统;协同过滤;用户相似度; UserCF; ItemCF 目 录 绪 论 i.本课题的研究意义及必要性 ii.相关领域国内外应用的现状及发展趋势 iii.推荐系统及协同过滤简介 a.推荐系统 b.协同过滤 2.实验设计和算法测评 i.引言 ii.数据集 iii.实验设计 iv.算法测评 3.基于用户的协同过滤算法 i.引言 ii.基础算法 iii.相似度算法的改进 4.基于物品的协同过滤算法 i.引言 ii.基础算法 iii.用户活跃度和物品相似度关系 5.UserCF 和 ItemCF 的比较 i.引言 ii.UserCF 和 ItemCF 的综合比较 6.参考文献 1 绪 论 1.1 本课题的研究意义及必要性 上个世纪末以来,互联网得到了飞跃式的发展,网络上的信息量呈指数增长,更随着互联网技术的进一步发展,海量的信息如潮水般涌现在人们眼前,在购物网站上琳琅满目的物品、Netflix 上数以万计的电影资源。人们在巨大的信息海洋面前变得束手无策,这就出现了“信息过载”的重要问题。 为了解决“信息过载”,人们提出了“个性化服务”的概念,“个性化服务”使得信息更加具体有用的呈现在用户面前,为不同用户提供不同的服务或信息内容。个性化推荐系统(personalized rcoommcndcrsystems)是当今私人订制化服务研究领域重要的一点,所谓的个性化推荐系统是在海量数据挖掘基础上的一种预测性的平台,它可以帮助网站为目标用户提供完全个性化的推荐,自动完成目标用户可能的个性化选择。被推荐的物品可以是任意物品,衣服,鞋子,家具,书籍、电影甚至可以是楼房、景区等等。这个系统有赖于目标用户的过去的行为数据,通过一定的算法,预测出目标用户感兴趣的物品。 当今,对于信息超载问题的最常用的解决方案之一就是信息检索系统,这些检索系统的代表比如 Google、Baidu 等,它们在为用户分流处理信息方面有着重要的作用。但搜索引擎的关键字相对于的搜索结果是单一的,死板的。这样单一死板的信息处理方式,不能满足现今信息的多样化,传播方式的多样化,所以搜索引擎仍然无法很好地解决信息超载问题。 推荐系统可以做出个性化的推荐,把用户最可能喜欢的,需要的东西推荐出来,将有用的信息提炼出来,帮助用户阅读信息,做出判断。推荐系统被很好的应用在商业领域,其具体表现在:(1)电商推荐方面,它可以帮助销售商找到用户的潜在需求,提高利润,指引销售策略。 (2)个人娱乐方面,可以为目标用户推荐最有可能喜好的影视作品,提高网站服务的用户粘性。 (3)提供内容服务的网站方面,个性化新闻内容服务帮助用户方便快捷的浏览新闻资讯。 (4)大众服务,提供极为个性化的旅行方案,问题咨询等等。 推荐系统现有的算法和技术已有十几年了,但是它的研究还是很火热,因为 Web 已经成为了我们日常生活的必备,大量的数据我们已经仅凭人力难以消化,我们需要算法和技术的更新。 1.2 相关领域国内外应用的现状及发展趋势 推荐系统的研究,国外比国内很早就开始了。上世纪末时 Resnick&Varian 正式定义了电子商务推荐系统。 自从 1999 年,计算机协会 ACM(Association for Computing Machinery)在每年都召开一次电子商务主题的研讨会,会议中,有很多就是关于推荐系统的论文;数据挖掘特别兴趣组 SIGKDD(Special Interest Group on KDD)和信息检索兴趣小组 SIGIR(Special Interest Group on Information Retrieval)是该协会下两个研究小组,它们也分别在 1999 年和第 24 届的研究会议上,将推荐系统单独列为一个研讨的方向。在商业巨头与学术会议的激励下,推荐系统的研究也如日中天,机器学习和数据挖掘技术的飞速发展为协同过滤算法的实现提供了新的思想,协同过滤算法以数据矩阵为训练集,在机器学习和建模以后,作出智能的推荐预测。 相对而言,国内对推荐系统的研究晚一些。受到国外先进水平的影响,国内的研究也慢慢发展起来。现在国内在推荐系统的理论和应用方面也到得了一定成果。国内和国外对推荐系统的研究水平还是差距很大的。为了提高推荐系统在国内的研究水平,推荐系统高峰论坛于2011 年 3 月在北京地大国际会议中心举行,很多相关方面的学者参加了此次峰会。到会的各位专家都展示了自己平台的推荐系统,并积极探讨了推荐系统的技术难点问题以及将来的发展方向。这次峰会很好推动了国内的推荐系统研究和发展。另外,为了进一步激发高校对于推荐系统的研究热情,中国科技大学与人民大学统计学院筹备了“第一届全国大学生数据挖掘邀请赛”并在 2011 年 3 月举行。此次比赛的主题是社交网站的会员推荐算法的研究,面向国内所有高校和研究所的在校学生。比赛的平台是为某大型的婚恋网站研发更高效的智能推荐系统,增加匹配的成功率。此次比赛增加了高校学生对推荐系统的了解和学习,大大带动了整个推荐系统研究的发展。这种激励性的活动,让推荐系统在国内的研究也发展的火热。 1.3 推荐系统及协同过滤简介 1.3.1 推荐系统 如果你想买一双足球鞋,你可以走进一家鞋店,看到货架上的所有球鞋,转一圈找到自己喜欢的球鞋,然后买单。你也可以打开淘宝,在搜索框里输入足球鞋三个字,然后你会看到很多足球鞋,找到喜欢的球鞋,然后付款,等待送货上门。这都是用户明确知道自己需求的情况,知道自己要找怎么的足球鞋。但是,要是用户没有十分明确的需求时呢?例如图1.1,你想看一本书,但你面对偌大的书架,面对浩瀚的书海,你不知所措。这时候需要一个人或者一个工具来帮助你,给你一些选择方面的建议。但是,不总是刚好有人帮助你做选择,你需要一个了解你的自动化工具帮助你,它知晓你的兴趣,历史行为,帮你从琳琅满目的各类图书中选出符合你兴趣的书来——它就是推荐系统。 图 1.1 推荐系统 要想明白推荐系统是怎样工作的,我们可以参考在现实生活中我们遇到不知如何选择时是如何求助的。 我们会向我们的朋友去咨询,我们该如何选择。这种社会化的推荐,我们期望好友会给我们恰当的建议。 我们会去在搜索引擎上寻找我们喜欢的书籍,或者喜爱的作者,然后看看我们没看过的,感兴趣的。例如,我非常喜欢鲁迅,于是就去谷歌搜索鲁迅的作品,看到自己还没有看过的作品,就会去买一本读读。这种方法是寻找到和自己以前阅读过的书籍相似的书籍。推荐系统可以根据我们的历史数据,推测出我们可能喜爱的书籍。 我们还可能去参考热门书籍的排行榜,看看大家都在读什么书,什么书的评论比较好,然后比较选择出自己感兴趣的书。如果可以找到和自己的历史兴趣相一致的用户,参考他们喜欢的书籍,也许可以得出比热门排行榜更准确的推荐。这种方法就被称为基于协同过滤的推荐。 图 1.2 三种推荐方法 我们可以看出,推荐算法的最根本的问题在于把物品和用户通过某种计算方法联结在一起,而联结的方法是多种多样的。个性化的推荐系统已经得到了广泛的实战,最著名的例子就是被称为“推荐系统之王”的亚马逊。在国内像淘宝,豆瓣等都有很好的推荐系统。 图 1.3 淘宝足球鞋推荐 1.3.2 协同过滤 协同过滤一词是九十年代中期提出的,在后来得到了更深入的研究和广泛的应用。协同过滤讲的是:两个用户甲和乙具有相似的历史行为(比如购物,阅读,观影),那么他们在某些项目上具有相似的兴趣。通常,协同过滤技术都会有一个用户历史数据库,需要整合和处理历史数据,然后来预测用户的兴趣,给用户给出合理的推荐。 基于协同过滤的推荐(Collaborative Filtering recommendation)已经成为一项很受欢迎的技术。早期基于内容过滤是分析物品的内容属性,再进行推荐,但是这样的算法需要全面的了解推荐物品的各项信息,过于繁重和复杂。而协同过滤是分析出用户兴趣,在目标用户的用户群中匹配到相似(兴趣)用户,综合评估相似用户对某一信息的评价,然后预测出目标用户对物品的喜好。 协同于其他物品或者用户,给用户做出推荐,这正是信息时代的巨大优势,我们利用好用户的数据,就可以得到更准确的预测和推荐。 2 实验设计和算法测评 2.1 引言 推荐系统的实验法有很多种,最为主要的有 3 种:离线实验、用户调查和在线实验。 此次设计主要采用的是离线实验的方法,它不需要用户直接的参与到实验中,只要有数据就可以进行,可以高速的计算,测试很多不同的算法。下面将从数据集、实验设计、算法测评三个方面来介绍。 2.2 数据集 实验采用的是 GroupLens 所提供的 MovieLens 数据集,MovieLens 是推荐系统都会用的测评数据集。在这个数据集中,用户对自己以前所看过的电影进行打分,分值设为 1--5。此次实验所用的是 2016 年 1 月更新的最新数据包,由 700 个用户基于 10000 部电影的 100000 评级和 6100 个标签的应用程序,大小为 1M。 2.3 实验设计 此次协同过滤算法的研究就采用离线实验的方法。 通过用户日志系统可以获得用户的行为数据,直接采用 GroupLens 所提供的 MovieLens 数据集。 把数据集按照一定的方法划分为训练集和测试集。在训练集上对数据集合模拟训练,然后得到用户的兴趣模型,最后通过测试集进行预测。按照离线实验,分析推荐算法的系统性能评测指标,在测试集上计算出算法的结果和性能。推荐系统的离线实验基本都是基于离线的数据集,它不依赖实时的系统来为它提供算法实验的平台和数据,只需要从历史的数据库中提取的用户行为数据集就行。离线实验的最大的好处是:不需要真实用户的参与,它可以更方便快捷的计算出结果,可以更加快速,方便的运算大量的不相同的算法。第一,我们可以把用户的数据平均的随机给划分为 M 个小的数据集,然后随机的挑选出一个成为实验的数据集,那么没有成为实验数据集的就成为了训练集。接下来,我们就要在训练集上计算出用户的兴趣模型,在测试集上对目标用户的行为进行预测,最后得出推荐算法评测指标。 为了结果的科学性,我们需要进行多次实验,并且使用大量不同的测试集,把多次实验计算出的评测指标取其平均值,将平均值作为最后的评测结果。代码每次选用了不同的 K 值,seed 是随机数,M 次实验就可以得到 M 个不同的训练集和数据集,分别进行各自的实验,取最后的均值,很好的防止了实验结果的过拟合。 2.4 算法测评 基于协同过滤的推荐算法我们使用 Precision、Recall、Coverage、Popular 等来定性的描述算法的性能。 准确率 对于推荐系统算法来说,这可能是最重要的指标,它标识这个推荐系统算法预测用户行为准确性的能力,从推荐系统出现开始,可以说 100% 的推荐系统都要首先考虑这个问题。 简单来说就是训练集上计算的预测行为和测试集上用户的实际行为的重合度。重合度越高,那么推荐算法的准确度也就越高。 召回率 召回率和准确率似乎很相似,但是两者是有区别的。Recall 也叫查全率,查全率是“推荐到相关的物品”比“推荐到相关的物品与未推荐但相关的物品之和”,当然越大越好。而准确率是“推荐相关的物品”比“推荐相关的物品与推荐的不相关的物品之和”。从这里看两者似乎没什么联系,但是在实际应用中,两者存在着相互制约的关系。 覆盖率 就字面意思来讲,Coverage 就是被推荐出来的物品占物品总数的比例。这一指标是商家会关注的,他们得关注自己的产品是否被推荐给了用户。比较热门推荐物品的 Coverage 是比较低的,因为热门的物品很容易被推荐,而热门物品在整个产品中所占的比值总是不是很大。推荐系统的 Matthew effect 也是现在所要解决的主流问题。 流行度 推荐物品的流行度测量的是推荐结果的新颖度,要是被推荐出来的物品都是热门的物品,那么就意味着推荐算法的新颖度相对较低,相反,则算法的新颖度比相对较高。但这个评测是比较粗略的,因为具体用户是否知道这个东西是不确定的,需要进一步的对用户做具体调查。 3 基于用户的协同过滤算法 3.1 引言 基于用户的协同过滤算法是推荐系统诞生以来历史最悠久的算法,此算法被提出于 1992 年,最早期用于邮件的过滤使用,在 1994 后被应用于新闻的过滤。基于用户的协同过滤算法在推荐系统的历史舞台中扮演有重要的角色,下面就从基础算法开始分析。 3.2 基础算法 在每当我们要学习一门课程的时候,我们总会问老师或者师哥一些问题,例如“我学习这门课程该看哪些参考书啊”,“有什么关于这门课程学习的网站没”等等,这时候,被问者总会给我们一些推荐,这就是一个个性化推荐的典型案例。我们在碰到这类问题时,所寻找的人总是和我们有相似的研究目标或者兴趣。因此,在推荐系统当中,当用户甲需要个性化推荐的时候,我们往往可以寻找和他有着相似爱好或者行为的别的用户,然后把那些用户喜欢的、但是不在甲的历史记录范围的物品推荐给甲,这样的方法就是基于用户的协同过滤算法。 其实,基于用户的协同过滤算法就是两个步骤: 寻找出和推荐需求用户的兴趣相似的用户群。 匹配出这个用户群中用户喜欢的,但是推荐需求用户没有听过的物品并推荐给用户。这里最为重要的就是计算两个用户的兴趣相似度,用户行为的相似度是协同过滤主要的参考指标。这里我们假设出 u 和 v 两个用户,用 N(u)指代 u 所有过良性反馈的物品集合,用 N(v)指代 v 所有过良性反馈的物品集合。那么,我们就可以使用余弦相似度的计算公式计算 u 和 v 的兴趣相似度: 以下图的用户历史行为记录,来简单计算用户之间的兴趣相似度。可以看出 A 对物品{a, b, d}有过历史行为,B 对物品{a, c}有过历史行为,利用余弦相似度公式计算 A 和 B 的兴趣相似度为 图 3.1 用户兴趣表 同理,我们可以计算出 A 和 C、D 的相似度: 这种计算方法的时间复杂度是平方级的,很耗费资源。由于很多用户之间并没有对共同的相似行为,余弦相似度的分子是零。因此,我们可以先对矩阵进行优化,排除掉分子为零的情况,这样就可以优化计算时间。 我们可以建立物品到用户的倒排表,对于每个物品来说我们都只保存对该物品产生过行为的用户即稀疏矩阵 C[u][v]两个用户历史行为的交集。如果 u 和 v 都是倒排表 K 个物品所对应的用户列表,就有 C[u][v]=K。我们去遍历每个物品它所对应的用户列表,把两两用户对应的 C[u][v]加 1,就能够排除掉为零的情况。 首先,我们得建立物品—用户的倒排表。接下来,建立一个 4×4 的用户相似度矩阵 W,对于物品 a,我们把 W[A][b]和 W[B][a]加 1,对于物品 b,我们把 W[A][c]和 W[C][a]加 1,按照这样的计算方法。把所有的物品扫描完后,我们就得到了最后的 W。这个 W 是余弦相似度中的分子,将 W 除以分母我们就可以得到最终的用户兴趣相似度。 图 3.2 物品用户倒排表 计算出了用户之间的相似度值后,User-based 算法就会推荐出和用户兴趣最相似的 K 个用户他们所喜欢物品。 这里的 S(u, K)是包含和用户 u 的兴趣最接近的 K 个用户,N(i)是对物品 i 有过行为的用户集合,Wuv 是用户 u 和用户 v 的兴趣相似度,Rvi 代表用户 v 对物品 i 的兴趣。选取 K=3,用户 A 对物品 c、e 没有过行为,因此可以把这两个物品推荐给用户 A。根据 UserCF 算法,用户 A 对物品 c、e 的兴趣是: UserCF 算法有一个重要的参数值 K,K 为选取的和目标用户兴趣最相似的用户个数,然后推荐这 K 个用户感兴趣的物品,在不同的 K 值下,算法的性能也有很大的区别。我们可以发现,K 值的调整对算法的每一项指标都会产生一定的影响。 图 3.3 UserCF 算法在不同 K 值参数下的性能 Precision 和 Recall 推荐系统的 Precision 和 Recall ,并不是和 K 值成简单的线性关系。在我所选用的数据集中,当 K 值在 40 左右的时候 Precision 和 Recall 达到了峰值。适合的 K 值对推荐系统有着重要的影响。 Popular 可以看出推荐结果的的流行度随着 K 值的增长都在增大,K 值是参考的兴趣相似用户人数,人数越多,结果中的热门物品也就自然越多。 Coverage 可以看出随着 K 值的增大,算法的覆盖率在降低,覆盖率的降低是因为 UserCF 的推荐在 K 值增大时越来越趋于热门物品,那么相对的长尾物品自然推荐率降低,覆盖率也就降低了。 3.3 相似度算法的改进 前面我们在计算用户的相似度的时候简单的使用了余弦相似度,但是这样计算的准确度不够高。例如,两个用户都购买了《中华字帖》,这不是很能说明他们的兴趣相似,在中国,我们很多人都会购买《中华字帖》。但是,两个用户都购买了《推荐系统实践》这本书,那么他们两个兴趣相似度就比都买《中华字帖》的要高。有人提出了对相似度进行惩罚: 公式中的对数运算惩罚了用户的相似兴趣集合热门物品对相似度的影响。 在这里将算法改进前后的推荐系统的性能作比较,选取 K 值为 80,我们可以看到,改进后的个性性能的数据都有所提升。 图 3.4 UserCF 算法和 User-IIF 算法的对比 4 基于物品的协同过滤算法 4.1 引言 基于物品的协同过滤算法是当前应用最为广泛的算法,无论是推荐系统鼻祖的亚马逊,还是国内推荐体验很好的豆瓣,都是基于这种的推荐算法。下面先从基础算法开始介绍,然后分析算法的改进,以及基于数据集测评推荐性能。 4.2 基础算法 基于用户的协同过滤算法被应用于实践中,但是存在有一些比较突出的缺点。在数据越来越庞大的今天,用户的历史行为数据越来越多,用户兴趣相似度矩阵将变得无比庞大,难以计算,其运算的时间复杂度和空间复杂度骤增。还有就是基于用户的协同过滤算法有一个盲点,它不能够对推荐结果做出解释。在这样的情况下,亚马逊公司首先提出了这个算法——基于物品的协同过滤算法。 基于物品的协同过滤算法会把用户之前喜欢的相似物品推荐给目标用户,就例如,你购买过《唐诗三百首》它就会把和《唐诗三百首》相似的《宋词一百篇》推荐给你。ItemCF 并不是基于计算物品内容属性的相似度,而是计算分析用户行为从而计算出物品的相似度。比如,贝克汉姆和罗纳尔多具有很大的相似度,是因为喜欢贝克汉姆的人大多也喜欢罗纳尔多。在淘宝、京东等页面的底部的“猜你喜欢”就是这样推荐出来的。 图 4.1 京东书籍推荐 基于物品的协同过滤算法也可以被分为两步: 计算出物品之间的相似度。 依据物品的相似度以及目标用户的历史行为数据得出目标用户的推荐集合。 物品的相似度可以简单的定义为: 这里的分母是对物品 i 喜欢的用户,分子是同时对物品 i 和 j 喜欢的用户。这个公式可以理解为简单比例问题。但这种定义方法存有缺陷,比如说喜欢贝克汉姆的人很多,贝克汉姆就是热门,使用该公式就使得任何物品和贝克汉姆都具有很大的相似度,这不利于挖掘长尾物品信息。可以使用下面的公式惩罚热门物品的权重: 在基于物品的协同过滤推荐算法中,两个物品相似度的产生是因为他们被多个用户共同喜欢,目标用户的历史行为和兴趣都是计算物品相似度的参考。 类似于 User-based 算法,Item-based 算法也同样也能够建立一个倒排表,每个用户建立一个他所喜欢的物品集合,接下来,将他的物品集合列表中的物品两两相加。 下图是一个简单计算物品之间相似度的例子。从左到右是模拟实现计算的过程。例如,第一行就表示用户喜欢 a,b,d,将物品两两加 1,最后将这些矩阵相加得到最终的结果矩阵,一个数组就表示同时喜欢行标物品和列标物品的用户。 图 4.2 物品相似度计算的例子 ItemCF 算法在计算过程中不会有任何内容属性的比较,但是结果可以看出相似的物品在存在有一定内容的相似性。下面的公式可以计算出某一用户对某一物品的兴趣: 此公式表示,在用户历史行为表现出感兴趣的物品与其越相似的物品,被优先推荐。 下面举一个简单的例子,《C++Primer 中文版》和《编程之美》是一个用户喜欢的两本书,推荐算法会找出和它们相似的 3 本书,然后计算出每本书的用户感兴趣的程度。 图 4.3 一个简单的基于物品推荐的例子 我们可以看出,对用户推荐是可以根据用户的历史行为为依据,也就是说可以解释推荐。下图是离线实验的各项指标,K 值在 10 左右得到的评测结果最优。 Precision 和 Recall ItemCF 的推荐的 Precision 和 Recall 同 UserCF 一样,都不和 K 值成完全的线性关系,K 值的选择就成为了相当重要的指标。 Popular Popular 在 K 值增加的情况下逐渐升高,但到一定的临界值时就不会有太大浮动的改变。 Coverage K 值和推荐系统的 Coverage 成反比。 图 4.4 ItemCF 算法离线实验的结果 4.3 用户活跃度和物品相似度关系 在协同过滤中,每个用户的历史兴趣集合都对物品的相似度产生影响,但是每个用户所产生的影响是不同的。假如一个鞋店老板他进货购买了 1 万只鞋子,但是这一万只鞋子并不都是他感兴趣的,而这些鞋子覆盖了很多的种类,这个老板的对于其他物品的相似度 远不如一个只购买足球鞋的青年。这就存在了相似度失真的问题。 上面的算法抑制了活跃用户对相似度的影响,用活跃度对数的倒数来修正物品相似度。使得计算更加精准。 在现实的计算中,这种惩罚的力度不够,为了躲避相似度矩阵太巨大这种不良情况,通常我们会直接忽略不计他的历史数据,不让参与到相似度的计算中。 为了便于比较,直接选取修正前的最佳 K 值 10,由图可知,算法修正前后的精度很接近,但修正后的推荐结果的覆盖率得到了很大的提升,流行度有所下降,可以说修正后的推荐性能得到了提高。 图 4.5 ItemCF 算法和 ItemCF-IUF 算法的对比 5 UserCF 和 ItemCF 的比较 5.1 引言 User-based 和 Item-based 都是协同过滤的经典推荐系统算法,协同过滤的优点就是能够整合数据,参考历史的、已知的推测出未知的。UserCF 在推荐系统中是比较早的推荐算法,早在上世纪 90 年代就被应用于电子邮件中,后来又被 GroupLens 应用于新闻的推荐。ItemCF 相对来说是近期的算法了,亚马逊对 ItemCF 应用也得到了企业级的肯定。但两者的优劣如何呢?下面我们就讨论下。 5.2 UserCF 和 ItemCF 的综合比较 从这两个算法的来看,User-based 推荐的是和他有着相似兴趣的人喜欢的物品,Item-based 推荐是和他之前喜欢的物品相似的物品。前者主要参考了同兴趣者的爱好,后者主要借鉴了用户自己的历史兴趣。前者是社会化,群体化的推荐,反映了类似群体的喜好特征,而后者是更加个性化的推荐,反映了用户自己的兴趣历史。 例如在新闻中,很多人都喜欢看的是热门的新闻,范围比较广的。新闻的热门度,时效性都是推荐系统重点要考虑的,而比较深度的个性化在这里不是很强调。User-based 就可以推荐出社会性,小群体性的新闻,大家就了解到小圈子内关注的热点,也保证了相对的个性化推荐。相对于算法的运算性能来说,User-based 需要维护的是用户相似性表,不像 Item-based 要维护一张物品的相关度表,在新闻中,物品的更新度比用户快的多。 而在 ItemCF 中,多用于图书,电子商务,电影网站等。在这些领域中,用户的兴趣有很强的针对性,比较稳固。要对一个资深的技术人员推荐书籍,就更要依赖于他的历史兴趣,更好的发掘长尾物品,因为技术人员的书籍不会是太热门的大众书籍,需要更好的个性化推荐,ItemCF 则能满足这样的需求。这些网站需求的个性化推荐是帮助人们发现和他熟悉、感兴趣的领域相关的物品,网站内容的物品不会更新太快,更有利于挖掘用户的兴趣点。 性能 UserCF 适合用户数量不是很多的场合,在这样的情况下,用户的相似度矩阵的更新代价不会太大。 ItemCF 适合于物品数少的场合,要是物品太多,相应的物品相似度矩阵太庞大,计算复杂度高。 领域 UserCF 时效性好,在不是很强调个性化的领域。 ItemCF 长尾物品的推荐,需要很强的个性化推荐的领域。 实时性 UserCF 用户的新行为不会立竿见影的左右推荐结果。 ItemCF 用户的行为对推荐结果的影响很迅速。 推荐理由 UserCF 没有明确的和让人信服的推荐解释。 ItemCF 可以提供合理的推荐解释,让用户信服。 参考文献 [1] 马卓.协同过滤推荐算法的研究与改进[D].燕山大学.2015 [2] 张娜.电子商务环境下的个性化信息推荐服务及应用研究[D].合肥工业大学, 2007 [3] Dietmar Jannach,Markus Zanker,Alexander Felfernig.Recommender Systems[M].蒋凡译.人民邮电出版社.2013 [4] Resnick,Varian。推荐系统[J] .ACM通讯,1997,40(3):56-58 [5] 项亮.推荐系统实践[M].人民邮电出版社.2012 [6] Magnus Lie Hetland.Python 基础教程[M].司维等译.人民邮电出版社.2014 [7] 刘青文.基于协同过滤的推荐算法研究.中国科学技术大学[J].2013 [8] 曾春,邢春晓,周立柱.个性化服务技术综述[J].软件学报.2002.13(10):1952—196l [9] 邓爱林,朱扬勇,施伯乐.基于项目评分预测的协同过滤推荐算法[J].软件学报,2003,14(9):1621-1628 [10] 曾伟.推荐算法与推荐网络研究[D]. 电子科技大学 2015 [11] 秦利静.推荐系统模型与学习算法研究[D]. 清华大学 2014 [12] 邓爱林.电子商务推荐系统关键技术研究[D]. 复旦大学 2003 [13] 杨海涛.一个基于搜索结果的个性化推荐系统[D]. 郑州大学 2006 [14] 张雪文.智能推荐系统中协同过滤算法的研究[D]. 上海交通大学 2008 [15] 韩慧俊.电子商务个性化推荐系统的研究[D]. 上海交通大学 2007 转载自https://github.com/AlenQi/Research-on-Collaborative-Filtering-Algorithms

资源

【毕业设计】面向高考招生咨询的问答系统设计与实现

InfomationGet:完成领域知识的获取和数据库构建工作 1、Infomation:存储获取到的信息 (1)、九校联盟:C9数据--表格型(招生计划、录取分数(分省、分专业)) (2)、大学:大学学科字段(百度百科)、常用问题集(C9常用问题集.csv) 2、py文件 (1)、CreateFolder.py(创建文件夹--九校联盟) (2)、InternetConnect.py(网络连接) (3)、GetDictionaryData.py(获取相关词典数据) (4)、GetPlanInfo.py(获取招生计划数据) (5)、GetScoreInfo.py(获取录取分数数据) (6)、MysqlOperation.py(MySQL数据库操作) (7)、Neo4jOperation.py(Neo4j数据库操作) (8)、InsertAdmissionData.py(MySQL数据库插入数据) (9)、GetFrequentQuestion.py(获取高考网常用问题集数据) FileRead:获取招生数据过程中的文件读取 1、py文件 (1)、FileNameRead.py(读取文件名) (2)、ImageRead.py(读取图片) (3)、PDFRead.py(读取PDF(表格、文字)) (4)、XLSRead.py(读取excel表格) HanLP:中文自然语言处理工具 1、py文件 (1)、HanLPTest.py(HanLP测试) LTP:中文自然语言处理工具 1、ltp_data:LTP模型库+自定义词典文本 2、py文件 (1)、LTPInterface.py(LTP使用接口) (2)、XFYunWebAPI.py(讯飞云网络接口) QuestionAnalysis:自然语言问句分析 1、py文件 (1)、QuestionPretreatment.py(自然语言问句预处理(关键词:(年份、学校、专业、地区)识别与预处理)) (2)、KeywordNormalize.py(关键词正则化) SimilarityCalculate:相似度计算 1、py文件 (1)、SemanticSimilarity.py(语义相似度计算,需要api) TemplateLoad:模板加载 81、Template:模板文件 2、py文件 (1)、QuestionTemplate.py(问题模板的创建与加载) QuestionQuery:自然语言问句查询 1、py文件 (1)、MysqlQuery.py(MySQL表(admission_plan、admission_score_pro、admission_score_major)查询(可缺省关键词)) SystemUI:自动问答系统设计 1、images:UI图片 2、py文件 (1)、QASystem.py(自动问答系统界面设计(自动问答+可选数据库目录查询)) Log:日志系统 1、py文件 (1)、Logger.py(自定义日志类(all.log+error.log,all.log可按时间每日切分)) 转载自:https://github.com/SangYuhiter/Knowledge-Map-and-Question-Answer

资源

【毕业设计】基于Android的人脸门禁系统

基于Android的人脸门禁系统 一、研究目的 传统的门禁系统以钥匙作为验证手段,便捷程度低,丢失钥匙之后会导致极大的安全问题。人脸是一种极易获得的生物特征,具有唯一性、稳定性的特点,并且使用时设备无需与人脸接触,因此可以作为新一代的门禁验证手段。近年来,随着Android移动设备性能的不断提升,使得在移动设备上进行人脸识别成为可能。本repo设计并开发了一个基于Android平台的人脸识别门禁系统,并解决了在实际运用中可能遇到的光照变化,人脸姿态变化等情况。 二、研究内容及实验结果 1)基于双眼检测的正脸判断算法研究。人脸识别中,人脸的姿态变化会导致识别率降低。首先研究实现了基于Haar特征的Adaboost人脸检测算法,检测定位出人脸的框架和双眼的位置。然后通过人脸与双眼的位置关系,提出了一个正脸判断的方法。实验表明,该方法有效地降低了人脸姿态问题对于整个识别系统的影响。 2)基于LBP+PCA的人脸识别算法研究。首先分析了局部二值模式LBP和主成份分析PCA的原理,研究了LBP与PCA相结合的特征提取方法。相对于单独使用PCA方法,该组合方法能够有效地降低光照变化对人脸识别准确度的影响。然后,采用支持向量机对特征进行分类,并利用置信度计算方法,来有效地表示人脸和分类结果的隶属程度。实验表明,该算法对于光照变化情况下的人脸识别,准确率有了明显的提升。 3)Android平台上人脸识别门禁系统的设计与实现。分析了系统的需求,设计了具有用户注册、人脸检测与识别、门禁开关、管理员模块、通知模块等功能模块的人脸识别门禁系统。然后在Android平台上,利用Java语言和计算机图像视觉库Opencv,按照软件工程逻辑完成了系统的整体开发。整个系统经过测试运行,能够满足典型环境中的使用需求。 三、部分系统界面 用户主界面 识别界面 识别成功界面 用户管理页面 via:https://github.com/CommissarMa/FaceAccessControl

资源

【毕业设计】基于SpringBoot及thymeleaf搭建的疫情信息管理系统

基于SpringBoot及thymeleaf搭建的疫情信息管理系统 简介 基于SpringBoot及thymeleaf搭建的疫情信息管理系统 疫情信息管理系统旨在通过信息化手段记录跟踪本地区密切接触者、受感染者、危重症病人、治愈者以及死亡者,以密切接触者为开始一直到感染者治愈或者死亡,记录其基本信息、感染源、核算记录以及发病情况等信息,在通过信息化可视化手段展示本地区疫情发展情况,统计各个人群的数量,每个人群所占比例。 本系统的技术环境为: JDK1.8 SpringMvc SpringSecurity SpringBoot Mysql Mybatis Thymeleaf echarts 系统功能模块 疫情信息管理系统应当具备两种对象,疫情管理员对象可以对确诊患者、密切接触者、死亡患者、治愈患者的信息进行管理操作,系统管理员对象在疫情管理员对象的功能基础上可以对系统登录用户进行增删改查。针对需求分析设计了具体模块,系统功能模块图如下图所示。 抗疫管理员登录后可以进行确诊患者管理、密切接触者管理、死亡管理、治愈管理,同时可以看到数据面板的数据变化与动态图。系统管理员除了拥有抗疫管理者的权限,还可以对抗疫管理员进行管理。 密切接触者可以转换成确诊患者;确诊患者可以转换成死亡患者或者治愈患者,业务流程图如下图。 系统界面 登录界面 系统管理员可以通过登录界面输入登录账号和登录密码,点击登录按钮即可进入系统界面,如下图所示。 数据面板界面 进入到系统之后的首页即是数据面板页面,数据面板页面罗列了目前确诊人数、累计确诊人数、治愈人数、治愈率、现存隔离人数、累计隔离人数、死亡人数、死亡率等信息,可以点击各模块的更多信息进入相关页面。下方则有疫情发展趋势图与比例图展示各个时间段疫情状况与各个人群的比例关系,如下图所示。 确诊患者管理界面 确诊患者管理界面将当前确诊患者列出显示其基本信息,左下角显示共有多少确诊患者,并可选择每页显示多少条数据,数据右侧则是对相应确诊患者进行管理操作,可以查看详情,查看确诊患者详情信息、将当前确诊患者转为治愈、将当前确诊患者转为死亡,如下图所示。 患者详情界面 患者详情界面详细的展示了患者的基本信息如下:姓名、年龄、性别、身份证等,治疗信息如下:感染源、是否重症、住院时间、发病症状、诊治医院、信息备注,以及相应的核酸检测及ct检测历史,如下图所示。 系统管理员界面可查看管理员信息、添加管理员、对管理员进行删除、将普通管理员设置为系统管理员操作,如下图所示。 新建密切接触者界面 新建密切接触者界面包含两部分,一是添加密切接触者的基本信息如下图所示,点击下一步则跳转到添加隔离信息界面如下图所示。 via:https://github.com/SanleyPan/Coronavirus

资源

推荐系统论文归类总结

推荐系统论文归类总结 本文主要记录较新的推荐系统论文,并对类似的论文进行总结和整合。 目录 推荐系统论文归类总结 综述 协同过滤理论 矩阵分解 因子分解机 基于内容的推荐 基于DNN的推荐 基于标签的推荐 基于自编码器 Item2Vec 上下文感知模型 基于视觉的推荐 基于RNN的推荐 基于图的推荐 基于树的推荐 公司的推荐系统的发展历程 数据集 参考资料 版权声明 综述 《Deep Learning based Recommender System: A Survey and New Perspectives》 《Use of Deep Learning in Modern Recommendation System: A Summary of Recent Works》 这几个综述比较全面,介绍了目前的深度学习在推荐系统中的应用。 协同过滤理论 1.《Application of Dimensionality Reduction in Recommender System - A Case Study》推荐系统的维度下降技术。 这是发表于2000年的“古老”论文,该文是最早探讨如何解决协同过滤数据量很大时的问题。这个论文提出了使用传统的SVD降维的技术。 这个文章提出推荐系统可以分为两部分:预测、推荐。预测可以使用加权和,推荐使用TopN。可能因为这个文章特别早吧,他认为推荐系统面临的主要问题是三个:稀疏,规模,“同义词”。当数据集稀疏的时候,皮尔逊近邻算法可能根本无法使用。规模很好理解。这个同义词的意思是两个相似的物品名字不同,推荐系统不能发现他们之间的隐相关性。同义词问题没看到这个文章怎么解决的,事实上我也没看到其他论文上如何解决这个问题,甚至已经不认为这是推荐系统要解决的问题了。 该文认为SVD的任务有两个: 1.捕捉用户和商品的隐层关系,允许我们计算用户对商品打分的预测值。 2.对原始的用户和商品关系进行降维,并且在低维空间计算邻居。 该传统的SVD是一种矩阵分解方法,这种方法的缺点是需要先把评分矩阵缺值补足,是一种线性代数里的求解析解的方法。这种方法可以研究的一个点就是如何进行缺失值填补,不同的填充方法,对结果产生不同的影响。另外就是SVD降维是代表维度k值的选取,这个需要使用实验获得。另外,真正的预测是放在线下运行的,可以在用户的访问时迅速做出推荐。 总体而言,这个文章介绍了SVD如何在推荐系统中使用,并通过实验说明了如何做预测和推荐。因为该矩阵分解方法和后来的矩阵分解差异已经很大,所以不放入后面的矩阵分解篇幅中。 2.《Amazon.com Recommendations Item-to-Item Collaborative Filtering》亚马逊发表的基于物品的协同过滤 在 User-based 方法中,随着用户数量的不断增多,在大数量级的用户范围内进行“最近邻搜索”会成为整个算法的瓶颈。Item-based 方法通过计算项之间的相似性来代替用户之间的相似性。对于项来讲,它们之间的相似性要稳定很多,因此可以离线完成工作量最大的相似性计算步骤,从而大大降低了在线计算量,提高推荐效率。 在 Item-based 方法中,要对 A 和 B 进行项相似性计算,通常分为两步:1)找出同时对 A 和 B 打过分的组合;2)对这些组合进行相似度计算,常用的算法包括:皮尔森相关系数、余弦相似性、调整余弦相似性和条件概率等。伪代码如下: 3.《Item-Based Collaborative Filtering Recommendation Algorithms》影响最广的,被引用的次数也最多的一篇推荐系统论文。 文章很长,非常详细地探讨了基于Item-based 方法的协同过滤,作为开山之作,大体内容都是很基础的知识。文章把Item-based算法分为两步: (1)相似度计算,得到各item之间的相似度 基于余弦(Cosine-based)的相似度计算 基于关联(Correlation-based)的相似度计算 调整的余弦(Adjusted Cosine)相似度计算 (2)预测值计算,对用户未打分的物品进行预测 加权求和。用户u已打分的物品的分数进行加权求和,权值为各个物品与物品i的相似度,然后对所有物品相似度的和求平均,计算得到用户u对物品i打分。 回归。如果两个用户都喜欢一样的物品,因为打分习惯不同,他们的欧式距离可能比较远,但他们应该有较高的相似度 。在通过用线性回归的方式重新估算一个新的R(u,N)。 文章很经典,没有太难理解的部分,可以看别人的笔记:https://blog.csdn.net/huagong_adu/article/details/7362908 矩阵分解 1.《Matrix Factorization Techniques for Recommender Systems》矩阵分解,推荐系统领域里非常经典、频繁被引用的论文。 这个论文是推荐系统领域第一篇比较正式、全面介绍融合了机器学习技术的矩阵分解算法(区别于传统的SVD矩阵分解)。矩阵分解是构建隐语义模型的主要方法,即通过把整理、提取好的“用户—物品”评分矩阵进行分解,来得到一个用户隐向量矩阵和一个物品隐向量矩阵。 在得到用户隐向量和物品隐向量(如都是2维向量)之后,我们可以将每个用户、物品对应的二维隐向量看作是一个坐标,将其画在坐标轴上。虽然我们得到的是不可解释的隐向量,但是可以为其赋予一定的意义来帮助我们理解这个分解结果。比如我们把用户、物品的2维的隐向量赋予严肃文学(Serious)vs.消遣文学(Escapist)、针对男性(Geared towards males)vs.针对女性(Geared towards females),那么可以形成论文中那样的可视化图片: 这种矩阵分解方法区别于传统的SVD,这种方法不仅不需要进行缺失值填补,而且相比于线性代数里的奇异值分解,该方法从问题的描述上就是一个最优化问题。给出目标损失函数,然后优化它。所以已经和SVD没什么关系了。 矩阵分解算法具有的融合多种信息的特点也让算法设计者可以从隐式反馈、社交网络、评论文本、时间因素等多方面来弥补显示反馈信息不足造成的缺陷,可以根据需要很容易的把公式进行改变。比如考虑到时间变化的用户、项目的偏差,可以对预测评分函数改写成: 2.《Feature-Based Matrix Factorization》从公式推导到优化方法,到参数更新策略讲得非常详细的一篇工程实践论文。 非常好的一篇文章,把矩阵分解讲的特别详细,强烈推荐一看。提出了基于特征的矩阵分解模型。其实这个模型并不是一个新的大的改变,只不过是对于已有的很多矩阵分解的变体进行了一个统一的形式定义。该文章把矩阵分解分为了用户特征、物品特征、全局特征,对这三个特征都有相应的系数矩阵。这个模型很容易地可以加上Pairwise方法,时间系数,邻域信息,层次信息等。本文也给出了优化矩阵分解模型选用的方法,参数更新公式,计算加速的方法等非常详细的说明。总体的框架如下图。 这个矩阵分解的速度可以很快,有点类似FM,不过比FM多了全局偏置。值得一看,一定会对矩阵分解有更深的认识。这个文章是偏向于工程实践的,所以循序渐进地引出来每个式子。和普通的论文的佶屈聱牙相比,绝对能看懂。唯一可惜的是没有看到公开的代码,如果发现了再补到这里。 3.《Probabilistic Matrix Factorization》PMF是对于基本的FunkSVD的概率解释版本,殊途同归 本文要提出一个解决非常系数和不平衡的数据集的模型,解决了很多在NetFlix数据集上运用矩阵分解失败的两个原因: 1.没法适用于大规模数据集 2.对于冷门的用户很难做推荐 它假设评分矩阵中的元素Rij是由用户潜在偏好向量Ui和物品潜在属性向量Vj的内积决定的,并且服从以下的正态分布: 同时,假设用户偏好向量与物品偏好向量服从于均值为0以下的正态分布: 对正太分布取log,之后会发现后面的正则化项和超参与数据集分布有关,是不变的。所以可以得到了要优化的目标方程: 所以,绕了一圈之后会发现,如果假如评分、用户、物品的向量是正太分布的话,那么就能通过数学方法推导出和SVD基本一致的目标方程,所以标题才直接取名概率矩阵分解机。这个思路很清奇,文章的后面又基于这个基本的目标方程进行了两种改进。 4.《Regression-based Latent Factor Models》基于回归的隐因子模型 这个论文其实就是对《Probabilistic Matrix Factorization》进行了改进。 本文也是基于高斯先验,但是把正太分布的均值从0-均值改成了基于特征的回归方法来计算,使得模型假设更有说服力。 优点是三个: 1.一个模型同时解决了冷热启动问题; 2.减少了使用共现物品或用户的相关性; 3.给预测提供了附加信息,提高了准确度。 5.《Collaborative Filtering with Temporal Dynamics》加入了时间变量的协同过滤 这个论文的想法是显然易见的:用户给物品的打分是随着时间变化而变化的。因此,该文在以前模型的基础上加入了时间因素。文中对两种推荐方法:基于邻域的模型、隐因子模型都做了相应的改进。主要的公式是: 实际应用的模型是基于SVD++改进的。本文基于这样的思想:用户和物品的偏置都会随着时间变化,用户的隐因子也会改变,但是物品的隐因子认为是不变的。另外在思考这个问题的时候也要考虑到把时间分箱时要兼顾到粗细粒度,本文还综合考虑了用户喜好随着时间的渐变和突变。因为这个文章比较全面系统,我觉得可以多看几遍。 6.《Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model》近邻方法+因子分解 这个文章自称是第一篇把近邻方法和因子分解方法融合到一起的论文。难点其实在于把近邻方法转换为因子分解方法相似的通过迭代更新参数进行求解的方式,而传统的近邻方法是基于原始数据集统计求解的、不需要迭代。 文章对最近邻模型只做出了多个改进:模型参数通过训练得到,加入了隐式数据,用户偏置项使用学习得到,对邻域个数进行了归一化。对因子分解方法主要采用了SVD++方法。最后的融合模型如下图,使用梯度下降更新参数。这个模型相当于三层模型的累加:基准模型+因子分解模型+最近邻模型。 这篇解读相当不错:https://blog.csdn.net/fangqingan_java/article/details/50762296 7.《Leveraging Long and Short-term Information in Content-aware Movie Recommendation》几个模型的融合 这个文章简直好大全。MF,LSTM,CNN,GAN全都用上了。 本质是学习得到用户和电影的隐层向量表示。学习的方式是最小化能观测到的电影评分预测值和真实评分值的方根误差。即MF的公式是: 另外,矩阵分解不能学到关于时间变化的用户口味的变化,所以本文用到了LSTM。文章整体的架构如下。 因子分解机 1.《Factorization Machines》大名鼎鼎的FM FM模型是一个可以用于大规模稀疏数据场景下的因式分解模型,这个模型的求解是线性时间复杂度的,他可以使用原始数据直接求解而不需要像SVM一样依赖支持向量。另外FM是个通用的模型,可以在任何实数数据上使用,可以做分类和回归甚至能做排序等任务。 FM的思想是在线性回归的基础上,增加了两个特征的线性组合,求解线性组合的方式是使用了矩阵分解的方式。因为如果数据本身就很稀疏,于是两个变量的共现数据极少,但是矩阵分解使得不同的特征对不再是完全独立的,而它们的关联性可以用隐式因子表示,这将使得有更多的数据可以用于模型参数的学习。目标函数如下: 上面的二次项矩阵可以通过数学进行优化,使得时间复杂度降为O(kN)。 2.《Field-aware Factorization Machines for CTR Prediction》大名鼎鼎的FFM FFM是对FM的改进,添加了Field的概念,也就是说每个特征归于哪一类。假设Field有f个。那么每个特征都要有f个隐向量。当两个特征做交叉的时候,使用每个特征与另外一个Field对应的向量求点积。这样的话,就能保证相同Field对同一个特征的作用是相同的,而不同Field的特征对同一个特征的作用是不同的。 另外,FFM不能向FM那样使用数学优化了,所以时间复杂度是O(kN^2). 3.《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》FM的深度学习版本 这个模型基于wide & deep做了改进,首先模型包括FM和DNN部分,是个并联结构,FM和DNN共享相同的输入(embedding)。每个Field独立地embedding到相同的维度,大大减少了网络参数。Field到embedding层的映射向量恰好是FM层学习到的向量。 deep FM的优点: 1)不需要任何预训练 2)学习到了低维和高维特征交叉 3)一个特征embedding的共享策略来避免特征工程 基于内容的推荐 《Content-Based Recommendation Systems》 基于内容做推荐的综述文献。 这个文章是篇综述,没有很深的理论。文章分析了数据分为了结构化的数据和非结构化的数据,然后介绍了常见的机器学习算法,如决策树,线性模型,kNN方法,朴素贝叶斯等等方法。很适合作为推荐系统及其相关机器学习方法的入门教材。 基于DNN的推荐 《Deep Neural Networks for YouTube Recommendations》谷歌神作,字字珠玑 Youtube推荐系统的比较老的解决方案,使用候选集生成网络和排序网络两部分。特征是用户embedding和视频embedding,加入了视频的曝光时间等特征作为训练。本来听起来是简单的解决方案,其实里面把推荐系统工程化的问题都一一介绍了,让我们更清楚地知道,线下模型训练的过程和线上服务过程分别怎么做的,多分类问题怎么加速等。值得仔细思考里面的每一步做法的用意。 推荐系统架构: 候选集生成网络: 王喆对这篇文章进行了更详细的解读,并探讨了工程化的问题:https://zhuanlan.zhihu.com/p/52169807 基于标签的推荐 《Tag-Aware Recommender Systems: A State-of-the-art Survey》综述。 原本以为基于标签的推荐很简单,其实我错了,这个综述我就没看太懂。不过基于标签的推荐在实践里还是挺重要的,比如用户给主播打的标签可以用作推荐。 文章指出标签的作用: 1.反映用户的喜好 2.表达了物品的语义信息,来帮助评估潜在的用户质量 3.标签之间的重复出现的情况表现了用户的社区和物品的聚类情况。 因此,标签可以帮助解决冷启动问题。 1.基于网络的模型 2.基于张量的模型 3.基于主题的模型(LDA) 基于自编码器 《AutoRec: Autoencoders Meet Collaborative Filtering》 《Training Deep AutoEncoders for Collaborative Filtering》NVIDIA的文章,偏向于工程实现 《Deep Collaborative Autoencoder for Recommender Systems:A Unified Framework for Explicit and Implicit Feedback》 《Collaborative Denoising Auto-Encoders for Top-N Recommender Systems》对推荐系统的归纳很好,公式很详细。 这几篇文章的思想基本一样,本质都是协同过滤。优化的目标在自编码器的基础上稍作修改,优化目标里只去优化有观测值的数据。 Item2Vec 《Item2Vec: Neural Item Embedding for Collaborative Filtering》微软的开创性的论文,提出了Item2Vec,使用的是负采样的skip-gram 《Item2Vec-based Approach to a Recommender System》给出了开源实现,使用的是负采样的skip-gram 《From Word Embeddings to Item Recommendation》使用的社交网站历史check-in地点数据预测下次check-in的地点,分别用了skip-gram和CBOW 固定窗口的skip-gram的目标是最大化每个词预测上下文的总概率: 使用shuffle操作来让context包含每个句子中所有其他元素,这样就可以使用定长的窗口了。 上下文感知模型 《A Context-Aware User-Item Representation Learning for Item Recommendation》 这个文章提出,以前的模型学到的用户和物品的隐层向量都是一个静态的,没有考虑到用户对物品的偏好。本文提出了上下文感知模型,使用用户的评论和物品总评论,通过用户-物品对进行CNN训练,加入了注意力层,摘要层,学习到的是用户和物品的联合表达。更倾向于自然语言处理的论文,和传统的推荐模型差距比较大。 基于视觉的推荐 1.《Telepath: Understanding Users from a Human Vision Perspective in Large-Scale Recommender System》京东最近公开的推荐系统,通过研究商品的封面对人的影响进行推荐 这个文章参考大脑结构,我们把这个排序引擎分为三个组件:一个是视觉感知模块(Vision Extraction),它模拟人脑的视神经系统,提取商品的关键视觉信号并产生激活;另一个是兴趣理解模块(Interest Understanding),它模拟大脑皮层,根据视觉感知模块的激活神经元来理解用户的潜意识(决定用户的潜在兴趣)和表意识(决定用户的当前兴趣);此外,排序引擎还需要一个打分模块(Scoring),它模拟决策系统,计算商品和用户兴趣(包括潜在兴趣和当前兴趣)的匹配程度。兴趣理解模块收集到用户浏览序列的激活信号后,分别通过DNN和RNN,生成两路向量。RNN常用于序列分析,我们用来模拟用户的直接兴趣,DNN一般用以计算更广泛的关系,用来模拟用户的间接兴趣。最终,直接兴趣向量和间接兴趣向量和候选商品激活拼接在一起,送往打分模块。打分模块是个普通的DNN网络,我们用打分模块来拟合用户的点击/购买等行为。最终这些行为的影响通过loss回馈到整个Telepath模型中。在图右侧,还引入了类似Wide & Deep网络的结构,以增强整个模型的表达能力。 2.《Visually Explainable Recommendation》可视化地可解释推荐模型 这个文章放在基于视觉的推荐的原因是,比较新奇的地方在于提取了商品封面的特征,并融合到了推荐和推荐解释之中。本文的基础模型使用商品的封面通过预训练好的VGG网络转化为图像向量。对特征进行加权求和之后的结果与商品的向量merge,再与用户的向量内积求总的向量结果,把该结果进行和用户是否购买的真实数据求交叉熵,优化该Loss.文章指出该模型最后训练的结果可以用推荐,也可以用注意力权重来做推荐解释。 本文还提出了进一步的模型Re-VECF。该模型使用商品的用户评论结合图像、用户和商品作单词预测训练GRU。加入用户评论的好处是可以提高推荐的表现、文本评论可能隐含着用户对商品封面重要的偏好。该模型能更好的做出推荐结果和推荐解释。 基于RNN的推荐 《Session-based Recommendations with Recurrent Neural Networks》 2016年的文章,GRU4Rec,使用每个会话中用户的行为记录进行训练。 《Recurrent Neural Networks with Top-k Gains for Session-based Recommendations》2018年的新文章,对上文进行了优化;原理相同的。 基于RNN的推荐也是源于一个朴素的假设:对于用户的行为序列,相邻的元素有着相近的含义。这种假设适合基于会话的推荐系统,如一次电子商务的会话,视频的浏览记录等。相对于电影推荐,基于会话的推荐系统跟看中短期内用户的行为。 论文想法在于把一个 session 点击一系列 item 的行为看做一个序列,用来训练一个 RNN 模型。在预测阶段,把 session 已知的点击序列作为输入,用 softmax 预测该session下一个最有可能点击的item。 这个文章里用的是GRU,目标是优化pair-wise rank loss。 有一个不错的论文解读文章:http://www.cnblogs.com/daniel-D/p/5602254.html 基于图的推荐 《Pixie: A System for Recommending 3+ Billion Items to 200+ Million Users in Real-Time》社交网站的图推荐,2017年 本文介绍了 Pinterest 的 Pixie 系统,主要针对他们开发的随机游走和剪枝算法,此外系统本身基于 Stanford Network Analysis Platform 实现。 基于树的推荐 《Learning Tree-based Deep Model for Recommender Systems》淘宝的推荐系统,2018年最新发布 基于树的推荐是一种比较新奇的一种推荐算法,其设计的目的主要是解决淘宝的巨大的数据问题,给出了一种能线上服务的实时推荐系统的模型。此外,本文证明了此模型在MovieLens-20M和淘宝自己的用户数据上的准确、召回、新奇性都比传统方法好。 采用的数据是隐式反馈,本模型提供几百个候选集,然后实时预测系统会进行排序策略。 树的作用不仅仅是作为索引使用,更重要的是把海量的数据进行了层次化组织。训练过程是如果用户对某个物品感兴趣,那么最大化从该物品节点到根节点的每个节点的联合概率。该路径上的每个节点都和用户有相关性,树的结构从底向上表现出了用户物品的相似性和依赖性。 如下图所示,左侧的三层全连接学习到用户的向量表示,右侧的树结构学到了节点的表示,最后通过二分类来训练出用户是否对该节点感兴趣。训练的损失函数是最小化一个用户对每个采样了的节点的交叉熵。(树结构类似于Hierarchical softmax,也同样使用了负采样等。) 公司的推荐系统的发展历程 《Related Pins at Pinterest: The Evolution of a Real-World Recommender System》Pinterest的推荐系统发展历程 这个推荐系统主要用到的是随机游走的图算法,Pin2Vec,Learning to Rank等方法。只介绍了思想,没有公式和算法。可以直接看解读:http://blog.csdn.net/smartcat2010/article/details/75194918 2013年的时候,推荐系统主要基于Pin-Board的关联图,两个Pin的相关性与他们在同一个Board中出现的概率成正比。 在有了最基本的推荐系统后,对Related Pin的排序进行了初步的手调,手调信号包括但不局限于相同Board中出现的概率,两个Pin之间的主题相似度,描述相似度,以及click over expected clicks得分。 渐渐地,发现单一的推荐算法很难满足产品想要优化的不同目标,所以引入了针对不同产品需求生成的候选集(Local Cands),将排序分为两部分,机器粗排和手调。 最后,引入了更多的候选集,并且提高了排序部分的性能,用机器学习实现了实时的个性化推荐排序。 数据集 《Indian Regional Movie Dataset for Recommender Systems》提供了印度本土的电影观看数据集 参考资料 『我爱机器学习』FM、FFM与DeepFM Factorization Machines 学习笔记 转载自https://github.com/fuxuemingzhu/Summary-of-Recommender-System-Papers

资源

【毕业设计】基于Opencv的车牌识别系统

【毕业设计】基于Opencv的车牌识别系统 主要实现 用python3+opencv3做的中国车牌识别,包括算法和客户端界面,只有2个文件,surface.py是界面代码,predict.py是算法代码,界面不是重点所以用tkinter写得很简单。 环境配置 python3.7.3 opencv4.0.0.21 numpy1.16.2 Tkinter PIL5.4.1 界面效果 算法实现 算法思想来自于网上资源,先使用图像边缘和车牌颜色定位车牌,再识别字符。 车牌定位在predict方法中,为说明清楚,完成代码和测试后,加了很多注释,请参看源码。 车牌字符识别也在predict方法中,请参看源码中的注释,需要说明的是,车牌字符识别使用的算法是opencv的SVM, opencv的SVM使用代码来自于opencv附带的sample,StatModel类和SVM类都是sample中的代码。 SVM训练使用的训练样本来自于github上的EasyPR的c++版本。 由于训练样本有限,测试时会发现,车牌字符识别,可能存在误差,尤其是第一个中文字符出现的误差概率较大。源码中,上传了EasyPR中的训练样本,在train\目录下,如果要重新训练请解压在当前目录下,并删除原始训练数据文件svm.dat和svmchinese.dat。 来源https://github.com/wzh191920/license-plate-recognition

资源

【毕业设计】基于Haar特征与AdaBoost算法的人脸检测的实现

基于Haar特征与AdaBoost算法的人脸检测的实现 实验过程 训练样本: MIT人脸数据库 样本尺寸:20*20px 样本个数:5971个样本,其中人脸样本为2429个 faces文件夹 包含人脸样本 nonfaces文件夹 包含非人脸样本 ======================================== 测试样本: 加州理工大学 人脸数据库 样本尺寸:896*592px 包含450个样本 faces_test文件夹 (程序剔除了部分非人脸样本,实际检测样本数约为440个) 实验结果 注:main.m 为主函数 里面包含训练和检测的主要操作说明和用法。 via:https://github.com/jzplp/Face-Detection

资源

【毕业设计】电影推荐系统

电影推荐系统 主要实现 实现用户登录、评分、推荐,采用协同过滤算法 系统流程 用户注册、登录系统,对看过的电影进行评分,点击提交评分按钮,再点击查看推荐按钮即可看见推荐的电影列表。项目主页以及推荐结果如下: 使用方法 1.首先将项目克隆到本地,用Pycharm打开movierecommend文件夹,并install项目依赖 2.将用到的csv文件导入mysql数据表中,详见数据库建表 ,配置好数据库;注意数据库相关代码(settings.py、views.py)可能都要进行修改以符合实际情况;(本项目端口号为3307,用户为root,密码为admin,database为MovieData); 3.命令行执行: 点击http://127.0.0.1:8000/ 即可查看注册登录以及评分页面。 注意登录后点击电影海报下面的星星对该电影评分,之后还要点击左上角的“提交评分”按钮才能将该评分数据存入mysql中,否则代码会报错。 项目依赖 1.Python3.6+django1.11 (python3.5亦可) 2.MySQL5.6 3.Jquery+CSS3+Html5 数据库建表处理 1.在MySQL中创建一个database,取好名字,比如MovieData; 2.在该数据库中创建moviegenre3和users_resulttable两张表,建表命令行如下: 3.通过命令行或者navicat等工具将项目data文件夹下的两张csv表分别导入上面创建好的两张table中。由于moviegenre3.csv中的超链接较复杂,建议使用navicat工具导入;users_resulttable表可以使用下面命令行导入: 注意,此表没有主键,增加主键操作为: 来源https://github.com/JaniceWuo/MovieRecommend#env

资源

【毕业设计】宜居城市信息可视化平台

研究目的 通过搜集城市相关数据,减少用户收集信息的时间,并为用户选择心目中的宜居城市提供更有利的依据。 研究方法 通过网络爬虫就城市的招聘、租房、城市的气候、空气质量指数、美食、旅游景点等等数据进行爬取入库,最后再进行数据的分析统计处理,并通过web可视化的方式展现这些信息变化的特征。 数据来源 招聘信息 招聘信息的数据来源为智联招聘,首先构造出城市+工作职位的url,以便我们更好的搜索数据和解析页面数据。 例如::http://sou.zhaopin.com/jobs/searchresult.ashx?jl=北京&kw=java (jl后边的是城市,kw为职位名), 根据此url解析第一页获取工作数量,智联招聘一页最多显示60条工作职位的信息,一共显示90页,所以我们根据获取的工作数量来确定需要抓取数据的页数,条数大于90页的则获取90页,小于90页的则使用实际页数。然后根据页数构建出最终的url:http://sou.zhaopin.com/jobs/searchresult.ashx?jl=北京&kw=java&p=1(p为页码) 最后抓取每一页上对应具体工作的url所对应的工作信息及其公司信息。统计出最大工资与最小工资的平均工资,中位数工资,以及工资和工作经验的关系等 房租信息 房租信息数据主要来源于赶集网,同样首先构建出对应城市url,例如: http://{}.ganji.com/fang1/o{}/ (第一个{}表示城市的汉子拼音首字母,第二个{}为页数),这里我们只抓取30页。统计出该城市有哪些中介公司,房屋的朝向和价格的关系,计算出每平米的价格等等。 城市气候信息 气候信息数据主要来源于天气网,构建出的url为http://lishi.tianqi.com/{}/index.html ({}为城市汉子的拼音)。抓取该城市自2011-01-01以来的所有天气信息。统计出对应的历史天气,风向、风力以及每月的气温变化等。 空气质量指数信息 AQI信息数据主要来源于中国空气质量在线监测分析平台历史数据网,构建出的url为https://www.aqistudy.cn/historydata/monthdata.php?city=北京 PM2.5历史数据网的数据主要是2013年12月到现在的数据。抓取每个月的数据统计量以及每月对应每天的数据量。统计AQI月变化的趋势以及等级月变化的趋势,统计等级的月数和天数。 旅游景点信息 景点信息数据主要来源于欣欣旅游网,构建的url为:http://{}.cncn.com/jingdian/1-{}-0-0.html (第一个{}为城市名的拼音,第二个{}为页数),首先抓取对应的页数,然后再针对每一页抓取当前城市的所有景点信息。将对应的景点的照片下载到本地,列表展示景点信息,统计出景点的热度排名。 美食信息 美食信息数据也来源于欣欣旅游网,构建的url为:http://{}.cncn.com/meishi/index{}.htm (第一个{}为城市名的拼音,第二个{}为页数)。同样先抓取页数,如果所抓取的页数为空,则说明只有一页。抓取该城市的所有美食信息,将美食图片下载到本地,列表展示之,并根据热度进行排名。 转载自:https://github.com/shenxianchun/cityview

资源

基于Django+LayUI+HBase的文献数据挖掘系统的实现

引言:本系统的目标是设计并实现一个基于分布式数据库HBase的文献数据挖掘系统,以帮助科研人员分析出相关科技前沿领域的专家、机构等的学术影响力。并挖掘领域高频词和不同协作者之间的关系图谱,如此便可达到科研决策支持的目的。以下将从几个方面进行简要介绍。 一、开发意义 科研文献是科技与学术的载体,高效的分析科研文献对科技的发展有着重要的推动作用。准确地提取出期刊会议中科研文献元数据里所隐藏的信息,可提高科研文献分析的准确度与效率。 二、功能架构设计 本系统的功能主要分为三个模块,分别是数据统计分析结果展示平台、后台管理系统和数据存储平台,其总体功能架构如图所示。 三、系统实现 3.1 开发环境及框架配置 考虑到系统需求,采用在CentOS系统上,搭建整个开发和运行环境,其中包括Hadoop分布式平台以及HBase分布式数据库,在Win10系统上搭建Django框架、关系型数据库MySQL等必要的开发环境。 环境/框架 名称/版本 操作系统 CentOS 7.5+Win10 数据库 MySQL 5.7+HBase 2.1.0 数据库管理软件 Navicat-10.1.7 主要编程语言 Python-3.6.6 Web服务器 Nginx服务器 后端框架Django 2.0.1 前端框架LayUI 2.4.5 前端框架Bootstrap 3.3.7 可视化图库ECharts 4.2.1 Hadoop 3.0.3 Zookeeper 3.4.13 Gephi复杂网络分析软件 0.9.2 3.2 主要技术实现过程 搭建Hadoop平台。使用四台云主机(CentOS7.5)搭建集群,配置好HDFS、ZooKeeper和HBase。 异步爬取数据。使用Python中的asyncio和aiohttp库,从而异步爬取AAAI人工智能会议的历年论文元数据(包括论文标题、摘要、作者、机构以及关键词等数据)存储到Excel表中,并对爬取的数据进行规则清洗和必要的人工清洗,得到较为干净的数据。 数据分析。1.利用Excel函数进行数据排重、统计、排序;2.利用Python构建作者数据的共现矩阵,然后将其三元组数据导入至Gephi软件进行复杂网络可视化并导出SVG可伸缩矢量图片;3.利用LDA主题模型对论文摘要进行主题聚类,得到top5热门话题;4.最终将清洗后的完整数据以及分析结果数据存储至位于云端的HBase中。 Web系统开发。使用Django+LayUI+Bootstrap开发(对于前端样式冲突问题可通过提升优先级解决),主要功能有注册登录、忘记密码邮箱验证、个人中心信息修改、全局检索、论文下载、数据分析结果展示(使用Echarts和Gephi进行数据可视化)以及词云图(中文使用jieba分词,英文使用wordcloud分词)等。同时使用Django第三方插件xadmin进行后台管理系统的快速注册和绑定。 系统部署。最后将系统部署到云端Nginx服务器中。 四、系统界面展示 4.1 系统主界面展示 4.2 用户注册登录页面 ①注册页面如下: 点击注册按钮后,系统邮箱会自动给注册用户邮箱发激活链接(如下图),当用户在个人邮箱中点击激活链接后方可登录,以此来确认注册为本人操作。 ②登录页面如下: ③忘记密码页面如下,使用邮箱验证修改密码: 用户在收到邮件后点击修改页面链接后,跳转到如下页面进行密码修改。点击“提交”按钮后会自动跳转到登录页面进行登录。如图为修改密码页面图。 4.3 用户个人中心 用户成功登录进入系统主页面后,可进入个人中心查看个人信息,同时可以完善或修改自己的个人信息,其中包括头像、密码、昵称、性别和地址等信息。 4.4 全局检索功能 全局检索功能主要方便用户快速查找所需信息。其中,本系统提供了“标题”、“作者”和“机构”三个方面的模糊查询服务,并对英文关键词大小写不敏感。如图为按论文标题查找,关键词为Machine LEARNING。 4.5 系统各项功能模块 4.5.1 论文所属国家分布(图表基于Echarts实现) 4.5.2 AAAI会议历年中稿率 4.5.3 AAAI词云图 ①动态词云图,使用WordArt第三方在线工具导入。 ②静态词云图,使用Python中的wordcloud制作。 4.5.4 AAAI作者关系图谱 在对作者数据构建共现矩阵并得出其三元组存储形式后,将数据导入到Gephi,使用力引导布局绘制出知识图谱,并以SVG矢量可伸缩图片保存,将其导入到HTML中,借用开源JavaScript包svg_Zoom_Pan实现可无限伸缩且可平移的网页效果 4.5.5 AAAI会议论文主题聚类(使用LDA主题模型) 其中top5主题分别是: 机器学习的理论和应用 自然语言处理 深度神经网络 知识表现与垂直搜索 博弈论与经济范式 4.5.6 AAAI会议论文概览及下载页面 点击标题链接后可进入到论文详情页面,可看到论文标题、摘要以及作者和所属机构,同时对于已登录用户可提供PDF论文下载服务。 4.5.7 AAAI会议论文作者统计 本系统对前五年的作者、前三年以及2018年的做了统计(其中细化为所有作者和第一作者两部分) 4.5.7 AAAI会议论文作者统计 本系统对前五年的作者、前三年以及2018年的做了统计(其中细化为所有作者和第一作者两部分) 4.6 系统管理后台 转载自https://github.com/SparksFly8/DataMingingPaper

资源

【毕业设计】多目相机的视频拼接

研究目的 主要研究内容是基于多目相机,利用图像拼接技术实现大尺寸图像的合成,然后在此基础上,利用多幅图像之间的空间关联,计算单应矩阵,通过图像融合的手段实现大尺寸视频的合成。 熟悉OpenCV基本函数的使用; 搭建Qt+OpenCV开发环境; 熟悉软件编写流程; 掌握多目相机的视频拼接的核心步骤和相关算法 设计并实现图像拼接和视频拼接算法的演示软件; 测试多个摄像头多组视频拼接结果 研究方法 软件方面 采用C+++Qt5.5.1+OpenCV2.4.9 硬件方面 摄像头:采用淘宝上最便宜的小钢炮摄像头,单个价格25元左右 摄像头固定装置:计算摄像头的视场,使用Autodesk 3ds Max设计固定装置,并使用3D打印技术打印 设计思路 图像拼接是视频拼接的核心技术,目前图像拼接技术大体可以分为三个步骤:图像的预处理、图像配准、和图像融合。而图像拼接研究的难点就是图像配准和图像融合。详细步骤如下图: 因为我们设计的相机阵列中的所有的相机设备之间的相对位置是固定不变的,因此任意两幅有重叠区域的图像之间计算得出的透视变换矩阵也是一样的,至少是非常接近的。为了保证视频拼接的实时性和准确性,与一般的视频拼接的方法相比较,我们最终采取的视频拼接的方法如下四步: 我们只需要从四个视频图像中捕获比较合适的图像,保存下来。 根据第一步的图像进行配准操作, 计算出四个摄像头图像之间的单应性矩阵,并且并存储在一个Mat 里面。 在剩下的那些需要实时拼接的视频帧,就可以直接调用存储在Mat 中的单应性矩阵,从而完成配准过程。 这样剩下的那些需要实时拼接的视频帧在拼接的时候就可以省去每次的特征提取配准的时间。只需利用透视变换矩阵进行图像变换拼接和图像融合两个步骤。 整个视频拼接的步骤如下: 研究结论 总结并归纳了图像拼接技术的国内外研究现状,总结并归纳了视频拼接技术的国内外研究现状。为了保证视频拼接的实时性和准确性,最终确定了采用 SURF 算法来作为视频的特征提取的主要算法,并且实现了整个拼接流程。 本文采用 OpenCV 开发平台来完成对实时视频流帧的分离拼接工作。对 OpenCV 视觉开 发平台进行了研究,并结合 Qt5.5 搭建了软件开发平台。 本文完成了非常快速的视频拼接,实现了视频拼接的实时显示 目录 第一章 绪论 1 ┊ 1.1 研究的背景和意义 1 ┊ 1.2 国内外的研究现状 1 ┊ 1.3 开发工具的介绍 2 ┊ 1.4 章节安排 3 ┊第二章 Stanford 大学的多相机阵列介绍 ┊ 2.1 早期的多相机阵列 5 ┊ 2.2 硬件组件 6 ┊ 2.3 系统结构 8 ┊ 2.4 最终多目相机阵列结构 8 ┊第三章 基于多相机的视频拼接的理论 1 ┊ 3.1 图像的变换模型 13 ┊ 3.1.1 仿射变换 13 ┊ 3.1.2 投影变换 13 ┊ 3.2 计算图像透视矩阵 14 第四章 图像拼接技术 15 ┊ 4.1 图像预处理 15 ┊ 4.2 图像配准 16 ┊ 4.3 图像融合 16 第五章 基于特征点的图像配准技术 17 ┊ 5.1 基于特征的配准算法概述 17 ┊ 5.2 SURF 特征提取 18 ┊ 5.3 FLANN 特征匹配 22 第六章 图像融合技术 23 ┊ 6.1 直接平均法 23 ┊ 6.2 加权平均法 23 第七章 多目视频实时拼接技术 27 ┊ 7.1 多目视频实时拼接的理论支持 27 ┊ 7.2 多目视频实时拼接的步骤 27 ┊ 7.2.1 视频采集 28 ┊ 7.2.2 摄像头选取 28 ┊ 7.2.3 确定摄像头相对位置 28 ┊ 7.3 多目视频实时拼接总结 28 ┊ 7.4 软件设计结果 29 转载自: https://github.com/suncle1993/VideoStitching/blob/master/paper/%E3%80%9002%E6%AF%95%E4%B8%9A%E8%AE%BA%E6%96%87%E3%80%91%20%E9%99%88%E4%BA%AE_%E5%A4%9A%E7%9B%AE%E7%9B%B8%E6%9C%BA%E7%9A%84%E8%A7%86%E9%A2%91%E6%8B%BC%E6%8E%A5.pdf

  • 1
  • 14
  • 15
  • 16
  • 20
前往