ホーム » Fashion-MNIST » TensorFlow: TensorFlow で Fashion-MNIST

TensorFlow: TensorFlow で Fashion-MNIST

TensorFlow : TensorFlow で Fashion-MNIST

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 08/28/2017

* 本ページは、github 上の Fashion-MNIST の README.md を翻訳した上で、
簡単な MLP モデルの TensorFlow 実装で動作確認したものです :

Fashion-MNIST Github README-ja

  • 本 Fashion-MNIST の README の翻訳ドキュメントを author の Dr. Han Xiao 氏の要望で README-ja として公式 repository に push する運びとなりました。
  • Fashion-MNIST は既存の MNIST 用のモデルがそのまま流用できる便利なデータセットですので、MNIST に食傷気味の皆様、是非ご活用ください! ファイル名もフォーマットも MNIST と完全互換でありながら、学習難易度が少しだけ高めの優れものです。

 

(1) Fashion-MNIST README 翻訳

60,000 サンプルの訓練セットと 10,000 サンプルのテストセットから成る、Zalando の記事の画像のデータセットです。各サンプルは 28×28 グレースケール画像で、10 クラスからのラベルと関連付けられています。Fashion-MNIST は、機械学習アルゴリズムのベンチマークのためのオリジナルの MNIST データセット直接的な差し込み式の (= drop-in) 置き換え としてサーブすることを意図しています。

ここにどのようにデータが見えるかのサンプルがあります (各クラスは3行取ります) :

 

何故でしょう?

オリジナルの MNIST データセットは沢山の手書き数字を含みます。AI/ML/データサイエンス・コミュニティの人々はこのデータセットを好みそして彼らのアルゴリズムを検証するためのベンチマークとしてそれを使用します。実際に、MNIST はしばしば試してみる最初のデータセットです。「もしそれが MNIST で動作しなければ、まったく動作しないだろう」と彼らは言いました。「そうですね~、もし MNIST で動作するとしても、他の上では依然として失敗するかもしれませんが。」

Fashion-MNIST は、機械学習アルゴリズムのベンチマークのためのオリジナルの MNIST データセットの直接的な差し込み式の (= drop-in) 置き換えとしてサーブすることを意図しています、というのはそれは同じ画像サイズでそして訓練及びテスト分割の構造を共有しているからです。

真面目な機械学習研究者へ

真面目な話し、MNIST を置き換えることについて話しをしています。幾つかの良い理由がここにあります :

データを取得する

データセットをダウンロードするためには直接リンクを使用することができます。データはオリジナルの MNIST データと同じフォーマットでストアされています。

名前 内容 サンプル サイズ リンク
train-images-idx3-ubyte.gz 訓練セット画像 60,000 26 MBytes ダウンロード
train-labels-idx1-ubyte.gz 訓練セット・ラベル 60,000 29 KBytes ダウンロード
t10k-images-idx3-ubyte.gz テストセット画像 10,000 4.2 MBytes ダウンロード
t10k-labels-idx1-ubyte.gz テストセット・ラベル 10,000 5.0 KBytes ダウンロード

あるいはこのレポジトリを clone することもできます、データセットは data/fashion の下です。この repo はベンチーマークと可視化のための幾つかのスクリプトを含みます。

git clone git@github.com:zalandoresearch/fashion-mnist.git

ラベル

各訓練とテスト・サンプルは以下のラベル群の一つに割り当てられています :

ラベル 記述
0 T-shirt/top
1 Trouser
2 Pullover
3 Dress
4 Coat
5 Sandal
6 Shirt
7 Sneaker
8 Bag
9 Ankle boot

使い方

Python (numpy が必要) でデータをロードする

  • この repo の utils/mnist_reader を使用する :
import mnist_reader
X_train, y_train = mnist_reader.load_mnist('data/fashion', kind='train')
X_test, y_test = mnist_reader.load_mnist('data/fashion', kind='t10k')

TensorFlow でデータをロードする

from tensorflow.examples.tutorials.mnist import input_data
data = input_data.read_data_sets('data/fashion')

data.train.next_batch(100)

他の言語でデータをロードする

機械学習コミュニティでもっとも人気のあるデータセットの一つですので、人々は多くの言語で MNIST loader を実装してきています。それらは Fashion-MNIST データセットをロードするためにも使用できるでしょう (最初に decompress する必要があるかもしれません)。それらは私たちによってテストはされていないことには注意してください。

ベンチマーク

scikit-learn ベースの自動ベンチマーキング・システムを構築しました、これは異なるパラメータの 125 の (深層学習ではない) 分類器をカバーします。結果はここで見つかります。

 
結果は benchmark/runner.py を実行することで再現できます。推奨方法はこの docker コンテナをビルドして deploy することです (訳注 : リンク欠落)。

貴方のベンチマークを submit することを歓迎します。新しい issue を作成してください、貴方の結果はここでリストされます。詳細は Contributing セクションを確認してください。ベンチマークを submit する前に、このリストにリストされていなことを必ず確認してください。

分類器 前処理 テスト精度 Submitter コード
2 Conv Layers with max pooling (Keras) None 0.876 Kashif Rasul zalando_mnist_cnn
2 Conv Layers with max pooling (Tensorflow) >300 epochs None 0.916 Tensorflow’s doc convnet
Simple 2 layer convnet <100K parameter None 0.925 @hardmaru pytorch_tiny_custom_mnist_adam
GRU+SVM None 0.888 @AFAgarap gru_svm_zalando
GRU+SVM with dropout None 0.855 @AFAgarap gru_svm_zalando_dropout
WRN40-4 8.9M params standard preprocessing (mean/std subtraction/division) and augmentation (random crops/horizontal flips) 0.967 @ajbrock WideResNet & Freezout
DenseNet-BC 768K params standard preprocessing (mean/std subtraction/division) and augmentation (random crops/horizontal flips) 0.954 @ajbrock DenseNets & Freezout
MobileNet augmentation (horizontal flips) 0.950 @苏剑林 Chinese blog post

他の探求

Generative adversarial networks (GANs)

可視化

t-SNE on Fashion-MNIST (左) とオリジナルの MNIST (右)

PCA on Fashion-MNIST (左) とオリジナルの MNIST (右)

Contributing, Contact, Citing Fashion-MNIST & License

(訳注 : 原文 をご確認ください。)

(訳注 : README の翻訳は以上です。)

 

(2) TensorFlow で Fashion-MNIST

さて、せっかくですので、TensorFlow 実装で簡単に Fashion-MNIST を試しておきます。取り敢えずのお試しということで、モデルには 512, 512 ノードを持つ2層の簡単な MLP を使いました。但し、Dropout は付けています。

データセットのロードは上記の方法でロードしても良いですし、MNIST データセットと同じ構造をしていますので自前の MNIST loader コードであれば単純にデータセットを置き換えても良いです。

要は、MNIST 用のモデルの実装を少しだけ修正すれば流用できます。

訓練結果

比較のために、最初にこのモデルをオリジナルの MNIST で動作確認しておきます。
わずか 20 epochs ほどで訓練損失は 0.02 を割り、テスト精度は 98 % を超えます :

次に、Fashion-MNIST データセットで試してみますと、20 epochs だと損失は 0.3 前後で精度は 88 % を超える程度です :

念のためにもう少し訓練を続けると、50 epochs で損失 0.2 前後、精度は 90 % を超え始めます。そして 100 epochs で損失 0.15 前後、精度 90.5 % 程度でした。下の画像は 100 epochs までの訓練損失の TensorBoard グラフと、テスト精度のグラフです :

上述のベンチマークと比較してみると、テスト精度 90% は MLP としては悪い数字ではないようです。

 
以上

AI導入支援 #2 ウェビナー

スモールスタートを可能としたAI導入支援   Vol.2
[無料 WEB セミナー] [詳細]
「画像認識 AI PoC スターターパック」の紹介
既に AI 技術を実ビジネスで活用し、成果を上げている日本企業も多く存在しており、競争優位なビジネスを展開しております。
しかしながら AI を導入したくとも PoC (概念実証) だけでも高額な費用がかかり取組めていない企業も少なくないようです。A I導入時には欠かせない PoC を手軽にしかも短期間で認知度を確認可能とするサービの紹介と共に、AI 技術の特性と具体的な導入プロセスに加え運用時のポイントについても解説いたします。
日時:2021年10月13日(水)
会場:WEBセミナー
共催:クラスキャット、日本FLOW(株)
後援:働き方改革推進コンソーシアム
参加費: 無料 (事前登録制)
人工知能開発支援
◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com