🔖
im2colを使ってCNNを実装してみる
CNNとは
畳み込みニューラルネットワーク(CNN: Convolutional Neural Network)という、画像や動画の処理に用いられるディープラーニングのモデル。
CNNは以下の層で構成される。
- 畳み込み層
- プーリング層
- 全結合層
実装
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