目标检测-ImageAI从安装到使用详解

 

简要介绍

ImageAI是一个python库,旨在使开发人员能够使用少量的代码,并且独立地使用计算机视觉功能构建应用程序和系统。官方网址为:https://aicommons.science/imageai。开发和维护者 : Moses Olafenwa and John Olafenwa, brothers, creators of TorchFusion and Authors of Introduction to Deep Computer Vision。在这里有更多相关的学习资源。

秉承着简洁的思维理念,ImageAI支持机器学习中 image prediction, custom image prediction, object detection, video detection, video object tracking and image predictions trainings.算法中的一系列先进算法。ImageAI目前支持在ImageNet-1000数据集中使用四种机器学习算法。也支持在COCO数据集上使用RetinaNet, YOLOv3 和TinyYOLOv3等算法进行目标检测、视频检测和目标跟踪。ImageAI将为计算机视觉的更广泛和更专业化方面提供支持,包括但不限于特殊环境和特殊领域的图像识别。

最新的版本:ImageAI 2.0.2 

新的改动:

  • 在自定义图像预测模型训练时允许用户定义图片的大小。
  • 目标检测和视频检测的时候现在可以返回每个被检测物体的bounding box边界框的坐标 ('box points') (x1,y1,x2, y2) 。
  • 允许用户隐藏置信度和识别出的物体的名称。
  • 支持从设备摄像头,连接的摄像头和IP摄像头对视频直播进行视频对象检测。
  • 支持 YOLOv3 和 TinyYOLOv3 进行所有的目标检测和视频目标检测任务。
  • 所有输入类型(视频文件和摄像机)的视频对象检测现在允许定义在检测和处理每个帧,每秒和每分钟视频后执行的自定义功能。 还包括在完全检测和处理视频时立即指定自定义功能的选项。
  • 对于指定的每个自定义函数,ImageAI返回检测的帧/秒/分钟/完整视频分析,其中包括对象的详细信息(名称,百分比概率,box_points),检测到的每个唯一对象的实例数(计数)和总体平均值 在第二/分钟/完整视频分析的情况下检测到的每个唯一对象的实例数量的计数。处理每帧,秒或分钟时返回检测到的帧的选项
  • 返回每帧,秒或分钟时检测到的框架信息,以Numpy array的形式返回。

安装

首先需要Python 3.5.1 或者更之后的版本。

之后我们需要Tensorflow 1.4.0 或者更之后的版本。我们可以通过下面方式进行更新版本:

 pip3 install --upgrade tensorflow 

Numpy 1.13.1或者更之后的版本

 pip3 install numpy 

SciPy 0.19.1 或者更之后的版本

 pip3 install scipy 

安装opencv

 pip3 install opencv-python 

安装Pillow

 pip3 install pillow 

安装Matplotlib

pip3 install matplotlib 

安装h5py

 pip3 install h5py 

安装Keras 2.x 

pip3 install keras 

 做完了这些准备工作之后就要开始真正的安装啦:

pip3 install https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.2/imageai-2.0.2-py3-none-any.whl 

或者你可以下载imageai-2.0.2-py3-none-any.whl ,之后运行:

pip3 install C:\User\MyUser\Downloads\imageai-2.0.2-py3-none-any.whl

这里注意自己的安装路径。

使用代码解析:

以目标检测为例进行代码解析:

首先我们需要一张图片:

目标检测-ImageAI从安装到使用详解_第1张图片

之后我们创建一个python文件,随便怎么命令都可以,之后我们将图片命名为1.jpg后放入之前创建好的python文件的同一目录下。我们还需要下载YOLOv3 神经网络权重,我们将以下代码放入创建好的python文件中:

from imageai.Detection import ObjectDetection
import os
execution_path = os.getcwd()
detector = ObjectDetection()
detector.setModelTypeAsYOLOv3()
detector.setModelPath( os.path.join(execution_path , "yolo.h5"))
detector.loadModel()
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "1.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"))
for eachObject in detections:
    print(eachObject["name"], " : ", eachObject["percentage_probability"], " : ", eachObject["box_points"])

目标检测-ImageAI从安装到使用详解_第2张图片

from imageai.Detection import ObjectDetection
import os
execution_path = os.getcwd()

在上面 3 行代码种,第一行我们导入了 ImageAI 目标检测类,第二行导入了 python 的 os 类,第三行定义了一个变量用来保存我们的 python 文件,其中 RetinaNet 模型文件和图像都将存放在该文件夹路径下。

detector = ObjectDetection()
detector.setModelTypeAsYOLOv3()
detector.setModelPath( os.path.join(execution_path , "yolo.h5"))
detector.loadModel()
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "1.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"))

在上面的 5 行代码中,第一行定义了目标检测类,第二行将模型的类型设置为 Yolo3,并在第三行将模型路径设置为 Yolo3 模型的路径,第四行将模型加载到的目标检测类,第五行调用目标检测函数,解析输入的和输出的图像路径。

for eachObject in detections:
    print(eachObject["name"], " : ", eachObject["percentage_probability"], " : ", eachObject["box_points"])

在上面的2行代码中,第一行迭代执行 detector.detectObjectsFromImage 函数并返回所有的结果,然后在第二行打印出所检测到的每个目标的名称及其概率值,bounding-box坐标。

功能:

Image Prediction

ImageAI 提供四种不同的算法和模型去进行图片分类预测。这四种算法为:  SqueezeNet,  ResNetInceptionV3 and DenseNet. 你可以在下面的连接中找到相关用法的指导说明:

>>> Tutorial & Guide

        Object Detection

ImageAI提供非常方便并且强大的图像目标检测方法。提供了RetinaNet, YOLOv3 and TinyYOLOv3三种算法,使得我们具有调整最佳性能或实时处理的选项。你可以在下面的连接中找到相关用法的指导说明:

>>> Tutorial & Guide

        Video Object Detection & Analysis

ImageAI 提供了非常方便和强大的方法来在视频中执行对象检测并跟踪特定对象。 提供的视频对象检测类仅支持当前最先进的RetinaNet,具有调整最佳性能或实时处理的选项。你可以在下面的连接中找到相关用法的指导说明:

>>> Tutorial & Guide

       Custom Model Training

ImageAI您提供类和方法,使用您自己使用ImageAI Model Training类训练的模型运行图像预测您自己的自定义对象。 您可以使用通过SqueezeNet,ResNet50,InceptionV3和DenseNet训练的自定义模型以及包含自定义对象名称映射的JSON文件。

>>> Tutorials & Documentation

       Custom Image Prediction

ImageAI提供了类和方法,您可以使用自己使用ImageAI Model Training类训练的模型运行图像预测您自己的自定义对象。 您可以使用通过SqueezeNet,ResNet50,InceptionV3和DenseNet训练的自定义模型以及包含自定义对象名称映射的JSON文件。你可以在下面的连接中找到相关用法的指导说明:

>>> Tutorials & Documentation

文档

你可以在以下连接中找到官方的教程文档:

>> Documentation - English Version https://imageai.readthedocs.io 
           >> Documentation - Chinese Version https://imageai-cn.readthedocs.io

 

参考:

https://mp.weixin.qq.com/s/XXHUon2qca6p6ZMpwzgD2Q

https://github.com/OlafenwaMoses/ImageAI

 

我的微信公众号名称:深度学习与先进智能决策
微信公众号ID:MultiAgent1024
公众号介绍:主要研究强化学习、计算机视觉、深度学习、机器学习等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!

 

你可能感兴趣的:(机器学习原理与实战)