Faster R-CNN,TensorFlow版本训练过程中出现:keep_inds = np.append(fg_inds, bg_inds) (Pdb)
> /data/sam.yi/Image_manipulation_detection/lib/layer_utils/proposal_target_layer.py(139)_sample_rois()
-> keep_inds = np.append(fg_inds, bg_inds)
(Pdb)
(Pdb)
(Pdb)
(Pdb)
(Pdb)
解决方法:
x1 = float(bbox.find('xmin').text) - 1
y1 = float(bbox.find('ymin').text) - 1
x2 = float(bbox.find('xmax').text) - 1
y2 = float(bbox.find('ymax').text) - 1
x1 = float(bbox.find('xmin').text)
y1 = float(bbox.find('ymin').text)
x2 = float(bbox.find('xmax').text)
y2 = float(bbox.find('ymax').text)
if fg_inds.size > 0 and bg_inds.size > 0:
fg_rois_per_image = min(fg_rois_per_image, fg_inds.size)
fg_inds = npr.choice(fg_inds, size=int(fg_rois_per_image), replace=False)
bg_rois_per_image = rois_per_image - fg_rois_per_image
to_replace = bg_inds.size < bg_rois_per_image
bg_inds = npr.choice(bg_inds, size=int(bg_rois_per_image), replace=to_replace)
elif fg_inds.size > 0:
to_replace = fg_inds.size < rois_per_image
fg_inds = npr.choice(fg_inds, size=int(rois_per_image), replace=to_replace)
fg_rois_per_image = rois_per_image
elif bg_inds.size > 0:
to_replace = bg_inds.size < rois_per_image
bg_inds = npr.choice(bg_inds, size=int(rois_per_image), replace=to_replace)
fg_rois_per_image = 0
else:
raise Exception()
并修改train.py:
try:
rpn_loss_cls, rpn_loss_box, loss_cls, loss_box, total_loss = self.net.train_step(sess, blobs, train_op)
except Exception:
print('image invalid, skipping')
continue
分析:
我最终使用了第一种方法。
[En]
I ended up using the first method.
出错的代码是:
if fg_inds.size > 0 and bg_inds.size > 0:
fg_rois_per_image = min(fg_rois_per_image, fg_inds.size)
fg_inds = npr.choice(fg_inds, size=int(fg_rois_per_image), replace=False)
bg_rois_per_image = rois_per_image - fg_rois_per_image
to_replace = bg_inds.size < bg_rois_per_image
bg_inds = npr.choice(bg_inds, size=int(bg_rois_per_image), replace=to_replace)
elif fg_inds.size > 0:
to_replace = fg_inds.size < rois_per_image
fg_inds = npr.choice(fg_inds, size=int(rois_per_image), replace=to_replace)
fg_rois_per_image = rois_per_image
elif bg_inds.size > 0:
to_replace = bg_inds.size < rois_per_image
bg_inds = npr.choice(bg_inds, size=int(rois_per_image), replace=to_replace)
fg_rois_per_image = 0
else:
import pdb
pdb.set_trace()
keep_inds = np.append(fg_inds, bg_inds)
自己的数据集是小目标,所以会导致ROI全是背景,导致进入else语句中。
Original: https://blog.csdn.net/White_yn/article/details/121529827
Author: White_yn
Title: Faster R-CNN,TensorFlow版本训练过程中出现:keep_inds = np.append(fg_inds, bg_inds) (Pdb)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/514416/
转载文章受原作者版权保护。转载请注明原作者出处!