本篇文章给大家分享的是有关如何使用代码能实现AI图像识别,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
创新互联基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业服务器托管报价,主机托管价格性价比高,为金融证券行业服务器托管雅安,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
随着性能强大的计算机芯片比如NVIDIA GPU和顶尖的图像识别深度学习算法的出现,比如Alex Krizhevsky等在2012年创造的AlexNet 算法、Kaeming He等在2015年创造的ResNet 算法、Forrest Landola等在2016年创造的SqueezeNet 算法、Gao Huang等在2016年创造的DenseNet 算法等,让自定义人工智能模型通过学习一组图片中的事物进而识别其他同类型事物成为可能。
训练一个可以识别图片中事物的人工智能模型涉及到很多应用数学和深度学习库的专业知识,更别说还要花费大量时间和承受巨大压力去写实现这种算法的代码以及使其和图像相匹配。这就是我们要解决的问题所在。
我们在AI Common的小组已经建立了一个只要五行代码就可以训练人工智能模型来识别任何物体的Python库,这个python库叫作ImageAI。建立这个库是为了让学生、开发者、研究人员等不同专业水平的人只用五行代码就能建立起拥有最顶尖的计算机视觉功能的系统和应用。现在,让我们开始建立你的第一个图像识别人工智能模型。
既然你已经明白如何准备用于训练人工智能模型的图片数据集,我们将继续指导你使用ImageAI训练一个人用于识别职业的工智能模型。
首先你必须通过这个链接下载IdenProf 数据集压缩包。你也可以用下面的链接查看用于识别职业的人工智能模型的所有细节和样本结果。
因为训练人工智能模型需要高性能计算机系统,我强烈建议你确保用来做模型训练的计算机拥有NVIDIA GPU。你也可以使用Google Colab(谷歌实验室)来做这次实验,它可以提供一个免费的NVIDIA K80 GPU。
接下来你必须安装ImageAI 和它的依赖模块。
1)从Python官网下载和安装Pyhton3
https://python.org
2)使用pip安装如下依赖包
i. Tensorflow
pip install tensorflow
ii. Numpy
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 h6py
viii. Keras
pip install keras
ix. ImageAI
pip3 installhttps://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.2/imageai-2.0.2-py3-none-any.whl
新建一个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 (可选) :用来告诉模型训练器创建数据集中修改好图片的副本来确保获得最大准确率;
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.h6
280/280 [==============================] - 51s - loss: 2.3095 - acc: 0.0600 - val_loss: 2.3026 - val_acc: 0.1000
让我们详细解释下以上内容:
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.h6这行表示当前训练后保存的模型。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.h6") 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)
请看如下的样本图片和结果。
是不是很简单!现在让我们解释上面产生这个预测结果的代码。
第一和第二行代码分别导入了ImageAI中用于图像识别的CustomImagePrediction 类(自定义图像预测类)和os类。第三行代码创建了一个变量并赋值了一个路径,该路径下包含Python文件(比如FirstCustomImageRecognition.py文件)和下载或训练的ResNet模型文件。
以上,我们用第4行代码创建了一个ImagePrediction()类实例,然后在第5行代码通过调用.setModelTypeAsResNet() 来设置预测对象的模型类型为ResNet 。然后在第6行,我们设置模型路径为拷贝到项目文件夹的人工智能模型路径(idenprof_061–0.7933.h6)。在第7行,我们设置JSON文件路径,在第8行加载模型。最后进行图像预测并打印结果到命令行。
以上就是如何使用代码能实现AI图像识别,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。