简要介绍

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

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

使用代码解析:

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

首先我们需要一张图片:

之后我们创建一个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"])

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
公众号介绍:主要研究强化学习、计算机视觉、深度学习、机器学习等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!

目标检测-ImageAI从安装到使用详解相关推荐

  1. 深度学习之目标检测(五)-- RetinaNet网络结构详解

    深度学习之目标检测(五)-- RetinaNet网络结构详解 深度学习之目标检测(五)RetinaNet网络结构详解 1. RetinaNet 1.1 backbone 部分 1.2 预测器部分 1. ...

  2. 睿智的目标检测8——yolo3的loss组成详解

    睿智的目标检测8--yolo3的loss组成详解 学习前言 参考源码 计算loss所需参数 1.y_pre 2.y_true loss的计算过程 学习前言 只会预测是不够的,对于只有会了训练才能训练出 ...

  3. 目标检测之Faster-RCNN的pytorch代码详解(模型准备篇)

    十月一的假期转眼就结束了,这个假期带女朋友到处玩了玩,虽然经济仿佛要陷入危机,不过没关系,要是吃不上饭就看书,吃精神粮食也不错,哈哈!开个玩笑,是要收收心好好干活了,继续写Faster-RCNN的代码 ...

  4. 【目标检测】单阶段算法--YOLOv4详解

    论文题目 :<YOLOv4: Optimal Speed and Accuracy of Object Detection> 论文地址:https://arxiv.org/pdf/2004 ...

  5. 目标检测模型的评估指标mAP详解(附代码)

    https://zhuanlan.zhihu.com/p/37910324 对于使用机器学习解决的大多数常见问题,通常有多种可用的模型.每个模型都有自己的独特之处,并随因素变化而表现不同. 每个模型在 ...

  6. YOLOv5在无人机/遥感场景下做旋转目标检测时进行的适应性改建详解(踩坑记录)...

    作者丨略略略@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/358441134 编辑丨极市平台 文章开头直接放上我自己的项目代码: https://github.co ...

  7. 无人机巡检场景小目标检测与量化加速部署方案详解

    ‍‍在社会活动和社会生产中,巡检是一个必不可少的环节.然而,传统的人工巡检方式存在效率低下.成本高昂.安全风险大等问题,限制了巡检的效果和范围.无人机巡检因其高效.灵活.安全的特点被越来越多的企业采用 ...

  8. 【目标检测】单阶段算法--YOLOv3详解

    论文题目:<YOLOv3: An Incremental Improvement > 论文地址:https://pjreddie.com/media/files/papers/YOLOv3 ...

  9. 【目标检测】单阶段算法--YOLOv2详解

    论文题目:<YOLO9000: Better, Faster, Stronger> 论文地址:https://arxiv.org/pdf/1612.08242.pdf 一文读懂YOLOv1 ...

  10. 【目标检测】单阶段算法--YOLOv1详解

    论文题目:<You Only Look Once:Unified, Real-Time Object Detection> 论文地址:https://arxiv.org/pdf/1506. ...

最新文章

  1. 使用KiWi Syslog Daemon构建日志服务器
  2. Activity的生命周期及各生命周期方法的作用
  3. github中的watch、star、fork的作用
  4. IDEA中怎么设置黑色或白色背景?
  5. Gulp构建Angularjs应用
  6. Express-start
  7. 著名Youtuber “NELK “发布有关比特币购买游艇的视频
  8. 《Flask 入门教程》第 3 章:模板
  9. python安装(不影响系统自带python)
  10. java基础总结06-常用api类-时间日期类
  11. ubuntu 出错 /etc/sudoers is world writable
  12. 计算机数字模拟仿真软件,实时数字仿真系统
  13. Air应用:Splus微博,wing微博
  14. 3Dmax导出插件制作
  15. 免费物流快递单号查询接口快速对接(顺丰、韵达、申通、中通)
  16. Array王锐力作:osg与PhysX结合系列内容——第5节 角色动画效果(下)
  17. 清明节全国哀悼,那么网站全部变灰是怎么实现的?
  18. react如何获取option的下标和值_select选中获取索引三种写法
  19. 同济大学软件学院万院长谈择业(转载)
  20. 字体与版式设计 字体设计让你的信息变独特

热门文章

  1. React09——使用脚手架编程
  2. ae导出gif插件_有了它,AE终于可以直接导出gif动图啦!
  3. Gitlab:从其它项目组里导入一个项目
  4. gitlab怎么将建好的项目移到某个组下
  5. 深度学习与计算机视觉教程(7) | 神经网络训练技巧 (下)(CV通关指南·完结)
  6. 传智黑马java基础学习——day10(继承、抽象类)
  7. UG NX 12.0入门
  8. Buck电路的闭环PI控制
  9. 疲劳检测方法总结_计算机视觉
  10. 关于研究课题中的技术路线与实施方案