{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 時尚服飾圖像辨識" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "圖像分類被廣泛地應用到很多的領域中,從醫學掃描中危及生命的疾病識別到電視卡通角色的識別。\n", "\n", "MNIST數據集(可以說)是最常用的圖像分類入門數據集。它包含手寫數字的28x28灰度圖像,每個灰度圖像都有一個關聯的標籤,用於指示圖像上手寫的數字(0到9之間的整數)。\n", "\n", "MNIST在過去幾年中越來越受歡迎, 但也引起了一些問題。\n", "\n", "使用MNIST來進行圖像辨識的範例有什麼問題呢?\n", "1. **MNIST太簡單了** - 卷積網絡(Convolution network)可以很容易地在MNIST上達到99.7%的辨識力,即使經典的機械學習(Machine learning)算法也能達到97%。\n", "\n", "2. **MNIST被過度使用** - 幾乎每個有深度學習經驗的人都至少遇到過MNIST一次。\n", "\n", "3. **NIST無法有效代表現代的電視視覺相關的任務** - Keras的主要貢獻者(François Chollet)也特別提及這一點。\n", "\n", ">**François Chollet**\n", ">\n", ">Many good ideas will not work well on MNIST (e.g. batch norm). Inversely many bad ideas may work on MNIST and no transfer to real CV.\n", ">\n", "> 2:51 AM - Apr 14, 2017\n", "\n", "\n", "![Fashion-Mnist](https://cdn-images-1.medium.com/max/600/1*GNLB2jtcfb_xTqgQd9ntJA.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 資料集說明\n", "\n", "時尚MNIST訓練集是由[Zalando Reserach](https://jobs.zalando.com/tech/)所發佈出來的資料集。它包含60,000個範例圖像,測試集包含10,000個範例圖像。\n", "\n", "每個範例圖像都是28x28的灰度圖像(就像原始MNIST中的圖像一樣),與10類(T卹,褲子,套頭衫,連衣裙,大衣,涼鞋,襯衫,運動鞋,包包和踝靴)的標籤相關聯。時尚MNIST也與MNIST具有相同的訓練與測試數據分離結構,以便於學習使用。\n", "\n", "相關的詳細資訊說明及資料集下載可以透過Zalando在Github: [https://github.com/zalandoresearch/fashion-mnist](https://github.com/zalandoresearch/fashion-mnist) 來了解更多。\n", "\n", "在這篇文章裡頭, 我們會從[Kaggle](https://www.kaggle.com/zalando-research/fashionmnist)上取得這個數據集。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 資料準備\n", "\n", "1. 從[Kaggle](https://www.kaggle.com/zalando-research/fashionmnist/data/)點擊`Download All`下載圖像資料檔\"fashionmnist.zip\"。\n", "2. 在這個Jupyter Notebook所在的目錄下產生一個新的子目錄\"data\"。\n", "3. 解壓縮圖像資料檔到\"data\"的目錄裡頭。\n", "4. 在\"data/\"的資料夾會看到兩個檔案\n", " * `fashion-mnist_test.csv`\n", " * `fashion-mnist_train.csv`\n", " \n", "最後你的目錄結構看起來像這樣:\n", "\n", " 2.3-fashion-mnist-recognition.ipynb\n", " data/\n", " ├── fashion-mnist_test.csv\n", " └── fashion-mnist_train.csv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 資料預處理 (Data Preprocessing)\n", "預處理圖片的第一步是調整它們的大小。我們需要有相同大小的所有照片進行訓練。\n", "我會將數據資料轉換型別為`float32`來節省一些記憶的用量並對它們進行歸一化(除以255)。\n", "\n", "然後使用one-hot編碼來將10類別的標籤(label)轉換為向量(vector):" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] } ], "source": [ "from keras.utils import to_categorical\n", "import numpy as np\n", "import pandas as pd\n", "from sklearn.model_selection import train_test_split\n", "\n", "# 載入資料\n", "data_train = pd.read_csv('data/fashion-mnist_train.csv')\n", "data_test = pd.read_csv('data/fashion-mnist_test.csv')\n", "\n", "num_classes = 10 # 標籤總共有10類\n", "img_rows, img_cols, img_channels = 28, 28, 1 # 圖像是 28像素 x 28像素 (灰階: 1)\n", "input_shape = (img_rows, img_cols, img_channels) # (圖像的height, 圖像的width, 圖像的顏色通道數channel)\n", "\n", "X = np.array(data_train.iloc[:, 1:]) # Dataframe中 idx(1 ~ 784)的欄都是像素值\n", "\n", "# 進行標籤的one-hot編碼\n", "y = to_categorical(np.array(data_train.iloc[:, 0])) # Dataframe 中 idx(0)的欄是標籤\n", "\n", "# 把訓練資料進行拆分成訓練(80%)與驗證(20%)資料集\n", "X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=13)\n", "\n", "# 測試資料的處理\n", "X_test = np.array(data_test.iloc[:, 1:])\n", "y_test = to_categorical(np.array(data_test.iloc[:, 0]))\n", "\n", "# 對向量進行shape的轉換以符合訓練的input要求\n", "X_train = X_train.reshape(X_train.shape[0], img_rows, img_cols, 1)\n", "X_test = X_test.reshape(X_test.shape[0], img_rows, img_cols, 1)\n", "X_val = X_val.reshape(X_val.shape[0], img_rows, img_cols, 1)\n", "\n", "# 對每個像素進行型別轉換與歸一化\n", "X_train = X_train.astype('float32')/255\n", "X_test = X_test.astype('float32')/255\n", "X_val = X_val.astype('float32')/255" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 網絡模型 (Model)構建\n", "\n", "現在我們來定義我們的模型架構。我們將使用具有6個卷積層的前饋(feed-forward)網絡,然後是完全連接的隱藏層。\n", "我們也將在兩者之間使用Dropout層來防止網絡\"過擬合(overfitting)\"。" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import keras\n", "from keras.models import Sequential\n", "from keras.layers import Dense, Dropout, Flatten\n", "from keras.layers import Conv2D, MaxPooling2D\n", "\n", "def create_model_six_conv(input_shape):\n", " model = Sequential()\n", " model.add(Conv2D(32, (3, 3), padding='same', activation='relu', kernel_initializer='he_normal', input_shape=input_shape))\n", " model.add(Conv2D(32, (3, 3), activation='relu'))\n", " model.add(MaxPooling2D(pool_size=(2, 2)))\n", " model.add(Dropout(0.2))\n", " \n", " model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))\n", " model.add(Conv2D(64, (3, 3), activation='relu'))\n", " model.add(MaxPooling2D(pool_size=(2, 2)))\n", " model.add(Dropout(0.2))\n", " \n", " model.add(Conv2D(128, (3, 3), padding='same', activation='relu'))\n", " model.add(Conv2D(128, (3, 3), activation='relu'))\n", " model.add(MaxPooling2D(pool_size=(2, 2)))\n", " model.add(Dropout(0.2))\n", " \n", " model.add(Flatten())\n", " model.add(Dense(128, activation='relu'))\n", " model.add(Dropout(0.5))\n", " \n", " model.add(Dense(num_classes, activation='softmax'))\n", " \n", " return model;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "在訓練模型之前,我們需要將模型配置為學習算法並進行編譯。我們需要指定: loss: 損失函數,我們要優化。我們不能使用MSE,因為它是不連續的數值。因此,我們使用:categorical_crossentropy optimizer: 我們使用標準隨機梯度下降(Stochastic gradient descent)與涅斯捷羅夫動量(Nesterov momentum) metric: 由於我們正在處理一個分類問題,我們用度量是accuracy。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "conv2d_1 (Conv2D) (None, 28, 28, 32) 320 \n", "_________________________________________________________________\n", "conv2d_2 (Conv2D) (None, 26, 26, 32) 9248 \n", "_________________________________________________________________\n", "max_pooling2d_1 (MaxPooling2 (None, 13, 13, 32) 0 \n", "_________________________________________________________________\n", "dropout_1 (Dropout) (None, 13, 13, 32) 0 \n", "_________________________________________________________________\n", "conv2d_3 (Conv2D) (None, 13, 13, 64) 18496 \n", "_________________________________________________________________\n", "conv2d_4 (Conv2D) (None, 11, 11, 64) 36928 \n", "_________________________________________________________________\n", "max_pooling2d_2 (MaxPooling2 (None, 5, 5, 64) 0 \n", "_________________________________________________________________\n", "dropout_2 (Dropout) (None, 5, 5, 64) 0 \n", "_________________________________________________________________\n", "conv2d_5 (Conv2D) (None, 5, 5, 128) 73856 \n", "_________________________________________________________________\n", "conv2d_6 (Conv2D) (None, 3, 3, 128) 147584 \n", "_________________________________________________________________\n", "max_pooling2d_3 (MaxPooling2 (None, 1, 1, 128) 0 \n", "_________________________________________________________________\n", "dropout_3 (Dropout) (None, 1, 1, 128) 0 \n", "_________________________________________________________________\n", "flatten_1 (Flatten) (None, 128) 0 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 128) 16512 \n", "_________________________________________________________________\n", "dropout_4 (Dropout) (None, 128) 0 \n", "_________________________________________________________________\n", "dense_2 (Dense) (None, 10) 1290 \n", "=================================================================\n", "Total params: 304,234\n", "Trainable params: 304,234\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "from keras.optimizers import Adam\n", "\n", "batch_size = 256\n", "epochs = 50\n", "\n", "#圖像的shape是 (28,28,1)\n", "model = create_model_six_conv((img_rows, img_cols, img_channels)) # 初始化一個模型\n", "\n", "# 秀出模型架構\n", "model.summary() \n", "\n", "model.compile(loss=keras.losses.categorical_crossentropy,\n", " optimizer=keras.optimizers.Adam(),\n", " metrics=['accuracy'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 訓練 (Training)\n", "\n", "現在,我們的模型已經準備好了。在訓練期間,我們的模型將進行迭代批量訓練,每個次的訓練資料的大小為batch_size。對於每批次,模型將會計算出梯度(gradient),並自動更新網絡的權重。對所有訓練集的一次迭代被稱為一次的循環(epoch)。訓練通常會一直進行到損失收斂於一個常數。" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 48000 samples, validate on 12000 samples\n", "Epoch 1/50\n", "48000/48000 [==============================] - 5s 102us/step - loss: 0.8780 - acc: 0.6749 - val_loss: 0.4904 - val_acc: 0.8204\n", "Epoch 2/50\n", "48000/48000 [==============================] - 3s 67us/step - loss: 0.5011 - acc: 0.8215 - val_loss: 0.3820 - val_acc: 0.8568\n", "Epoch 3/50\n", "48000/48000 [==============================] - 3s 67us/step - loss: 0.4042 - acc: 0.8578 - val_loss: 0.3313 - val_acc: 0.8778\n", "Epoch 4/50\n", "48000/48000 [==============================] - 3s 67us/step - loss: 0.3519 - acc: 0.8760 - val_loss: 0.2941 - val_acc: 0.8930\n", "Epoch 5/50\n", "48000/48000 [==============================] - 3s 65us/step - loss: 0.3236 - acc: 0.8857 - val_loss: 0.2961 - val_acc: 0.8952\n", "Epoch 6/50\n", "48000/48000 [==============================] - 3s 65us/step - loss: 0.2950 - acc: 0.8964 - val_loss: 0.2623 - val_acc: 0.8992\n", "Epoch 7/50\n", "48000/48000 [==============================] - 3s 63us/step - loss: 0.2729 - acc: 0.9035 - val_loss: 0.2660 - val_acc: 0.8966\n", "Epoch 8/50\n", "48000/48000 [==============================] - 3s 66us/step - loss: 0.2564 - acc: 0.9082 - val_loss: 0.2405 - val_acc: 0.9098\n", "Epoch 9/50\n", "48000/48000 [==============================] - 3s 67us/step - loss: 0.2494 - acc: 0.9130 - val_loss: 0.2397 - val_acc: 0.9116\n", "Epoch 10/50\n", "48000/48000 [==============================] - 3s 66us/step - loss: 0.2299 - acc: 0.9180 - val_loss: 0.2614 - val_acc: 0.9069\n", "Epoch 11/50\n", "48000/48000 [==============================] - 3s 67us/step - loss: 0.2216 - acc: 0.9216 - val_loss: 0.2224 - val_acc: 0.9180\n", "Epoch 12/50\n", "48000/48000 [==============================] - 3s 71us/step - loss: 0.2129 - acc: 0.9237 - val_loss: 0.2228 - val_acc: 0.9183\n", "Epoch 13/50\n", "48000/48000 [==============================] - 3s 68us/step - loss: 0.2026 - acc: 0.9270 - val_loss: 0.2252 - val_acc: 0.9187\n", "Epoch 14/50\n", "48000/48000 [==============================] - 3s 66us/step - loss: 0.1915 - acc: 0.9306 - val_loss: 0.2192 - val_acc: 0.9238\n", "Epoch 15/50\n", "48000/48000 [==============================] - 3s 66us/step - loss: 0.1909 - acc: 0.9314 - val_loss: 0.2092 - val_acc: 0.9245\n", "Epoch 16/50\n", "48000/48000 [==============================] - 3s 66us/step - loss: 0.1792 - acc: 0.9349 - val_loss: 0.2119 - val_acc: 0.9249\n", "Epoch 17/50\n", "48000/48000 [==============================] - 3s 66us/step - loss: 0.1724 - acc: 0.9374 - val_loss: 0.2119 - val_acc: 0.9240\n", "Epoch 18/50\n", "48000/48000 [==============================] - 3s 65us/step - loss: 0.1694 - acc: 0.9384 - val_loss: 0.2120 - val_acc: 0.9226\n", "Epoch 19/50\n", "48000/48000 [==============================] - 3s 66us/step - loss: 0.1598 - acc: 0.9412 - val_loss: 0.2083 - val_acc: 0.9277\n", "Epoch 20/50\n", "48000/48000 [==============================] - 3s 68us/step - loss: 0.1555 - acc: 0.9432 - val_loss: 0.2025 - val_acc: 0.9291\n", "Epoch 21/50\n", "48000/48000 [==============================] - 3s 66us/step - loss: 0.1488 - acc: 0.9453 - val_loss: 0.2107 - val_acc: 0.9277\n", "Epoch 22/50\n", "48000/48000 [==============================] - 3s 68us/step - loss: 0.1481 - acc: 0.9469 - val_loss: 0.2045 - val_acc: 0.9311\n", "Epoch 23/50\n", "48000/48000 [==============================] - 3s 67us/step - loss: 0.1395 - acc: 0.9485 - val_loss: 0.2172 - val_acc: 0.9269\n", "Epoch 24/50\n", "48000/48000 [==============================] - 3s 66us/step - loss: 0.1368 - acc: 0.9496 - val_loss: 0.2102 - val_acc: 0.9297\n", "Epoch 25/50\n", "48000/48000 [==============================] - 3s 67us/step - loss: 0.1335 - acc: 0.9509 - val_loss: 0.2094 - val_acc: 0.9277\n", "Epoch 26/50\n", "48000/48000 [==============================] - 3s 68us/step - loss: 0.1315 - acc: 0.9516 - val_loss: 0.2120 - val_acc: 0.9298\n", "Epoch 27/50\n", "48000/48000 [==============================] - 3s 69us/step - loss: 0.1242 - acc: 0.9555 - val_loss: 0.2151 - val_acc: 0.9301\n", "Epoch 28/50\n", "48000/48000 [==============================] - 3s 65us/step - loss: 0.1189 - acc: 0.9556 - val_loss: 0.2089 - val_acc: 0.9302\n", "Epoch 29/50\n", "48000/48000 [==============================] - 3s 67us/step - loss: 0.1161 - acc: 0.9573 - val_loss: 0.2177 - val_acc: 0.9326\n", "Epoch 30/50\n", "48000/48000 [==============================] - 3s 64us/step - loss: 0.1107 - acc: 0.9589 - val_loss: 0.2333 - val_acc: 0.9285\n", "Epoch 31/50\n", "48000/48000 [==============================] - 3s 65us/step - loss: 0.1100 - acc: 0.9589 - val_loss: 0.2236 - val_acc: 0.9298\n", "Epoch 32/50\n", "48000/48000 [==============================] - 3s 65us/step - loss: 0.1091 - acc: 0.9589 - val_loss: 0.2292 - val_acc: 0.9302\n", "Epoch 33/50\n", "48000/48000 [==============================] - 3s 66us/step - loss: 0.1084 - acc: 0.9595 - val_loss: 0.2251 - val_acc: 0.9281\n", "Epoch 34/50\n", "48000/48000 [==============================] - 3s 65us/step - loss: 0.1028 - acc: 0.9624 - val_loss: 0.2481 - val_acc: 0.9297\n", "Epoch 35/50\n", "48000/48000 [==============================] - 3s 64us/step - loss: 0.0979 - acc: 0.9639 - val_loss: 0.2284 - val_acc: 0.9306\n", "Epoch 36/50\n", "48000/48000 [==============================] - 3s 65us/step - loss: 0.0958 - acc: 0.9647 - val_loss: 0.2317 - val_acc: 0.9302\n", "Epoch 37/50\n", "48000/48000 [==============================] - 3s 65us/step - loss: 0.0923 - acc: 0.9659 - val_loss: 0.2404 - val_acc: 0.9286\n", "Epoch 38/50\n", "48000/48000 [==============================] - 3s 67us/step - loss: 0.0933 - acc: 0.9656 - val_loss: 0.2475 - val_acc: 0.9318\n", "Epoch 39/50\n", "48000/48000 [==============================] - 3s 66us/step - loss: 0.0951 - acc: 0.9650 - val_loss: 0.2399 - val_acc: 0.9312\n", "Epoch 40/50\n", "48000/48000 [==============================] - 3s 67us/step - loss: 0.0892 - acc: 0.9681 - val_loss: 0.2369 - val_acc: 0.9302\n", "Epoch 41/50\n", "48000/48000 [==============================] - 3s 69us/step - loss: 0.0878 - acc: 0.9685 - val_loss: 0.2377 - val_acc: 0.9305\n", "Epoch 42/50\n", "48000/48000 [==============================] - 3s 66us/step - loss: 0.0830 - acc: 0.9686 - val_loss: 0.2558 - val_acc: 0.9311\n", "Epoch 43/50\n", "48000/48000 [==============================] - 3s 68us/step - loss: 0.0897 - acc: 0.9672 - val_loss: 0.2389 - val_acc: 0.9315\n", "Epoch 44/50\n", "48000/48000 [==============================] - 3s 64us/step - loss: 0.0806 - acc: 0.9699 - val_loss: 0.2555 - val_acc: 0.9302\n", "Epoch 45/50\n", "48000/48000 [==============================] - 3s 64us/step - loss: 0.0822 - acc: 0.9707 - val_loss: 0.2471 - val_acc: 0.9305\n", "Epoch 46/50\n", "48000/48000 [==============================] - 3s 69us/step - loss: 0.0800 - acc: 0.9714 - val_loss: 0.2575 - val_acc: 0.9328\n", "Epoch 47/50\n", "48000/48000 [==============================] - 3s 65us/step - loss: 0.0777 - acc: 0.9717 - val_loss: 0.2442 - val_acc: 0.9335\n", "Epoch 48/50\n", "48000/48000 [==============================] - 3s 63us/step - loss: 0.0843 - acc: 0.9698 - val_loss: 0.2628 - val_acc: 0.9298\n", "Epoch 49/50\n", "48000/48000 [==============================] - 3s 65us/step - loss: 0.0746 - acc: 0.9724 - val_loss: 0.2593 - val_acc: 0.9302\n", "Epoch 50/50\n", "48000/48000 [==============================] - 3s 63us/step - loss: 0.0722 - acc: 0.9742 - val_loss: 0.2649 - val_acc: 0.9326\n" ] } ], "source": [ "history = model.fit(X_train, y_train,\n", " batch_size=batch_size,\n", " epochs=epochs,\n", " verbose=1,\n", " validation_data=(X_val, y_val))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 訓練過程的可視化" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 透過趨勢圖來觀察訓練與驗證的走向 (特別去觀察是否有\"過擬合(overfitting)\"的現象)\n", "import matplotlib.pyplot as plt\n", "\n", "def plot_train_history(history, train_metrics, val_metrics):\n", " plt.plot(history.history.get(train_metrics),'-o')\n", " plt.plot(history.history.get(val_metrics),'-o')\n", " plt.ylabel(train_metrics)\n", " plt.xlabel('Epochs')\n", " plt.legend(['train', 'validation'])\n", " \n", " \n", "plt.figure(figsize=(12,4))\n", "plt.subplot(1,2,1)\n", "plot_train_history(history, 'loss','val_loss')\n", "\n", "plt.subplot(1,2,2)\n", "plot_train_history(history, 'acc','val_acc')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "分析一下訓練過程, 我們可以很明顯看到大約在第10個epochs之後整個模型就開始在驗證資料集有過擬合(overfitting)的現象。\n", "如果要繼續調優的話, 可以朝向增加資料集或進行一些降維的處理。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 驗證評估 (Evaluation)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Test loss: 0.250863265352\n", "Test accuracy: 0.9343\n" ] } ], "source": [ "score = model.evaluate(X_test, y_test, verbose=0)\n", "\n", "print('Test loss:', score[0])\n", "print('Test accuracy:', score[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 93.8%的正確率 ~~ 太神奇了, 傑克!!\n", "\n", "事實證明,卷積神經網絡分類器比在[這里](http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/)報告的最好的分類器(SVM) 89.7%還要更好。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 每一種類別的預測正確率" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10000/10000 [==============================] - 0s 50us/step\n" ] } ], "source": [ "#get the predictions for the test data\n", "predicted_classes = model.predict_classes(X_test)\n", "\n", "#get the indices to be plotted\n", "y_true = data_test.iloc[:, 0]\n", "corrects = np.nonzero(predicted_classes==y_true)[0]\n", "incorrects = np.nonzero(predicted_classes!=y_true)[0]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " precision recall f1-score support\n", "\n", " Class 0 0.88 0.90 0.89 1000\n", " Class 1 0.99 0.99 0.99 1000\n", " Class 2 0.91 0.90 0.90 1000\n", " Class 3 0.92 0.95 0.93 1000\n", " Class 4 0.91 0.90 0.90 1000\n", " Class 5 0.99 0.98 0.99 1000\n", " Class 6 0.83 0.79 0.81 1000\n", " Class 7 0.96 0.97 0.97 1000\n", " Class 8 0.99 0.99 0.99 1000\n", " Class 9 0.96 0.98 0.97 1000\n", "\n", "avg / total 0.93 0.93 0.93 10000\n", "\n" ] } ], "source": [ "from sklearn.metrics import classification_report\n", "\n", "target_names = [\"Class {}\".format(i) for i in range(num_classes)]\n", "print(classification_report(y_true, predicted_classes, target_names=target_names))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "顯然,我們的分類器對第6類別的圖像辨識在精度和召回方面的表現相對差。也許我們會在可視化正確和錯誤的預測之後獲得更多的洞察力。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 正確辨識的圖像範例:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nrwIAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for i, correct in enumerate(corrects[:9]):\n", " plt.subplot(3,3,i+1)\n", " plt.imshow(X_test[correct].reshape(28,28), cmap='gray', interpolation='none')\n", " plt.title(\"Predicted {}, Class {}\".format(predicted_classes[correct], y_true[correct]))\n", " plt.tight_layout()\n", " \n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 辨識錯誤的圖像範例" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nzT09iIk1AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for i, incorrect in enumerate(incorrects[0:9]):\n", " plt.subplot(3,3,i+1)\n", " plt.imshow(X_test[incorrect].reshape(28,28), cmap='gray', interpolation='none')\n", " plt.title(\"Predicted {}, Class {}\".format(predicted_classes[incorrect], y_true[incorrect]))\n", " plt.tight_layout()\n", " \n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 總結 (Conclusion)\n", "\n", "在這篇文章中有一些個人學習到的一些有趣的重點:\n", "* 深度學習也可以很摩登很現代感\n", "* 只要有創造力與天馬行空的想法,很多我們眼睛看到的東西都可以變成應用AI的場景 \n", "* 每個公司都可以擁有自己的訓練圖像資料集\n", "* 電腦宅男也可以跟時尚(fashion)掛上勾了, 下次我們可以說我們是\"AI時尚宅男\" ...太潮了!!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 參考:\n", "* [CNN with Keras](https://www.kaggle.com/bugraokcu/cnn-with-keras)\n", "* [zalandoresearch/fashion-mnist](https://github.com/zalandoresearch/fashion-mnist)\n", "* [Classifying clothes using Tensorflow](https://medium.com/tensorist/classifying-fashion-articles-using-tensorflow-fashion-mnist-f22e8a04728a)\n", "* [Keras官網](http://keras.io/)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.3" } }, "nbformat": 4, "nbformat_minor": 2 }