写在前面
首先,感谢这篇文章 https://blog.csdn.net/weixin_38651565/article/details/87901172 的作者 @jiayan97
和他有很多交流帮助到了我很多。
这篇文章希望可以帮助到您,另外如果我尚未解决好的问题,您若有一些好的见解,还希望可以多多交流。
我的邮箱是 parkbubble@163.com 。
正文
下载数据集
下载VG_100K
会有两个数据集压缩包,分别是images.zip
和images2.zip
,需要把它们解压出来的图片均放入同一个文件夹 VG_100K
中,并放入正确的路径下。
PYTHONPATH
要按要求设置好PYTHONPATH,这一配置指明的是环境变量的路径,否则程序运行时会报出类似于 ModuleNotFoundError
的错误。
更改一些路径
- 譬如运行
scripts
目录下的sh文档时,会出现 python: can’t open file ‘models/train_detector.py’: [Errno 2] No such file or directory 。这时候,把对应.py文档里面的相对路径改为绝对路径即可。 config.py
里面的路径一定要保证正确。我因为这个出现了如下问题:
File “/media/nopanic/DATA/AnExperiment/NeuralMotifs/neural-motifs-master/dataloaders/visual_genome.py”, line 260, in load_image_filenames
assert len(fns) == 108073
AssertionError
修改pycocotools
文档
这个是强烈建议提前修改好,不然耗时间训练一半之后会报错 NameError: name ‘unicode’ is not defined 。
这个是Python版本带来的问题,本项目的推荐运行环境是python3.6。而2中的Unicode在3中被命名为str。
解决方法:
- 打开文档:
sudo gedit $/anaconda3/lib/python3.6/site-packages/pycocotools/coco.py
- 替换第308行为(仅需改变最后一个单词)
if type(resFile) == str or type(resFile) == bytes:
bash运行时报错 FileNotFoundError: [Errno 2] No such file or directory: /media/nopanic/DATA/AnExperiment/NeuralMotifs/neural-motifs-master/checkpoints/vgdet
解决方案:直接在路径下创建空文件夹checkpoint
和 vgdet
。
bash运行时报错 [: ==: unary operator expected
请参考这篇文章:
https://blog.csdn.net/goodlixueyong/article/details/6564591
我修改这样操作之后,仍然存在错误,不能进入判断后的语句块里面;懒得折腾了,又因为自己只有一块标记为0的显卡,所以删去判断语句,直接运行第一个语句块中的代码。
- 查看自己可视GPU的指令是:
nvidia-smi -L
我的输出如下:
GPU 0: GeForce GTX 1080 Ti
更改.tar文件的名字
- tar文件是无法用解压指令或者软件完成解压的,它仅仅是将多个文件打包好,并没有压缩操作。
refine_for_detection.sh
和train_models_sgcls.sh
文档里面-ckpt
后面接有.tar文件,建议首先下载项目主页给出的对应下载链接,并且将下载的tar文件更改名字为.sh文件里面原有的tar文件名字,例如vg-24.tar
-ckpt
可以指明记录训练开始时的checkpoint信息,可以在pretrain_detector.sh
的-lr
指令之后加上-ckpt
以及指定的checkpoint .tar文件。 (我在一次pretrain_detector.sh
运行时,中途停止,故使用了-ckpt
, 后面接着-save_dir
中的vg-XX.tar
文件。- 另外,我运行
train_models_sgcls.sh
时出现了 KeyError: ‘roi_fmap.0.weight’ in train_models_sgcls.sh ,我暂时的解决方法是使用pretrain_detector.sh
步骤中引导下载的 pretrained detector checkpoint。
下面的链接是该问题在Github项目主页上开的一个issue:
https://github.com/rowanz/neural-motifs/issues/60
更改GPU的数目
原作者的运行环境中有三块GPU(Titan X ),所以在运行时会显示num_gpus : 3
,因为是bash运行,所以这个更改要直接更改refine_for_detection.sh
和train_models_sgcls.sh
里面对应的参数。
需要安装的一些Python包
pip install tqdm overrides pycocotools matplotlib h5py dill pandas
可以提前下载的东西
除了作者在Github主页上提到的一些东西,运行过程中还需要一些其他的下载内容,实验过程中网络不给力的同学可以提前下载好。
- https://download.pytorch.org/models/vgg16-397923af.pth
下载之后,我的放置路径是/home/nopanic/.torch/models/vgg16-397923af.pth,供参考。 - http://nlp.stanford.edu/data/glove.6B.zip
这个提供给refine_for_detection.sh
和train_models_sgcls.sh
使用的。 - 代码中提到的,但是不确定是否是必要下载的其他文档(因为程序还在运行中:P)
filename | download link |
---|---|
glove.42B | http://nlp.stanford.edu/data/glove.42B.300d.zip’ |
glove.840B | http://nlp.stanford.edu/data/glove.840B.300d.zip |
glove.twitter.27B | http://nlp.stanford.edu/data/glove.twitter.27B.zip |