本发明涉及模式识别技术、智能监控技术等领域,具体的说,是基于Inception V3的多数据集联合训练的行人外观属性识别方法。
背景技术:
近年来,视频监控系统已经被广泛应用于安防领域。安防人员通过合理的摄像头布局,实现对目标监控场景的全覆盖,通过全天候对目标区域的监控,能够有效控制犯罪活动,来保证公众的人身安全。计算机技术的飞速发展,大大促进了视频监控系统智能化,提高了获取视频信息的效率。人体相关信息是监控场景下应该重点关注的信息。通过对监控场景下人流流量的统计分析,可以对公共安全技术情况进行合理的预测,从而有效防止意外事故的发生。随着计算机视觉技术的进一步发展,人们迫切希望对检测到的人体提取更多有用的信息,例如性别特征、年龄特征、外观特征等,这些人体相关的特征具有广泛的应用。在安防领域,利用性别特征、年龄特征、外观特征等可以快速锁定特定人群,定位目标位置,从而可以进一步进行实现目标检索或者行人重识别等功能。
当前对人体外观属性的识别主要分为两大领域,分别是基于人脸图像的属性识别和基于全身图像的属性识别。
人脸识别最典型的特征脸算法,是通过使用K-L变换进行人脸识别。在将年龄估计作为分类模式的研究中,Dehshibi等人提取人脸图像的纹理特征和面部形状特征,基于人工神经网络进行训练,从而实现对人脸图像进行年龄段的分类。Gao等人把年龄段分为婴儿、小孩、成年、老年,然后通过Gabor滤波器提取人脸图像特征,结合SVM分类器进行年龄属性识别。Takimoto等人使用BP神经网络,他们使用三层的BP神经网络进行训练和分类,除了提取形状和纹理特征外,Takimoto等人还加入了颜色特征,进一步提高了性别分类的准确性。
使用面部图像进行人体外观属性的识别已经具有极高的识别精度,然而在监控场景下,清晰人脸的图像很难获取。因此,基于面部图像的属性识别算法并不适用于真实的监控场景下。近年来,已经有许多科研人员开始关注使用视频监控中的全身图像进行人体外观属性的识别,并且取得了重大的进展。
传统的基于人体的属性识别的研究主要基于预先设计(手工设计)的特征提取器,提取特征向量例如HOG、BIF等,这种方法的局限在于,手工设计特征的过程比较复杂,并且特征的表达能力不足,造成准确率低下。
随着深度学习的不断发展,研究人员开始尝试使用卷积神经网络的方法提取深度特征作为表征人体外观属性的特征,并且取得了突破性的进展。公开号为CN107862300A的专利公开了“一种基于卷积神经网络的监控场景下行人属性识别方法”,但所使用的卷积神经网络比较简单,难以应对行人外观属性识别这类复杂的识别任务,另外由于公开的行人外观数据集都比较小,难以在单个数据集上充分训练行人外观属性识别卷积神经网络。
技术实现要素:
本发明的目的在于提供基于Inception V3的多数据集联合训练的行人外观属性识别方法,解决现有基于深度学习的行人外观属性识别方法在监控场景下易受光照、遮挡、目标姿态变化和图像清晰度等因素影响,泛化能力较差的问题,能够实现目标监控场景下的行人属性准确识别,并且只需要极少的目标场景数据即可实现。
本发明通过下述技术方案实现:基于Inception V3的多数据集联合训练的行人外观属性识别方法,包括以下步骤:
1)获取含有行人的监控视频片段,对行人图像进行预处理;
2)构建新的Inception V3卷积神经网络模型;
3)改进logistic loss损失函数;
4)输入多个公开数据集数据,进行训练,得到行人外观属性识别模型;
5)利用所得行人外观属性识别模型进行实际场景下的识别。
进一步的为更好地实现本发明,特别采用下述设置方式:所述步骤1)包括以下具体步骤:
1.1)将截取的视频帧按照规定的图片命名方式(例如:111.jpg,数字代表是第几张图像)进行命名,保存到指定位置;
1.2)对所有的图片文件进行外观属性标注,形成数据集;每一张行人图片上的行人属性都是二进制属性,如果拥有这项属性,则对应的这项标签值为1;如果没有,则标签值为0,例如图片上行人戴眼镜,则对应戴眼镜这项标签值为1;
1.3)将数据集分成两部分,分别为训练集、验证集,训练集用于训练模型,验证集用于测试模型效果,不参与训练,其中,训练集占总图片数量的70~90%,测试集占总图片数量的10~30%;优选的训练集占总图片数量的80%,测试集占总图片数量的20%。
进一步的为更好地实现本发明,特别采用下述设置方式:所述新的Inception V3卷积神经网络模型包括5个卷积层、11个block结构及4个并列的全连接层;所述卷积层和block结构用于自动提取行人属性特征;全连接层用于组合属性特征,获取对应属性分数。
进一步的为更好地实现本发明,特别采用下述设置方式:所述步骤3)具体为:将每个全连接层后皆加一个loss函数,最后计算所有loss之和,来进行多数据集联合训练。
进一步的为更好地实现本发明,特别采用下述设置方式:所述loss函数为:
其中N表示训练时每次送入的图片数量,C为行人对应的外观属性数量,每个行人图片表示为xn,对应经过网络计算的输出为Vn,对应的标签向量为yn,每个标签向量对应的属性值为yn,i,i∈[1,2,...,C],如果yn,i=1表明这个训练样本xn有这个属性,如果yn,i=0表明这个训练样本xn没有这个属性;Sn,i表示这个样本xn的第i个属性的得分高低,Sn,i∈[0,1],yn,i是真实属性标签,表示行人样本xn有没有第i个属性。
进一步的为更好地实现本发明,特别采用下述设置方式:所述步骤4)包括以下具体步骤:
4.1)训练之前,准备大于6G显存的GPU和linux系统环境,搭建pytorch环境;
4.2)设置模型训练的优化方式,优选的采用动量梯度下降法进行模型训练的优化,此方法相较于传统的梯度学习法,有着更快的下降速度和自适应学习速率,不用手动矫正学习率;
4.3)设置模型训练的图片预处理方式,合适的图片预处理方式能够扩大数据集的大小,使得模型的泛化能力更强;
4.4)设置模型的基础学习率、动量权重以及最大迭代次数,在最大迭代次数下,不断迭代学习,直到损失函数值不再下降,模型收敛,保存模型参数;
4.5)完成训练,得到行人外观属性识别模型。
进一步的为更好地实现本发明,特别采用下述设置方式:所述步骤4.3)包括以下具体步骤:
4.3.1)改变图片的亮度、对比度和饱和度;
4.3.2)经过步骤4.3.1)后,将图片进行随机的水平翻转;
4.3.3)经步骤4.3.2)后,将图片最短边缩放到150像素,长边按照1:3的比例缩放到450像素,这样图片中的行人不会失真;
4.3.4)经步骤4.3.3)后,缩放的图片不进行裁剪,直接送入网络进行训练,这样会保证行人的任何部位不会被裁剪掉,从而导致模型预测更加准确。
进一步的为更好地实现本发明,特别采用下述设置方式:所述步骤4)在进行训练时,将模型在多个公开数据集上进行训练。
进一步的为更好地实现本发明,特别采用下述设置方式:在所述步骤1)之前还包括选择公开数据集,所述公开数据集采用PEdesTrian Attribute(PETA)数据集或/和a Richly Annotated Pedestrian(RAP)数据集或/和a new large-scale pedestrian attribute(PA100K)数据集。
本发明所公开的行人外观属性识别方法包括:挑选大型公开数据集;获取含有行人的监控视频片段,对行人图像进行预处理;构建Inception V3卷积神经网络模型并改进Inception V3模型和loss函数,构建适合多数据集联合训练新的Inception V3模型;输入多个公开数据集数据,进行训练,最后利用所得模型进行识别。
具体步骤分为:
(1)选择公开数据集,选用PEdesTrian Attribute(PETA)数据集和/或a Richly Annotated Pedestrian(RAP)数据集和/或a new large-scale pedestrian attribute(PA100K)数据集,其中PETA数据集包含19000张图片,61个二分类行人属性;RAP数据集包含41585张图片,包含72个行人属性;PA100K包含100000张图片,包含26个行人属性;
在步骤(1)中,选取的公开数据集需要数据量比较大、行人外观属性贴近我们目标数据集的公开数据集,否则无法提升我们模型在目标数据集的效果。
(2)获取含有行人的监控视频,并截取视频帧,构建目标场景下的行人外观属性数据集;
在步骤(2)中,获取的行人的监控视频需要提取出视频帧,并统一命名,随后对图片进行行人外观属性标注。
(3)选择深度卷积神经网络模型,使用经过改进的Inception V3卷积神经网络模型作为实验模型;
(4)改进logistic loss损失函数,使之能够进行多属性分类和多数据集联合训练;
改进的logistic loss损失函数,使之从只能进行单属性分类到能够进行多属性分类,并进一步改进,来满足多数据集联合训练。
(5)将行人外观属性的公开数据集和目标数据集分割成训练数据集和测试数据集,将训练数据集输入到改进的Inception V3卷积神经模型中进行训练,得到行人外观属性识别模型。
在步骤(5)中,训练过程具体如下:
训练过程分为模型训练和模型验证两个部分。
模型训练分为读取数据和训练两部分。读取数据是改进的Inception v3模型通过改进的logistic loss损失函数从本地磁盘读入预处理后的训练数据集(输入模型进行训练的图片需要进行数据预处理,需要把图片进行长宽比和大小调整、镜像翻转、添加噪声等预处理,再进行训练)。训练则是改进的Inception V3模型利用训练数据来调整参数,降低改进的logistic loss函数值,并将改进的Inception V3模型同时在多个数据集上进行训练,在每个数据集上训练一个周期,让模型参数适应多个数据集,这样1)能够扩充数据集的大小,使得模型不仅仅利用目标数据集的数据,而且还利用了几个公开数据集的数据;2)能够使得模型的泛化能力更好,不会在单一数据集上过拟合,从而导致模型的实际效果下降。
每训练一定周期后,需要进行一次模型验证,即将预处理后的验证数据集从磁盘读入内存,改进的Inception V3模型利用已经学习到的参数进行验证数据集的预测,最终统计正确率来进行模型参数的评估。
直到模型参数在模型验证时获得最高正确率,即认为完成训练,此时保存模型的结构和模型参数到磁盘。
(6)利用得到的行人外观属性识别模型进行实际场景下的识别。
本发明与现有技术相比,具有以下优点及有益效果:
(1)本发明从两个方面来设计行人外观属性识别算法:一方面,利用行人外观属性的相关性,例如白色头发的行人更有可能是老年人,来优化行人外观属性识别的正确率。另一方面,结合多个公开数据集,进行联合训练,既解决目标场景下数据不足的问题;又可以获得更适应实际场景下的行人外观属性神经网络。
(2)本发明考虑到实际情况,常见的数据预处理操作会将图片比例改变到1:1和裁剪训练数据,这样会造成行人外观属性的丢失,导致模型预测错误,本发明将训练图片长宽比改变比例到3:1,使得图片更加符合普通行人的外观,不至于图片失真,并且不进行图片裁剪。
(3)本发明改进logistics loss函数,使之能够适应多属性分类和多数据集联合训练,使得模型能够预测多种行人外观属性,满足实际需求,并且由于使用了多个公开数据集的训练数据,使得模型只需要极少的目标场景下的训练数据,就可以实现在目标场景下的准确识别,极大的提升了模型的效果和泛化能力。
(4)本发明采用多数据集联合训练方法,来获得适用于实际场景下的行人外观属性识别网络。
附图说明
图1为本发明的总体流程图。
图2为多个监控摄像头下模式识别效果图。
图3为block结构示意图。
其中,在图2中,图片右边文字为行人外观属性识别结果。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。因此,以下对在附图中提供的本发明的实施方式的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
实施例1:
本发明设计出基于Inception V3的多数据集联合训练的行人外观属性识别方法,解决现有基于深度学习的行人外观属性识别方法在监控场景下易受光照、遮挡、目标姿态变化和图像清晰度等因素影响,泛化能力较差的问题,能够实现目标监控场景下的行人属性准确识别,并且只需要极少的目标场景数据即可实现,特别采用下述设置方式:包括以下步骤:
1)获取含有行人的监控视频片段,对行人图像进行预处理;
2)构建新的Inception V3卷积神经网络模型;
3)改进logistic loss损失函数;
4)输入多个公开数据集数据,进行训练,得到行人外观属性识别模型;
5)利用所得行人外观属性识别模型进行实际场景下的识别。
实施例2:
本实施例是在上述实施例的基础上进一步优化,进一步的为更好地实现本发明,特别采用下述设置方式:所述步骤1)包括以下具体步骤:
1.1)将截取的视频帧按照规定的图片命名方式(例如:111.jpg,数字代表是第几张图像)进行命名,保存到指定位置;
1.2)对所有的图片文件进行外观属性标注,形成数据集;每一张行人图片上的行人属性都是二进制属性,如果拥有这项属性,则对应的这项标签值为1;如果没有,则标签值为0,例如图片上行人戴眼镜,则对应戴眼镜这项标签值为1;
1.3)将数据集分成两部分,分别为训练集、验证集,训练集用于训练模型,验证集用于测试模型效果,不参与训练,其中,训练集占总图片数量的70~90%,测试集占总图片数量的10~30%;优选的训练集占总图片数量的80%,测试集占总图片数量的20%。
实施例3:
本实施例是在上述任一实施例的基础上进一步优化,进一步的为更好地实现本发明,特别采用下述设置方式:所述新的Inception V3卷积神经网络模型包括5个卷积层、11个block结构及4个并列的全连接层;所述卷积层和block结构用于自动提取行人属性特征;全连接层用于组合属性特征,获取对应属性分数。
实施例4:
本实施例是在上述任一实施例的基础上进一步优化,进一步的为更好地实现本发明,特别采用下述设置方式:所述步骤3)具体为:将每个全连接层后皆加一个loss函数,最后计算所有loss之和,来进行多数据集联合训练。
实施例5:
本实施例是在上述任一实施例的基础上进一步优化,进一步的为更好地实现本发明,特别采用下述设置方式:所述loss函数为:
其中N表示训练时每次送入的图片数量,C为行人对应的外观属性数量,每个行人图片表示为xn,对应经过网络计算的输出为Vn,对应的标签向量为yn,每个标签向量对应的属性值为yn,i,i∈[1,2,...,C],如果yn,i=1表明这个训练样本xn有这个属性,如果yn,i=0表明这个训练样本xn没有这个属性;Sn,i表示这个样本xn的第i个属性的得分高低,Sn,i∈[0,1],yn,i是真实属性标签,表示行人样本xn有没有第i个属性。
实施例6:
本实施例是在上述任一实施例的基础上进一步优化,进一步的为更好地实现本发明,特别采用下述设置方式:所述步骤4)包括以下具体步骤:
4.1)训练之前,准备大于6G显存的GPU和linux系统环境,搭建pytorch环境;
4.2)设置模型训练的优化方式,优选的采用动量梯度下降法进行模型训练的优化,此方法相较于传统的梯度学习法,有着更快的下降速度和自适应学习速率,不用手动矫正学习率;
4.3)设置模型训练的图片预处理方式,合适的图片预处理方式能够扩大数据集的大小,使得模型的泛化能力更强;
4.4)设置模型的基础学习率、动量权重以及最大迭代次数,在最大迭代次数下,不断迭代学习,直到损失函数值不再下降,模型收敛,保存模型参数;
4.5)完成训练,得到行人外观属性识别模型。
实施例7:
本实施例是在上述任一实施例的基础上进一步优化,进一步的为更好地实现本发明,特别采用下述设置方式:所述步骤4.3)包括以下具体步骤:
4.3.1)改变图片的亮度、对比度和饱和度;
4.3.2)经过步骤4.3.1)后,将图片进行随机的水平翻转;
4.3.3)经步骤4.3.2)后,将图片最短边缩放到150像素,长边按照1:3的比例缩放到450像素,这样图片中的行人不会失真;
4.3.4)经步骤4.3.3)后,缩放的图片不进行裁剪,直接送入网络进行训练,这样会保证行人的任何部位不会被裁剪掉,从而导致模型预测更加准确。
实施例8:
本实施例是在上述任一实施例的基础上进一步优化,进一步的为更好地实现本发明,特别采用下述设置方式:所述步骤4)在进行训练时,将模型在多个公开数据集上进行训练。
实施例9:
本实施例是在上述任一实施例的基础上进一步优化,进一步的为更好地实现本发明,特别采用下述设置方式:在所述步骤1)之前还包括选择公开数据集,所述公开数据集采用PEdesTrian Attribute(PETA)数据集或/和a Richly Annotated Pedestrian(RAP)数据集或/和a new large-scale pedestrian attribute(PA100K)数据集。
实施例10:
本实施例是在上述任一实施例的基础上进一步优化,基于Inception V3的多数据集联合训练的行人外观属性识别方法,本实例是在Ubuntu 14.04系统下完成的,并搭建了Python2.7的实验环境,使用的深度学习库为Pytorch 0.4,使用的显卡为GTX 1080Ti 11G显存显卡和32G内存。该实例所提供的基于Inception V3的多数据集联合训练的行人外观属性识别方法,包括以下步骤:
包括:
(1)挑选和目标场景下需要的行人外观属性相似的公开数据集,要求公开数据集的数据量较大,因此基于目标场景,挑选PEdesTrian Attribute(PETA)数据集、a Richly Annotated Pedestrian(RAP)数据集、a new large-scale pedestrian attribute(PA100K)数据集;
(2)获取含有行人的监控视频,并截取视频帧,构建目标场景下的行人外观属性数据集,包括以下子步骤:
(2-1)将截取的视频帧按照规定的图片命名方式进行命名,保存到指定位置;
(2-2)对所有的图片文件进行外观属性标注:每一张行人图片上的行人属性都是二进制属性,如果拥有这项属性,则对应的这项标签值为1;如果没有,则标签值为0,例如图片上行人戴眼镜,则对应戴眼镜这项标签值为1;
(2-3)将数据集分成两部分,分别为训练集、验证集,训练集用于训练模型,验证集用于测试模型效果,不参与训练,其中,训练集占总图片数量的80%,测试集占总图片数量的20%。
(3)选择深度卷积神经网络模型,使用Inception V3卷积神经网络模型作为实验模型,在该步骤中的现有的Inception V3模型结构复杂,包括5个卷积层、11个block结构以及1个全连接层,而本发明为在此基础上,添加了3个并列的全连接层,形成新的Inception V3卷积神经网络模型,用于在多个数据集上进行联合训练,卷积层和block结构用于自动提取行人属性特征,全连接层用于组合属性特征,获取对应属性分数,block结构如图3所示;
(4)改进logistic损失函数,使之能够进行多属性分类和多数据集联合训练,具体的每个全连接层后都加一个loss函数,最后计算所有loss之和,来进行多数据集联合训练。其中的loss函数为:
其中N表示训练时每次送入的图片数量,C为行人对应的外观属性数量,每个行人图片表示为xn,对应经过网络计算的输出为Vn,对应的标签向量为yn,每个标签向量对应的属性值为yn,i,i∈[1,2,...,C],如果yn,i=1表明这个训练样本xn有这个属性,如果yn,i=0表明这个训练样本xn没有这个属性;Sn,i表示这个样本xn的第i个属性的得分高低,Sn,i∈[0,1],yn,i是真实属性标签,表示行人样本xn有没有第i个属性。
(5)将行人外观属性的公开数据集和目标数据集分割成训练数据集和测试数据集,将训练数据集输入到InceptionV3卷积神经模型中进行训练,得到行人外观属性识别模型;具体包括以下子步骤:
(5-1)训练之前,准备大于6G显存的GPU和linux系统环境,搭建pytorch环境;
(5-2)设置模型训练的优化方式,优选选择动量梯度下降法,此方法相较于传统的梯度学习法,有着更快的下降速度和自适应学习速率,不用手动矫正学习率;
(5-3)设置模型训练的图片预处理方式,合适的图片预处理方式能够扩大数据集的大小,使得模型的泛化能力更强,其中,图片预处理流程为首先改变图片的亮度、对比度和饱和度,再将图片进行随机的水平翻转,随后将图片最短边缩放到150像素,长边按照1:3的比例缩放到450像素,这样图片中的行人不会失真,最后缩放的图片不进行裁剪,直接送入网络进行训练,这样会保证行人的任何部位不会被裁剪掉,从而导致模型预测更加准确;
(5-4)设置模型的基础学习率、动量权重以及最大迭代次数,在最大迭代次数下,不断迭代学习,直到损失函数值不再下降,模型收敛,保存模型参数;
(5-5)完成训练,得到行人外观属性识别模型。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。