【问题标题】:How can I load a local image from Keras?如何从 Keras 加载本地图像?
【发布时间】:2021-10-08 17:21:46
【问题描述】:

我正在尝试在 Keras 中加载本地图像,但它无法正常工作,尝试显示时出现错误:

/usr/local/lib/python3.7/dist-packages/IPython/core/formatters.py:364: FormatterWarning: image/png formatter returned invalid type <class 'PIL.JpegImagePlugin.JpegImageFile'> (expected (<class 'bytes'>, <class 'str'>)) for object: <IPython.core.display.Image object>
  FormatterWarning
<IPython.core.display.Image object>

我正在使用 Keras 的创始人创建的这个笔记本(它自己工作,但它从互联网下载图像): https://colab.research.google.com/drive/1H-lNMxVF9NPME6oZVphFRoi7yglJMZxP

我想尝试使用自己的图像来玩转风格,所以我改变了这个:

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.applications import vgg19

# base_image_path = keras.utils.get_file('my_pic.jpg', './my_pic.png')
base_image_path = keras.utils.load_img('/content/my_pic.jpg')
style_reference_image_path = keras.utils.get_file('starry_night.jpg', 'https://i.imgur.com/9ooB60I.jpg')
result_prefix = 'paris_generated'
iterations = 5000

# Weights of the different loss components
total_variation_weight = 1e-6
style_weight = 2e-6
content_weight = 2e-8

# Dimensions of the generated picture.
width, height = keras.preprocessing.image.load_img(base_image_path).size
img_nrows = 400
img_ncols = int(width * img_nrows / height)

当我做出这个改变时:

# base_image_path = keras.utils.get_file('my_pic.jpg', './my_pic.png')
base_image_path = keras.utils.load_img('/content/my_pic.jpg')

所有代码都停止工作。我认为 get_file 方法正在做一些事情以使其作为图片可访问,因为在原始笔记本中它显示图片但对我来说却没有。

有什么我可以做的吗?我是处理图像的新手,但我确实对此进行了研究,我认为 get_file 方法用于通过网络获取文件,所以我认为如果我在本地 colab 系统上复制文件,它将无法正常工作。

【问题讨论】:

    标签: python keras


    【解决方案1】:

    我个人会阅读很多 tensorflow 的文档。对于大多数功能和您想做的事情来说,这实际上是惊人的。例如 get_file 你可以看到它说 Returns Path to the downloaded file。而 load_img 将使用路径将文件加载到 PIL 图像对象中。

    在示例中,他们正在做的是从互联网下载该文件,get_file 返回该下载文件的路径,然后他们使用keras.preprocessing.image.load_img 加载图像并获取尺寸(即宽度、高度)

    所以要解决您的问题。这很简单。不要拨打keras.utils.load_img('/content/my_pic.jpg')。你需要做的就是设置

    base_image_path = '/content/mypic.jpg'
    

    请记住这个文件路径意味着您在驱动器的根目录中有一个名为 content 的文件夹。如果您打算放置一个相对路径,请删除第一个 /

    例如如果在 colab/your lab 中有一个名为 content 的文件夹位于您的笔记本旁边,那么您想使用相对路径 content/mypic.jpg。但是,如果图像位于您的下载中,则将其作为绝对路径(即 C:\Users\USER\Downloads 或 /Users/USER/Downloads)执行类似的操作

    【讨论】:

    • 谢谢你成功了。我没有意识到它只是一个图像的路径。我认为它在幕后进行了一些其他处理。谢谢!
    • 不用担心。我希望这一切都适合你。这是一个有趣的教程
    猜你喜欢
    • 1970-01-01
    • 2018-11-28
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多