目标定位(Object localization)

来源:Coursera吴恩达深度学习课程

在构建目标检测之前,建议先了解一下目标定位(object localization)

在上图的这个例子中,图片分类(image classification)不仅要判断图片中是不是一辆汽车,还要在图片中标记出它的位置,用边框把汽车圈起来,这就是定位分类问题(classification with localization problem)。其中“定位”(localization)的意思是判断汽车在图片中的具体位置。比如,在自动驾驶程序(autonomous driving application)中,程序不但要检测其它车辆,还要检测其它对象,如行人(pedestrians)、摩托车(motorcycles)等。

这里研究的分类定位问题,通常只有一个较大的对象位于图片中间位置,对它进行识别和定位。在实际的目标检测问题中,图片可以含有多个对象(multiple objects),甚至单张图片中会有多个不同分类的对象。因此,图片分类(image classification)的思路可以帮助学习分类定位(classification with localization),而目标定位的思路又有助于学习目标检测(detection),现在先看分类和定位(classification with localization)。

如上图是一个图片分类问题,输入一张图片经过多层卷积神经网络,它会输出一个特征向量,并反馈给softmax单元来预测图片类型。在构建汽车自动驾驶系统时,识别的对象可能包括以下几类:行人(pedestrian)、汽车(car)、摩托车(motorcycle)和背景(background,这意味着图片中没有行人、汽车和摩托车),这四个分类就是softmax函数可能输出的结果。

这就是标准的分类过程(classification pipeline),如果你还想定位图片中汽车的位置,可以让让神经网络再多输出4个数字,标记为b_x,b_y,b_h和b_w,这四个数字是被检测对象的边界框的参数化表示(parameterize),输出一个边界框。

约定一下本周课程将使用的符号表示,输入的原始图片左上角的坐标为(0,0),右下角标记为(1,1)。指定红色方框的中心点(midpoint),坐标为(b_x,b_y)边界框的高度为b_h宽度为b_h。因此训练集(train set)不仅包含神经网络要预测的对象分类标签,还要包含表示边界框的这四个数字,接着采用监督学习算法,输出一个分类标签(class label),还有四个参数(four parameters),从而给出检测对象的边框位置。在这个例子中,b_x的理想值是0.5,因为它表示汽车位于图片水平方向的中间位置;b_y大约是0.7,表示汽车位于距离图片底部十分之三的位置;b_h约为0.3,因为红色方框的高度是图片高度的0.3倍;b_w约为0.4,红色方框的宽度是图片宽度的0.4倍。

下面具体看如何为监督学习任务定义目标标签y,如下图:

这有四个分类,神经网络输出的是这四个数字和一个分类标签,或分类标签出现的概率。目标标签y的定义如下

这是一个向量,第一个p_c表示是否含有对象,在这里如果对象属于前三类(行人(pedestrian)、汽车(car)、摩托车(motorcycle)),则p_c=1,如果是背景(background),则图片中没有要检测的对象,则p_c=0。我们可以认为它表示被检测对象属于某一类的概率,背景分类除外。如果检测到对象,输出被检测对象的边界框参数b_x,b_y,b_h和b_w,同时输出c_1、c_2和c_3,表示该对象属于1-3类中的哪一类(行人、汽车或者摩托车)

为简化分析,在这里假设图片中只有一个对象,在这个分类定位问题中,图片最多只会出现其中一个对象。

上图中给出了两个例子的标签y的表示:只有一辆车(紫色框)和背景图像(绿色框,当p_c=0时,y的其它参数变得毫无意义,这里都写成问号,表示“毫无意义”的参数(so this is a don’t care))。针对给定的被标记的训练样本,不论图片中是否含有定位对象,构建输入图片x和分类标签y的具体过程都是如此。这些数据最终定义了训练集(define your training set)。

最后看一下神经网络的损失函数(loss function),参数为网络输出y帽和类别y,采用平方误差策略(squared error),则损失值等于每个元素相应差值的平方和,公式如下:

分析一下,当y_1=1时,平方误差策略为这8个元素预测值和实际输出结果之间差值的平方。当y_1=0时,y中的后7个元素都不用考虑,只需要考虑神经网络评估yy_1(即p_c)的准确度。

注意,这里用平方误差简化了描述过程,实际应用中,通常做法是对边界框坐标应用平方差或类似方法,对p_c应用逻辑回归函数,甚至采用平方预测误差也是可以的。

以上就是利用神经网络解决对象分类和定位问题的详细过程。

说明:记录学习笔记,如果错误欢迎指正!转载请联系我。

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Python 是一种高级编程语言,它的目标定位主要体现在以下几个方面。 首先,Python目标是提供一种简单易学的语法和编程风格。与其他编程语言相比,Python 的语法更加简洁,容易理解和使用。它使用缩进来表示代码块,避免了繁琐的花括号或关键字。这种简单易学的语法使得初学者可以快速上手,提高编程的效率。 其次,Python目标是提供丰富的第三方库和模块。Python 生态系统中有大量的开源模块和库可以供开发者使用。这些库涵盖了各种领域,包括科学计算、数据分析、网络编程、图形图像处理等等。通过使用这些库,开发者可以快速完成各种任务,避免重复造轮子,提高开发效率。 另外,Python目标是跨平台和可移植性。Python 可以运行在多个操作系统上,包括 Windows、Linux、MacOS 等。这使得开发者可以在不同的平台上进行开发和部署,无需重写代码。同时,Python 也提供了一些工具和技术来保证代码的可移植性,使得代码能够在不同环境中正常运行。 此外,Python目标也包括强大的社区支持和活跃的开发者社区。Python 社区中有大量的开发者分享自己的经验和知识,提供帮助和支持。这使得新手可以通过学习他人的经验来提高自己的技术水平,解决问题。同时,Python 社区也不断更新和维护 Python 的开发框架和工具,为开发者提供更好的开发环境。 总的来说,Python目标定位是提供一种简单易学、丰富强大、跨平台的编程语言,以满足不同开发者的需求,并促进社区的交流和发展。 ### 回答2: Python是一种高级编程语言,具有简洁易读、易学易用的特点,广泛应用于软件开发、数据分析、人工智能等领域。目标定位Python主要有以下几个方面。 首先,Python目标定位是成为一门易学易用的编程语言。Python采用简洁的语法和一致的编程风格,使初学者能够快速入门,并且能够快速编写功能完善的程序。Python的设计哲学强调代码的可读性和明确性,使得不同水平的开发者都能够轻松理解和维护代码。 其次,Python定位于开发高质量软件。Python提供了丰富的标准库和第三方库,使开发者能够方便地实现各种功能和解决各种问题。Python还支持面向对象编程,可以更好地组织和管理代码,提高代码的可重用性和可维护性。此外,Python还拥有强大的调试和测试工具,有助于开发者快速定位和解决问题。 再次,Python目标定位是数据分析和科学计算。Python拥有丰富的数据处理和科学计算库,如Numpy、Pandas、Matplotlib等,可以方便地进行数据清洗、特征提取和模型训练等操作。此外,Python还支持机器学习深度学习框架,如Scikit-learn和Tensorflow,使数据科学家能够更好地构建和部署机器学习模型。 最后,Python也是人工智能的首选语言之一。Python拥有众多AI相关的库和工具,如NLTK、OpenCV和Keras等,能够方便地进行自然语言处理、计算机视觉和深度学习等任务。Python还支持大规模并行计算和分布式计算,使得处理大规模数据和训练复杂模型成为可能。 总的来说,目标定位Python是成为一门易学易用、开发高质量软件、支持数据分析和科学计算、以及推动人工智能发展的编程语言。Python的广泛应用和持续发展,使得它成为了众多开发者和研究者的首选语言之一。 ### 回答3: Python是一种高级编程语言,广泛应用于软件开发、数据分析、人工智能等领域。它具有优雅简洁、易读易写的语法特点,深受开发者喜爱。目标定位Python有以下几个方面: 首先,Python目标是成为一种用户友好的编程语言。它注重代码的可读性,强调使用简洁明了的语法结构,并提供了大量的标准库,方便开发者快速开发出高质量的应用程序。 其次,Python致力于提供强大的数据处理和分析能力。它拥有丰富的数据处理库和强大的科学计算工具,比如NumPy、Pandas和Matplotlib等,可以满足数据科学家和分析师处理大规模数据集和进行复杂分析的需求。 此外,Python还致力于成为一种广泛应用于人工智能领域的编程语言。它的机器学习库Scikit-learn和深度学习库TensorFlow和PyTorch等均非常流行,被用于各种人工智能任务,比如图像识别、自然语言处理和推荐系统等。 最后,Python还追求跨平台和可移植性。它可以在各种操作系统上运行,包括Windows、Linux和MacOS等。这使得开发者可以无缝移植他们的代码,并在不同平台上进行开发和部署。 综上所述,Python目标定位可以概括为:成为一种用户友好、功能强大、广泛应用于数据处理、人工智能等领域,并具有跨平台和可移植性的编程语言。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值