深度学习小白一枚~入门初级,开始跑些实验,一路遇到很多很多问题,在此仅记录其中一部分,谢谢~
环境:
Ubuntu16.04+CUDA8.0+Cudnn8.0v6.0+python3.5+tensorflow1.4
一、 SSD测试
主要参考: https://blog.csdn.net/yexiaogu1104/article/details/77415990
<https://blog.csdn.net/yexiaogu1104/article/details/77415990>
1. 下载SSD-Tensorflow源码,下载模型ssd_300_vgg
<https://drive.google.com/open?id=0B0qPCUZ-3YwWZlJaRTRRQWRFYXM>
,存放在SSD-Tensorflow-master/checkpoints/目录下;
2. 在主目录 SSD-Tensorflow-master 下打开终端,运行jupyter
notebooknotebooks/ssd_notebook.ipynb,报错:
[C10:29:04.586 NotebookApp] Running as root is not recommended. Use
--allow-rootto bypass.
解决方法:由于是根用户,需加--allow-root,即运行:jupyter notebooknotebooks/ssd_notebook.ipynb
--allow-root
3. 进入服务器打开ssd_notebook.ipynb.ipynb文件后,配置一些路径:第4个cell中from notebooks
importvisualization改成import notebooks。
4. 使用自己的图片,改变path = '../demo/'成自己的图片所在路径 。最后从头到尾运行所有cell。
5. 一般运行到第六个cell报错,错误类型如果是没找到ssd_300_vgg.ckpt
文件,是因为之前下载的ssd_300_vgg模型没有解压,就去相应文件夹将压缩包解压即可。若是报错没有matplotlib等依赖包,则终端命令安装即可。
6. 然后,如果是用网上博客教程中的.py文件进行测试,运行python ssd_Python.py可能会报错类:NameError:name
'true'/'null' is not define
。原因是python里面没有true/false/null,其对应的是True/False/None。用vi打开ssd_Python.py后逐一修改,保存退出,再运行即可。
二、 用自己的数据训练SSD模型
主要参考:https://blog.csdn.net/liuyan20062010/article/details/78905517
<https://blog.csdn.net/liuyan20062010/article/details/78905517>
1. 按照自己的数据和目标类别修改源码
2.
将自己的数据转换为tfrecord格式,转换之前要先到datasets—>pascalvoc_to_tfrecords.py修改第82行的原始数据格式(ubuntu要区分.jpg还是.JPG——因为我的数据后缀是.JPG,而之前用在faster
rcnn的时候caffe没有区分大小写,所以一直没注意这个问题,然后这个就坑了我好几天……)——不然会报错说
tensorflow.python.framework.errors_impl.NotFoundError,找不到你JPEGImages
里的数据;修改第83行的“.r”为“.rb”——不然报错:UnicodeDecodeError: 'utf-8' codec can't decodebyte
0xff in position 0: invalid start byte。然后格式转换有三种方式:
(1) 直接在终端逐行命令输入。
(2) 写一个脚本文件tf_convert_data.sh,bash运行。
(3) 直接将变量带入tf_convert_data.py,终端运行Python3 tf_convert_data.py。
此时遇到过的报错有:
l ImportError:libcublas.so.9.0: cannot open shared object file: No such file
or directory
Failedto load the native TensorFlow runtime.
如果出现这个问题,就说明之前安装的tensorflow-gpu版本是默认的1.5或1.6版本,1.5版本要求cuda9.0,而我安装的cuda是8.0.
解决方法是回滚:pip3 install tensorflow-gpu==1.4
l AttributeError:dataset_dir
(dataset_dir参数没传对~很有可能是路径名称有错—注意ubuntu上的一些隐藏路径,注意检查每一个字母!)
3. 训练模型:只说从头到尾训练的方式
(1) 要注意保存日志和模型的时间间隔。之前由于考虑到自己的数据量很少(一百八十张),我就把参数save_summaries_secs和save_interval_secs改得很小,导致后面迭代到两万多次、模型就有七十几G……还是用别人博客里面的60s和600s
(2) 训练完之后,在TRAIN_DIR路径下会产生四种文件,导致后面做模型测试的时候不知是哪个作为CHECKPOINT_PATH,每个尝试,就报各种奇怪的错误。其实应该是将训练得到的整个文件夹作为自己训练得到的模型作为CHECKPOINT_PATH输入。
热门工具 换一换