热门标签 | 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 已经成功地识别了图像中的汽车和人。



推荐阅读
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 2017亚马逊人工智能奖公布:他们的AI有什么不同?
    事实上,在我们周围,“人工智能”让一切都变得更“智能”极具讽刺意味。随着人类与机器智能之间的界限变得模糊,我们的世界正在变成一个机器 ... [详细]
  • keras归一化激活函数dropout
    激活函数:1.softmax函数在多分类中常用的激活函数,是基于逻辑回归的,常用在输出一层,将输出压缩在0~1之间,且保证所有元素和为1,表示输入值属于每个输出值的概率大小2、Si ... [详细]
  • 代码如下:#coding:utf-8importstring,os,sysimportnumpyasnpimportmatplotlib.py ... [详细]
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社区 版权所有