FaceRank 预训练模型测试


In [1]:
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Flatten, Activation
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.preprocessing.image import load_img, img_to_array
from keras.utils import np_utils
import os
import numpy as np


Using TensorFlow backend.

In [2]:
def load_dataset(filedir):
    """
    读取数据
    :param filedir:
    :return:
    """
    image_data_list = []
    label = []
    train_image_list = os.listdir(filedir + '/train')
    for img in train_image_list:
        url = os.path.join(filedir + '/train/' + img)
        image = load_img(url, target_size=(128, 128))
        image_data_list.append(img_to_array(image))
        label.append(img.split('-')[0])
    img_data = np.array(image_data_list)
    img_data = img_data.astype('float32')
    img_data /= 255
    return img_data, label

In [3]:
def make_network():
    model = Sequential()
    model.add(Conv2D(32, (3, 3), padding='same', input_shape=(128, 128, 3)))
    model.add(Activation('relu'))
    model.add(Conv2D(32, (3, 3)))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.5))

    model.add(Flatten())
    model.add(Dense(128))
    model.add(Activation('relu'))
    model.add(Dropout(0.5))
    model.add(Dense(11))
    model.add(Activation('softmax'))

    return model

In [4]:
train_x, train_y = load_dataset('data')
train_y = np_utils.to_categorical(train_y)
model = make_network()

In [6]:
model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])
hist = model.fit(train_x, train_y, batch_size=32, epochs=100, verbose=1)


Epoch 1/100
120/120 [==============================] - 8s - loss: 2.5834 - acc: 0.1000     
Epoch 2/100
120/120 [==============================] - 8s - loss: 2.4510 - acc: 0.0667     
Epoch 3/100
120/120 [==============================] - 9s - loss: 2.3724 - acc: 0.1500     
Epoch 4/100
120/120 [==============================] - 9s - loss: 2.3495 - acc: 0.0917     
Epoch 5/100
120/120 [==============================] - 9s - loss: 2.3209 - acc: 0.1917     
Epoch 6/100
120/120 [==============================] - 9s - loss: 2.3506 - acc: 0.1083     
Epoch 7/100
120/120 [==============================] - 9s - loss: 2.2856 - acc: 0.1167     
Epoch 8/100
120/120 [==============================] - 9s - loss: 2.3031 - acc: 0.1667     
Epoch 9/100
120/120 [==============================] - 9s - loss: 2.2044 - acc: 0.2083     
Epoch 10/100
120/120 [==============================] - 9s - loss: 2.2749 - acc: 0.1250     
Epoch 11/100
120/120 [==============================] - 9s - loss: 2.2521 - acc: 0.1833     
Epoch 12/100
120/120 [==============================] - 9s - loss: 2.1797 - acc: 0.2417     
Epoch 13/100
120/120 [==============================] - 9s - loss: 2.2485 - acc: 0.1667     
Epoch 14/100
120/120 [==============================] - 9s - loss: 2.1828 - acc: 0.2000     
Epoch 15/100
120/120 [==============================] - 9s - loss: 2.0940 - acc: 0.2583     
Epoch 16/100
120/120 [==============================] - 9s - loss: 2.1489 - acc: 0.2333     
Epoch 17/100
120/120 [==============================] - 9s - loss: 2.1168 - acc: 0.2167     
Epoch 18/100
120/120 [==============================] - 9s - loss: 2.0267 - acc: 0.2750     
Epoch 19/100
120/120 [==============================] - 9s - loss: 2.0205 - acc: 0.2917     
Epoch 20/100
120/120 [==============================] - 9s - loss: 2.0279 - acc: 0.2667     
Epoch 21/100
120/120 [==============================] - 9s - loss: 1.8000 - acc: 0.3583     
Epoch 22/100
120/120 [==============================] - 9s - loss: 1.9757 - acc: 0.2583     
Epoch 23/100
120/120 [==============================] - 9s - loss: 1.7208 - acc: 0.4417     
Epoch 24/100
120/120 [==============================] - 9s - loss: 1.7918 - acc: 0.3750     
Epoch 25/100
120/120 [==============================] - 9s - loss: 1.7776 - acc: 0.3667     
Epoch 26/100
120/120 [==============================] - 9s - loss: 1.6400 - acc: 0.4250     
Epoch 27/100
120/120 [==============================] - 9s - loss: 1.6489 - acc: 0.4333     
Epoch 28/100
120/120 [==============================] - 9s - loss: 1.4964 - acc: 0.5000     
Epoch 29/100
120/120 [==============================] - 9s - loss: 1.3950 - acc: 0.5500     
Epoch 30/100
120/120 [==============================] - 9s - loss: 1.2612 - acc: 0.5917     
Epoch 31/100
120/120 [==============================] - 9s - loss: 1.1697 - acc: 0.6417     
Epoch 32/100
120/120 [==============================] - 9s - loss: 1.0743 - acc: 0.6833     
Epoch 33/100
120/120 [==============================] - 9s - loss: 1.0963 - acc: 0.6500     
Epoch 34/100
120/120 [==============================] - 9s - loss: 0.9886 - acc: 0.6917     
Epoch 35/100
120/120 [==============================] - 9s - loss: 0.9085 - acc: 0.6917     
Epoch 36/100
120/120 [==============================] - 9s - loss: 0.9465 - acc: 0.6917     
Epoch 37/100
120/120 [==============================] - 9s - loss: 0.7760 - acc: 0.7917     
Epoch 38/100
120/120 [==============================] - 9s - loss: 0.7133 - acc: 0.7917     
Epoch 39/100
120/120 [==============================] - 9s - loss: 0.6561 - acc: 0.8000     
Epoch 40/100
120/120 [==============================] - 9s - loss: 0.6136 - acc: 0.8167     
Epoch 41/100
120/120 [==============================] - 9s - loss: 0.5581 - acc: 0.8500     
Epoch 42/100
120/120 [==============================] - 9s - loss: 0.7516 - acc: 0.7667     
Epoch 43/100
120/120 [==============================] - 9s - loss: 0.5138 - acc: 0.8500     
Epoch 44/100
120/120 [==============================] - 9s - loss: 0.4506 - acc: 0.9000     
Epoch 45/100
120/120 [==============================] - 9s - loss: 0.3942 - acc: 0.8833     
Epoch 46/100
120/120 [==============================] - 9s - loss: 0.6240 - acc: 0.8083     
Epoch 47/100
120/120 [==============================] - 9s - loss: 0.3461 - acc: 0.8917     
Epoch 48/100
120/120 [==============================] - 9s - loss: 0.4823 - acc: 0.8500     
Epoch 49/100
120/120 [==============================] - 10s - loss: 0.3077 - acc: 0.9500    
Epoch 50/100
120/120 [==============================] - 10s - loss: 0.3378 - acc: 0.9167    
Epoch 51/100
120/120 [==============================] - 10s - loss: 0.3369 - acc: 0.8833    
Epoch 52/100
120/120 [==============================] - 9s - loss: 0.4497 - acc: 0.8583     
Epoch 53/100
120/120 [==============================] - 9s - loss: 0.3058 - acc: 0.9250     
Epoch 54/100
120/120 [==============================] - 9s - loss: 0.2792 - acc: 0.9500     
Epoch 55/100
120/120 [==============================] - 9s - loss: 0.2728 - acc: 0.9417     
Epoch 56/100
120/120 [==============================] - 9s - loss: 0.3008 - acc: 0.9250     
Epoch 57/100
120/120 [==============================] - 10s - loss: 0.2725 - acc: 0.9333    
Epoch 58/100
120/120 [==============================] - 10s - loss: 0.3019 - acc: 0.9083    
Epoch 59/100
120/120 [==============================] - 9s - loss: 0.2992 - acc: 0.9167     
Epoch 60/100
120/120 [==============================] - 9s - loss: 0.2315 - acc: 0.9333     
Epoch 61/100
120/120 [==============================] - 9s - loss: 0.2019 - acc: 0.9500     
Epoch 62/100
120/120 [==============================] - 9s - loss: 0.2232 - acc: 0.9500     
Epoch 63/100
120/120 [==============================] - 9s - loss: 0.2297 - acc: 0.9333     
Epoch 64/100
120/120 [==============================] - 9s - loss: 0.2397 - acc: 0.9167     
Epoch 65/100
120/120 [==============================] - 9s - loss: 0.1984 - acc: 0.9333     
Epoch 66/100
120/120 [==============================] - 9s - loss: 0.1865 - acc: 0.9250     
Epoch 67/100
120/120 [==============================] - 9s - loss: 0.2462 - acc: 0.9250     
Epoch 68/100
120/120 [==============================] - 9s - loss: 0.1647 - acc: 0.9583     
Epoch 69/100
120/120 [==============================] - 9s - loss: 0.1407 - acc: 0.9583     
Epoch 70/100
120/120 [==============================] - 9s - loss: 0.2484 - acc: 0.8917     
Epoch 71/100
120/120 [==============================] - 9s - loss: 0.1418 - acc: 0.9583     
Epoch 72/100
120/120 [==============================] - 9s - loss: 0.1518 - acc: 0.9500     
Epoch 73/100
120/120 [==============================] - 9s - loss: 0.1372 - acc: 0.9667     
Epoch 74/100
120/120 [==============================] - 9s - loss: 0.1458 - acc: 0.9583     
Epoch 75/100
120/120 [==============================] - 9s - loss: 0.1205 - acc: 0.9667     
Epoch 76/100
120/120 [==============================] - 9s - loss: 0.1509 - acc: 0.9417     
Epoch 77/100
120/120 [==============================] - 9s - loss: 0.1888 - acc: 0.9167     
Epoch 78/100
120/120 [==============================] - 9s - loss: 0.1468 - acc: 0.9500     
Epoch 79/100
120/120 [==============================] - 9s - loss: 0.2129 - acc: 0.9250     
Epoch 80/100
120/120 [==============================] - 9s - loss: 0.1372 - acc: 0.9583     
Epoch 81/100
120/120 [==============================] - 9s - loss: 0.1020 - acc: 0.9750     
Epoch 82/100
120/120 [==============================] - 9s - loss: 0.1189 - acc: 0.9750     
Epoch 83/100
120/120 [==============================] - 9s - loss: 0.1359 - acc: 0.9583     
Epoch 84/100
120/120 [==============================] - 9s - loss: 0.1620 - acc: 0.9250     
Epoch 85/100
120/120 [==============================] - 9s - loss: 0.1753 - acc: 0.9333     
Epoch 86/100
120/120 [==============================] - 9s - loss: 0.1077 - acc: 0.9833     
Epoch 87/100
120/120 [==============================] - 9s - loss: 0.0911 - acc: 0.9750     
Epoch 88/100
120/120 [==============================] - 9s - loss: 0.1045 - acc: 0.9583     
Epoch 89/100
120/120 [==============================] - 9s - loss: 0.1049 - acc: 0.9667     
Epoch 90/100
120/120 [==============================] - 9s - loss: 0.1311 - acc: 0.9500     
Epoch 91/100
120/120 [==============================] - 9s - loss: 0.2061 - acc: 0.9500     
Epoch 92/100
120/120 [==============================] - 9s - loss: 0.1331 - acc: 0.9250     
Epoch 93/100
120/120 [==============================] - 9s - loss: 0.1095 - acc: 0.9667     
Epoch 94/100
120/120 [==============================] - 9s - loss: 0.1084 - acc: 0.9917     
Epoch 95/100
120/120 [==============================] - 9s - loss: 0.1551 - acc: 0.9500     
Epoch 96/100
120/120 [==============================] - 8s - loss: 0.1281 - acc: 0.9583     
Epoch 97/100
120/120 [==============================] - 9s - loss: 0.0590 - acc: 0.9917     
Epoch 98/100
120/120 [==============================] - 9s - loss: 0.1307 - acc: 0.9500     
Epoch 99/100
120/120 [==============================] - 9s - loss: 0.1090 - acc: 0.9667     
Epoch 100/100
120/120 [==============================] - 10s - loss: 0.1178 - acc: 0.9500    

In [7]:
model.evaluate(train_x,train_y)


120/120 [==============================] - 2s     
Out[7]:
[0.033411206336071093, 0.98333333333333328]

In [8]:
model.save('faceRank.h5')

In [9]:
del model

In [10]:
from keras.models import load_model

In [11]:
model = load_model('faceRank.h5')

In [12]:
model.evaluate(train_x,train_y)


120/120 [==============================] - 2s     
Out[12]:
[0.033411206336071093, 0.98333333333333328]

In [14]:
def load_image(img_url):
    image = load_img(img_url,target_size=(128,128))
    image = img_to_array(image)
    image /= 255
    image = np.expand_dims(image,axis=0)
    return image

In [15]:
image = load_image('data/test/9-1.jpg')

In [16]:
model.predict_classes(image)


1/1 [==============================] - 0s
Out[16]:
array([8], dtype=int64)

In [ ]: