米老鼠NANA
什么是人体骨骼关键点检测?
应用
挑战
人体骨骼关键点检测方法主要分两周:自上而下和自下而上。
coordinate :坐标 直接将关键点坐标作为最后网络需要回归的目标,这样可以得到每个坐标点的直接位置信息
heatmap :热图 每一类坐标用一个概率图来表示,对图片中的每个像素位置都给一个概率,表示该点属于对应类别关键点的概率。距离关键点位置越近的像素点的概率越接近于1,距离关键点越远的像素点的概率越接近于0。具体的一般使用高斯函数来模拟。
offset :偏移量 表示距离目标关键点一定范围内的像素位置与目标关键点之间的关系。
Convolutional Pose Machines :本论文将深度学习应用于人体姿态分析,同时用卷积图层表达纹理信息和空间信息。主要网络结构分为多个stage,其中第一个stage会产生初步的关键点的检测效果,接下来的几个stage均以前一个stage的预测输出和从原图提取的特征作为输入,进一步提高关键点的检测效果。具体的流程图如下图(摘自论文[1])所示。
Cascaded Pyramid Network for Multi-Person Pose Estimation :本论文将深度学习应用于人体姿态分析,同时用卷积图层表达纹理信息和空间信息。主要网络结构分为多个stage,其中第一个stage会产生初步的关键点的检测效果,接下来的几个stage均以前一个stage的预测输出和从原图提取的特征作为输入,进一步提高关键点的检测效果。具体的流程图如下图(摘自论文[2])所示。
RMPE :本论文主要考虑的是自上而下的关键点检测算法在目标检测产生Proposals的过程中,可能会出现检测框定位误差、对同一个物体重复检测等问题。检测框定位误差,会出现裁剪出来的区域没有包含整个人活着目标人体在框内的比例较小,造成接下来的单人人体骨骼关键点检测错误;对同一个物体重复检测,虽然目标人体是一样的,但是由于裁剪区域的差异可能会造成对同一个人会生成不同的关键点定位结果。本文提出了一种方法来解决目标检测产生的Proposals所存在的问题,即通过空间变换网络将同一个人体的产生的不同裁剪区域(Proposals)都变换到一个较好的结果,如人体在裁剪区域的正中央,这样就不会产生对于一个人体的产生的不同Proposals有不同关键点检测效果。具体Pipeline如下图(摘自论文[14])所示。
Part Segmentation :即对人体进行不同部位分割,而关键点都落在分割区域的特定位置,通过部位分割对关键点之间的关系进行建模,既可以显式的提供人体关键点的空间先验知识,指导网络的学习,同时在最后对不同人体关键点进行聚类时也能起到相应的连接关键点的作用。如下图(论文[4])所示。
Part Affinity Fields :
网络分为两路结构,一路是上面的卷积层,用来获得置信图;一路是下面的卷积层,用来获得PAFs。网络分为多个stage,每一个stage结束的时候都有中继监督。每一个stage结束之后,S以及L都和stage1中的F合并。上下两路的loss都是计算预测和理想值之间的L2 loss。
personlab是一个自下而上的人体检测和姿态估计算法。包括两个步骤:
关键点检测阶段的目标是检测属于图像(可能不止一个人)中任何人体的关键点。该阶段生成一个热图和一个偏移量:
假设 是图像中二维位置中的一个,其中 是图像的位置索引, 是像素点的个数。
使用Hough投票集合热图和偏移量,聚合成hough分数映射 , 其中 为图像的每个位置, 为双线性插值核。
的局部最大值作为关键点的候选位置点,但是 没有与个体相关的信息,当图像中有多个个体存在时,我们需要一个机制将关键点聚合在其对应的个体上。 Mid-range pairwise offsets 为了达到以上目的,在网络上加入一个分离的成对中射程2-D偏移域输出 用来连接成对的关键点。训练集中 ,表示对于同一个个体 从第 个关键点到第 个关键点。
对于具有大量个体的情况,很难准确的回归 ,使用更准确的短射程偏移来递归的修正:
[1] Convolutional Pose Machines [2] Cascaded Pyramid Network for Multi-Person Pose Estimation [3] RMPE: Regional Multi-Person Pose Estimation
麦兜兜次鱼丸
论文原文:
YOLO(you only look once)是继RCNN、faster-RCNN之后,又一里程碑式的目标检测算法。yolo在保持不错的准确度的情况下,解决了当时基于深度学习的检测中的痛点---速度问题。下图是各目标检测系统的检测性能对比:
如果说faster-RCNN是真正实现了完全基于深度学习的端到端的检测,那么yolo则是更进一步,将 目标区域预测 与 目标类别判断 整合到单个神经网络模型中。各检测算法结构见下图:
每个网格要预测B个bounding box,每个bounding box除了要回归自身的位置之外,还要附带预测一个confidence值。这个confidence代表了所预测的box中含有object的置信度和这个box预测的有多准两重信息,其值是这样计算的:
其中如果有object落在一个grid cell里,第一项取1,否则取0。第二项是预测的bounding box和实际的groundtruth之间的IoU值。
每个bounding box要预测(x, y, w, h)和confidence共5个值,每个网格还要预测一个类别信息,记为C类。即SxS个网格,每个网格除了要预测B个bounding box外,还要预测C个categories。输出就是S x S x (5*B+C)的一个tensor。(注意:class信息是针对每个网格的,即一个网格只预测一组类别而不管里面有多少个bounding box,而confidence信息是针对每个bounding box的。)
举例说明: 在PASCAL VOC中,图像输入为448x448,取S=7,B=2,一共有20个类别(C=20)。则输出就是7x7x30的一个tensor。整个网络结构如下图所示:
在test的时候,每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score:
等式左边第一项就是每个网格预测的类别信息,第二三项就是每个bounding box预测的confidence。这个乘积即encode了预测的box属于某一类的概率,也有该box准确度的信息。
得到每个box的class-specific confidence score以后,设置阈值,滤掉得分低的boxes,对保留的boxes进行NMS(非极大值抑制non-maximum suppresssion)处理,就得到最终的检测结果。
1、每个grid因为预测两个bounding box有30维(30=2*5+20),这30维中,8维是回归box的坐标,2维是box的confidence,还有20维是类别。其中坐标的x,y用bounding box相对grid的offset归一化到0-1之间,w,h除以图像的width和height也归一化到0-1之间。
2、对不同大小的box预测中,相比于大box预测偏一点,小box预测偏一点肯定更不能被忍受的。而sum-square error loss中对同样的偏移loss是一样。为了缓和这个问题,作者用了一个比较取巧的办法,就是将box的width和height取平方根代替原本的height和width。这个参考下面的图很容易理解,小box的横轴值较小,发生偏移时,反应到y轴上相比大box要大。其实就是让算法对小box预测的偏移更加敏感。
3、一个网格预测多个box,希望的是每个box predictor专门负责预测某个object。具体做法就是看当前预测的box与ground truth box中哪个IoU大,就负责哪个。这种做法称作box predictor的specialization。
4、损失函数公式见下图:
在实现中,最主要的就是怎么设计损失函数,坐标(x,y,w,h),confidence,classification 让这个三个方面得到很好的平衡。简单的全部采用sum-squared error loss来做这件事会有以下不足:
解决方法:
只有当某个网格中有object的时候才对classification error进行惩罚。只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个cell的所有box中最大。
作者采用ImageNet 1000-class 数据集来预训练卷积层。预训练阶段,采用网络中的前20卷积层,外加average-pooling层和全连接层。模型训练了一周,获得了top-5 accuracy为(ImageNet2012 validation set),与GoogleNet模型准确率相当。
然后,将模型转换为检测模型。作者向预训练模型中加入了4个卷积层和两层全连接层,提高了模型输入分辨率(224×224->448×448)。顶层预测类别概率和bounding box协调值。bounding box的宽和高通过输入图像宽和高归一化到0-1区间。顶层采用linear activation,其它层使用 leaky rectified linear。
作者采用sum-squared error为目标函数来优化,增加bounding box loss权重,减少置信度权重,实验中,设定为\lambda _{coord} =5 and\lambda _{noobj}= 。
作者在PASCAL VOC2007和PASCAL VOC2012数据集上进行了训练和测试。训练135轮,batch size为64,动量为,学习速率延迟为。Learning schedule为:第一轮,学习速率从缓慢增加到(因为如果初始为高学习速率,会导致模型发散);保持速率到75轮;然后在后30轮中,下降到;最后30轮,学习速率为。
作者还采用了dropout和 data augmentation来预防过拟合。dropout值为;data augmentation包括:random scaling,translation,adjust exposure和saturation。
YOLO模型相对于之前的物体检测方法有多个优点:
1、 YOLO检测物体非常快
因为没有复杂的检测流程,只需要将图像输入到神经网络就可以得到检测结果,YOLO可以非常快的完成物体检测任务。标准版本的YOLO在Titan X 的 GPU 上能达到45 FPS。更快的Fast YOLO检测速度可以达到155 FPS。而且,YOLO的mAP是之前其他实时物体检测系统的两倍以上。
2、 YOLO可以很好的避免背景错误,产生false positives
不像其他物体检测系统使用了滑窗或region proposal,分类器只能得到图像的局部信息。YOLO在训练和测试时都能够看到一整张图像的信息,因此YOLO在检测物体时能很好的利用上下文信息,从而不容易在背景上预测出错误的物体信息。和Fast-R-CNN相比,YOLO的背景错误不到Fast-R-CNN的一半。
3、 YOLO可以学到物体的泛化特征
当YOLO在自然图像上做训练,在艺术作品上做测试时,YOLO表现的性能比DPM、R-CNN等之前的物体检测系统要好很多。因为YOLO可以学习到高度泛化的特征,从而迁移到其他领域。
尽管YOLO有这些优点,它也有一些缺点:
1、YOLO的物体检测精度低于其他state-of-the-art的物体检测系统。
2、YOLO容易产生物体的定位错误。
3、YOLO对小物体的检测效果不好(尤其是密集的小物体,因为一个栅格只能预测2个物体)。
什么是人体骨骼关键点检测? 应用 挑战 人体骨骼关键点检测方法主要分两周:自上而下和自下而上。 coordinate :坐标 直接将关键点坐标作为最后网络需
求一篇《大学生体质测试与健康》论?HI
论文地址: 前置文章:10/16、10/17、10/18 本文提出了Point Fractal Network(PF-Net),旨在从不完整的点云数据中
对于目标检测方向并不是特别熟悉,本文记录一下RCNN, fast-RCNN, faster-RCNN, mask-RCNN这4篇有关目标检测的论文笔记和学习心得
在目标检测中,IoU 为预测框 (Prediction) 和真实框 (Ground truth) 的交并比。如下图所示,在关于小猫的目标检测中,紫线边框为预测框