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

实际图像:

物体识别后的图像:

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


原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/307038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-02 18:06
下一篇 2025-01-02 18:06

相关推荐

  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29

发表回复

登录后才能评论