代码地址:
https://github.com/subpic/ava-mlsp
目的:
根据作者论文实现代码结果
过程:
问题1:
from keras import backend as K
K.set_image_dim_ordering("tf")
error: K has no attribute "set_image_dim_ordering"
keras中未包含“set_image_dim_ordering"属性,而此属性是用于设置keras后端的数据维度顺序,
即将keras的数据维度顺序设置为tensflow的格式。
- 解决方法
安装版本为1.13., 将keras版本升级到2.1.6,问题解除。
问题2:
x = apps.inception_block(input_feats, size=1024)
Value error: value input is float32, but allowed type is int32, int64
输入数据中inception_block模块的branch3*3中shape未使用int型.
- 解决方法
在size/2前面加上int就行:int(size/2)
问题3:
model path问题
下载的mlsp_wide_best_weight.h文件放在对应路径即可,文件大小250M
- 解决方法
root_path + 'ava-mlsp-master/models/irnv2_mlsp_wide_orig/model_best_weights.h5‘
问题4:
helper.model问题
读取测试集合时出现:‘pandas’ has no attribute '__dict__'
主要原因在于,读取csv文件数据为pandas时,并没有__dict__方法可用,直接使用对应元祖的索引序号提取对应测试集图片,可得到测试结果。 将读取数据对应部分改为 :
row.__dict__.intput_name改为:
row[15]
最终得到测试结果:
Evaluated on test-set
SRCC/PLCC: 0.752 0.755
ACCURACY: 0.816087916499
数据分布图如下:
总结:
- 作者代码大部分是借助于keras和tensorflow开源代码完成工作,不需要从头开始,提高实现idea效率
- 作者写的代码十分严谨,从每个函数的功能声明到数据的生成和可视化,构成一个完整的系统。
- 在实现完成所需功能后,还将通用函数形成库函数作为keras基础上的功能包开源,是有效提高代码效率的方式之一。