ImageAI的介绍(1)

昨天看见一个关于叫做ImageAIpython库,说真的,因为真的太简单粗暴了,相比于用一些其它的深度学习框架,这个真的是太容易上手了,简单到我到不需要介绍。以为实在是太好用了,所以在这里给小伙伴们介绍一下。

PS:忘了介绍它可以干啥了,ImageAI支持最先进的机器学习算法,用于图像预测,自定义图像预测,物体检测,视频检测,视频对象跟踪和图像预测训练。ImageAI目前支持使用在ImageNet-1000数据集上训练的4种不同机器学习算法进行图像预测和训练。ImageAI还支持使用在COCO数据集上训练的RetinaNet进行对象检测,视频检测和对象跟踪。 最终,ImageAI将为计算机视觉提供更广泛和更专业化的支持,包括但不限于特殊环境和特殊领域的图像识别。

(一)环境的配置

说真的环境的配置并不难,但是我在上面还是走了一些弯路,废话不多说,我们开始环境的配置。环境的配置我还推荐使用anaconda,它可以让你方便的管理你的环境,使库的安装与升级变得非常简单,基本上大都数的库,你都可以在anaconda navigator找到并安装。

那么,你需要安装那些环境呢

  1. python 我这里使用的是python3.7.7
  2. opencv 这个当然少不了,这里我用的是opencv 3.4.2
  3. tensorflow 我这里用的是tensorflow 1.15.0
  4. keras 我这里用的是2.3.1
  5. pillow 我这里用的是7.1.2
  6. matplotlib 我这里用的是3.1.3
  7. ImageAI 这个需要pip安装,你可以pip3 install https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl,或者下载Python Wheel imageai-2.0.1-py3-none-any.whl 安装文件并在命令行中指定安装文件的路径来安装ImageAI:pip3 install C:\User\MyUser\Downloads\imageai-2.0.1-py3-none-any.whl

Python Wheel imageai-2.0.1-py3-none-any.whl的百度网盘下载地址
提取码:uknd

这里还用一些其它的库(Numpy,SciPy ,h5py)我没用说,因为我在用anaconda navigator安装python和opencv时,这几个库就一起被安装了。还有就是,我一开始tensorflow用的是2.0以上的,但运行程序就会报错,所我建议如果你想玩一下这个的话,就安装和我一样的版本(但这并不代表其他版本不行)。

还有就是,我强烈建议使用GPU,因为视频对象检测是非常消耗硬件资源的任务,所以我们建议你使用安装了 NVIDIA GPU 和 GPU 版 Tensorflow ,你用CPU训练和跑程序和别人高性能的GPU比起来就是人家几小时,你几天甚至几星期,几个月都可能,还有可能搞坏你的电脑。

当然以上所有的环境你都可以pip,如果遇到啥问题,你可以私信我,但不保正一定可以帮你解决

(二)使用ImageAI预测图片

这里我们先不讲如何训练模型,我们先体验一下。

首先,我们要先下载已经训练模型文件
ResNet模型下载地址

下面我们要实现的功能是,识别一张图片上的物体,并把它们的物体名称打印出来

上代码(代码不是我写的,官方demo):

from imageai.Prediction import ImagePrediction
import os
#上面的代码导入了ImageAI库和 python os 类。
execution_path = os.getcwd()
#上面的代码获取包含python文件的文件夹路径(在本例中python文件为FirstPrediction.py)。

prediction = ImagePrediction()
prediction.setModelTypeAsResNet()
prediction.setModelPath(os.path.join(execution_path, "resnet50_weights_tf_dim_ordering_tf_kernels.h5"))
prediction.loadModel()
'''
在上面的代码中,我们对ImagePrediction()类进行了实例化,第二行
调用了.setModelTypeAsResNet()函数将预测对象的模型类型设置为ResNet,第三行
设置了模型文件(resnet50_weights_tf_dim_ordering_tf_kernels.h5)的路径,第四行载入模型。
'''

predictions, probabilities = prediction.predictImage(os.path.join(execution_path, "people.jpg"), result_count=5 )
'''
在上面的代码中,我们定义了两个变量,他们的值将由所调用的函数
predictImage()返回,其中predictImage()函数接受了两个参数,一个是指
定要进行图像预测的图像文件路径,另一个参数result_count用于设置
我们想要预测结果的数量(该参数的值可选1 to 100)。最后,predictImage()函数将返回预测的
对象名和相应的百分比概率(percentage_probabilities)。
'''

for eachPrediction, eachProbability in zip(predictions, probabilities):
    print(eachPrediction + " : " + eachProbability)
'''
在上面的代码获取了predictions变量中的每个对象名,
并从probabilities变量中获取相应的百分比概率,最后将两者的结果打印到终端。
'''

别看这么一大串,其实起作用的,就几行,基本上都封装好了。说真的,如果开发者愿意,除去开始导入库的那几句,它完全可以一句解决
在这里插入图片描述
上面是使用ResNet对图片进行预测,你还可以使用DenseNet,InceptionV3 ,SqueezeNet对图片进行预测。你只需要修改prediction.setModelTypeAsResNet(),将后面的ResNet改为你接下来想要使用的模型名字(目前只能是上面3个),你还需修改的是prediction.setModelPath(os.path.join(execution_path, “resnet50_weights_tf_dim_ordering_tf_kernels.h5”)),就是这行代码加粗的部分,将其改为你想要的模型文件的名字(你下载模型的文件就是模型的名字),下面我会贴上模型文件的下载地址。
SqueezeNet模型下载地址
InceptionV3模型下载地址
DenseNet模型下载地址
如果有小伙伴文件下载不下来,可以私信找我

还有的就是,你还可以设置图片检测的速度,你只需要将这一行prediction.loadModel()进行修改,将其改为prediction.loadModel(prediction_speed=“fast”),其中加粗的部分可以改为normal, fast, faster , fastest,默认为normal

ImageAI还可以设置多线程,感兴趣的小伙伴自行百度吧

注:ImageAI是一个python库,旨在使开发人员能够使用简单的几行代码构建具有包含深度学习和计算机视觉功能的应用程序和系统。 这个AI Commons项目https://commons.specpal.science 由Moses Olafenwa和John Olafenwa开发和维护

(三)备注

考虑到小伙伴可能下载不下来,我在这里还是贴上百度网盘的地址吧

ResNet模型百度下载地址
提取码:6vi0

SqueezeNet模型百度下载地址
提取码:nzrq

InceptionV3模型百度下载地址
提取码:f70u

DenseNet模型百度下载地址
提取码:7t33

虽然百度下载的慢,但也只能这样了

(四)结语

如果有什么错误的地方,还请大家批评指正,最后,希望小伙伴们都能有所收获。

在这里插入图片描述

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我会尽力回答你的问题。关于Python实现五子棋AI,我可以帮你提供一些思路和参考。 首先,实现五子棋AI需要分为两个部分:界面实现和AI算法实现。在这里,我将为你介绍如何实现五子棋的界面部分。 1. 界面设计 界面设计可以使用Python的Tkinter模块,这是Python自带的GUI模块,功能强大,易于使用。以下是一个简单的五子棋界面实现示例: ```python from tkinter import * from tkinter import messagebox class ChessBoard: def __init__(self, master): self.master = master self.master.title("五子棋") self.master.geometry("500x600") self.canvas = Canvas(self.master, width=500, height=500, bg="white") self.canvas.pack() self.draw_board() self.canvas.bind("<Button-1>", self.click) def draw_board(self): for i in range(15): self.canvas.create_line(50, 50+i*30, 470, 50+i*30, width=2) self.canvas.create_line(50+i*30, 50, 50+i*30, 470, width=2) def click(self, event): x = round((event.x-50)/30) y = round((event.y-50)/30) if x<0 or x>14 or y<0 or y>14: return self.canvas.create_oval(50+x*30-13, 50+y*30-13, 50+x*30+13, 50+y*30+13, fill="black") self.check_win(x, y) def check_win(self, x, y): pass root = Tk() board = ChessBoard(root) root.mainloop() ``` 2. 界面效果 运行上述代码,可以得到一个简单的五子棋界面。点击棋盘上的某个点,可以在该位置落子。 ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1262073/1622610867017-9c6b3d4d-1aa5-40b0-a5ac-9a2f8a5e5c3f.png#clientId=u7e42b0b4-5b1a-4&from=paste&height=300&id=u7f9ed3a1&margin=%5Bobject%20Object%5D&name=image.png&originHeight=600&originWidth=500&originalType=binary&ratio=1&size=20197&status=done&style=none&taskId=u8bfe940d-9d4a-4c4c-8dd8-5afd4e0ed8c&width=250) 接下来,你需要实现五子棋AI算法,让它能够在棋盘上与玩家进行对弈。如果有需要,欢迎继续向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值