当前位置: 首页 > news >正文

faster rcnn中的dataloader代码逻辑

一个imdb就是一个txt文件

imdb的初始化->imdb.append_flipped_images()->prepare_roidb(imdb)->获得imdb.roidb

每张图的roi:

{'boxes': boxes, #都是np数据                 #k * 4

                'gt_classes':                           #k

                'gt_ishard':            #difficult           #k

                'gt_overlaps':                             #k *21

                'flipped':                 False,

                'seg_areas':                 seg_areas}                        #k

append_flipped添加的roi后半部分:

{'boxes': boxes,

               'gt_overlaps': self.roidb[i]['gt_overlaps'],

               'gt_classes': self.roidb[i]['gt_classes'],

               'flipped': True}

prepare_roidb为全部每个roi添加了:

{'img_id':int,  #没用,是在txt中的顺序,重复两遍

'image':图像路径str

'width':图像宽

'height':图像高

'max_overlaps':(num_objects, )的全1np向量

'max_classes':(num_objects, )的class向量和'gt_classes'属性一样啊}

---------------------------------------------------------------------------------------------------------------------

图像的w/h大于2或者小于0.5说明图像需要裁剪到2/0.5,为每个roi添加{'need_crop':1/0}

将裁剪后的ration(float)组合成ratio_list'''

从小带大排列的index是ratio_index(np int数据), 重排后得到ratio_list(np float, 0.5--2.0之间)

--------------------------------------------------------------------------------------------------------------------

ratio_list_batch: 将ratio_list按照batchsize切分并让batch内ratio对齐(<1左对齐,>1右对齐,穿过1对齐到1)

按照现在ratio_list_batch的顺序作为dataset的索引

dataset索引:获取这个roi的图像减均值(并flipped),变成bgr格式,最短边放缩到600.

im_scales为[scalefactor]

im_blob是1*h*w*3

blobs = {'data': 放缩后的图像##1* h * w *3图像np

                'gt_boxes':   #numobject * 5 将bbox放缩了 npfloat    最后一列是'gt_classes'

                'im_info': #1*3 npfloat 图像新h,图像新w,图像放缩因子

                'img_id':继承}

拿到最终目标ratio,第一步先?感觉合成一步了。

第一步检查需要crop的图片:直接一步ratio到位?暴力硬裁图像和gtbox到要求的ratio,宽高哪个大裁剪哪个

不用crop的图片也是一样的逻辑,暴力裁剪图像和gtbox,哪个长剪哪条边

修改im_info[0],[1]为batchaspectalign最新图大小,将裁剪后的图像作为padding_data(3*h*w)返回

imdb.classes:

['__background__']+['aeroplane', 'bicycle', 'boat', 'bottle', 'car', 'cat', 'chair', 'diningtable', 'dog',

                         'horse', 'person', 'pottedplant', 'sheep', 'train', 'tvmonitor', 'bird', 'bus', 'cow',

                         'motorbike', 'sofa']


http://www.mrgr.cn/news/53170.html

相关文章:

  • vue与u3d互调
  • day-68 使二进制数组全部等于 1 的最少操作次数 I
  • vue video播放m3u8监控视频
  • eggjs sequelize egg-sequelize-auto自动从零生成一个数据表 自动创建model
  • FreeSWITCH mod_oreka 测试
  • 一个使用大模型进行分类的提示词示例
  • 戴尔电脑win11找不到D盘的解决办法
  • 访问器与Lambda函数
  • Python爬虫:自动化获取商品评论数据
  • 干部监督三色预警机制:为精细化管理及决策提供强力支撑
  • MATLAB支持的字体
  • vue3移动端可同时上传照片和视频的组件
  • 什么是GROW with SAP?
  • 如何降低采购成本?这几个采购策略给你答案
  • sql server 行转列及列转行
  • 内存卡提示需要格式化:高效数据恢复指南
  • 关于人工智能你不能不知道发展史
  • 滴水逆向三期笔记与作业——02C语言——12 指针(2)
  • 儿童鞋垫特殊哥
  • Google play开发者账号被封,申诉就有机会,别不信