这几天一直尝试跑通PSENet(github地址:https://github.com/whai362/PSENet),奈何编译一直不通过,报错
Makefile:10: recipe for target 'adaptor.so' failed
make: *** [adaptor.so] Error 1
后来在issues里找到可以解决办法,可以编译成功了,测试又报错:
ImportError: /opt/data/private/PSENet/pse/adaptor.so: undefined symbol: _ZN2cv8fastFreeEPv
在网上查资料说是Makefile里opencv地址的问题,但是还没找到有效的解决办法。于是转战tensorflow版的PSENet(github地址:https://github.com/liuheng92/tensorflow_PSENet)
1.配置环境
按照github上说的
Installation
1.Any version of tensorflow version > 1.0 should be ok.
2.python 2 or 3 will be ok.
创建了一个虚拟环境,安装了python3.6,tensorflow:
根据测试命令
python eval.py --test_data_path=./tmp/images/ --gpu_list=0 --checkpoint_path=./resnet_v1_50/ \
--output_dir=./tmp/
在项目根目录下创建文件夹tmp,resnet_v1_50,在tmp下创建images文件夹,测试图片放在该文件夹下。
运行测试命令,根据提示缺啥包装啥包,因为我的环境是python3.6,作者用的是python2.7(虽然作者说python2和python3都可以),还是会报一些错,进行如下修改:
utils_tool.py中的 import queue改为:
try:
import queue
except ImportError:
import Queue as queue
eval.py 228行:
xrange改成range
把pse/Makefile文件中的
第一行:$(shell python-config --cflags)改成$(shell python3-config --cflags)
第二行:$(shell python-config --ldflags)改成$(shell python3-config --ldflags)
此部分参考博客:https://blog.csdn.net/liu506039293/article/details/102835275,但是这篇博客关于模型放哪也没有讲清楚,作者github上更是一句没提,可能觉得太简单,压根没必要说。我是讲模型解压后的三个文件放在resnet_v1_50文件夹下
但是测试还是说找不到模型,应该是路径的问题,但是没细看,急着看效果,索性直接指定模型路径eval.py第172行
model_path = os.path.join(FLAGS.checkpoint_path, os.path.basename(ckpt_state.model_checkpoint_path))
直接换成
model_path = "./resnet_v1_50/model.ckpt"
测试成功