🔖

im2colを使ってCNNを実装してみる

2024/11/30に公開

CNNとは

畳み込みニューラルネットワーク(CNN: Convolutional Neural Network)という、画像や動画の処理に用いられるディープラーニングのモデル。
CNNは以下の層で構成される。

  1. 畳み込み層
  2. プーリング層
  3. 全結合層

実装

Kerasを用いてCNNを実装する。
CIFAR-10というデータセットを使って、画像の分類を行う。
CIFAR-10は約6万枚の画像にラベルをつけたデータセットである。

ライブラリのインストール

!pip install tensorflow==2.11.0
!pip install keras==2.11.0

CIFAR-10の読み込み

import numpy as np
import matplotlib.pyplot as plt
import keras
from keras.datasets import cifar10

(x_train, t_train), (x_test, t_test) = cifar10.load_data()
print("Image size:", x_train[0].shape)

cifar10_labels = np.array(["airplane", "automobile", "bird", "cat", "deer",
                           "dog", "frog", "horse", "ship", "truck"])

#ランダムに25枚の画像を表示させる
n_image = 25
rand_idx = np.random.randint(0, len(x_train), n_image)

plt.figure(figsize=(10,10))  # 画像の表示サイズ
for i in range(n_image):
    cifar_img=plt.subplot(5,5,i+1)
    plt.imshow(x_train[rand_idx[i]])
    label = cifar10_labels[t_train[rand_idx[i]]]
    plt.title(label)
    plt.tick_params(labelbottom=False, labelleft=False, bottom=False, left=False)  # ラベルとメモリを非表示に

plt.show()

CNNの設定

from keras.utils.np_utils import to_categorical

batch_size = 32
epochs = 20
n_class = 10  # 10のクラスに分類

# one-hot表現に変換
t_train = to_categorical(t_train, n_class)
t_test = to_categorical(t_test, n_class)
print(t_train[:10])

モデルの構築

Discussion