Суббота, 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'),
])
Прошел курс по компьютерному зрению на кагле
Начал курс по пайтону