zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    RabbitMQ source was instantiated with usesCorrelationId set to true but a message was received with correlation id set to null
    【Ubuntu】运行命令如何免输入YES和回车?
    运营的本质
    什么???前端页面统计停留时间你不会???那可得好好看看这个文章了
    使用el-switch实现开关(更改状态后展示状态)
    Linux编译安装时常见错误解决办法
    SignalR前后端通信
    声音类型识别库运行环境搭建
    uniapp使用axios(亲测可用)
    background + gradient 使用技巧
  • 原文地址:https://www.cnblogs.com/rosyYY/p/8866340.html
Copyright © 2011-2022 走看看