美文网首页
caffe版faster rcnn 错误总结

caffe版faster rcnn 错误总结

作者: 散懒狮子 | 来源:发表于2019-02-27 16:33 被阅读0次

使用教程:https://www.cnblogs.com/dudumiaomiao/p/6556111.html

1.解决问题ImportError: cannot import name symbol_database

https://blog.csdn.net/aBlueMouse/article/details/77744023

2.运行项目报错no model name _caffe

每次执行前必执行在py-faster-rcnn/caffe-faster-rcnn 目录下sudo make pycaffe

3.  字符编码不正确

-*-  coding:utf-8 -*-

4.在训练stage1 rpn时,出现'numpy.float64' object cannot be interpreted as an index 的提示错误,几乎所有的博客中都指出,需要更换numpy 的版本,照做之后,出现ImportError: numpy.core.multiarray failed to import,这个问题又是numpy不匹配造成的,这样就形成了恶性循环,所以,可以考虑从根源上解决'numpy.float64' object cannot be interpreted as an index

TypeError: 'numpy.float64' object cannot be interpreted as an index

1) /home/xxx/py-faster-rcnn/lib/roi_data_layer/minibatch.py

将第26行:fg_rois_per_image = np.round(cfg.TRAIN.FG_FRACTION * rois_per_image)

改为:fg_rois_per_image = np.round(cfg.TRAIN.FG_FRACTION * rois_per_image).astype(np.int)

2) /home/xxx/py-faster-rcnn/lib/datasets/ds_utils.py

将第12行:hashes = np.round(boxes * scale).dot(v)

改为:hashes = np.round(boxes * scale).dot(v).astype(np.int)

3) /home/xxx/py-faster-rcnn/lib/fast_rcnn/test.py

将第129行: hashes = np.round(blobs['rois'] * cfg.DEDUP_BOXES).dot(v)

改为: hashes = np.round(blobs['rois'] * cfg.DEDUP_BOXES).dot(v).astype(np.int)

4) /home/xxx/py-faster-rcnn/lib/rpn/proposal_target_layer.py

将第60行:fg_rois_per_image = np.round(cfg.TRAIN.FG_FRACTION * rois_per_image)

改为:fg_rois_per_image = np.round(cfg.TRAIN.FG_FRACTION * rois_per_image).astype(np.int)

5.faster rcnn报错TypeError: slice indices must be integers or None or have an __index__ method

改的是/home/xiaohua/py-faster-rcnn/lib/roi_data_layer下的minibatch.py文件转到172行,将

for ind in inds:

cls = clss[ind]

start = 4 * cls

end = start + 4

bbox_targets[ind, start:end] = bbox_target_data[ind, 1:]

bbox_inside_weights[ind, start:end] = cfg.TRAIN.BBOX_INSIDE_WEIGHTS

return bbox_targets, bbox_inside_weights

改为:

for ind in inds:

ind = int(ind)

cls = clss[ind]

start = int(4 * cos)

end = int(start + 4)

bbox_targets[ind, start:end] = bbox_target_data[ind, 1:]

bbox_inside_weights[ind, start:end] = cfg.TRAIN.BBOX_INSIDE_WEIGHTS

return bbox_targets, bbox_inside_weights

即可,自己注意python语法格式哦。

原文:https://blog.csdn.net/qq_27637315/article/details/78849756

6。Check failed: error == cudaSuccess (2 vs. 0) out of memory6.

显存不足...经过查阅资料,有两种解决办法:

1. 安装cudnn

解决办法看之前的博文:

http://blog.csdn.net/u012283902/article/details/63254906

由于是2G显存,还是不够用。可能这种方法比较适用于4G显存的情况下。

2. 修改配置文件

/lib/fast_rcnn/config.py

(1)首先修改

# Minibatch size (number of regions of interest [ROIs])

__C.TRAIN.BATCH_SIZE = 128

将这个值调小,比如64,32,16,8.....

进行训练看是否可行

(2)还可以修改

# Scales to use during training (can list multiple scales)

# Each scale is the pixel size of an image's shortest side

__C.TRAIN.SCALES = (600,)

将600改为,如500,400,300....等

查看效果

注意:不一定全更改,更改后可运行即可

原文:https://blog.csdn.net/u012283902/article/details/63255301

7.pb2.text_format.Merge(f.read(), self.solver_param) AttributeError: 'module' object has no attribute 'text_format'

经过google之后发现是protobuf的本版发生了变换,之前在配置caffe的时候手动安装了protbuf,版本是2.5.0,后来安装了tensorflow 我回忆了一下,protobuf的版本貌似是发生了变换。

所以解决办法:sudo pip install protobuf==2.5.0

刚才又发现一个新的解决方法:

在文件./lib/fast_rcnn/train.py增加一行import google.protobuf.text_format 即可解决问题

原文:https://blog.csdn.net/qq_33202928/article/details/72526710

8.File"/home/gxjun/Qunar/py-faster-rcnn/tools/train_faster_rcnn_alt_opt.py", line67,in get_roidb

    roidb = get_training_roidb(imdb)

  File "/home/gxjun/Qunar/py-faster-rcnn/tools/../lib/fast_rcnn/train.py", line118,in get_training_roidb

    imdb.append_flipped_images()

  File "/home/gxjun/Qunar/py-faster-rcnn/tools/../lib/datasets/imdb.py", line111,in append_flipped_images

    assert (boxes[:, 2] >= boxes[:,0]).all()

解决办法:将py-faster-rcnn/lib/datasets/imdb.py中的相应代码改成如下代码即可:

        def append_flipped_images(self):

            num_images = self.num_images

            widths = [PIL.Image.open(self.image_path_at(i)).size[0]

                      for i in xrange(num_images)]

            for i in xrange(num_images):

                boxes = self.roidb[i]['boxes'].copy()

                oldx1 = boxes[:, 0].copy()

                oldx2 = boxes[:, 2].copy()

                boxes[:, 0] = widths[i] - oldx2 - 1

                boxes[:, 2] = widths[i] - oldx1 - 1

                for b in range(len(boxes)):

                    if boxes[b][2] < boxes[b][0]:

                      boxes[b][0] = 0

                assert (boxes[:, 2] >= boxes[:, 0]).all()

原文:https://blog.csdn.net/u014696921/article/details/60333805

9.snapshot_prefix:"vgg16_rpn"average_loss: 100I0421 11:53:05.251756 24051 solver.cpp:81] Creating training netfromtrain_net file: models/pascal_voc/VGG16/faster_rcnn_alt_opt/stage1_rpn_train.pt

F0421 11:53:05.251797 24051 io.cpp:36] Check failed: fd != -1 (-1 vs. -1) Filenotfound: models/pascal_voc/VGG16/faster_rcnn_alt_opt/stage1_rpn_train.pt*** Check failure stack trace: ***

将sovler.txt中的路径设置成绝对路径

9.error 2:IndexError: list index out of range

    File "./tools/train_net.py", line 85, in

    roidb = get_training_roidb(imdb)

    File "/usr/local/fast-rcnn/tools/../lib/fast_rcnn/train.py", line 111, in get_training_roidb

    rdl_roidb.prepare_roidb(imdb)

    File "/usr/local/fast-rcnn/tools/../lib/roi_data_layer/roidb.py", line 23, in prepare_roidb

    roidb[i]['image'] = imdb.image_path_at(i)

    IndexError: list index out of range

error2 解决办法:

删除fast-rcnn-master/data/cache/ 文件夹下的.pkl文件,或者改名备份,重新训练即

原文:https://blog.csdn.net/u014696921/article/details/60333805

10.Cannot copy param 0 weights from layer 'cls_score'; shape mismatch.

Source param shape is 21 4096 (86016); target param shape is 3 4096

(12288). To learn this layer's parameters from scratch rather than

copying from a saved net, rename the layer.

这个错误要把对应的层rename。比如把cls_score改为cls_score1

相关文章

网友评论

      本文标题:caffe版faster rcnn 错误总结

      本文链接:https://www.haomeiwen.com/subject/mepfuqtx.html