MNISTの訓練セットと検証セットの平均画像を比較

# 背景

- 訓練セットと検証セットの各ラベルの画像群は、同じような画像で構成されていることを確認したかった
- ただ、70000枚を全て目視は辛いし、「同じような」と言ってもその定義は難しい
- そこで、単純に画像の平均値（平均画像）を見比べることにした

# MNISTの概要

- 公式サイト http://yann.lecun.com/exdb/mnist/
- 手書き数字("0"~"9")のデータベース
- 例

    |<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/e6c1fb2b-fb09-32de-74ba-d8cabf810688.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/2bb96f44-b1dd-ff73-b634-f09e0f7fdb55.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/536484a1-f834-26ea-9d8c-d32c3cb2b84b.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/2cb3270e-de0e-d084-7e62-485a90944f8a.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/49c9d722-6259-028a-a4f4-af1587ceb16e.png" width=140>|
    |:-:|:-:|:-:|:-:|:-:|
    |0|1|2|3|4|
    |<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/f7163f1c-1048-5b71-ca5b-7a9b92e9d161.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/03afaaa6-630f-c4ca-bc53-dcd98c38c81b.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/25cef9f6-ea81-8df9-0fd3-ea29ac1ff85a.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/0cfe38a5-595c-481c-0234-ffabd8e774c7.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/c261327f-b99b-90bc-8600-b52abae180b5.png" width=140>|
    |5|6|7|8|9|

- 手書き数字認識のHello worldとして利用されている
    - https://www.tensorflow.org/get_started/mnist/beginners
    - https://deeplearning4j.org/ja/mnist-for-beginners
    - https://www.kaggle.com/c/digit-recognizer
- 画像の大きさは 28x28
- 0(白)~255(黒)のグレースケール画像
- 文字は中央寄りに配置されている
- 2つのデータセットで構成される
    - 訓練セット(60000枚): パターンを見つけるために使う
    - 検証セット(10000枚): 見つけたパターンの検証に使う
- 各セットは画像と、その画像が0~9のどの数字なのかを示すラベルの組になっている
- "0"~"9"のラベル数は、10等分されているのではなく、若干ばらつきがある

    |ラベル|0|1|2|3|4|5|6|7|8|9|
    |:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
    |訓練セット|5923|6742|5958|6131|5842|5421|5918|6265|5851|5949|
    |検証セット|980|1135|1032|1010|982|892|958|1028|974|1009|

- 様々な"0"

    |<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/efda04f7-fc65-2f6c-4571-b307cd9e0187.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/0b4dbcb5-ccab-063c-2a7e-6a291bff586f.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/274a8e72-ba02-9e4b-eff4-e580c3269d28.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/deed2185-18b0-9a96-5e0d-9ca3fdc6137c.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/38b1afc8-451f-3652-632c-052ed1ba01b2.png" width=140>|
    |:-:|:-:|:-:|:-:|:-:|
    |<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/c6306479-cded-44b0-a4cf-66c2a1a0aa81.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/ee37aed3-d58e-335b-0250-b5b222f28e87.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/b0b38bdd-b272-e954-6d08-771f3b45da6d.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/9b2dd025-9053-73fd-ac4a-994a11ab81ad.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/12ef3d52-fe8d-cc2b-52a5-8b70ce1d8075.png" width=140>|

    - 訓練セットの5923枚の"0"の中から、10枚ピックアップ

# 本題

## 事前情報

- 「平均画像」という用語が正しいのかあやしいが、本記事においては、「画像の同じ座標のピクセル値を合算して、ラベル数で割って生成した画像」とする。小数点は四捨五入。
    - 例えば"0"の場合は5923で割る
- オリジナルの画像は28x28で小さくてピクセルが見えづらいので5倍に拡大している
    - `convert input.png -filter Point -resize 140x140 +antialias output.png`
    - 参考: http://www.alecjacobson.com/weblog/?p=411

##　平均画像の比較

各セットでラベル毎に生成した平均画像は以下の通り。

|ラベル|訓練セット|検証セット|
|---|---|---|
|0|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/a3d93d17-91c7-a4bf-62c8-6dd538a17b80.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/7e001206-5ed4-ffce-0f7e-9775f36c7624.png" width=140>|
|1|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/a4118237-765c-8851-376e-f2ededa6a5ac.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/a67943a3-e3db-6327-dc0e-65640c2d5439.png" width=140>|
|2|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/1d2913cf-d276-1f4d-fc96-dd0cb19bb96b.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/b67a31ea-5a4b-342d-dd1c-9d2012ec0eae.png" width=140>|
|3|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/3e7905d4-c232-337b-af85-cda5ac6116e6.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/4edd563b-4fe6-8c07-269b-c45145e2ddd8.png" width=140>|
|4|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/0957526a-b105-2af3-6a1e-6c49b99a1832.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/67321337-9708-e4a3-704c-aa47f0790b14.png" width=140>|
|5|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/23c539ce-49ef-4894-2454-95dff24e9ff5.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/ce8a8db5-0e1c-380d-c55c-9f7729e2bbe3.png" width=140>
|6|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/bad268fc-fcdf-6c14-d8e1-707d3202f816.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/6dee25d7-a69c-6681-9356-493efeabd16f.png" width=140>|
|7|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/cd39c7eb-8b0d-f5d8-adca-da4ca90492a7.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/b65aafa5-d1b7-77b2-6706-01726e6411c0.png" width=140>|
|8|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/4bb11205-601d-a916-c0a5-69de5e860c37.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/29fdc2b6-8e6c-cd8a-c38b-525d8912b87a.png" width=140>|
|9|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/a379e130-d691-6333-5383-7ec7dd10416e.png" width=140>|<img src="https://qiita-image-store.s3.amazonaws.com/0/54161/937b797a-07ff-1b8a-0324-4b50797307e6.png" width=140>|

## 所感

- 平均化すると、想像以上にぱっと見は区別がつかないことがわかった
    - 目視だと256階調の識別ができないからかもしれない
        - 0(真っ白)も1(ほぼ白)も白に見える
- 違いがなんとなくわかるのは、"6"の上部と"9"の下部

# 次にやってみたいこと

- 訓練セットの平均画像を使って、検証セットの画像の分類