首先,感谢这篇文章 https://blog.csdn.net/weixin_38651565/article/details/87901172 的作者 @jiayan97
和他有很多交流帮助到了我很多。
这篇文章希望可以帮助到您,另外如果我尚未解决好的问题,您若有一些好的见解,还希望可以多多交流。
我的邮箱是 parkbubble@163.com 。
下载VG_100K
会有两个数据集压缩包,分别是images.zip
和images2.zip
,需要把它们解压出来的图片均放入同一个文件夹 VG_100K
中,并放入正确的路径下。
要按要求设置好PYTHONPATH,这一配置指明的是环境变量的路径,否则程序运行时会报出类似于 ModuleNotFoundError
的错误。
scripts
目录下的sh文档时,会出现 python: can’t open file ‘models/train_detector.py’: [Errno 2] No such file or directory 。这时候,把对应.py文档里面的相对路径改为绝对路径即可。config.py
里面的路径一定要保证正确。我因为这个出现了如下问题: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
if type(resFile) == str or type(resFile) == bytes:
解决方案:直接在路径下创建空文件夹checkpoint
和 vgdet
。
请参考这篇文章:
https://blog.csdn.net/goodlixueyong/article/details/6564591
我修改这样操作之后,仍然存在错误,不能进入判断后的语句块里面;懒得折腾了,又因为自己只有一块标记为0的显卡,所以删去判断语句,直接运行第一个语句块中的代码。
nvidia-smi -L
GPU 0: GeForce GTX 1080 Ti
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。原作者的运行环境中有三块GPU(Titan X ),所以在运行时会显示num_gpus : 3
,因为是bash运行,所以这个更改要直接更改refine_for_detection.sh
和train_models_sgcls.sh
里面对应的参数。
pip install tqdm overrides pycocotools matplotlib h5py dill pandas
除了作者在Github主页上提到的一些东西,运行过程中还需要一些其他的下载内容,实验过程中网络不给力的同学可以提前下载好。
refine_for_detection.sh
和train_models_sgcls.sh
使用的。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 |