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

作者: 钛灵创新 2020-01-07 11:30:50

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

图像识别的发展

几十年来,人工智能一直是一个研究领域,科学家和工程师一直在努力探索使机器和计算机更好地感知和理解我们的世界以正确采取行动并为人类服务的奥秘。 这项研究工作最重要的方面之一就是使计算机了解我们周围每天产生的视觉信息(图像和视频)。 使计算机感知和理解视觉信息的领域称为计算机视觉。

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

在1950年代至1980年代人工智能研究兴起的过程中,手动为计算机提供了有关如何识别图像,图像中的对象以及要注意的功能的说明。这种方法是传统算法,被称为专家系统,因为它们要求人类为必须识别的物体的每个唯一场景识别特征并在计算机可以理解的数学模型中表示这些特征。这涉及很多繁琐的工作,因为可以用成千上万种不同的方式表示对象,并且存在成千上万(甚至数百万)种不同的场景和对象,从而找到了最优且准确的数学模型来代表每个对象或场景的所有可能特征,并且对于所有可能的对象或场景而言,更多的工作将永远持续下去。

然后,在1990年代,引入了机器学习的概念,并开创了一个时代,在这个时代中,我们不需告诉计算机在识别图像和视频中的场景和对象时要注意什么,而可以设计算法,使计算机能够学习如何独自识别图像中的场景和物体,就像孩子通过探索来了解自己的环境一样。机器学习为计算机学习识别几乎我们想要的任何场景或物体开辟了道路。

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

随着功能强大的计算机(如GPU)和先进的深度学习算法用于图像识别的出现,如Alex Krizhevsky等人于2012年提出的AlexNet,Kaeming He等人于2015年提出的ResNet,Forrest于2016年提出的SqueezeNet Landola等人(由Gao Huang等人于2016年提出的DenseNet)仅举几例,就可以将许多图片(更像是计算机的图像书)放在一起,并定义一个人工智能模型来学习场景和物体的特征这些图片本身,并使用从学习过程中获得的知识来识别其后将遇到的场景或对象类型的所有其他实例。

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

为了训练一个可以识别你想要在图片中识别出什么内容的人工智能模型,传统上它涉及应用数学和深度学习库的大量专业知识,更不用说需要花费的时间和压力了。编写算法代码,然后将代码适配你的图像。这是我们提供解决方案的地方。

AI Commons的团队开发了一个python库,可让你训练一个人工智能模型,该模型只需5条简单的python代码就能识别出你希望图像识别的任何对象。 python库是ImageAI,它是一个库,旨在让学生,开发人员和研究人员具备各种专业知识,可以使用5至15条简单的代码行来构建具有最新计算机视觉功能的系统和应用程序。现在,让我们引导你创建可以识别您想要的任何东西的第一个人工智能模型。

要训练你的人工智能模型,你需要一个称为数据集的图像集合。 数据集包含您你要让你的人工智能模型识别的对象的成百上千的样本图像。 但是你不用担心! 我们不是说要你现在就去下载数千张图片,只是为了训练你的人工智能模型。 在本教程中,我们提供了一个名为IdenProf的数据集。

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

IdenProf(可识别专业人士)是一个数据集,其中包含11,000张10位不同专业人士的照片,人类可以通过穿着方式看到并识别他们的工作。 图片在此数据集中的专业人员类别如下:

  • Chef(厨师)
  • Doctor(医生)
  • Engineer(工程师)
  • Farmer(农民)
  • Firefighter(消防员)
  • Judge(法官)
  • Mechanic(机械师)
  • Pilot(飞行员)
  • Police(警察)
  • Waiter(服务员)

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

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

  1. idenprof//train//chef// 900 images of chefs  
  2. idenprof//train//doctor// 900 images of doctors  
  3. idenprof//train//engineer// 900 images of engineer  
  4. idenprof//train//farmer// 900 images of farmers  
  5. idenprof//train//firefighter// 900 images of firefighters  
  6. idenprof//train//judge// 900 images of judges  
  7. idenprof//train//mechanic// 900 images of mechanics  
  8. idenprof//train//pilot// 900 images of pilots  
  9. idenprof//train//chef// 900 images of chef  
  10. idenprof//train//police// 900 images of police  
  11. idenprof//train//waiter// 900 images of waiters  
  12. idenprof//test//chef// 200 images of chefs  
  13. idenprof//test//doctor// 200 images of doctors  
  14. idenprof//test//engineer// 200 images of engineer  
  15. idenprof//test//farmer// 200 images of farmers  
  16. idenprof//test//firefighter// 200 images of firefighters  
  17. idenprof//test//judge// 200 images of judges  
  18. idenprof//test//mechanic// 200 images of mechanics  
  19. idenprof//test//pilot// 200 images of pilots  
  20. idenprof//test//chef// 200 images of chef  
  21. idenprof//test//police// 200 images of police  
  22. idenprof//test//waiter// 200 images of waiters 

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

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

  • 首先,你必须通过此链接下载IdenProf数据集的zip。 你还可以在下面的链接中的IdenProf GitHub存储库中查看经过培训以识别职业的人工智能模型的所有详细信息和示例结果。

https://github.com/OlafenwaMoses/IdenProf

  • 因为训练人工智能模型需要高性能的计算机系统,所以我强烈建议你确保要用于此训练的计算机/笔记本电脑具有NVIDIA GPU。 另外,如果你提供免费的NVIDIA K80 GPU进行实验,则可以使用Google Colab进行此实验。
  • 然后,你必须安装ImageAI及其依赖项。

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

https://python.org

2)通过pip安装以下pip:

i. TensorFlow

  1. pip3 install tensorflow 

ii. OpenCV

  1. pip3 install opencv-python 

iii. Keras

  1. pip3 install keras 

iv. ImageAI

  1. pip3 install imageai --upgrade 
  • 用你想要给它的任何名称创建一个python文件,例如“ FirstTraining.py”。
  • 将IdenProf数据集的zip复制到Python文件所在的文件夹中。 然后将其解压缩到同一文件夹中。

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

  1. from imageai.Prediction.Custom import ModelTraining  
  2. model_trainer = ModelTraining()  
  3. model_trainer.setModelTypeAsResNet()  
  4. model_trainer.setDataDirectory("idenprof" 
  5. 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)。在第四行中,我们将数据目录(数据集目录)设置为你解压缩的数据集zip文件的文件夹。然后在第五行中,调用trainModel函数并指定以下值:

  • number_objects:这是指IdenProf数据集中不同类型的专业人员的数量。
  • num_experiments:这是模型训练器将研究idenprof数据集中的所有图像的次数,以实现最大的准确性。
  • Enhance_data(可选):告诉模型训练器在IdenProf数据集中创建图像的修改后的副本,以确保获得最大的准确性。
  • batch_size:这是指模型训练器将研究IdenProf数据集中的所有图像之前,将立即研究的图像集的数量。
  • Show_network_summary(可选):这将显示你用于训练人工智能模型的模型类型的结构。

现在,你可以开始运行Python文件并开始培训。培训开始时,你将看到以下结果:

  1. =====================================  
  2. Total params: 23,608,202  
  3. Trainable params: 23,555,082  
  4. Non-trainable params: 53,120  
  5. ______________________________________ 
  6. Using Enhanced Data Generation  
  7. Found 4000 images belonging to 4 classes.  
  8. Found 800 images belonging to 4 classes.  
  9. JSON Mapping for the model classes saved to C:\Users\User\PycharmProjects\FirstTraining\idenprof\json\model_class.json  
  10. Number of experiments (Epochs) : 200  
  11. Epoch 1/100  
  12. 1/280 [>.............................] - ETA: 52s - loss: 2.3026 - acc: 0.2500  
  13. 2/280 [>.............................] - ETA: 52s - loss: 2.3026 - acc: 0.2500  
  14. 3/280 [>.............................] - ETA: 52s - loss: 2.3026 - acc: 0.2500  
  15. ..............................,  
  16. ..............................,  
  17. ..............................,  
  18. 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  
  19. 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.第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代表此阶段的实验,而acc0.100000和valacc:0.1000代表本实验后模型在测试图像上的准确性(准确性的最大值为1.0)。此结果有助于了解可用于自定义图像预测的最佳性能模型。

训练完人工智能模型后,你可以使用“ CustomImagePrediction”类对获得最高准确性的模型进行图像预测。

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

万一由于无法访问NVIDIA GPU而无法自行训练人工智能模型,就本教程而言,我们提供了我们在IdenProf数据集上训练的人工智能模型,你可以使用它现在可以预测数据集中10位专业人员中任何一位的新图像。经过61次训练实验,该模型的准确率超过79%。另外,如果你自己还没有进行培训,还可以通过此链接下载idenprof模型的JSON文件。然后,你准备好使用受过训练的人工智能模型开始认可专业人员。请按照以下说明进行操作。

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

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

  1. from imageai.Prediction.Custom import CustomImagePredictionimport os  
  2. execution_path = os.getcwd()  
  3. prediction = CustomImagePrediction()prediction.setModelTypeAsResNet()prediction.setModelPath("idenprof_061-0.7933.h5")prediction.setJsonPath("idenprof_model_class.json")prediction.loadModel(num_objects=10)  
  4. predictions, probabilities = prediction.predictImage("image.jpg", result_count=3)  
  5. for eachPrediction, eachProbability in zip(predictions, probabilities): print(eachPrediction , " : " , eachProbability) 

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

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

waiter : 99.99997615814209

chef : 1.568847380895022e-05

judge : 1.0255866556008186e-05

是不是很简单!现在,让我们解释上面产生此预测结果的代码。

上面的第一和第二行代码导入ImageAI的CustomImagePrediction类,以使用经过训练的模型和python os类来预测和识别图像。第三行代码创建一个变量,该变量保存对包含python文件(在本示例中为FirstCustomImageRecognition.py)和你自己下载或自己训练的ResNet模型文件的路径的引用。

在上面的代码中,我们在第四行中创建了ImagePrediction()类的实例,然后通过在第五行中调用.setModelTypeAsResNet()将预测对象的模型类型设置为ResNet,然后设置模型路径预测对象到人工智能模型文件(idenprof_061–0.7933.h5)的路径,我们将其复制到第六行的项目文件夹文件夹中。

在第七行中,我们设置复制到第七行中的文件夹的JSON文件的路径,并在第八十行中加载模型。最后,我们对复制到文件夹中的图像进行预测,然后将结果打印到命令行界面。

到目前为止,你已经学习了如何使用ImageAI轻松训练自己的人工智能模型,该模型可以预测图像中的任何类型的对象或对象集。

当然,除了以上教程,笔者顺便提一下钛灵AIX,一款集计算机视觉与智能语音交互两大核心功能为一体的迷你人工智能硬件。基于 Intel Movidius AI加速芯片的强大算力支持与内置的语音 SDK 和 API,钛灵 AIX可以兼容AI模型资源平台——Model Play。Model Play面向全球开发者,内置多样化AI模型,更是支持谷歌 Edge TPU边缘人工智能计算芯片以及更多AI硬件,可以帮助开发者加速专业级开发。

此外,Model Play提供完整易用的迁移学习模型训练工具及丰富模型实例。基于Google开源神经网络架构及算法,构建自主迁移学习功能,用户无需写代码,通过选择图片、定义模型和类别名称即可完成AI模型训练,实现人工智能的易学易开发。

图像识别 AI 人工智能
上一篇:2020年机器人与无人机之7大预测 下一篇:秒杀Deepfake!微软北大提出AI换脸工具和假脸检测工具
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

AI如何改变人类社会的各种业务模式?

在过去的20年中,一些愤世嫉俗的人一直担心,人工智能(AI)的发展会破坏企业结构,导致大量失业和财富不平等加剧。下一个十年将是AI的十年。我们期望看到什么变化?答案是基本流程的转变和减少。

CDA数据分析师 ·  22h前
新冠疫情动态:十大创新,助力对抗COVID-19

从感染快速检测到3D打印解决方案,全球各地的科技企业正携手奋进,希望找到足以战胜新冠病毒大流行的突破性方法。目前有哪些创新成果值得关注?本文将带大家一探究竟。

佚名 ·  1天前
全球首个翻译引擎进化归来 “细节狂魔”搞定方言

最近,一款在线机器翻译软件在日本大火。这款翻译软件名叫DeepL,大火的原因正是因为它工作太负责了,翻译得太过准确,在日本引起了热议。

刘俊寰 ·  1天前
应用程序管理中的AI/ML用例

基于人工智能的操作 (AIOps) 是人工智能和传统 AM/IM 操作的融合。与所有其他领域一样,AI 将对运营管理产生重大影响。

佚名 ·  1天前
学不动了?麻省理工 CS 和 EE 网课开放了

疫情之下,麻省理工学院校长在 3 月上旬曾发通知,其中提到把本剩余课程全部转移到网上。

佚名 ·  1天前
科学家研发出“读心术”,直接将脑电波翻译成文本,错误率低至3%

美国加州大学旧金山分校的科学家,已经训练出一种算法,可以直接将受试者的脑电波实时翻译成句子,错误率仅为 3% 。

张路 ·  1天前
5G风头正盛 人工智能要被“冷落”了?

2018年,5G的热度开始迅速提升。当年开始,我国展开了5G基站建设,并在全国十多个城市开始进行5G测试和试运营。到了2019年,随着各国纷纷宣布开启5G商用,5G的热度再次攀升,成为了通信、科技领域当之无愧的“热点王”。相比之下,人工智能似乎都要稍逊一筹。

佚名 ·  2天前
破解机器学习的误区——常见机器学习神话究竟从何而来?

Forrester Research最近发布了一份名为“ 粉碎机器学习的七个神话”的报告。在其中,作者警告说:“不幸的是,一些对机器学习项目做出重要决策的企业领导者,普遍存在机器学习的误解。”

CDA数据分析师 ·  2天前
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载