Modular Attention Network for Referring Expression Comprehension——代码阅读第一天

今天是阅读2018cvpr论文MAttNet源码的第一天,由于第一次读论文源码有很多不懂的地方,在此记录每天的学习进度,希望可以不断提高自身能力。

该论文训练的第一步是准备训练数据,因此先从tools/propro.py开始。论文可以加载refclef,refcoco,refcoco+,refcocog四种数据集,本文以refclef为例。

一、首先实例化pyutils/refer/refer.py中的REFER类
refer= REFER(data_root,dataset,splitBy)#传入data根目录,refclef,unc
1、在REFER类中先加载文件refs(unc).p和instances.json
instances.json中记录了images图像, annotations标签,categories 实体的类别信息。
-images:共19997张,每个image包含file_name,width,height,id四种属性
-annotations:共99523,每个annotation包含七种属性,annotations_segmentation, mask_name, area, image_id(对应的图片id),bbox(区域),category_id(对应的实体类别),id(annotation id)【前三种作用暂不清楚】
-categories:共276个类别,每个category包含id和name

refs(unc).p中可以读取99296个推理表达(暂定),每个ref中包含7个属性
-sent_ids 句子id
-ann_id 标签annotation id
-ref_id ref id
-image-id 图像id
-split 标注是train
-sentenses 句子,其中每个sentense又包括tokens(将句子拆分成一个一个词,), raw【暂不清楚作用】,sent_id(句子id),sent(完整的句子)四个属性
-category_id object的类别
2、建立图像,自然语言之间的索引。调用createIndex()
在本文中主要存储五种关系,分别为sentence, annotation, refs, image,catagory
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200218222405787.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bm1lbm1pYW4=,size_如在这张图片中,包含天空,山和海洋,那么一张图片就可以在不同的区域定义不同的标签,而每个图片又可以用多句话来描述,或者针对山也可以有不同的话。而图片中可能存在多个人,他们都属于person这个类别。因此五种关系之间的数量关系为sentences>annotations>refs>images>category.即一张图片可以对应多个标签,多个句子,而每个标签又可以用多个句子描述。因此这五个关系两两建立索引得到多种字典
-Refs (暂定)
-Anns {ann_id:annnotation}
-Imgs {imge_id:image}
-Cats {category_id:category_name}
-Sents {sent_id:sentense}
-imgToRefs {image_id:ref}
-imgToAnns 以下类似
-refToAnn
-AnnToref
-catToRefs
-sentToRef
-sentTokens{sent_id:tokens}
二、建立词汇表
vocal,sentToFinal=build_vocab(refer, params)
根据刚才建立的索引sentTokens,设置word_count_threshold(5),通过循环遍历每句话,记录每个单词在所有句子中出现的次数,如果小于等于设置的阈值word_count_threshold,则该词被认为是“bad word”。只有大于阈值的词才能组成词汇表。代码从所有句子的9320种词(word2count)中选出了1867个词组成vocab,另外,由于category中的某些词在word2count中没有出现过,或因为小于阈值而被除掉,因此还需要把category中的词加入到词汇表vocab中。

在vocab中添加UNK,BOS,EOS,PAD【作用未知】
。。。后续更新

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
“低成本模块化驱动器对于动态机器人的意义”是:这种类型的驱动器对于动态机器人是非常重要的,因为它们提供了一种廉价且有效的方法来实现机器人的动态运动。 首先,低成本模块化驱动器可以降低动态机器人的制造成本。传统的动态机器人驱动器通常由复杂的电子和机械组件组成,造价昂贵。然而,模块化驱动器采用模块化的设计,既方便制造也易于维修。这使得制造商能够以更低的成本大规模生产这些驱动器,并将低成本传递给消费者。 其次,低成本模块化驱动器具有较小的尺寸和重量,使得它们适用于需要快速、灵活和敏捷运动的动态机器人。动态机器人需要在复杂的环境中进行快速的动作,而较大尺寸或重量的传统驱动器可能限制了机器人的运动能力。低成本模块化驱动器的小尺寸和轻质设计改善了机器人的机动性和灵活性。 此外,低成本模块化驱动器还具有较低的功耗。动态机器人通常需要大量的能量来实现高速和高加速的运动。传统的驱动器往往耗能较高,限制了机器人的运动时间和效率。而低成本模块化驱动器采用先进的电子技术和节能设计,能够以较低的功耗实现相同的性能。 综上所述,低成本模块化驱动器对于动态机器人的意义在于降低制造成本、提供更小尺寸和轻量级设计,以及减少功耗。这些优势使得低成本模块化驱动器成为动态机器人研制中不可或缺的一部分,推动了机器人技术的进步和普及。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值