win10, cuda 9.0, python 3.5环境下复现 Flow-Guided Feature Aggregation for Video Object Detection 问题总结

demo

  1. error:Microsoft Visual C++ is required
    参考链接,在vs2017中配置vc++ 14

  2. LINK : fatal error LNK1158: cannot run ‘rc.exe’
    参考链接 将rc.exe、rcdll.dll从C:\Program Files (x86)\Windows Kits\8.1\bin\x64复制到C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

  3. ‘dict’ object has no attribute ‘iteritems’
    对应文件的dict.iteritems改为dict.items (python 2 与 python 3的区别)
    源代码使用python 2编写的,因此许多代码需要改动,主要为print、dict、pickle等函数。

  4. LINK : fatal error LNK1181: 无法打开输入文件“ID=2.obj”

    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc.exe --compiler-bindir “C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin” --shared “-LD:\Program Files\Anaconda3\libs” “-LD:\Program Files\Anaconda3\PCbuild\amd64” “-LC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64” “-LC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\LIB\amd64” “-LC:\Program Files (x86)\Windows Kits\10\lib\10.0.17134.0\ucrt\x64” “-LC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x64” “-LC:\Program Files (x86)\Windows Kits\10\lib\10.0.17134.0\um\x64” -lcublas build\temp.win-amd64-3.5\Release\gpu_nms.obj -o build\lib.win-amd64-3.5\gpu_nms.cp35-win_amd64.pyd --linker-options=/nologo,/INCREMENTAL:NO,/LTCG,/MANIFEST:EMBED,ID=2,/MANIFESTUAC:NO,/IMPLIB:build\temp.win-amd64-3.5\Release\gpu_nms.cp35-win_amd64.lib,/NODEFAULTLIB:libcmt.lib
    gpu_nms.obj
    LINK : fatal error LNK1181: 无法打开输入文件“ID=2.obj”
    error: command ‘C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc.exe’ failed with exit status 2

    有一个曲线救国的方法:点此。出现改行错误后,将"ID=2,"去掉,手动执行该命令。有一个曲线救国的方法:点此。出现改行错误后,将"ID=2,"去掉,手动执行该命令。

  5. mxnet.base.NotImplementedForSymbol: Function __iadd__ (namely operator "+=") with arguments (<class 'mxnet.symbol.symbol.Symbol'>, <class 'int'>) is not implemented for Symbol and only available in NDArray.
    szha的回答
    '.\fgfa_rfcn\symbols\resnet_v1_101_flownet_rfcn.py’中的 aggregated_conv_feat += tiled_weight * warp_list[i]改为
    aggregated_conv_feat = aggregated_conv_feat + tiled_weight * warp_list[i]

  6. 由于编译mxnet太麻烦,所以直接pip安装0.12.1版本;测试demo.py无问题。

训练

  1. fail to open fgfa_rfcn_vid-0002.params

    mxnet.base.MXNetError: [15:13:33] D:\Program Files (x86)\Jenkins\workspace\mxnet\mxnet\dmlc-core\src\io\local_filesys.cc:166: Check failed: allow_null LocalFileSystem: fail to open "./output/fgfa_rfcn/imagenet_vid\resnet_v1_101_flownet_imagenet_vid_rfcn_end2end_ohem\VID_val_videos\DET_train_30classes_VID_train_15frames\fgfa_rfcn_vid-0002.params"

    注释掉experiments/fgfa_rfcn/fgfa_rfcn_end2end_train_test.py 的第20行。painterdrown的回答

  2. TypeError: a bytes-like object is required, not ‘str’

    Traceback (most recent call last):
    File “_ctypes/callbacks.c”, line 234, in ‘calling callback function’
    File “D:\Program Files\Anaconda3\lib\site-packages\mxnet\operator.py”, line 621, in creator
    op_prop = prop_cls(**kwargs)
    File “Flow-Guided-Feature-Aggregation/experiments/fgfa_rfcn…\fgfa_rfcn\operator_py\proposal_target.py”, line 94, in init
    self._cfg = pickle.loads(cfg)
    TypeError: a bytes-like object is required, not ‘str’

    先将cfg用pickle.dumps序列化,再用pickle.loads反序列化,思路是没有问题的。但是不知为何,pickle.loads时cfg的格式变成了字符串而不是bytes——将值复制出来却又是bytes。索性将cfg序列化至磁盘,然后从磁盘中读出来。方法如下

    fgfa_rfcn/symbols/resnet_v1_101_flownet_rfcn.py, line 965, 增加

    with open('cfg.pck', 'wb') as fp:
        pickle.dump(cfg, fp)
    

    且原本的970行改为 cfg=None

    fgfa_rfcn\operator_py\proposal_target.py, line 36、line 94, 改为

    with open('cfg.pck', 'rb') as fp:
        self._cfg = pickle.load(fp)
    

    终于,成功进行训练。

    Epoch[0] Batch [100] Speed: 0.44 samples/sec Train-RPNAcc=0.907294, RPNLogLoss=0.296552, RPNL1Loss=0.189087,
    RCNNAcc=0.807704, RCNNLogLoss=1.681007, RCNNL1Loss=0.130364,
    Epoch[0] Batch [200] Speed: 0.44 samples/sec Train-RPNAcc=0.923818, RPNLogLoss=0.242203, RPNL1Loss=0.156525,
    RCNNAcc=0.861396, RCNNLogLoss=1.166992, RCNNL1Loss=0.163834,

测试

尚未进行

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值