Увеличение изображений в наборе данных - обнаружена ошибка ValueError: Не удалось найти формат для чтения указанного файла в режиме 'i' - PullRequest
0 голосов
/ 14 октября 2019

Я нахожусь в классе нейронных сетей для начинающих и действительно борюсь с трудностями.

У меня есть набор данных изображений, который недостаточно велик, чтобы обучать мою сеть, поэтому я пытаюсь дополнить их (поворот / добавление шума и т. д.) и добавление дополненных изображений в исходный набор. Я следую коду, найденному на Medium: https://medium.com/@thimblot/data-augmentation-boost-your-image-dataset-with-few-lines-of-python-155c2dc1baec

Однако я сталкиваюсь с ValueError: Could not find a format to read the specified file in mode 'i'

Не уверен, что означает эта ошибка или как ее решить. Любая помощь будет принята с благодарностью.

import random
from scipy import ndarray
import skimage as sk
from skimage import transform
from skimage import util

path1 = "/Users/.../"
path2 = "/Users/.../"
listing = os.listdir(path1)  

num_files_desired = 1000

image = [os.path.join(path2, f) for f in os.listdir(path2) if os.path.isfile(os.path.join(path2, f))]

num_generated_files = 0
while num_generated_files <= num_files_desired:
    image_path = random.choice(image)
    image_to_transform = sk.io.imread(image_path)

    137     if format is None:
    138         raise ValueError(
--> 139             "Could not find a format to read the specified file " "in mode %r" % mode
    140         )
    141 

ValueError: Could not find a format to read the specified file in mode 'i'

1 Ответ

0 голосов
/ 14 октября 2019

Я вижу несколько возможностей. Прежде чем перейти к ним. Я хотел бы выразить в чем ваша ошибка. Это в основном показатель того, что ваши изображения не могут быть прочитаны sk.io.imread(). Позвольте мне перейти к возможным действиям:

  • Ваша часть [os.path.join(path2, f) for f in os.listdir(path2) if os.path.isfile(os.path.join(path2, f))] может неправильно указывать путь к изображению. Вы должны исправить это вручную. Если это так, вы можете вручную указать точную папку, не выполняя такой цикл. Просто используйте os.listdir() и читайте файлы вручную.

  • Вы также можете использовать glob, чтобы читать файлы с таким же расширением, как .jpg или другие.

  • Ваши файлы могут быть повреждены. Вы можете просто устранить их, используя PIL, и сначала прочитать изображения с PIL, например, image = Image.open(), и использовать метод image.verify().

  • Попробуйте прочитать о sk.io.imread(filename, plugin=''. Часть плагина может решить вашу проблему.

Надеюсь, это поможет.

...