深度学习:物体的识别和检测,以“找椅子”为例

网上看到的一篇文章,讲的感觉比较浅显易懂。其中的细节深入,可以慢慢看。

原文链接  http://news.huahuo.com/44215.html

本文将介绍定义问题的方式,以及我解决问题的方式。

  目录

  为什么选择“椅子问题”?

  问题简单化:在清晰的图像中进行“椅子识别”

  进一步的挑战:找到椅子的位置

  一个先进的“对象识别”技术——YOLO概述

  将YOLO应用于“椅子识别”

  面临的挑战以及未来将采取的步骤

  l  为什么选择“椅子问题”?

  首先我将阐述我为什么想要在一张照片中“数椅子”。

  在Analytics Vidhya的办公室里,通常会有10到15个人。但到了夏天,实习生们就会“涌入”我们的办公室。所以,如果我们要在夏天开全员大会,我们就必须要从其他房间里拉出所有空的椅子。

  我是一个特别懒的人,所以我想,有没有一种算法能够直接告诉我们哪间房间有空闲的椅子。这样一来,我们就不用挨个房间找椅子了,省时又省力。

  这看上去是个再简单不过的问题,但我可以用它来尝试我获得的新技能。深度学习能够解决这个问题吗?老实说,我也不确定深度学习究竟能不能用来解决这一问题,但是试一下总没有坏处,不是吗?

  问题中需完成的任务

  既然你已经了解了我们需要解决的问题,那么接下来我会向你介绍我解决问题的过程。我会把这个问题分解为四个不同的任务——

  假如我们有一个房间的视频资源,那么在视频中有没有出现一把椅子?

  如果视频中出现了椅子,那么这把椅子在房间的什么位置呢?

  这把椅子是否被占用了?如果有未被占用的椅子,那么未被占用的椅子数量是多少呢?

  我们应该从哪间房间里搬空椅子?

  我决定先解决一个相对简单的问题,然后再尝试解决更复杂的问题。循序渐进,一步步达到我的目标。这也是我将这个问题分解为四个不同的任务的原因。在本文,我将详细介绍前两个任务的完成过程;在后续文章中,我会继续介绍后两个任务的完成过程。

  问题简单化:在清晰的图像中进行“椅子识别”

  解决“椅子问题”的第一步,也是最简单的一步,就是判断图片中的房间内是否有椅子。现在,我将这个问题进一步简化——我将网络对视频资源的需求忽略,给网络输入了我拍摄的几张照片。

  假设我给你两张照片,你能告诉我哪一张照片中有椅子吗?

三分钟搞懂深度学习:物体的识别和检测,以“找椅子”为例
三分钟搞懂深度学习:物体的识别和检测,以“找椅子”为例

  答案是第一张,而你究竟是怎么知道的呢?

  因为你见过椅子很多很多次了,所以对你来说判断图片里有没有椅子并不难。换言之,你对于现实中的椅子长什么样已经有了了解。同样的,我们可以训练一个神经网络,让网络帮我们完成这个识别的工作。

  顺便提一下,我们之所以使用神经网络而不用其他的算法,是因为神经网络是在图像处理问题方面最强大、最先进的技术。

  所以,我将一个经过ImageNet数据集预训练的神经网络应用到这些图像上。

  但是当我让模型识别图像中的对象时,出现了一个问题——它不能准确地分别图像中的对象。例如,下图是模型针对图像的输出结果。

三分钟搞懂深度学习:物体的识别和检测,以“找椅子”为例

  [[('n03179701', 'desk', 0.56483036), ('n03337140', 'file', 0.14689149), ('n04550184', 'wardrobe', 0.03918023)]]

  它将图片中的“椅子”错误地判断成了“书桌”。这样的结果实在令人很失望,因为书桌和椅子的相似度不高,按理来说是非常容易区分的。

三分钟搞懂深度学习:物体的识别和检测,以“找椅子”为例

  解决“椅子还是书桌”的问题

  正如我在之前的文章中提到的,每当我在建立神经网络时遇到问题,我就会逐步解决这个问题。我会将每个步骤列成一个清单:

  第一步:检查网络架构

  第二步:检查神经网络的超参数

  第三步:检查网络的复杂性

  第四步:检查输入数据的结构

  第五步:检查数据的分布

  在一番检查评估之后,我发现模型的图像输入是不正确的,因为我没有正确地处理图像的纵横比例。所以,为了解决这个问题,我添加了一个自定义代码,该自定义代码之前在GitHub上的一个keras问题中出现过。更新的图像如下图:

三分钟搞懂深度学习:物体的识别和检测,以“找椅子”为例

  [[('n02791124', 'barber_chair', 0.77817303), ('n03179701', 'desk', 0.090379775), ('n03337140', 'file', 0.033129346)]]

  处理完这个问题以后,模型就能开始正常地工作,输出正确的结果了。

  进一步的挑战:找到椅子的位置

  现在,我们已经判断出了图像中有一把椅子,那么接下来我们就要识别这把椅子在什么位置。除了这把椅子,我们还要识别出图像中的人。我们需要通过识别这个人来判断这把椅子是否被占用了。这两个任务(任务二和任务三)将有助于我们解决和处理更大的任务,判断作这把椅子是否被占用了。

  与前面的任务一样,我们将使用一个预训练的网络,这个网络将给我们提供一个可接受的分数。目前,YOLO网络是“对象检测”的最佳模型,它能够实时地展示相当不错的性能。在本文,我对YOLO网络做了简单的介绍。下面,我们来看看如何利用YOLO解决这个问题。

  使用YOLO进行“椅子检测”

  在系统中设置YOLO网络,我们可以按照以下简单的步骤:

  第一步:

  git clone https://github.com/pjreddie/darknet

  cd darknet

  make

  第二步:

  wget https://pjreddie.com/media/files/yolo.weights

  用YOLO来解决我们的问题,你需要输入以下指令,并且提供你自己图像的位置

  ./darknet detect cfg/yolo.cfg yolo.weights ../../data/image.jpg

  在我们的图像上应用了YOLO之后,我发现其结果非常不错。下面是一些例子:

三分钟搞懂深度学习:物体的识别和检测,以“找椅子”为例

  面临的挑战以及未来将采取的步骤

  虽然开端进展得非常顺利,但是仍然有问题会阻碍这个项目的发展。以下是其中一些问题:

  问题一:这个YOLO模型还是会出现一些错误,它并不是一个100%正确的模型。比如,在下面的这张图片中,一个垃圾桶竟然被错误地识别成了一个人!

三分钟搞懂深度学习:物体的识别和检测,以“找椅子”为例

  问题二:如果在一张图像中,一把椅子挡住了另外一把椅子,算法还能识别出这把被挡住的椅子吗?这是个值得思考的问题。

三分钟搞懂深度学习:物体的识别和检测,以“找椅子”为例

  除了这些可能出现的问题之外,还有一些更加实际的细节需要考虑,比如说,算法推荐一个解决方案需要多长时间?算法需要运行什么类型的硬件?等等。这些都是在把算法作为商品出售之前需要考虑和解决的问题。

  同样,像之前所说的,在这篇文章中只讨论前面两个任务,还没有涉及到后面两个任务。那么,接下来的任务就是计算出房间内的椅子数量,然后建立起一个“端到端”的产品。

  尾注

  本文内容涵盖了图像中的“物体检测和识别”,其中的物体就是“椅子”。针对物体识别,我们用了一个简单的预训练的模型来识别图像中的物体。另一方面,针对物体检测,我们使用了YOLO网络——一项非常先进的对象实时检测技术。

  在后续的文章中,我将介绍如何计算图像中椅子的数量。

  本文来源于花火网:转载请保留链接,不保留本文链接视为侵权,谢谢合作!


  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python是一种高级编程语言,对于机器学习领域来说,Python已经成为了一种基本的工具语言。物体识别训练是一项基于机器学习的技术,它的目的是训练计算机可以自动识别物体的能力。 在Python中,使用TensorFlow、OpenCV等工具库可以实现物体识别训练。物体识别训练需要一定的数据集来进行学习,通常使用标记图片集合和非标记图片集合的对比来进行学习。在训练的过程中,可以设置神经网络的层数,大小,学习率等参数来对模型进行优化和调整。 在物体识别训练中,还需要进行数据清理,数据增强等工作,以提高模型的准确性和稳定性。此外,训练中需要注意模型的过拟合问题,可以使用L1正则化,L2正则化等方法来解决。 总而言之,Python物体识别训练是一项重要的机器学习技术,通过对数据集的学习和模型的优化,可以实现对物体的快速准确识别。通过深入学习和理解Python物体识别训练技术的原理和方法,可以在人工智能和计算机视觉等领域取得更好的成果。 ### 回答2: Python是一种非常流行的编程语言,适合用于许多应用程序,包括物体识别训练。物体识别是一种机器学习技术,可被用于分类、检测和跟踪多种物体。 Python的物体识别训练可以使用许多开源库,如TensorFlow和Keras。这些库为Python用户提供了大量可用的机器学习工具和函数,可帮助用户训练模型,以便在未来能够准确地检测物体。 训练物体识别模型需要大量的数据和时间。数据可以通过拍摄或者收集大量的物体图像图像需要包含许多不同的物体,包括小型物品、较大的物品和在不同位置和角度下的物品。 一旦将图像数据收集好,就可以使用Python进行模型训练。在这个过程中,用户需要选择适当的模型类型,如卷积神经网络(CNN),递归神经网络(RNN)和多层感知器(MLP)等。编程人员需要根据数据集的特点和需要用到的功能来选择最合适的模型。 训练过程需要进行反向传播和其他优化算法,以便调整模型的参数。这些步骤需要占用大量的计算资源,包括GPU和CPU等。 Python的物体识别训练还需要进行调试和校准,以减小误差和提高准确性。 总之,Python的物体识别训练需要经过深思熟虑的设计和大量的数据集。建议初学者可以先从使用已经训练好的模型开始,然后再逐步利用Python进行自己的模型训练。 ### 回答3: Python 物体识别训练,是一项非常流行的人工智能技术。它可以识别图像或视频中的物体并进行分类、检测、跟踪等。如何使用 Python 进行训练呢?一般步骤如下: 第一步:获取数据集,可以从公开的数据集中获取,也可以自己收集或制作数据集。 第二步:数据处理,包括对数据集进行清洗、预处理、归一化等操作,以便更好地训练模型。 第三步:选择合适的深度学习模型,并对模型进行架构设计。 第四步:训练模型,采用适当的训练策略和优化器,根据训练集进行模型训练。 第五步:评估模型,在验证集上测试模型的准确率、召回率等指标,对模型进行调整。 第六步:使用模型进行预测,在使用集上测试模型是否能够正确预测物体的分类、位置等信息。 最后,需要注意的是,Python 物体识别训练需要丰富的知识和实战经验。需要不断探索新的技术、方法和应用场景,才能在这一领域中获得成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值