-
安装caffe
-
最终caffe编译
make -j8 make pycaffe 其实我最终make runtest -j8并没有通过,是说我的显卡驱动与cuda不匹配 但是我先暂且放着没管,上面两行命令是可以成功的,当然做到后面还是要解决的
-
测试
1)得到lmdb文件
poseNet的输入是一张图像,输出是对应的位姿
先介绍一下我的目录结构 caffe-posenet是下载的代码 CambridgeLandmarks放的要输入的图片 PoseNet是我下载的训练好的模型 CambridgeLandmarks里面放了8张图片(从官网直接保存的),命名为king1.png king2.png... , 然后还在里面放了一个kingdataset_test.txt,内容如下: # creat by GPH # # 1.png 0 0 0 0 0 0 0 2.png 0 0 0 0 0 0 0 3.png 0 0 0 0 0 0 0 4.png 0 0 0 0 0 0 0 5.png 0 0 0 0 0 0 0 6.png 0 0 0 0 0 0 0 7.png 0 0 0 0 0 0 0 8.png 0 0 0 0 0 0 0
之后修改caffe-posenet/posenet/scripts/create_posenet_lmdb_dataset.py的1,11,12行依次如下(根据自己的具体情况修改): 第1行caffe_root = '/home/mk/tools/caffe-posenet/' # Change to your directory to caffe-posenet; 第11行directory = '/home/mk/tools/CambridgeLandmarks/king'; 第12行dataset = 'dataset_test.txt'。
注意第11行的king必须有,虽然没有相应的文件夹,这个king其实是图片名字前缀。
加粗样式
在某个目录下运行这个.py文件,就会在该目录下生成posenet_dataset_lmdb文件夹,得到lmdb数据。运行的命令python2 ./posenet/scripts/create_posenet_lmdb_dataset.py 所以我的posenet_dataset_lmdb这个文件夹是生成在caffe-posenet下面
2)得到均值文件
一般情况下均值文件应该为训练模型时的数据的均值文件,但是作者并没有提供,想要跑同测试,又必须有。训练数据集有5G大,我不想下,所以就用上面生成的lmdb数据得到一个临时的均值文件,这会让模型计算的结果是错误的,但是能跑通。所以没关系吧。。。
直接利用caffe提供的均值文件计算程序即可得到均值文件mean.binaryproto在caffe-posenet下面运行 ./build/tools/compute_image_mean ~/tools/caffe-posenet/posenet_dataset_lmdb/ ~/tools/caffe-posenet/posenet_dataset_lmdb/mean.binaryproto
3)运行
把下载的模型PoseNet文件夹里面的train_kingscollege.prototxt ,weights_kingscollege.caffemodel拷贝到posenet_dataset_lmdb里面(这个拷贝到哪里随意,只要跟着把下面语句路径改一改就好)修改运行脚本test_posenet.py中的路径(第13行)
修改网络结构中的路径参数(4个路径)
运行脚本,在caffe-posenet下运行python2 ./posenet/scripts/test_posenet.py --model ./posenet_dataset_lmdb/train_kingscollege.prototxt --weights ./posenet_dataset_lmdb/weights_kingscollege.caffemodel --iter 8
问题记录:
-
运行的时候,发现
/caffe-posenet/posenet/scripts/create_posenet_lmdb_dataset.py
等创建文件的脚本是Python2版本,其他地方又是Python3版本 -
No module named lmdb
sudo pip2 install lmdb
-
ImportError: No module named skimage.io
//如果是Python3版本,以下两条语句都可以 pip3 install scikit-image //如果是Python2版本,则只能下面这条语句了 sudo apt-get install python-skimage
Complete output from command python setup.py egg_info: Python 2.7.12 detected. scikit-image 0.16+ supports only Python 3.6 and above. For Python 2.7, please install the 0.14.x Long Term Support using: $ pip install 'scikit-image<0.15' 因为Python2版本不支持scikit-image 0.16以上的版本 然后指定版本在0.15以下 然而,在安装过程中会遇到如下错误: File "/tmp/pip-build-cm9XtI/scipy/setup.py", line 31, in <module> raise RuntimeError("Python version >= 3.5 required.") RuntimeError: Python version >= 3.5 required. 所以考虑通过apt-get或源码安装
-
ImportError: No module named google.protobuf.internal
sudo apt-get install python-protobuf
-
Check failed: error == cudaSuccess (35 vs. 0) CUDA driver version is insufficient for CUDA runtime
遇到这个问题,基本是cuda版本与显卡驱动不匹配造成的 我先去查了下cuda是否出了问题,然后发现之前安装好的cuda,可以通过sample测试,现在不可以了 cd ./NVIDIA_CUDA-10.1_Samples/1_Utilities/deviceQuery , 先去这个目录下 make ./deviceQuery 如果最后一行输出的是pass,那么cuda是没有问题的,然而我的是FAL,估计是平时装其他东西把环境破坏了 所以直接去重装cuda,连着显卡驱动也选择重新一起安装 果然,最后,重新编译sample时,可以通过了,上面这个问题也解决了