解决办法:使用tf.compat.v1.image.resize_bilinear替换
这个bug之前在这里有人提到过,自己之前也遇到过,但是是用补救的方法解决的,这次是在准备训练EAST文本检测网络时又遇到了,记录一下解决过程。
关于EAST, github有tf1-keras低版本的已训练好的h5权重,为了能在win系统的tf2上快乐高效地训练,我按照keras2.3.1的resnet50层命名风格重建了EAST网络,这样在tf2(keras=2.4.0)上就能完美加载tf1的权重了。
在tf1中,EAST的一个resize_bilinear层是用的tf.image.resize或tf.image.resize_bilinear函数来做插值的,两个函数在使用中没有任何问题。而在tf2中,只提供了tf.image.resize函数,但网络加载权重后的预测结果有偏移:
将resize_bilinear层中的tf.image.resize替换为tf.compat.v1.image.resize_bilinear输出就正常了
诶,这次还好发现及时。。。