# Show-And-Tell **Repository Path**: sharps/Show-And-Tell ## Basic Information - **Project Name**: Show-And-Tell - **Description**: 看图说话机器人项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-12-21 - **Last Updated**: 2021-12-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目简介 几个月的学习过后,需要以工业化的标准完成一个项目检验我们学到的知识。此次我们选择了看图说话机器人的项目,因为认为这个选题比较新颖,能从中学到很多东西,事实也确实如此。 本文主要介绍了我们此次项目中所使用的模型,项目过程中遇到的一些问题,项目的一些缺陷以及项目的使用方法等。 本次项目分为两部分:模型部分和web部分。 ## 模型部分 >模型部分使用InceptionV3网络作为编码器生成图片embedding,然后作为initial state输入到解码器的LSTM中生成图片caption。 基础结构如下: ![model](model.png) ### 模型工作原理概述 >首先通过InceptionV3网络对图片进行编码,得到image embedding,接着作为LSTM的initial state输入,在训练模式中,我们把每个图片的caption作为LSTM输入,并将caption右移一位作为target(请注意,每个caption 都有两个个特殊字符用来表示caption的开始和结束),使用SGD优化模型的参数,减少target和logits之间的loss,以此来让模型学习到image和caption之间的关联关系;在inference中,我们首先使用表示caption开始的特殊符号作为LSTM的input,让模型通过之前学习到的关联关系计算出词汇表中每一个词作为下一个词的可能性,然后选择适量的候选词跟上一次的input组成新的input再次计算词汇表中每一个词作为下一个词的可能性,如此循环,直到遇到结束符或者caption长度达到限定的最大值。即Beam Search算法。 ## web部分 >Web部分使用Flask框架作为后台服务框架,Layui作为前台UI框架实现一个B/S架构的展示系统,通过网页上传一图片,为其生成caption并在网页中展示。 最终效果如下: ![web](web.png)