1.一种基于运动轨迹的3D卷积神经网络的行为识别方法,其特征在于,具体按照以下步骤实施:步骤一,行为识别网络模型训练,具体按照以下步骤实施:
步骤1,建立行为识别数据集,数据集包含N种行为类别,第n种行为的视频个数记为Vnumn,0≤n≤N-1,在第n种行为视频中按顺序抽取前Kn个视频作为训练视频,Kn=round(3/
4×Vnumn),把所有抽取的训练视频作为训练数据集Vtrain,其中表示在训练数据集中第n种行为类别下
的第k个视频;测试数据集 表示测试
数据集中第n种行为类别下的第s个视频;
步骤2,创建训练标签Labeltrain与测试标签Labeltest,在训练数据集Vtrain中,第n种行为类别下的第k个视频 的视频帧数为 以互不重叠的连续16帧图像为一个视频段,提取的视频段个数为表示第n种行为类别下的第k个视频的第m个视频段;
训练标签Labeltrain的格式为: 其中
为视频路径VideoPath/Vtrainn下的视频文件名
(m-1)×16为每个视频段起始帧号,n为行为类别编号;
在测试数据集Vtest中,第n种行为类别下的第s个视频 的视频帧数为 以互不重叠的连续16帧图像为一个视频段,提取的视频段个数为表示第n种行为类别下的第s
个视频的第w个视频段;
测试标签Labeltest格式为:
其中 为视频路径VideoPath/Vtestn下的视频文件名(w-1)×16为每个视频段起始帧号,n为行为类别编号;
步骤3,双向光流计算,获取前向、后向运动轨迹列表,对输入的视频段数据 进行双向光流场计算,获取视频前向运动轨迹列表pos_pre={pos_pre[i][j]},pos_pre[i][j]表示第i帧视频图像第j个像素在前一帧视频图像中的对应像素点位置,其中,1≤j≤w′×h,w′、h分别表示视频图像的宽和高,1<i≤16;后向运动轨迹列表pos_back={pos_back[i][j]},pos_back[i][j]表示第i帧视频图像第j个像素在后一帧视频图像中的对应像素点位置,其中,1≤j≤w′×h,1≤i<16;具体按照以下步骤实施:步骤3.1,将输入的视频段数据 转化为灰度图像集{img_gray[i]|1≤i≤16};
步骤3.2,采用光流计算方法进行视频灰度图像img_gray[i]的前向和后向运动轨迹提取;步骤3.2具体按照以下步骤实施:步骤(1),当前视频帧图像img_gray[i]的像素坐标表示为:其中 和 分别为img_gray[i]中第j像素在图像中的横坐标和纵坐标;
步骤(2),获取当前视频帧图像img_gray[i]的前一帧图像img_pre与后一帧图像img_back,其中img_pre=img_gray[i-1],img_back=img_gray[i+1];若当i=1时,表示当前帧没有前一帧图像,则把img_pre置为空;若当i=16时,表示当前帧没有后一帧图像,则把img_back置为空;
步骤(3),计算相邻两帧图像的光流场,采用光流场计算方法分别计算img_gray[i]与img_pre、img_back之间的前向光流场和后向光流场ω_pre[i],ω_back[i],分别对应img_gray[i]中第j个像素相对img_pre的水平和垂直运动位移量,分别对应img_gray[i]中第j个像素相对img_back的水平和垂直运动位移量;
步骤(4),根据光流场生成img_gray[i]的前向运动轨迹列表Pfij是img_gray[i]中第j个像素
在img_pre中的对应像素点位置,
步骤(5),根据光流场生成img_gray[i]的后向运动轨迹列表是img_gray[i]中第j个
像素在img_back中的对应像素点位置,
步骤4,根据步骤3得到的运动轨迹列表,把视频段数据
转换成N1×N2大小的数据矩阵 N1=81,N2=16×w′×h,c表示颜色通道,取值为1,
2和3,imgc[i]中第j个像素点位置是 根据i和j的取值在前向轨迹列表pos_pre中得到前向匹配像素点位置Pfij,Pfij=pos_pre[i][j],在后向轨迹列表pos_back中得到后向匹配像素点位置 在imgc[i-1]、imgc[i]和imgc[i+1]图像中分别提取 和Pfij这三个位置的像素点在各个通道上的3×3邻域像素值,将三个通道上的各邻域像素值串行合并,将合并后数据放在矩阵 中的第(i-1)×(w′×h)+j列;
步骤4具体按照以下步骤实施:
步骤4.1,根据imgc[i]中第j个像素点位置 获取以 为中心的3×
3大小在c通道上的邻域像素值
步骤4.2,在前向运动轨迹列表pos_pre中得到前向匹配像素点位置步骤4.2具体为:
①判断i是否为1;
②若i=1,该像素点所在图像没有前向列表,则该像素点在前一帧图像中对应的像素点位置 把以Pfij为中心的3×3大小在c通道上的邻域像素值均置为0;
③若i≠1,在前向运动轨迹列表pos_pre中得到前向匹配像素点位置获取以Pfij为中心的3×3大小在c通道中的邻域像素值
步骤4.3,在后向运动轨迹列表pos_back中得到后向匹配像素点位置具体按照以下步骤实施:
①判断i是否为16;
②若i=16,该像素点所在图像没有后向列表,则该像素点在后一帧图像中对应的像素点位置 把以 为中心的3×3大小在c通道上的邻域像素值置为0;
③若i≠16,在后向运动轨迹列表pos_back中得到后向匹配像素点位置获取以 为中心的3×3大小在c通道上的邻域像素
值
步骤4.4,将 逐通道进行串行合并,将合并后数据放
置在矩阵 中的第(i-1)×(w′×h)+j列;
步骤5,建立基于运动轨迹的3D卷积神经网络结构Track_3D,该网络的输入为训练数据集Vtrain,大小为C×16×w′×h,其中C=3为通道个数,16为连续视频帧数,w′×h为视频图像的分辨率,网络结构的总层数为30层,包括依次连接的:数据层、Track_3D卷积层conv1a、激活层relu1a、3D池化层pool1、3D卷积层conv2a、激活层relu2a、3D池化层pool2、3D卷积层conv3a、激活层relu3a、3D卷积层conv3b、激活层relu3b、3D池化层pool3、3D卷积层conv4a、激活层relu4a、3D卷积层conv4b、激活层relu4b、3D池化层pool4、3D卷积层conv5a、激活层relu5a、3D卷积层conv5b、激活层relu5b、3D池化层pool5、全连接层fc6、激活层relu6、drop层drop6、全连接层fc7、激活层relu7、drop层drop8、全连接层fc8以及softmax层;
步骤6,对步骤5建立的基于运动轨迹的3D卷积神经网络结构进行训练,具体为:打开训练样本标签Labeltrain文件,按行读取视频路径、视频名称和视频段起始帧号,在视频名称对应的视频中以起始帧号为首帧连续读取16帧视频段 作为一个样本,将所有的样本依次送入到步骤5建立的基于运动轨迹的3D卷积神经网络结构中进行训练,当满足最大迭代次数或收敛条件时结束训练,得到基于运动轨迹的3D卷积神经网络结构Track3DModel;
步骤二,行为识别网络模型测试,具体为:读取测试标签Labeltest中的视频路径、视频名称以及起始帧号,将测试数据集中的视频按照以起始帧号为第一帧的连续16帧视频段输入到经过训练的基于运动轨迹的3D卷积神经网络模型中,输出各个视频段的行为分类信息,最后将输出的行为分类信息与测试视频对应的测试标签Labeltest文件信息作比较,统计分类正确个数,计算得到准确率;
步骤三,若步骤二得到的准确率大于等于95%,则认为步骤一的步骤6训练的基于运动轨迹的3D卷积神经网络结构为最终的需求,若准确率小于95%,则需要调整基于运动轨迹的3D卷积神经网络结构的内置参数,然后重复步骤一的步骤6和步骤二,直到准确率满足要求。
2.根据权利要求1所述的一种基于运动轨迹的3D卷积神经网络的行为识别方法,其特征在于,所述步骤6具体按照以下步骤实施:步骤6.1,利用caffe架构下的函数compute_volume_mean_from_list_videos.cpp将视频段训练数据集Vtrain生成train_ucf101_mean.binaryproto均值文件;
步骤6.2,将步骤一中的步骤5建立的基于运动轨迹的3D卷积神经网络结构Track_3D、步骤6.1的均值文件和步骤一中的步骤2的训练标签Labeltrain文件的所在路径写入网络结构文件Track3d_ucf101_train.prototxt中;
步骤6.3,设置训练参数并写入配置文件Track3d_solver.prototxt;
步骤6.4,在Caffe架构下调用命令语句完成训练./build/tools/train_net.bin Track3d_solver.prototxt,生成经过训练的基于运动轨迹的3D卷积神经网络结构Track3DModel。
3.根据权利要求2所述的一种基于运动轨迹的3D卷积神经网络的行为识别方法,其特征在于,所述步骤二具体按照以下步骤实施:步骤2.1,创建一个输出标签文件outputlabel,该标签用于设置提取的特征名称,要求对同一个视频中的同一个视频段在输出标签文件和测试标签文件中的描述在同一行;
outputlabel的具体格式如下:
其中, 为视频路径OutputPath/Vtestn下的视频文件名称(w-1)×16在训练标签文件中为每个视频段起始帧号,在输出标签文件中作为特征文件的名称;
步骤2.2,按行读取测试标签Labeltest文件中视频路径、视频名称和视频段起始帧号,在视频名称对应的视频中以起始帧号为首帧连续读取16帧视频段作为一个输入,送入经步骤一中的步骤6训练好的网络模型Track3DModel中,提取fc8层的输出数据,该数据为视频段按照概率大小排序的最终分类结果索引表{index[S]|1≤S≤N},其中index[S]表示排名第S的类别编号,把索引表保存为一个特征文件,特征文件存放路径及名称就是outputlabel文件中该视频段描述所在行的文件路径及特征名称;
步骤2.3,读取所有特征文件,获取所有视频段对应的index[1],将index[1]和测试标签Labeltest文件中对应的视频类别号进行大小对比,若相等则为分类正确,若不相等则为分类不正确,正确的分类个数除以特征文件个数得到准确率。