在搭建了深度学习环境后,第一件事就是试试行不行,最简单的当然是使用已经训练好的模型拿来预测新样本了。这里我们使用kaggle上面训练好的狗狗品种预测模型进行使用说明。(后面有完整的数据和脚本,下载到本地即可运行。)

1.加载待预测图片


from os.path import join

image_dir = 'train/'
img_paths = [join(image_dir, filename) for filename in 
                               ['0246f44bb123ce3f91c939861eb97fb7.jpg',
                                '84728e78632c0910a69d33f82e62638c.jpg']]

这里选用了2张图片,保存在img_paths的list里面。

2.定义读取和预处理图片的函数

import numpy as np
from tensorflow.python.keras.applications.resnet50 import preprocess_input
from tensorflow.python.keras.preprocessing.image import load_img, img_to_array

image_size = 224

def read_and_prep_images(img_paths, img_height=image_size, img_width=image_size):##定义处理函数
	imgs = [load_img(img_path, target_size=(img_height, img_width)) for img_path in img_paths]
	img_array = np.array([img_to_array(img) for img in imgs])
	return preprocess_input(img_array)

3.导入模型并预测

from tensorflow.python.keras.applications import ResNet50
my_model = ResNet50(weights='../resnet50/resnet50_weights_tf_dim_ordering_tf_kernels.h5')
test_data = read_and_prep_images(img_paths)
preds = my_model.predict(test_data)

4.查看并可视化预测结果

import sys
    # Add directory holding utility functions to path to allow importing
sys.path.append('~/utils')
from decode_predictions import decode_predictions

from IPython.display import Image, display

most_likely_labels = decode_predictions(preds, top=3, class_list_path='../resnet50/imagenet_class_index.json')

for i, img_path in enumerate(img_paths):
	display(Image(img_path))
	print(most_likely_labels[i])

《kaggle之本地运行识别狗品种》

    [('n02097209', 'standard_schnauzer', 0.56502265), ('n02097047', 'miniature_schnauzer', 0.31319875), ('n02097130', 'giant_schnauzer', 0.045194548)]

《kaggle之本地运行识别狗品种》

[('n02092339', 'Weimaraner', 0.99767154), ('n02099849', 'Chesapeake_Bay_retriever', 0.001392837), ('n02109047', 'Great_Dane', 0.00032280287)]

可以看到,结果已经跑出来了,而且跟kaggle云端的运行结果一致。由于官方api下载速度非常慢还经常挂掉,而且文件路径等问题需要处理细节挺多。

为方便新手在本地服务器上测试运行,我这里把数据下载好并将自己测试运行的脚本打包到百度网盘了,大家直接下载使用便是。

数据下载地址:

链接: https://pan.baidu.com/s/1UqK8mJF97VzKh5abuxkH8g 提取码: cxkf 

使用方法

1.解压到当前文件夹,运行jupyter notebook

2.打开dog_breed目录

3.加载目录下的run_model.ipynb运行便可