当前位置: 首页 > 科技观察

神操作!只需5行代码,你就可以做出一个图像识别AI

时间:2023-03-18 21:05:17 科技观察

在本文中,我们将简要介绍人工智能领域,尤其是计算机视觉领域,所涉及的挑战,以及这些领域现有的现代解决方案挑战以及如何在不花费大量时间和精力的情况下方便、轻松地应用这些解决方案。图像识别的发展几十年来,人工智能一直是一个研究领域,科学家和工程师一直在努力解开使机器和计算机能够更好地感知和理解我们的世界以正确行动并为人类服务的奥秘.这项研究工作最重要的方面之一是让计算机理解我们周围每天产生的视觉信息(图像和视频)。使计算机能够感知和理解视觉信息的领域称为计算机视觉。在20世纪50年代到80年代人工智能研究兴起的过程中,人工向计算机发出有关如何识别图像、图像中的对象以及需要注意哪些特征的指令。这种方法是传统算法,称为专家系统,因为它们需要人类识别必须识别的对象的每个独特场景的特征,并在计算机可以理解的数学模型中表示这些特征。这涉及到大量繁琐的工作,因为物体可以用数千种不同的方式表示,并且有数千(甚至数百万)种不同的场景和物体,要找到一个最优和准确的数学模型来表示每个物体或物体的所有可能特征场景,更多的工作永远在为所有可能的对象或场景进行。然后,在1990年代,机器学习的概念被引入并开创了一个时代,在这个时代,我们可以设计算法,让计算机学习如何识别图像和视频中的场景和对象,而不是告诉计算机要寻找什么自己识别图像中的场景和物体,就像儿童通过探索了解周围环境一样。机器学习为计算机学习识别我们想要的几乎任何场景或物体开辟了道路。随着功能强大的计算机(如GPU)和先进的图像识别深度学习算法的出现,如AlexKrizhevsky等人提出的AlexNet。2012年,KaemingHe等人提出ResNet。2015年,Forrest在2016年由Landola等人提出的SqueezeNet。(DenseNetbyGaoHuangetal.2016),仅举几例,将许多图片放在一起(更像是计算机的图像书)并定义一个AI模型来学习这些图片本身的场景和对象特征,并利用这些知识从学习过程中获得的信息,以识别此后将遇到的场景或对象类型的所有其他实例。为了训练一个能够识别图片中你想识别的东西的AI模型,传统上需要大量的应用数学和深度学习库的专业知识,更不用说所花费的时间和压力了。编写算法代码,然后根据您的图像调整代码。这是我们提供解决方案的地方。AICommons的团队开发了一个Python库,它允许您训练一个AI模型,该模型只需5行简单的Python代码即可识别您希望图像识别的任何对象。Python库是ImageAI,它是一个库,旨在让具有各种专业知识的学生、开发人员和研究人员使用5到15行简单的代码构建具有最先进计算机视觉功能的系统和应用程序。现在,让我们带您创建您的第一个AI模型,它可以识别您想要的任何东西。要训??练您的AI模型,您需要一组称为数据集的图像。数据集包含您希望AI模型识别的对象的成百上千个示例图像。不过别担心!我们并不是说您现在要下载数千张图片,只是为了训练您的AI模型。在本教程中,我们提供了一个名为IdenProf的数据集。IdenProf(IdentifiableProfessionals)是一个包含10位不同专业人士的11,000张照片的数据集,人们可以通过他们的着装方式看到和识别他们的工作。该数据集中的职业类别如下:ChefDoctorEngineerEngineerFarmerFirefighterJudgeMechanicPilotPoliceWaiter(服务员)数据集分为9000(每个职业900张)图片来训练AI模型和2000(200每个职业的图片)图片来测试AI模型在训练过程中的表现。IdenProf已妥善安排并准备好训练您的人工智能模型,以识别专业人士的着装方式。作为参考,如果您使用自己的图像数据集,则必须为您希望AI模型识别的每个对象或场景收集至少500张图像。要对使用ImageAI收集的任何图像数据集进行训练,必须将图像排列在文件夹中,如下例所示:idenprof//train//chef//900imagesofchefsidenprof//train//doctor//900imagesofdoctorsidenprof//train//engineer//900imagesofengineeridenprof//train//farmer//900imagesoffarmersidenprof//train//firefighter//900imagesoffirefighterssidenprof//train//judge//900imagesofjudgesidenprof//train//mechanic//900imagesofmesidenchanicsiden0prof/lotof/agefin/pi/train//chef//900imagesofchefidenprof//train//police//900imagesofpoliceidenprof//train//waiter//900imagesofwaitersidenprof//test//chef//200imagesofchefsidenprof//test//doctor//200imagesofdoctorsidenprof//test//engineer//200imagesofengineeridenprof//test//farmer//200imagesoffarmersidenprof//test//firefighters//200imagesoffirefighterssidenprof//test//judge//200imagesofjudgesidenprof//test//mechanic//200imagesofmechanicsidenprof//test//pilots//of/pilot0imagetest//chef//200imagesofchefidenprof//test//police//200imagesofpoliceidenprof//测试//waiter//200imagesofwaiters现在您已经了解了如何准备自己的图像数据集来训练AI模型,我们现在将指导您训练AI模型以使用ImageAI识别专业人士首先,您必须通过此链接下载IdenProf数据设置拉链。您还可以在以下链接的IdenProfGitHub存储库中查看经过训练以识别职业的AI模型的所有详细信息和示例结果。https://github.com/OlafenwaMoses/IdenProf因为训练AI模型需要高性能的计算机系统,所以我强烈建议您确保要用于此训练的计算机/笔记本电脑具有NVIDIAGPU。此外,如果您提供免费的NVIDIAK80GPU进行实验,您可以使用GoogleColab进行此实验。然后,您必须安装ImageAI及其依赖项。1)从Python语言官网https://python.org下载并安装Python32)通过pip安装以下pips:i.TensorFlowpip3安装tensorflowii。OpenCVpip3安装opencv-pythoniii。python文件,例如“FirstTraining.py”。将IdenProf数据集的zip复制到与Python文件相同的文件夹中。然后解压到同一个文件夹。·然后将下面的代码复制到一个python文件中(例如FirstTraining.py)。fromimageai.Prediction.CustomimportModelTrainingmodel_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)这是训练人工所有的智能模型所需的代码。在运行代码开始训练之前,我们先来解释一下代码。第一行,我们导入ImageAI的模型训练类。在第二行中,我们创建模型训练类的实例。在第三行,我们将模型类型设置为ResNet(有四种可用的模型类型,分别是SqueezeNet、ResNet、InceptionV3和DenseNet)。第四行,我们设置数据目录(datasetdirectory)为你解压的datasetzip文件所在的文件夹。然后在第五行,调用trainModel函数并指定以下值:number_objects:这是指IdenProf数据集中不同类型专业人员的数量。num_experiments:这是模型训练器研究idenprof数据集中所有图像以达到最大准确度的次数。Enhance_data(可选):告诉模型训练器在IdenProf数据集中创建图像的修改副本,以确保最大的准确性。batch_size:这是指模型训练器将在IdenProf数据集中的所有图像之前立即研究的图像集的数量。Show_network_summary(可选):这将显示您用于训练AI模型的模型类型的结构。现在,您可以开始运行Python文件并开始训练。在开始训练时,你会看到如下结果:====================================================================================================================================================================================================Totalparams23,608,202Trainableparams:23,555,082Non-trainableparams:53,120______________________________________UsingEnhancedDataGenerationFound4000imagesbelongingto4classes.Found800imagesbelongingto4classes.JSONMappingforthemodelclassessavedtoC:\Users\User\PycharmProjects\FirstTraining\idenprof\json\model_class.jsonNumberofexperiments(Epochs):200Epoch1/1001/280[>.......................]-ETA:52s-loss:2.3026-acc:0.25002/280[>.............]-ETA:52s-loss:2.3026-acc:0.25003/280[>...........................]-ETA:52s-loss:2.3026-acc:0.2500.....................…………………………....,.......................................,279/280[=============================>..]-ETA:1s-loss:2.3097-acc:0.0625Epoch00000:savingmodeltoC:\Users\User\PycharmProjects\FirstTraining\idenprof\models\model_ex-000_acc-0.100000.h5280/280[=================================]-51s-loss:2.3095-acc:0.0600-val_loss:2.3026-val_acc:0.1000解释一下上面显示的细节:1.声明“JSONmappingformodelclassessavedtoC:\Users\User\PycharmProjects\FirstTraining\idenprof\json\model_class.json”表示modeltrainer已经为idenprof数据集保存了一个JSON文件,你可以使用它来识别其他使用自定义图像预测类的图像(说明可进一步阅读)2.第1/200行,表示网络首先是Target200training3.Row1/280[>……………………..]-ETA:52s-Loss:2.3026-acc:0.2500表示本次实验训练的batchesTimes4."Epoch00000:SavemodeltoC:\Users\User\PycharmProjects\FirstTraining\idenprof\models\model_ex-000_acc-0.100000.h5”行是指当前训练后保存的模型。ex_000代表这个阶段的实验,acc0.100000和valacc:0.1000代表本次实验后模型在测试图像上的准确率(准确率最大值为1.0)。此结果有助于了解可用于自定义图像预测的最佳性能模型。训练完AI模型后,您可以使用“CustomImagePrediction”类对达到最高精度的模型进行图像预测。如果您因为无法访问NVIDIAGPU而无法自己训练AI模型,出于本教程的目的,我们提供了在IdenProf数据集上训练的AI模型,您现在可以使用它来预测数据集中的10位专业人士任何位的新图像。经过61次训练实验,模型准确率超过79%。另外,如果您还没有自己完成培训,您也可以通过此链接下载idenprof模型的JSON文件。然后,您就可以使用经过训练的AI模型开始识别专业人员。请按照以下说明进行操作。接下来,创建另一个Python文件并为其命名,例如FirstCustomImageRecognition.py。复制上面下载的AI模型或者训练好的准确率最高的模型,粘贴到新建的python文件(例如FirstCustomImageRecognition.py)的文件夹中。同时复制您下载的或通过训练生成的JSON文件,并将其粘贴到与新Python文件相同的文件夹中。将属于IdenProf数据集中类别的任何专业人员的示例图像复制到与新python文件相同的文件夹中。然后复制下面的代码并将其放入一个新的python文件中:fromimageai.Prediction.CustomimportCustomImagePredictionimportosexecution_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)foreachPrediction,eachProbabilityinzip(predictions,probabilities):print(eachPrediction,":",复制代码eachProbability)请参阅下面的示例图像和结果。服务员:99.99997615814209厨师:1.568847380895022e-05法官:1.0255866556008186e-05是不是很简单!现在,让我们解释上面产生这个预测的代码。上面第一行和第二行代码导入ImageAI的CustomImagePrediction类,使用训练好的模型和pythonos类来预测和识别图像。第三行代码创建一个变量,该变量保存对包含python文件(本例中为FirstCustomImageRecognition.py)和您自己下载或训练的ResNet模型文件的路径的引用。在上面的代码中,我们在第四行创建了一个ImagePrediction()类的实例,然后在第五行通过调用.setModelTypeAsResNet()将预测对象的模型类型设置为ResNet,然后设置预测对象的模型路径到Artificial智能模型文件(idenprof_061–0.7933.h5)的路径,我们将其复制到第六行的项目文件夹文件夹中。在第七行中,我们设置了复制到第七行文件夹中的JSON文件的路径,在第八十行中,我们加载了模型。最后,我们对复制到文件夹中的图像进行预测,并将结果打印到命令行界面。到目前为止,您已经了解了如何使用ImageAI轻松训练您自己的人工智能模型,该模型可以预测图像中任何类型的对象或对象集。当然,除了以上教程,还要提一提TitaniumAIX,一款集计算机视觉和智能语音交互两大核心功能为一体的迷你人工智能硬件。基于IntelMovidiusAI加速芯片的强大计算支持,内置语音SDK和API,TitaniumAIX兼容AI模型资源平台——ModelPlay。ModelPlay面向全球开发者,内置多元化AI模型,支持GoogleEdgeTPU边缘人工智能计算芯片等更多AI硬件,助力开发者加速专业级开发。此外,ModelPlay还提供了完整易用的迁移学习模型训练工具和丰富的模型实例。基于谷歌开源的神经网络架构和算法,构建自迁移学习功能。用户无需编写代码,通过选择图片、定义模型和类别名称即可完成AI模型训练,实现易学易开发的人工智能。