fpn pytorch跑github源码遇到的问题及解决
今天尝试跑跑fpn pytorch版本的源码,下面列出出现的问题(坑//)和解决方式。因为作者貌似已经不更新(不管)这代码了,很多issue也没有回复,然而issue中大部分问题我也遇到了,所以源码直接下下来跑还是有挺多问题的。但作者说了这个fpn是根据他另一个repo faster rcnn代码改的,faster rcnn那个代码很成熟。所以还是信这位作者的!
这里我的解决方法有从issue中大家的讨论得到的,也有我自己改的。改的时候找不到办法了就对照着faster rcnn同位置部分代码参考,很有效!目前改完这些问题已经可以训练起来了~等待结果中
本文所用的fpn pytorch源码地址:https://github.com/jwyang/fpn.pytorch
(借鉴的faster rcnn源码地址:https://github.com/jwyang/faster-rcnn.pytorch
编译
-
需要把 make.sh 的-arch=sm_52 改为自己GPU型号对应的号,我是 TITAN X 所以改成了 sm_61
-
编译环境:要用 python2 pytorch0.4
这里我从issue里看到其他用torch0.4.1或者torch1.0的都编译不起来,我自己用python3编译也有一些print的问题。建议最好用上述版本编译
output_dir 模型输出位置报错
解决:trainval.py 中 将作者的绝对路径目录改成自己的路径
No such file or directory:log
这两行会报错。
logging.basicConfig(filename="logs/"+args.net+"_"+args.dataset+"_"+str(args.session)+".log", filemode='w', level=logging.DEBUG) logging.info(str(datetime.now()))
解决:创建一个log文件夹 在项目的最外层目录
softmax需要改
Specify dim in softmax function
在fpn.py & rpn_fpn.py:
use F.softmax(tensor, 1) in both fpn.py and rpn_fpn.py
trainval.py的item() 和 单GPU的rpn_loss_cls,rpn_loss_box要改:
改完如下:
loss_temp += loss.item()
if args.mGPUs: loss_rpn_cls = rpn_loss_cls.mean().item() loss_rpn_box = rpn_loss_box.mean().item() loss_rcnn_cls = RCNN_loss_cls.mean().item() loss_rcnn_box = RCNN_loss_bbox.mean().item() fg_cnt = torch.sum(roi_labels.data.ne(0)) bg_cnt = roi_labels.data.numel() - fg_cnt else: loss_rpn_cls = rpn_loss_cls.item() loss_rpn_box = rpn_loss_box.item() loss_rcnn_cls = RCNN_loss_cls.item() loss_rcnn_box = RCNN_loss_bbox.item() fg_cnt = torch.sum(roi_labels.data.ne(0)) bg_cnt = roi_labels.data.numel() - fg_cnt
RuntimeError: reciprocal is not implemented for type torch.cuda.LongTensor
anchor_target_layer.py改完如下
if cfg.TRAIN.RPN_POSITIVE_WEIGHT < 0: num_examples = torch.sum(labels[i] >= 0) num_examples = num_examples.float() positive_weights = 1.0 / num_examples negative_weights = 1.0 / num_examples
TypeError: index(): argument ‘indices’ (position 1) must be tuple of Tensots, not Tensor
proposal_target_layer.py仿照faster rcnn中的proposal_target_layer_cascade.py(index里面多加一个括号表明是tuple)。改完如下:
labels = gt_boxes[:,:,4].contiguous().view(-1).index((offset.view(-1),))\ .view(batch_size, -1)
RCNN_roi_align ERROR when training
That is because you have only one roi_level in idx_l , you can print idx_l and see. The idx_l should be a list but when there is only 1 roi_level for a given l then you will get this error.
you can change the line https://github.com/jwyang/fpn.pytorch/blob/master/lib/model/fpn/fpn.py#L131 to
idx_l = (roi_level == l).nonzero() if idx_l.shape[0] > 1: idx_l = idx_l.squeeze() else: idx_l = idx_l.view(-1)
训练过程中
- 显存占用:
我是用单GPU训练,显存占用浮动较大,会从4G~10G中徘徊 - 其他问题暂时没遇到,遇到会继续更新
- Pytorch源码安装(附加可能出现的问题解决)
- 最新hexo3和Github搭建个人博客遇到问题和解决方法汇总!
- 编译hadoop源码遇到问题 及时解决
- 解决下载Android源码时遇到的问题 DownloadError: android.googlesource.com:
- 我的github搭建过程遇到的问题及解决方法
- 关于修改frameworks的源码遇到的一点问题以及解决方法
- 上传本地仓库到github上时遇到的一些问题以及解决方法
- 源码安装gtk+-2.0时遇到的几个问题及解决办法
- 编译hadoop源码遇到问题 及时解决
- 问题解决:Pytorch :Trying to backward through the graph a second time, but the buffers。。
- Qt之使用setWindowFlags方法遇到的问题(追踪进入QWidget的源码分析原因,最后用WINAPI解决问题)good
- 转:github使用教程(重装系统后遇到问题该文章帮我解决了)
- 编译 x3288 开发板 android5.1 源码包时 遇到的问题和解决方法
- 第一次上传代码到github中遇到的问题&解决方法
- 解决下载Android4.0源码时遇到的问题
- 使用Github遇到的问题及解决办法
- 源码安装gtk+-2.0时遇到的几个问题及解决办法。
- live555源码研究(十)------在编译过程中遇到的问题及解决方法
- 64位机器源码安装遇到的问题,解决,一锅端
- gitHub 的使用过程中遇到的问题和解决办法