简易版物体识别!

简介: “如果你不能简单地解释它,你就不能很好地理解它”

TB11DkWeoKF3KVjSZFEXXXExFXa.jpg

原标题 | Object Recognition, simplified !

作者 | Ulysse-pacome koudou

译者 | Aitechnology(旷视算法研究员)、汪鹏(重庆邮电大学)、Dylan的琴(重庆邮电大学)

本文编辑:王立鱼

原文链接:

https://medium.com/data-science-demystified/object-recognition-made-easier-61eb8b5fa3fa

TB1fJvVe8Cw3KVjSZR0XXbcUpXa.jpg

阿尔伯特·爱因斯坦曾经说过这么一句话“如果你不能简单地解释它,你就不能很好地理解它”,我深以为然!

尤其是在计算机视觉领在业务中,阻止AI发展的主要障碍之一是深度学习解决方案是需要完全掌握和理解这些工具的工作方式,这是极其复杂的。

除此之外,还有为业务案例开发和实施正确的解决方案的时效性。显然,该列表并非详尽无遗,因此企业在实施此类工具时会慢慢采取行动。我还要补充说,与一个更简单且可能更旧的解决方案相比,评估实现特定案例的AI解决方案的价值是非常好的,但如果工具本身并没有得到很好的理解,有时可能会遇到挑战。“AI”,“机器学习”,“深度学习”是当下的流行语,每个人都希望发展自己的AI点,增强客户体验和理解,探索更多并扩展他们的专业范围,这是很好的!#GoA.I。

这是一个帮助我们实现对象检测算法作为解决方案工具的解决方案。非常感谢John Olafenwa及其团队构建ImageAI软件包,这使得程序员的生活变得更加轻松,不仅可以使用,还可以了解对象检测的工作原理。//深入了解DeepQuestAI。使用ImageAI实现测试只能在几行中完成,快速而强大。

  现在让我们实操一下!

要求:

Jupyter 笔记本安装了Tensorflow和Keras。

你可以使用Anaconda Navigator在JN上安装Tensorflow和Keras,只需选择您的环境并在搜索栏中写入包名称(注意:确保选择未安装)

TB1ioU0cfBj_uVjSZFpXXc0SXXa.jpg

从Anaconda 安装Tensorflow

从原文下载ImageAI软件包,虽然Anaconda尚未提供,但谁知道明天会发生什么?

下载H5Py存储Numpy矩阵的图像,更多信息可以参看H5py_website。

最后但同样重要的是,激情。请喜欢和享受你正在做的事情,如果你对你正在编码的内容不感兴趣,编码会变得非常无聊,即使这只是一行代码。成功=时间+激情。

要安装的库:Scipy,Numpy,OpenCV,Tensorflow,Pillow,Matplotlib和Keras。

注意:确保将H5py和ImageAI保留在工作目录中!

现在我们已经完成所有设置,我们将通过几行代码来识别图像文档中的大多数基本对象。在我们使用Jupiter Notebook之前设置,确保所有下载都在工作目录中。

作为输入,我们将在2015年夏天在蒙特利尔某处拍摄一张非常漂亮的照片,目标最终将是检测照片上的内容,是否有汽车,人物?更多?多少。

TB1lTLPe8WD3KVjSZKPXXap7FXa.jpg

2015年夏季

首先要安装ImageAI

TB1ykvMe2WG3KVjSZPcXXbkbXXa.png TB18vYNe79E3KVjSZFGXXc19XXa.png

这是命令行应该返回的结果。然后加载所有必要的包。

TB14LfWeYus3KVjSZKbXXXqkFXa.png

对于实际的检测我们使用的是著名的开源库OpenCV,然后基于Tensorflow的Keras预训练模型我们搭建神经网络。实际上永远不要忘记,Matplotlib可以清晰的对检测到的方形区域进行判别,np框架能够用来存储数据(再一次发挥巨大作用!)最后我们将工作目录声明为可执行路径,方面后面使用H5py。

TB1NDLPe8WD3KVjSZKPXXap7FXa.png

点击此处查看完整代码

现在John的团队通过创建很长的、痛苦的和复杂的代码来实现这一目标。通过简单的调用神经网络的额模型并将图片作为输入可以使你的编码 变得更容易。最终,你可以在工作目录下得到输出结果。

TB1TV2AdQxz61VjSZFrXXXeLFXa.png

所有这一切都很不错,但是我们依然希望得到结果。。。这有一个简单的函数可以打印出名字和通过网络预测得到的概率。

TB1KPbMe.GF3KVjSZFmXXbqPXXa.jpg

在这种情况下,我们引用了三个输出项,输出图像,检测到的对象的名称及其概率百分比。我们有图像,这里是proba的百分比。名字看起来像这样:

TB1nUZ0cfBj_uVjSZFpXXc0SXXa.png

不一定按顺序给出,我们的模型已成功检测到我作为前景中的人,自行车,即使完整的自行车不在图片上,另一方面,后面至少有四辆车和几个人。由于特征提取,背景和形状,我身后的绿色汽车被检测到三次。我们可以深入研究这个问题,但这是一个全新的主题,我建议你阅读这篇文章以获取更多信息。

对这个结果感到满意,我又尝试了另一张图片,看看模型可以做到什么程度吧。

TB19f2Ne79E3KVjSZFGXXc19XXa.jpg TB1gf6Me25G3KVjSZPxXXbI3XXa.png

而且它再次令人印象深刻,能够以66%的概率检测到背包。并且能够区分汽车和卡车,但在第二个例子中有几个人没检测到。这仍然是由于特征提取和形状的问题,希望模型会变得更好点!

完整代码查看请点击这里:

TB186fNe9SD3KVjSZFKXXb10VXa.png

我们最后一件事没有涉及的是何时使用物体检测?如果你还没有对此做出响应,可以阅读这篇文章,它提供了有关如何使用对象检测的七个有趣想法。记住,不要局限于这些想法!雷锋网(公众号:雷锋网)雷锋网雷锋网

想要继续查看该篇文章相关链接和参考文献?

点击【简易版物体识别!】即可访问~

Github项目推荐 | AMD GPU上的HD画质50fps实时车辆检测

本项目使用深度学习网络Yolo-V2以高清分辨率(1920x1080)以惊人的50帧/秒的速度检测实时交通中的汽车/公共汽车。 项目中使用的模型针对使用MIVisionX工具包在AMD-GPU上的推理性能进行了优化。

详情查看:https://ai.yanxishe.com/page/blogDetail/13656

目录
相关文章
|
存储 安全 对象存储
oss访问控制(Access Control)
oss访问控制(Access Control)
1129 4
|
消息中间件 存储 Java
RabbitMQ之发布确认高级
【1月更文挑战第10天】 在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢:
287 62
|
XML API 数据格式
天气预报API接口
原文:天气预报API接口 一、中央气象台API接口: 1.
19038 0
|
开发工具 Docker 容器
Docker设置国内镜像源
Docker设置国内镜像源
18380 1
|
8月前
|
存储 安全 数据安全/隐私保护
电脑突然就剩c盘了怎么恢复?
在日常使用电脑的过程中,许多人可能遇到过一个令人头疼的问题:打开“此电脑”时,发现原本分区明确的硬盘突然只剩下C盘,D盘、E盘甚至整个数据盘都“消失”了。这种情况看似棘手,但实际上,大多数情况下数据并未真正丢失,而是由于系统问题或设置错误导致分区不可见。本文将为大家详细分析可能的原因,并提供解决方法,帮助您恢复消失的分区和数据。
|
11月前
|
机器学习/深度学习 缓存 算法
Python算法设计中的时间复杂度与空间复杂度,你真的理解对了吗?
【10月更文挑战第4天】在Python编程中,算法的设计与优化至关重要,尤其在数据处理、科学计算及机器学习领域。本文探讨了评估算法性能的核心指标——时间复杂度和空间复杂度。通过详细解释两者的概念,并提供快速排序和字符串反转的示例代码,帮助读者深入理解这些概念。同时,文章还讨论了如何在实际应用中平衡时间和空间复杂度,以实现最优性能。
180 6
|
缓存 监控 Java
如何在 Java 8 中创建和使用线程池?
【7月更文挑战第8天】
704 9
如何在 Java 8 中创建和使用线程池?
powershell 设置代理
powershell 设置代理
459 0
|
Python
Python 批量抓取help()函数的帮助内容(附36M帮助文档)
Python 批量抓取help()函数的帮助内容(附36M帮助文档)
168 0
|
消息中间件 微服务
微服务项目:尚融宝(终)(核心业务流程:整合Rabbit MQ发送短信)
微服务项目:尚融宝(终)(核心业务流程:整合Rabbit MQ发送短信)