lesson7-图像描述 -小象cv
2018-04-25朴素rcnn - 梯度消失严重
LSTM长短时记忆模型,有效捕捉长时记忆
包含四个神经元组:
一个记忆神经元
三个控制门神经元:输入、忘记、输出
注意:输入调制门、输出调制门
3个输入:前一时刻的隐藏状态h、前一时刻的记忆状态c、当前时刻的输入x
2个输出:当前时刻的隐含状态h,当前时刻的记忆状态c
i、f、o、gt对应的都是xt、ht-1的矩阵乘和偏置
以7个时间片为例-黑白:输入们、输出们关闭时不输出当前时刻、忘却门打开时可以向下一个时刻传递
记忆状态cell state:记忆的核心
控制门:配有sigmoid函数的神经元,【0,1】
忘记门:sigmoid激活
tanh激活:压缩记忆状态【-1,1】
记忆状态更新:1)选择性移除前一时刻的旧信息~记忆状态2)选择性添加当前时刻的新信息~调制输入
Lstm的变种:
peephole:窥视,ft和it加入Ct-1
coupled耦合的忘记-输入门:Ct
GRU门限递归单元:新增重置门和更新门,合并输入们和忘记们,合并记忆状态和隐藏状态
lstm&gru:后者更适合小规模数据,参数少、拟合能力相对弱
image captioning图说模型:
模型策略:
传统的分段处理:
1)图片内容-》文本标签-》描述语句
2)将图片和文本映射到同一共享空间下,翻译图片特征-》语言描述 ~黑箱严重
state-of-the-art模型:
dnn框架:cnn~图片理解~vgg、resnet
rnn~语言理解~multimodal-rnn、lstm~一个就够、gru~一个就够
特殊功能模块~attention
show and tell模型:
from google,cnn+lstm
--》
cnn采用inception v3生成图片特征,cnn特征作为第一个词,句子中的词作为后续序列
特征映射矩阵:将文本映射到图片特征空间 ~lstm单元的输入
文本编码是one-hot ~ 45万个次,哪个词对应位置就为 1
beam search:尺寸为1即为贪心算法,show and tell模型中尺寸为3,每一步获取top3概率的词作为备选
注意机制的cnn特征:SAT即show,attention,tell模型
--》
在show and tell的基础上增加第三输入即基于attention的图片特征
vgg最后卷积层输出14*14*512 -》196*512(拉伸排列),512列是特征数量
特征融合:每个权重(由权重推断得到,softmax)w1-w196会和每一个特征相乘,最终得到1*512
代码:
# TFRecord文件中的shards数量 ~一个shard相当于一个数据组切片文件,一个切片对应一个tf文件~train数据拆分成256个tf文件,即256个shard
tf.flags.DEFINE_string("unknown_word", "<UNK>",
"Special word meaning 'unknown'.") ~如低频词就不放入词典,设为UNK
# 图片集Metadata类型定义 .metadata
# 关闭写文件器writer.close()
sys.stdout.flush() ~写到磁盘
caption data是jason文件,解析-》id,filename
一个id即一个图片对应5个caption
metadata数据列表转为tfrecords文件:
将图片复制5个,每个caption一个
16万数据,8个线程,每个线程负责两万数据,traing 256个tfrecords,每个线程需要生成32个,且2万个数据集,生成的文件格式train-0001-of-00256,训练集-第几个-of-共多少
生成tf.train.Features对象:_int64_feature,_bytes_feature分别为整形、字符串编码
tf.contrib.slim函数接口
图片扭曲:扭曲的方式与线程奇数偶数有关,包括扭曲饱和度等
mask记录了那些Input seqs和target seqs用到的位置,这样在后续乘法中浮点数乘法在mask=0 的位置就直接不计算
https://blog.csdn.net/chengshuhao1991/article/details/78656724
https://blog.csdn.net/xierhacker/article/details/72357651
构造每个样本的Example协议块
tf.train.Feature(**options) ,options可以选择如下三种格式数据:
bytes_list = tf.train.BytesList(value = [Bytes])
int64_list = tf.train.Int64List(value = [Value])
float_list = tf.trian.FloatList(value = [Value])
从JSON文件中读取图片的metadata数据:
metadate-描述数据的数据,也叫 元数据 通常我们身边的所有文件 图片、视频、word文档 等等等 都包含了元数据 。
configuration:
# 每个TFRecord文件的大约数量
self.values_per_input_shard = 2300
# Minimum number of shards to keep in the input queue.
# 输入队列的最少shards数量
self.input_queue_capacity_factor = 2
math.ceil(x) 函数返回一个大于或等于 x 的的最小整数
perplexity = math.exp(sum_losses / sum_weights)
tf.logging.info("Perplexity = %f (%.2g sec)", perplexity, eval_time)
参考
https://blog.csdn.net/shenxiaolu1984/article/details/51493673
lesson7-图像描述 -小象cv的更多相关文章
- lesson4-图像分类-小象cv
CNN网络进化:AlexNet->VGG->GoogleNet->ResNet,深度8->19->22->152GoogleNet:Lsplit->trans ...
- lesson8-图像问答-小象cv
QA即图像问答:覆盖最全面的AI,ai完备性 动态模型:不同任务需要不同模型 or 不同细分任务需要不同模型参数 数据集: 1)VQA,显示图片+抽象场景:每个问题给10个不同答案:含有无图片答案(考 ...
- lesson5-图像检测-小象cv
R-CNN: 2014,cnn为Alexnet 训练流程: 1)在imagenet上对cnn模型pre-train 2)使用所有ss生成区域对1)进行fine-tune ~softmax改为21维度 ...
- resNet代码-小象/cv
C:\yyy\ml\dengsong\ChinaHadoop\ChinaHadoop_C4-master\ChinaHadoop_C4-master\C4_ResNet_TF http://blog. ...
- Android开发学习—— ContentProvider内容提供者
* 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的数据库.把私有数据暴露给其他应用,通常,是把私有数据库的数据暴露给其他应用. Uri:包含一个具有一定格式的字符串的对 ...
- Android基础总结(十)
内容提供者(掌握) 应用的数据库是不允许其他应用访问的 内容提供者的作用就是让别的应用访问到你的私有数据 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数 ...
- openCV C++ 代码笔记
代码片段1 cv_contourMask_step_tmp=cv_contourMask.clone(); cv::Mat maskImage; UIImageToMat(pathimg, maskI ...
- Android应用开发基础之九:内容提供者(ContentProvider)
内容提供者 应用的数据库是不允许其他应用访问的 内容提供者的作用:就是让别的应用访问到你的数据库 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数据库的代 ...
- android 学习随笔二十一(内容提供者 )
一.内容提供者* 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的私有数据* 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查 ...
随机推荐
- OpenJDK换为JDK(CentOS)
说明:应该来说没必要非把OpenJDK卸载掉,只要让$PATH中我们安装的jdk的目录较OpenJDK所在的/usr/bin先出现就好了:简言之跳过下边的第一步直接从第二步开始更科学一些. 1.卸载O ...
- 使用Spring-data-jpa(1)(三十)
在实际开发过程中,对数据库的操作无非就“增删改查”.就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑. 为了解决这些大量枯燥的数据操作语句 ...
- spring事务管理(详解和实例)
原文地址: 参考地址:https://blog.csdn.net/yuanlaishini2010/article/details/45792069 写这篇博客之前我首先读了<Spring in ...
- 窗体应用程序防腾讯QQ源码
窗体应用程序防腾讯QQ源码 using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...
- js代码之编程习惯
编程习惯: 异常处理 如果你没有使用异常处理的习惯,这可能是因为你并未真正的理解它的作用.当你正确使用异常处理之后,你会发现你的代码最显著的变化就是:少了很多的 if-else 语句 . 虽然在 JS ...
- Ubuntu安装openssh-server并通过xshell连接
#安装ssh sudo apt-get install openssh-server openssh-client sudo apt-get update sudo apt-get upgrade 查 ...
- Win10系列:VC++ Direct3D模板介绍3
(4)Render函数 默认定义在CubeRenderer.cpp源文件中的Render函数用于绘制立体图形,此函数的实现代码如下所示: void CubeRenderer::Render() { ...
- svg 学习笔记
http://git.oschina.net/heboliufengjie/demo/tree/master/svg?dir=1&filepath=svg&oid=3a44203972 ...
- [POJ3481]Double Queue
Problem 0 结束操作 1 K P 将一个数K以优先级P加入 2 取出优先级最高的那个数 3 取出优先级最低的那个数 Solution Splay模板题 Notice 是输出数而不是输出优先级. ...
- EF-生成迁移版本
前面讲到可以使用迁移技术让程序自动更新数据库中相关的结构.在我们每次需要新增模型类时,请一定要养成一个好的习惯,使用Add-Migration命令生成迁移版本.这样能恢复被误删除的表. 一.新增迁移版 ...