ImageAI的介绍(1)
昨天看见一个关于叫做ImageAIpython库,说真的,因为真的太简单粗暴了,相比于用一些其它的深度学习框架,这个真的是太容易上手了,简单到我到不需要介绍。以为实在是太好用了,所以在这里给小伙伴们介绍一下。
PS:忘了介绍它可以干啥了,ImageAI支持最先进的机器学习算法,用于图像预测,自定义图像预测,物体检测,视频检测,视频对象跟踪和图像预测训练。ImageAI目前支持使用在ImageNet-1000数据集上训练的4种不同机器学习算法进行图像预测和训练。ImageAI还支持使用在COCO数据集上训练的RetinaNet进行对象检测,视频检测和对象跟踪。 最终,ImageAI将为计算机视觉提供更广泛和更专业化的支持,包括但不限于特殊环境和特殊领域的图像识别。
第一节:ImageAI环境的配置和初体验
- (一)环境的配置
- (二)使用ImageAI预测图片
- (三)备注
- (四)结语
(一)环境的配置
说真的环境的配置并不难,但是我在上面还是走了一些弯路,废话不多说,我们开始环境的配置。环境的配置我还推荐使用anaconda,它可以让你方便的管理你的环境,使库的安装与升级变得非常简单,基本上大都数的库,你都可以在anaconda navigator找到并安装。
那么,你需要安装那些环境呢
- python 我这里使用的是python3.7.7
- opencv 这个当然少不了,这里我用的是opencv 3.4.2
- tensorflow 我这里用的是tensorflow 1.15.0
- keras 我这里用的是2.3.1
- pillow 我这里用的是7.1.2
- matplotlib 我这里用的是3.1.3
- 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
虽然百度下载的慢,但也只能这样了
(四)结语
如果有什么错误的地方,还请大家批评指正,不过错了也没啥关系,反正也没什么人看
最后,希望小伙伴们都能有所收获。码字不易,喜欢的话,关注一波在走吧
ImageAI的介绍(1)相关推荐
- 简单介绍互联网领域选择与营销方法
在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...
- 常用开源协议介绍以及开源软件规范列表
1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...
- python:Json模块dumps、loads、dump、load介绍
20210831 https://www.cnblogs.com/bigtreei/p/10466518.html json dump dumps 区别 python:Json模块dumps.load ...
- pytorch学习笔记(九):PyTorch结构介绍
PyTorch结构介绍 对PyTorch架构的粗浅理解,不能保证完全正确,但是希望可以从更高层次上对PyTorch上有个整体把握.水平有限,如有错误,欢迎指错,谢谢! 几个重要的类型 和数值相关的 T ...
- Python字节码介绍
了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...
- Pytest - 使用介绍
1. 概述 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手,文档丰富: 2.支持参数化,可以细粒度地控制要测试的测试用例: 3.能够支持简单的单 ...
- 遗传算法的简单介绍以及模式定理的简单证明
遗传算法 遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...
- k8s核心组件详细介绍教程(配超详细实例演示)
本文实验环境基于上篇文章手把手从零开始搭建k8s集群超详细教程 本文根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps学习总结而来 k8s核心组件介绍 1 ...
- Tensorrt一些优化技术介绍
Tensorrt一些优化技术介绍 Figure 1. A quantizable AveragePool layer (in blue) is fused with a DQ layer and a ...
- 网路摄像头技术参数介绍
网路摄像头技术参数介绍 星光级图像传感器 4MP (2592 × 1520) @30fps SmartH.265 / H.265+ / H.265 / SmartH.264 / H.264+ / H. ...
最新文章
- 多服务器session共享之memcache共享安装和实现篇(apache+php-windows)
- 软件测试工程师们,今年的年终奖你想拿多少?
- JavaScript: 设置Cookie
- 多线程环境中安全使用集合API(含代码)
- 【Java】从键盘输入字符串和数字
- 0109互联网新闻 | 微信推智言对话系统“小微”,接入第三方生态;华为发布首款数据中心交换机...
- 中国已消失的九所世界级大学
- python数据结构-栈和队列的实现
- 入门机器学习,开启人工智能大门!
- c++ 智能指针用法详解
- 【Spring Cloud中文社区】正式启动
- linux 安装log4j,Log4j 安装
- 黑客攻击_我如何开始黑客攻击
- 基于Java毕业设计大学生兼职网站源码+系统+mysql+lw文档+部署软件
- QCustomPlot系列 进行框选放大(二)
- 不要成为反DDoS攻击的局外人
- 关于关联规则的一些资料
- PLC需要有什么样的基础才能学?
- Substance Painter材质导入unity渲染通道配置更改
- 获取 Java list长度_String,数组,list集合长度的使用
热门文章
- 【软件工程】——项目开发计划
- 正则表达式判断手机号码
- rf扫描枪_RF枪_RF手持扫描枪_RF手持机
- PCB设计流程一原理图
- PCB 设计流程(allegro 为例)
- ADC 外电阻分压种种
- 74HC595在【8x8LED点阵】中的运用
- PHP刷步数,微信支付宝修改步数刷步源码/带卡密功能PHP程序
- 如何在ppt中生成柱状图_Excel表格数据如何生成柱状图等-EXCEL如何制作柱状图?...
- Yann LeCun、Yoshua Bengio和Geoffrey Hinton的联合综述《Deep Learning》翻译