姿态估计1-02:FSA-Net(头部姿态估算)-源码训练测试-报错解决

以下链接是个人关于FSA-Net(头部姿态估算) 所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:a944284742相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。

姿态估计1-00:FSA-Net(头部姿态估算)-目录-史上最新无死角讲解

2019 / 12 / 14 \color{red}{注意,本人编写该博客的时间为2019/12/14,也就是说,你现在下载的作者代码或许}
W i n d s \color{red}{和本人的代码不一样(如果作者有更新过)还有就是,本人调试该代码为Winds系统}
W i n d s 使 p y c h a r m \color{red}{即下面的报错都是Winds下使用pycharm报错的过程,以及解决办法}

前奏准备

通过上一篇博客,大家可以先下载源码,然后我们就正式开始吧,下载源码之后,当然是先阅读其中的README.md文件,其中会指导我们该如何去运行代码。环境的搭建,这里就不讲解了,因为tensorflow对应的GPU环境,本人早已经搭建完成。安装对应的Keras也可谓是简单至极。
通过README.md可以看到如下内容:
在这里插入图片描述
下载好该data.zip之后,我们按照其提示,直接解压替换掉源码中的data文件夹,本人替换之后的模样如下(选择为覆盖模式,并没有主动删除文件):
在这里插入图片描述

训练报错解决

初步的准备我们已经完成,下面我们就开始进行训练吧,对于训练和测试的制作过程,大家不要担心,后续会进行详细讲解,我们先把代码跑起来再说,可以看到如下内容:
在这里插入图片描述
打开training_and_testing/run_fsanet_train.sh文件,可以看到如下:

# Train on protocal 1
# SSRNET_MT
KERAS_BACKEND=tensorflow python FSANET_train.py --batch_size 8 --nb_epochs 90 --model_type 0 --db_name '300W_LP'
KERAS_BACKEND=tensorflow python FSANET_train.py --batch_size 8 --nb_epochs 90 --model_type 1 --db_name '300W_LP'

# FSANET_Capsule
KERAS_BACKEND=tensorflow python FSANET_train.py --batch_size 16 --nb_epochs 90 --model_type 2 --db_name '300W_LP'
KERAS_BACKEND=tensorflow python FSANET_train.py --batch_size 16 --nb_epochs 90 --model_type 3 --db_name '300W_LP'
KERAS_BACKEND=tensorflow python FSANET_train.py --batch_size 16 --nb_epochs 90 --model_type 4 --db_name '300W_LP'


# FSANET_Netvlad
KERAS_BACKEND=tensorflow python FSANET_train.py --batch_size 16 --nb_epochs 90 --model_type 5 --db_name '300W_LP'
KERAS_BACKEND=tensorflow python FSANET_train.py --batch_size 16 --nb_epochs 90 --model_type 6 --db_name '300W_LP'
KERAS_BACKEND=tensorflow python FSANET_train.py --batch_size 16 --nb_epochs 90 --model_type 7 --db_name '300W_LP'

我也很懵逼,不知道为什么套执行这么多次程序,是要做什么,但是没关系,先照着做就行了。首先设置pycharm的环境变量KERAS_BACKEND=tensorflow,如下操作:
在这里插入图片描述
在这里插入图片描述
然后点击ok即可,注意的的是,这里我们配置的是第一个训练进程,即:

KERAS_BACKEND=tensorflow python FSANET_train.py --batch_size 8 --nb_epochs 90 --model_type 0 --db_name '300W_LP'

先试试水,看能不能跑起来,配置完成之后,我们运行代码。本人显示如下:
在这里插入图片描述
貌似成功的样子,但是还是报错了。

报错一

  File "D:\3.Anaconda3\lib\site-packages\keras\utils\vis_utils.py", line 22, in _check_pydot
    'Failed to import `pydot`. '
ImportError: Failed to import `pydot`. Please install `pydot`. For example with `pip install pydot`.

这种错误,这么可能难得到朕,执行:

pip install pydot

即可,然后重新运行代码。

报错二

Traceback (most recent call last):
  File "D:\3.Anaconda3\lib\site-packages\keras\utils\vis_utils.py", line 28, in _check_pydot
    pydot.Dot.create(pydot.Dot())
  File "D:\3.Anaconda3\lib\site-packages\pydot.py", line 1922, in create
    raise OSError(*args)
FileNotFoundError: [WinError 2] "dot" not found in path.

During handling of the above exception, another exception occurred:


  File "D:\3.Anaconda3\lib\site-packages\keras\utils\vis_utils.py", line 31, in _check_pydot
    '`pydot` failed to call GraphViz.'
OSError: `pydot` failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) and ensure that its executables are in the $PATH.

心里有点慌,不知道啥原因,不过不用着急,首先听他的话,通过https://www.graphviz.org安装好GraphViz,计入网页点击如下:
在这里插入图片描述
在这里插入图片描述
然后我在点击进去,妈呀,太复杂了,作为一个传统的懒鬼,赶紧百度,看看有没有其他的捷径。参照如下链接的博客完成操作:
https://www.cnblogs.com/shuodehaoa/p/8667045.html
本人安装默认路径为 C:\Program Files (x86)\Graphviz2.38\,完成之后,我们还需要执行:

pip install graphviz

然后重新运行程序,报错和上面依旧一样,大家要注意的是,需要重启电脑,环境变量或许才能添加进去。

等大家重启之后呢,还是报一样的错误,哈哈。主要是我们还要修改D:\3.Anaconda3\Lib\site-packages\pydot.py文件:

DEFAULT_PROGRAMS = {
#    'dot',
	'dot.exe',
    'twopi',
    'neato',
    'circo',
    'fdp',
    'sfdp',
}

注释部分为源码,dot.exe为本人做的修改,然后重新运行即可。本人显示如下:
在这里插入图片描述
这样,我们的训练代码就调试成功了,我相信有的朋友可能想再终端运行,执行,那么我们需要执行下面两个步骤(winds环境):

set KERAS_BACKEND=tensorflow 
python FSANET_train.py --batch_size 8 --nb_epochs 90 --model_type 0 --db_name '300W_LP'

报错三

(base) E:\1.PaidOn\8.3D\3.FSA-Net\1.FSA-Net-master\training_and_testing>python FSANET_train.py --batch_size 8 --nb_epochs 90 --model_type 0 --db_name '300W_LP'
Using TensorFlow backend.
db_name is wrong!!!

这里呢,主要是winds和linux系统的一些区别影响的,大家不用管太多,执行如下命令即可:

python FSANET_train.py --batch_size 8 --nb_epochs 90 --model_type 0 --db_name 300W_LP

其实和上面的一样,只是把’300W_LP’替换成了300W_LP即可。然后就可以训练了。下面当然是来看看测试代码了。

测试报错解决

查看training_and_testing/run_fsanet_test.sh代码,可以看到如下,

KERAS_BACKEND=tensorflow python FSANET_test.py --model_type 0
KERAS_BACKEND=tensorflow python FSANET_mix_test.py --model_type 0

我们直接添加–model_type 0到pychram,然后进行运行测试代码。

注意,执行这个代码,是需要等待训练结束,也就是执行

KERAS_BACKEND=tensorflow python FSANET_train.py --batch_size 8 --nb_epochs 90 --model_type 0 --db_name 300W_LP

但是大家要注意,测试的执行,必须再模型训练完成之后,及前面的

python FSANET_train.py --batch_size 8 --nb_epochs 90 --model_type 0 --db_name 300W_LP

已经执行完毕。完成之后在:
在这里插入图片描述
pre-trained目录下会生成如上文件,别问我是什么,我现在也一脸懵逼,找不到东南西北。后续再为大家详细的讲解。

报错一

AttributeError: module 'keras.backend' has no attribute 'image_dim_ordering'

找到报错位置,替换如下:

#if K.image_dim_ordering() == "th":
if K.image_data_format() == 'channels_first':

本人再次执行(终端):

python FSANET_test.py --model_type 0

打印如下:
在这里插入图片描述
本人估计测试是完成了,但是到底是啥玩意,就不要为难我了,现在我也不知道。接下来我为大家做论文翻译,我相信大家看完论文,以及代码解析,肯定能找到自己想要的答案。那么我们开始吧,各位漂亮的小姐姐小哥哥们。要点赞哈!

发布了219 篇原创文章 · 获赞 687 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/weixin_43013761/article/details/103539657