https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0
1、问题:ImportError: cannot import name '_mask' from 'pycocotools' (/faster-rcnn.pytorch/lib/pycocotools/__init__.py)
解决:https://github.com/jwyang/faster-rcnn.pytorch/issues/611
2、问题: from scipy.misc import imread
ImportError: cannot import name 'imread' from 'scipy.misc' (/home/admin/anaconda3/lib/python3.7/site-packages/scipy/misc/__init__.py)
解决:#from scipy.misc import imread
from imageio import imread
3、问题:faster-rcnn.pytorch/lib/model/roi_layers/roi_align.py", line 41, in backward
sampling_ratio,
RuntimeError: Not implemented on the CPU (ROIAlign_backward at /faster-rcnn.pytorch/lib/model/csrc/ROIAlign.h:44)
解决:python trainval_net.py --cuda
CUDA_VISIBLE_DEVICES=$GPU_ID python trainval_net.py \
--dataset pascal_voc --net vgg16 \
--bs $BATCH_SIZE --nw $WORKER_NUMBER \
--lr $LEARNING_RATE --lr_decay_step $DECAY_STEP \
--cuda
4、问题:
[session 1][epoch 9][iter 300/ 302] loss: nan, lr: 1.00e-04
fg/bg=(256/0), time cost: 26.321015
rpn_cls: nan, rpn_box: nan, rcnn_cls: nan, rcnn_box nan
save model: models/vgg16/pascal_voc/faster_rcnn_1_9_301.pth
[session 1][epoch 10][iter 0/ 302] loss: nan, lr: 1.00e-04
fg/bg=(256/0), time cost: 0.186927
rpn_cls: nan, rpn_box: nan, rcnn_cls: nan, rcnn_box nan
[session 1][epoch 10][iter 100/ 302] loss: nan, lr: 1.00e-04
fg/bg=(256/0), time cost: 30.308010
rpn_cls: nan, rpn_box: nan, rcnn_cls: nan, rcnn_box nan
[session 1][epoch 10][iter 200/ 302] loss: nan, lr: 1.00e-04
fg/bg=(256/0), time cost: 26.225091
rpn_cls: nan, rpn_box: nan, rcnn_cls: nan, rcnn_box nan
[session 1][epoch 10][iter 300/ 302] loss: nan, lr: 1.00e-04
fg/bg=(256/0), time cost: 25.555755
rpn_cls: nan, rpn_box: nan, rcnn_cls: nan, rcnn_box nan
save model: models/vgg16/pascal_voc/faster_rcnn_1_10_301.pth
[session 1][epoch 11][iter 0/ 302] loss: nan, lr: 1.00e-04
fg/bg=(256/0), time cost: 1.063025
rpn_cls: nan, rpn_box: nan, rcnn_cls: nan, rcnn_box nan
解决: lib/datasets/imdb.py修改如下
def append_flipped_images(self):
num_images = self.num_images
widths = self._get_widths()
for i in range(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
pascal_voc.py
# Load object bounding boxes into a data frame.
for ix, obj in enumerate(objs):
bbox = obj.find('bndbox')
# Make pixel indexes 0-based
x1 = float(bbox.find('xmin').text)
y1 = float(bbox.find('ymin').text)
x2 = float(bbox.find('xmax').text)
y2 = float(bbox.find('ymax').text)
训练中:
[session 1][epoch 1][iter 1400/10022] loss: 0.9442, lr: 1.00e-03
fg/bg=(64/192), time cost: 34.894407
rpn_cls: 0.1092, rpn_box: 0.0959, rcnn_cls: 0.7647, rcnn_box 0.5711
[session 1][epoch 1][iter 1500/10022] loss: 0.8075, lr: 1.00e-03
fg/bg=(40/216), time cost: 34.486090
rpn_cls: 0.1273, rpn_box: 0.1090, rcnn_cls: 0.2956, rcnn_box 0.3665
[session 1][epoch 1][iter 1600/10022] loss: 0.9427, lr: 1.00e-03
fg/bg=(59/197), time cost: 34.548775
rpn_cls: 0.2252, rpn_box: 0.1195, rcnn_cls: 0.4307, rcnn_box 0.6220
[session 1][epoch 1][iter 1700/10022] loss: 0.8819, lr: 1.00e-03
fg/bg=(14/242), time cost: 34.917199
rpn_cls: 0.2402, rpn_box: 0.1786, rcnn_cls: 0.2142, rcnn_box 0.1220
[session 1][epoch 1][iter 1800/10022] loss: 0.8147, lr: 1.00e-03
fg/bg=(22/234), time cost: 34.602410
rpn_cls: 0.0794, rpn_box: 0.0630, rcnn_cls: 0.1504, rcnn_box 0.2089
继续调优: