【问题标题】:Why can tf.image.decode_jpeg decode a png?为什么 tf.image.decode_jpeg 可以解码 png?
【发布时间】:2019-02-05 03:41:41
【问题描述】:

今天我正在测试一些 tensorflow (python) 代码。它是著名的 MNIST 集上的神经网络。

一切正常,所以我只是通读了代码并研究了该网络的结构。

说到图片输入,我发现如下代码:

image_string = tf.read_file(filename)

image_decoded = tf.image.decode_jpeg(image_string, channels=3)

代码使用“decode_jpeg”而不是“decode_png”。而且我没有看到任何错误。

但是,我 100% 确定图片是 PNG 格式。

我用过

od -c -b 1.png

查看这些图像,它们是 PNG。

那么,为什么“decode_jpeg”可以在 PNG 上工作?是否有可能由此引起的任何潜在问题?

【问题讨论】:

    标签: python image tensorflow


    【解决方案1】:
    img = tf.image.decode_png(file_bytes, channels=3) 
    

    您可以将decode_png 用于png 文件

    【讨论】:

    • OP 知道decode_png,他在问题中提到了它。问题是“为什么decode_jpeg 有效?”。
    【解决方案2】:

    documentation for tensorflow 声明:

    此操作还支持解码 PNG 和非动画 GIF,因为界面相同,但使用 tf.image.decode_image 更简洁。

    所以本质上这是一个设计决定,因为接口是相同的,只是处理它,而不是抛出一个错误,迫使用户使用正确的 API 调用。

    【讨论】:

    • 非常有趣的设计决策。我会挑战使用decode_image 是否真的更干净。该函数的输出形状是不可预测的:Tensor with type dtype and a 3- or 4-dimensional shape, depending on the file type and the value of the expand_animations parameter.
    • 结果是否完全相同?我认为它至少必须发出警告。
    猜你喜欢
    • 2019-12-22
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    相关资源
    最近更新 更多