目次

1. プログラム概要

1.1 プログラム概要

深層学習(deep learning)の一つの技術であるCNN(畳み込みニューラルネットワーク) を用いて画像を分類するプログラムを作成します。
プログラミングにはPyTorch[1][2][3]を用います。
ネットワークモデルとして、自作CNN、自作ResNet、公開ResNetの3つを扱います。

1.2 データセット

計算に使用したデータセットは表1-1の通りです。
備考に*がついたものはtorchvision.datasetsに予め組み込まれており簡単に読み込むことができます。[4]

表1-1 データセットの仕様
No.データセット名データセットの内容訓練データ数テストデータ数画像ピクセル(色)分類数備考
1MNIST 手書き数字(0-9) 600001000028x28(モノクロ) 10*
2QMNIST 手書き数字(0-9) 600006000028x28(モノクロ) 10*
3EMNIST (Balanced)英数字(0-9,A-Z,a-z) 1128001880028x28(モノクロ) 47*
4FashionMNIST ファッション商品 600001000028x28(モノクロ) 10*
5Kuzushiji-MNIST 古典ひらがな(10字) 600001000028x28(モノクロ) 10*
6CIFAR-10 各種画像(10分類) 500001000032x32(カラー) 10*
7CIFAR-100 各種画像(100分類) 500001000032x32(カラー) 100*
8Kuzushiji-49 古典ひらがな(49字) 2323653854728x28(モノクロ) 49
9Kuzushiji-Kanji 古典漢字(3832字) 1201572026764x64(モノクロ)3832
10TKanji 古典漢字+かな(5896字)27844346818不定(カラー) 5896
11Flowers102 花(102種類) 6514 1675不定(カラー) 102

torchvision.datasetsには他にもたくさんのデータセットが用意されています。
本サイトで説明しなかったデータセットについても、 ソースコードを少し変更することによって対応することができます。

1.3 正解率

画像分類(Image Classification)では、多数の訓練データで学習した後、 それとは独立な多数のテストデータでテストして、 その正解率(=正解数/テストデータ数 : Accuracy) で汎化性能(Generalization Performance)を評価します。
表1-2に本サイトの各モデルの正解率と、2024年現在の最高の正解率を示します。

表1-2 各データセットと各モデルの正解率
No.データセット名自作CNN自作ResNet公開ResNet
重みなし
公開ResNet
重みあり
最高正解率 (link)
1MNIST 99.68%99.66%99.66%99.66%99.87% paperswithcode
2QMNIST 99.52%99.54%99.46%99.57%99.67% paperswithcode
3EMNIST (Balanced)90.57%90.69%89.60%89.51%91.06% paperswithcode
4FashionMNIST 94.50%93.57%93.55%94.75%96.91% paperswithcode
5Kuzushiji-MNIST 98.52%98.60%98.11%98.06%99.34% github
6CIFAR-10 91.35%90.13%87.99%97.65%99.612% paperswithcode
7CIFAR-100 70.10%66.76%61.07%86.09%96.808% paperswithcode
8Kuzushiji-49 97.50%97.37%96.01%96.24%98.29% github
9Kuzushiji-Kanji 93.86%93.05%90.54%90.45%(95.0%) (注1) Kaggle
10TKanji 78.44% 77.17%
11Flowers102 88.96%89.61%85.85%98.51%99.76% paperswithcode

(注1) 問題は同じではありません。

1.4 計算環境

計算環境は以下の通りです。

1.5 PyTorchのインストール

AnacondaとCUDAをインストールした状態でPyTorchをインストールするには、 PyTorchのサイト[1]で図1-1のように環境を指定すると下にコマンドが表示されます。 これをコピーしてAnaconda Promptに貼り付けて実行します。

図1-1 PyTorchのインストール

1.6 用語の説明

画像分類で使用する用語の意味は以下の通りです。