目标定位和特征点检测

1. 目标定位

目标检测是计算机视觉领域中的一个新兴的应用方向,在构建目标检测之前,我们首先了解一下object localization目标定位。

前面说过的图片分类任务就是算法遍历图片,判断其中的对象是不是汽车,主要是图片分类

这里所说的目标定位指的是我们不仅要用算法判断图片中是不是一辆汽车,还要在图片中标记出它的位置,用边框或红色方框把目标 标注圈起来,这就是定位分类问题。其中定位的意思是 判断目标在图片中的具体位置。在目标检测问题中,图片可以包含有多个目标,甚至单张图片中会有多个不同分类的目标,因此图片分类的思路可以帮助学习分类定位,而目标定位的思路又有助于学习目标检测。

一般的图片分类问题,我们输入一张图片到多层卷积神经网络中,它会输出一个特征向量,并反馈给softmax单元来预测图片类型。如果我们想定位图片中的目标具体的位置,我们可以让神经网络多输出几个单元,具体来说就是让神经网络再多输出4个数字标记为bx、by、bh、bw。这四个数字是被检测对象的边界框的参数化表示。

(bx,by)表示为目标边界框的中心点坐标

bh表示为边界框的高度

bw表示为边界框的宽度

因此,训练集不仅要包含神经网络要预测的对象分类标签,还要包含表示边界框的这四个数字。接着采用监督学习算法,输出一个分类标签,还有这四个参数值,从而给出被检测对象的边界框位置。

2. 目标对象标签Y的定义

如何为监督学习任务定义目标标签y?

这里有四个分类,神经网络输出的是这四个数字和一个分类标签或分类标签出现的概率。

目标标签Y的定义如下:

它是一个向量,第一个组件Pc表示是否含有对象,如果对象属于前三类,则Pc=1,如果是background或者其他,则Pc=0,即图片中没有我们指定的对象。若我们检测到对象,则接下来会输出目标边界框的四个参数bx、by、bw、bh。如果存在某个目标对象,则除了输出Pc=1,边界框的四个参数,同时还会输出C1、C2、C3,表示该对象属于1~3中的哪一类,属于哪一类其对应的Cx就为1,其余为C为0。如果输入图片中没有以上的3中对象或者说只有背景时,那么Pc=0,那么标签Y中的其他参数将变得毫无意义,不要考虑边框坐标以及Cx的值。

所以针对给定的被标记的训练样本,不论输入图片是否含有定位对象, 构建输入图片X和分类标签Y的具体过程都是如此,这些数据最终定义了训练集。

训练神经网络的损失函数

其参数为类别Y和网络输出\hat{Y},损失函数可以表示为L(\hat{Y},Y),如果采用平方误差策略,则

 {\color{Red} L(\hat{Y},Y)=(\hat{Y_{1}}-Y_{1})^2 + (\hat{Y_{2}}-Y_{2})^2 + (\hat{Y_{3}}-Y_{3})^2 + ... + (\hat{Y_{8}}-Y_{8})^2}

注意,这里的Y含有8个元素,损失值等于每个元素相应差值的平方和。

如果图片中存在定位对象,则Y_{1} = P_{c} = 1,损失值就是各个元素的平方和。

另一种情况是 Y_{1} = 0,也就是 P_{c} = 0,那么损失值是(\hat{Y_{1}}-Y_{1})^2。因为对于此种情况,我们不用考虑其他元素,只需关注神经网络输出P_{c}的准确度。

 为了了解目标定位的细节,这里用平方误差简化了描述过程。实际应用中,你可以不用对C1、C2、C3和softmax激活函数应用 对数损失函数并输出其中一个元素值,通常做法是对边界框坐标应用平方误差或类似方法,对P_{c}应用逻辑回归函数,甚至采用平方预测误差也是可以的。

3. 特征点检测

我们可以采集人脸中的64个特征点并生成包含这些特征点的标签训练集,然后利用神经网络输出脸部关键特征点的位置。具体做法是:准备一个卷积网络和一些特征点的数据集,将人脸输入卷积网络,输出0或1,输出1表示有人脸,然后输出(l_{1}x,l_{1}y),(l_{2}x,l_{2}y)...(l_{64}x,l_{64}y)共64个特征点的坐标值,共129个输出单元,由此实现了对图片的人脸检测和定位;0表示无人脸,那么特征点坐标值数据便不再考虑了。这就是一个识别脸部表情的基本构造模块。

为了构建这样的网络,我们首先需要准备一个标签的训练集,也就是图片X和标签Y的集合,这些特征点都是人为花费大量时间手工标注的。

同样,如果我们做人体姿态检测,我们还可以在人体四肢各部位定义一些关键特征点,然后通过神经网络标注人物姿态的关键特征点,再输出这些标注过的特征点,就相当于输出了人物的姿态动作。当然,要实现这个功能,你需要设定这些关键特征点,从胸部中心点(l_{1}x,l_{1}y)一直到(l_{32}x,l_{32}y)共32个姿态特征点。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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的目标定位可以概括为:成为一种用户友好、功能强大、广泛应用于数据处理、人工智能等领域,并具有跨平台和可移植性的编程语言。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值