Задача:

В этом блокноте мы будем классифицировать погоду по изображению (солнечно или облачно).

Предварительная обработка -

  • Во-первых, импортируйте все необходимые библиотеки -
  • Загрузите данные и разархивируйте их, чтобы получить доступ к изображениям и этикеткам из вашей записной книжки.

Перечислите все имена папок в вашем наборе данных и проверьте количество классификаций, которые нужно сделать:

Выход:

{'cloudy': 0, 'sunny': 1}

Чтобы лучше понять наш набор данных, отобразите несколько изображений:

Выход:

Разделите набор обучающих данных на обучающий и проверочный наборы.

  • Выполните увеличение данных с помощью ImageDataGenerator, чтобы мы могли получать более релевантные данные из существующих изображений, внеся незначительные изменения в набор данных.
  • Разделите набор данных для обучения на набор для обучения и набор для проверки.

Выход:

Found 8002 images belonging to 2 classes.
Found 2000 images belonging to 2 classes.

Обучение модели:

Выход:

Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_6 (Conv2D)            (None, 100, 100, 32)      896       
_________________________________________________________________
max_pooling2d_6 (MaxPooling2 (None, 50, 50, 32)        0         
_________________________________________________________________
conv2d_7 (Conv2D)            (None, 50, 50, 64)        18496     
_________________________________________________________________
max_pooling2d_7 (MaxPooling2 (None, 25, 25, 64)        0         
_________________________________________________________________
conv2d_8 (Conv2D)            (None, 25, 25, 64)        36928     
_________________________________________________________________
max_pooling2d_8 (MaxPooling2 (None, 12, 12, 64)        0         
_________________________________________________________________
conv2d_9 (Conv2D)            (None, 12, 12, 64)        36928     
_________________________________________________________________
max_pooling2d_9 (MaxPooling2 (None, 6, 6, 64)          0         
_________________________________________________________________
conv2d_10 (Conv2D)           (None, 6, 6, 64)          36928     
_________________________________________________________________
max_pooling2d_10 (MaxPooling (None, 3, 3, 64)          0         
_________________________________________________________________
dropout_2 (Dropout)          (None, 3, 3, 64)          0         
_________________________________________________________________
conv2d_11 (Conv2D)           (None, 3, 3, 64)          36928     
_________________________________________________________________
max_pooling2d_11 (MaxPooling (None, 1, 1, 64)          0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 64)                0         
_________________________________________________________________
dense_2 (Dense)              (None, 256)               16640     
_________________________________________________________________
activation_2 (Activation)    (None, 256)               0         
_________________________________________________________________
dropout_3 (Dropout)          (None, 256)               0         
_________________________________________________________________
dense_3 (Dense)              (None, 2)                 514       
_________________________________________________________________
activation_3 (Activation)    (None, 2)                 0         
=================================================================
Total params: 184,258
Trainable params: 184,258
Non-trainable params: 0
_________________________________________________________________

Скомпилируйте и подгоните модель:

Выход:

Epoch 1/5
251/251 [==============================] - 223s 888ms/step - loss: 0.5630 - accuracy: 0.6788 - val_loss: 0.3896 - val_accuracy: 0.8215
Epoch 2/5
251/251 [==============================] - 219s 871ms/step - loss: 0.4006 - accuracy: 0.8173 - val_loss: 0.3339 - val_accuracy: 0.8570
Epoch 3/5
251/251 [==============================] - 218s 869ms/step - loss: 0.3747 - accuracy: 0.8324 - val_loss: 0.3313 - val_accuracy: 0.8480
Epoch 4/5
251/251 [==============================] - 219s 871ms/step - loss: 0.3440 - accuracy: 0.8427 - val_loss: 0.3518 - val_accuracy: 0.8480
Epoch 5/5
251/251 [==============================] - 219s 871ms/step - loss: 0.3219 - accuracy: 0.8603 - val_loss: 0.2542 - val_accuracy: 0.8910

Производительность модели:

Выход:

Делаем прогнозы:

Случайным образом выберите изображение из тестового набора и передайте его нашей модели, чтобы делать прогнозы.

Выход:

Prediction is sunny.

DeepCC:

Ссылка на блокнот: