标签: image-classification

PIL.UnidentifiedImageError:无法识别图像文件<_io.BytesIO对象

我正在尝试使用 Tensorflow 训练我的模型(图像分类)。当我尝试运行以下单元格时,我不断收到错误消息:

    hist = model.fit(
        train_generator, 
        epochs=100,
        verbose=1,
        steps_per_epoch=steps_per_epoch,
        validation_data=valid_generator,
        validation_steps=val_steps_per_epoch).history
Run Code Online (Sandbox Code Playgroud)

错误是:

Epoch 1/100
27/31 [=========================>....] - ETA: 1s - loss: 0.7309 - acc: 0.6181
---------------------------------------------------------------------------
UnknownError                              Traceback (most recent call last)
<ipython-input-36-b1c104100211> in <module>
      2 val_steps_per_epoch = np.ceil(valid_generator.samples/valid_generator.batch_size)
      3 
----> 4 hist = model.fit(
      5     train_generator,
      6     epochs=100,

/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)
   1098                 _r=1):
   1099               callbacks.on_train_batch_begin(step)
-> 1100               tmp_logs = …
Run Code Online (Sandbox Code Playgroud)

python tensorflow image-classification

7
推荐指数
1
解决办法
3万
查看次数

有没有办法集成两个针对相同类别训练的 keras (h5) 模型

我已经用不同的数据集为相同的类标签训练了两个 keras 模型。我如何将模型 keras_model.h5 和 keras_model2.h5 集成在一起,并制作另一个 keras 模型,即 keras_ensemble.h5。我尝试参考各种互联网资源,但运气不佳。有人可以帮我编写集成它的代码吗? 这是我训练过的模型

请帮助我解决这个问题。谢谢。

编辑:这是我的代码,在回答我的问题 Frightera 的人的帮助下我能够完成该代码

 import tensorflow.keras
    import tensorflow as tf
    from PIL import Image, ImageOps
    import numpy as np
    
    # Disable scientific notation for clarity
    np.set_printoptions(suppress=True)
    
    # Load the model
    keras_model = tensorflow.keras.models.load_model('keras_model.h5', compile=False)
    keras_model._name = 'model1'
    keras_model2 = tensorflow.keras.models.load_model('keras_model2.h5', compile=False)
    keras_model2._name = 'model2'
    models = [keras_model, keras_model2]
    #model_input = tf.keras.Input(shape=(125, 125, 3))
    model_input = tf.keras.Input(shape=(224, 224, 3))
    model_outputs = [model(model_input) for model in models]
    ensemble_output = tf.keras.layers.Average()(model_outputs) …
Run Code Online (Sandbox Code Playgroud)

python machine-learning ensemble-learning keras image-classification

7
推荐指数
1
解决办法
8427
查看次数

将训练标签传递给 tf.keras.preprocessing.image_dataset_from_directory 不起作用

我正在尝试将数据加载到 Colab 笔记本中,其中(平面)目录包含一堆 jpg 图像,标签类包含在单独的 csv 文件中,使用 tf.keras.preprocessing.image_dataset_from_directory。

根据文档:

Either "inferred" (labels are generated from the directory structure), or a list/tuple of integer labels of the same size as the number of image files found in the directory. Labels should be sorted according to the alphanumeric order of the image file paths (obtained via os.walk(directory) in Python).

我使用 Pandas 读取 csv 并使用以下内容将其转换为列表,并将 train_labels 作为标签参数传入:

labels = pd.read_csv(_URL)
train_labels = labels.values[:,1].tolist()
print("Total labels:", len(train_labels))
print(train_labels)
>>> Total labels: 1164
>>> [1, …
Run Code Online (Sandbox Code Playgroud)

python machine-learning keras image-classification

6
推荐指数
0
解决办法
410
查看次数

如何注册数据集以与 detectorron2 一起使用?我们有 COCO JSON 格式的图像及其注释

我正在尝试使用 Detectron2 训练模型。我正在使用 Grocery 图像数据,并且有 COCO 格式的注释。我在模型加载时遇到问题。模型不带注释。我指的是这个博客https://gilberttanner.com/blog/detectron2-train-a-instance-segmentation-model

注册数据集时面临问题。

from detectron2.data.datasets import register_coco_instances

for d in ["train", "test"]:
    register_coco_instances(f"microcontroller_{d}", {}, f"Microcontroller Segmentation/{d}.json", f"Microcontroller Segmentation/{d}")
Run Code Online (Sandbox Code Playgroud)

这段代码有问题吗?

json image-segmentation deep-learning detectron image-classification

3
推荐指数
1
解决办法
8765
查看次数

fastai show_batch 和 show_results 不执行任何操作

我在 fastai v2.3.1 上构建了一个模型。当我尝试调用函数 show_batch 和 show_results 时,它没有显示任何内容。这是有问题的代码:

from fastai.vision.all import *
from fastai.data.all import *
import fastai.vision
import zipfile as zf
import random
import timeit



fields = DataBlock(blocks=(ImageBlock, CategoryBlock),
                   get_items=get_image_files,
                   get_y=yer,
                   splitter=RandomSplitter(valid_pct=0.2, seed=random.randint(0, 10)),
                   item_tfms=RandomResizedCrop(224, min_scale=0.5),
                   batch_tfms=aug_transforms()
                   )


dls = fields.dataloaders(os.path.join(Path(os.getcwd()), "train"), num_workers=0, bs=32)

dls.show_batch()

learn = cnn_learner(dls, resnet18, metrics=error_rate)

learn.fine_tune(2)

learn.show_results()
Run Code Online (Sandbox Code Playgroud)

我可以使用模型但这些功能。

machine-learning deep-learning fast-ai image-classification

3
推荐指数
1
解决办法
1651
查看次数

Pytorch 预训练模型中的类数

我想使用Pytorch中的预训练模型在我自己的数据集中进行图像分类,但是我应该如何在冻结特征提取层的参数的同时更改类的数量?

这些是我想要包括的模型:

resnet18 = models.resnet18(pretrained=True)
densenet161 = models.densenet161(pretrained=True)
inception_v3 = models.inception_v3(pretrained=True)
shufflenet_v2_x1_0 = models.shufflenet_v2_x1_0(pretrained=True)
mobilenet_v3_large = models.mobilenet_v3_large(pretrained=True)
mobilenet_v3_small = models.mobilenet_v3_small(pretrained=True)
mnasnet1_0 = models.mnasnet1_0(pretrained=True)
resnext50_32x4d = models.resnext50_32x4d(pretrained=True)
vgg16 = models.vgg16(pretrained=True)
Run Code Online (Sandbox Code Playgroud)

预先非常感谢!


我添加的新代码:

import torch
from torchvision import models

class MyResModel(torch.nn.Module):
    def __init__(self):
        super(MyResModel, self).__init__()
        self.classifier = nn.Sequential(
            nn.Linear(512,256),
            nn.ReLU(),
            nn.Dropout(p=0.5),
            nn.Linear(256,3),
        )

    def forward(self, x):
        return self.classifier(x)

resnet18 = models.resnet18(pretrained=True)
resnet18.fc = MyResModel()

for param in resnet18.parameters():
    param.requires_grad_(False)
Run Code Online (Sandbox Code Playgroud)

python deep-learning conv-neural-network pytorch image-classification

3
推荐指数
1
解决办法
7289
查看次数

类型错误:“图像”对象不可使用 PIL 进行下标

我正在尝试在 google colab 上开发一个网络应用程序。我想在这个 Web 应用程序中使用我之前训练过的模型制作一个图像分类器。当我在 Web 应用程序中从浏览器中选择要分类的图像时,出现以下错误:

TypeError: 'Image' object is not subscriptable.
Run Code Online (Sandbox Code Playgroud)

我的代码块:

TypeError: 'Image' object is not subscriptable.
Run Code Online (Sandbox Code Playgroud)

ngrok tensorflow google-colaboratory streamlit image-classification

1
推荐指数
1
解决办法
2万
查看次数

如何将带有亮度的数据增强添加到图像分类框架中?

我正在使用 pytorch 使用github中的代码进行图像分类。我需要在训练我的模型之前添加数据增强,我选择了albumentation来执行此操作。这是我添加专辑时的代码:

data_transform = {
    "train": A.Compose([ 
                        A.RandomResizedCrop(224,224),
                        A.HorizontalFlip(p=0.5),
                        A.RandomGamma(gamma_limit=(80, 120), eps=None, always_apply=False, p=0.5),
                        A.RandomBrightnessContrast (p=0.5),
                        A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), always_apply=False, p=0.5),
                        A.ShiftScaleRotate(shift_limit=0.05, scale_limit=0.05, rotate_limit=15, p=0.5),
                        A.RGBShift(r_shift_limit=15, g_shift_limit=15, b_shift_limit=15, p=0.5),
                        A.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
                        ToTensorV2(),]),
    "val": A.Compose([
                      A.Resize(256,256),
                      A.CenterCrop(224,224),
                      A.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
                      ToTensorV2()])}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

KeyError:在 DataLoader 工作进程 0 中捕获 KeyError。

KeyError:“您必须将数据作为命名参数传递给增强,例如:aug(image=image)”

python pytorch data-augmentation albumentations image-classification

1
推荐指数
1
解决办法
7771
查看次数