图像识别的发展

神操作!只需5行代码就能做出一个图像识别AI_模子_人工智能 文字写作

几十年来,人工智能一贯是一个研究领域,科学家和工程师一贯在努力探索使机器和打算机更好地感知和理解我们的天下以精确采纳行动并为人类做事的奥秘。
这项研究事情最主要的方面之一便是使打算机理解我们周围每天产生的视觉信息(图像和***)。
使打算机感知和理解视觉信息的领域称为打算机视觉。

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

然后,在1990年代,引入了机器学习的观点,并首创了一个时期,在这个时期中,我们不需见告打算机在识别图像和***中的场景和工具时要把稳什么,而可以设打算法,使打算机能够学习如何独自识别图像中的场景和物体,就像孩子通过探索来理解自己的环境一样。
机器学习为打算机学习识别险些我们想要的任何场景或物体开辟了道路。

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

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

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

要演习你的人工智能模型,你须要一个称为数据集的图像凑集。
数据集包含您你要让你的人工智能模型识别的工具的成百上千的样本图像。
但是你不用担心!
我们不是说要你现在就去***数千张图片,只是为了演习你的人工智能模型。
在本教程中,我们供应了一个名为IdenProf的数据集。

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

· Chef(厨师)

· Doctor(年夜夫)

· Engineer(工程师)

· Farmer(农人)

· Firefighter(消防员)

· Judge(法官)

· Mechanic(机器师)

· Pilot(翱翔员)

· Police(警察)

· Waiter(做事员)

该数据集被分为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存储库中查看经由培训以识别职业的人工智能模型的所有详细信息和示例结果。

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

pip3 install tensorflow

ii. OpenCV

pip3 install opencv-python

iii. Keras

pip3 install keras

iv. ImageAI

pip3 install imageai --upgrade

·用你想要给它的任何名称创建一个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)。
在第四行中,我们将数据目录(数据集目录)设置为你解压缩的数据集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.第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”类对得到最高准确性的模型进行图像预测。

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

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

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

from imageai.Prediction.Custom import CustomImagePredictionimport 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()类的实例,然后通过在第五行中调用.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模型演习,实现人工智能的易学易开拓。