使用教程: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
网友评论