热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python对象识别

物体识别是属于计算机视觉更广泛领域的一项技术。这项技术能够识别图像和视频中存在的物体,并对其进行跟踪。物体识别又称物体检测,有多种应用,如人脸识别、车辆识

物体识别是属于计算机视觉更广泛领域的一项技术。这项技术能够识别图像和视频中存在的物体,并对其进行跟踪。物体识别又称物体检测,有多种应用,如人脸识别、车辆识别、行人计数、自动驾驶车辆、安全系统等等。

物体识别的两个重要目标包括:


  1. 图像中存在的所有对象的识别

  2. 寻求关注的对象的过滤

在下面的教程中,我们将了解如何使用 ImageAI 库在 Python 编程语言中执行对象识别。在本教程结束之前,我们将使用 Python 中的 ImageAI 库创建一个基本的对象识别模型。

所以,让我们开始吧。

面向对象识别的深度学习

深度学习技术已经显示出与对象识别相关的不同问题的技术水平。用于对象识别的深度学习的一些常用方法如下:


  1. 形象

  2. 单发探测器

  3. YOLO(你只看一次)

  4. 基于区域的卷积神经网络

但是,在本教程中,我们将了解 ImageAI 是什么,以及如何在执行对象识别时使用它。

了解 imageio 库

Python 提供了一个库,该库旨在让程序员和开发人员能够借助一些简单的编码脚本构建具有独立深度学习和计算机视觉功能的应用和系统。 ImageAI 由几乎所有最先进的深度学习算法的 Python 实现组成,如视网膜、YOLOv3 和tinyyov3。

ImageAI 利用了几个离线工作的 API——它有对象检测、视频检测和对象跟踪 API,不需要访问互联网就可以调用。 ImageAI 采用预先训练好的模型,可以轻松定制。

图像库的对象检测类由方法组成,以便在预训练模型的帮助下对任何图像或图像集执行对象检测。借助 ImageAI ,我们可以检测并识别 80 种不同类型的常见日常物品。

设置环境

在本节教程中,我们将考虑安装所需的库,包括 ImageAI 。

为了利用 ImageAI ,我们必须安装一些依赖项。第一步是在系统上安装 Python。我们可以从 Python 官网:https://www.python.org/下载安装 Python 3。

一旦我们在系统上成功安装了 Python,我们必须借助 pip 安装程序安装以下依赖项:


  1. OpenCV

  2. 张量流


  3. 形象

其安装命令如下所示:

语法:


# installing OpenCV
$ pip install opencv-python
# installing TensorFlow
$ pip install tensorflow
# installing Keras
$ pip install keras
# installing ImageAI
$ pip install imageAI

现在我们必须下载tinyyyov3模型文件,其中包含我们将用于对象识别的分类方法。

相同的链接可以在下面找到:

https://github . com/olafenwamos/imageai/releases/download/1.0/yolo-tiny . H5

使用 imageio 执行对象识别

在本节中,我们将讨论如何利用 Python 中的 ImageAI 库。为了更好地理解和清晰,执行对象识别的过程分为几个步骤。

第一步

第一步是创建必要的文件夹。对于本教程,我们需要如下所示的文件夹:


  1. Object_Recognition: 这将是根文件夹。

  2. 模型:该文件夹将存储预先训练好的模型。

  3. 输入:这个文件夹会存储我们要进行物体检测的图像文件。

  4. 输出:该文件夹将存储带有检测对象的图像文件。

一旦我们创建了必要的文件夹,对象识别文件夹应该有以下子文件夹:


? Input
? Models
? Output
3 directories, 0 files

第二步

对于第二步,我们将打开首选的文本编辑器,在本例中是 Visual Studio Code,以编写 Python 脚本并创建一个新的文件识别器

第三步

现在,让我们开始从 ImageAI 库中导入 ObjectDetection 类。其语法如下所示:

文件:recognizer.py


# importing the required library
from imageai.Detection import ObjectDetection

第四步

现在已经导入了所需的 ImageAI 库和 ObjectDetection 类,接下来要做的就是创建类 ObjectDetection 的实例。让我们考虑下面的代码片段。

文件:识别器. py


# instantiating the class
recognizer = ObjectDetection()

第五步

让我们使用下面的代码片段指定模型、输入图像和输出图像的路径。

文件:识别器. py


# defining the paths
path_model = "./Models/yolo-tiny.h5"
path_input = "./Input/images.jpg"
path_output = "./Output/newimage.jpg"

第六步

一旦我们实例化了 ObjectDetection 类,我们现在就可以从该类中调用不同的函数。为了调用预先训练的模型,该类由以下函数组成:


  1. setModelTypeAsRetinaNet()

  2. setModelTypeAsYOLOv3()

  3. setModelTypeAsTinyYOLOv3()

出于本教程的目的,我们将使用预训练的 TinyYOLOv3 模型,因此,我们将使用setmodeltypastayyolov3()函数来加载模型。

让我们考虑下面的代码片段:

文件:识别器. py


# using the setModelTypeAsTinyYOLOv3() function
recognizer.setModelTypeAsTinyYOLOv3()

第七步

现在,我们将调用函数 setModelPath() 。该函数将接受一个字符串,该字符串包含预训练模型的路径。

让我们考虑下面的代码片段:

文件:识别器. py


# setting the path to the pre-trained Model
recognizer.setModelPath(path_model)

第八步

在这一步中,我们将从识别器实例中调用 loadModel() 函数。该函数将在 setModelPath() 类方法的帮助下,从上面指定的路径加载模型。

让我们考虑下面的代码片段。

文件:识别器. py


# loading the model
recognizer.loadModel()

第九步

我们必须在前面创建的识别器对象的帮助下调用detectobjectsfroimage()函数。

该功能接受两个参数:输入 _ 图像和输出 图像 路径。输入 _ 图像参数是我们识别的图像所处的路径,而输出 图像 路径参数是存储带有检测对象的图像的路径。这个函数将返回包含图像中检测到的每个对象的名称和百分比概率的措辞。

其语法如下所示:

文件:识别器. py


# calling the detectObjectsFromImage() function
recognition = recognizer.detectObjectsFromImage(
input_image = path_input,
output_image_path = path_output
)

步骤 10

最后,我们可以通过遍历字典中的每个元素来访问字典元素。

其语法如下所示:

文件:识别器. py


# iterating through the items found in the image
for eachItem in recognition:
print(eachItem["name"] , " : ", eachItem["percentage_probability"])

对象识别模型的完整 Python 脚本

让我们考虑下面的对象识别模型脚本。

文件:识别器. py


# importing the required library
from imageai.Detection import ObjectDetection
# instantiating the class
recognizer = ObjectDetection()
# defining the paths
path_model = "./Models/yolo-tiny.h5"
path_input = "./Input/images.jpg"
path_output = "./Output/newimage.jpg"
# using the setModelTypeAsTinyYOLOv3() function
recognizer.setModelTypeAsTinyYOLOv3()
# setting the path of the Model
recognizer.setModelPath(path_model)
# loading the model
recognizer.loadModel()
# calling the detectObjectsFromImage() function
recognition = recognizer.detectObjectsFromImage(
input_image = path_input,
output_image_path = path_output
)
# iterating through the items found in the image
for eachItem in recognition:
print(eachItem["name"] , " : ", eachItem["percentage_probability"])

输出:

car : 88.85036110877991
car : 85.83406209945679
bus : 70.04978060722351
car : 80.88288903236389
car : 55.334705114364624
person : 61.084866523742676
car : 68.46083402633667
person : 56.165677309036255
person : 71.58655524253845
car : 59.49597954750061
person : 55.276620388031006
person : 69.08922791481018
person : 59.92640256881714
car : 82.73208141326904
person : 54.69227433204651
person : 67.25137233734131
car : 68.9003050327301
person : 77.32996344566345
person : 53.02640199661255
person : 81.33729696273804
person : 83.60849618911743
person : 50.34937262535095

实际图像:

Object Recognition using Python

物体识别后的图像:

Object Recognition using Python

最后,我们可以观察到 ImageAI 已经成功地识别了图像中的汽车和人。



推荐阅读
  • 利用TensorFlow.js在网页浏览器中实现高效的人脸识别JavaScript接口
    作者|VincentMühle编译|姗姗出品|人工智能头条(公众号ID:AI_Thinker)【导读】随着深度学习方法的应用,浏览器调用人脸识别技术已经得到了更广泛的应用与提升。在 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • PyThon_Swift 势必取代 Python?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Swift势必取代Python?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 面部识别技术面临关键转折点:伦理与应用的平衡挑战
    面部识别技术正面临一个关键的转折点,其伦理与应用之间的平衡问题日益凸显。近日,该技术再次遭遇重大事件。本周二,由90个倡议组织组成的联盟发布了一份联合声明,呼吁全球范围内暂停使用面部识别技术,直到制定出明确的监管框架。这一举措反映了社会各界对隐私保护和技术滥用的担忧,同时也引发了关于如何在保障公共安全和维护个人隐私之间找到合理平衡的广泛讨论。 ... [详细]
  • 如何在Linux系统中部署TensorFlow的详细指南
    本文详细介绍了在Linux系统中部署TensorFlow的过程。作者基于北京大学曹建教授的MOOC课程进行学习,但由于课程内容较旧,环境配置方面遇到了不少挑战。经过多次尝试,最终成功解决了这些问题,并总结了一套详细的安装指南,帮助初学者快速上手TensorFlow。 ... [详细]
  • 基于TensorFlow的鸢尾花数据集神经网络模型深度解析
    基于TensorFlow的鸢尾花数据集神经网络模型深度解析 ... [详细]
  • 基本价值在于商业落地,解决实际问题;真正的价值在于解决高价值问题,有两类:一解决民生、国力问题,提高国家的综合国力;二让人们的生活真正的更加美好。 近两年,很多学术大牛,进入工业界 ... [详细]
  • TensorFlow中文社区—下载与安装 转自:http:www.tensorfly.cntfdocget_startedos_setup.html下载与安装你可以使用我们提供的二 ... [详细]
  • [TensorFlow系列3]:初学者是选择Tensorflow2.x还是1.x? 2.x与1.x的主要区别?
    作者主页(文火冰糖的硅基工坊):https:blog.csdn.netHiWangWenBing本文网址:https:blog.csdn.netHiW ... [详细]
  • 摘要:有些功能还真不能光凭自己的直觉和认识,来自一线的声音才是最真实的用户需求。比方说名片录 ... [详细]
  • NVIDIA最新推出的Ampere架构标志着显卡技术的一次重大突破,不仅在性能上实现了显著提升,还在能效比方面进行了深度优化。该架构融合了创新设计与技术改进,为用户带来更加流畅的图形处理体验,同时降低了功耗,提升了计算效率。 ... [详细]
author-avatar
东张西望
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有