摘要:  十行代码轻松搞定对象检测?快来看看如何使用ImageAI。

计算机视觉是人工智能领域中最重要的一个分支。计算机视觉是一门能够识别和理解图像及其场景的计算机软件系统的科学。计算机视觉包括图像识别、对象检测、图像生成、图像超分辨率等多个方面。这其中有众多实际案例的就是对象检测,因此,对象检测可能是计算机视觉最有影响力的一个分支。本教程将简要介绍现代对象检测的概念、软件开发人员所面临的挑战、我们团队提供的解决方案以及高性能对象检测的代码教程。

对象检测是指计算机和软件系统在图像或场景中对目标对象进行定位和识别的能力。在实际应用中,目标检测已广泛用于人脸识别、车辆检测、行人计数、网络图像、安全系统和无人驾驶。并且,目前有很多种方法可用于对象检测。和其他任何计算机技术一样,对象检测的各种创造性和惊人的用途,来自于开发人员的不懈努力。

使用现代对象检测方法、以及基于这些方法构建新的应用程序并不是一个简单的任务。早期的对象检测大多使用经典算法,如计算机视觉库OpenCV中的算法。然而,在不同的环境中,这些经典算法的性能并没有达到我们所期望的性能。

2012年,深度学习有了新的突破,并被开发者广泛使用,出现了R-CNN、Fast-RCNN、Faster-RCNN、RetinaNet等现代高精度对象检测算法(方法),以及SSD和YOLO等快速高精度对象检测算法(方法)。要想使用这些基于深度学习(同时也基于机器学习)的算法进行对象检测,开发人员则需要掌握大量的数学和深度学习框架的相关知识。有数百万计的开发人员想要使用对象检测来创建新的产品。但是,由于深度学习技术理解和使用起来比较复杂,因此,这项技术很难掌握。

几个月前,我们就意识到了这一问题,我和John Olafenwa共同构建了ImageAI这个Python库,利用ImageAI,仅仅使用几行代码,开发人员就可以轻松地将最新的计算机视觉技术集成到现有的新应用程序中。

使用ImageAI进行对象检测的步骤如下:

1.在系统上安装Python。

2.安装ImageAI及其依赖项。

3.下载对象检测模型文件。

4.运行示例代码(10行)。

详细步骤如下:

1.从Python官网下载并安装Python 3。

2.使用pip命令安装以下依赖项:

(1)Tensorflow

命令:pip install tensorflow

(2)Numpy

命令:pip install numpy

(3)SciPy

命令:pip install scipy

(4)OpenCV

命令:pip install opencv-python

(5)Pillow

命令:pip install pillow

(6)Matplotlib

命令:pip install matplotlib

(7)H5py

命令:pip install h5py

(8)Keras

命令:pip install keras

(9)ImageAI

命令:pip installhttps://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl

3.下载用于对象检测的RetinaNet模型文件。

安装好了依赖项,现在就可以编写第一个对象检测代码了:创建一个Python文件并为其命名(如:FirstDetection.py),然后写入代码(如下图所示)。并将RetinaNet模型文件和要检测的图像复制到包含python文件的文件夹中。

FirstDetection.py

运行代码,并将结果打印到控制台,在FirstDetection.py所在的文件夹内,你就能找到保存的新图像。 看看下面的2个图像样本和检测后保存的新图像。

对象检测前:

对象检测后:

控制台输出结果:

人 : 55.8402955532074

人 : 53.21805477142334

人: 69.25139427185059

人: 76.41745209693909

自行车: 80.30363917350769

人 : 83.58567953109741

人: 89.06581997871399

货车 : 63.10953497886658

人: 69.82483863830566

人: 77.11606621742249

公交车: 98.00949096679688

货车 : 84.02870297431946

小汽车: 71.98476791381836

控制台输出结果:

人: 71.10445499420166

人: 59.28672552108765

人: 59.61582064628601

人: 75.86382627487183

摩托车: 60.1050078868866

公交车: 99.39600229263306

小汽车 : 74.05484318733215

人: 67.31776595115662

人 : 63.53200078010559

人: 78.2265305519104

人: 62.880998849868774

人: 72.93365597724915

人: 60.01397967338562

人: 81.05944991111755

摩托车: 50.591760873794556

摩托车: 58.719027042388916

人: 71.69321775436401

自行车: 91.86570048332214

摩托车: 85.38855314254761

现在,我们来看一下这10行代码是如何运行的。

如上图所示,第一行导入了ImageAI对象检测类,第二行导入了python os类,第三行定义了一个变量来保存python文件、RetinaNet模型文件和图像所在的文件夹的路径 。

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

在上面的两行代码中,第一行将detector.detectObjectsFromImage函数返回的所有结果进行迭代,第二行打印出模型在每个图像上检测出来的对象名称和概率。

ImageAI支持对象检测过程的定制,其中之一就是能够提取图像中检测到的每个对象。如下所示,通过简单地将extra_detected_objects = True设置为detectObjectsFromImage函数的参数,对象检测模型将为检测到的对象创建创建一个文件夹,提取每个图像,并将每个图像都保存到新创建的文件夹中,并返回一个包含每个对象的数组。

让我们来看第一张图片的输出结果:

所有照片中的行人也被提取出来了,这里我并没有列出所有提取的行人。

ImageAI提供了更多有用的功能,可用于对象检测任务的定制和生产功能部署,它所支持的功能如下:

1.调整最小概率阈值:默认情况下,检测的概率百分比小于50%的对象将不会显示或输出。ImageAI可以为高确定性案例中提高该概率阈值;或者在需要检测所有可能对象的情况下降低该阈值。

2.自定义对象检测:使用ImageAI提供的CustomObject类,你可以告诉检测类对一个或几个唯一对象的检测结果进行输出。

3.检测速度:可以将检测速度设置为“快速”、“更快”和“最快”,可以缩短检测对象所需的时间。

4.输入类型:你可以指定图像的文件路径,指定图像的Numpy数组或文件流作为输入图像

5.输出类型:你可以指定detectObjectsFromImage函数将图像以文件还是以Numpy数组的形式返回。

原文链接

本文为云栖社区原创内容,未经允许不得转载。

10行代码让你轻松搞定对象检测相关推荐

  1. python包裹和运费_这个Python库真的太好用了,10行代码就能轻松搞定目标检测

    目标检测是指计算机和软件系统对图像或场景中的目标进行定位和识别的任务. 目标检测已广泛应用于人脸检测.车辆检测.人流量统计.网络图像.安防系统和无人驾驶等多个领域. 早期目标检测的实现基于经典算法,比 ...

  2. 《看聊天记录都学不会C语言?太菜了吧》(14)这么神奇?我写了20行代码竟然一行就可以搞定?

    好消息2020年4月13日晚7.30我在CSDN开播,等你来聊天 预约连接:https://live.csdn.net/room/A757291228/MJWK0Gem 本系列文章将会以通俗易懂的对话 ...

  3. 免费报表工具零代码零基础轻松搞定 web 报表

    话说,能制作清单式报表的方式有千千万: 骨灰级的 Excel 控,如果能轻车熟路驾驭 VBA,也能玩出各种花来,再不济借助图表插件外援也能秒杀一众小白选手: 传说中的编程控,只要需求明确没什么做不了的 ...

  4. 行式填报表轻松搞定流水号

    在各式各样的报表业务需求中,有这样一类,不仅要对数据进行统计呈现,还要基于这些数据做增.删.改的操作并与数据库进行交互.这种情况下,无论从数据库统一管理还是数据合法性角度考虑,都难免需要进行诸如自动计 ...

  5. 公司接了一个电商项目要在1个月内写10w行代码,该怎么搞定?

    <10w行代码的大型电商系统项目实战> === 课程介绍 ===

  6. python真的可以减少工作强度_用Python写几行代码,一分钟搞定一天工作量,同事直呼:好家伙!...

    前几天有一个读者说最近要整理几千份文件,头都要整秃了,不知道能不能用Python解决,我们来看一下,你也可以思考一下.由于涉及文件私密所以具体内容已做脱敏处理. 大概是这样,一个文件夹下有多份会议通知 ...

  7. 用Python写几行代码,一分钟搞定一天工作量,同事直呼:好家伙!

    前几天有一个读者说最近要整理几千份文件,头都要整秃了,不知道能不能用Python解决,我们来看一下,你也可以思考一下. 由于涉及文件私密所以具体内容已做脱敏处理. 大概是这样,一个文件夹下有多份会议通 ...

  8. 阿里云HBase发布冷存储特性,助你不改代码,1/3成本轻松搞定冷数据处理

    9月27日,阿里云HBase发布了冷存储特性.用户可以在购买云HBase实例时选择冷存储作为一个附加的存储空间,并通过建表语句指定将冷数据存放在冷存储介质上面,从而降低存储成本.冷存储的存储成本仅为高 ...

  9. 如何轻松搞定各种图形化展现

    近期,大屏展示再次把 "统计图" 推向热搜榜.或许你会问为什么,这多半是因为大屏通过各种图形组件集中呈现了用户关心的数据,而其中每个组件基本都是一个呈现形态各异的统计图,有的体现了 ...

最新文章

  1. Ubuntu系统下移动宽带自动启用设置
  2. SQL How to get the current day month and year
  3. android 消息循环滚动条,Android ViewPager实现循环滚动
  4. python 比较运算符放在列表中_在Python3中将运算符放在列表中
  5. Flutter Exception降到万分之几的秘密 1
  6. java实现权限_Java实现权限管理的两种方式
  7. 有没有比python更简单的语言排名_5月语言排行榜:R跌出前二十 Python紧咬C++
  8. 玩转未来科技感!高端电商海报设计素材
  9. 乐pad平板电脑_2020年双十一高性价比平板电脑推荐(包含苹果ipad,安卓华为,微软surface)...
  10. 检查在Unix Shell脚本中设置环境变量的简洁方法是什么?
  11. linux的vmstat命令,Linux中vmstat命令起什么作用呢?
  12. 达梦共享存储集群DMDSC-2节点部署手册
  13. ElasticSearch6.0.1 拼音搜索,并且高亮显示结果 —6.X版本
  14. HTML5 第六章盒子模型课后作业
  15. 居家短期任务赚钱好不好做容易学习吗?
  16. 2022年信息安全从业者书单推荐(2022.2.20更新)
  17. 迅雷极速版服务器响应,如何阻止迅雷极速版强制更新?这个方法很简单
  18. 2018年蓝桥杯C语言B组
  19. 基于MK-MMD度量迁移学习的轴承故障诊断方法研究
  20. 认识System,System32,Syswow64

热门文章

  1. java boolean 多线程_JAVA多线程两个实用的辅助类(CountDownLatch和AtomicBoolean)
  2. python命令行解析_python命令行解析函数
  3. java s结尾的工具类_FilenameUtils工具类
  4. mysql降级导入_mysql 升级和降级
  5. java版的中世纪战争_世界战争英雄设置-火焰纹章英雄英雄地图及AI命令设置
  6. mysql适合什么阵列_如何选择最合适的RAID级别
  7. redis重启命令_请收下这份redis持久化详解
  8. qlistview 自定义控件_是否可以在QListView中添加自定义窗口小部件?
  9. android 获取wifi的加密类型,wifi加密类型
  10. 谷歌浏览器外贸版_针对谷歌SEO,你有哪些值得推荐的工具、插件、网站、app,或者技巧分享?...