龙空技术网

使用Python代码训练图像识别详细示例

林小婵的店 2049

前言:

目前咱们对“python拍照保存图片并命名”大体比较关心,同学们都需要分析一些“python拍照保存图片并命名”的相关知识。那么小编同时在网络上搜集了一些关于“python拍照保存图片并命名””的相关内容,希望你们能喜欢,姐妹们快快来学习一下吧!

在本文中,我们将简要介绍人工智能领域,特别是计算机视觉领域,所涉及的挑战,针对这些挑战的现有现代解决方案以及如何方便,轻松地应用这些解决方案,而无需花费太多时间和精力。

人工智能几十年来一直是一个研究领域,科学家和工程师都在努力解开让机器和计算机充分感知和理解我们的世界以便正确行事和为人类服务的神秘感。这项研究工作最重要的一个方面是让计算机了解我们周围每天产生的视觉信息(图像和视频)。让计算机感知和理解视觉信息的这个领域被称为计算机视觉。

在20 世纪50年代到80年代人工智能研究的兴起期间,计算机手动给出了如何识别图像,图像中的物体以及要注意的特征的指令。这种方法是传统算法,称为专家系统因为他们要求人类为每个独特的对象场景识别特征的痛苦,这些特征必须被识别并且在计算机可以理解的数学模型中表示这些特征。这涉及到大量繁琐的工作,因为有数百种不同的方式可以表示对象,并且存在数千(甚至数百万)个独特存在的不同场景和对象,因此找到优化且准确的数学模型代表每个对象或场景的所有可能特征,对于所有可能的对象或场景,更多的工作将永远持续。

然后,在20 世纪90年代,机器学习的概念被引入,它迎来了一个时代,在这个时代,我们可以设计算法,而不是告诉计算机在识别图像和视频中的场景和对象时需要注意什么。学习如何识别图像中的场景和物体,就像孩子学会通过探索来了解他/她的环境一样。机器学习为计算机学习识别几乎任何我们想要的场景或对象开辟了道路。

随着英伟达gpu等功能强大的计算机的出现,以及阿历克斯·克里日夫斯基(Alex Krizhevsky)等人2012年推出的AlexNet等最先进的图像识别深度学习算法,以及He等人2015年推出的ResNet, Forrest Landola等人2016年推出的squeeze et,我们可以把一些图片放在一起,定义一个人工智能模型,自己去学习这些图片中的场景和对象的特征,并利用学习过程中获得的知识去识别它之后遇到的场景或对象的所有其他实例。

ImageAI是一个python库,用来让具有各种专业知识的学生、开发人员和研究人员使用5到15行简单的代码构建具有最先进计算机视觉功能的系统和应用程序。现在,让我们通过创建你的第一个人工智能模型来引导你,它可以识别你想要的任何东西。

要训​​练您的人工智能模型,您需要一组称为数据集的图像。数据集包含数百到数千个您希望人工智能模型识别的对象样本图像。但你没有担心!我们现在不会要求您下载数千张图片来训练您的人工智能模型。在本教程中,我们提供了一个名为IdenProf的数据集()。IdenProf(Identifiable Professionals)是一个数据集,包含10,000 个不同专业人员的11,000张照片,人们可以通过他们的穿衣方式看到并识别他们的工作。图片在此数据集中的专业人员类别如下:

ChefDoctorEngineerFarmerFirefighterJudgeMechanicPilotPoliceWaiter

该数据集分为9000(每个行业900张图片) 图片,以训练人工智能模型和2000(每个行业200张图片) 图片,以测试人工智能模型在训练时的性能。IdenProf已经妥善安排并准备好训练您的人工智能模型,以通过他们的穿衣方式识别专业人士。出于参考目的,如果您使用自己的图像数据集,则必须为希望人工智能模型识别的每个对象或场景收集至少500张图片。要训​​练您使用ImageAI自行收集的任何图像数据集,您必须将图像排列在文件夹中,如下例所示:

idenprof//train//chef// 900 images of chefs

idenprof//train//doctor// 900 images of doctors

idenprof//train//engineer// 900 images of engineer

idenprof//train//farmer// 900 images of farmers

idenprof//train//firefighter// 900 images of firefighters

idenprof//train//judge// 900 images of judges

idenprof//train//mechanic// 900 images of mechanics

idenprof//train//pilot// 900 images of pilots

idenprof//train//chef// 900 images of chef

idenprof//train//police// 900 images of police

idenprof//train//waiter// 900 images of waiters

idenprof//test//chef// 200 images of chefs

idenprof//test//doctor// 200 images of doctors

idenprof//test//engineer// 200 images of engineer

idenprof//test//farmer// 200 images of farmers

idenprof//test//firefighter// 200 images of firefighters

idenprof//test//judge// 200 images of judges

idenprof//test//mechanic// 200 images of mechanics

idenprof//test//pilot// 200 images of pilots

idenprof//test//chef// 200 images of chef

idenprof//test//police// 200 images of police

idenprof//test//waiter// 200 images of waiters

现在您已经了解了如何准备自己的图像数据集来训练人工智能模型,现在我们将继续指导您培训人工智能模型,以识别使用ImageAI的专业人员。

·首先,您必须通过此链接下载IdenProf数据集的zip 。您还可以查看人工智能模型的所有详细信息和样本结果,这些模型经过培训,可以识别IdenProf GitHub存储库中的专业,其链接位于下方。

·由于培训人工智能模型需要高性能计算机系统,因此我强烈建议您确保您希望用于此培训的计算机/笔记本电脑具有NVIDIA GPU。或者,您可以使用Google Colab进行此实验,它可以提供免费的NVIDIA K80 GPU进行实验。

·然后您必须安装ImageAI及其依赖项。

1)从官方Python语言网站下载并安装Python 3

2)通过pip安装以下依赖项:

pip install tensorflow

pip install numpy

pip install scipy

pip install opencv-python

pip install pillow

pip install matplotlib

pip install h5py

pip install keras

pip3 install

创建一个包含您想要的任何名称的python文件,例如“FirstTraining.py”。

·将IdenProf数据集的zip复制到Python文件所在的文件夹中。然后将其解压缩到同一个文件夹中。

·然后将下面的代码复制到python文件中(例如FirstTraining.py)。

from imageai.Prediction.Custom import ModelTraining

model_trainer = ModelTraining()

model_trainer.setModelTypeAsResNet()

model_trainer.setDataDirectory("idenprof")

model_trainer.trainModel(num_objects=10, num_experiments=200, enhance_data=True, batch_size=32, show_network_summary=True)

这就是训练人工智能模型所需的所有代码。在运行代码开始培训之前,让我们解释一下代码。

在第一行中,我们导入了ImageAI的模型训练类。在第二行中,我们创建了一个模型训练类的实例。在第三行中,我们将模型类型设置为ResNet(有四种可用的模型类型,即SqueezeNet,ResNet,InceptionV3和DenseNet)。在第四行中,我们将数据目录(dataset目录)设置为您解压缩的数据集 zip文件的文件夹。然后在第五行中,我们调用trainModel函数并指定以下值:

number_objects :这是指IdenProf数据集中不同类型的专业人员的数量。 num_experiments :这是模型训练idenprof数据集中所有图像以获得最大准确度的次数。 Enhance_data(可选) :这是为了告诉模型训练在IdenProf数据集中创建图像的修改副本,以确保实现最高精度。 batch_size:这是指模型训练一次研究的图像数,直到它研究了IdenProf数据集中的所有图像。 Show_network_summary(可选) :这是为了显示用于训练人工智能模型的模型类型的结构。

现在您可以开始运行Python文件并开始培训。训练开始后,您将看到如下结果:

=====================================

Total params: 23,608,202

Trainable params: 23,555,082

Non-trainable params: 53,120

______________________________________

Using Enhanced Data Generation

Found 4000 images belonging to 4 classes.

Found 800 images belonging to 4 classes.

JSON Mapping for the model classes saved to C:\Users\User\PycharmProjects\FirstTraining\idenprof\json\model_class.json

Number of experiments (Epochs) : 200

Epoch 1/100

1/280 [>.............................] - ETA: 52s - loss: 2.3026 - acc: 0.2500

2/280 [>.............................] - ETA: 52s - loss: 2.3026 - acc: 0.2500

3/280 [>.............................] - ETA: 52s - loss: 2.3026 - acc: 0.2500

..............................,

..............................,

..............................,

279/280 [===========================>..] - ETA: 1s - loss: 2.3097 - acc: 0.0625Epoch 00000: saving model to C:\Users\User\PycharmProjects\FirstTraining\idenprof\models\model_ex-000_acc-0.100000.h5

280/280 [==============================] - 51s - loss: 2.3095 - acc: 0.0600 - val_loss: 2.3026 - val_acc: 0.1000

让我们解释一下上面显示的细节:

1.声明“ 保存到C:\ Users \ User \ PycharmProjects \ FirstTraining \ idenprof \ json \ model_class.json的模型类的JSON映射 ”表示模型训练已为idenprof数据集保存了一个JSON文件,您可以将其用于使用自定义图像预测类识别其他图片。

2. Epoch 1/200表示网络正在执行目标200的第一次训练

3.1/280 [> ............................] - ETA:52s - 损失:2.3026 - acc:0.2500表示在当前实验中训练的批次数

4.Epoch 00000:保存模型到C:\ Users \ User \ PycharmProjects \ FirstTraining \ idenprof \ models \ model_ex-000_acc-0.100000.h5是指目前训练后保存的模型。该ex_000表示在这个阶段的实验,而ACC 0.100000和VAL ACC:0.1000表示本实验后测试图像上模型的准确度(精度的最大值为1.0)。此结果有助于了解可用于自定义图像预测的最佳执行模型。

完成人工智能模型的训练后,您可以使用“ CustomImagePrediction ”类来执行图像预测,您可以获得最高精度的模型。

接下来,创建另一个Python文件并为其命名,例如FirstCustomImageRecognition.py 。复制您上面的人工智能模型或您获得最高精度的训练模型,并将其粘贴到新python文件所在的文件夹中(例如FirstCustomImageRecognition.py)。同时复制您下载的或由您的训练生成的JSON文件,并将其粘贴到与新python文件相同的文件夹中。将属于IdenProf数据集中的类别的任何专业人员的样本图像复制到与新python文件相同的文件夹中。

然后复制下面的代码并将其放入新的python文件中

from imageai.Prediction.Custom import CustomImagePrediction

import os

execution_path = os.getcwd()

prediction = CustomImagePrediction()

prediction.setModelTypeAsResNet()

prediction.setModelPath("idenprof_061-0.7933.h5")

prediction.setJsonPath("idenprof_model_class.json")

prediction.loadModel(num_objects=10)

predictions, probabilities = prediction.predictImage("image.jpg", result_count=3)

for eachPrediction, eachProbability in zip(predictions, probabilities):

print(eachPrediction , " : " , eachProbability)

查看下面的示例图像和结果。

waiter : 99.99997615814209

chef : 1.568847380895022e-05

judge : 1.0255866556008186e-05

现在让我们解释产生这个预测结果的上面代码。

上面的第一行和第二行代码导入了ImageAI的CustomImagePrediction类,用于使用训练模型和python os类预测和识别图像。第三行代码创建一个变量,该变量保存对包含python文件(在本例中为FirstCustomImageRecognition.py)的路径的引用以及您自己下载或训练的ResNet模型文件。在上面的代码中,我们在第四行创建了一个ImagePrediction()类的实例,然后通过调用,将预测对象的模型类型设置为ResNet .setModelTypeAsResNet()在第五行然后我们将预测对象的模型路径设置为人工智能模型文件(idenprof_061-0.7933.h5)的路径,我们将其复制到第六行的项目文件夹文件夹中。在第七行中,我们设置了我们复制到第七行中的文件夹的JSON文件的路径,并将模型加载到第80行。最后,我们对我们复制到文件夹的图像运行预测,并将结果打印到命令行界面。

标签: #python拍照保存图片并命名 #python图像编码算法实现