本篇博文是对论文DenseCap的源码实现,作者是斯坦福的Justin Johnson
项目地址:https://cs.stanford.edu/people/karpathy/densecap/
源码地址:https://github.com/jcjohnson/densecap
论文地址:http://arxiv.org/abs/1511.07571
注意事项:源码是15年写的,所以使用的是比较老版本的cuda和cudnn(8.0 v5.1),并且作者也没有在继续更新代码了,所以如果你想成功运行起来的话,尽量不要用太高版本的cuda,否则可能会出现文件丢失错误(libcudnn (R5) not found in library path.)
安装
安装以下依赖:
1 | $luarocks install torch |
(可选)安装GPU相关依赖(如果你不使用GPU跑代码,可以不装这里)
1 | $luarocks install cutorch |
下载预训练模型
在命令行中键入下面的指令,运行脚本下载预训练模型(注意,下面的脚本文件在github上的项目代码里,所以你要先把github上的源代码下载下来,然后进入到项目目录里面)1
$sh scripts/download_pretrained_model.sh
用图片来测试模型
源码中自带了一张大象的图片,你可以用下面的指令来对大象图片进行测试,如果你想测试自己的图片,把图片放到项目中的imgs
文件里,然后修改指令后面的图片名称为你自己图片的名称就可1
$th run_model.lua -input_image imgs/elephant.jpg
如果你没有GPU,记得要加上-gpu -1指令来告诉模型在cpu上指令(CPU上的指令速度较慢,我自己的执行情况是:GTX980Ti:0.3s 酷睿i5/7:5~10min)
以上指令会生成vis/data文件夹,这就是模型的运行结果,可以用下面的方式查看结果,
1 | $cd vis |
然后,在浏览器中打开http://localhost:8181/view_results.html.
当然,如果你想一次运行数张图片,可以使用下面的指令,该指令会将指定路径下的图片全部执行1
$th run_model.lua -input_dir /path/to/my/image/folder
问题:
我遇到了以下问题,这里列出我自己的解决方法,如果你还遇到了其他不同的问题,可以留言,我会尽快答复你
问题1:cutorch问题
提示找不到cutorch,或者其他什么相关的错误
解决办法:重新安装cutorch1
$luarocks install cutorch
不幸的是,这个解决方法对我并没有用,我最后发现是因为代码运行的cutorch版本是5.1,而由于此时我安装了高版本的cuda(9),所以在使用上面的指令安装时,安装的是cutorch 5.2,所以提示找不多5.1的cutorch,最后,我重新换回了的cuda8.0,并重新安装cutorch,解决了问题,切换cuda版本的方法可以看这里:https://blog.csdn.net/ksws0292756/article/details/80120561
问题2:libcudd.5.so.5 找不到
主要原因还是cuda和cudnn的版本问题,我切换了cuda和cudnn的相关版本,换到cuda8.0和cudnn_v5.1以后, 解决了问题