← На главную Воспоминания

Суббота, 18 Ноября 2023

Продолжил изучать сверточные сети. В этот раз изучил как сделать собственный конволюшнл бейс. Для этого используются сверточные блоки, состоящие из конволюшн слоя, релу и пулинга. Сверточные блоки

Реализация на Керасе

from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential([

    # First Convolutional Block
    layers.Conv2D(filters=32, kernel_size=5, activation="relu", padding='same',
                  # give the input dimensions in the first layer
                  # [height, width, color channels(RGB)]
                  input_shape=[128, 128, 3]),
    layers.MaxPool2D(),

    # Second Convolutional Block
    layers.Conv2D(filters=64, kernel_size=3, activation="relu", padding='same'),
    layers.MaxPool2D(),

    # Third Convolutional Block
    layers.Conv2D(filters=128, kernel_size=3, activation="relu", padding='same'),
    layers.MaxPool2D(),

    # Classifier Head
    layers.Flatten(),
    layers.Dense(units=6, activation="relu"),
    layers.Dense(units=1, activation="sigmoid"),
])
model.summary()

Data Augmentation

Прошел дата аугментацию. Смысл в том, что чтобы улучшть качество распознования, мы можем добавить в датасет новых изображений, растянуть их по ширине, повернуть, сделать цветовую инверсию, заблюрить или убрать фрагментик. Все, что не влияет на класс изображения. Например если зеленую машину сделать красной, или вовернуть на 30 градусов, от этого она не перестанет быть машиной. Но если повернуть девятку на 180 градусов, она станет шестеркой. Поэтому дата аугментаци зависит от данных, что нужно распознать.

Пример на Керасе

from tensorflow import keras
from tensorflow.keras import layers
# these are a new feature in TF 2.2
from tensorflow.keras.layers.experimental import preprocessing


pretrained_base = tf.keras.models.load_model(
    '../input/cv-course-models/cv-course-models/vgg16-pretrained-base',
)
pretrained_base.trainable = False

model = keras.Sequential([
    # Preprocessing
    preprocessing.RandomFlip('horizontal'), # flip left-to-right
    preprocessing.RandomContrast(0.5), # contrast change by up to 50%
    # Base
    pretrained_base,
    # Head
    layers.Flatten(),
    layers.Dense(6, activation='relu'),
    layers.Dense(1, activation='sigmoid'),
])

Прошел курс по компьютерному зрению на кагле Certificate

Начал курс по пайтону