在这篇文章中,将教大家实现一个网页应用程序,该程序可以接收狗的图片,然后输出其品种,其准确率超过80%!
我们将使用深度学习来训练一个识别狗品种的模型,数据集是狗图像与他们的品种信息,通过学习图像的特征来区分狗的品种。
数据分析
数据集可以从这里下载(https://s3-us-west-1.amazonaws.com/udacity-aind/dog-project/dogImages.zip)。以下是关于数据的一些介绍:
犬种总数:133
狗图片总数:8351(训练集:6680,验证集:835,测试集:836)
最受欢迎的品种:阿拉斯加对应96个样本,博德牧羊犬对应93个样本
按图片数量排序的前30个品种如下:
我们还可以在这里看到一些狗的图片和它们的品种:
数据预处理
我们会把每个图像作为一个numpy数组进行加载,并将它们的大小调整为224x224,这是大多数传统神经网络接受图像的默认大小,另外我们为图像的数量添加为另一个维度。
from keras.preprocessing import image from tqdm import tqdm
def path_to_tensor(img_path): '''将给定路径下的图像转换为张量''' img = image.load_img(img_path, target_size=(224, 224)) x = image.img_to_array(img) return np.expand_dims(x, axis=0)
def paths_to_tensor(img_paths): '''将给定路径中的所有图像转换为张量''' list_of_tensors = [path_to_tensor(img_path) for img_path in tqdm(img_paths)] return n