在线图片标题生成系统设计和实现计算机科学与技术专业

上传人:文*** 文档编号:240899626 上传时间:2024-05-16 格式:DOC 页数:40 大小:1.86MB
返回 下载 相关 举报
在线图片标题生成系统设计和实现计算机科学与技术专业_第1页
第1页 / 共40页
在线图片标题生成系统设计和实现计算机科学与技术专业_第2页
第2页 / 共40页
在线图片标题生成系统设计和实现计算机科学与技术专业_第3页
第3页 / 共40页
点击查看更多>>
资源描述
目 录前 言1第一章 绪 论21.1 研究背景21.2 国内外的研究的发展21.3 主要功能概述41.4 本文组织结构4第二章 图片标题生成器相关算法52.1 用于特征提取的深度卷积神经网络52.1.1 LeNet-552.1.2 AlexNet52.1.3 Inception v362.2 用于训练语言模型的深度循环神经网络和长短期记忆网络62.2.1 深度循环神经网络62.2.2 长短期记忆网络82.3 NIC(Neural Image Caption)模型介绍92.4 本章小结11第三章 相关技术简介123.1前端相关技术简介123.1.1 html语言简介123.1.2 bootstrap框架简介123.2后端相关技术简介123.2.1 Python语言简介123.2.2 django框架简介133.2.3 tensorflow系统简介143.2.4 ajax技术简介153.2.5 mysql数据库简介153.3 本章小结15第四章 在线图片标题生成系统的需求分析及设计164.1 可行性分析164.1.1 技术可行性164.1.2 组织可行性164.1.3 时间可行性164.1.4 经济可行性164.1.5 结论174.2 需求分析174.2.1 功能需求分析174.2.2 性能需求分析174.2.3 可靠性分析184.2.4 可新增功能分析184.3 系统设计184.3.1 整体代码结构184.3.2 系统用例图模型194.3.3 系统设计总结204.4 本章小结20第五章 在线图片标题生成系统的具体实现215.1 系统功能展示215.2图片上传区255.3 图片识别区275.4 意见反馈区275.5 本章总结33第六章 总结与展望346.1 本文总结346.2 未来的展望34参考文献35致谢36摘 要近年来,伴随着计算机科学技术和信息科学技术的快速发展,互联网发展进入了大数据时代。而在大数据时代中,数据的价值也变得越来越高。如何从大量无效数据中提取出有效数据变成了一个重要的任务。而对数据进行筛选的一个重要任务就是对数据进行预处理,即如何有效地对数据进行标注。因为对数据进行标注是管理和使用数据的一个重要前提。而在大量的数据中,图像数据是其中占比很大又处理较为困难的一类数据。本文的图片标题生成技术就是图像标注的另一种称呼。图片标题生成技术不仅能帮助人们管理无标记的图片,还能帮助有理解障碍的人理解图片的内容。本次毕业设计利用谷歌基于tensorflow的图片标题生成的开源程序,设计了一个基于Python程序的web网站,通过这个网站将如今已经拥有良好图片标题生成效果的图片标题生成技术展现出来,让更多人了解使用到这个技术。同时,这个网站可以帮助收集人工资料,为完善这项技术提供更多的参考。关键词:图片标题生成系统;Python;html;django;tensorflow;AbstractIn recent years, with the rapid development of computer science technology and information science and technology, the development of the Internet has entered the era of big data. In the era of big data, the value of data has also become higher and higher. How to extract valid data from a large amount of invalid data becomes an important task. The important task of filtering data is to preprocess the data, that is how to label the data effectively. Because labeling data is an important prerequisite for managing and using data. In a large amount of data, image data is a type of data in which the proportion is large and it is difficult to handle. This articles picture title generation technology is another name for image tagging. Image title generation technology not only helps people manage unmarked pictures, but also helps people with understanding disabilities understand the content of pictures.The graduation project designed a Python-based web site using Googles open source program for tensorflow-based image title generation.At the same time, this website can help collect manual data and provide more references for improving this technology.Keywords: a image caption generator;Python;html;django;tensorflow;前 言伴随着机器翻译和大数据的兴起,出现了图片标题生成技术的研究浪潮。使用较为准确的语句自动描述图像的内容是一项非常具有挑战性的任务,但是这项任务却可能有着巨大的影响和非常广泛的应用场所。例如,在幼儿教育领域可以帮助小孩子看图识字;在医疗生活领域可以帮助视觉障碍人士更好的理解图像的内容;在图像检索方面可以帮助标记出图像描述的内容方便检索。比起已经经过深入研究的图像分类或目标识别任务,这项任务显得更加困难,因此它也是目前是计算机视觉领域的主要焦点。本次毕业设计就是围绕这个诞生还没有多久在线图片标题生成技术,设计一个在线图片标题生成的相关网站。在本文中,我们首先大概的介绍了这个技术的背景和发展以及我们要设计的是一个怎样的网站。接着我们详细介绍了图片标题生成的相关算法和模型。然后,我们又对设计这样一个网站所需要的技术进行了具体的描述和对比,找到用于本次毕业设计的合适技术。然后再对具体构造网站进行了可行性和需求分析,并作出概要设计。之后,利用这些技术将网站的具体实施代码和相关功能和显示效果进行介绍。最后再总结本次毕业设计,对进一步开发进行展望。第一章 绪 论本章首先重点介绍了图片标题生成技术的背景及其重大意义,接着介绍了在线图片标题生成系统的一些模块以及其功能,然后介绍了建立本系统所需要做的主要工作和本系统的一些创新点,最后介绍了目前图片标题生成技术存在的一些问题。1.1 研究背景伴随着机器翻译和大数据的兴起,出现了图片标题生成技术的研究浪潮。使用较为准确的语句自动描述图像的内容是一项非常具有挑战性的任务,但是这项任务却可能有着巨大的影响和非常广泛的应用场所。例如,在幼儿教育领域可以帮助小孩子看图识字;在医疗生活领域可以帮助视觉障碍人士更好的理解图像的内容;在图像检索方面可以帮助标记出图像描述的内容方便检索。比起已经经过深入研究的图像分类或目标识别任务,这项任务显得更加困难,因此它也是目前是计算机视觉领域的主要焦点。近些年来的许多研究工作都取得了巨大的发展,比如计算机视觉和自然语言的深层模型、图像-句子检索、为图像生成最新的句子描述。在这些发展的方法中,大多将图片标题生成看做检索任务。他们为句子和图像提取特征,然后将这些特征相互映射,存入到语义嵌入空间中。这些方法对给定的图像进行检索获得其映射的句子,或是对给定的句子进行检索已获得它所映射的图像。但是,这样的方法存在着很大的缺陷,即他们都只能用于查询图像标注数据集中已经存在的图像的句子描述。而在实际工作中,我们所遇到的更多情况都是对没有存入的图像、场景进行的处理。而卷积神经网络和循环神经网络相结合的模型,恰好可以较好的处理这种情况。1.2 国内外的研究的发展将卷积神经网络和循环神经网络结合的模型用于解决图像标题生成的问题的研究最早是从2014开始提出,在2015年开始对模型各部分组成上进行更多尝试与优化,到2016年的国际计算机视觉与模式识别会议上成为了一个热门的专题。在这个发展过程中,将卷积神经网络和循环神经网络结合的核心思路并没有发生变化,变化的是使用了更好更复杂的卷积神经网络模型,效果更好的长短期记忆网络模型,图像特征输入到循环神经网络中的方式,以及更复合的特征输入等。2014年10月,百度研究院的Junhua Mao和Wei Xu等人提出了多模态循环神经网络模型,创造性地将深度卷积神经网络和深度循环神经网络结合起来用于解决图像标题生成和图像语句检索的相关问题。这也应该是第一个采用多模态循环神经网络架构的神经网络模型。2014年11月,谷歌的Vinyals等人提出了NIC(Neural Image Caption)模型,该模型放弃了使用循环神经网络转而采用长短期记忆网络,同时在卷积神经网络部分采用了更好的技术。方法PASCAL(xfer)Flickr30kFlickr8kSBUIm2TextTreeTalkBabyTalkTri5Semm-RNNMNLM2555564858511119SOTA25565819NIC59666328Human696870表1-1 不同算法在不同数据集上的BLEU-1得分的比较在表1-1中,我们可以看到NIC模型的评分比起多模态循环神经网络的评分有了显著的提高。同时,随着对于循环神经网络和卷积神经网络的优化,更多更好的图标标题生成技术在出现。但是,比起人类的判断仍然有着较大的差距。因为,通过这些技术生成的自然语言描述都是服务于人类的。虽然在很多的图像标注评价标准中,许多现在的模型在评分上与人类已经不相上下甚至有赶超趋势。比如在表1-2中根据谷歌发表的论文,我们可以看到当使用微软的coco数据集时,谷歌的NIC模型和人类的得分已经难分高下。但是将该模型所得到的自然语言描述给人类来评判时,我们发现现有的自动评价标准仍然存在着许多瑕疵和漏洞。这也意味着,图片标题生成技术目前仍然有着很大的改进空间。测量集BLEU-4METEORCIDERNIC27.723.785.5RamdmNearest NeighborHuman4.69.921.79.015.725.25.136.585.4表1-2 bleu标准下各类数据集各种模型的评分1.3 主要功能概述本次毕业设计的目标是开发一个在线的图片标题生成系统。设计一个网站,实现上传图片并得到相应的自然语言描述。网站分为图片上传区、结果展示区和意见反馈区。开发这样的一个在线图片标题生成系统,可以将现有的图片标题生成技术,可视化的展现在大家面前。更加封装的实现图片到自然语言的转换。同时可以收集一些人类对于所使用的图片标题生成技术的水准评价,为以后进一步优化系统提供帮助。1.4 本文组织结构本文共分为五章,各章内容如下:第一章:绪论。本章介绍了课题的研究背景及意义、BitTorrent协议及典型的BitTorrent系统的组成、本文的主要工作及主要创新点,最后介绍了本文的组织结构。第二章:图片标题生成器相关算法。本章详细介绍了图片标题生成系统所用到的相关算法,只有理解了这些算法,才能更好的设计系统。第三章:相关技术简介。本章介绍所设计的系统所用到的核心技术,并将这些技术与其他技术进行对比。第四章:在线图片标题生成系统的需求分析及设计。本章对网站进行了可行性分析、需求分析和概要设计,通过这一章,我们可以了解系统的大概框架,为下一步具体实现做铺垫。第五章:在线图片标题生成系统的具体实现。本章介绍了在线图片标题生成系统的具体功能和实现所用到的相关代码。第六章:总结全文,提出未来工作的设想与展望。第二章 图片标题生成器相关算法本章首先介绍了在线图片标题生成系统中所使用的图片标题生成器所用到的卷积神经网络、循环神经网络算法以及它们的结合使用。接着介绍了我们所用到的一个基于tensorflow系统的图片标题生成器的相关功能及其原理。2.1 用于特征提取的深度卷积神经网络目前我们常用到的将卷积神经网络和循环神经网络相结合的模型中,卷积神经网络所起到的作用主要是用来提取图像的特征并将其传给循环神经网络进行训练。因此,对于卷积神经网络的选择,将很大程度影响到图片标题生成的效果。选择更复杂、效果更好的卷积神经网络,是改善图片标题生成结果的一个重要方式。接下来,将简单介绍两种常见的卷积神经网络模型。2.1.1 LeNet-5 LeNet-5由Yann LeCun教授提出,这个神经网络模型充分考虑图像的相关性。LeNet-5结构的特点如下:1)每个卷积层包含三个部分:卷积(Conv)、池化(ave-pooling)、非线性激活函数(sigmoid)2)MLP作为最终的分类器3)层与层之间通过稀疏连接减少计算的复杂度其网络结构图如图2-1所示:图2-1 LeNet-5网络结构图2.1.2 AlexNetAlexNet有5个卷积层和3个全连接层,其中移除任意一层都会降低最终的效果。比起其他的深度学习网络结构,AlexNet网络结构在图像分类中的错误率有着显著的降低。它之所以能有这么好的效果,是因为,首先,它使用了非线性激活函数Relu,这种激活函数得到的SGD收敛速度会比其他激活函数如sigmoid快的多。其次,它使用了防止过于拟合的方法Dropout和Data augmentation。同时,它采用了拥有百万级ImageNet图像数据的大数据训练。最后它还用到了多GPU训练。它的网络结构如图2-2所示:图2-2 AlexNet网络结构图2.1.3 Inception v3本次毕设所用到的卷积神经网络是比LeNet-5和AlexNet更加复杂的网络-Inception v3网络。这种网络既能保持网络结构的稀疏性,防止网络过于拟合或是复杂度过大难以应用;又能利用密集矩阵进行高性能的计算,是对GoogleNet的优化。Inception v3架构的主要思想是找出如何用密集成分来近似最优的局部稀疏结。Inception v3使用大尺寸的滤波器进行卷积分解,Inception模块是全卷积的,每个权值对应一个乘法运算,进行卷积分解后可以减少参数数目进行快速训练,这样就可以增加滤波器组的大小提升精度。Inception模块还将大卷积分解成了小卷积,55的卷积可以使用两层33卷积代替。这样的分解可以减少参数冗余,降低卷积核参数和计算量。同时,Inception模块还附加了分类器,并通过池化的方式降低特征图大小,有效避免信息的损失。2.2 用于训练语言模型的深度循环神经网络和长短期记忆网络2.2.1 深度循环神经网络在传统的神经网络中,我们会假设所有的输入(包括输出)之间是相互独立的。但是,在更多情况下,我们遇到的都是对多个任务的操作。这时,传统的神经网络采用的相对独立的假设,成为了一个非常糟糕的假设。如果你想预测一个序列中的下一个词,你最好能知道哪些词在它前面。循环神经网络之所以是循环的,是因为它针对系列中的每一个元素都执行相同的操作,每一个操作都依赖于之前的计算结果。换一种方式思考,可以认为循环神经网络记忆了到当前为止已经计算过的信息。理论上,循环神经网络可以利用任意长的序列信息,不过实际中,也只能回顾之前的几步。循环神经网络常用于语言模型和文本的生成。给定一个词的序列,我们想预测在前面的词确定之后,之后的每个词出现的概率。语言模型可以度量一个句子出现的可能性,这可以作为机器翻译的一个重要输入(因为出现概率高的句子通常是正确的)。能预测下一个词所带来的额外效果是我们得到了一个生成模型,这可以让我们通过对输出概率采样来生成新的文本。根据训练数据的具体内容,我们可以生成任意东西。在语言模型中,输入通常是词的序列(编码成独热码向量),输出是预测得到的词的序列。简单的循环神经网络结构如图2-3所示:图2-3 简单循环神经网络结构图它在每个时间帧中有三种类型的层:输入字层w,递归层r和输出层y。在t时刻被激活的输入层、循环层和输出层分别表示为w(t),r(t),y(t)。w(t)是当前单词的单热表示。该表示是二元的,并且具有与仅一个非零元素的词汇大小相同的维度。循环神经网络的大小与输入序列的长度相适应,并且循环层在不同时间帧内连接子网。 因此,当我们做反向传播时,我们会在一段时间内反复传播错误。接下来介绍一种多模式的递归神经网络,它比起简单的循环神经网络要复杂的多。其结构图如图2-4所示:图2-4 多模式的递归神经网络在这种神经网络中,在每个时间帧中有六层:输入字层,两个字嵌入层,循环层,多模态层和softmax层。这种神经网络模型有几个优点。首先,它会显著降低网络中的参数数量。因为密集的单词向量(128维)比单向量单词向量小得多。其次,它将密集词嵌入到编码的语义中。通过计算嵌入层中两个密集词向量之间的欧几里得距离可以找到语义相关词。2.2.2 长短期记忆网络原生的循环神经网络会遇到一个很大的问题,即循环神经网络梯度消失问题。也就是在后面的时间节点中对于前面时间节点的感知力度下降。这就导致了在循环神经网络中,每当网络层次变深,训练就无法进行了。而长短期记忆网络在某种程度上说,就是对循环神经网络的一种改进。长短期记忆模型的核心就是记忆单元细胞,它在每个时间节点对那些已经被输入并被观察到的知识进行编码。单元细胞的行为由门-乘法应用的层控制。如果门的值为1,则单元细胞的值为1,;如果门的值为0,则单元细胞的值也为0。具体实现上来说,使用到了三个门来控制是否忘记当前单元细胞的值,是否应该读取其输入以及是否输出新的单元格的值。关于长短期记忆网络的模型结构,如图2-4所示:图2-5 长短期记忆网络在图2-5中,长短期记忆网络内存块中,包含了一个由三个门控制的单元细胞c。蓝色的线显示了经常性的连接,在时间t-1处的输出m通过三个门在时间t被反馈给存储器;单元细胞的值通过遗忘门反馈;除了时间t的存储器输出m之外,时间t-1处的预测字被反馈到了用于字预测的softmax中。2.3 NIC(Neural Image Caption)模型介绍本次毕业设计,我们使用到的图片生成器使用到了NIC模型,这是一种端到端的神经网络系统,这个系统可以自动的查看图像,并生成简单的英语句子对图像进行合理的描述。NIC模型基于卷积神经网络,该网络将图像编码为紧凑表示,然后再使用循环神经网络生成相应的句子。使用的训练模型也以最大化给出了图像中句子的可能性。同时,这个模型的性能指标也得到了实验的验证。在通过几个数据集进行实验后,使用排序指标或是bleu指标(一种常用于评判机器翻译所生成的句子质量的指标),NIC模型在定性结果或是定量评估方面的检测都具有相当的稳定性。NIC模型的结构如图3-5所示:图2-6 NIC模型由图2-6知,NIC模型将长短期记忆网络模型结合卷积神经网络图像嵌入器和文字嵌入。 长短期记忆网络存储器之间的连接展开用蓝色箭头表示,它们对应于图2-5中的经常性连接。所有的长短期记忆网络共享相同的参数。图2-6的结构流程,也可以用以下公式进行概括:x1 = CNN(I) xt = WeSt, t0.N1 pt+1 = LSTM(xt), t0.N1 具体说来,在图像特征提取部分,NIC模型使用卷积神经网络。而在该模型中,使用了批量标准化的新方法。这种方法在2014年的ILSVRC分类竞赛中获得了最佳性能。同时,该模型还使用改进过的长短期记忆网络代替简单的循环神经网络进行语言模型的训练。循环神经网络模型经过训练,可以对读取的图像进行句子预测,得到关于图片描述的每个单词以及由p(St | I,S0,.,St-1)定义的之前的前单词。 为了达到这个目的,以展开的形式考虑长短期记忆网络是一种有效的方法,图像中创建的长短期记忆网络存储器的副本以及每个句子单词使得所有长短期记忆网络共享相同的参数,并且时间t-1处的长短期记忆网络的输出mt-1被传送给时间t时的LSTM。所有经常性连接都会转换为正在执行的连接。 另外,如果我通过输入图像和S =(S0,.,SN)描述了一个描述这个图像的真句子,我们将每个单词表示为维度与字典大小相等的独热向量St。请注意,我们用S0表示一个特殊的开始单词,用SN表示句子的开始和结束的特殊停用词。 尤其是通过严格的词汇来生成长短期记忆网络信号完整的句子。 图像和词都被映射到命名空间,通过使用词嵌入我们的图像通过使用视觉CNN。 图像I只在t = -1时输入一次,以通知LSTM图像内容。经过实验证明,如果在每一个时间节点都输入图像数据,将会导致较差的结果。网络可能会放大图像数据中的噪音,并且更容易过拟合。2.4 本章小结本章中详细介绍了图片标题生成器所用到的相关算法和模型。这对于理解图像标题生成器是如何运作的以及如何依靠这个图片标题生成器进行系统开发来说,是非常重要的。第三章 相关技术简介本次设计的在线图片标题生成系统,采用的是基于Python的web开发。要设计这样的一个系统,从前段的页面展示到后端的代码实现加上对于前后端的结合都用到了非常多的技术和结构。在进行web开发前需要找一个合适的web框架,本次毕业设计选择了现在较为留行的django框架。而编写前端页面用到了html语言、bootstrap框架;程序的后端使用的是Python语言。此外浏览器与程序之间的通信使用了ajax技术。3.1前端相关技术简介3.1.1 html语言简介html语言,也被称为超文本标记语言。 它本身不是一种编程语言,而是一种标记语言。 它拥有一组标签,这些标签被使用来标记所需要描述的网页。 标签必须包裹在尖括号中,并且每个标签通常都是成对的。 每对标签中在开头出现的为起始标签,最后出现的是结束标签。结束标签的尖括号内一般都会有斜杠。 在页面内我们可以通过该语言嵌入图片,链接,甚至音乐,程序或是其他非文本元素。3.1.2 bootstrap框架简介Bootstrap基于html,css和javascript,并在此基础上进行了扩展。 由于其简单性和灵活性,它使网站开发变得更加方便和快捷。 它是一个基于html/css的框架,为用户提供了一个优雅的html和css规范。 它是由动态css语言less编写的,同时,它在jquery的基础上进行了更多的人性化改进。 形成了自己独特的风格,最大的优势是它与大多数jquery插件兼容。 Bootstrap拥有非常丰富的Web组件。有了这些方便的组件,我们可以快速完成一个非常漂亮和实用的网站。 主要组件包括:下拉菜单,路径导航,分页,布局,按钮组,按钮下拉菜单,导航,导航栏,缩略图,警告对话框,进度条,媒体对象等等。3.2后端相关技术简介3.2.1 Python语言简介Python语言是一种简单易学,开发效率较高同时功能强大的解释性编程语言。它具有简单、易学、可移植性强、面向对象、可扩展性高、可嵌入性好同时有着丰富的库等诸多优点。它是一种高级语言,无需考虑许多底层的细节。它所拥有的庞大的标准库,可以帮助处理解决许多复杂的问题,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、html、WAV 文件、密码系统、GUI(图形用户界面)。它可以很好的适应要求快速开发的Web开发领域。3.2.2 django框架简介随着敏捷开发的盛行,传统的 Web 框架像 Struts,Spring,.NET 等由于其复杂性而很难满足人们的要求。而Python的快速开发能力使得其在 WEB 开发中应用广泛,因此也诞生了很多 Python 的 WEB 开发框架。现在流行的web框架主要有,如Flask(使用decorator的URL路由,但是框架的应用程序代码入侵太强)、bottle(缺少URL模式进行拦截的功能,不利于做权限检查)、web.py(使用类而不是简单函数处理url,且url映射单独配置)、django(一站式开发框架,但不利于定制化)。而本次毕业设计所选择使用的就是django框架。django框架采用MTV结构,即Model、Template、View。Model定义了数据的存储格式,并提供了数据库访问的API。View定义了哪些数据会被显示,是业务逻辑处理模块,用于Model处理数据的加工和模板的调用等工作。Template是模板系统,定义了数据是如何被显示的。django框架提供了强大的命令行工具django-admin帮助用户完成大量初始化及数据库相关工作。它的URL设计很漂亮,且支持多种数据库,包括mysql、sqlite3、oracle等。总的来说,django框架是一个高级的Web框架,免去了实践动态Web站点的痛苦,简化了编程任务。使用django框架可以极大提高开发速度,且结构严谨、设计干净利落,十分利于后期的维护。django框架开发流程如图3-1:图3-1 django框架开发流程图3.2.3 tensorflow系统简介本次毕业设计之所以选择Python作为后台开发语言,很重要的一个原因就是本次实验所用到的图片标题生成系统需要用到机器学习的系统。目前较为出名的深度学习框有tensorflow、torch、theano、deeplearning等。而本次毕业设计所用的谷歌所推出的tensorflow机器学习系统对于开发我们的系统有着巨大帮助,谷歌将基于tensorflow的图像叙事功能程序开源,方便了我们进行本次开发。tensorflow是谷歌基于DistBelief开发的新一代开源人工智能学习系统,是用来实现神经网络的内置框架学习软件库。它的命名源自于它本身的运行原理,Tensor(张量)代表N维数组,Flow(流)表示的是基于数据流图的计算,即tensorflow代表张量从流图的一端流动到另一端的计算过程。它可以将传入系统的复杂数据结构进行分析处理。而图像识别领域的许多问题就和这个系统完美契合。tensorflow的代码框架十分灵活,它可以运行在个人计算器或者服务器的一个或多个GPU或CPU上。3.2.4 ajax技术简介Ajax即是“Asynchronous Javascript And XML”,它是一种技术,在javscript中使用ajax技术用于在web浏览器与服务器之间的数据交互。使用ajax技术可以实现动态网页,即在不刷新网页的情况下加载后台程序的数据。而ajax所拥有的get和post方法,是客户端和服务器进行请求-响应的常用方法。Get常用于向指定资源请求数据,而post则用来提交数据。这些方法都是实现系统的重要技术。3.2.5 mysql数据库简介mysql是一个关系型数据库管理系统,相比其它数据库而言,体积小、速度快、总体成本低,使用简单。本次毕业设计开发的是一个相对较小的系统,所用使用mysql数据库十分合适。3.3 本章小结本章主要介绍了开发这个在线图片标题生成系统所用到的一些技术和框架,以及我对这些技术的理解看法。如何选择合适的技术进行自己的系统开发,也是成功开发系统的先决条件。第四章 在线图片标题生成系统的需求分析及设计本章首先介绍了开发在线图片标题生成系统的可行性及需求分析。接着介绍了系统开发的总体设计。4.1 可行性分析4.1.1技术可行性由于谷歌将用于图像识别的tensorflow程序开源,实现图像标题生成的后台功能变的没有那么困难。而如今Python程序的web开发也变得越来越流行,有许多已有的开发框架可以帮助我们进行本系统的开发。而使用html语言进行前端开发也不是一件难事,因此要实现在线图片标题生成系统具有技术可行性。4.1.2组织可行性所谓组织可行性,指的是如何规划自己的学习和开发计划。本次开发,我首先给自己制定了任务计划书,为自己之后设定了大概的方向。首先,当然是要学习相关基础知识,如后端语言所涉及的Python语言极其web开发相关知识、前段涉及的html语言、mysql数据库语言等;之后对系统进行需求分析之后展开分布开发,最后捏合整个系统。由于设计出了可行的计划,系统开发的组织可行性是完全没问题的。4.1.3时间可行性本次开发的时间相对来说是较为充足的,大四下学期除了研究生复试之外和一定的实习之外并没有其他的太多工作。虽然之前对于web开发和Python语言接触的机会比较少,但是由于时间较为充裕,可以利用这些时间对这些技术进行网络上的自学。只要按照计划完成每天的学习任务和开发任务,本次系统开发的时间可行性也是十分充足的。4.1.4 经济可行性经济可行性即指的是开发系统所用到的资金成本是否合理。由于本次系统开发的一些开发工具比如pycharm、mysql、hbulider等基本都是免费的,而后期部署服务器虽然需要付费,但是由于学生的身份在阿里云或是腾讯云租用服务器或是购买域名都能获得较大优惠,当然也可以将系统部署在导师所提供的Linux服务器上。因此,总的来说,本次的系统开发属于零成本开发,具有很强的经济可行性。4.1.5 结论通过上面的可行性分析可知,本次开发是完全可行的。只要能制定良好的机会,并按时履行计划,顺利完成开发不是问题。4.2 需求分析本小节对系统分别进行了功能需求分析、性能需求分析、可靠性分析以及可能新增功能分析。4.2.1功能需求分析设计一个基于Python的web网站,实现的主要功能是在线图片标题是生成。具体展开分析系统的功能,可得功能需求如下:(1) 首先该系统需要一个图片上传区,满足用户上传图片并将所需进行标题生成的图片显示在网页上的功能;(2) 其次需要有图片标题生成的功能,即系统的最主要功能。让用户将上传的图片转换为标题描述并进行不同程度的展示。(3) 最后,该系统需要一个数据收集区,使用户在看到图片标题生成的结果后,对生成的结果进行评价并提出改善的建议。当然,收集到的数据可以导入数据库已进行更深层次的分析。4.2.2性能需求分析所谓的性能需求分析,就是分析一个系统的响应速度和计算速度。如何更快更好的获得图片标题的分析结果是性能需求分析的主要目标。系统的性能受很多因素的影响,包括使用的编程语言、业务需求以及算法的设计等。本次系统设计,前端采用html语言后端采用Python语言,html语言可以帮助我们便利的开发出一个较为漂亮的界面,而Python语言在图像识别领域具有较为方便的算法实现和更好的实现效率。而如何改善算法也是提高系统性能的一个重要方法。4.2.3 可靠性分析所谓的可靠性,指的是系统是否具体较强的鲁棒性。即系统能否可靠运行,避免许多可能出现的错误,稳定的运行。在本系统中,我们需要考虑的可靠性很多,比如上次图片的格式等。如何在设计系统的时候尽可能的多考虑可能遇到的错误可以有效提高系统的可靠性。4.2.4 可新增功能分析除了满足现有的功能,系统还需要有一个更强的扩张性满足系统以后的进一步开发。而本系统除了目前设计的图片标题生成功能和数据收集功能。在结果显示上也具有很多可扩展的功能,比如将生成的句子中的每个单词的概率展示出来已经如何将生成的单词和图片的对应区域进行显示是之后开发时可以优先扩展的功能。4.3 系统设计4.3.1 整体代码结构本系统采用django框架,而django框架才有MTV模式,其结构图如4-1所示。其中M代表model,它负责数据的存储问题,系统中连接mysql数据库的部分由该层实现,关于如何验证数据有效性和数据之间的关系都是该层的工作;T代表template,意思是模板,即表现层,它是用来存放我们写的html文件的,系统的网页显示由模板层负责;V代表view,意思是视图,即业务逻辑层,这一层是用来存取和调用模板的;我们的用它来实现模板间的联系。通过view层调用模板和开源的图片标题生成程序实现系统功能。再通过Manage程序将他们捏合在一起。图4-1 django框架图4.3.2 系统用例图模型用例图是由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。用例图(User Case)是外部用户(被称为参与者)所能观察到的系统功能的模型图。针对本系统的用户需求,设计用例图的模型,如图4-2所示。图4-2 用例图4.3.3 系统设计总结本节主要介绍系统开发的概要设计,主要包括两方面的内容,第一是代码的结构设计,大的方向分为三层结构,model层、view层、controller层,这样的设计结构,方便代码的管理,看起来也比较整洁,对于各种处理可以很直观的看到。第二是介绍了本系统所涉及的用例图,这样我们可以更加清楚的了解系统的各个功能模块和用户之间的关系。4.4 本章小结本章主要对我们要设计的在线图片标题生产系统进行了可行性分析、需求分析和系统代码结构的设计。通过本章,我们可以更加清晰的了解所设计系统的结构和它要实现的功能。这为下一章具体实现系统提供了铺垫。第五章 在线图片标题生成系统的具体实现本章将对在线图片标题生成系统的各个功能模块进行了详细的说明。将系统完成的显示效果和程序代码也进行了展示。5.1 系统功能展示1. 首先进入系统页面,具体样式如图4-1所示5-1系统页面2. 点击选择文件进行图片上传,选择图片格式的文件进行上传。上传文件时应该选择图片格式文件,否则会报错。5-2 完成图片选择3. 点击“点击上传”按钮完成图片上传。5-3 图片上传成功4. 点击“点击识别”按钮进行图片标题生成。5-4 图片正在识别5. 点击点击识别按钮进行图片标题生成。图片标题显示的结果将在右侧的识别结果区域进行展示。一共将有四种结果展示在识别区域中,根据系统计算的概率由大到小依次显示,同时用不同的颜色背景对它们进行由深到浅的标注。5-5 完成图片识别5.2图片上传区图片上传区即对想要进行图片标题生成的图片进行上传的区域。该区域提供图片选择和上传选项,以及所上传图片的展示区域。图片上传区的数据传送方式的代码见如图5-6、5-7所示5-6 上传图片代码15-7 上传图片代码25.3 图片识别区图片识别区对已经上传的图片进行图片标题的转换,获得结果,并将结果显示展示在结果区域。显示的结果中展示了对于上传图片中概率最高4个自然语言描述。同时将鼠标移动到每个单词上也可以得到每个单词的概率。便于使用者了解改图片标题生成系统的运行结果以及各种细节。图片识别相关代码见图5-8:5-8 图片识别区代码5.4 意见反馈区该区域中,可由用户对图片标题的生成结果进行评价。用户可对生成的图片标题的准确度进行评价,输入句子中表达有错误的单词,并将自己认为正确的结果进行上传。系统可将得到的反馈结果存入数据库作为之后修改这个图片标题生成器的参考。同时,我们可以将用户上传的人工语言描述传入训练集,以达到优化模型的效果。同时,我们还可以将收到的反馈数据传入数据库,以作为之后的进一步开发的参考。该区域的具体操作如图5-9、5-10、5-11、5-12所示,而它们的相关代码将在5-13中展示:5-9 点击评分5-10 改善建议5-11 错误单词反馈5-12 最优结果5-13 反馈区代码实现而关于如何链接mysql数据库的代码,存放在了该程序的model层中。通过图5-14中的代码,实现将数据反馈区得到的数据传送给mysql数据库。5-14 model层代码5.5 本章总结本章基于已经训练好的im2txt/model谷歌tensorflow开源图像标题生成程序,在此基础上对该程序进行修改调用,设计了一个在线图片标题生成系统。实现图片标题生成及展示,用户对生成标题评价等功能。第六章 总结与展望6.1 本文总结经过了大约半年的努力,本次毕业设计的工作也已经基本完成。在开始本次毕业设计之前,我对设计系统所用到的Python语言和html语句都只停留在了解的程度。通过在网上对这些开发语言和相关系统结构的深入了解和学习,我终于一步步的完成了对本次毕业设计的设计、构造和实现。在程序设计的过程中,由于缺乏相关的开发经验,遇到了不少的问题。但是,经过指导老师的悉心指导和热心同学的帮助,终于解决了重重苦难。6.2 未来的展望本次毕业设计所设计的在线图片标题生成系统,实现了简图片标题生成的功能和图片标题的简单展示,还提供了用户建议的反馈功能。在后续的进一步开发中,可以考虑将更多格式的图片进行上传。而在图片展示区,也可以考虑以更加丰富的形式展现图片标题的生成结果。比如,当我们将鼠标移动至生成的自然语言描述的特殊单词上时,可以将图片上的相对应区域以阴影块的形式进行映射。另外,在用户反馈区也可以尝试提供更多形式的反馈建议。当然,除了对网站的展示格式进行改善,将图片标题生成器进行优化也是更快的完成图片标题识别的一个有效方法。参考文献1.Jun Song, Siliang Tang,Jun Xiao,Fei Wu,Zhongfei(Mark) Zhang.LSTM-in-LSTM for generating long descriptions of imagesJ. Computational Visual Media, 2016, (04): 379-3882.Vinyals, Oriol; Toshev, Alexander; Bengio, Samy; Erhan, Dumitru.Show and tell: A neural image caption generatorC. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 20153. Mao, Junhua; Xu, Wei; Yang, Yi; Wang, Jiang; Yuille, Alan L.Explain Images with Multimodal Recurrent Neural NetworksJ.Computer Vision and Pattern Recognition,20144.蔡晓龙. 深度学习在图像描述中的应用J. 电脑知识与技术, 2017, (24): 178-1825.章敏敏, 徐和平, 王晓洁, 周梦昀, 洪淑月. 谷歌Tensorflow机器学习框架及应用J. 微型机与应用, 2017, 36(10): 58-606.林杰, 李如意. 基于深度学习的图像识别处理J. 网络安全技术与应用, 2017, 0(11): 65-677.李盛秋,赵妍妍,秦兵,刘挺.基于LSTM网络的评价对象和评价词抽取J. 智能计算机与应用. 2017(05)8.荣光辉,黄震华. 基于深度学习的问答匹配方法J. 计算机应用. 2017(10)9.杨彬. 图像中的文本检测与识别研究D.东南大学,201710.张亮,黄曙光,石昭祥,胡荣贵.基于LSTM型RNN的CAPTCHA识别方法J.模式识别与人工智能,2011,24(01):40-4711王冉阳.基于django和 Python的Web开发J.电脑编程技巧与维护,2008,24(01):40-4712Oriol Vinyals, Alexander Toshev, Samy Bengio, and Dumitru Erhan.Show and tell: Lessons learned from the 2015 MSCOCO Image Captioning ChallengeC. IEEE TRANSACTION ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE), 201513.李彦冬,郝宗波,雷 航. 卷积神经网络研究综述J . 计算机应用. 2016(9): 2508251514.叶子平,高远宁,刘聪. Python实现简单的Web服务器J. 智能计算机与应用. 2017(01)15.王金甲,陈 浩,刘青玉. 大数据下的深度学习研究J . 高技术通讯. 2017(01): 1002-0470
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!