代码问题【ADNet//CVPR2017】
【ADNet】:
Yoo S, Yun K, Choi J Y. Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning[C]. //CVPR2017
错误1:Undefined function or variable 'test_demo'.
解决: 这个很简单,直接把test_demo改成adnet_test即可
错误2:Invalid MEX-file xxxxxxxxxxxxx\utils\cropRectanglesMex.mexw64': 找不到指定的模块。
解决:这个是因为在utils\cropRectanglesMex目录下的cropRectanglesMex.mexw64需要重新编译,编译前阅读该目录下的README会发现,这段代码是源自这里https://github.com/aosokin/cropRectanglesMex
不过源代码是在linux系统下编译的,而ADNet的作者给出了windows下的编译和链接程序,所以,如果是windows系统,需要运行build_cropRectanglesMex_on_windows.m文件
运行该文件,可能会发现提示类似:nvcc fatal : Cannot find compiler 'cl.exe' in PATH这样的错误
其中cl.exe是visual studio的编译器,所以,需要将cl.exe所在目录添加到环境变量里,我的cl.exe所在目录是:D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin
另外需要注意的是build_cropRectanglesMex_on_windows.m给出的cuda版本是7.5,需要根据自己的版本号做一些调整。比如我改了line10的代码为:cudaRoot = 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0';
如果build_cropRectanglesMex_on_windows.m运行成功,不要忘记将utils\cropRectanglesMex目录下的cropRectanglesMex.mexw64复制粘贴到utils\目录下,已替换掉本来存在的cropRectanglesMex.mexw64文件。
错误3:No appropriate method, property, or field 'setExecutionOrder' for class 'dagnn.DagNN'.
setExecutionOrder是作者自己为dagnn.DagNN写的方法。
我开始调用的是自己下载的MatConvNet库,总是出现这个错误,后来看了下作者自带的matlab库中\matlab\+dagnn\@DagNN 比官方库中多了setExecutionOrder这个文件。
将其复制到官方库的该目录下,问题结局。