Найти - Пользователи
Полная версия: Классификация изображений
Начало » Python проекты » Классификация изображений
1
Demon-rub
Имеется датасет (фото объектов) из 41 класса и 31 подкласса (не каждый класс содержит подклассы). Подскажите как сделать, что бы модель распознавала изображения не только по классам, но и подклассам?
   
dataset_dir = pathlib.Path(.....)
batch_size = 32
img_width = 200
img_heigth = 200
dataset_train = tf.keras.utils.image_dataset_from_directory(
    dataset_dir,
    validation_split = 0.2,
    subset= 'training',
    seed = 123,
    image_size = (img_heigth, img_width),
    batch_size = batch_size)
dataset_validation = tf.keras.utils.image_dataset_from_directory(
    dataset_dir,
    validation_split = 0.2,
    subset= 'validation',
    seed = 123,
    image_size = (img_heigth, img_width),
    batch_size = batch_size)
class_names = dataset_train.class_names
print(f'Class names: {class_names}')
model = Sequential([Rescaling(1./255, input_shape=(img_heigth, img_width, 3)),
                    #аугментация
                    RandomFlip("horizontal"),
                    RandomRotation(0.2),
                    RandomZoom(0.2),
                    RandomContrast(0.2),
                    #слои сверточные
                    tf.keras.layers.Conv2D(64,3, padding='same', activation='relu'),
                    tf.keras.layers.Conv2D(64,3, padding='same', activation='relu'),
                    tf.keras.layers.MaxPooling2D(),
                    tf.keras.layers.Conv2D(128,3, padding='same', activation='relu'),
                    tf.keras.layers.Conv2D(128,3, padding='same', activation='relu'),
                    tf.keras.layers.Conv2D(128,3, padding='same', activation='relu'),
                    tf.keras.layers.MaxPooling2D(),
                    tf.keras.layers.Conv2D(128,3, padding='same', activation='relu'),
                    tf.keras.layers.Conv2D(128,3, padding='same', activation='relu'),
                    tf.keras.layers.Conv2D(128,3, padding='same', activation='relu'),
                    tf.keras.layers.MaxPooling2D(),
                    tf.keras.layers.Dropout(0.2),
                    tf.keras.layers.BatchNormalization(),
                    tf.keras.layers.Conv2D(256,3, padding='same', activation='relu'),
                    tf.keras.layers.Conv2D(256,3, padding='same', activation='relu'),
                    tf.keras.layers.MaxPooling2D(),
                    tf.keras.layers.Dropout(0.2),
                    tf.keras.layers.BatchNormalization(),
                    # полносвязные слои
                    tf.keras.layers.Flatten(),
                    tf.keras.layers.Dense(128, activation='relu'),
                    tf.keras.layers.Dropout(0.2),
                    tf.keras.layers.BatchNormalization(),
                    tf.keras.layers.Dense(128, activation='relu'),
                    tf.keras.layers.Dropout(0.2),
                    tf.keras.layers.BatchNormalization(),
                    #выходной слой равный числу классов классификации изображений
                    tf.keras.layers.Dense(num_classes)])
model.compile(optimizer='Adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])
model.summary()
xam1816
Demon-rub
Имеется датасет (фото объектов) из 41 класса и 31 подкласса (не каждый класс содержит подклассы)
скинь датасет, если большой,то можно урезанный. И что нужно определить
Demon-rub
Извиняюсь) а как тут скинуть сильно подрезанный дата сет? Подклассы имеются только в классе YADOVITIE. Нужно что бы нейросеть определяла не только класс гриба на фото, но и подкласс (если они имеются в данном классе). Заранее благодарен!)
xam1816
Demon-rub
а как тут скинуть сильно подрезанный дата сет?
запакуй в архив и куда-нибудь типа яндекс диск закинь, сюда ссылку
xam1816
Demon-rub
Подскажите как сделать, что бы модель распознавала изображения не только по классам, но и подклассам?

Есть класс ядовитые, и в них в названии есть метка YAD, если их переместить в одну папку, то модель выдаст номер класса, а там уже из названия класса по метке будет понятно, ядовитый или нет
xam1816
Demon-rub
model = Sequential([Rescaling(1./255, input_shapeimg_heigth, img_width, 3)),
#аугментация
RandomFlip(“horizontal”),
RandomRotation(0.2),
RandomZoom(0.2),
RandomContrast(0.2),
#слои сверточные
tf.keras.layers.Conv2D(64,3, padding='same', activation='relu'),
tf.keras.layers.Conv2D(64,3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(128,3, padding='same', activation='relu'),
tf.keras.layers.Conv2D(128,3, padding='same', activation='relu'),
tf.keras.layers.Conv2D(128,3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(128,3, padding='same', activation='relu'),
tf.keras.layers.Conv2D(128,3, padding='same', activation='relu'),
tf.keras.layers.Conv2D(128,3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Conv2D(256,3, padding='same', activation='relu'),
tf.keras.layers.Conv2D(256,3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.BatchNormalization(),
# полносвязные слои
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.BatchNormalization(),
#выходной слой равный числу классов классификации изображений
tf.keras.layers.Dense(num_classes)])

какая точность у этой модели на новых данных?, т.е если ей дать изображение гриба которого нет в dataset.
Demon-rub
Я так и сделал, в последней версии дата сета все виды и подвиды в каталоге “Классы”. Последний дата сет тоже буду дорабатывать и по классам и по набору данных. Точность - разная (на фото пример распознавания гриба которого нету в дата сете, но честно это лучший результат. Прекратил дальнейшее обучение -работаю над дата сетом))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB