使用深度学习识别狗的品种

本文介绍了如何使用深度学习训练模型识别狗的品种,包括数据预处理、CNN、迁移学习的应用,以及构建准确率超过80%的web应用程序。通过分析数据集,使用ResNet-50进行迁移学习,提高了模型的准确性。最后,利用Flask搭建了展示预测结果的web应用。
摘要由CSDN通过智能技术生成

作者|Nouman
编译|VK
来源|Towards Data Science

在这篇文章中,我将教你建立你自己的网页应用程序,它将接受你的狗的图片,并输出其品种。准确率超过80%!

我们将使用深度学习来训练一个模型的数据集的狗图像与他们的品种,以学习的特征来区分每一个品种。


数据分析

数据集可以从这里下载(https://s3-us-west-1.amazonaws.com/udacity-aind/dog-project/dogImages.zip ) 。在成功加载和浏览数据集后,以下是关于数据的一些介绍:

  1. 犬种总数:133

  2. 狗图片总数:8351(训练集:6680,验证集:835,测试集:836)

  3. 最受欢迎的品种:阿拉斯加: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 np.vstack(list_of_tensors)

最后,我们将使用ImageDataGenerator对图像进行动态缩放和增强

train_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255,
                                                horizontal_flip=True,
                                                vertical_flip=True,
                                                rotation_range=20)

valid_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255.)

test_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255.)


train_generator = train_datagen.flow(train_tensors
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值