用fast rcnn训练自己的数据集时遇到的问题索引问题

在使用Fast R-CNN训练自定义数据集时,遇到因数据类型非整型导致的索引错误。问题源于`minibatch.py`中的`_sample_rois`函数,具体是`fg_inds = npr.choice(fg_inds, size=fg_rois_per_this_image, replace=False)`这一行。经过排查,`fg_rois_per_this_image`由`get_minibatch`函数传递,且在计算`fg_rois_per_image = np.round(cfg.TRAIN.FG_FRACTION * rois_per_image)`时,由于`numpy.round`不进行整数取整,导致非整型索引错误。解决方案是确保`fg_rois_per_image`为整型值。" 52587145,5598774,稳定匹配与GS算法:单身狗脱单指南,"['算法', '稳定匹配', 'GS算法']
摘要由CSDN通过智能技术生成

不知道是不是版本的原因,用fast rcnn训练自己的数据集时,好几次碰到了数据类型出错的问题(索引不是整型)。

一是,minibatch.py中,_sample_rois(roidb, fg_rois_per_image, rois_per_image, num_classes)函数中, if fg_ins.size > 0: fg_inds = npr.choice(fg_inds, size=fg_rois_per_this_image, replace=False)一直报错,原因是非整型不能做索引。通过排除法找到出错的变量为size=fg_rois_per_this_image,找到其定义的地方,发现fg_rois_per_this_image是从get_minibatch中传过来的。因此get_minibatch(roidb, num_classes)函数中,labels, overlaps, im_rois, bbox_targets, bbox_loss = _sample_rois(roidb[im_i], fg_rois_per_image, rois_per_image, num_classes)也一直报错,通过输出不同的变量,发现fg_rois_per_image不是整型,这与报错的类型相符。查找fg_rois_per_image定义的地方,发现fg_rois_per_image = np.round(cfg.TRAIN.FG_FRACTION * rois_per_image),其计算结果不是整型。原因是numpy.round函数,只进行四舍五入,不进行取整,导致以该结果进行索引时,一直报错。

def get_minibatch(roidb, num_classes):
    """Given a roidb, construct a minibatch sampled from it."""
    num_images = len(roidb)
    # Sample random scales to use for each image in this batch
    random_scale_inds = npr.randint(0, high=len(cfg.TRAIN.SCALES),
                                    size=num_images)
    assert(cfg.TRAIN.BATCH_SIZE % num_images == 0), \
        'num_images ({}) must divide BATCH_SIZE ({})'. \
        format(num_images, cfg.TRAIN.BATCH_SIZE)
    rois_per_i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值