5行代码实现AI图像识别,拥有初步内容安全素质

电脑杂谈  发布时间:2019-08-24 14:02:51  来源:网络整理

图像融合算法代码_sift算法实现图像拼接_图像识别算法实现代码

在这篇文章中,我们将详细介绍人工智能领域,特别是计算机视觉领域中遇到的挑战图像识别算法实现代码,这些挑战的现有解决办法以及能否快捷地使用很多方式。

人工智能作为一个科学和项目的探究领域已经有数十年的历史了。它试图解开机器和计算机认知世界的真谛,以此来更好地为人类工作服务。这个探究工作最重要的个别是促使计算机理解我们周边每天造成的视觉信息(图像和视频)。这个使得计算机认知理解视觉信息的领域就是所谓的计算机视觉。

1 V-rl7xDCqZUBc98Z4QRhGQ.jpeg

1 V-rl7xDCqZUBc98Z4QRhGQ.jpeg

在人工智能兴起的二十世纪五十年代到八十年代,通过自动给计算机输入指令来辨别图片中的事物以及应该关注的特点。这种方式使用特色算法,要求使用者必须辨识物体在每一个独特情景中的特点,并用计算机可以理解的物理建模表示很多特点,因此被称为专家平台。这涉及到好多繁琐的工作,因为一个物体的表示方式有成百上千种,独立存在的不同场景和对象也是数千种甚至数百万种,找到改进准确的物理建模来表示每个物体和画面以及它们所有可能的特点是一个无止境的工作。

到了二十世纪九十年代,机器学习的概念被强调,它推动了计算机自主甄别代替手工输入指令识别图像的新时代。就像一个孩子借助学习来了解他/她周边的环境,我们让计算机借助算法来自主学习思维事物。也就是说,机器学习开辟了计算机学习思维事物的新道路。

1 V16jX9vZeYthxAQiaTRSBw.jpeg

1 V16jX9vZeYthxAQiaTRSBw.jpeg

随着功耗强大的计算机芯片包括NVIDIA GPU和顶级的图像识别深度学习算法的出现,比如Alex Krizhevsky等在2012年创造的AlexNet 算法、Kaeming He等在2015年创造的ResNet 算法、Forrest Landola等在2016年创造的SqueezeNet 算法、Gao Huang等在2016年创造的DenseNet 算法等,让自定义人工智能模型通过学习一组图片中的事物能够辨识其他同类型事物作为可能。

训练一个可以分辨图片中事物的人工智能模型涉及到好多应用数学和深度学习库的常识,更别说需要耗费大量时间和承受很大压力去写实现这种算法的代码以及使其和图像相匹配。这就是我们要解决的难题所在。

我们在AI Common的小组已经制定了一个只要五行代码就可以练习人工智能模型来辨别任何物体的Python库,这个python库叫作ImageAI。建立这个库是为了让教师、开发者、研究员工等不同水平的人只用五行代码能够创建起拥有最顶级的计算机视觉功能的平台和应用。现在,让我们起初建立你的第一个图像分辨人工智能模型。

1 BZB3eUcXb6atYuxJ6npVeQ.jpeg

1 BZB3eUcXb6atYuxJ6npVeQ.jpeg

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

图像融合算法代码_sift算法实现图像拼接_图像识别算法实现代码

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 waiter

既然你将要知道能否准备用于训练人工智能模型的图片数据集,我们将继续指导你使用ImageAI训练一个人用于辨识职业的工智能建模。

首先你需要借助这个链接下载IdenProf 数据集压缩包。你也可以用上面的链接查看用于鉴别职业的人工智能模型的所有细节和样本结果。

因为训练人工智能模型应该高性能计算机平台,我强烈建议你保证用来做建模练习的计算机拥有NVIDIA GPU。你也可以使用Google Colab(谷歌实验室)来做现在试验,它可以提供一个免费的NVIDIA K80 GPU。

接下来你需要调试ImageAI 和它的依赖组件。

1)从Python官网下载和安装Pyhton3

2)使用pip安装如下依赖包

i.Tensorflow

pip install tensorflow

ii.Numpy

图像识别算法实现代码_sift算法实现图像拼接_图像融合算法代码

pip install numpy

iii.SciPy

pip install scipy

iv.OpenCV

pip install opencv-python

v.Pillow

pip install pillow

vi.Matplotlib

pip install matplotlib

vii.H5py

pip install h5py

viii.Keras

pip install keras

ix.ImageAI

pip3 install

新建一个python文件,比如“FirstTraining.py”,将IdenProf数据集压缩包拷贝到你的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(这里有4个模型种类可供选择,分别为SqueezeNet, ResNet, InceptionV3 和DenseNet)。在第四行,设置数据目录(数据集目录)为你解压的数据集文件夹。然后第五行,我们读取trainModel 函数,并给下列参数句柄:

number_objects :数据集中不同职业的分类数;

num_experiments :为了获取最大准确率,模型学习数据集中所有图片的数量;

Enhance_data (可选) :用来告诉模型训练器创建数据集中设置好图片的副本来保证拿到最大准确率;

图像识别算法实现代码_sift算法实现图像拼接_图像融合算法代码

batch_size:直到学习完所有照片前,训练器一次学习的截图数;

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

sift算法实现图像拼接_图像融合算法代码_图像识别算法实现代码

让我们具体解释下以下内容:

1.“JSON Mapping for the model classes saved to C:\Users\User\PycharmProjects\FirstTraining\idenprof\json\model_class.json”这段话表示模型训练器将要被储存为JSON文件,可以使用自定义图像分析类来辨别其他照片(后面将对其进一步解释)。

2.Epoch 1/200这行表示网络执行了目标值200个训练的第一个训练。

3.1/280 [>………………………..]—ETA: 52s—loss: 2.3026—acc: 0.2500 这行表示当前试验已经训练的批次。

4.Epoch 00000: saving model to C:\Users\User\PycharmProjects\FirstTraining\idenprof\models\model_ex-000_acc-0.100000.h5这行表示当前训练后保存的建模。ex_000表示当前阶段的试验,acc0.100000和valacc表示当前实验后的建模准确率(最高准确率为1.0)。这个结果帮助我们了解哪个图像分析建模是体现最好的。训练完模型后,你可以使用准确率最高模型的“CustomImagePrediction”类进行图片分析。

以防你缺乏NVIDIA GPU而能够进行人工智能模型训练,出于本教程的目标,我们提供了一个用IdenProf数据集训练好的人工智能模型图像识别算法实现代码,你可以用它来进行数据集中图片的职业分析。

这个建模在训练61次后将要获得了79%的准确率。点击此链接下载该模型。

同样,如果你没有进行建模练习,通过链接下载IdenProf模型的JSON文件。然后,你就可以跟随如下指令,使用建模进行图像识别了。

下一步,创建一个Python文件并命名比如FirstCustomImageRecognition.py ,拷贝你下载的人工智能模型或者你训练的准确率最高的建模,将其复制到你新建Python文件所在目录。同样拷贝下载的或者训练产生的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)

请看如下的样本照片和结果:

1 kgFf3orScs_NwQyspLslAQ.jpeg

1 kgFf3orScs_NwQyspLslAQ.jpeg

Waiter(服务员):99.99997615814209

Chef(厨师):1.568847380895022e-05

Judge(法官):1.0255866556008186e-05

是不是很简单!现在让我们解释下面形成这个分析结果的代码。

第一和第二行代码分别导出了ImageAI中用于图像分辨的CustomImagePrediction 类(自定义图像分析类)和os类。第三行代码构建了一个变量并数组了一个路径,该模式下包括Python文件(比如FirstCustomImageRecognition.py文件)和下载或训练的ResNet模型文件。

以上,我们用第4行代码构建了一个ImagePrediction()类示例,然后在第5行代码借助读取.setModelTypeAsResNet() 来修改分析对象的建模类型为ResNet 。然后在第6行,我们修改模型模式为拷贝到项目文件夹的人工智能模型路径(idenprof_061–0.7933.h5)。在第7行,我们修改JSON文件模式,在第8行加载模型。最后进行图像分析并打印结果到命令行。

自此,你已经学会了如何使用ImageAI 便捷地练习你的人工智能模型,用于分析图片中的对象或对象集合。

你可以在官方GitHub资源库找到所有使用ImageAI 训练自定义人工智能模型以及其他包括在ImageAI 中的计算机视觉特点的详尽信息和文档:

本文作者:Moses Olafenwa,DeepQuest AI的联合创始人和CEO;译者:徐驰骋。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-120416-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...