拓端tecdat|使用Python中的ImageAI进行对象检测
原文链接:http://tecdat.cn/?p=8578
介绍
对象检测是一种属于计算机视觉领域的技术。它处理识别和跟踪图像和视频中存在的对象。物体检测具有多种应用,例如面部检测,车辆检测,行人计数,自动驾驶汽车,安全系统等。
对象检测的两个主要目标包括:
- 识别图像中存在的所有对象
- 筛选出关注的对象
在本文中,您将看到如何在Python中执行对象检测。
用于对象检测的深度学习
深度学习技术已被证明可解决各种物体检测问题。
我们将了解ImageAI的确切含义以及如何使用它执行对象检测。
图像AI
ImageAI是一个Python库,旨在使开发人员能够使用几行简单的代码来构建具有独立的深度学习和计算机视觉功能的应用程序和系统。ImageAI包含Python实现的几乎所有最新的深度学习算法,例如TinyYOLOv3。
ImageAI利用了几种脱机工作的API-它具有对象检测,视频检测和对象跟踪API,无需访问互联网即可调用它们。ImageAI利用了预先训练的模型,可以轻松地进行定制。
设置环境
要使用ImageAI,您需要安装一些依赖项。第一步是在计算机上安装Python。
TensorFlow
$ pip install tensorflow
OpenCV
$ pip install opencv-python
$ pip install keras
$ pip install imageAI
现在下载TinyYOLOv3模型文件,该文件包含将用于对象检测的分类模型。
使用ImageAI执行对象检测
现在,让我们看看如何实际使用ImageAI库。我将逐步解释如何使用ImageAI构建第一个对象检测模型。
第1步
我们的第一个任务是创建必要的文件夹。对于本教程,我们需要以下文件夹:
- 对象检测:根文件夹
- 模型:存储预先训练的模型
- 输入:存储要在其上执行对象检测的图像文件
- 输出:存储带有检测到的对象的图像文件
创建文件夹后,Object detection
文件夹应包含以下子文件夹:
├── input
├── models
└── output3 directories, 0 files
第2步
打开用于编写Python代码的首选文本编辑器,然后创建一个新文件detector.py
。
第三步
ObjectDetection
从ImageAI库导入类。
from imageai.Detection import ObjectDetection
第四步
现在,您已经导入了imageAI库和ObjectDetection
该类,下一步是创建该类的实例ObjectDetection
,如下所示:
detector = ObjectDetection()
第5步
让我们从输入图像,输出图像和模型指定路径。
model_path = "./models/yolo-tiny.h5"
input_path = "./input/test45.jpg"
output_path = "./output/newimage.jpg"
第6步
我们现在可以从该类中调用各种函数。该类包含以下功能调用预先训练模式:setModelTypeAsRetinaNet()
,setModelTypeAsYOLOv3()
,和setModelTypeAsTinyYOLOv3()
。
就本教程而言,我将使用预训练的TinyYOLOv3
模型,因此,我们将使用该setModelTypeAsTinyYOLOv3()
函数加载模型。
detector.setModelTypeAsTinyYOLOv3()
步骤7
接下来,我们将调用函数setModelPath()
。此函数接受一个字符串,其中包含预训练模型的路径:
detector.setModelPath(model_path)
步骤8
此步骤loadModel()
从detector
实例中调用函数。它使用setModelPath()
类方法从上面指定的路径加载模型。
detector.loadModel()
步骤9
要检测图像中的对象,我们需要detectObjectsFromImage
使用detector
在上一节中创建的对象来调用函数。
此函数需要两个参数:input_image
和output_image_path
。input_image
是我们正在检测的图像所在的路径,而output_image_path
参数是将图像与检测到的对象一起存储的路径。此函数返回一个字典,其中包含图像中检测到的所有对象的名称和百分比概率。
detection = detector.detectObjectsFromImage(input_image=input_path, output_image_path=output_path)
第10步
可以通过遍历字典中的每个项目来访问字典项目。
for eachItem in detection:print(eachItem["name"] , " : ", eachItem["percentage_probability"])
在输出中,您可以看到每个检测到的对象的名称及其百分比概率,如下所示:
输出
car : 54.72719073295593
car : 58.94589424133301
car : 62.59384751319885
car : 74.07448291778564
car : 91.10507369041443
car : 97.26507663726807
car : 97.55765795707703
person : 53.6459743976593
person : 56.59831762313843
person : 72.28181958198547
原始图片:
原始图像“ test45”如下所示:
带有对象检测的图像:
检测到对象后,生成的图像如下所示:
可以看到ImageAI在图像中成功识别了汽车和人员。
结论
对象检测是最常见的计算机视觉任务之一。本文通过示例说明如何使用ImageAI库在Python中执行对象检测。
参考文献
1.使用opencv在python中进行图像处理的简介
2.matlab中的偏最小二乘回归(plsr)和主成分回归(pcr)
3.matlab中使用vmd变分模态分解
4.matlab使用hampel滤波去除异常值
5.matlab使用经验模式分解emd-对信号进行去噪
6.matlab中的偏最小二乘回归(plsr)和主成分回归(pcr)
7.matlab使用copula仿真优化市场风险
8.r语言高级图像处理
9.matlab实现mcmc的马尔可夫切换arma-garch模型估计
拓端tecdat|使用Python中的ImageAI进行对象检测相关推荐
- 拓端tecdat荣获掘金社区入驻新人奖
2021年7月,由掘金发起了"入驻成长礼"颁奖活动.本次活动邀请到知名开发者.服务机构代表等业界人士. 据了解,掘金社区"新入驻创作者礼"主要对已经积累了一定历 ...
- 拓端tecdat荣获2022年度51CTO博主之星
相信技术,传递价值,这是51CTO每一个技术创作者的动力与信念,2022 年度,拓端tecdat 作为新锐的数据分析咨询公司,在51CTO平台上,不断的输出优质的技术文章,分享前沿创新技术,输出最佳生 ...
- python中requests库的用途-python中requests库session对象的妙用详解
在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...
- Python 中的可执行对象 eval,exec 和 compile与其在深度学习训练中的应用实例
Python 中的可执行对象 eval,exec 和 compile 与其在深度学习训练中的应用实例 eval 计算指定表达式的值.也就是说它要执行的python代码只能是单个表达式(注意eval不支 ...
- python中可迭代对象_什么是python中的可迭代对象(iterable object)?
我们经常在打印报错信息中和英文的文档中看到iter这个词根,可以组合成iterable/iterate等派生词.这个iter可以翻译成"迭代",这样iterable object的 ...
- opencv检测图片失焦 python_如何在Python中使用OpenCV执行模糊检测
如何在Python中使用OpenCV执行模糊检测 目标检测 最后更新 2020-10-12 14:23 阅读 154 最后更新 2020-10-12 14:23 阅读 154 目标检测 ##FlyAI ...
- SICP2——Python中使用函数构建对象
一.使用对象构建抽象 1.1 数据抽象 现在到了数学抽象中最关键的一步:让我们忘记这些符号所表示对象.-根本不必考虑它们到底代表着什么东西. 上一篇文章主要强调的是对数据的操作以及这些操作之间的组合与 ...
- Python中 redis StrictRedis对象操作string类型
Python中 redis StrictRedis对象操作string类型 准备 在桌面上创建redis目录 使用pycharm打开 redis目录 创建redis_string.py文件 from ...
- 深度学习和目标检测系列教程 2-300:小试牛刀,使用 ImageAI 进行对象检测
@Author:Runsen 对象检测是一种属于更广泛的计算机视觉领域的技术.它处理识别和跟踪图像和视频中存在的对象.目标检测有多种应用,如人脸检测.车辆检测.行人计数.自动驾驶汽车.安全系统等.Im ...
- 拓端tecdat|bilibili视频流量数据潜望镜
最近我们被客户要求撰写关于bilibili视频流量的研究报告,包括一些图形和统计输出. 最新研究表明,中国有超过7亿人在观看在线视频内容.Bilibili,被称为哔哩哔哩或简称为B站,是中国大陆第二个 ...
最新文章
- python的for语句条件_Python中的条件选择和循环语句
- 【前端来刷LeetCode】两数之和与两数相加
- mysql子查询批量找id最大的
- C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例
- nosuchelementexception 是什么异常_有甲状腺结节的人为什么越来越多?
- 电脑装机完没有efi_电脑装机如何选内存?看完这篇就全懂了
- jsp页面内引入静态html,JSP技术实现动态页面到静态页面的方法
- win10计算机从桌面消失了,Windows10家庭版程序窗口在桌面上消失了解决方法
- java虚拟机内存存储一个对象_java虚拟机在java堆中对象内存分配、布局、访问
- linux打开计算器命令,linux命令行计算器
- Coverage [minx,miny,maxx,maxy] is [12, 4, 13, 6, 3], index [x,y,z] is [2, 5, 3]错误原因及其解决方式...
- 【Java基础】语法基础
- SYN包TCP选项的设置
- anaconda利用pip安装module
- Linux应用程序动态更改用户ID
- 小篮子玩意儿、你苏爷就是扣字神话不服气么。
- qtableview选中第一行时表头会变色_亲民的“网红潜水表”精工鱼罐头 Prospex,你会选择吗?...
- 终极算法——第三章:符号学派:休谟的归纳问题
- 和数软件:区块链带来的“革命”
- 使用Jedis连接Redis失败的几个注意点