深層学習(deep learning)の一つの技術であるCNN(畳み込みニューラルネットワーク)
を用いて画像を分類するプログラムを作成します。
プログラミングにはPyTorch[1][2][3]を用います。
ネットワークモデルとして、自作CNN、自作ResNet、公開ResNetの3つを扱います。
計算に使用したデータセットは表1-1の通りです。
備考に*がついたものはtorchvision.datasetsに予め組み込まれており簡単に読み込むことができます。[4]
No. | データセット名 | データセットの内容 | 訓練データ数 | テストデータ数 | 画像ピクセル(色) | 分類数 | 備考 |
---|---|---|---|---|---|---|---|
1 | MNIST | 手書き数字(0-9) | 60000 | 10000 | 28x28(モノクロ) | 10 | * |
2 | QMNIST | 手書き数字(0-9) | 60000 | 60000 | 28x28(モノクロ) | 10 | * |
3 | EMNIST (Balanced) | 英数字(0-9,A-Z,a-z) | 112800 | 18800 | 28x28(モノクロ) | 47 | * |
4 | FashionMNIST | ファッション商品 | 60000 | 10000 | 28x28(モノクロ) | 10 | * |
5 | Kuzushiji-MNIST | 古典ひらがな(10字) | 60000 | 10000 | 28x28(モノクロ) | 10 | * |
6 | CIFAR-10 | 各種画像(10分類) | 50000 | 10000 | 32x32(カラー) | 10 | * |
7 | CIFAR-100 | 各種画像(100分類) | 50000 | 10000 | 32x32(カラー) | 100 | * |
8 | Kuzushiji-49 | 古典ひらがな(49字) | 232365 | 38547 | 28x28(モノクロ) | 49 | |
9 | Kuzushiji-Kanji | 古典漢字(3832字) | 120157 | 20267 | 64x64(モノクロ) | 3832 | |
10 | TKanji | 古典漢字+かな(5896字) | 278443 | 46818 | 不定(カラー) | 5896 | |
11 | Flowers102 | 花(102種類) | 6514 | 1675 | 不定(カラー) | 102 |
torchvision.datasetsには他にもたくさんのデータセットが用意されています。
本サイトで説明しなかったデータセットについても、
ソースコードを少し変更することによって対応することができます。
画像分類(Image Classification)では、多数の訓練データで学習した後、
それとは独立な多数のテストデータでテストして、
その正解率(=正解数/テストデータ数 : Accuracy)
で汎化性能(Generalization Performance)を評価します。
表1-2に本サイトの各モデルの正解率と、2024年現在の最高の正解率を示します。
No. | データセット名 | 自作CNN | 自作ResNet | 公開ResNet 重みなし | 公開ResNet 重みあり | 最高正解率 (link) |
---|---|---|---|---|---|---|
1 | MNIST | 99.68% | 99.66% | 99.66% | 99.66% | 99.87% paperswithcode |
2 | QMNIST | 99.52% | 99.54% | 99.46% | 99.57% | 99.67% paperswithcode |
3 | EMNIST (Balanced) | 90.57% | 90.69% | 89.60% | 89.51% | 91.06% paperswithcode |
4 | FashionMNIST | 94.50% | 93.57% | 93.55% | 94.75% | 96.91% paperswithcode |
5 | Kuzushiji-MNIST | 98.52% | 98.60% | 98.11% | 98.06% | 99.34% github |
6 | CIFAR-10 | 91.35% | 90.13% | 87.99% | 97.65% | 99.612% paperswithcode |
7 | CIFAR-100 | 70.10% | 66.76% | 61.07% | 86.09% | 96.808% paperswithcode |
8 | Kuzushiji-49 | 97.50% | 97.37% | 96.01% | 96.24% | 98.29% github |
9 | Kuzushiji-Kanji | 93.86% | 93.05% | 90.54% | 90.45% | (95.0%) (注1) Kaggle |
10 | TKanji | 78.44% | 77.17% | |||
11 | Flowers102 | 88.96% | 89.61% | 85.85% | 98.51% | 99.76% paperswithcode |
(注1) 問題は同じではありません。
計算環境は以下の通りです。
AnacondaとCUDAをインストールした状態でPyTorchをインストールするには、
PyTorchのサイト[1]で図1-1のように環境を指定すると下にコマンドが表示されます。
これをコピーしてAnaconda Promptに貼り付けて実行します。
画像分類で使用する用語の意味は以下の通りです。