faster-rcnn数据处理总结

reldb->blob

图像增强

水平翻转

step 1:修改reldb
具体来说,reldb本身是由5个属性组成的,所以生成的新reldb还是要按照这个格式,区别在最后


 1. def get_training_roidb(imdb)
 2. imdb.append_flipped_images_rel() 因为这个函数是imdb特有的,所以函数属于imdb.py
 imdb.py:
 3. widths = self._get_widths_rel() 获得按照顺序的图片宽度
 vg.py (因为该方法子类vg也有,因此跳转到vg)
 4. return self.image_path_from_index(self._image_index[i]) #返回按照self._image_index顺序的照片绝对路径
 5. entry = {'boxes': boxes,
               'gt_overlaps': self.roidb[i]['gt_overlaps'],
               'gt_classes': self.roidb[i]['gt_classes'],
               'flipped': True}
    self.reldb.append(entry)
 
 6. self._image_index = self._image_index * 2 #作用是image编号重复了一遍,类似[1,2,1,2]
 


step2 
relbatchLoader.py
 1. relbatchLoader -> def __getitem__(self, index):
 2. blobs = get_minibatch_rel(minibatch_db, self._num_classes, self.random_scale_inds)#min代表只有一个rel
 minibatch.py
 3.  im_blob, im_scales = _get_image_blob(reldb, random_scale_inds)#(1, 601, 400, 3)
 4.     if roidb[i]['flipped']:
      im = im[:, ::-1, :] #反向就好了,
      processed_ims.append(im)
 
 5. blob = im_list_to_blob(processed_ims) #[1,height,weight,,3)


之所以反转之后的图片编号与原始编号重复,但读取reldb的方式是[i],因此不会重复,同时,reldb[i]的内容记录了是否flip,所以根据reldb生成的单个blob都能对应

blob

minibatch.py

  blobs = {'data': im_blob} #(1, 601, 400, 3) 存的是图片。第一维值始终为0?
  blobs['rel_gt_classes'] = rel_gt_classes
  blobs['rel_cluster_classes'] = rel_cluster_classes
  blobs['sub_gt_boxes'] = sub_gt_boxes
  blobs['obj_gt_boxes'] = obj_gt_boxes
  blobs['im_info'] = np.array(
    [[im_blob.shape[1], im_blob.shape[2], im_scales[0]]],
    dtype=np.float32)
  blobs['img_id'] = reldb[0]['img_id']

imdb (是个vg类的object)

在这里插入图片描述


 imdb, reldb_train,reldb_val, ratio_list_train,ratio_list_val, ratio_index_train, ratio_index_val= combined_reldb(
        args.imdb_name)
 1. def get_reldb(imdb_name):
 2. imdb = get_imdb(imdb_name)#调用 vg->VG 类  此时imdb.reldb只有5个属性
 3. reldb = get_training_reldb(imdb)#此时有9个属性了,而且将flip的也加入了
 



reldb(是个List,每个元素代表一个照片)

在这里插入图片描述
获取以上imdb和其包含的reldb后,对reldb进行下一步操作


reldb.py

 1. ratio_list_train, ratio_index_train =rank_reldb_ratio(reldb): #规定图片的宽高比,不符合要求的,添加属性“need_crop” ,返回排序后的结果和索引



sampler

在这里插入图片描述

作用是对组织好的数据格式,设定合适的采样方法

Dataset

建立Dataset类的子类class relbatchLoader(data.Dataset):
初始化的时候,做的事情是根据每个图片宽高比,确定每一批所取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值