【深度学习--图像分类】imageAI自定义模型训练

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。人工智能教程

10分钟了解下图像识别库imageAI,请看上篇文章。点这里

ImageAI 提供4种不同的算法及模型来执行自定义预测模型训练,通过以下简单几个步骤即可实现自定义预测模型训练。提供用于自定义预测模型训练的4种算法包括 SqueezeNet,ResNet,InceptionV3 和 DenseNet。您可以将其中一种算法加载到imageai.Prediction.Custom.CustomImagePrediction类中,这允许您在任何对象/人的图像集上训练您自己的模型。训练过程生成一个 JSON 文件,用于映射图像数据集和许多模型中的对象类型。然后,您就可以使用生成的 JSON 文进行高精度自定义图像预测。

安装imageAI 库,采用清华镜像源,python版本:3.6.9

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  imageAI

安装tensorflow_gpu,采用清华镜像源,python版本:3.6.9

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  tensorflow_gpu==1.14

要进行自定义预测模型训​​练,您需要准备要用于训练的图像。您需要按如下方式提供图像:

创建一个数据集文件夹并命名(如 pets)
在数据集文件中创建一个名称为 train 的子文件夹
在数据集文件中创建一个名称为 test 的子文件夹
在 train 文件夹中,为每个你要训练的对象创建文件夹并命名(如 dog,cat,squirrel,snake)
在 test 文件夹中,为每个你要训练的对象创建文件夹并命名(如 dog,cat,squirrel,snake)
把每个对象的图像放在 train 文件夹下对应名称的子文件夹,这些图像是用于训练模型的图像,为了训练出精准度较高的模型,我建议每个对象收集大约500张以上图像。
把每个对象用于测试的图像放在 test 文件夹下对应名称的子文件夹,为了训练出精准度较高的模型,我建议每个对象用于测试的图像在100~200张。用于训练模型时在这些图像中识别出要训练的对象。
按照上述步骤操作完成后,图像数据集文件夹的结构应如下所示:

pets >
train >> dog >>> dog_train_images
      >> cat >>> cat_train_images
      >> squirrel >>> squirrel_train_images
      >> snake >> snake_train_images
test  >> dog >>> dog_test_images
      >> cat >>> cat_test_images
      >> squirrel >>> squirrel_test_images
      >> snake >>> snake_test_images

训练代码:
resnet._train.py

from imageai.Prediction.Custom import ModelTraining
model_trainer = ModelTraining()
model_trainer.setModelTypeAsResNet()
model_trainer.setDataDirectory("./pets/")
model_trainer.trainModel(num_objects=4, num_experiments=100, enhance_data=True, batch_size=32, show_network_summary=True)

没错! 只需 5 行代码,就可以在您的数据集上使用所支持的4种深度学习算法来训练自定义模型。现在让我们来看看上面的代码是如何工作的:

from imageai.Prediction.Custom import ModelTraining

model_trainer = ModelTraining()
model_trainer.setModelTypeAsResNet()
model_trainer.setDataDirectory("pets")

在上面的代码中,第一行导入 ImageAI 的ModelTraining类,第二行创建了ModelTraining类的新实例,第三行将模型类型设置为ResNet,第四行设置我们想要训练的数据集的路径。

model_trainer.trainModel(num_objects=4, num_experiments=100, enhance_data=True, batch_size=32, show_network_summary=True)

在上面的代码中,我们开始了模型训练,参数如下:

num_objects:该参数用于指定图像数据集中对象的数量
num_experiments:该参数用于指定将对图像训练的次数,也称为epochs
enhance_data(可选):该参数用于指定是否生成训练图像的副本以获得更好的性能。
batch_size:该参数用于指定批次数量。由于内存限制,需要分批训练,直到所有批次训练集都完成为止。
show_network_summary:该参数用于指定是否在控制台中显示训练的过程。

你可能感兴趣的:(深度学习--图像分类)