10行代码让你轻松搞定对象检测

摘要:  十行代码轻松搞定对象检测?快来看看如何使用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数组的形式返回。

原文链接

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目集成Flowable工作流

企业级项目集成Flowable工作流,基于(师父)的开源项目的集成,此开源项目是师傅十几年的经验和实战总结而成,直接可以用于企业开发,旨为帮助更多需要帮助的人! 说明链接项目开原地址https://gitee.com/lwj/flowable博客链接https://…

这个阿里程序员,干了件很轴的事儿

摘要: 我叫孤尽,是一名阿里程序员。 如果说,我身上有一点点和普通程序员不一样,也许是更轴一点。比如我觉得JAVA是世界上最好的语言,没有之一。 最近,我又干了一件比较轴的事情。 我因为这件事曾被大家群嘲…

360路由器v2刷第三方固件_魔百盒M301H-BYT代工MV300H芯片第三方优化刷机卡刷固件下载_移动魔百和 ROM固件...

魔百盒M301H-BYT代工MV300H芯片第三方优化刷机卡刷固件下载固件介绍:1、不带ROOT权限,适用于魔百盒M301H-BYT代工MV300H芯片。2、调出原厂固件屏蔽的wifi,开放原厂固件屏蔽的市场安装和u盘安装apk;3、无开机广告,无系统…

CVPR!你凭什么收录我3篇论文!?

摘要: 在近日举行的年度计算机视觉和模式识别盛会CVPR上,阿里云ET城市大脑的三项视觉技术论文成功入选。 别急着找原因,咱们先了解下什么是CVPR。 这个由专业技术学会IEEE(电气和电子工程师协会)主办的组织全称叫Confe…

c语言中循环结构的作用,C语言中对于循环结构优化的一些入门级方法简介

一.代码移动将在循环里面多次计算&#xff0c;但是结果不会改变的计算&#xff0c;移到循环外面去。例子&#xff1a;优化前&#xff1a;void lower1(char *s){int i;for(i0;iif(s[i]>A&&s[i]<Z)s[i]-(A-a);}优化后&#xff1a;void lower2(char *s){int i;int l…

10分钟Get拥抱无服务的正确姿势

戳蓝字“CSDN云计算”关注我们哦&#xff01;译|孔子东游文|Bob Violino来源|INSIDER PRO无服务器计算旨在实现基础设施的自动化配置以及消除服务器管理的负担&#xff0c;但是你真的准备好使用TA了吗&#xff1f;根据研究公司Markets and Markets 的2018年报告&#xff0c;无服…

深度学习最佳实践系列——权重w初始化

摘要&#xff1a; 本文是深度学习最佳实践系列博客之权重初始化&#xff0c;主要介绍权重初始化的相关问题及方法&#xff0c;文中提及的权重初始化方法均可以应用于普通的神经网络、卷积神经网络和递归神经网络之中。作为深度学习的初学者&#xff0c;我有意识到的一件事情&am…

uft自动化测试工具安装步骤_自动化功能测试和接口测试工具整理

对于自动化测试&#xff0c;原来谈这方面的内容比较少&#xff0c;但是现在我们做DevOps支撑平台的时候&#xff0c;在整个持续集成和交付的过程中&#xff0c;有一个重要的内容就是自动化测试。自动化测试的覆盖面相当大&#xff0c;其中既包括了CS&#xff0c;BS和移动APP的自…

SSM整合Druid数据库连接池

源码地址&#xff1a;https://gitee.com/gb_90/ssm_druid

实操教程丨如何将一个k3s集群集成到Gitlab项目中

作者|RancherLabs来源|CSDN企业博客关于k3sK3s是由Rancher Labs发布的一个轻量级Kubernetes发行版&#xff0c;这款产品专为在资源有限的环境中运行Kubernetes的研发和运维人员设计。它是经过认证的Kubernetes发行版&#xff0c;其最低的系统要求为&#xff1a;系统内核版本&am…

30个免费资源:涵盖机器学习、深度学习、NLP及自动驾驶

摘要&#xff1a; 本文是一份免费资源清单&#xff0c;涵盖机器学习、深度学习、NLP、AI以及自动驾驶&#xff0c;方便相关研究者选择自己感兴趣的内容资源进行学习随着碎片化的生活越来越日常化&#xff0c;大多数人都喜欢看总结性的的文章&#xff0c;这和时间成本有一定的关…

阿里AI界的新伙伴,1秒钟自动生成20000条文案

摘要&#xff1a; 最近&#xff0c;阿里“AI家族”又多了一位新的小伙伴——“AI智能文案”&#xff0c;俗称文案妹。 妹妹具备一个超能力&#xff0c;能仅用1秒钟自动生成20000条文案。 来&#xff0c;大家一起感受一下&#xff1a; 比如说你想买瓶粉底液&#xff0c;根据功效…

华为 招聘 状态 查看_英特尔放弃5G芯片研发:三星受益;爱立信2019年Q1净利润约2.51亿美元;华为也将要与高通和解;天津首个5G电话成功打通...

点击上方“通信人才网” 订阅&#xff01;导读&#xff1a;今日热点 爱立信2019年Q1净利润约2.51亿美元 扭亏为盈近日&#xff0c;爱立信发布截至2019年3月31日的第一季度财报。财报显示&#xff1a;爱立信第一季度净营收为489.06亿瑞典克朗(约合52.93亿美元)&#xff0c;较去年…

异步消息队列中间件

安装&#xff1a; rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpmrpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpmrpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm配置文件&#xff1a; vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app找到loopback_users,把双引…

创纪录!浪潮云海完成OpenStack Rocky版本全球最大规模单一集群测试!

戳蓝字“CSDN云计算”关注我们哦&#xff01;云计算的概念已悄然走过十余年&#xff0c;在助力新兴技术发展的同时&#xff0c;自身也在历经变革。开源作为推动云计算发展的强大动力&#xff0c;于云计算而言&#xff0c;不仅是技术变革的历史潮流&#xff0c;也是相互助推的最…

idea如何反编译字节码指令_美团点评:Java字节码增强技术,线上问题诊断利器...

作者简介&#xff1a;泽恩&#xff0c;美团到店住宿业务研发团队工程师。文章转载于公众号&#xff1a;美团技术团队1. 字节码1.1 什么是字节码&#xff1f;Java之所以可以“一次编译&#xff0c;到处运行”&#xff0c;一是因为JVM针对各种操作系统、平台都进行了定制&#xf…

使用机器学习预测电子竞技游戏《守望先锋》的胜负

摘要&#xff1a; 机器学习可以预测游戏的输赢&#xff1f;来看看Bowen Yang博士是如何构建这一模型的。《守望先锋》中的英雄来自加州大学河滨分校的物理学博士学位的Bowen Yang正在致力于构建一个模型——对游戏中的人物特征进行有意义的学习&#xff0c;来预测电子竞技游戏中…

路由器上的usb接口有什么用_工业主板上有多少种USB接口,红色的USB接口代表什么...

USB接口正式出现是在1996年&#xff0c;一经问世&#xff0c;就成功取代了串口和并口&#xff0c;当然这只是相对于商业电脑和民用电脑而言的&#xff0c;在工控机中还是有串口和并口存在的。USB版本发展至今也已经历好几个阶段&#xff0c;例如USB1.0、USB1.1、USB2.0、USB3.0…

GitHub 热榜第一!这个 Python 项目超 8.4k 标星,网友:太实用!

这个十一&#xff0c;又经历了一波抢票大战。常规办法根本抢不到&#xff0c;大家就把目光转移到“技术手段”上&#xff0c;顺便把一个Python抢票工具&#xff0c;送到了GitHub趋势榜第一&#xff1a;标星超过8.4k&#xff0c;来自名叫文贤平的程序员。这很可能是全GitHub最德…

c语言点按钮弹窗口,【iOS】按钮点击弹窗

拖入一个Round Rect Button&#xff0c;并将Button的文字修改成“点击弹窗”将ViewController.h修改为如下代码&#xff0c;实则在ViewController.h中添加了一行-(IBAction)messageBoxShow;&#xff0c;注册messageBoxShow这个函数。类似于C语言使用函数之前需要在头文件声明这…