深度学习和目标检测系列教程 2-300:小试牛刀,使用 ImageAI 进行对象检测

Posted 刘润森!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习和目标检测系列教程 2-300:小试牛刀,使用 ImageAI 进行对象检测相关的知识,希望对你有一定的参考价值。

@Author:Runsen

对象检测是一种属于更广泛的计算机视觉领域的技术。它处理识别和跟踪图像和视频中存在的对象。目标检测有多种应用,如人脸检测、车辆检测、行人计数、自动驾驶汽车、安全系统等。ImageAI提供了非常方便和强大的方法来对图像进行对象检测并从图像中提取每个对象。

ImageAI

ImageAI 包含几乎所有最先进的深度学习算法的 Python 实现,如RetinaNet、YOLOv3和 TinyYOLOv3。

ImageAI 使用了对象检测、视频检测和对象跟踪 API,无需访问网络即可调用。ImageAI 使用预先训练的模型并且可以轻松定制。

ImageAI 中的ObjectDetectionImageAI 库的类包含使用预训练模型对任何图像或图像集执行对象检测的函数。借助 ImageAI,可以检测和识别 80 种不同的常见日常物品。

具体官方教程:https://imageai.readthedocs.io/en/latest/detection/index.html

下载链接:https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.2/imageai-2.0.2-py3-none-any.whl

安装ImageAI 成功后,下载包含将用于对象检测的分类模型的TinyYOLOv3模型文件。

下载地址:https://github.com/OlafenwaMoses/ImageAI/releases/download/1.0/yolo-tiny.h5

下面,我们小试牛刀,使用 ImageAI 进行对象检测

我们先创建必要的文件夹。

  • Object-detection:根文件夹
  • models:存储预先训练的模型
  • input : 存储我们要执行对象检测的图像文件
  • output:存储检测到对象的图像文件

创建文件夹后,Object-detection文件夹应具有以下子文件夹:

├── input
├── models
└── output

下面创建一个新文件detector.py.,从 ImageAI 库导入ObjectDetection类。

from imageai.Detection import ObjectDetection

接下来是创建 class 的实例ObjectDetection,如下所示:

detector = ObjectDetection()

指定输入图像、输出图像和模型的路径。

model_path = "./models/yolo-tiny.h5"
input_path = "./input/image.jpg"
output_path = "./output/newimage.jpg"

实例化ObjectDetection类后,我们现在可以从类中调用各种函数。该类包含以下功能调用预先训练模式:setModelTypeAsRetinaNet()setModelTypeAsYOLOv3(),和setModelTypeAsTinyYOLOv3()

我使用预训练TinyYOLOv3模型,因此我们将使用该setModelTypeAsTinyYOLOv3()函数加载我们的模型。

接下来,将调用函数setModelPath()。此函数接受一个包含预训练模型路径的字符串:

detector.setModelPath(model_path)

detector实例调用函数loadModel()。它使用setModelPath()类方法从上面指定的路径加载模型

detector.loadModel()

要检测图像中的对象,我们需要detectObjectsFromImage使用detector创建的对象。

下面是完整代码

from imageai.Detection import ObjectDetection

detector = ObjectDetection()

model_path = "./models/yolo-tiny.h5"
input_path = "./input/img.png"
output_path = "./output/img.png"

detector.setModelTypeAsTinyYOLOv3()
detector.setModelPath(model_path)
detector.loadModel()
detection = detector.detectObjectsFromImage(input_image=input_path, output_image_path=output_path)

for eachItem in detection:
    print(eachItem["name"] , " : ", eachItem["percentage_probability"])

在这里插入图片描述
在这里插入图片描述

以上是关于深度学习和目标检测系列教程 2-300:小试牛刀,使用 ImageAI 进行对象检测的主要内容,如果未能解决你的问题,请参考以下文章

深度学习和目标检测系列教程 3-300:了解常见的目标检测的开源数据集

深度学习和目标检测系列教程 19-300:关于目标检测APIoU和mAP简介

深度学习和目标检测系列教程 19-300:关于目标检测APIoU和mAP简介

深度学习和目标检测系列教程 5-300:早期的目标检测RCNN架构

深度学习和目标检测系列教程 4-300:目标检测入门之目标变量和损失函数

深度学习和目标检测系列教程 6-300:目标检测Fast-RCNN架构