欢迎光临
我们一直在努力

TensorFlow中的decode_jpeg与opencv的imread结果不一致

TensorFlow中的decode_jpeg与opencv的imread结果不一致

关于这个问题,我觉得有必要记录一下,开发中可能就是一个小坑。

我遇到的问题是我导出模型部署到了tensorflow serving,然后python编写客户端调用,有一个placeholder是一个image的numpy array,然后我直接就用的cv.imread读取的,但是比对结果的时候,发现调用tensorflow serving得到的结果和直接跑tensorflow的结果有一些区别,图像的分类属性预测的大致相同只是score不同,但是embeddings则有较多差别。

仔细检查过两部分代码发现都没什么大问题,后来排查到输入,发现模型里有一个op是tensorflow的decode_jpeg,猜测可能是decode_jpeg和imread产生的图像数据不一致。

验证了一下果然是这样,后面把imread换掉之后结果就对的上了。

查了一下 原因其实就是tensorflow的decode_jpeg在实现的时候使用了IFAST的DCT变换算法 这一点在tf的源码中也能看到


1
2
3
4
tensorflow/tensorflow/core/kernels/decode_image_op.cc
Line 109 in e073322

 // The TensorFlow-chosen default for jpeg decoding is IFAST, sacrificing

如果要使两者一致呢,可以在decode_jpeg的时候 指明DCT算法做参数。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » TensorFlow中的decode_jpeg与opencv的imread结果不一致
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址