- refe.py代码阅读(对图片数据和文本数据的预处理)
- 文本字典
- 处理得到图片和标签的字典
- 处理得到文本的字典(如上图)
图片部分与目标检测相同,生成字典(instances.json文件),文本部分(refcoco.p)生成文本的字典
文本字典refer对于文本的处理得到的文本的字典 (对应refcoco(unc).p来理解)字典的可视化
处理得到图片和标签的字典# fetch info from instances # 利用的是instances.json这个文件的信息 主要是处理的图片的相关信息 Anns, Imgs, Cats, imgToAnns = {}, {}, {}, {} # annotations 是一个很大的列表 包括全部图片的标签的信息 每个框的信息都有对应的图片的id 具体的坐标 分割的像素点的信息 对应图片的id 类别信息等 for ann in self.data['annotations']: Anns[ann['id']] = ann # 建立anno的字典 可以通过anno的id来得到anno的信息(每一个框是一个信息 # .get()返回字典中关键字对应的词 imgToAnns中有ann['image_id'] 则直接返回信息 ,不然返回[] imgToAnns[ann['image_id']] = imgToAnns.get(ann['image_id'], []) + [ann] # 可以通过图片的id得到图片上所有标签的信息 for img in self.data['images']: # 建立图片的字典 可以通过图片的id得到图片的网络地址和图片的宽高信息 Imgs[img['id']] = img for cat in self.data['categories']: Cats[cat['id']] = cat['name'] # 建立类别名称和类别id的字典处理得到文本的字典(如上图)
# fetch info from refs # 利用ref(unc)的信息 Refs, imgToRefs, refToAnn, annToRef, catToRefs = {}, {}, {}, {}, {} Sents, sentToRef, sentToTokens = {}, {}, {} for ref in self.data['refs']: # ids ref_id = ref['ref_id'] # 定位目标的id ann_id = ref['ann_id'] # 定位目标的标签信息:像素点的分割 框的信息 类别 category_id = ref['category_id'] # 定位目标的类别 image_id = ref['image_id'] # 定位目标的图片ID # add mapping related to ref Refs[ref_id] = ref # 得到这个目标的所有信息 以字典的形式保存 imgToRefs[image_id] = imgToRefs.get(image_id, []) + [ref] # image_ID到定位目标的一个映射 catToRefs[category_id] = catToRefs.get(category_id, []) + [ref] # 类别ID到定位目标的映射 人这个标签-->所有定位目标是人的所有的信息 refToAnn[ref_id] = Anns[ann_id] # 定位目标到标签信息的映射 annToRef[ann_id] = ref # 标签ID到定位目标的映射 # add mapping of sent for sent in ref['sentences']: Sents[sent['sent_id']] = sent # 句子的字典 sentToRef[sent['sent_id']] = ref # 句子到定位目标信息的映射 sentToTokens[sent['sent_id']] = sent['tokens'] # 句子到分词的映射
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)